@lynx-js/web-core-wasm 0.0.0 → 0.0.2

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 (192) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/{LICENSE → LICENSE.txt} +1 -1
  3. package/Notice.txt +1 -0
  4. package/README.md +1 -0
  5. package/binary/client/client.d.ts +272 -0
  6. package/binary/client/client.js +1297 -0
  7. package/binary/client/client_bg.wasm +0 -0
  8. package/binary/client/client_bg.wasm.d.ts +71 -0
  9. package/binary/client/client_debug.d.ts +272 -0
  10. package/binary/client/client_debug.js +1297 -0
  11. package/binary/client/client_debug_bg.wasm +0 -0
  12. package/binary/client/client_debug_bg.wasm.d.ts +71 -0
  13. package/binary/encode/encode.d.ts +118 -0
  14. package/binary/encode/encode.js +542 -0
  15. package/binary/encode/encode_bg.wasm +0 -0
  16. package/binary/encode/encode_bg.wasm.d.ts +30 -0
  17. package/binary/encode/encode_debug.d.ts +118 -0
  18. package/binary/encode/encode_debug.js +542 -0
  19. package/binary/encode/encode_debug_bg.wasm +0 -0
  20. package/binary/encode/encode_debug_bg.wasm.d.ts +30 -0
  21. package/binary/encode/package.json +4 -0
  22. package/css/in_shadow.css +10 -0
  23. package/css/index.css +119 -0
  24. package/dist/client/LynxCrossThreadContext.d.ts +22 -0
  25. package/dist/client/LynxCrossThreadContext.js +44 -0
  26. package/dist/client/background/background-apis/createBackgroundLynx.d.ts +25 -0
  27. package/dist/client/background/background-apis/createBackgroundLynx.js +41 -0
  28. package/dist/client/background/background-apis/createChunkLoading.d.ts +7 -0
  29. package/dist/client/background/background-apis/createChunkLoading.js +66 -0
  30. package/dist/client/background/background-apis/createElement.d.ts +5 -0
  31. package/dist/client/background/background-apis/createElement.js +18 -0
  32. package/dist/client/background/background-apis/createNapiLoader.d.ts +5 -0
  33. package/dist/client/background/background-apis/createNapiLoader.js +23 -0
  34. package/dist/client/background/background-apis/createNativeApp.d.ts +4 -0
  35. package/dist/client/background/background-apis/createNativeApp.js +98 -0
  36. package/dist/client/background/background-apis/createNativeModules.d.ts +3 -0
  37. package/dist/client/background/background-apis/createNativeModules.js +33 -0
  38. package/dist/client/background/background-apis/createPerformanceApis.d.ts +3 -0
  39. package/dist/client/background/background-apis/createPerformanceApis.js +47 -0
  40. package/dist/client/background/background-apis/createTimingSystem.d.ts +8 -0
  41. package/dist/client/background/background-apis/createTimingSystem.js +86 -0
  42. package/dist/client/background/background-apis/crossThreadHandlers/createGetCustomSection.d.ts +3 -0
  43. package/dist/client/background/background-apis/crossThreadHandlers/createGetCustomSection.js +14 -0
  44. package/dist/client/background/background-apis/crossThreadHandlers/createGetPathInfo.d.ts +3 -0
  45. package/dist/client/background/background-apis/crossThreadHandlers/createGetPathInfo.js +23 -0
  46. package/dist/client/background/background-apis/crossThreadHandlers/createInvokeUIMethod.d.ts +3 -0
  47. package/dist/client/background/background-apis/crossThreadHandlers/createInvokeUIMethod.js +24 -0
  48. package/dist/client/background/background-apis/crossThreadHandlers/createJSObjectDestructionObserver.d.ts +2 -0
  49. package/dist/client/background/background-apis/crossThreadHandlers/createJSObjectDestructionObserver.js +12 -0
  50. package/dist/client/background/background-apis/crossThreadHandlers/registerDisposeHandler.d.ts +3 -0
  51. package/dist/client/background/background-apis/crossThreadHandlers/registerDisposeHandler.js +9 -0
  52. package/dist/client/background/background-apis/crossThreadHandlers/registerPublicComponentEventHandler.d.ts +3 -0
  53. package/dist/client/background/background-apis/crossThreadHandlers/registerPublicComponentEventHandler.js +8 -0
  54. package/dist/client/background/background-apis/crossThreadHandlers/registerPublishEventHandler.d.ts +3 -0
  55. package/dist/client/background/background-apis/crossThreadHandlers/registerPublishEventHandler.js +8 -0
  56. package/dist/client/background/background-apis/crossThreadHandlers/registerSendGlobalEvent.d.ts +3 -0
  57. package/dist/client/background/background-apis/crossThreadHandlers/registerSendGlobalEvent.js +10 -0
  58. package/dist/client/background/background-apis/crossThreadHandlers/registerUpdateDataHandler.d.ts +3 -0
  59. package/dist/client/background/background-apis/crossThreadHandlers/registerUpdateDataHandler.js +5 -0
  60. package/dist/client/background/background-apis/crossThreadHandlers/registerUpdateGlobalPropsHandler.d.ts +3 -0
  61. package/dist/client/background/background-apis/crossThreadHandlers/registerUpdateGlobalPropsHandler.js +5 -0
  62. package/dist/client/background/background-apis/crossThreadHandlers/registerUpdateI18nResource.d.ts +3 -0
  63. package/dist/client/background/background-apis/crossThreadHandlers/registerUpdateI18nResource.js +9 -0
  64. package/dist/client/background/background-apis/startBackgroundThread.d.ts +2 -0
  65. package/dist/client/background/background-apis/startBackgroundThread.js +42 -0
  66. package/dist/client/background/index.d.ts +1 -0
  67. package/dist/client/background/index.js +15 -0
  68. package/dist/client/decodeWorker/cssLoader.d.ts +12 -0
  69. package/dist/client/decodeWorker/cssLoader.js +95 -0
  70. package/dist/client/decodeWorker/decode.worker.d.ts +1 -0
  71. package/dist/client/decodeWorker/decode.worker.js +339 -0
  72. package/dist/client/decodeWorker/types.d.ts +32 -0
  73. package/dist/client/decodeWorker/types.js +2 -0
  74. package/dist/client/endpoints.d.ts +54 -0
  75. package/dist/client/endpoints.js +38 -0
  76. package/dist/client/index.d.ts +3 -0
  77. package/dist/client/index.js +3 -0
  78. package/dist/client/mainthread/Background.d.ts +30 -0
  79. package/dist/client/mainthread/Background.js +209 -0
  80. package/dist/client/mainthread/ExposureServices.d.ts +11 -0
  81. package/dist/client/mainthread/ExposureServices.js +211 -0
  82. package/dist/client/mainthread/I18n.d.ts +9 -0
  83. package/dist/client/mainthread/I18n.js +44 -0
  84. package/dist/client/mainthread/LynxView.d.ts +170 -0
  85. package/dist/client/mainthread/LynxView.js +367 -0
  86. package/dist/client/mainthread/LynxViewInstance.d.ts +52 -0
  87. package/dist/client/mainthread/LynxViewInstance.js +188 -0
  88. package/dist/client/mainthread/TemplateManager.d.ts +10 -0
  89. package/dist/client/mainthread/TemplateManager.js +233 -0
  90. package/dist/client/mainthread/createIFrameRealm.d.ts +6 -0
  91. package/dist/client/mainthread/createIFrameRealm.js +68 -0
  92. package/dist/client/mainthread/createMainThreadGlobalAPIs.d.ts +3 -0
  93. package/dist/client/mainthread/createMainThreadGlobalAPIs.js +82 -0
  94. package/dist/client/mainthread/crossThreadHandlers/queryNodes.d.ts +3 -0
  95. package/dist/client/mainthread/crossThreadHandlers/queryNodes.js +74 -0
  96. package/dist/client/mainthread/crossThreadHandlers/registerGetPathInfoHandler.d.ts +3 -0
  97. package/dist/client/mainthread/crossThreadHandlers/registerGetPathInfoHandler.js +51 -0
  98. package/dist/client/mainthread/crossThreadHandlers/registerInvokeUIMethodHandler.d.ts +3 -0
  99. package/dist/client/mainthread/crossThreadHandlers/registerInvokeUIMethodHandler.js +49 -0
  100. package/dist/client/mainthread/crossThreadHandlers/registerNapiModulesCallHandler.d.ts +3 -0
  101. package/dist/client/mainthread/crossThreadHandlers/registerNapiModulesCallHandler.js +8 -0
  102. package/dist/client/mainthread/crossThreadHandlers/registerNativeModulesCallHandler.d.ts +3 -0
  103. package/dist/client/mainthread/crossThreadHandlers/registerNativeModulesCallHandler.js +7 -0
  104. package/dist/client/mainthread/crossThreadHandlers/registerReloadHandler.d.ts +3 -0
  105. package/dist/client/mainthread/crossThreadHandlers/registerReloadHandler.js +10 -0
  106. package/dist/client/mainthread/crossThreadHandlers/registerSelectComponentHandler.d.ts +3 -0
  107. package/dist/client/mainthread/crossThreadHandlers/registerSelectComponentHandler.js +20 -0
  108. package/dist/client/mainthread/crossThreadHandlers/registerSetNativePropsHandler.d.ts +3 -0
  109. package/dist/client/mainthread/crossThreadHandlers/registerSetNativePropsHandler.js +28 -0
  110. package/dist/client/mainthread/crossThreadHandlers/registerTriggerComponentEventHandler.d.ts +3 -0
  111. package/dist/client/mainthread/crossThreadHandlers/registerTriggerComponentEventHandler.js +12 -0
  112. package/dist/client/mainthread/crossThreadHandlers/registerTriggerElementMethodEndpointHandler.d.ts +3 -0
  113. package/dist/client/mainthread/crossThreadHandlers/registerTriggerElementMethodEndpointHandler.js +29 -0
  114. package/dist/client/mainthread/elementAPIs/WASMJSBinding.d.ts +32 -0
  115. package/dist/client/mainthread/elementAPIs/WASMJSBinding.js +117 -0
  116. package/dist/client/mainthread/elementAPIs/createCrossThreadEvent.d.ts +2 -0
  117. package/dist/client/mainthread/elementAPIs/createCrossThreadEvent.js +77 -0
  118. package/dist/client/mainthread/elementAPIs/createElementAPI.d.ts +3 -0
  119. package/dist/client/mainthread/elementAPIs/createElementAPI.js +322 -0
  120. package/dist/client/mainthread/elementAPIs/index.d.ts +2 -0
  121. package/dist/client/mainthread/elementAPIs/index.js +3 -0
  122. package/dist/client/mainthread/elementAPIs/pureElementPAPIs.d.ts +26 -0
  123. package/dist/client/mainthread/elementAPIs/pureElementPAPIs.js +85 -0
  124. package/dist/client/mainthread/utils/convertLengthToPx.d.ts +1 -0
  125. package/dist/client/mainthread/utils/convertLengthToPx.js +25 -0
  126. package/dist/client/wasm.d.ts +3 -0
  127. package/dist/client/wasm.js +38 -0
  128. package/dist/client/webElementsDynamicLoader.d.ts +1 -0
  129. package/dist/client/webElementsDynamicLoader.js +11 -0
  130. package/dist/client_prod/static/css/async/web-elements.css +1 -0
  131. package/dist/client_prod/static/css/client.css +1 -0
  132. package/dist/client_prod/static/js/async/lynx-core-chunk.js +3 -0
  133. package/dist/client_prod/static/js/async/web-core-main-chunk.js +1 -0
  134. package/dist/client_prod/static/js/async/web-core-template-loader-thread.js +8 -0
  135. package/dist/client_prod/static/js/async/web-core-worker-chunk.js +1 -0
  136. package/dist/client_prod/static/js/async/web-elements.js +309 -0
  137. package/dist/client_prod/static/js/client.js +2 -0
  138. package/dist/client_prod/static/wasm/a156b496.module.wasm +0 -0
  139. package/dist/constants.d.ts +58 -0
  140. package/dist/constants.js +114 -0
  141. package/dist/encode/encodeCSS.d.ts +3 -0
  142. package/dist/encode/encodeCSS.js +99 -0
  143. package/dist/encode/index.d.ts +1 -0
  144. package/dist/encode/index.js +7 -0
  145. package/dist/encode/webEncoder.d.ts +21 -0
  146. package/dist/encode/webEncoder.js +110 -0
  147. package/dist/types/BTSChunk.d.ts +3 -0
  148. package/dist/types/BTSChunk.js +5 -0
  149. package/dist/types/Cloneable.d.ts +2 -0
  150. package/dist/types/Cloneable.js +2 -0
  151. package/dist/types/DecodedTemplate.d.ts +7 -0
  152. package/dist/types/DecodedTemplate.js +7 -0
  153. package/dist/types/Element.d.ts +35 -0
  154. package/dist/types/Element.js +5 -0
  155. package/dist/types/ElementTemplateData.d.ts +15 -0
  156. package/dist/types/ElementTemplateData.js +7 -0
  157. package/dist/types/EventType.d.ts +56 -0
  158. package/dist/types/EventType.js +5 -0
  159. package/dist/types/I18nTypes.d.ts +21 -0
  160. package/dist/types/I18nTypes.js +2 -0
  161. package/dist/types/IElementPAPI.d.ts +182 -0
  162. package/dist/types/IElementPAPI.js +2 -0
  163. package/dist/types/IMtsBinding.d.ts +14 -0
  164. package/dist/types/IMtsBinding.js +7 -0
  165. package/dist/types/JSRealm.d.ts +5 -0
  166. package/dist/types/JSRealm.js +7 -0
  167. package/dist/types/LynxContextEventTarget.d.ts +12 -0
  168. package/dist/types/LynxContextEventTarget.js +5 -0
  169. package/dist/types/MainThreadLynx.d.ts +15 -0
  170. package/dist/types/MainThreadLynx.js +2 -0
  171. package/dist/types/NapiModules.d.ts +9 -0
  172. package/dist/types/NapiModules.js +5 -0
  173. package/dist/types/NativeApp.d.ts +120 -0
  174. package/dist/types/NativeApp.js +5 -0
  175. package/dist/types/NativeModules.d.ts +2 -0
  176. package/dist/types/NativeModules.js +5 -0
  177. package/dist/types/PageConfig.d.ts +9 -0
  178. package/dist/types/PageConfig.js +2 -0
  179. package/dist/types/ProcessDataCallback.d.ts +1 -0
  180. package/dist/types/ProcessDataCallback.js +2 -0
  181. package/dist/types/TimingAPIs.d.ts +32 -0
  182. package/dist/types/TimingAPIs.js +5 -0
  183. package/dist/types/UpdateDataOptions.d.ts +8 -0
  184. package/dist/types/UpdateDataOptions.js +6 -0
  185. package/dist/types/WorkerStartMessage.d.ts +14 -0
  186. package/dist/types/WorkerStartMessage.js +5 -0
  187. package/dist/types/index.d.ts +20 -0
  188. package/dist/types/index.js +7 -0
  189. package/eslint.config.js +34 -0
  190. package/package.json +86 -4
  191. package/index.js +0 -1
  192. package/selfIdentity.plist +0 -0
@@ -0,0 +1,51 @@
1
+ // Copyright 2023 The Lynx Authors. All rights reserved.
2
+ // Licensed under the Apache License Version 2.0 that can be found in the
3
+ // LICENSE file in the root directory of this source tree.
4
+ import { queryNodes } from './queryNodes.js';
5
+ import { getPathInfoEndpoint } from '../../endpoints.js';
6
+ import { ErrorCode } from '../../../constants.js';
7
+ export function registerGetPathInfoHandler(rpc, lynxViewInstance) {
8
+ rpc.registerHandler(getPathInfoEndpoint, (type, identifier, component_id, first_only, root_unique_id) => {
9
+ let code = ErrorCode.UNKNOWN;
10
+ let data;
11
+ queryNodes(lynxViewInstance, type, identifier, component_id, first_only, root_unique_id, (element) => {
12
+ try {
13
+ const path = [];
14
+ let currentNode = element;
15
+ while (currentNode) {
16
+ const parent = currentNode.parentElement;
17
+ const parentNodeForChildren = parent ?? lynxViewInstance.rootDom;
18
+ const children = Array.from(parentNodeForChildren.children);
19
+ const tag = lynxViewInstance.mainThreadGlobalThis.__GetTag(currentNode);
20
+ const index = tag === 'page' ? 0 : children.indexOf(currentNode);
21
+ const id = currentNode.getAttribute('id') || undefined;
22
+ const className = currentNode.getAttribute('class') || undefined;
23
+ const dataSet = lynxViewInstance.mainThreadGlobalThis
24
+ .__GetDataset(currentNode);
25
+ path.push({
26
+ tag,
27
+ id,
28
+ class: className,
29
+ dataSet,
30
+ index,
31
+ });
32
+ if (tag === 'page'
33
+ || currentNode.parentNode === lynxViewInstance.rootDom) {
34
+ break;
35
+ }
36
+ currentNode = parent;
37
+ }
38
+ data = { path };
39
+ code = ErrorCode.SUCCESS;
40
+ }
41
+ catch (e) {
42
+ console.error('[lynx-web] getPathInfo: failed with', e, element);
43
+ code = ErrorCode.UNKNOWN;
44
+ }
45
+ }, (error) => {
46
+ code = error;
47
+ });
48
+ return { code, data };
49
+ });
50
+ }
51
+ //# sourceMappingURL=registerGetPathInfoHandler.js.map
@@ -0,0 +1,3 @@
1
+ import type { Rpc } from '@lynx-js/web-worker-rpc';
2
+ import type { LynxViewInstance } from '../LynxViewInstance.js';
3
+ export declare function registerInvokeUIMethodHandler(rpc: Rpc, lynxViewInstance: LynxViewInstance): void;
@@ -0,0 +1,49 @@
1
+ import { queryNodes } from './queryNodes.js';
2
+ import { ErrorCode } from '../../../constants.js';
3
+ import { invokeUIMethodEndpoint } from '../../endpoints.js';
4
+ const methodAlias = {
5
+ 'boundingClientRect': (element) => {
6
+ const rect = element.getBoundingClientRect();
7
+ return {
8
+ id: element.id,
9
+ width: rect.width,
10
+ height: rect.height,
11
+ left: rect.left,
12
+ right: rect.right,
13
+ top: rect.top,
14
+ bottom: rect.bottom,
15
+ };
16
+ },
17
+ };
18
+ export function registerInvokeUIMethodHandler(rpc, lynxViewInstance) {
19
+ rpc.registerHandler(invokeUIMethodEndpoint, (type, identifier, component_id, method, params, root_unique_id) => {
20
+ let code = ErrorCode.UNKNOWN;
21
+ let data = undefined;
22
+ queryNodes(lynxViewInstance, type, identifier, component_id, true, root_unique_id, (element) => {
23
+ try {
24
+ const aliasMethod = methodAlias[method];
25
+ const hasDomMethod = typeof element[method] === 'function';
26
+ if (!aliasMethod && !hasDomMethod) {
27
+ code = ErrorCode.METHOD_NOT_FOUND;
28
+ }
29
+ else {
30
+ if (aliasMethod) {
31
+ data = aliasMethod(element, params);
32
+ }
33
+ else {
34
+ data = element[method](params);
35
+ }
36
+ code = ErrorCode.SUCCESS;
37
+ }
38
+ }
39
+ catch (e) {
40
+ console.error(`[lynx-web] invokeUIMethod: apply method failed with`, e, element);
41
+ code = ErrorCode.PARAM_INVALID;
42
+ }
43
+ }, (error) => {
44
+ code = error;
45
+ });
46
+ return { code, data };
47
+ });
48
+ }
49
+ //# sourceMappingURL=registerInvokeUIMethodHandler.js.map
@@ -0,0 +1,3 @@
1
+ import type { Rpc } from '@lynx-js/web-worker-rpc';
2
+ import type { LynxViewInstance } from '../LynxViewInstance.js';
3
+ export declare function registerNapiModulesCallHandler(rpc: Rpc, lynxViewInstance: LynxViewInstance): void;
@@ -0,0 +1,8 @@
1
+ import { dispatchNapiModuleEndpoint, napiModulesCallEndpoint, } from '../../endpoints.js';
2
+ export function registerNapiModulesCallHandler(rpc, lynxViewInstance) {
3
+ const dispatchNapiModules = rpc.createCall(dispatchNapiModuleEndpoint);
4
+ rpc.registerHandler(napiModulesCallEndpoint, (name, data, moduleName) => {
5
+ return lynxViewInstance.parentDom.onNapiModulesCall?.(name, data, moduleName, dispatchNapiModules);
6
+ });
7
+ }
8
+ //# sourceMappingURL=registerNapiModulesCallHandler.js.map
@@ -0,0 +1,3 @@
1
+ import type { Rpc } from '@lynx-js/web-worker-rpc';
2
+ import type { LynxViewInstance } from '../LynxViewInstance.js';
3
+ export declare function registerNativeModulesCallHandler(rpc: Rpc, lynxViewInstance: LynxViewInstance): void;
@@ -0,0 +1,7 @@
1
+ import { nativeModulesCallEndpoint } from '../../endpoints.js';
2
+ export function registerNativeModulesCallHandler(rpc, lynxViewInstance) {
3
+ rpc.registerHandler(nativeModulesCallEndpoint, (name, data, moduleName) => {
4
+ return lynxViewInstance.parentDom.onNativeModulesCall?.(name, data, moduleName);
5
+ });
6
+ }
7
+ //# sourceMappingURL=registerNativeModulesCallHandler.js.map
@@ -0,0 +1,3 @@
1
+ import type { Rpc } from '@lynx-js/web-worker-rpc';
2
+ import type { LynxViewInstance } from '../LynxViewInstance.js';
3
+ export declare function registerReloadHandler(rpc: Rpc, lynxViewInstance: LynxViewInstance): void;
@@ -0,0 +1,10 @@
1
+ // Copyright 2026 The Lynx Authors. All rights reserved.
2
+ // Licensed under the Apache License Version 2.0 that can be found in the
3
+ // LICENSE file in the root directory of this source tree.
4
+ import { reloadEndpoint } from '../../endpoints.js';
5
+ export function registerReloadHandler(rpc, lynxViewInstance) {
6
+ rpc.registerHandler(reloadEndpoint, () => {
7
+ lynxViewInstance.parentDom.reload();
8
+ });
9
+ }
10
+ //# sourceMappingURL=registerReloadHandler.js.map
@@ -0,0 +1,3 @@
1
+ import type { Rpc } from '@lynx-js/web-worker-rpc';
2
+ import type { LynxViewInstance } from '../LynxViewInstance.js';
3
+ export declare function registerSelectComponentHandler(rpc: Rpc, lynxViewInstance: LynxViewInstance): void;
@@ -0,0 +1,20 @@
1
+ // Copyright 2023 The Lynx Authors. All rights reserved.
2
+ // Licensed under the Apache License Version 2.0 that can be found in the
3
+ // LICENSE file in the root directory of this source tree.
4
+ import { queryNodes } from './queryNodes.js';
5
+ import { selectComponentEndpoint } from '../../endpoints.js';
6
+ import { IdentifierType } from '../../../constants.js';
7
+ export function registerSelectComponentHandler(rpc, lynxViewInstance) {
8
+ rpc.registerHandler(selectComponentEndpoint, (componentId, idSelector, single) => {
9
+ let element = null;
10
+ queryNodes(lynxViewInstance, IdentifierType.ID_SELECTOR, idSelector, componentId === 'card' ? '0' : componentId, single, undefined, (ele) => {
11
+ element = ele;
12
+ });
13
+ if (!element)
14
+ return [];
15
+ return [
16
+ lynxViewInstance.mainThreadGlobalThis.__GetComponentID(element),
17
+ ];
18
+ });
19
+ }
20
+ //# sourceMappingURL=registerSelectComponentHandler.js.map
@@ -0,0 +1,3 @@
1
+ import type { Rpc } from '@lynx-js/web-worker-rpc';
2
+ import type { LynxViewInstance } from '../LynxViewInstance.js';
3
+ export declare function registerNativePropsHandler(rpc: Rpc, lynxViewInstance: LynxViewInstance): void;
@@ -0,0 +1,28 @@
1
+ import { queryNodes } from './queryNodes.js';
2
+ import { setNativePropsEndpoint } from '../../endpoints.js';
3
+ function applyNativeProps(element, nativeProps) {
4
+ for (const key in nativeProps) {
5
+ const value = nativeProps[key];
6
+ if (key === 'text' && element?.tagName === 'X-TEXT') {
7
+ if (element.firstElementChild
8
+ && element.firstElementChild.tagName == 'RAW-TEXT') {
9
+ element = element.firstElementChild;
10
+ }
11
+ }
12
+ if (CSS.supports(key, value)
13
+ && element.style) {
14
+ element.style.setProperty(key, value);
15
+ }
16
+ else {
17
+ element.setAttribute(key, value);
18
+ }
19
+ }
20
+ }
21
+ export function registerNativePropsHandler(rpc, lynxViewInstance) {
22
+ rpc.registerHandler(setNativePropsEndpoint, (type, identifier, component_id, first_only, native_props, root_unique_id) => {
23
+ queryNodes(lynxViewInstance, type, identifier, component_id, first_only, root_unique_id, (element) => {
24
+ applyNativeProps(element, native_props);
25
+ });
26
+ });
27
+ }
28
+ //# sourceMappingURL=registerSetNativePropsHandler.js.map
@@ -0,0 +1,3 @@
1
+ import type { Rpc } from '@lynx-js/web-worker-rpc';
2
+ import type { LynxViewInstance } from '../LynxViewInstance.js';
3
+ export declare function registerTriggerComponentEventHandler(rpc: Rpc, lynxViewInstance: LynxViewInstance): void;
@@ -0,0 +1,12 @@
1
+ import { triggerComponentEventEndpoint } from '../../endpoints.js';
2
+ export function registerTriggerComponentEventHandler(rpc, lynxViewInstance) {
3
+ rpc.registerHandler(triggerComponentEventEndpoint, (id, params) => {
4
+ const componentDom = lynxViewInstance.mtsWasmBinding
5
+ .getElementByComponentId(id);
6
+ componentDom?.dispatchEvent(new CustomEvent(id, {
7
+ ...params.eventOption,
8
+ detail: params.eventDetail,
9
+ }));
10
+ });
11
+ }
12
+ //# sourceMappingURL=registerTriggerComponentEventHandler.js.map
@@ -0,0 +1,3 @@
1
+ import type { Rpc } from '@lynx-js/web-worker-rpc';
2
+ import type { LynxViewInstance } from '../LynxViewInstance.js';
3
+ export declare function registerTriggerElementMethodEndpointHandler(rpc: Rpc, lynxViewInstance: LynxViewInstance): void;
@@ -0,0 +1,29 @@
1
+ import { triggerElementMethodEndpoint } from '../../endpoints.js';
2
+ import { AnimationOperation } from '../../../constants.js';
3
+ export function registerTriggerElementMethodEndpointHandler(rpc, lynxViewInstance) {
4
+ const animationMap = new Map();
5
+ rpc.registerHandler(triggerElementMethodEndpoint, (method, id, options) => {
6
+ if (method === 'animate') {
7
+ switch (options.operation) {
8
+ case AnimationOperation.START:
9
+ animationMap.set(options.id, lynxViewInstance.rootDom.querySelector(id)?.animate(options.keyframes, options.timingOptions));
10
+ break;
11
+ case AnimationOperation.PLAY:
12
+ animationMap.get(options.id)?.play();
13
+ break;
14
+ case AnimationOperation.PAUSE:
15
+ animationMap.get(options.id)?.pause();
16
+ break;
17
+ case AnimationOperation.CANCEL:
18
+ animationMap.get(options.id)?.cancel();
19
+ animationMap.delete(options.id);
20
+ break;
21
+ case AnimationOperation.FINISH:
22
+ animationMap.get(options.id)?.finish();
23
+ animationMap.delete(options.id);
24
+ break;
25
+ }
26
+ }
27
+ });
28
+ }
29
+ //# sourceMappingURL=registerTriggerElementMethodEndpointHandler.js.map
@@ -0,0 +1,32 @@
1
+ import type { LynxCrossThreadEvent, LynxCrossThreadEventTarget, DecoratedHTMLElement, RustMainthreadContextBinding, CloneableObject, MainThreadGlobalThis } from '../../../types/index.js';
2
+ import type { MainThreadWasmContext } from '../../wasm.js';
3
+ import type { BackgroundThread } from '../Background.js';
4
+ import type { ExposureServices } from '../ExposureServices.js';
5
+ export type WASMJSBindingInjectedHandler = {
6
+ rootDom: ShadowRoot;
7
+ backgroundThread: BackgroundThread;
8
+ exposureServices: ExposureServices;
9
+ mainThreadGlobalThis: MainThreadGlobalThis;
10
+ };
11
+ export declare class WASMJSBinding implements RustMainthreadContextBinding {
12
+ #private;
13
+ readonly lynxViewInstance: WASMJSBindingInjectedHandler;
14
+ wasmContext: InstanceType<MainThreadWasmContext> | undefined;
15
+ toBeEnabledElement: Set<HTMLElement>;
16
+ toBeDisabledElement: Set<HTMLElement>;
17
+ constructor(lynxViewInstance: WASMJSBindingInjectedHandler);
18
+ markExposureRelatedElementByUniqueId(element: HTMLElement, toEnable: boolean): void;
19
+ generateTargetObject(element: DecoratedHTMLElement, dataset: CloneableObject): LynxCrossThreadEventTarget;
20
+ getClassList(element: HTMLElement): string[];
21
+ getElementByUniqueId(uniqueId: number): HTMLElement | undefined;
22
+ getElementByComponentId(componentId: string): HTMLElement | undefined;
23
+ runWorklet(handler: {
24
+ value: unknown;
25
+ }, eventObject: LynxCrossThreadEvent, targetUniqueId: number, targetDataset: Record<string, string>, currentTargetUniqueId: number, currentTargetDataset: Record<string, string>): void;
26
+ publishEvent(handlerName: string, parentComponentId: string | undefined, eventObject: LynxCrossThreadEvent, targetUniqueId: number, targetDataset: CloneableObject, currentTargetUniqueId: number, currentTargetDataset: CloneableObject): void;
27
+ addEventListener(eventName: string): void;
28
+ postTimingFlags(flags: string[], pipelineId?: string): void;
29
+ updateExposureStatus(enabledExposureElements: HTMLElement[], disabledExposureElements: HTMLElement[]): void;
30
+ enableElementEvent(element: HTMLElement, eventName: string): void;
31
+ disableElementEvent(element: HTMLElement, eventName: string): void;
32
+ }
@@ -0,0 +1,117 @@
1
+ import { createCrossThreadEvent } from './createCrossThreadEvent.js';
2
+ import { LynxEventNameToW3cCommon, uniqueIdSymbol, } from '../../../constants.js';
3
+ import { __GetElementUniqueID } from './pureElementPAPIs.js';
4
+ export class WASMJSBinding {
5
+ lynxViewInstance;
6
+ wasmContext;
7
+ toBeEnabledElement = new Set();
8
+ toBeDisabledElement = new Set();
9
+ constructor(lynxViewInstance) {
10
+ this.lynxViewInstance = lynxViewInstance;
11
+ }
12
+ markExposureRelatedElementByUniqueId(element, toEnable) {
13
+ if (element) {
14
+ if (toEnable) {
15
+ this.toBeDisabledElement.delete(element);
16
+ this.toBeEnabledElement.add(element);
17
+ }
18
+ else {
19
+ this.toBeEnabledElement.delete(element);
20
+ this.toBeDisabledElement.add(element);
21
+ }
22
+ }
23
+ }
24
+ generateTargetObject(element, dataset) {
25
+ const uniqueId = element[uniqueIdSymbol];
26
+ return {
27
+ dataset: Object.assign(Object.create(null), dataset),
28
+ id: element.id || null,
29
+ uniqueId,
30
+ };
31
+ }
32
+ getClassList(element) {
33
+ return [...element.classList];
34
+ }
35
+ getElementByUniqueId(uniqueId) {
36
+ return this.wasmContext?.get_dom_by_unique_id(uniqueId);
37
+ }
38
+ getElementByComponentId(componentId) {
39
+ const uniqueId = this.wasmContext?.get_unique_id_by_component_id(componentId);
40
+ if (uniqueId != undefined) {
41
+ return this.getElementByUniqueId(uniqueId);
42
+ }
43
+ return undefined;
44
+ }
45
+ runWorklet(handler, eventObject, targetUniqueId, targetDataset, currentTargetUniqueId, currentTargetDataset) {
46
+ const target = this.getElementByUniqueId(targetUniqueId);
47
+ const currentTarget = this.getElementByUniqueId(currentTargetUniqueId);
48
+ eventObject.target = this.generateTargetObject(target, targetDataset);
49
+ eventObject.currentTarget = this.generateTargetObject(currentTarget, currentTargetDataset);
50
+ // @ts-expect-error
51
+ eventObject.target.elementRefptr = target;
52
+ // @ts-expect-error
53
+ eventObject.currentTarget.elementRefptr = currentTarget;
54
+ this.lynxViewInstance.mainThreadGlobalThis.runWorklet?.(handler.value, [
55
+ eventObject,
56
+ ]);
57
+ }
58
+ publishEvent(handlerName, parentComponentId, eventObject, targetUniqueId, targetDataset, currentTargetUniqueId, currentTargetDataset) {
59
+ const target = this.getElementByUniqueId(targetUniqueId);
60
+ const currentTarget = this.getElementByUniqueId(currentTargetUniqueId);
61
+ eventObject.target = this.generateTargetObject(target, targetDataset);
62
+ eventObject.currentTarget = this.generateTargetObject(currentTarget, currentTargetDataset);
63
+ if (parentComponentId) {
64
+ this.lynxViewInstance?.backgroundThread.publicComponentEvent(parentComponentId, handlerName, eventObject);
65
+ }
66
+ else {
67
+ this.lynxViewInstance.backgroundThread.publishEvent(handlerName, eventObject);
68
+ }
69
+ }
70
+ #commonEventHandler = (event) => {
71
+ const target = event.target;
72
+ let bubblePath = new Uint32Array(32);
73
+ let bubblePathLength = 0;
74
+ bubblePath;
75
+ let currentTarget = target;
76
+ while (currentTarget) {
77
+ if (currentTarget === this.lynxViewInstance.rootDom) {
78
+ break;
79
+ }
80
+ const uniqueId = __GetElementUniqueID(currentTarget);
81
+ bubblePath[bubblePathLength++] = uniqueId;
82
+ if (bubblePathLength >= bubblePath.length) {
83
+ const newBubblePath = new Uint32Array(bubblePath.length * 2);
84
+ newBubblePath.set(bubblePath);
85
+ bubblePath = newBubblePath;
86
+ }
87
+ currentTarget = currentTarget.parentElement;
88
+ }
89
+ const eventObject = createCrossThreadEvent(event);
90
+ this.wasmContext?.common_event_handler(eventObject, bubblePath.slice(0, bubblePathLength), eventObject.type);
91
+ };
92
+ addEventListener(eventName) {
93
+ this.lynxViewInstance.rootDom.addEventListener(LynxEventNameToW3cCommon[eventName] ?? eventName, this.#commonEventHandler, {
94
+ passive: true,
95
+ capture: true,
96
+ });
97
+ }
98
+ postTimingFlags(flags, pipelineId) {
99
+ this.lynxViewInstance.backgroundThread.postTimingFlags(flags, pipelineId);
100
+ }
101
+ updateExposureStatus(enabledExposureElements, disabledExposureElements) {
102
+ this.lynxViewInstance.exposureServices.updateExposureStatus(enabledExposureElements, disabledExposureElements);
103
+ }
104
+ enableElementEvent(element, eventName) {
105
+ if (element) {
106
+ // @ts-expect-error
107
+ element.enableEvent?.(LynxEventNameToW3cCommon[eventName] ?? eventName);
108
+ }
109
+ }
110
+ disableElementEvent(element, eventName) {
111
+ if (element) {
112
+ // @ts-expect-error
113
+ element.disableEvent?.(LynxEventNameToW3cCommon[eventName] ?? eventName);
114
+ }
115
+ }
116
+ }
117
+ //# sourceMappingURL=WASMJSBinding.js.map
@@ -0,0 +1,2 @@
1
+ import type { LynxCrossThreadEvent, MinimalRawEventObject } from '../../../types/index.js';
2
+ export declare function createCrossThreadEvent(domEvent: MinimalRawEventObject): LynxCrossThreadEvent;
@@ -0,0 +1,77 @@
1
+ import { W3cEventNameToLynx } from '../../../constants.js';
2
+ function toCloneableObject(obj) {
3
+ const cloneableObj = {};
4
+ for (const key in obj) {
5
+ const value = obj[key];
6
+ if (typeof value === 'boolean' || typeof value === 'number'
7
+ || typeof value === 'string' || value === null) {
8
+ cloneableObj[key] = value;
9
+ }
10
+ }
11
+ return cloneableObj;
12
+ }
13
+ export function createCrossThreadEvent(domEvent) {
14
+ const type = domEvent.type;
15
+ const params = {};
16
+ const isTrusted = domEvent.isTrusted;
17
+ const otherProperties = {};
18
+ let detail = domEvent.detail ?? {};
19
+ if (type.match(/^transition/)) {
20
+ Object.assign(params, {
21
+ 'animation_type': 'keyframe-animation',
22
+ 'animation_name': domEvent.propertyName,
23
+ new_animator: true, // we support the new_animator only
24
+ });
25
+ }
26
+ else if (type.match(/animation/)) {
27
+ Object.assign(params, {
28
+ 'animation_type': 'keyframe-animation',
29
+ 'animation_name': domEvent.animationName,
30
+ new_animator: true, // we support the new_animator only
31
+ });
32
+ }
33
+ else if (type.startsWith('touch')) {
34
+ const touchEvent = domEvent;
35
+ const touch = [...touchEvent.touches];
36
+ const targetTouches = [...touchEvent.targetTouches];
37
+ const changedTouches = [...touchEvent.changedTouches];
38
+ Object.assign(otherProperties, {
39
+ touches: isTrusted ? touch.map(toCloneableObject) : touch,
40
+ targetTouches: isTrusted
41
+ ? targetTouches.map(toCloneableObject)
42
+ : targetTouches,
43
+ changedTouches: isTrusted
44
+ ? changedTouches.map(toCloneableObject)
45
+ : changedTouches,
46
+ });
47
+ }
48
+ else if (type.startsWith('mouse')) {
49
+ const mouseEvent = domEvent;
50
+ Object.assign(otherProperties, {
51
+ button: mouseEvent.button,
52
+ buttons: mouseEvent.buttons,
53
+ x: mouseEvent.x,
54
+ y: mouseEvent.y,
55
+ pageX: mouseEvent.pageX,
56
+ pageY: mouseEvent.pageY,
57
+ clientX: mouseEvent.clientX,
58
+ clientY: mouseEvent.clientY,
59
+ });
60
+ }
61
+ else if (type === 'click') {
62
+ detail = {
63
+ x: domEvent.x,
64
+ y: domEvent.y,
65
+ };
66
+ }
67
+ const lynxEventName = W3cEventNameToLynx[type] ?? type;
68
+ return {
69
+ type: lynxEventName,
70
+ timestamp: domEvent.timeStamp,
71
+ // @ts-expect-error
72
+ detail,
73
+ params,
74
+ ...otherProperties,
75
+ };
76
+ }
77
+ //# sourceMappingURL=createCrossThreadEvent.js.map
@@ -0,0 +1,3 @@
1
+ import type { ElementPAPIs } from '../../../types/index.js';
2
+ import type { WASMJSBinding } from './WASMJSBinding.js';
3
+ export declare function createElementAPI(rootDom: ShadowRoot, mtsBinding: WASMJSBinding, config_enable_css_selector: boolean, config_default_display_linear: boolean, config_default_overflow_visible: boolean): ElementPAPIs;