@lingxia/elements 0.5.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.
- package/dist/component.d.ts +50 -0
- package/dist/component.js +139 -0
- package/dist/dom.d.ts +10 -0
- package/dist/dom.js +70 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.js +9 -0
- package/dist/input.d.ts +117 -0
- package/dist/input.js +699 -0
- package/dist/native_component_wrapper_shared.d.ts +74 -0
- package/dist/native_component_wrapper_shared.js +193 -0
- package/dist/nativecomponent.d.ts +6 -0
- package/dist/nativecomponent.js +82 -0
- package/dist/navigator.d.ts +83 -0
- package/dist/navigator.js +388 -0
- package/dist/picker-web.d.ts +2 -0
- package/dist/picker-web.js +727 -0
- package/dist/picker.d.ts +77 -0
- package/dist/picker.js +342 -0
- package/dist/platform.d.ts +6 -0
- package/dist/platform.js +24 -0
- package/dist/text_component_native_attrs.d.ts +53 -0
- package/dist/text_component_native_attrs.js +111 -0
- package/dist/text_component_shared.d.ts +7 -0
- package/dist/text_component_shared.js +148 -0
- package/dist/textarea.d.ts +129 -0
- package/dist/textarea.js +841 -0
- package/dist/types.d.ts +21 -0
- package/dist/types.js +1 -0
- package/dist/video.d.ts +134 -0
- package/dist/video.js +741 -0
- package/package.json +39 -0
- package/src/component.ts +164 -0
- package/src/dom.ts +83 -0
- package/src/index.ts +69 -0
- package/src/input.ts +799 -0
- package/src/native_component_wrapper_shared.ts +243 -0
- package/src/nativecomponent.ts +97 -0
- package/src/navigator.ts +533 -0
- package/src/picker-web.ts +719 -0
- package/src/picker.ts +418 -0
- package/src/platform.ts +25 -0
- package/src/text_component_native_attrs.ts +137 -0
- package/src/text_component_shared.ts +147 -0
- package/src/textarea.ts +959 -0
- package/src/types.ts +20 -0
- package/src/video.ts +855 -0
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
export type Rect = {
|
|
2
|
+
x: number;
|
|
3
|
+
y: number;
|
|
4
|
+
width: number;
|
|
5
|
+
height: number;
|
|
6
|
+
};
|
|
7
|
+
export declare function ensureComponentId(el: HTMLElement, prefix: string, currentId?: string | null): string;
|
|
8
|
+
/**
|
|
9
|
+
* iOS Native Component Rendering Helper.
|
|
10
|
+
* Creates a scroll container that triggers WKChildScrollView creation.
|
|
11
|
+
* Reusable by all native components (video, map, camera, etc.)
|
|
12
|
+
*/
|
|
13
|
+
export declare class iOSNativeComponentHelper {
|
|
14
|
+
private scrollContainer;
|
|
15
|
+
private host;
|
|
16
|
+
private componentId;
|
|
17
|
+
constructor(host: HTMLElement, componentId: string);
|
|
18
|
+
/**
|
|
19
|
+
* Setup scroll container for iOS. No-op on other platforms.
|
|
20
|
+
*/
|
|
21
|
+
setup(): void;
|
|
22
|
+
/**
|
|
23
|
+
* Cleanup scroll container.
|
|
24
|
+
*/
|
|
25
|
+
cleanup(): void;
|
|
26
|
+
/**
|
|
27
|
+
* Get the rect to send to native for WKChildScrollView lookup.
|
|
28
|
+
* Returns null on non-iOS platforms.
|
|
29
|
+
*/
|
|
30
|
+
getScrollContainerRect(): Rect | null;
|
|
31
|
+
/**
|
|
32
|
+
* Enhance payload with iOS-specific data.
|
|
33
|
+
* Call this before sending mount/update messages.
|
|
34
|
+
*/
|
|
35
|
+
enhancePayload(payload: Record<string, unknown>): void;
|
|
36
|
+
}
|
|
37
|
+
export declare function rectEquals(a: Rect | null, b: Rect, epsilon?: number): boolean;
|
|
38
|
+
export declare class NativeComponentUpdateState {
|
|
39
|
+
private lastPropsJson;
|
|
40
|
+
private lastRect;
|
|
41
|
+
private lastZIndex;
|
|
42
|
+
reset(): void;
|
|
43
|
+
decide(rect: Rect, props: Record<string, unknown> | null, zIndex: number, force?: boolean): {
|
|
44
|
+
shouldSend: boolean;
|
|
45
|
+
propsChanged: boolean;
|
|
46
|
+
rectChanged: boolean;
|
|
47
|
+
zChanged: boolean;
|
|
48
|
+
};
|
|
49
|
+
shouldSend(rect: Rect, props: Record<string, unknown> | null, zIndex: number, force?: boolean): boolean;
|
|
50
|
+
}
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
import { isIOS } from "./platform.js";
|
|
2
|
+
let autoId = 0;
|
|
3
|
+
export function ensureComponentId(el, prefix, currentId) {
|
|
4
|
+
const attrId = el.getAttribute("id");
|
|
5
|
+
if (attrId && attrId.length > 0) {
|
|
6
|
+
return attrId;
|
|
7
|
+
}
|
|
8
|
+
if (currentId && currentId.length > 0) {
|
|
9
|
+
return currentId;
|
|
10
|
+
}
|
|
11
|
+
autoId += 1;
|
|
12
|
+
const id = `${prefix}-${Date.now().toString(36)}-${autoId.toString(36)}`;
|
|
13
|
+
el.setAttribute("id", id);
|
|
14
|
+
return id;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* iOS Native Component Rendering Helper.
|
|
18
|
+
* Creates a scroll container that triggers WKChildScrollView creation.
|
|
19
|
+
* Reusable by all native components (video, map, camera, etc.)
|
|
20
|
+
*/
|
|
21
|
+
export class iOSNativeComponentHelper {
|
|
22
|
+
constructor(host, componentId) {
|
|
23
|
+
this.scrollContainer = null;
|
|
24
|
+
this.host = host;
|
|
25
|
+
this.componentId = componentId;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Setup scroll container for iOS. No-op on other platforms.
|
|
29
|
+
*/
|
|
30
|
+
setup() {
|
|
31
|
+
if (!isIOS() || this.scrollContainer)
|
|
32
|
+
return;
|
|
33
|
+
const container = document.createElement("div");
|
|
34
|
+
container.id = `${this.componentId}-scroll-container`;
|
|
35
|
+
container.style.cssText = `
|
|
36
|
+
position: absolute;
|
|
37
|
+
top: 0;
|
|
38
|
+
left: 0;
|
|
39
|
+
width: 100%;
|
|
40
|
+
height: 100%;
|
|
41
|
+
overflow: scroll;
|
|
42
|
+
-webkit-overflow-scrolling: touch;
|
|
43
|
+
pointer-events: none;
|
|
44
|
+
`;
|
|
45
|
+
// Add inner content larger than container to trigger WKChildScrollView creation
|
|
46
|
+
const inner = document.createElement("div");
|
|
47
|
+
inner.style.cssText = "width: 200%; height: 200%;";
|
|
48
|
+
container.appendChild(inner);
|
|
49
|
+
// Disable scrolling but keep overflow:scroll to trigger WKChildScrollView
|
|
50
|
+
const touchMoveListener = {
|
|
51
|
+
handleEvent: (event) => {
|
|
52
|
+
event.preventDefault();
|
|
53
|
+
},
|
|
54
|
+
};
|
|
55
|
+
const scrollLockListener = {
|
|
56
|
+
handleEvent: () => {
|
|
57
|
+
container.scrollTop = 0;
|
|
58
|
+
container.scrollLeft = 0;
|
|
59
|
+
},
|
|
60
|
+
};
|
|
61
|
+
container.addEventListener('touchmove', touchMoveListener, { passive: false });
|
|
62
|
+
container.addEventListener('scroll', scrollLockListener);
|
|
63
|
+
this.scrollContainer = container;
|
|
64
|
+
this.host.appendChild(container);
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Cleanup scroll container.
|
|
68
|
+
*/
|
|
69
|
+
cleanup() {
|
|
70
|
+
if (this.scrollContainer && this.host.contains(this.scrollContainer)) {
|
|
71
|
+
this.host.removeChild(this.scrollContainer);
|
|
72
|
+
}
|
|
73
|
+
this.scrollContainer = null;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Get the rect to send to native for WKChildScrollView lookup.
|
|
77
|
+
* Returns null on non-iOS platforms.
|
|
78
|
+
*/
|
|
79
|
+
getScrollContainerRect() {
|
|
80
|
+
if (!this.scrollContainer)
|
|
81
|
+
return null;
|
|
82
|
+
const rect = this.scrollContainer.getBoundingClientRect();
|
|
83
|
+
return {
|
|
84
|
+
x: rect.left,
|
|
85
|
+
y: rect.top,
|
|
86
|
+
width: rect.width,
|
|
87
|
+
height: rect.height
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Enhance payload with iOS-specific data.
|
|
92
|
+
* Call this before sending mount/update messages.
|
|
93
|
+
*/
|
|
94
|
+
enhancePayload(payload) {
|
|
95
|
+
const rect = this.getScrollContainerRect();
|
|
96
|
+
if (rect) {
|
|
97
|
+
payload.scrollContainerRect = rect;
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
export function rectEquals(a, b, epsilon = 0) {
|
|
102
|
+
if (!a)
|
|
103
|
+
return false;
|
|
104
|
+
return (Math.abs(a.x - b.x) <= epsilon &&
|
|
105
|
+
Math.abs(a.y - b.y) <= epsilon &&
|
|
106
|
+
Math.abs(a.width - b.width) <= epsilon &&
|
|
107
|
+
Math.abs(a.height - b.height) <= epsilon);
|
|
108
|
+
}
|
|
109
|
+
export class NativeComponentUpdateState {
|
|
110
|
+
constructor() {
|
|
111
|
+
this.lastPropsJson = null;
|
|
112
|
+
this.lastRect = null;
|
|
113
|
+
this.lastZIndex = null;
|
|
114
|
+
}
|
|
115
|
+
reset() {
|
|
116
|
+
this.lastPropsJson = null;
|
|
117
|
+
this.lastRect = null;
|
|
118
|
+
this.lastZIndex = null;
|
|
119
|
+
}
|
|
120
|
+
decide(rect, props, zIndex, force = false) {
|
|
121
|
+
const propsJson = props === null ? this.lastPropsJson : JSON.stringify(props);
|
|
122
|
+
const rectChanged = !rectEquals(this.lastRect, rect);
|
|
123
|
+
const propsChanged = props === null ? false : propsJson !== this.lastPropsJson || force;
|
|
124
|
+
const zChanged = this.lastZIndex !== zIndex;
|
|
125
|
+
const shouldSend = force || rectChanged || propsChanged || zChanged;
|
|
126
|
+
if (!shouldSend) {
|
|
127
|
+
return { shouldSend: false, propsChanged: false, rectChanged: false, zChanged: false };
|
|
128
|
+
}
|
|
129
|
+
if (props !== null) {
|
|
130
|
+
this.lastPropsJson = propsJson;
|
|
131
|
+
}
|
|
132
|
+
this.lastRect = rect;
|
|
133
|
+
this.lastZIndex = zIndex;
|
|
134
|
+
return { shouldSend: true, propsChanged, rectChanged, zChanged };
|
|
135
|
+
}
|
|
136
|
+
shouldSend(rect, props, zIndex, force = false) {
|
|
137
|
+
return this.decide(rect, props, zIndex, force).shouldSend;
|
|
138
|
+
}
|
|
139
|
+
}
|
package/dist/dom.d.ts
ADDED
package/dist/dom.js
ADDED
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
export function measureElement(el) {
|
|
2
|
+
const rect = el.getBoundingClientRect();
|
|
3
|
+
const parseRadius = (radiusStr) => {
|
|
4
|
+
const match = radiusStr && radiusStr.match(/^([0-9.]+)px/);
|
|
5
|
+
if (!match)
|
|
6
|
+
return undefined;
|
|
7
|
+
const parsed = parseFloat(match[1]);
|
|
8
|
+
return Number.isNaN(parsed) ? undefined : parsed;
|
|
9
|
+
};
|
|
10
|
+
const isOverflowClipping = (style) => style.overflow === "hidden" ||
|
|
11
|
+
style.overflow === "clip" ||
|
|
12
|
+
style.overflowX === "hidden" ||
|
|
13
|
+
style.overflowX === "clip" ||
|
|
14
|
+
style.overflowY === "hidden" ||
|
|
15
|
+
style.overflowY === "clip";
|
|
16
|
+
let cornerRadius = parseRadius(getComputedStyle(el).borderRadius);
|
|
17
|
+
if (cornerRadius === undefined) {
|
|
18
|
+
const rectMatches = (a, b, epsilon = 0.5) => Math.abs(a.left - b.left) <= epsilon &&
|
|
19
|
+
Math.abs(a.top - b.top) <= epsilon &&
|
|
20
|
+
Math.abs(a.width - b.width) <= epsilon &&
|
|
21
|
+
Math.abs(a.height - b.height) <= epsilon;
|
|
22
|
+
let parent = el.parentElement;
|
|
23
|
+
while (parent) {
|
|
24
|
+
const style = getComputedStyle(parent);
|
|
25
|
+
if (isOverflowClipping(style) && rectMatches(parent.getBoundingClientRect(), rect)) {
|
|
26
|
+
const parentRadius = parseRadius(style.borderRadius);
|
|
27
|
+
if (parentRadius !== undefined) {
|
|
28
|
+
cornerRadius = parentRadius;
|
|
29
|
+
break;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
parent = parent.parentElement;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
if (cornerRadius === undefined) {
|
|
36
|
+
// Common card layout: native video is clipped by an overflow-hidden rounded ancestor
|
|
37
|
+
// that doesn't have exactly the same rect (e.g. header + media block).
|
|
38
|
+
const near = (a, b, epsilon = 0.75) => Math.abs(a - b) <= epsilon;
|
|
39
|
+
let parent = el.parentElement;
|
|
40
|
+
while (parent) {
|
|
41
|
+
const style = getComputedStyle(parent);
|
|
42
|
+
const parentRadius = parseRadius(style.borderRadius);
|
|
43
|
+
if (isOverflowClipping(style) && parentRadius !== undefined) {
|
|
44
|
+
const p = parent.getBoundingClientRect();
|
|
45
|
+
const contains = rect.left >= p.left - 0.75 &&
|
|
46
|
+
rect.right <= p.right + 0.75 &&
|
|
47
|
+
rect.top >= p.top - 0.75 &&
|
|
48
|
+
rect.bottom <= p.bottom + 0.75;
|
|
49
|
+
const alignedLeftRight = near(rect.left, p.left) && near(rect.right, p.right);
|
|
50
|
+
const touchesTopOrBottom = near(rect.top, p.top) || near(rect.bottom, p.bottom);
|
|
51
|
+
if (contains && alignedLeftRight && touchesTopOrBottom) {
|
|
52
|
+
cornerRadius = parentRadius;
|
|
53
|
+
break;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
parent = parent.parentElement;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
// Return document coordinates (CSS pixels)
|
|
60
|
+
// Native layer converts to physical pixels and handles scroll offset
|
|
61
|
+
return {
|
|
62
|
+
rect: {
|
|
63
|
+
x: rect.left + window.scrollX,
|
|
64
|
+
y: rect.top + window.scrollY,
|
|
65
|
+
width: rect.width,
|
|
66
|
+
height: rect.height
|
|
67
|
+
},
|
|
68
|
+
cornerRadius
|
|
69
|
+
};
|
|
70
|
+
}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export { registerVideoComponent, LxVideoElement, type LxVideoAttributes, } from "./video.js";
|
|
2
|
+
export { registerPickerComponent, LxPickerElement, type LxPickerAttributes, type LxPickerColumn, type LxPickerCascadingColumns, type LxPickerEvent, type LxPickerEventDetail, } from "./picker.js";
|
|
3
|
+
export { registerInputComponent, LxInputElement, type LxInputAttributes, type LxInputEvent, type LxInputEventDetail, } from "./input.js";
|
|
4
|
+
export { registerTextareaComponent, LxTextareaElement, type LxTextareaAttributes, type LxTextareaEvent, type LxTextareaEventDetail, } from "./textarea.js";
|
|
5
|
+
export { LxNavigatorElement, type LxNavigatorAttributes, type LxNavigatorEvent, type NavigatorOpenType, type NavigatorTarget, } from "./navigator.js";
|
|
6
|
+
export { buildVideoNativeAttrs, buildNavigatorNativeAttrs, buildPickerNativeAttrs, getPickerDisplayText, getPickerValueFromIndex, VIDEO_DOM_EVENT_MAP, } from "./native_component_wrapper_shared.js";
|
|
7
|
+
export { buildInputNativeAttrs, buildTextareaNativeAttrs, } from "./text_component_native_attrs.js";
|
|
8
|
+
export { isHarmony, isIOS, isAndroid, isMacOS, isDesktop, getOS, } from "./platform.js";
|
|
9
|
+
export { ensureComponentId, rectEquals, NativeComponentUpdateState, type Rect, } from "./component.js";
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export { registerVideoComponent, LxVideoElement, } from "./video.js";
|
|
2
|
+
export { registerPickerComponent, LxPickerElement, } from "./picker.js";
|
|
3
|
+
export { registerInputComponent, LxInputElement, } from "./input.js";
|
|
4
|
+
export { registerTextareaComponent, LxTextareaElement, } from "./textarea.js";
|
|
5
|
+
export { LxNavigatorElement, } from "./navigator.js";
|
|
6
|
+
export { buildVideoNativeAttrs, buildNavigatorNativeAttrs, buildPickerNativeAttrs, getPickerDisplayText, getPickerValueFromIndex, VIDEO_DOM_EVENT_MAP, } from "./native_component_wrapper_shared.js";
|
|
7
|
+
export { buildInputNativeAttrs, buildTextareaNativeAttrs, } from "./text_component_native_attrs.js";
|
|
8
|
+
export { isHarmony, isIOS, isAndroid, isMacOS, isDesktop, getOS, } from "./platform.js";
|
|
9
|
+
export { ensureComponentId, rectEquals, NativeComponentUpdateState, } from "./component.js";
|
package/dist/input.d.ts
ADDED
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
export interface LxInputEventDetail {
|
|
2
|
+
value?: string;
|
|
3
|
+
cursor?: number;
|
|
4
|
+
keyCode?: number;
|
|
5
|
+
height?: number;
|
|
6
|
+
duration?: number;
|
|
7
|
+
encryptedValue?: string;
|
|
8
|
+
encryptError?: string;
|
|
9
|
+
pass?: boolean;
|
|
10
|
+
timeout?: boolean;
|
|
11
|
+
}
|
|
12
|
+
export interface LxInputEvent extends CustomEvent<LxInputEventDetail> {
|
|
13
|
+
detail: LxInputEventDetail;
|
|
14
|
+
}
|
|
15
|
+
export type LxInputAttributes = {
|
|
16
|
+
id?: string;
|
|
17
|
+
value?: string;
|
|
18
|
+
type?: 'text' | 'number' | 'password' | 'digit';
|
|
19
|
+
password?: boolean | string;
|
|
20
|
+
placeholder?: string;
|
|
21
|
+
'placeholder-style'?: string;
|
|
22
|
+
'placeholder-class'?: string;
|
|
23
|
+
maxlength?: number | string;
|
|
24
|
+
'cursor-spacing'?: number | string;
|
|
25
|
+
'auto-focus'?: boolean | string;
|
|
26
|
+
disabled?: boolean | string;
|
|
27
|
+
focus?: boolean | string;
|
|
28
|
+
'confirm-type'?: 'send' | 'search' | 'next' | 'go' | 'done';
|
|
29
|
+
'always-embed'?: boolean | string;
|
|
30
|
+
'confirm-hold'?: boolean | string;
|
|
31
|
+
cursor?: number | string;
|
|
32
|
+
'cursor-color'?: string;
|
|
33
|
+
'selection-start'?: number | string;
|
|
34
|
+
'selection-end'?: number | string;
|
|
35
|
+
'adjust-position'?: boolean | string;
|
|
36
|
+
'hold-keyboard'?: boolean | string;
|
|
37
|
+
className?: string;
|
|
38
|
+
style?: any;
|
|
39
|
+
ref?: any;
|
|
40
|
+
onInput?: (e: LxInputEvent) => void;
|
|
41
|
+
onChange?: (e: LxInputEvent) => void;
|
|
42
|
+
onFocus?: (e: LxInputEvent) => void;
|
|
43
|
+
onBlur?: (e: LxInputEvent) => void;
|
|
44
|
+
onConfirm?: (e: LxInputEvent) => void;
|
|
45
|
+
onKeyboardheightchange?: (e: LxInputEvent) => void;
|
|
46
|
+
onNicknamereview?: (e: LxInputEvent) => void;
|
|
47
|
+
pageBindings?: Record<string, string>;
|
|
48
|
+
};
|
|
49
|
+
declare global {
|
|
50
|
+
namespace JSX {
|
|
51
|
+
interface IntrinsicElements {
|
|
52
|
+
"lx-input": LxInputAttributes;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
export declare class LxInputElement extends HTMLElement {
|
|
57
|
+
static get observedAttributes(): string[];
|
|
58
|
+
private componentId;
|
|
59
|
+
private mounted;
|
|
60
|
+
private unregister?;
|
|
61
|
+
private _handlers;
|
|
62
|
+
private rawHandlers;
|
|
63
|
+
private harmonyEmbed?;
|
|
64
|
+
private lastHarmonyProps?;
|
|
65
|
+
private pendingHarmonyProps?;
|
|
66
|
+
private pendingHarmonyRetryTimer;
|
|
67
|
+
private pendingHarmonyRetryCount;
|
|
68
|
+
private attrObserver?;
|
|
69
|
+
private shadow?;
|
|
70
|
+
private innerInput?;
|
|
71
|
+
private readonly updateState;
|
|
72
|
+
private resizeObserver?;
|
|
73
|
+
private pendingLayoutFrame;
|
|
74
|
+
private focusLayoutSyncTimer;
|
|
75
|
+
private readonly layoutEventListener;
|
|
76
|
+
private _pageBindings;
|
|
77
|
+
set pageBindings(bindings: Record<string, string>);
|
|
78
|
+
get pageBindings(): Record<string, string>;
|
|
79
|
+
private upgradeProperty;
|
|
80
|
+
private registerNativeHandler;
|
|
81
|
+
private unmountNativeComponentById;
|
|
82
|
+
private teardownHarmonyEmbed;
|
|
83
|
+
connectedCallback(): void;
|
|
84
|
+
disconnectedCallback(): void;
|
|
85
|
+
attributeChangedCallback(name: string): void;
|
|
86
|
+
private getAttr;
|
|
87
|
+
private getBoolAttr;
|
|
88
|
+
private getNumAttr;
|
|
89
|
+
private getPropOrAttr;
|
|
90
|
+
private shouldTrackNativeLayout;
|
|
91
|
+
private startTracking;
|
|
92
|
+
private stopTracking;
|
|
93
|
+
private startSizeObserver;
|
|
94
|
+
private stopSizeObserver;
|
|
95
|
+
private schedulePositionSync;
|
|
96
|
+
private collectProps;
|
|
97
|
+
private getHostTextColor;
|
|
98
|
+
private resyncHarmonyLayoutAfterFocus;
|
|
99
|
+
private startFocusLayoutSync;
|
|
100
|
+
private stopFocusLayoutSync;
|
|
101
|
+
private shouldRefreshForAttribute;
|
|
102
|
+
private startAttrObserver;
|
|
103
|
+
private stopAttrObserver;
|
|
104
|
+
private collectDataset;
|
|
105
|
+
private getInputType;
|
|
106
|
+
private mountDesktopInput;
|
|
107
|
+
private mountInput;
|
|
108
|
+
syncNativeProps(): void;
|
|
109
|
+
private ensureHostLayout;
|
|
110
|
+
set oninput(cb: EventListener | null);
|
|
111
|
+
get oninput(): EventListener | null;
|
|
112
|
+
private ensureHarmonyEmbed;
|
|
113
|
+
private encodeHarmonyProps;
|
|
114
|
+
private pushHarmonyPropsUpdate;
|
|
115
|
+
private scheduleHarmonyPropsRetry;
|
|
116
|
+
}
|
|
117
|
+
export declare function registerInputComponent(): void;
|