@keymanapp/common-types 17.0.85-alpha

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 (248) hide show
  1. package/build/src/consts/virtual-key-constants.d.ts +131 -0
  2. package/build/src/consts/virtual-key-constants.d.ts.map +1 -0
  3. package/build/src/consts/virtual-key-constants.js +245 -0
  4. package/build/src/consts/virtual-key-constants.js.map +1 -0
  5. package/build/src/import/techpreview/cldr_info.json +5 -0
  6. package/build/src/import/techpreview/keys-Latn-implied.xml +80 -0
  7. package/build/src/import/techpreview/keys-Zyyy-currency.xml +22 -0
  8. package/build/src/import/techpreview/keys-Zyyy-punctuation.xml +46 -0
  9. package/build/src/keyman-touch-layout/keyman-touch-layout-file-reader.d.ts +7 -0
  10. package/build/src/keyman-touch-layout/keyman-touch-layout-file-reader.d.ts.map +1 -0
  11. package/build/src/keyman-touch-layout/keyman-touch-layout-file-reader.js +74 -0
  12. package/build/src/keyman-touch-layout/keyman-touch-layout-file-reader.js.map +1 -0
  13. package/build/src/keyman-touch-layout/keyman-touch-layout-file-writer.d.ts +24 -0
  14. package/build/src/keyman-touch-layout/keyman-touch-layout-file-writer.d.ts.map +1 -0
  15. package/build/src/keyman-touch-layout/keyman-touch-layout-file-writer.js +75 -0
  16. package/build/src/keyman-touch-layout/keyman-touch-layout-file-writer.js.map +1 -0
  17. package/build/src/keyman-touch-layout/keyman-touch-layout-file.d.ts +76 -0
  18. package/build/src/keyman-touch-layout/keyman-touch-layout-file.d.ts.map +1 -0
  19. package/build/src/keyman-touch-layout/keyman-touch-layout-file.js +26 -0
  20. package/build/src/keyman-touch-layout/keyman-touch-layout-file.js.map +1 -0
  21. package/build/src/keyman-touch-layout.clean.spec.json +170 -0
  22. package/build/src/kmx/element-string.d.ts +19 -0
  23. package/build/src/kmx/element-string.d.ts.map +1 -0
  24. package/build/src/kmx/element-string.js +72 -0
  25. package/build/src/kmx/element-string.js.map +1 -0
  26. package/build/src/kmx/kmx-builder.d.ts +77 -0
  27. package/build/src/kmx/kmx-builder.d.ts.map +1 -0
  28. package/build/src/kmx/kmx-builder.js +193 -0
  29. package/build/src/kmx/kmx-builder.js.map +1 -0
  30. package/build/src/kmx/kmx-plus-builder/build-disp.d.ts +18 -0
  31. package/build/src/kmx/kmx-plus-builder/build-disp.d.ts.map +1 -0
  32. package/build/src/kmx/kmx-plus-builder/build-disp.js +25 -0
  33. package/build/src/kmx/kmx-plus-builder/build-disp.js.map +1 -0
  34. package/build/src/kmx/kmx-plus-builder/build-elem.d.ts +26 -0
  35. package/build/src/kmx/kmx-plus-builder/build-elem.d.ts.map +1 -0
  36. package/build/src/kmx/kmx-plus-builder/build-elem.js +78 -0
  37. package/build/src/kmx/kmx-plus-builder/build-elem.js.map +1 -0
  38. package/build/src/kmx/kmx-plus-builder/build-keys.d.ts +60 -0
  39. package/build/src/kmx/kmx-plus-builder/build-keys.d.ts.map +1 -0
  40. package/build/src/kmx/kmx-plus-builder/build-keys.js +107 -0
  41. package/build/src/kmx/kmx-plus-builder/build-keys.js.map +1 -0
  42. package/build/src/kmx/kmx-plus-builder/build-layr.d.ts +54 -0
  43. package/build/src/kmx/kmx-plus-builder/build-layr.d.ts.map +1 -0
  44. package/build/src/kmx/kmx-plus-builder/build-layr.js +99 -0
  45. package/build/src/kmx/kmx-plus-builder/build-layr.js.map +1 -0
  46. package/build/src/kmx/kmx-plus-builder/build-list.d.ts +34 -0
  47. package/build/src/kmx/kmx-plus-builder/build-list.d.ts.map +1 -0
  48. package/build/src/kmx/kmx-plus-builder/build-list.js +62 -0
  49. package/build/src/kmx/kmx-plus-builder/build-list.js.map +1 -0
  50. package/build/src/kmx/kmx-plus-builder/build-loca.d.ts +12 -0
  51. package/build/src/kmx/kmx-plus-builder/build-loca.d.ts.map +1 -0
  52. package/build/src/kmx/kmx-plus-builder/build-loca.js +20 -0
  53. package/build/src/kmx/kmx-plus-builder/build-loca.js.map +1 -0
  54. package/build/src/kmx/kmx-plus-builder/build-meta.d.ts +17 -0
  55. package/build/src/kmx/kmx-plus-builder/build-meta.d.ts.map +1 -0
  56. package/build/src/kmx/kmx-plus-builder/build-meta.js +21 -0
  57. package/build/src/kmx/kmx-plus-builder/build-meta.js.map +1 -0
  58. package/build/src/kmx/kmx-plus-builder/build-name.d.ts +12 -0
  59. package/build/src/kmx/kmx-plus-builder/build-name.d.ts.map +1 -0
  60. package/build/src/kmx/kmx-plus-builder/build-name.js +23 -0
  61. package/build/src/kmx/kmx-plus-builder/build-name.js.map +1 -0
  62. package/build/src/kmx/kmx-plus-builder/build-ordr.d.ts +18 -0
  63. package/build/src/kmx/kmx-plus-builder/build-ordr.d.ts.map +1 -0
  64. package/build/src/kmx/kmx-plus-builder/build-ordr.js +27 -0
  65. package/build/src/kmx/kmx-plus-builder/build-ordr.js.map +1 -0
  66. package/build/src/kmx/kmx-plus-builder/build-sect.d.ts +16 -0
  67. package/build/src/kmx/kmx-plus-builder/build-sect.d.ts.map +1 -0
  68. package/build/src/kmx/kmx-plus-builder/build-sect.js +14 -0
  69. package/build/src/kmx/kmx-plus-builder/build-sect.js.map +1 -0
  70. package/build/src/kmx/kmx-plus-builder/build-strs.d.ts +18 -0
  71. package/build/src/kmx/kmx-plus-builder/build-strs.d.ts.map +1 -0
  72. package/build/src/kmx/kmx-plus-builder/build-strs.js +34 -0
  73. package/build/src/kmx/kmx-plus-builder/build-strs.js.map +1 -0
  74. package/build/src/kmx/kmx-plus-builder/build-tran.d.ts +20 -0
  75. package/build/src/kmx/kmx-plus-builder/build-tran.d.ts.map +1 -0
  76. package/build/src/kmx/kmx-plus-builder/build-tran.js +30 -0
  77. package/build/src/kmx/kmx-plus-builder/build-tran.js.map +1 -0
  78. package/build/src/kmx/kmx-plus-builder/build-vkey.d.ts +16 -0
  79. package/build/src/kmx/kmx-plus-builder/build-vkey.d.ts.map +1 -0
  80. package/build/src/kmx/kmx-plus-builder/build-vkey.js +23 -0
  81. package/build/src/kmx/kmx-plus-builder/build-vkey.js.map +1 -0
  82. package/build/src/kmx/kmx-plus-builder/builder-section.d.ts +6 -0
  83. package/build/src/kmx/kmx-plus-builder/builder-section.d.ts.map +1 -0
  84. package/build/src/kmx/kmx-plus-builder/builder-section.js +3 -0
  85. package/build/src/kmx/kmx-plus-builder/builder-section.js.map +1 -0
  86. package/build/src/kmx/kmx-plus-builder/kmx-plus-builder.d.ts +47 -0
  87. package/build/src/kmx/kmx-plus-builder/kmx-plus-builder.d.ts.map +1 -0
  88. package/build/src/kmx/kmx-plus-builder/kmx-plus-builder.js +143 -0
  89. package/build/src/kmx/kmx-plus-builder/kmx-plus-builder.js.map +1 -0
  90. package/build/src/kmx/kmx-plus.d.ts +259 -0
  91. package/build/src/kmx/kmx-plus.d.ts.map +1 -0
  92. package/build/src/kmx/kmx-plus.js +594 -0
  93. package/build/src/kmx/kmx-plus.js.map +1 -0
  94. package/build/src/kmx/kmx.d.ts +166 -0
  95. package/build/src/kmx/kmx.d.ts.map +1 -0
  96. package/build/src/kmx/kmx.js +271 -0
  97. package/build/src/kmx/kmx.js.map +1 -0
  98. package/build/src/kmx/string-list.d.ts +29 -0
  99. package/build/src/kmx/string-list.d.ts.map +1 -0
  100. package/build/src/kmx/string-list.js +75 -0
  101. package/build/src/kmx/string-list.js.map +1 -0
  102. package/build/src/kpj/keyman-developer-project.d.ts +58 -0
  103. package/build/src/kpj/keyman-developer-project.d.ts.map +1 -0
  104. package/build/src/kpj/keyman-developer-project.js +141 -0
  105. package/build/src/kpj/keyman-developer-project.js.map +1 -0
  106. package/build/src/kpj/kpj-file-reader.d.ts +17 -0
  107. package/build/src/kpj/kpj-file-reader.d.ts.map +1 -0
  108. package/build/src/kpj/kpj-file-reader.js +92 -0
  109. package/build/src/kpj/kpj-file-reader.js.map +1 -0
  110. package/build/src/kpj/kpj-file.d.ts +39 -0
  111. package/build/src/kpj/kpj-file.d.ts.map +1 -0
  112. package/build/src/kpj/kpj-file.js +11 -0
  113. package/build/src/kpj/kpj-file.js.map +1 -0
  114. package/build/src/kpj.schema.json +127 -0
  115. package/build/src/kvk/kvk-file-reader.d.ts +5 -0
  116. package/build/src/kvk/kvk-file-reader.d.ts.map +1 -0
  117. package/build/src/kvk/kvk-file-reader.js +35 -0
  118. package/build/src/kvk/kvk-file-reader.js.map +1 -0
  119. package/build/src/kvk/kvk-file-writer.d.ts +20 -0
  120. package/build/src/kvk/kvk-file-writer.d.ts.map +1 -0
  121. package/build/src/kvk/kvk-file-writer.js +67 -0
  122. package/build/src/kvk/kvk-file-writer.js.map +1 -0
  123. package/build/src/kvk/kvk-file.d.ts +64 -0
  124. package/build/src/kvk/kvk-file.d.ts.map +1 -0
  125. package/build/src/kvk/kvk-file.js +63 -0
  126. package/build/src/kvk/kvk-file.js.map +1 -0
  127. package/build/src/kvk/kvks-file-reader.d.ts +30 -0
  128. package/build/src/kvk/kvks-file-reader.d.ts.map +1 -0
  129. package/build/src/kvk/kvks-file-reader.js +154 -0
  130. package/build/src/kvk/kvks-file-reader.js.map +1 -0
  131. package/build/src/kvk/kvks-file-writer.d.ts +6 -0
  132. package/build/src/kvk/kvks-file-writer.d.ts.map +1 -0
  133. package/build/src/kvk/kvks-file-writer.js +99 -0
  134. package/build/src/kvk/kvks-file-writer.js.map +1 -0
  135. package/build/src/kvk/kvks-file.d.ts +44 -0
  136. package/build/src/kvk/kvks-file.d.ts.map +1 -0
  137. package/build/src/kvk/kvks-file.js +10 -0
  138. package/build/src/kvk/kvks-file.js.map +1 -0
  139. package/build/src/kvk/visual-keyboard.d.ts +35 -0
  140. package/build/src/kvk/visual-keyboard.d.ts.map +1 -0
  141. package/build/src/kvk/visual-keyboard.js +61 -0
  142. package/build/src/kvk/visual-keyboard.js.map +1 -0
  143. package/build/src/kvks.schema.json +182 -0
  144. package/build/src/ldml-keyboard/ldml-keyboard-testdata-xml.d.ts +56 -0
  145. package/build/src/ldml-keyboard/ldml-keyboard-testdata-xml.d.ts.map +1 -0
  146. package/build/src/ldml-keyboard/ldml-keyboard-testdata-xml.js +20 -0
  147. package/build/src/ldml-keyboard/ldml-keyboard-testdata-xml.js.map +1 -0
  148. package/build/src/ldml-keyboard/ldml-keyboard-xml-reader.d.ts +91 -0
  149. package/build/src/ldml-keyboard/ldml-keyboard-xml-reader.d.ts.map +1 -0
  150. package/build/src/ldml-keyboard/ldml-keyboard-xml-reader.js +370 -0
  151. package/build/src/ldml-keyboard/ldml-keyboard-xml-reader.js.map +1 -0
  152. package/build/src/ldml-keyboard/ldml-keyboard-xml.d.ts +143 -0
  153. package/build/src/ldml-keyboard/ldml-keyboard-xml.d.ts.map +1 -0
  154. package/build/src/ldml-keyboard/ldml-keyboard-xml.js +34 -0
  155. package/build/src/ldml-keyboard/ldml-keyboard-xml.js.map +1 -0
  156. package/build/src/ldml-keyboard.schema.json +634 -0
  157. package/build/src/ldml-keyboardtest.schema.json +221 -0
  158. package/build/src/main.d.ts +21 -0
  159. package/build/src/main.d.ts.map +1 -0
  160. package/build/src/main.js +20 -0
  161. package/build/src/main.js.map +1 -0
  162. package/build/src/util/common-events.d.ts +49 -0
  163. package/build/src/util/common-events.d.ts.map +1 -0
  164. package/build/src/util/common-events.js +29 -0
  165. package/build/src/util/common-events.js.map +1 -0
  166. package/build/src/util/compiler-interfaces.d.ts +51 -0
  167. package/build/src/util/compiler-interfaces.d.ts.map +1 -0
  168. package/build/src/util/compiler-interfaces.js +33 -0
  169. package/build/src/util/compiler-interfaces.js.map +1 -0
  170. package/build/src/util/util.d.ts +17 -0
  171. package/build/src/util/util.d.ts.map +1 -0
  172. package/build/src/util/util.js +67 -0
  173. package/build/src/util/util.js.map +1 -0
  174. package/build/tsconfig.tsbuildinfo +1 -0
  175. package/build.sh +86 -0
  176. package/package.json +58 -0
  177. package/src/consts/virtual-key-constants.ts +257 -0
  178. package/src/keyman-touch-layout/keyman-touch-layout-file-reader.ts +81 -0
  179. package/src/keyman-touch-layout/keyman-touch-layout-file-writer.ts +84 -0
  180. package/src/keyman-touch-layout/keyman-touch-layout-file.ts +87 -0
  181. package/src/kmx/element-string.ts +79 -0
  182. package/src/kmx/kmx-builder.ts +287 -0
  183. package/src/kmx/kmx-plus-builder/build-disp.ts +46 -0
  184. package/src/kmx/kmx-plus-builder/build-elem.ts +103 -0
  185. package/src/kmx/kmx-plus-builder/build-keys.ts +175 -0
  186. package/src/kmx/kmx-plus-builder/build-layr.ts +154 -0
  187. package/src/kmx/kmx-plus-builder/build-list.ts +95 -0
  188. package/src/kmx/kmx-plus-builder/build-loca.ts +34 -0
  189. package/src/kmx/kmx-plus-builder/build-meta.ts +37 -0
  190. package/src/kmx/kmx-plus-builder/build-name.ts +37 -0
  191. package/src/kmx/kmx-plus-builder/build-ordr.ts +45 -0
  192. package/src/kmx/kmx-plus-builder/build-sect.ts +31 -0
  193. package/src/kmx/kmx-plus-builder/build-strs.ts +58 -0
  194. package/src/kmx/kmx-plus-builder/build-tran.ts +50 -0
  195. package/src/kmx/kmx-plus-builder/build-vkey.ts +43 -0
  196. package/src/kmx/kmx-plus-builder/builder-section.ts +6 -0
  197. package/src/kmx/kmx-plus-builder/kmx-plus-builder.ts +190 -0
  198. package/src/kmx/kmx-plus.ts +692 -0
  199. package/src/kmx/kmx.ts +360 -0
  200. package/src/kmx/string-list.ts +74 -0
  201. package/src/kpj/keyman-developer-project.ts +155 -0
  202. package/src/kpj/kpj-file-reader.ts +103 -0
  203. package/src/kpj/kpj-file.ts +52 -0
  204. package/src/kvk/kvk-file-reader.ts +34 -0
  205. package/src/kvk/kvk-file-writer.ts +72 -0
  206. package/src/kvk/kvk-file.ts +122 -0
  207. package/src/kvk/kvks-file-reader.ts +164 -0
  208. package/src/kvk/kvks-file-writer.ts +113 -0
  209. package/src/kvk/kvks-file.ts +53 -0
  210. package/src/kvk/visual-keyboard.ts +80 -0
  211. package/src/ldml-keyboard/ldml-keyboard-testdata-xml.ts +74 -0
  212. package/src/ldml-keyboard/ldml-keyboard-xml-reader.ts +387 -0
  213. package/src/ldml-keyboard/ldml-keyboard-xml.ts +177 -0
  214. package/src/main.ts +27 -0
  215. package/src/restructure.d.ts +2 -0
  216. package/src/util/common-events.ts +50 -0
  217. package/src/util/compiler-interfaces.ts +54 -0
  218. package/src/util/util.ts +68 -0
  219. package/test/fixtures/import-minimal.xml +8 -0
  220. package/test/fixtures/import-minimal1.xml +11 -0
  221. package/test/fixtures/import-minimal2.xml +11 -0
  222. package/test/fixtures/import-symbols.xml +13 -0
  223. package/test/fixtures/invalid-conforms-to.xml +19 -0
  224. package/test/fixtures/invalid-import-base.xml +16 -0
  225. package/test/fixtures/invalid-import-path.xml +16 -0
  226. package/test/fixtures/invalid-import-readfail.xml +16 -0
  227. package/test/fixtures/invalid-import-wrongroot.xml +16 -0
  228. package/test/fixtures/invalid-structure-per-dtd.xml +8 -0
  229. package/test/fixtures/keyman-touch-layout/khmer_angkor.keyman-touch-layout +1950 -0
  230. package/test/fixtures/keyman-touch-layout/legacy.keyman-touch-layout +36 -0
  231. package/test/fixtures/kpj/khmer_angkor.kpj +187 -0
  232. package/test/fixtures/kvk/khmer_angkor.kvk +0 -0
  233. package/test/fixtures/kvk/khmer_angkor.kvks +206 -0
  234. package/test/fixtures/test-fr.xml +22 -0
  235. package/test/helpers/index.ts +39 -0
  236. package/test/helpers/reader-callback-test.ts +199 -0
  237. package/test/keyman-touch-layout/test-keyman-touch-layout-file-reader.ts +71 -0
  238. package/test/keyman-touch-layout/test-keyman-touch-layout-round-trip.ts +35 -0
  239. package/test/kpj/test-kpj-file-reader.ts +123 -0
  240. package/test/kvk/test-kvk-file.ts +15 -0
  241. package/test/kvk/test-kvk-round-trip.ts +87 -0
  242. package/test/kvk/test-kvk-utils.ts +24 -0
  243. package/test/kvk/test-kvks-file.ts +45 -0
  244. package/test/ldml-keyboard/test-ldml-keyboard-testdata-reader.ts +51 -0
  245. package/test/ldml-keyboard/test-ldml-keyboard-xml-reader.ts +131 -0
  246. package/test/tsconfig.json +21 -0
  247. package/test/util/test-unescape.ts +38 -0
  248. package/tsconfig.json +17 -0
@@ -0,0 +1,594 @@
1
+ import { constants } from '@keymanapp/ldml-keyboard-constants';
2
+ import * as r from 'restructure';
3
+ import { ElementString } from './element-string.js';
4
+ import { ListItem } from './string-list.js';
5
+ import { unescapeString } from '../util/util.js';
6
+ import { KMXFile } from './kmx.js';
7
+ // Implementation of file structures from /core/src/ldml/C7043_ldml.md
8
+ // Writer in kmx-builder.ts
9
+ // Reader in kmx-loader.ts
10
+ export class Section {
11
+ }
12
+ export class GlobalSections {
13
+ // These sections are used by other sections during compilation
14
+ strs;
15
+ elem;
16
+ list;
17
+ }
18
+ // 'sect'
19
+ export class Sect extends Section {
20
+ }
21
+ ;
22
+ // 'bksp' -- see 'tran'
23
+ // 'elem'
24
+ export class Elem extends Section {
25
+ strings = [];
26
+ constructor(strs) {
27
+ super();
28
+ this.strings.push(new ElementString(strs, '')); // C7043: null element string
29
+ }
30
+ allocElementString(strs, source, order, tertiary, tertiary_base, prebase) {
31
+ let s = new ElementString(strs, source, order, tertiary, tertiary_base, prebase);
32
+ let result = this.strings.find(item => item.isEqual(s));
33
+ if (result === undefined) {
34
+ result = s;
35
+ this.strings.push(result);
36
+ }
37
+ return result;
38
+ }
39
+ }
40
+ ;
41
+ // 'finl' -- see 'tran'
42
+ // 'keys' is now `keys2.kmap`
43
+ // 'loca'
44
+ export class Loca extends Section {
45
+ locales = [];
46
+ }
47
+ ;
48
+ // 'meta'
49
+ export var KeyboardSettings;
50
+ (function (KeyboardSettings) {
51
+ KeyboardSettings[KeyboardSettings["none"] = 0] = "none";
52
+ KeyboardSettings[KeyboardSettings["fallback"] = constants.meta_settings_fallback_omit] = "fallback";
53
+ KeyboardSettings[KeyboardSettings["transformFailure"] = constants.meta_settings_transformFailure_omit] = "transformFailure";
54
+ KeyboardSettings[KeyboardSettings["transformPartial"] = constants.meta_settings_transformPartial_hide] = "transformPartial";
55
+ })(KeyboardSettings || (KeyboardSettings = {}));
56
+ ;
57
+ export var Meta_NormalizationForm;
58
+ (function (Meta_NormalizationForm) {
59
+ Meta_NormalizationForm["NFC"] = "NFC";
60
+ Meta_NormalizationForm["NFD"] = "NFD";
61
+ Meta_NormalizationForm["other"] = "other";
62
+ })(Meta_NormalizationForm || (Meta_NormalizationForm = {}));
63
+ ;
64
+ export class Meta extends Section {
65
+ author;
66
+ conform;
67
+ layout;
68
+ normalization;
69
+ indicator;
70
+ version; // semver version string, defaults to "0"
71
+ settings;
72
+ }
73
+ ;
74
+ // 'name'
75
+ export class Name extends Section {
76
+ names = [];
77
+ }
78
+ ;
79
+ // 'ordr'
80
+ export class OrdrItem {
81
+ elements;
82
+ before;
83
+ }
84
+ ;
85
+ export class Ordr extends Section {
86
+ items = [];
87
+ }
88
+ ;
89
+ // 'strs'
90
+ /**
91
+ * A string item in memory. This will be replaced with an index
92
+ * into the string table at finalization.
93
+ */
94
+ export class StrsItem {
95
+ value;
96
+ constructor(value) {
97
+ this.value = value;
98
+ }
99
+ compareTo(o) {
100
+ return StrsItem.binaryStringCompare(this.value, o.value);
101
+ }
102
+ static binaryStringCompare(a, b) {
103
+ // https://tc39.es/ecma262/multipage/abstract-operations.html#sec-islessthan
104
+ if (typeof a != 'string' || typeof b != 'string') {
105
+ throw new Error('binaryStringCompare: inputs must be strings');
106
+ }
107
+ if (a < b)
108
+ return -1;
109
+ if (a > b)
110
+ return 1;
111
+ return 0;
112
+ }
113
+ }
114
+ ;
115
+ export class Strs extends Section {
116
+ strings = [new StrsItem('')]; // C7043: The null string is always requierd
117
+ /**
118
+ * Allocate a StrsItem given the string, unescaping if necessary.
119
+ * @param s escaped string
120
+ * @returns
121
+ */
122
+ allocAndUnescapeString(s) {
123
+ return this.allocString(unescapeString(s));
124
+ }
125
+ /**
126
+ * Allocate a StrsItem given the string.
127
+ * @param s string
128
+ * @returns
129
+ */
130
+ allocString(s) {
131
+ if (s === undefined || s === null) {
132
+ // undefined or null are always equivalent to empty string, see C7043
133
+ s = '';
134
+ }
135
+ if (typeof s !== 'string') {
136
+ throw new Error('alloc_string: s must be a string, undefined, or null.');
137
+ }
138
+ let result = this.strings.find(item => item.value === s);
139
+ if (result === undefined) {
140
+ result = new StrsItem(s);
141
+ this.strings.push(result);
142
+ }
143
+ return result;
144
+ }
145
+ }
146
+ ;
147
+ // 'tran'
148
+ export var TranItemFlags;
149
+ (function (TranItemFlags) {
150
+ TranItemFlags[TranItemFlags["none"] = 0] = "none";
151
+ TranItemFlags[TranItemFlags["error"] = constants.tran_flags_error] = "error";
152
+ })(TranItemFlags || (TranItemFlags = {}));
153
+ ;
154
+ export class TranItem extends Section {
155
+ from;
156
+ to;
157
+ before;
158
+ flags;
159
+ }
160
+ ;
161
+ export class Tran extends Section {
162
+ items = [];
163
+ get id() {
164
+ return constants.section.tran;
165
+ }
166
+ }
167
+ ;
168
+ // alias types for 'bksp', 'finl'
169
+ export class Bksp extends Tran {
170
+ get id() {
171
+ return constants.section.bksp;
172
+ }
173
+ }
174
+ ;
175
+ export class BkspItem extends TranItem {
176
+ }
177
+ ;
178
+ export const BkspItemFlags = TranItemFlags;
179
+ export class Finl extends Tran {
180
+ get id() {
181
+ return constants.section.finl;
182
+ }
183
+ }
184
+ ;
185
+ export class FinlItem extends TranItem {
186
+ }
187
+ ;
188
+ export const FinlItemFlags = TranItemFlags;
189
+ // 'vkey'
190
+ export class VkeyItem {
191
+ vkey;
192
+ target;
193
+ }
194
+ export class Vkey extends Section {
195
+ vkeys = [];
196
+ }
197
+ ;
198
+ // 'disp'
199
+ export class DispItem {
200
+ to;
201
+ display;
202
+ }
203
+ ;
204
+ export class Disp extends Section {
205
+ baseCharacter;
206
+ disps = [];
207
+ }
208
+ ;
209
+ // 'layr'
210
+ /**
211
+ * In-memory `<layers>`
212
+ */
213
+ export class LayrList {
214
+ hardware;
215
+ layers = [];
216
+ minDeviceWidth; // millimeters
217
+ }
218
+ ;
219
+ /**
220
+ * In-memory `<layer>`
221
+ */
222
+ export class LayrEntry {
223
+ id;
224
+ mod;
225
+ rows = [];
226
+ }
227
+ ;
228
+ /**
229
+ * In-memory `<row>`
230
+ */
231
+ export class LayrRow {
232
+ keys = [];
233
+ }
234
+ ;
235
+ export class Layr extends Section {
236
+ lists = [];
237
+ }
238
+ ;
239
+ export class KeysKeys {
240
+ flags;
241
+ flicks; // for in-memory only
242
+ id;
243
+ longPress;
244
+ longPressDefault;
245
+ multiTap;
246
+ switch;
247
+ to;
248
+ width;
249
+ }
250
+ ;
251
+ export class KeysKmap {
252
+ vkey;
253
+ mod;
254
+ key; // for in-memory only
255
+ }
256
+ ;
257
+ export class KeysFlicks {
258
+ flicks = [];
259
+ id;
260
+ compareTo(b) {
261
+ return this.id.compareTo(b.id);
262
+ }
263
+ constructor(id) {
264
+ this.id = id;
265
+ }
266
+ }
267
+ ;
268
+ export class KeysFlick {
269
+ directions;
270
+ flags;
271
+ to;
272
+ }
273
+ ;
274
+ export class Keys extends Section {
275
+ keys = [];
276
+ flicks = [];
277
+ kmap = [];
278
+ constructor(strs) {
279
+ super();
280
+ let nullFlicks = new KeysFlicks(strs.allocString(''));
281
+ this.flicks.push(nullFlicks); // C7043: null element string
282
+ }
283
+ }
284
+ ;
285
+ export class List extends Section {
286
+ /**
287
+ * Allocate a list from a space-separated list of items.
288
+ * Note that passing undefined or null or `''` will
289
+ * end up being the same as the empty list `[]`
290
+ * @param strs Strs section for allocation
291
+ * @param s space-separated list of items
292
+ * @returns a List object
293
+ */
294
+ allocListFromSpaces(strs, s) {
295
+ s = s ?? '';
296
+ return this.allocList(strs, s.split(' '));
297
+ }
298
+ allocListFromEscapedSpaces(strs, s) {
299
+ if (s === undefined || s === null) {
300
+ s = '';
301
+ }
302
+ return this.allocList(strs, s.split(' ').map(unescapeString));
303
+ }
304
+ /**
305
+ * Return a List object referring to the string list.
306
+ * Note that a falsy list, or a list containing only an empty string
307
+ * `['']` will be stored as an empty list `[]`.
308
+ * @param strs Strs section for allocation
309
+ * @param s string list to allocate
310
+ * @returns
311
+ */
312
+ allocList(strs, s) {
313
+ // Special case the 'null' list for [] or ['']
314
+ if (!s || (s.length === 1 && s[0] === '')) {
315
+ return this.lists[0];
316
+ }
317
+ let result = this.lists.find(item => item.isEqual(s));
318
+ if (result === undefined) {
319
+ // allocate a new ListItem
320
+ result = new ListItem(strs, s);
321
+ this.lists.push(result);
322
+ }
323
+ return result;
324
+ }
325
+ constructor(strs) {
326
+ super();
327
+ this.lists.push(new ListItem(strs, [])); // C7043: null element string
328
+ }
329
+ lists = [];
330
+ }
331
+ ;
332
+ export { ListItem as ListItem };
333
+ ;
334
+ export class KMXPlusFile extends KMXFile {
335
+ /* KMXPlus file structures */
336
+ COMP_PLUS_SECT_ITEM;
337
+ COMP_PLUS_SECT;
338
+ // COMP_PLUS_BKSP == COMP_PLUS_TRAN
339
+ COMP_PLUS_BKSP_ITEM;
340
+ COMP_PLUS_BKSP;
341
+ COMP_PLUS_DISP_ITEM;
342
+ COMP_PLUS_DISP;
343
+ COMP_PLUS_ELEM_ELEMENT;
344
+ COMP_PLUS_ELEM_STRING;
345
+ COMP_PLUS_ELEM;
346
+ // COMP_PLUS_FINL == COMP_PLUS_TRAN
347
+ COMP_PLUS_FINL_ITEM;
348
+ COMP_PLUS_FINL;
349
+ // COMP_PLUS_KEYS is now COMP_PLUS_KEYS_KMAP
350
+ COMP_PLUS_LAYR_ENTRY;
351
+ COMP_PLUS_LAYR_KEY;
352
+ COMP_PLUS_LAYR_LIST;
353
+ COMP_PLUS_LAYR_ROW;
354
+ COMP_PLUS_LAYR;
355
+ COMP_PLUS_KEYS_FLICK;
356
+ COMP_PLUS_KEYS_FLICKS;
357
+ COMP_PLUS_KEYS_KEY;
358
+ COMP_PLUS_KEYS_KMAP;
359
+ COMP_PLUS_KEYS;
360
+ COMP_PLUS_LIST_LIST;
361
+ COMP_PLUS_LIST_INDEX;
362
+ COMP_PLUS_LIST;
363
+ COMP_PLUS_LOCA_ITEM;
364
+ COMP_PLUS_LOCA;
365
+ COMP_PLUS_META;
366
+ COMP_PLUS_NAME_ITEM;
367
+ COMP_PLUS_NAME;
368
+ COMP_PLUS_ORDR_ITEM;
369
+ COMP_PLUS_ORDR;
370
+ COMP_PLUS_STRS_ITEM;
371
+ COMP_PLUS_STRS;
372
+ COMP_PLUS_TRAN_ITEM;
373
+ COMP_PLUS_TRAN;
374
+ COMP_PLUS_VKEY_ITEM;
375
+ COMP_PLUS_VKEY;
376
+ /* File in-memory data */
377
+ kmxplus = {};
378
+ constructor() {
379
+ super();
380
+ // Binary-correct structures matching kmx_plus.h
381
+ // 'sect'
382
+ this.COMP_PLUS_SECT_ITEM = new r.Struct({
383
+ sect: r.uint32le,
384
+ offset: r.uint32le //? new r.VoidPointer(r.uint32le, {type: 'global'})
385
+ });
386
+ this.COMP_PLUS_SECT = new r.Struct({
387
+ ident: r.uint32le,
388
+ size: r.uint32le,
389
+ total: r.uint32le,
390
+ count: r.uint32le,
391
+ items: new r.Array(this.COMP_PLUS_SECT_ITEM, 'count')
392
+ });
393
+ // 'bksp' - see 'tran'
394
+ // 'disp'
395
+ this.COMP_PLUS_DISP_ITEM = new r.Struct({
396
+ to: r.uint32le,
397
+ display: r.uint32le,
398
+ });
399
+ this.COMP_PLUS_DISP = new r.Struct({
400
+ ident: r.uint32le,
401
+ size: r.uint32le,
402
+ count: r.uint32le,
403
+ baseCharacter: r.uint32le,
404
+ items: new r.Array(this.COMP_PLUS_DISP_ITEM, 'count'),
405
+ });
406
+ // 'elem'
407
+ this.COMP_PLUS_ELEM_ELEMENT = new r.Struct({
408
+ element: r.uint32le,
409
+ flags: r.uint32le
410
+ });
411
+ this.COMP_PLUS_ELEM_STRING = new r.Struct({
412
+ offset: r.uint32le,
413
+ length: r.uint32le
414
+ });
415
+ this.COMP_PLUS_ELEM = new r.Struct({
416
+ ident: r.uint32le,
417
+ size: r.uint32le,
418
+ count: r.uint32le,
419
+ strings: new r.Array(this.COMP_PLUS_ELEM_STRING, 'count')
420
+ // + variable subtable: Element data (see KMXPlusBuilder.emitElements())
421
+ });
422
+ // 'finl' - see 'tran'
423
+ // 'keys' - see 'keys.kmap'
424
+ // 'layr'
425
+ this.COMP_PLUS_LAYR_ENTRY = new r.Struct({
426
+ id: r.uint32le,
427
+ mod: r.uint32le,
428
+ row: r.uint32le,
429
+ count: r.uint32le,
430
+ });
431
+ this.COMP_PLUS_LAYR_KEY = new r.Struct({
432
+ key: r.uint32le, // str: key id
433
+ });
434
+ this.COMP_PLUS_LAYR_LIST = new r.Struct({
435
+ hardware: r.uint32le,
436
+ layer: r.uint32le,
437
+ count: r.uint32le,
438
+ minDeviceWidth: r.uint32le, // integer: millimeters
439
+ });
440
+ this.COMP_PLUS_LAYR_ROW = new r.Struct({
441
+ key: r.uint32le,
442
+ count: r.uint32le,
443
+ });
444
+ this.COMP_PLUS_LAYR = new r.Struct({
445
+ ident: r.uint32le,
446
+ size: r.uint32le,
447
+ listCount: r.uint32le,
448
+ layerCount: r.uint32le,
449
+ rowCount: r.uint32le,
450
+ keyCount: r.uint32le,
451
+ lists: new r.Array(this.COMP_PLUS_LAYR_LIST, 'listCount'),
452
+ layers: new r.Array(this.COMP_PLUS_LAYR_ENTRY, 'layerCount'),
453
+ rows: new r.Array(this.COMP_PLUS_LAYR_ROW, 'rowCount'),
454
+ keys: new r.Array(this.COMP_PLUS_LAYR_KEY, 'keyCount'),
455
+ });
456
+ this.COMP_PLUS_KEYS_FLICK = new r.Struct({
457
+ directions: r.uint32le,
458
+ flags: r.uint32le,
459
+ to: r.uint32le, // str | codepoint
460
+ });
461
+ this.COMP_PLUS_KEYS_FLICKS = new r.Struct({
462
+ count: r.uint32le,
463
+ flick: r.uint32le,
464
+ id: r.uint32le, // str
465
+ });
466
+ this.COMP_PLUS_KEYS_KEY = new r.Struct({
467
+ to: r.uint32le,
468
+ flags: r.uint32le,
469
+ id: r.uint32le,
470
+ switch: r.uint32le,
471
+ width: r.uint32le,
472
+ longPress: r.uint32le,
473
+ longPressDefault: r.uint32le,
474
+ multiTap: r.uint32le,
475
+ flicks: r.uint32le, // index into flicks table
476
+ });
477
+ this.COMP_PLUS_KEYS_KMAP = new r.Struct({
478
+ vkey: r.uint32le,
479
+ mod: r.uint32le,
480
+ key: r.uint32le, // index into 'keys' subtable
481
+ });
482
+ this.COMP_PLUS_KEYS = new r.Struct({
483
+ ident: r.uint32le,
484
+ size: r.uint32le,
485
+ keyCount: r.uint32le,
486
+ flicksCount: r.uint32le,
487
+ flickCount: r.uint32le,
488
+ kmapCount: r.uint32le,
489
+ keys: new r.Array(this.COMP_PLUS_KEYS_KEY, 'keyCount'),
490
+ flicks: new r.Array(this.COMP_PLUS_KEYS_FLICKS, 'flicksCount'),
491
+ flick: new r.Array(this.COMP_PLUS_KEYS_FLICK, 'flickCount'),
492
+ kmap: new r.Array(this.COMP_PLUS_KEYS_KMAP, 'kmapCount'),
493
+ });
494
+ // 'list'
495
+ this.COMP_PLUS_LIST_LIST = new r.Struct({
496
+ index: r.uint32le,
497
+ count: r.uint32le,
498
+ });
499
+ this.COMP_PLUS_LIST_INDEX = new r.Struct({
500
+ str: r.uint32le, // str
501
+ });
502
+ this.COMP_PLUS_LIST = new r.Struct({
503
+ ident: r.uint32le,
504
+ size: r.uint32le,
505
+ listCount: r.uint32le,
506
+ indexCount: r.uint32le,
507
+ lists: new r.Array(this.COMP_PLUS_LIST_LIST, 'listCount'),
508
+ indices: new r.Array(this.COMP_PLUS_LIST_INDEX, 'indexCount'),
509
+ });
510
+ // 'loca'
511
+ this.COMP_PLUS_LOCA_ITEM = r.uint32le; //str
512
+ this.COMP_PLUS_LOCA = new r.Struct({
513
+ ident: r.uint32le,
514
+ size: r.uint32le,
515
+ count: r.uint32le,
516
+ items: new r.Array(this.COMP_PLUS_LOCA_ITEM, 'count')
517
+ });
518
+ // 'meta'
519
+ this.COMP_PLUS_META = new r.Struct({
520
+ ident: r.uint32le,
521
+ size: r.uint32le,
522
+ author: r.uint32le,
523
+ conform: r.uint32le,
524
+ layout: r.uint32le,
525
+ normalization: r.uint32le,
526
+ indicator: r.uint32le,
527
+ version: r.uint32le,
528
+ settings: r.uint32le, //new r.Bitfield(r.uint32le, ['fallback', 'transformFailure', 'transformPartial'])
529
+ });
530
+ // 'name'
531
+ this.COMP_PLUS_NAME_ITEM = r.uint32le; //str
532
+ this.COMP_PLUS_NAME = new r.Struct({
533
+ ident: r.uint32le,
534
+ size: r.uint32le,
535
+ count: r.uint32le,
536
+ items: new r.Array(this.COMP_PLUS_NAME_ITEM, 'count')
537
+ });
538
+ // 'ordr'
539
+ this.COMP_PLUS_ORDR_ITEM = new r.Struct({
540
+ elements: r.uint32le,
541
+ before: r.uint32le //elem
542
+ });
543
+ this.COMP_PLUS_ORDR = new r.Struct({
544
+ ident: r.uint32le,
545
+ size: r.uint32le,
546
+ count: r.uint32le,
547
+ items: new r.Array(this.COMP_PLUS_ORDR_ITEM, 'count')
548
+ });
549
+ // 'strs'
550
+ this.COMP_PLUS_STRS_ITEM = new r.Struct({
551
+ // While we use length which is number of utf-16 code units excluding null terminator,
552
+ // we always write a null terminator, so we can get restructure to do that for us here
553
+ offset: r.uint32le,
554
+ length: r.uint32le
555
+ });
556
+ this.COMP_PLUS_STRS = new r.Struct({
557
+ ident: r.uint32le,
558
+ size: r.uint32le,
559
+ count: r.uint32le,
560
+ items: new r.Array(this.COMP_PLUS_STRS_ITEM, 'count')
561
+ // + variable subtable: String data (see KMXPlusBuilder.emitStrings())
562
+ });
563
+ // 'tran'
564
+ this.COMP_PLUS_TRAN_ITEM = new r.Struct({
565
+ from: r.uint32le,
566
+ to: r.uint32le,
567
+ before: r.uint32le,
568
+ flags: r.uint32le //bitfield
569
+ });
570
+ this.COMP_PLUS_TRAN = new r.Struct({
571
+ ident: r.uint32le,
572
+ size: r.uint32le,
573
+ count: r.uint32le,
574
+ items: new r.Array(this.COMP_PLUS_TRAN_ITEM, 'count')
575
+ });
576
+ // 'vkey'
577
+ this.COMP_PLUS_VKEY_ITEM = new r.Struct({
578
+ vkey: r.uint32le,
579
+ target: r.uint32le
580
+ });
581
+ this.COMP_PLUS_VKEY = new r.Struct({
582
+ ident: r.uint32le,
583
+ size: r.uint32le,
584
+ count: r.uint32le,
585
+ items: new r.Array(this.COMP_PLUS_VKEY_ITEM, 'count')
586
+ });
587
+ // Aliases
588
+ this.COMP_PLUS_BKSP_ITEM = this.COMP_PLUS_TRAN_ITEM;
589
+ this.COMP_PLUS_FINL_ITEM = this.COMP_PLUS_TRAN_ITEM;
590
+ this.COMP_PLUS_BKSP = this.COMP_PLUS_TRAN;
591
+ this.COMP_PLUS_FINL = this.COMP_PLUS_TRAN;
592
+ }
593
+ }
594
+ //# sourceMappingURL=kmx-plus.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kmx-plus.js","sourceRoot":"","sources":["../../../src/kmx/kmx-plus.ts"],"names":[],"mappings":"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"}