@lynx-js/web-mainthread-apis 0.13.4 → 0.14.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 (38) hide show
  1. package/CHANGELOG.md +93 -0
  2. package/dist/createMainThreadGlobalThis.d.ts +25 -0
  3. package/dist/createMainThreadGlobalThis.js +454 -0
  4. package/dist/createMainThreadLynx.d.ts +3 -0
  5. package/dist/{MainThreadLynx.js → createMainThreadLynx.js} +2 -5
  6. package/dist/crossThreadHandlers/registerCallLepusMethodHandler.d.ts +2 -3
  7. package/dist/crossThreadHandlers/registerCallLepusMethodHandler.js +1 -1
  8. package/dist/index.d.ts +1 -1
  9. package/dist/index.js +1 -1
  10. package/dist/prepareMainThreadAPIs.d.ts +3 -4
  11. package/dist/prepareMainThreadAPIs.js +30 -16
  12. package/dist/pureElementPAPIs.d.ts +32 -0
  13. package/dist/pureElementPAPIs.js +140 -0
  14. package/dist/utils/createCrossThreadEvent.d.ts +2 -3
  15. package/dist/utils/createCrossThreadEvent.js +23 -12
  16. package/dist/utils/createExposureService.d.ts +2 -2
  17. package/dist/utils/createExposureService.js +4 -5
  18. package/dist/utils/decodeCssInJs.js +1 -1
  19. package/package.json +3 -3
  20. package/dist/MainThreadLynx.d.ts +0 -10
  21. package/dist/MainThreadRuntime.d.ts +0 -92
  22. package/dist/MainThreadRuntime.js +0 -186
  23. package/dist/elementAPI/ElementThreadElement.d.ts +0 -27
  24. package/dist/elementAPI/ElementThreadElement.js +0 -2
  25. package/dist/elementAPI/attributeAndProperty/attributeAndPropertyFunctions.d.ts +0 -30
  26. package/dist/elementAPI/attributeAndProperty/attributeAndPropertyFunctions.js +0 -127
  27. package/dist/elementAPI/domTree/domTreeFunctions.d.ts +0 -11
  28. package/dist/elementAPI/domTree/domTreeFunctions.js +0 -49
  29. package/dist/elementAPI/elementCreating/elementCreatingFunctions.d.ts +0 -15
  30. package/dist/elementAPI/elementCreating/elementCreatingFunctions.js +0 -123
  31. package/dist/elementAPI/event/eventFunctions.d.ts +0 -25
  32. package/dist/elementAPI/event/eventFunctions.js +0 -142
  33. package/dist/elementAPI/style/styleFunctions.d.ts +0 -10
  34. package/dist/elementAPI/style/styleFunctions.js +0 -89
  35. /package/dist/{elementAPI/style → style}/cssPropertyMap.d.ts +0 -0
  36. /package/dist/{elementAPI/style → style}/cssPropertyMap.js +0 -0
  37. /package/dist/{elementAPI/style → style}/transformInlineStyle.d.ts +0 -0
  38. /package/dist/{elementAPI/style → style}/transformInlineStyle.js +0 -0
@@ -1,142 +0,0 @@
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 { componentIdAttribute, LynxEventNameToW3cByTagName, LynxEventNameToW3cCommon, lynxTagAttribute, W3cEventNameToLynx, } from '@lynx-js/web-constants';
5
- import { elementToRuntimeInfoMap, getElementByUniqueId, } from '../../MainThreadRuntime.js';
6
- import { createCrossThreadEvent } from '../../utils/createCrossThreadEvent.js';
7
- export function createEventFunctions(runtime) {
8
- const btsHandler = (event) => {
9
- if (!event.currentTarget) {
10
- return;
11
- }
12
- const currentTarget = event.currentTarget;
13
- const isCapture = event.eventPhase === Event.CAPTURING_PHASE;
14
- const lynxEventName = W3cEventNameToLynx[event.type] ?? event.type;
15
- const runtimeInfo = runtime[elementToRuntimeInfoMap].get(currentTarget);
16
- const hname = isCapture
17
- ? runtimeInfo.eventHandlerMap[lynxEventName]?.capture
18
- ?.handler
19
- : runtimeInfo.eventHandlerMap[lynxEventName]?.bind
20
- ?.handler;
21
- const crossThreadEvent = createCrossThreadEvent(runtime, event, lynxEventName);
22
- if (typeof hname === 'string') {
23
- const parentComponentUniqueId = runtimeInfo.parentComponentUniqueId;
24
- const parentComponent = runtime[getElementByUniqueId](Number(parentComponentUniqueId));
25
- const componentId = parentComponent?.getAttribute(lynxTagAttribute) !== 'page'
26
- ? parentComponent?.getAttribute(componentIdAttribute) ?? undefined
27
- : undefined;
28
- if (componentId) {
29
- runtime.config.callbacks.publicComponentEvent(componentId, hname, crossThreadEvent);
30
- }
31
- else {
32
- runtime.config.callbacks.publishEvent(hname, crossThreadEvent);
33
- }
34
- return true;
35
- }
36
- else if (hname) {
37
- crossThreadEvent.target.elementRefptr =
38
- event.target;
39
- if (crossThreadEvent.currentTarget) {
40
- crossThreadEvent.currentTarget
41
- .elementRefptr = event.currentTarget;
42
- }
43
- runtime.runWorklet?.(hname.value, [crossThreadEvent]);
44
- }
45
- return false;
46
- };
47
- const btsCatchHandler = (event) => {
48
- const handlerTriggered = btsHandler(event);
49
- if (handlerTriggered)
50
- event.stopPropagation();
51
- };
52
- function __AddEvent(element, eventType, eventName, newEventHandler) {
53
- eventName = eventName.toLowerCase();
54
- const isCatch = eventType === 'catchEvent' || eventType === 'capture-catch';
55
- const isCapture = eventType.startsWith('capture');
56
- const runtimeInfo = runtime[elementToRuntimeInfoMap].get(element);
57
- const currentHandler = isCapture
58
- ? runtimeInfo.eventHandlerMap[eventName]?.capture
59
- : runtimeInfo.eventHandlerMap[eventName]?.bind;
60
- const currentRegisteredHandler = isCatch ? btsCatchHandler : btsHandler;
61
- if (currentHandler) {
62
- if (!newEventHandler) {
63
- /**
64
- * remove handler
65
- */
66
- element.removeEventListener(eventName, currentRegisteredHandler, {
67
- capture: isCapture,
68
- });
69
- }
70
- }
71
- else {
72
- /**
73
- * append new handler
74
- */
75
- if (newEventHandler) {
76
- const htmlEventName = LynxEventNameToW3cByTagName[element.tagName]?.[eventName]
77
- ?? LynxEventNameToW3cCommon[eventName] ?? eventName;
78
- element.addEventListener(htmlEventName, currentRegisteredHandler, {
79
- capture: isCapture,
80
- });
81
- }
82
- }
83
- if (newEventHandler) {
84
- const info = {
85
- type: eventType,
86
- handler: newEventHandler,
87
- };
88
- if (!runtimeInfo.eventHandlerMap[eventName]) {
89
- runtimeInfo.eventHandlerMap[eventName] = {
90
- capture: undefined,
91
- bind: undefined,
92
- };
93
- }
94
- if (isCapture) {
95
- runtimeInfo.eventHandlerMap[eventName].capture = info;
96
- }
97
- else {
98
- runtimeInfo.eventHandlerMap[eventName].bind = info;
99
- }
100
- }
101
- }
102
- function __GetEvent(element, eventName, eventType) {
103
- const runtimeInfo = runtime[elementToRuntimeInfoMap].get(element);
104
- eventName = eventName.toLowerCase();
105
- const isCapture = eventType.startsWith('capture');
106
- const handler = isCapture
107
- ? runtimeInfo.eventHandlerMap[eventName]?.capture
108
- : runtimeInfo.eventHandlerMap[eventName]?.bind;
109
- return handler?.handler;
110
- }
111
- function __GetEvents(element) {
112
- const eventHandlerMap = runtime[elementToRuntimeInfoMap].get(element).eventHandlerMap;
113
- const eventInfos = [];
114
- for (const [lynxEventName, info] of Object.entries(eventHandlerMap)) {
115
- for (const atomInfo of [info.bind, info.capture]) {
116
- if (atomInfo) {
117
- const { type, handler } = atomInfo;
118
- if (handler) {
119
- eventInfos.push({
120
- type: type,
121
- name: lynxEventName,
122
- function: handler,
123
- });
124
- }
125
- }
126
- }
127
- }
128
- return eventInfos;
129
- }
130
- function __SetEvents(element, listeners) {
131
- for (const { type: eventType, name: lynxEventName, function: eventHandler } of listeners) {
132
- __AddEvent(element, eventType, lynxEventName, eventHandler);
133
- }
134
- }
135
- return {
136
- __AddEvent,
137
- __GetEvent,
138
- __GetEvents,
139
- __SetEvents,
140
- };
141
- }
142
- //# sourceMappingURL=eventFunctions.js.map
@@ -1,10 +0,0 @@
1
- import { type CssInJsInfo } from '@lynx-js/web-constants';
2
- import { type MainThreadRuntime } from '../../MainThreadRuntime.js';
3
- export declare function createStyleFunctions(runtime: MainThreadRuntime, cssInJsInfo: CssInJsInfo): {
4
- __AddClass: (element: HTMLElement, className: string) => void;
5
- __SetClasses: (element: HTMLElement, classNames: string | null) => void;
6
- __GetClasses: (element: HTMLElement) => string[];
7
- __AddInlineStyle: (element: HTMLElement, key: number | string, value: string | number | null | undefined) => void;
8
- __SetInlineStyles: (element: HTMLElement, value: string | Record<string, string> | undefined) => void;
9
- __SetCSSId: (elements: (HTMLElement)[], cssId: string | number) => void;
10
- };
@@ -1,89 +0,0 @@
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 { cssIdAttribute } from '@lynx-js/web-constants';
5
- import hyphenateStyleName from 'hyphenate-style-name';
6
- import { queryCSSProperty } from './cssPropertyMap.js';
7
- import { decodeCssInJs } from '../../utils/decodeCssInJs.js';
8
- import { transformInlineStyleString, transformParsedStyles, } from './transformInlineStyle.js';
9
- import { elementToRuntimeInfoMap, updateCSSInJsStyle, } from '../../MainThreadRuntime.js';
10
- export function createStyleFunctions(runtime, cssInJsInfo) {
11
- function __AddClass(element, className) {
12
- const newClassName = ((element.className ?? '') + ' ' + className)
13
- .trim();
14
- element.setAttribute('class', newClassName);
15
- if (!runtime.config.pageConfig.enableCSSSelector) {
16
- const newStyleStr = decodeCssInJs(newClassName, cssInJsInfo, element.getAttribute(cssIdAttribute));
17
- runtime[updateCSSInJsStyle](runtime[elementToRuntimeInfoMap].get(element).uniqueId, newStyleStr);
18
- }
19
- }
20
- function __SetClasses(element, classNames) {
21
- classNames
22
- ? element.setAttribute('class', classNames)
23
- : element.removeAttribute('class');
24
- if (!runtime.config.pageConfig.enableCSSSelector) {
25
- const newStyleStr = decodeCssInJs(classNames ?? '', cssInJsInfo, element.getAttribute(cssIdAttribute));
26
- runtime[updateCSSInJsStyle](runtime[elementToRuntimeInfoMap].get(element).uniqueId, newStyleStr ?? '');
27
- }
28
- }
29
- function __GetClasses(element) {
30
- return (element.className ?? '').split(' ').filter(e => e);
31
- }
32
- function __AddInlineStyle(element, key, value) {
33
- let dashName;
34
- if (typeof key === 'number') {
35
- const queryResult = queryCSSProperty(key);
36
- dashName = queryResult.dashName;
37
- if (queryResult.isX) {
38
- console.error(`[lynx-web] css property: ${dashName} is not supported.`);
39
- }
40
- }
41
- else {
42
- dashName = key;
43
- }
44
- const valueStr = typeof value === 'number' ? value.toString() : value;
45
- if (!valueStr) { // null or undefined
46
- element.style.removeProperty(dashName);
47
- }
48
- else {
49
- const { transformedStyle } = transformParsedStyles([[
50
- dashName,
51
- valueStr,
52
- ]]);
53
- for (const [property, value] of transformedStyle) {
54
- element.style.setProperty(property, value);
55
- }
56
- }
57
- }
58
- function __SetInlineStyles(element, value) {
59
- if (!value)
60
- return;
61
- const { transformedStyle } = typeof value === 'string'
62
- ? transformInlineStyleString(value)
63
- : transformParsedStyles(Object.entries(value).map(([k, value]) => [
64
- hyphenateStyleName(k),
65
- value,
66
- ]));
67
- const transformedStyleStr = transformedStyle.map(([property, value]) => `${property}:${value};`).join('');
68
- element.setAttribute('style', transformedStyleStr);
69
- }
70
- function __SetCSSId(elements, cssId) {
71
- cssId = cssId.toString();
72
- for (const element of elements) {
73
- element.setAttribute(cssIdAttribute, cssId);
74
- if (!runtime.config.pageConfig.enableCSSSelector) {
75
- const cls = element.getAttribute('class');
76
- cls && __SetClasses(element, cls);
77
- }
78
- }
79
- }
80
- return {
81
- __AddClass,
82
- __SetClasses,
83
- __GetClasses,
84
- __AddInlineStyle,
85
- __SetInlineStyles,
86
- __SetCSSId,
87
- };
88
- }
89
- //# sourceMappingURL=styleFunctions.js.map