piral-blazor 1.0.0-pre.2217 → 1.0.0

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 (236) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +55 -12
  3. package/convert.d.ts +13 -10
  4. package/convert.js +17 -12
  5. package/esm/converter.d.ts +10 -6
  6. package/esm/converter.js +164 -48
  7. package/esm/converter.js.map +1 -1
  8. package/esm/create.d.ts +21 -1
  9. package/esm/create.js +29 -15
  10. package/esm/create.js.map +1 -1
  11. package/esm/dependencies.d.ts +6 -3
  12. package/esm/dependencies.js +104 -14
  13. package/esm/dependencies.js.map +1 -1
  14. package/esm/events.d.ts +6 -0
  15. package/esm/events.js +145 -0
  16. package/esm/events.js.map +1 -0
  17. package/esm/interop.d.ts +29 -0
  18. package/esm/interop.js +205 -0
  19. package/esm/interop.js.map +1 -0
  20. package/esm/navigation.d.ts +2 -0
  21. package/esm/navigation.js +30 -0
  22. package/esm/navigation.js.map +1 -0
  23. package/esm/types.d.ts +97 -4
  24. package/infra.codegen +53 -68
  25. package/lib/converter.d.ts +10 -6
  26. package/lib/converter.js +164 -48
  27. package/lib/converter.js.map +1 -1
  28. package/lib/create.d.ts +21 -1
  29. package/lib/create.js +31 -17
  30. package/lib/create.js.map +1 -1
  31. package/lib/dependencies.d.ts +6 -3
  32. package/lib/dependencies.js +104 -14
  33. package/lib/dependencies.js.map +1 -1
  34. package/lib/events.d.ts +6 -0
  35. package/lib/events.js +154 -0
  36. package/lib/events.js.map +1 -0
  37. package/lib/index.js +1 -1
  38. package/lib/interop.d.ts +29 -0
  39. package/lib/interop.js +226 -0
  40. package/lib/interop.js.map +1 -0
  41. package/lib/navigation.d.ts +2 -0
  42. package/lib/navigation.js +35 -0
  43. package/lib/navigation.js.map +1 -0
  44. package/lib/types.d.ts +97 -4
  45. package/package.json +26 -13
  46. package/src/converter.ts +237 -57
  47. package/src/create.ts +53 -9
  48. package/src/dependencies.ts +122 -14
  49. package/src/events.ts +174 -0
  50. package/src/interop.ts +273 -0
  51. package/src/navigation.ts +36 -0
  52. package/src/types.ts +115 -4
  53. package/convert.ts +0 -17
  54. package/esm/internal/Environment.d.ts +0 -3
  55. package/esm/internal/Environment.js +0 -6
  56. package/esm/internal/Environment.js.map +0 -1
  57. package/esm/internal/Platform/BootConfig.d.ts +0 -20
  58. package/esm/internal/Platform/BootConfig.js +0 -10
  59. package/esm/internal/Platform/BootConfig.js.map +0 -1
  60. package/esm/internal/Platform/Mono/MonoDebugger.d.ts +0 -3
  61. package/esm/internal/Platform/Mono/MonoDebugger.js +0 -43
  62. package/esm/internal/Platform/Mono/MonoDebugger.js.map +0 -1
  63. package/esm/internal/Platform/Mono/MonoPlatform.d.ts +0 -2
  64. package/esm/internal/Platform/Mono/MonoPlatform.js +0 -403
  65. package/esm/internal/Platform/Mono/MonoPlatform.js.map +0 -1
  66. package/esm/internal/Platform/Mono/TimezoneDataFile.d.ts +0 -1
  67. package/esm/internal/Platform/Mono/TimezoneDataFile.js +0 -51
  68. package/esm/internal/Platform/Mono/TimezoneDataFile.js.map +0 -1
  69. package/esm/internal/Platform/Platform.d.ts +0 -31
  70. package/esm/internal/Platform/Platform.js +0 -2
  71. package/esm/internal/Platform/Platform.js.map +0 -1
  72. package/esm/internal/Platform/Url.d.ts +0 -2
  73. package/esm/internal/Platform/Url.js +0 -11
  74. package/esm/internal/Platform/Url.js.map +0 -1
  75. package/esm/internal/Platform/WebAssemblyConfigLoader.d.ts +0 -4
  76. package/esm/internal/Platform/WebAssemblyConfigLoader.js +0 -64
  77. package/esm/internal/Platform/WebAssemblyConfigLoader.js.map +0 -1
  78. package/esm/internal/Platform/WebAssemblyResourceLoader.d.ts +0 -24
  79. package/esm/internal/Platform/WebAssemblyResourceLoader.js +0 -223
  80. package/esm/internal/Platform/WebAssemblyResourceLoader.js.map +0 -1
  81. package/esm/internal/Platform/WebAssemblyStartOptions.d.ts +0 -13
  82. package/esm/internal/Platform/WebAssemblyStartOptions.js +0 -2
  83. package/esm/internal/Platform/WebAssemblyStartOptions.js.map +0 -1
  84. package/esm/internal/Rendering/BrowserRenderer.d.ts +0 -38
  85. package/esm/internal/Rendering/BrowserRenderer.js +0 -458
  86. package/esm/internal/Rendering/BrowserRenderer.js.map +0 -1
  87. package/esm/internal/Rendering/ElementReferenceCapture.d.ts +0 -1
  88. package/esm/internal/Rendering/ElementReferenceCapture.js +0 -24
  89. package/esm/internal/Rendering/ElementReferenceCapture.js.map +0 -1
  90. package/esm/internal/Rendering/EventDelegator.d.ts +0 -20
  91. package/esm/internal/Rendering/EventDelegator.js +0 -236
  92. package/esm/internal/Rendering/EventDelegator.js.map +0 -1
  93. package/esm/internal/Rendering/EventFieldInfo.d.ts +0 -6
  94. package/esm/internal/Rendering/EventFieldInfo.js +0 -32
  95. package/esm/internal/Rendering/EventFieldInfo.js.map +0 -1
  96. package/esm/internal/Rendering/EventForDotNet.d.ts +0 -10
  97. package/esm/internal/Rendering/EventForDotNet.js +0 -194
  98. package/esm/internal/Rendering/EventForDotNet.js.map +0 -1
  99. package/esm/internal/Rendering/LogicalElements.d.ts +0 -19
  100. package/esm/internal/Rendering/LogicalElements.js +0 -250
  101. package/esm/internal/Rendering/LogicalElements.js.map +0 -1
  102. package/esm/internal/Rendering/RenderBatch/BinaryDecoder.d.ts +0 -5
  103. package/esm/internal/Rendering/RenderBatch/BinaryDecoder.js +0 -34
  104. package/esm/internal/Rendering/RenderBatch/BinaryDecoder.js.map +0 -1
  105. package/esm/internal/Rendering/RenderBatch/OutOfProcessRenderBatch.d.ts +0 -18
  106. package/esm/internal/Rendering/RenderBatch/OutOfProcessRenderBatch.js +0 -190
  107. package/esm/internal/Rendering/RenderBatch/OutOfProcessRenderBatch.js.map +0 -1
  108. package/esm/internal/Rendering/RenderBatch/RenderBatch.d.ts +0 -87
  109. package/esm/internal/Rendering/RenderBatch/RenderBatch.js +0 -26
  110. package/esm/internal/Rendering/RenderBatch/RenderBatch.js.map +0 -1
  111. package/esm/internal/Rendering/RenderBatch/SharedMemoryRenderBatch.d.ts +0 -52
  112. package/esm/internal/Rendering/RenderBatch/SharedMemoryRenderBatch.js +0 -103
  113. package/esm/internal/Rendering/RenderBatch/SharedMemoryRenderBatch.js.map +0 -1
  114. package/esm/internal/Rendering/RenderBatch/Utf8Decoder.d.ts +0 -1
  115. package/esm/internal/Rendering/RenderBatch/Utf8Decoder.js +0 -63
  116. package/esm/internal/Rendering/RenderBatch/Utf8Decoder.js.map +0 -1
  117. package/esm/internal/Rendering/Renderer.d.ts +0 -8
  118. package/esm/internal/Rendering/Renderer.js +0 -69
  119. package/esm/internal/Rendering/Renderer.js.map +0 -1
  120. package/esm/internal/Rendering/RendererEventDispatcher.d.ts +0 -4
  121. package/esm/internal/Rendering/RendererEventDispatcher.js +0 -11
  122. package/esm/internal/Rendering/RendererEventDispatcher.js.map +0 -1
  123. package/esm/internal/Services/NavigationManager.d.ts +0 -16
  124. package/esm/internal/Services/NavigationManager.js +0 -138
  125. package/esm/internal/Services/NavigationManager.js.map +0 -1
  126. package/esm/internal/globals.d.ts +0 -1
  127. package/esm/internal/globals.js +0 -5
  128. package/esm/internal/globals.js.map +0 -1
  129. package/esm/internal/index.d.ts +0 -15
  130. package/esm/internal/index.js +0 -152
  131. package/esm/internal/index.js.map +0 -1
  132. package/lib/internal/Environment.d.ts +0 -3
  133. package/lib/internal/Environment.js +0 -9
  134. package/lib/internal/Environment.js.map +0 -1
  135. package/lib/internal/Platform/BootConfig.d.ts +0 -20
  136. package/lib/internal/Platform/BootConfig.js +0 -13
  137. package/lib/internal/Platform/BootConfig.js.map +0 -1
  138. package/lib/internal/Platform/Mono/MonoDebugger.d.ts +0 -3
  139. package/lib/internal/Platform/Mono/MonoDebugger.js +0 -48
  140. package/lib/internal/Platform/Mono/MonoDebugger.js.map +0 -1
  141. package/lib/internal/Platform/Mono/MonoPlatform.d.ts +0 -2
  142. package/lib/internal/Platform/Mono/MonoPlatform.js +0 -406
  143. package/lib/internal/Platform/Mono/MonoPlatform.js.map +0 -1
  144. package/lib/internal/Platform/Mono/TimezoneDataFile.d.ts +0 -1
  145. package/lib/internal/Platform/Mono/TimezoneDataFile.js +0 -55
  146. package/lib/internal/Platform/Mono/TimezoneDataFile.js.map +0 -1
  147. package/lib/internal/Platform/Platform.d.ts +0 -31
  148. package/lib/internal/Platform/Platform.js +0 -3
  149. package/lib/internal/Platform/Platform.js.map +0 -1
  150. package/lib/internal/Platform/Url.d.ts +0 -2
  151. package/lib/internal/Platform/Url.js +0 -16
  152. package/lib/internal/Platform/Url.js.map +0 -1
  153. package/lib/internal/Platform/WebAssemblyConfigLoader.d.ts +0 -4
  154. package/lib/internal/Platform/WebAssemblyConfigLoader.js +0 -67
  155. package/lib/internal/Platform/WebAssemblyConfigLoader.js.map +0 -1
  156. package/lib/internal/Platform/WebAssemblyResourceLoader.d.ts +0 -24
  157. package/lib/internal/Platform/WebAssemblyResourceLoader.js +0 -226
  158. package/lib/internal/Platform/WebAssemblyResourceLoader.js.map +0 -1
  159. package/lib/internal/Platform/WebAssemblyStartOptions.d.ts +0 -13
  160. package/lib/internal/Platform/WebAssemblyStartOptions.js +0 -3
  161. package/lib/internal/Platform/WebAssemblyStartOptions.js.map +0 -1
  162. package/lib/internal/Rendering/BrowserRenderer.d.ts +0 -38
  163. package/lib/internal/Rendering/BrowserRenderer.js +0 -461
  164. package/lib/internal/Rendering/BrowserRenderer.js.map +0 -1
  165. package/lib/internal/Rendering/ElementReferenceCapture.d.ts +0 -1
  166. package/lib/internal/Rendering/ElementReferenceCapture.js +0 -28
  167. package/lib/internal/Rendering/ElementReferenceCapture.js.map +0 -1
  168. package/lib/internal/Rendering/EventDelegator.d.ts +0 -20
  169. package/lib/internal/Rendering/EventDelegator.js +0 -239
  170. package/lib/internal/Rendering/EventDelegator.js.map +0 -1
  171. package/lib/internal/Rendering/EventFieldInfo.d.ts +0 -6
  172. package/lib/internal/Rendering/EventFieldInfo.js +0 -35
  173. package/lib/internal/Rendering/EventFieldInfo.js.map +0 -1
  174. package/lib/internal/Rendering/EventForDotNet.d.ts +0 -10
  175. package/lib/internal/Rendering/EventForDotNet.js +0 -197
  176. package/lib/internal/Rendering/EventForDotNet.js.map +0 -1
  177. package/lib/internal/Rendering/LogicalElements.d.ts +0 -19
  178. package/lib/internal/Rendering/LogicalElements.js +0 -265
  179. package/lib/internal/Rendering/LogicalElements.js.map +0 -1
  180. package/lib/internal/Rendering/RenderBatch/BinaryDecoder.d.ts +0 -5
  181. package/lib/internal/Rendering/RenderBatch/BinaryDecoder.js +0 -42
  182. package/lib/internal/Rendering/RenderBatch/BinaryDecoder.js.map +0 -1
  183. package/lib/internal/Rendering/RenderBatch/OutOfProcessRenderBatch.d.ts +0 -18
  184. package/lib/internal/Rendering/RenderBatch/OutOfProcessRenderBatch.js +0 -193
  185. package/lib/internal/Rendering/RenderBatch/OutOfProcessRenderBatch.js.map +0 -1
  186. package/lib/internal/Rendering/RenderBatch/RenderBatch.d.ts +0 -87
  187. package/lib/internal/Rendering/RenderBatch/RenderBatch.js +0 -29
  188. package/lib/internal/Rendering/RenderBatch/RenderBatch.js.map +0 -1
  189. package/lib/internal/Rendering/RenderBatch/SharedMemoryRenderBatch.d.ts +0 -52
  190. package/lib/internal/Rendering/RenderBatch/SharedMemoryRenderBatch.js +0 -106
  191. package/lib/internal/Rendering/RenderBatch/SharedMemoryRenderBatch.js.map +0 -1
  192. package/lib/internal/Rendering/RenderBatch/Utf8Decoder.d.ts +0 -1
  193. package/lib/internal/Rendering/RenderBatch/Utf8Decoder.js +0 -66
  194. package/lib/internal/Rendering/RenderBatch/Utf8Decoder.js.map +0 -1
  195. package/lib/internal/Rendering/Renderer.d.ts +0 -8
  196. package/lib/internal/Rendering/Renderer.js +0 -76
  197. package/lib/internal/Rendering/Renderer.js.map +0 -1
  198. package/lib/internal/Rendering/RendererEventDispatcher.d.ts +0 -4
  199. package/lib/internal/Rendering/RendererEventDispatcher.js +0 -16
  200. package/lib/internal/Rendering/RendererEventDispatcher.js.map +0 -1
  201. package/lib/internal/Services/NavigationManager.d.ts +0 -16
  202. package/lib/internal/Services/NavigationManager.js +0 -144
  203. package/lib/internal/Services/NavigationManager.js.map +0 -1
  204. package/lib/internal/globals.d.ts +0 -1
  205. package/lib/internal/globals.js +0 -7
  206. package/lib/internal/globals.js.map +0 -1
  207. package/lib/internal/index.d.ts +0 -15
  208. package/lib/internal/index.js +0 -161
  209. package/lib/internal/index.js.map +0 -1
  210. package/src/internal/Environment.ts +0 -11
  211. package/src/internal/Platform/BootConfig.ts +0 -21
  212. package/src/internal/Platform/Mono/MonoDebugger.ts +0 -48
  213. package/src/internal/Platform/Mono/MonoPlatform.ts +0 -494
  214. package/src/internal/Platform/Mono/MonoTypes.d.ts +0 -27
  215. package/src/internal/Platform/Mono/TimezoneDataFile.ts +0 -46
  216. package/src/internal/Platform/Platform.ts +0 -40
  217. package/src/internal/Platform/Url.ts +0 -11
  218. package/src/internal/Platform/WebAssemblyConfigLoader.ts +0 -34
  219. package/src/internal/Platform/WebAssemblyResourceLoader.ts +0 -234
  220. package/src/internal/Platform/WebAssemblyStartOptions.ts +0 -22
  221. package/src/internal/Rendering/BrowserRenderer.ts +0 -616
  222. package/src/internal/Rendering/ElementReferenceCapture.ts +0 -27
  223. package/src/internal/Rendering/EventDelegator.ts +0 -293
  224. package/src/internal/Rendering/EventFieldInfo.ts +0 -31
  225. package/src/internal/Rendering/EventForDotNet.ts +0 -370
  226. package/src/internal/Rendering/LogicalElements.ts +0 -289
  227. package/src/internal/Rendering/RenderBatch/BinaryDecoder.ts +0 -43
  228. package/src/internal/Rendering/RenderBatch/OutOfProcessRenderBatch.ts +0 -244
  229. package/src/internal/Rendering/RenderBatch/RenderBatch.ts +0 -100
  230. package/src/internal/Rendering/RenderBatch/SharedMemoryRenderBatch.ts +0 -137
  231. package/src/internal/Rendering/RenderBatch/Utf8Decoder.ts +0 -66
  232. package/src/internal/Rendering/Renderer.ts +0 -98
  233. package/src/internal/Rendering/RendererEventDispatcher.ts +0 -20
  234. package/src/internal/Services/NavigationManager.ts +0 -157
  235. package/src/internal/globals.ts +0 -5
  236. package/src/internal/index.ts +0 -170
@@ -1,137 +0,0 @@
1
- import { platform } from '../../Environment';
2
- import {
3
- RenderBatch,
4
- ArrayRange,
5
- ArrayBuilderSegment,
6
- RenderTreeDiff,
7
- RenderTreeEdit,
8
- RenderTreeFrame,
9
- ArrayValues,
10
- EditType,
11
- FrameType,
12
- RenderTreeFrameReader,
13
- } from './RenderBatch';
14
- import { Pointer, System_Array, System_Object } from '../../Platform/Platform';
15
-
16
- // Used when running on Mono WebAssembly for shared-memory interop. The code here encapsulates
17
- // our knowledge of the memory layout of RenderBatch and all referenced types.
18
- //
19
- // In this implementation, all the DTO types are really heap pointers at runtime, hence all
20
- // the casts to 'any' whenever we pass them to platform.read.
21
-
22
- export class SharedMemoryRenderBatch implements RenderBatch {
23
- constructor(private batchAddress: Pointer) {}
24
-
25
- // Keep in sync with memory layout in RenderBatch.cs
26
- updatedComponents() {
27
- return (platform.readStructField<Pointer>(this.batchAddress, 0) as any) as ArrayRange<RenderTreeDiff>;
28
- }
29
-
30
- referenceFrames() {
31
- return (platform.readStructField<Pointer>(this.batchAddress, arrayRangeReader.structLength) as any) as ArrayRange<
32
- RenderTreeDiff
33
- >;
34
- }
35
-
36
- disposedComponentIds() {
37
- return (platform.readStructField<Pointer>(
38
- this.batchAddress,
39
- arrayRangeReader.structLength * 2,
40
- ) as any) as ArrayRange<number>;
41
- }
42
-
43
- disposedEventHandlerIds() {
44
- return (platform.readStructField<Pointer>(
45
- this.batchAddress,
46
- arrayRangeReader.structLength * 3,
47
- ) as any) as ArrayRange<number>;
48
- }
49
-
50
- updatedComponentsEntry(values: ArrayValues<RenderTreeDiff>, index: number) {
51
- return arrayValuesEntry(values, index, diffReader.structLength);
52
- }
53
-
54
- referenceFramesEntry(values: ArrayValues<RenderTreeFrame>, index: number) {
55
- return arrayValuesEntry(values, index, frameReader.structLength);
56
- }
57
-
58
- disposedComponentIdsEntry(values: ArrayValues<number>, index: number) {
59
- const pointer = arrayValuesEntry(values, index, /* int length */ 4);
60
- return platform.readInt32Field((pointer as any) as Pointer);
61
- }
62
-
63
- disposedEventHandlerIdsEntry(values: ArrayValues<number>, index: number) {
64
- const pointer = arrayValuesEntry(values, index, /* long length */ 8);
65
- return platform.readUint64Field((pointer as any) as Pointer);
66
- }
67
-
68
- arrayRangeReader = arrayRangeReader;
69
-
70
- arrayBuilderSegmentReader = arrayBuilderSegmentReader;
71
-
72
- diffReader = diffReader;
73
-
74
- editReader = editReader;
75
-
76
- frameReader = frameReader;
77
- }
78
-
79
- // Keep in sync with memory layout in ArrayRange.cs
80
- const arrayRangeReader = {
81
- structLength: 8,
82
- values: <T>(arrayRange: ArrayRange<T>) =>
83
- (platform.readObjectField<System_Array<T>>(arrayRange as any, 0) as any) as ArrayValues<T>,
84
- count: <T>(arrayRange: ArrayRange<T>) => platform.readInt32Field(arrayRange as any, 4),
85
- };
86
-
87
- // Keep in sync with memory layout in ArrayBuilderSegment
88
- const arrayBuilderSegmentReader = {
89
- structLength: 12,
90
- values: <T>(arrayBuilderSegment: ArrayBuilderSegment<T>) => {
91
- // Evaluate arrayBuilderSegment->_builder->_items, i.e., two dereferences needed
92
- const builder = platform.readObjectField<System_Object>(arrayBuilderSegment as any, 0);
93
- const builderFieldsAddress = platform.getObjectFieldsBaseAddress(builder);
94
- return (platform.readObjectField<System_Array<T>>(builderFieldsAddress, 0) as any) as ArrayValues<T>;
95
- },
96
- offset: <T>(arrayBuilderSegment: ArrayBuilderSegment<T>) => platform.readInt32Field(arrayBuilderSegment as any, 4),
97
- count: <T>(arrayBuilderSegment: ArrayBuilderSegment<T>) => platform.readInt32Field(arrayBuilderSegment as any, 8),
98
- };
99
-
100
- // Keep in sync with memory layout in RenderTreeDiff.cs
101
- const diffReader = {
102
- structLength: 4 + arrayBuilderSegmentReader.structLength,
103
- componentId: (diff: RenderTreeDiff) => platform.readInt32Field(diff as any, 0),
104
- edits: (diff: RenderTreeDiff) =>
105
- (platform.readStructField<Pointer>(diff as any, 4) as any) as ArrayBuilderSegment<RenderTreeEdit>,
106
- editsEntry: (values: ArrayValues<RenderTreeEdit>, index: number) =>
107
- arrayValuesEntry(values, index, editReader.structLength),
108
- };
109
-
110
- // Keep in sync with memory layout in RenderTreeEdit.cs
111
- const editReader = {
112
- structLength: 20,
113
- editType: (edit: RenderTreeEdit) => platform.readInt32Field(edit as any, 0) as EditType,
114
- siblingIndex: (edit: RenderTreeEdit) => platform.readInt32Field(edit as any, 4),
115
- newTreeIndex: (edit: RenderTreeEdit) => platform.readInt32Field(edit as any, 8),
116
- moveToSiblingIndex: (edit: RenderTreeEdit) => platform.readInt32Field(edit as any, 8),
117
- removedAttributeName: (edit: RenderTreeEdit) => platform.readStringField(edit as any, 16),
118
- };
119
-
120
- // Keep in sync with memory layout in RenderTreeFrame.cs
121
- const frameReader = {
122
- structLength: 36,
123
- frameType: (frame: RenderTreeFrame) => platform.readInt16Field(frame as any, 4) as FrameType,
124
- subtreeLength: (frame: RenderTreeFrame) => platform.readInt32Field(frame as any, 8),
125
- elementReferenceCaptureId: (frame: RenderTreeFrame) => platform.readStringField(frame as any, 16),
126
- componentId: (frame: RenderTreeFrame) => platform.readInt32Field(frame as any, 12),
127
- elementName: (frame: RenderTreeFrame) => platform.readStringField(frame as any, 16),
128
- textContent: (frame: RenderTreeFrame) => platform.readStringField(frame as any, 16),
129
- markupContent: (frame: RenderTreeFrame) => platform.readStringField(frame as any, 16)!,
130
- attributeName: (frame: RenderTreeFrame) => platform.readStringField(frame as any, 16),
131
- attributeValue: (frame: RenderTreeFrame) => platform.readStringField(frame as any, 24, true),
132
- attributeEventHandlerId: (frame: RenderTreeFrame) => platform.readUint64Field(frame as any, 8),
133
- };
134
-
135
- function arrayValuesEntry<T>(arrayValues: ArrayValues<T>, index: number, itemSize: number): T {
136
- return (platform.getArrayEntryPtr((arrayValues as any) as System_Array<T>, index, itemSize) as any) as T;
137
- }
@@ -1,66 +0,0 @@
1
- const nativeDecoder = typeof TextDecoder === 'function' ? new TextDecoder('utf-8') : null;
2
-
3
- export const decodeUtf8: (bytes: Uint8Array) => string = nativeDecoder
4
- ? nativeDecoder.decode.bind(nativeDecoder)
5
- : decodeImpl;
6
-
7
- /* !
8
- Logic in decodeImpl is derived from fast-text-encoding
9
- https://github.com/samthor/fast-text-encoding
10
- License for fast-text-encoding: Apache 2.0
11
- https://github.com/samthor/fast-text-encoding/blob/master/LICENSE
12
- */
13
-
14
- function decodeImpl(bytes: Uint8Array): string {
15
- let pos = 0;
16
- const len = bytes.length;
17
- const out: number[] = [];
18
- const substrings: string[] = [];
19
-
20
- while (pos < len) {
21
- const byte1 = bytes[pos++];
22
- if (byte1 === 0) {
23
- break; // NULL
24
- }
25
-
26
- if ((byte1 & 0x80) === 0) {
27
- // 1-byte
28
- out.push(byte1);
29
- } else if ((byte1 & 0xe0) === 0xc0) {
30
- // 2-byte
31
- const byte2 = bytes[pos++] & 0x3f;
32
- out.push(((byte1 & 0x1f) << 6) | byte2);
33
- } else if ((byte1 & 0xf0) === 0xe0) {
34
- const byte2 = bytes[pos++] & 0x3f;
35
- const byte3 = bytes[pos++] & 0x3f;
36
- out.push(((byte1 & 0x1f) << 12) | (byte2 << 6) | byte3);
37
- } else if ((byte1 & 0xf8) === 0xf0) {
38
- const byte2 = bytes[pos++] & 0x3f;
39
- const byte3 = bytes[pos++] & 0x3f;
40
- const byte4 = bytes[pos++] & 0x3f;
41
-
42
- // this can be > 0xffff, so possibly generate surrogates
43
- let codepoint = ((byte1 & 0x07) << 0x12) | (byte2 << 0x0c) | (byte3 << 0x06) | byte4;
44
- if (codepoint > 0xffff) {
45
- // codepoint &= ~0x10000;
46
- codepoint -= 0x10000;
47
- out.push(((codepoint >>> 10) & 0x3ff) | 0xd800);
48
- codepoint = 0xdc00 | (codepoint & 0x3ff);
49
- }
50
- out.push(codepoint);
51
- } else {
52
- // FIXME: we're ignoring this
53
- }
54
-
55
- // As a workaround for https://github.com/samthor/fast-text-encoding/issues/1,
56
- // make sure the 'out' array never gets too long. When it reaches a limit, we
57
- // stringify what we have so far and append to a list of outputs.
58
- if (out.length > 1024) {
59
- substrings.push(String.fromCharCode.apply(null, out));
60
- out.length = 0;
61
- }
62
- }
63
-
64
- substrings.push(String.fromCharCode.apply(null, out));
65
- return substrings.join('');
66
- }
@@ -1,98 +0,0 @@
1
- /* eslint-disable @typescript-eslint/camelcase */
2
- import '../Platform/Platform';
3
- import '../Environment';
4
- import { RenderBatch } from './RenderBatch/RenderBatch';
5
- import { BrowserRenderer } from './BrowserRenderer';
6
- import { toLogicalElement, LogicalElement } from './LogicalElements';
7
-
8
- interface BrowserRendererRegistry {
9
- [browserRendererId: number]: BrowserRenderer;
10
- }
11
- const browserRenderers: BrowserRendererRegistry = {};
12
- let shouldResetScrollAfterNextBatch = false;
13
-
14
- export function attachRootComponentToLogicalElement(
15
- browserRendererId: number,
16
- logicalElement: LogicalElement,
17
- componentId: number,
18
- ): void {
19
- let browserRenderer = browserRenderers[browserRendererId];
20
- if (!browserRenderer) {
21
- browserRenderer = browserRenderers[browserRendererId] = new BrowserRenderer(browserRendererId);
22
- }
23
-
24
- browserRenderer.attachRootComponentToLogicalElement(componentId, logicalElement);
25
- }
26
-
27
- export function attachRootComponentToElement(
28
- elementSelector: string,
29
- componentId: number,
30
- browserRendererId?: number,
31
- ): void {
32
- const element = document.querySelector(elementSelector);
33
- if (!element) {
34
- throw new Error(`Could not find any element matching selector '${elementSelector}'.`);
35
- }
36
-
37
- // 'allowExistingContents' to keep any prerendered content until we do the first client-side render
38
- // Only client-side Blazor supplies a browser renderer ID
39
- attachRootComponentToLogicalElement(
40
- browserRendererId || 0,
41
- toLogicalElement(element, /* allow existing contents */ true),
42
- componentId,
43
- );
44
- }
45
-
46
- export function renderBatch(browserRendererId: number, batch: RenderBatch): void {
47
- const browserRenderer = browserRenderers[browserRendererId];
48
- if (!browserRenderer) {
49
- throw new Error(`There is no browser renderer with ID ${browserRendererId}.`);
50
- }
51
-
52
- const arrayRangeReader = batch.arrayRangeReader;
53
- const updatedComponentsRange = batch.updatedComponents();
54
- const updatedComponentsValues = arrayRangeReader.values(updatedComponentsRange);
55
- const updatedComponentsLength = arrayRangeReader.count(updatedComponentsRange);
56
- const referenceFrames = batch.referenceFrames();
57
- const referenceFramesValues = arrayRangeReader.values(referenceFrames);
58
- const diffReader = batch.diffReader;
59
-
60
- for (let i = 0; i < updatedComponentsLength; i++) {
61
- const diff = batch.updatedComponentsEntry(updatedComponentsValues, i);
62
- const componentId = diffReader.componentId(diff);
63
- const edits = diffReader.edits(diff);
64
- browserRenderer.updateComponent(batch, componentId, edits, referenceFramesValues);
65
- }
66
-
67
- const disposedComponentIdsRange = batch.disposedComponentIds();
68
- const disposedComponentIdsValues = arrayRangeReader.values(disposedComponentIdsRange);
69
- const disposedComponentIdsLength = arrayRangeReader.count(disposedComponentIdsRange);
70
- for (let i = 0; i < disposedComponentIdsLength; i++) {
71
- const componentId = batch.disposedComponentIdsEntry(disposedComponentIdsValues, i);
72
- browserRenderer.disposeComponent(componentId);
73
- }
74
-
75
- const disposedEventHandlerIdsRange = batch.disposedEventHandlerIds();
76
- const disposedEventHandlerIdsValues = arrayRangeReader.values(disposedEventHandlerIdsRange);
77
- const disposedEventHandlerIdsLength = arrayRangeReader.count(disposedEventHandlerIdsRange);
78
- for (let i = 0; i < disposedEventHandlerIdsLength; i++) {
79
- const eventHandlerId = batch.disposedEventHandlerIdsEntry(disposedEventHandlerIdsValues, i);
80
- browserRenderer.disposeEventHandler(eventHandlerId);
81
- }
82
-
83
- resetScrollIfNeeded();
84
- }
85
-
86
- export function resetScrollAfterNextBatch() {
87
- shouldResetScrollAfterNextBatch = true;
88
- }
89
-
90
- function resetScrollIfNeeded() {
91
- if (shouldResetScrollAfterNextBatch) {
92
- shouldResetScrollAfterNextBatch = false;
93
-
94
- // This assumes the scroller is on the window itself. There isn't a general way to know
95
- // if some other element is playing the role of the primary scroll region.
96
- window.scrollTo && window.scrollTo(0, 0);
97
- }
98
- }
@@ -1,20 +0,0 @@
1
- import { EventDescriptor } from './BrowserRenderer';
2
- import { UIEventArgs } from './EventForDotNet';
3
-
4
- type EventDispatcher = (eventDescriptor: EventDescriptor, eventArgs: UIEventArgs) => void;
5
-
6
- let eventDispatcherInstance: EventDispatcher;
7
-
8
- export function dispatchEvent(eventDescriptor: EventDescriptor, eventArgs: UIEventArgs): void {
9
- if (!eventDispatcherInstance) {
10
- throw new Error("eventDispatcher not initialized. Call 'setEventDispatcher' to configure it.");
11
- }
12
-
13
- return eventDispatcherInstance(eventDescriptor, eventArgs);
14
- }
15
-
16
- export function setEventDispatcher(
17
- newDispatcher: (eventDescriptor: EventDescriptor, eventArgs: UIEventArgs) => Promise<void>,
18
- ): void {
19
- eventDispatcherInstance = newDispatcher;
20
- }
@@ -1,157 +0,0 @@
1
- import { EventDelegator } from '../Rendering/EventDelegator';
2
-
3
- // tslint:disable:no-string-literal
4
- // tslint:disable:no-null-keyword
5
-
6
- let hasEnabledNavigationInterception = true;
7
- let hasRegisteredNavigationEventListeners = false;
8
-
9
- // Will be initialized once someone registers
10
- let notifyLocationChangedCallback: ((uri: string, intercepted: boolean) => Promise<void>) | null = null;
11
-
12
- // These are the functions we're making available for invocation from .NET
13
- export const navigationManager = {
14
- listenForNavigationEvents,
15
- enableNavigationInterception,
16
- disableNavigationInterception,
17
- navigateTo,
18
- getBaseURI: () => document.baseURI,
19
- getLocationHref: () => location.href,
20
- };
21
-
22
- function listenForNavigationEvents(callback: (uri: string, intercepted: boolean) => Promise<void>) {
23
- notifyLocationChangedCallback = callback;
24
-
25
- if (hasRegisteredNavigationEventListeners) {
26
- return;
27
- }
28
-
29
- hasRegisteredNavigationEventListeners = true;
30
- window.addEventListener('popstate', () => notifyLocationChanged(false));
31
- }
32
-
33
- function disableNavigationInterception() {
34
- hasEnabledNavigationInterception = false;
35
- }
36
-
37
- function enableNavigationInterception() {
38
- hasEnabledNavigationInterception = true;
39
- }
40
-
41
- export function attachToEventDelegator(eventDelegator: EventDelegator) {
42
- // We need to respond to clicks on <a> elements *after* the EventDelegator has finished
43
- // running its simulated bubbling process so that we can respect any preventDefault requests.
44
- // So instead of registering our own native event, register using the EventDelegator.
45
- eventDelegator.notifyAfterClick((event) => {
46
- if (!hasEnabledNavigationInterception || !(event.target instanceof HTMLElement)) {
47
- return;
48
- }
49
-
50
- const anc = event.target.closest('[data-blazor-pilet-root], [data-portal-id]');
51
-
52
- if (!(anc instanceof HTMLElement) || !anc.dataset.blazorPiletRoot) {
53
- return;
54
- }
55
-
56
- if (event.button !== 0 || eventHasSpecialKey(event)) {
57
- // Don't stop ctrl/meta-click (etc) from opening links in new tabs/windows
58
- return;
59
- }
60
-
61
- if (event.defaultPrevented) {
62
- return;
63
- }
64
-
65
- // Intercept clicks on all <a> elements where the href is within the <base href> URI space
66
- // We must explicitly check if it has an 'href' attribute, because if it doesn't, the result might be null or an empty string depending on the browser
67
- const anchorTarget = findClosestAncestor(event.target as Element | null, 'A') as HTMLAnchorElement | null;
68
- const hrefAttributeName = 'href';
69
-
70
- if (anchorTarget && anchorTarget.hasAttribute(hrefAttributeName)) {
71
- const targetAttributeValue = anchorTarget.getAttribute('target');
72
- const opensInSameFrame = !targetAttributeValue || targetAttributeValue === '_self';
73
-
74
- if (!opensInSameFrame) {
75
- return;
76
- }
77
-
78
- const href = anchorTarget.getAttribute(hrefAttributeName)!;
79
- const absoluteHref = toAbsoluteUri(href);
80
-
81
- if (isWithinBaseUriSpace(absoluteHref)) {
82
- event.preventDefault();
83
- performInternalNavigation(anchorTarget, absoluteHref, true);
84
- }
85
- }
86
- });
87
- }
88
-
89
- export function navigateTo(uri: string, forceLoad: boolean, replace: boolean = false) {
90
- const absoluteUri = toAbsoluteUri(uri);
91
-
92
- if (!forceLoad && isWithinBaseUriSpace(absoluteUri)) {
93
- // It's an internal URL, so do client-side navigation
94
- performInternalNavigation(document.body, absoluteUri, false, replace);
95
- } else if (forceLoad && location.href === uri) {
96
- // Force-loading the same URL you're already on requires special handling to avoid
97
- // triggering browser-specific behavior issues.
98
- // For details about what this fixes and why, see https://github.com/dotnet/aspnetcore/pull/10839
99
- const temporaryUri = uri + '?';
100
- history.replaceState(null, '', temporaryUri);
101
- location.replace(uri);
102
- } else if (replace) {
103
- history.replaceState(null, '', absoluteUri);
104
- } else {
105
- // It's either an external URL, or forceLoad is requested, so do a full page load
106
- location.href = uri;
107
- }
108
- }
109
-
110
- function performInternalNavigation(
111
- target: HTMLElement,
112
- absoluteInternalHref: string,
113
- interceptedLink: boolean,
114
- replace: boolean = false,
115
- ) {
116
- const path = getRelativeUri(absoluteInternalHref);
117
- window['Blazor'].emitNavigateEvent(target, path, replace);
118
- notifyLocationChanged(interceptedLink);
119
- }
120
-
121
- async function notifyLocationChanged(interceptedLink: boolean) {
122
- if (notifyLocationChangedCallback) {
123
- await notifyLocationChangedCallback(location.href, interceptedLink);
124
- }
125
- }
126
-
127
- let testAnchor: HTMLAnchorElement;
128
- export function toAbsoluteUri(relativeUri: string) {
129
- testAnchor = testAnchor || document.createElement('a');
130
- testAnchor.href = relativeUri;
131
- return testAnchor.href;
132
- }
133
-
134
- function findClosestAncestor(element: Element | null, tagName: string) {
135
- return !element ? null : element.tagName === tagName ? element : findClosestAncestor(element.parentElement, tagName);
136
- }
137
-
138
- function getBaseUri() {
139
- // TODO: Might baseURI really be null?
140
- return toBaseUriWithTrailingSlash(document.baseURI);
141
- }
142
-
143
- function getRelativeUri(href: string) {
144
- return href.substr(getBaseUri().length);
145
- }
146
-
147
- function isWithinBaseUriSpace(href: string) {
148
- return href.startsWith(getBaseUri());
149
- }
150
-
151
- function toBaseUriWithTrailingSlash(baseUri: string) {
152
- return baseUri.substr(0, baseUri.lastIndexOf('/') + 1);
153
- }
154
-
155
- function eventHasSpecialKey(event: MouseEvent) {
156
- return event.ctrlKey || event.shiftKey || event.altKey || event.metaKey;
157
- }
@@ -1,5 +0,0 @@
1
- import '@dotnet/jsinterop';
2
-
3
- window['Blazor'] = {
4
- _internal: {},
5
- };
@@ -1,170 +0,0 @@
1
- import './globals';
2
- import { setPlatform } from './Environment';
3
- import { Pointer } from './Platform/Platform';
4
- import { navigationManager, navigateTo } from './Services/NavigationManager';
5
- import { BootJsonData, BootConfigResult } from './Platform/BootConfig';
6
- import { monoPlatform } from './Platform/Mono/MonoPlatform';
7
- import { WebAssemblyResourceLoader } from './Platform/WebAssemblyResourceLoader';
8
- import { WebAssemblyConfigLoader } from './Platform/WebAssemblyConfigLoader';
9
- import { renderBatch } from './Rendering/Renderer';
10
- import { SharedMemoryRenderBatch } from './Rendering/RenderBatch/SharedMemoryRenderBatch';
11
- import { attachRootComponentToElement } from './Rendering/Renderer';
12
- import { setEventDispatcher } from './Rendering/RendererEventDispatcher';
13
-
14
- export { BootJsonData };
15
-
16
- export const eventNames = {
17
- render: 'render-blazor-extension',
18
- navigate: 'navigate-blazor',
19
- };
20
-
21
- const coreLib = 'Piral.Blazor.Core';
22
- const eventParents: Array<HTMLElement> = [];
23
-
24
- function isRooted(target: HTMLElement) {
25
- let parent = target.parentElement;
26
-
27
- while (parent) {
28
- if (parent.id === 'blazor-root') {
29
- return true;
30
- }
31
-
32
- parent = parent.parentElement;
33
- }
34
-
35
- return false;
36
- }
37
-
38
- function findTarget(target: HTMLElement = document.body) {
39
- if (eventParents.length === 0) {
40
- return target;
41
- } else if (target === document.body) {
42
- return eventParents[0];
43
- } else {
44
- return target;
45
- }
46
- }
47
-
48
- // tslint:disable:no-string-literal
49
-
50
- export function activate(moduleName: string, props: any) {
51
- return DotNet.invokeMethodAsync<string>(coreLib, 'Activate', moduleName, props);
52
- }
53
-
54
- export function deactivate(moduleName: string, referenceId: string) {
55
- return DotNet.invokeMethodAsync<string>(coreLib, 'Deactivate', moduleName, referenceId);
56
- }
57
-
58
- export function addReference(blob: Blob) {
59
- return new Promise((resolve) => {
60
- const reader = new FileReader();
61
- reader.onload = () => {
62
- const data = reader.result.toString().replace(/^data:.+;base64,/, '');
63
- DotNet.invokeMethodAsync(coreLib, 'LoadComponentsFromLibrary', data).then(resolve);
64
- };
65
- reader.readAsDataURL(blob);
66
- });
67
- }
68
-
69
- export function removeReference(name: string) {
70
- return DotNet.invokeMethodAsync(coreLib, 'UnloadComponentsFromLibrary', name);
71
- }
72
-
73
- export function attachEvents(
74
- host: HTMLElement,
75
- render: (ev: CustomEvent) => void,
76
- navigate: (ev: CustomEvent) => void,
77
- ) {
78
- eventParents.push(host);
79
- host.addEventListener(eventNames.render, render, false);
80
- host.addEventListener(eventNames.navigate, navigate, false);
81
- return () => {
82
- eventParents.splice(eventParents.indexOf(host), 1);
83
- host.removeEventListener(eventNames.render, render, false);
84
- host.removeEventListener(eventNames.navigate, navigate, false);
85
- };
86
- }
87
-
88
- export async function initialize(data: BootJsonData) {
89
- data.cacheBootResources = false;
90
-
91
- setEventDispatcher((eventDescriptor, eventArgs) =>
92
- DotNet.invokeMethodAsync(
93
- 'Microsoft.AspNetCore.Components.WebAssembly',
94
- 'DispatchEvent',
95
- eventDescriptor,
96
- JSON.stringify(eventArgs),
97
- ),
98
- );
99
-
100
- // Configure environment for execution under Mono WebAssembly with shared-memory rendering
101
- const platform = setPlatform(monoPlatform);
102
-
103
- Object.assign(window['Blazor'], {
104
- platform,
105
- emitRenderEvent(source: HTMLElement, name: string) {
106
- const target = findTarget(source);
107
- const eventInit = {
108
- bubbles: true,
109
- detail: {
110
- target,
111
- props: {
112
- name,
113
- },
114
- },
115
- };
116
- const delayEmit = () =>
117
- requestAnimationFrame(() => {
118
- if (!isRooted(target)) {
119
- target.dispatchEvent(new CustomEvent(eventNames.render, eventInit));
120
- } else {
121
- delayEmit();
122
- }
123
- });
124
- delayEmit();
125
- },
126
- emitNavigateEvent(source: HTMLElement, to: string, replace = false, state?: any) {
127
- findTarget(source).dispatchEvent(
128
- new CustomEvent(eventNames.navigate, {
129
- bubbles: true,
130
- detail: {
131
- to,
132
- replace,
133
- state,
134
- },
135
- }),
136
- );
137
- },
138
- });
139
-
140
- Object.assign(window['Blazor']._internal, {
141
- navigateTo,
142
- navigationManager: {
143
- ...navigationManager,
144
- getUnmarshalledBaseURI: () => BINDING.js_string_to_mono_string(navigationManager.getBaseURI()),
145
- getUnmarshalledLocationHref: () => BINDING.js_string_to_mono_string(navigationManager.getLocationHref()),
146
- },
147
- attachRootComponentToElement,
148
- renderBatch(browserRendererId: number, batchAddress: Pointer) {
149
- renderBatch(browserRendererId, new SharedMemoryRenderBatch(batchAddress));
150
- },
151
- });
152
-
153
- const bootConfigResult = new BootConfigResult(data);
154
-
155
- const [resourceLoader] = await Promise.all([
156
- WebAssemblyResourceLoader.initAsync(bootConfigResult.bootConfig, {}),
157
- WebAssemblyConfigLoader.initAsync(bootConfigResult),
158
- ]);
159
-
160
- try {
161
- await platform.start(resourceLoader);
162
- platform.callEntryPoint(resourceLoader.bootConfig.entryAssembly);
163
- } catch (ex) {
164
- throw new Error(`Failed to start platform. Reason: ${ex}`);
165
- }
166
-
167
- return {
168
- platform,
169
- };
170
- }