@g9tm/lynxcontrols-native 1.4.4 → 1.4.7
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/android/build.gradle.kts +6 -1
- package/android/src/main/java/com/g9lynx/g9native/G9HostModule.kt +31 -5
- package/android/src/main/java/com/g9lynx/g9native/host/core/G9SafeAreaCore.kt +19 -0
- package/android/src/main/java/com/g9lynx/g9native/input/G9InputUI.kt +118 -0
- package/android/src/main/java/com/g9lynx/g9native/input/core/G9DigitsCore.kt +56 -0
- package/dist/.tsbuildinfo +1 -1
- package/dist/services.d.ts.map +1 -1
- package/dist/services.js +8 -2
- package/dist/services.js.map +1 -1
- package/ios/Tests/G9NativeTests.m +11 -0
- package/ios/g9lynx-native.podspec +4 -2
- package/ios/src/G9PointerEventsHitTest.h +22 -0
- package/ios/src/G9PointerEventsHitTest.m +48 -0
- package/package.json +5 -5
package/android/build.gradle.kts
CHANGED
|
@@ -25,7 +25,7 @@ android {
|
|
|
25
25
|
|
|
26
26
|
kotlin { jvmToolchain(17) }
|
|
27
27
|
|
|
28
|
-
val lynx = "4.
|
|
28
|
+
val lynx = "4.2.0"
|
|
29
29
|
|
|
30
30
|
dependencies {
|
|
31
31
|
compileOnly("org.lynxsdk.lynx:lynx:$lynx")
|
|
@@ -34,6 +34,11 @@ dependencies {
|
|
|
34
34
|
// The generated specs import androidx.annotation and lynx-processor's output uses @Keep, but Lynx's POMs declare it
|
|
35
35
|
// at runtime scope only: without this line kapt depends on androidx.sqlite / media3 bringing it in transitively.
|
|
36
36
|
compileOnly("androidx.annotation:annotation:1.9.1")
|
|
37
|
+
// G9InputBehaviors (input/G9InputUI.kt) extends xelement-input's input and textarea; a host that registers them
|
|
38
|
+
// already depends on it.
|
|
39
|
+
compileOnly("org.lynxsdk.lynx:xelement-input:$lynx")
|
|
40
|
+
// Its EditText derives from AppCompatEditText, which xelement-input's POM lists at runtime scope only.
|
|
41
|
+
compileOnly("androidx.appcompat:appcompat:1.7.0")
|
|
37
42
|
// G9SpeechModule asks for the microphone through the host activity's ActivityResultRegistry: compile-only, as every
|
|
38
43
|
// host of these libraries ships androidx.activity (a host without it gets the current state, never a prompt).
|
|
39
44
|
compileOnly("androidx.activity:activity:1.10.1")
|
|
@@ -13,6 +13,7 @@ import android.view.inputmethod.InputMethodManager
|
|
|
13
13
|
import com.g9lynx.g9native.generated.G9HostModuleSpec
|
|
14
14
|
import com.g9lynx.g9native.host.core.G9PreferenceBackend
|
|
15
15
|
import com.g9lynx.g9native.host.core.G9PreferencesCore
|
|
16
|
+
import com.g9lynx.g9native.host.core.G9SafeAreaCore
|
|
16
17
|
import com.lynx.jsbridge.LynxMethod
|
|
17
18
|
import com.lynx.jsbridge.LynxNativeModule
|
|
18
19
|
import com.lynx.react.bridge.Callback
|
|
@@ -86,7 +87,7 @@ class G9HostModule(private val lynxContext: LynxContext) : G9HostModuleSpec(lynx
|
|
|
86
87
|
val density = activity.resources.displayMetrics.density
|
|
87
88
|
val insets = activity.window.decorView.rootWindowInsets
|
|
88
89
|
val rtl = activity.window.decorView.layoutDirection == View.LAYOUT_DIRECTION_RTL
|
|
89
|
-
val px = safeInsetsPx(insets)
|
|
90
|
+
val px = safeInsetsPx(insets, activity.window.decorView)
|
|
90
91
|
val left = px[0] / density
|
|
91
92
|
val right = px[2] / density
|
|
92
93
|
val value =
|
|
@@ -160,13 +161,38 @@ class G9HostModule(private val lynxContext: LynxContext) : G9HostModuleSpec(lynx
|
|
|
160
161
|
* by type, so the soft keyboard never counts (the deprecated `systemWindowInset*` added the IME height when the
|
|
161
162
|
* keyboard was up) and a host that hides the bars (immersive, as the AgriPad MAUI app) gets the cutout only.
|
|
162
163
|
*/
|
|
163
|
-
|
|
164
|
+
/** The cutout plus each system bar only while it shows (G9SafeAreaCore): an immersive host's hidden bars count zero. */
|
|
165
|
+
private fun safeInsetsPx(insets: android.view.WindowInsets?, decor: View): IntArray {
|
|
164
166
|
if (insets == null) return intArrayOf(0, 0, 0, 0)
|
|
165
167
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
|
|
166
|
-
|
|
167
|
-
|
|
168
|
+
fun px(i: android.graphics.Insets) = intArrayOf(i.left, i.top, i.right, i.bottom)
|
|
169
|
+
val status = android.view.WindowInsets.Type.statusBars()
|
|
170
|
+
val navigation = android.view.WindowInsets.Type.navigationBars()
|
|
171
|
+
return G9SafeAreaCore.compute(
|
|
172
|
+
px(insets.getInsets(android.view.WindowInsets.Type.displayCutout())),
|
|
173
|
+
px(insets.getInsets(status)),
|
|
174
|
+
insets.isVisible(status),
|
|
175
|
+
px(insets.getInsets(navigation)),
|
|
176
|
+
insets.isVisible(navigation),
|
|
177
|
+
)
|
|
168
178
|
}
|
|
179
|
+
// Android 10 and older: systemWindowInsets keep a hidden bar's size (LAYOUT_STABLE); the decor view's flags say
|
|
180
|
+
// whether it is hidden. The status bar is the top inset, the navigation bar the others.
|
|
181
|
+
@Suppress("DEPRECATION")
|
|
182
|
+
val flags = decor.systemUiVisibility
|
|
183
|
+
val cutout =
|
|
184
|
+
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
|
|
185
|
+
insets.displayCutout?.let { intArrayOf(it.safeInsetLeft, it.safeInsetTop, it.safeInsetRight, it.safeInsetBottom) }
|
|
186
|
+
} else {
|
|
187
|
+
null
|
|
188
|
+
} ?: intArrayOf(0, 0, 0, 0)
|
|
169
189
|
@Suppress("DEPRECATION")
|
|
170
|
-
return
|
|
190
|
+
return G9SafeAreaCore.compute(
|
|
191
|
+
cutout,
|
|
192
|
+
intArrayOf(0, insets.systemWindowInsetTop, 0, 0),
|
|
193
|
+
flags and View.SYSTEM_UI_FLAG_FULLSCREEN == 0,
|
|
194
|
+
intArrayOf(insets.systemWindowInsetLeft, 0, insets.systemWindowInsetRight, insets.systemWindowInsetBottom),
|
|
195
|
+
flags and View.SYSTEM_UI_FLAG_HIDE_NAVIGATION == 0,
|
|
196
|
+
)
|
|
171
197
|
}
|
|
172
198
|
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
package com.g9lynx.g9native.host.core
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* The safe area `G9HostModule.safeInsets` reports, as `[left, top, right, bottom]` px: the display cutout, plus a system bar
|
|
5
|
+
* only while it SHOWS. A host that hides its bars (immersive: they slide in transiently over the page) gets the cutout
|
|
6
|
+
* alone — the bars' own inset is reported whether or not they are hidden on Android 10 and older (`systemWindowInsets`
|
|
7
|
+
* under `SYSTEM_UI_FLAG_LAYOUT_STABLE`), and counting it put every bottom bar and sheet 48 dp above a navigation bar that
|
|
8
|
+
* was not there (AgriPad Lynx on a DOOGEE S96Pro, Android 10, 2026-11-02).
|
|
9
|
+
*/
|
|
10
|
+
object G9SafeAreaCore {
|
|
11
|
+
fun compute(cutout: IntArray, status: IntArray, statusShown: Boolean, navigation: IntArray, navigationShown: Boolean): IntArray {
|
|
12
|
+
val out = cutout.copyOf(4)
|
|
13
|
+
for (side in 0 until 4) {
|
|
14
|
+
if (statusShown) out[side] = maxOf(out[side], status.getOrElse(side) { 0 })
|
|
15
|
+
if (navigationShown) out[side] = maxOf(out[side], navigation.getOrElse(side) { 0 })
|
|
16
|
+
}
|
|
17
|
+
return out
|
|
18
|
+
}
|
|
19
|
+
}
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
package com.g9lynx.g9native.input
|
|
2
|
+
|
|
3
|
+
import android.text.method.PasswordTransformationMethod
|
|
4
|
+
import android.text.method.ReplacementTransformationMethod
|
|
5
|
+
import android.text.method.SingleLineTransformationMethod
|
|
6
|
+
import android.text.method.TransformationMethod
|
|
7
|
+
import com.g9lynx.g9native.input.core.G9DigitsCore
|
|
8
|
+
import com.lynx.tasm.behavior.Behavior
|
|
9
|
+
import com.lynx.tasm.behavior.LynxContext
|
|
10
|
+
import com.lynx.tasm.behavior.LynxProp
|
|
11
|
+
import com.lynx.tasm.behavior.StylesDiffMap
|
|
12
|
+
import com.lynx.tasm.behavior.shadow.ShadowNode
|
|
13
|
+
import com.lynx.tasm.behavior.ui.LynxUI
|
|
14
|
+
import com.lynx.xelement.input.LynxEditTextView
|
|
15
|
+
import com.lynx.xelement.input.LynxUIInput
|
|
16
|
+
import com.lynx.xelement.input.LynxUIInputShadowNode
|
|
17
|
+
import com.lynx.xelement.input.LynxUITextArea
|
|
18
|
+
import com.lynx.xelement.input.LynxUITextAreaShadowNode
|
|
19
|
+
|
|
20
|
+
/** Draws the field's ASCII digits in the culture's digits (G9DigitsCore); the text itself is never changed. */
|
|
21
|
+
internal class G9DigitsTransformation(private val pairs: Pair<CharArray, CharArray>) : ReplacementTransformationMethod() {
|
|
22
|
+
val key: String = String(pairs.first) + String(pairs.second)
|
|
23
|
+
|
|
24
|
+
override fun getOriginal(): CharArray = pairs.first
|
|
25
|
+
|
|
26
|
+
override fun getReplacement(): CharArray = pairs.second
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
/** The digits state of one field: the props it was given and the transformation it applies. */
|
|
30
|
+
internal class G9FieldDigits(private val singleLine: Boolean) {
|
|
31
|
+
var system: String? = null
|
|
32
|
+
var decimalSeparator: String? = null
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* Puts the digit transformation on `view` after xelement-input's own props ran (it sets SingleLine / Password there).
|
|
36
|
+
* A password keeps its mask; a latin field gets back what xelement-input would have set.
|
|
37
|
+
*/
|
|
38
|
+
fun apply(view: LynxEditTextView) {
|
|
39
|
+
val current: TransformationMethod? = view.transformationMethod
|
|
40
|
+
if (current is PasswordTransformationMethod) return
|
|
41
|
+
val pairs = G9DigitsCore.pairs(system, decimalSeparator, singleLine)
|
|
42
|
+
val wanted: TransformationMethod? =
|
|
43
|
+
when {
|
|
44
|
+
pairs != null -> {
|
|
45
|
+
if (current is G9DigitsTransformation && current.key == G9DigitsTransformation(pairs).key) return
|
|
46
|
+
G9DigitsTransformation(pairs)
|
|
47
|
+
}
|
|
48
|
+
current is G9DigitsTransformation -> if (singleLine) SingleLineTransformationMethod.getInstance() else null
|
|
49
|
+
else -> return
|
|
50
|
+
}
|
|
51
|
+
val start = view.selectionStart
|
|
52
|
+
val end = view.selectionEnd
|
|
53
|
+
view.transformationMethod = wanted
|
|
54
|
+
val length = view.text?.length ?: 0
|
|
55
|
+
if (start in 0..length && end in 0..length) view.setSelection(start, end)
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
/** xelement-input's `<input>` with `g9-digits` / `g9-decimal-separator` (`@g9tm/lynxcontrols` G9TextEntry sets them). */
|
|
60
|
+
class G9UIInput(context: LynxContext) : LynxUIInput(context) {
|
|
61
|
+
private val digits = G9FieldDigits(singleLine = true)
|
|
62
|
+
|
|
63
|
+
@LynxProp(name = "g9-digits")
|
|
64
|
+
fun setG9Digits(value: String?) {
|
|
65
|
+
digits.system = value
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
@LynxProp(name = "g9-decimal-separator")
|
|
69
|
+
fun setG9DecimalSeparator(value: String?) {
|
|
70
|
+
digits.decimalSeparator = value
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
override fun afterPropsUpdated(props: StylesDiffMap?) {
|
|
74
|
+
super.afterPropsUpdated(props)
|
|
75
|
+
digits.apply(view)
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
/** xelement-input's `<textarea>` with the same digit props (G9Editor). */
|
|
80
|
+
class G9UITextArea(context: LynxContext) : LynxUITextArea(context) {
|
|
81
|
+
private val digits = G9FieldDigits(singleLine = false)
|
|
82
|
+
|
|
83
|
+
@LynxProp(name = "g9-digits")
|
|
84
|
+
fun setG9Digits(value: String?) {
|
|
85
|
+
digits.system = value
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
@LynxProp(name = "g9-decimal-separator")
|
|
89
|
+
fun setG9DecimalSeparator(value: String?) {
|
|
90
|
+
digits.decimalSeparator = value
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
override fun afterPropsUpdated(props: StylesDiffMap?) {
|
|
94
|
+
super.afterPropsUpdated(props)
|
|
95
|
+
digits.apply(view)
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
/**
|
|
100
|
+
* `input` and `textarea` for a host that registers xelement-input itself (an unregistered tag breaks the page, so a
|
|
101
|
+
* host registers exactly one of each): use these instead of `LynxUIInput` / `LynxUITextArea` and the fields draw the
|
|
102
|
+
* culture's digits. The host must still depend on `org.lynxsdk.lynx:xelement-input`.
|
|
103
|
+
*/
|
|
104
|
+
object G9InputBehaviors {
|
|
105
|
+
fun create(): List<Behavior> =
|
|
106
|
+
listOf(
|
|
107
|
+
object : Behavior("input", false, false, false) {
|
|
108
|
+
override fun createUI(context: LynxContext): LynxUI<*> = G9UIInput(context)
|
|
109
|
+
|
|
110
|
+
override fun createShadowNode(): ShadowNode = LynxUIInputShadowNode()
|
|
111
|
+
},
|
|
112
|
+
object : Behavior("textarea", false, false, false) {
|
|
113
|
+
override fun createUI(context: LynxContext): LynxUI<*> = G9UITextArea(context)
|
|
114
|
+
|
|
115
|
+
override fun createShadowNode(): ShadowNode = LynxUITextAreaShadowNode()
|
|
116
|
+
},
|
|
117
|
+
)
|
|
118
|
+
}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
package com.g9lynx.g9native.input.core
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* What a field DRAWS for the ASCII digits it holds (MAUI: the FaNum font draws «15» as «۱۵»; AgriPad owner 2026-11-02:
|
|
5
|
+
* «Lynx shows Persian too, but what is recorded is ASCII»). Pure, so the JVM suite tests it: the native input applies the
|
|
6
|
+
* pairs as a `ReplacementTransformationMethod`, which changes only what is drawn — the text, the value events and the
|
|
7
|
+
* selection keep the ASCII characters one for one.
|
|
8
|
+
*/
|
|
9
|
+
object G9DigitsCore {
|
|
10
|
+
/** `g9-digits` values (the culture's numbering system, foundation `G9NumberingSystem`). */
|
|
11
|
+
const val LATIN = "latin"
|
|
12
|
+
const val PERSIAN = "persian"
|
|
13
|
+
const val ARABIC_INDIC = "arabicIndic"
|
|
14
|
+
|
|
15
|
+
/** The zero of `system`, or `null` when the field draws ASCII (latin, empty, unknown). */
|
|
16
|
+
fun zeroOf(system: String?): Char? =
|
|
17
|
+
when (system) {
|
|
18
|
+
PERSIAN -> '۰'
|
|
19
|
+
ARABIC_INDIC -> '٠'
|
|
20
|
+
else -> null
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* The characters to replace and their replacements (same length), or `null` when nothing is replaced.
|
|
25
|
+
* `singleLine` keeps what `SingleLineTransformationMethod` does (newline → space, CR → U+FEFF), since this method
|
|
26
|
+
* replaces it on a single-line input; `decimalSeparator` (one character, e.g. «٫») is drawn for the ASCII '.'.
|
|
27
|
+
*/
|
|
28
|
+
fun pairs(system: String?, decimalSeparator: String?, singleLine: Boolean): Pair<CharArray, CharArray>? {
|
|
29
|
+
val zero = zeroOf(system) ?: return null
|
|
30
|
+
val from = StringBuilder("0123456789")
|
|
31
|
+
val to = StringBuilder()
|
|
32
|
+
for (d in 0..9) to.append(zero + d)
|
|
33
|
+
val separator = decimalSeparator?.takeIf { it.length == 1 && it != "." }
|
|
34
|
+
if (separator != null) {
|
|
35
|
+
from.append('.')
|
|
36
|
+
to.append(separator)
|
|
37
|
+
}
|
|
38
|
+
if (singleLine) {
|
|
39
|
+
from.append('\n').append('\r')
|
|
40
|
+
to.append(' ').append('')
|
|
41
|
+
}
|
|
42
|
+
return from.toString().toCharArray() to to.toString().toCharArray()
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
/** What `pairs` draws for `text` (the tests' view of the transformation). */
|
|
46
|
+
fun draw(text: String, pairs: Pair<CharArray, CharArray>?): String {
|
|
47
|
+
if (pairs == null) return text
|
|
48
|
+
val (from, to) = pairs
|
|
49
|
+
val out = StringBuilder(text.length)
|
|
50
|
+
for (c in text) {
|
|
51
|
+
val i = from.indexOf(c)
|
|
52
|
+
out.append(if (i >= 0) to[i] else c)
|
|
53
|
+
}
|
|
54
|
+
return out.toString()
|
|
55
|
+
}
|
|
56
|
+
}
|
package/dist/.tsbuildinfo
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"fileNames":["../../../node_modules/typescript/lib/lib.es5.d.ts","../../../node_modules/typescript/lib/lib.es2015.d.ts","../../../node_modules/typescript/lib/lib.es2016.d.ts","../../../node_modules/typescript/lib/lib.es2017.d.ts","../../../node_modules/typescript/lib/lib.es2018.d.ts","../../../node_modules/typescript/lib/lib.es2019.d.ts","../../../node_modules/typescript/lib/lib.dom.d.ts","../../../node_modules/typescript/lib/lib.es2015.core.d.ts","../../../node_modules/typescript/lib/lib.es2015.collection.d.ts","../../../node_modules/typescript/lib/lib.es2015.generator.d.ts","../../../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../../node_modules/typescript/lib/lib.es2015.promise.d.ts","../../../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../../node_modules/typescript/lib/lib.es2016.intl.d.ts","../../../node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","../../../node_modules/typescript/lib/lib.es2017.date.d.ts","../../../node_modules/typescript/lib/lib.es2017.object.d.ts","../../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../../node_modules/typescript/lib/lib.es2017.string.d.ts","../../../node_modules/typescript/lib/lib.es2017.intl.d.ts","../../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../../node_modules/typescript/lib/lib.es2018.intl.d.ts","../../../node_modules/typescript/lib/lib.es2018.promise.d.ts","../../../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../../node_modules/typescript/lib/lib.es2019.array.d.ts","../../../node_modules/typescript/lib/lib.es2019.object.d.ts","../../../node_modules/typescript/lib/lib.es2019.string.d.ts","../../../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../../node_modules/typescript/lib/lib.es2019.intl.d.ts","../../../node_modules/typescript/lib/lib.decorators.d.ts","../../../node_modules/typescript/lib/lib.decorators.legacy.d.ts","../../../node_modules/@types/react/global.d.ts","../../../node_modules/@types/react/node_modules/csstype/index.d.ts","../../../node_modules/@types/prop-types/index.d.ts","../../../node_modules/@types/react/index.d.ts","../../../node_modules/@lynx-js/types/types/background-thread/animation.d.ts","../../../node_modules/csstype/index.d.ts","../../../node_modules/@lynx-js/types/types/common/csstype.d.ts","../../../node_modules/@lynx-js/types/types/main-thread/animation.d.ts","../../../node_modules/@lynx-js/types/types/main-thread/element.d.ts","../../../node_modules/@lynx-js/types/types/common/events.d.ts","../../../node_modules/@lynx-js/types/types/common/system-info.d.ts","../../../node_modules/@lynx-js/types/types/common/performance.d.ts","../../../node_modules/@lynx-js/types/types/main-thread/lynx.d.ts","../../../node_modules/@lynx-js/types/types/main-thread/events.d.ts","../../../node_modules/@lynx-js/types/types/main-thread/index.d.ts","../../../node_modules/@lynx-js/types/types/common/lynx.d.ts","../../../node_modules/@lynx-js/types/types/common/global.d.ts","../../../node_modules/@lynx-js/types/types/common/props.d.ts","../../../node_modules/@lynx-js/types/types/common/element/component.d.ts","../../../node_modules/@lynx-js/types/types/common/element/filter-image.d.ts","../../../node_modules/@lynx-js/types/types/common/element/image.d.ts","../../../node_modules/@lynx-js/types/types/common/element/common.d.ts","../../../node_modules/@lynx-js/types/types/common/element/list.d.ts","../../../node_modules/@lynx-js/types/types/common/element/list-item.d.ts","../../../node_modules/@lynx-js/types/types/common/element/page.d.ts","../../../node_modules/@lynx-js/types/types/common/element/scroll-view.d.ts","../../../node_modules/@lynx-js/types/types/common/element/text.d.ts","../../../node_modules/@lynx-js/types/types/common/element/view.d.ts","../../../node_modules/@lynx-js/types/types/common/element/input.d.ts","../../../node_modules/@lynx-js/types/types/common/element/textarea.d.ts","../../../node_modules/@lynx-js/types/types/common/element/title-bar-view.d.ts","../../../node_modules/@lynx-js/types/types/common/element/svg.d.ts","../../../node_modules/@lynx-js/types/types/common/element/refresh.d.ts","../../../node_modules/@lynx-js/types/types/common/element/scroll-coordinator.d.ts","../../../node_modules/@lynx-js/types/types/common/element/viewpager.d.ts","../../../node_modules/@lynx-js/types/types/common/element/blur-view.d.ts","../../../node_modules/@lynx-js/types/types/common/element/webview.d.ts","../../../node_modules/@lynx-js/types/types/common/element/markdown.d.ts","../../../node_modules/@lynx-js/types/types/common/element/video.d.ts","../../../node_modules/@lynx-js/types/types/background-thread/lynx-performance-entry.d.ts","../../../node_modules/@lynx-js/types/types/common/element/frame.d.ts","../../../node_modules/@lynx-js/types/types/common/element/overlay.d.ts","../../../node_modules/@lynx-js/types/types/common/element/element.d.ts","../../../node_modules/@lynx-js/types/types/common/element/methods.d.ts","../../../node_modules/@lynx-js/types/types/common/element/attributes.d.ts","../../../node_modules/@lynx-js/types/types/common/element/index.d.ts","../../../node_modules/@lynx-js/types/types/common/console.d.ts","../../../node_modules/@lynx-js/types/types/common/index.d.ts","../../../node_modules/@lynx-js/types/types/background-thread/event.d.ts","../../../node_modules/@lynx-js/types/types/background-thread/nodes-ref.d.ts","../../../node_modules/@lynx-js/types/types/background-thread/app.d.ts","../../../node_modules/@lynx-js/types/types/background-thread/performance.d.ts","../../../node_modules/@lynx-js/types/types/background-thread/fetch.d.ts","../../../node_modules/@lynx-js/types/types/background-thread/lynx.d.ts","../../../node_modules/@lynx-js/types/types/background-thread/native-modules.d.ts","../../../node_modules/@lynx-js/types/types/background-thread/text-encoder-decoder.d.ts","../../../node_modules/@lynx-js/types/types/background-thread/index.d.ts","../../../node_modules/@lynx-js/types/types/index.d.ts","../../../node_modules/@types/react/jsx-runtime.d.ts","../../../node_modules/@lynx-js/react/runtime/jsx-runtime/index.d.ts","../../sqlite/dist/values/ids.d.ts","../../sqlite/dist/values/int64.d.ts","../../sqlite/dist/values/local-date-time.d.ts","../../sqlite/dist/values/sql-value.d.ts","../../sqlite/dist/codecs/codecs.d.ts","../../foundation/dist/collections.d.ts","../../foundation/dist/culture/digits.d.ts","../../foundation/dist/culture/culture.d.ts","../../foundation/dist/culture/calendar.d.ts","../../foundation/dist/culture/date-format.d.ts","../../foundation/dist/culture/duration.d.ts","../../foundation/dist/culture/numbers.d.ts","../../foundation/dist/culture/strings.d.ts","../../foundation/dist/culture/relative-time.d.ts","../../foundation/dist/culture/index.d.ts","../../foundation/dist/enums/index.d.ts","../../foundation/dist/errors.d.ts","../../foundation/dist/exec/diagnostics.d.ts","../../foundation/dist/services/abort.d.ts","../../foundation/dist/exec/options.d.ts","../../foundation/dist/services/clock.d.ts","../../foundation/dist/exec/trace.d.ts","../../foundation/dist/exec/safe-executor.d.ts","../../foundation/dist/exec/index.d.ts","../../foundation/dist/icons/generated/glyph-svg.d.ts","../../foundation/dist/icons/glyph.d.ts","../../foundation/dist/icons/icon.d.ts","../../foundation/dist/icons/glyph-slots.d.ts","../../foundation/dist/icons/icon-fonts.d.ts","../../foundation/dist/icons/svg.d.ts","../../foundation/dist/icons/index.d.ts","../../foundation/dist/services/preferences.d.ts","../../foundation/dist/services/contracts.d.ts","../../foundation/dist/services/index.d.ts","../../foundation/dist/theme/color.d.ts","../../foundation/dist/tokens/generated/palettes.d.ts","../../foundation/dist/theme/theme.d.ts","../../foundation/dist/theme/control-colors.d.ts","../../foundation/dist/theme/variants.d.ts","../../foundation/dist/theme/index.d.ts","../../foundation/dist/tokens/generated/metrics.d.ts","../../foundation/dist/tokens/layout-metrics.d.ts","../../foundation/dist/tokens/css-vars.d.ts","../../foundation/dist/tokens/index.d.ts","../../foundation/dist/index.d.ts","../../sqlite/dist/driver/types.d.ts","../../sqlite/dist/contract/run-contract.d.ts","../../sqlite/dist/errors.d.ts","../../sqlite/dist/schema/columns.d.ts","../../sqlite/dist/query/expr.d.ts","../../sqlite/dist/schema/policies.d.ts","../../sqlite/dist/schema/entity.d.ts","../../sqlite/dist/query/compile.d.ts","../../sqlite/dist/query/builders.d.ts","../../sqlite/dist/repo/audit.d.ts","../../sqlite/dist/session/ambient.d.ts","../../sqlite/dist/session/locator.d.ts","../../sqlite/dist/session/migrations.d.ts","../../sqlite/dist/session/mutex.d.ts","../../sqlite/dist/session/write-hooks.d.ts","../../sqlite/dist/session/database.d.ts","../../sqlite/dist/session/cache.d.ts","../../sqlite/dist/session/scope.d.ts","../../sqlite/dist/repo/repository.d.ts","../../sqlite/dist/session/schema-setup.d.ts","../../sqlite/dist/index.d.ts","../src/protocol.ts","../src/transport.ts","../src/driver.ts","../src/services.ts","../src/speech.ts","../src/index.ts","../../../node_modules/@lynx-js/react/runtime/lib/runtime-marker.d.ts","../../../node_modules/preact/src/jsx.d.ts","../../../node_modules/preact/src/dom.d.ts","../../../node_modules/preact/src/index.d.ts","../../../node_modules/preact/hooks/src/index.d.ts","../../../node_modules/@lynx-js/react/runtime/lib/core/hooks/react.d.ts","../../../node_modules/@lynx-js/react/runtime/lib/snapshot/lynx/runwithforce.d.ts","../../../node_modules/@lynx-js/react/runtime/lib/lynx.d.ts","../../../node_modules/preact/compat/src/suspense.d.ts","../../../node_modules/preact/compat/src/index.d.ts","../../../node_modules/@lynx-js/react/runtime/lib/snapshot/lynx/children.d.ts","../../../node_modules/@lynx-js/react/runtime/lib/snapshot/lynx/element.d.ts","../../../node_modules/@lynx-js/react/runtime/lib/snapshot/lynx/portalspending.d.ts","../../../node_modules/@lynx-js/react/runtime/lib/snapshot/lynx/portals.d.ts","../../../node_modules/@lynx-js/react/runtime/lib/snapshot/lynx/suspense.d.ts","../../../node_modules/@lynx-js/react/runtime/lib/core/hooks/uselynxglobaleventlistener.d.ts","../../../node_modules/@lynx-js/react/runtime/lib/core/globalprops.d.ts","../../../node_modules/@lynx-js/react/runtime/lib/core/initdata.d.ts","../../../node_modules/@lynx-js/react/runtime/lib/core/background-function/run-on-background.d.ts","../../../node_modules/@lynx-js/react/runtime/lib/snapshot/worklet/call/runonmainthread.d.ts","../../../node_modules/@lynx-js/react/runtime/lib/worklet-runtime/api/animation/effect.d.ts","../../../node_modules/@lynx-js/react/runtime/lib/worklet-runtime/api/animation/animation.d.ts","../../../node_modules/@lynx-js/react/runtime/lib/worklet-runtime/api/element.d.ts","../../../node_modules/@lynx-js/react/runtime/lib/worklet-runtime/bindings/types.d.ts","../../../node_modules/@lynx-js/react/runtime/lib/core/main-thread-ref.d.ts","../../../node_modules/@lynx-js/react/runtime/lib/lynx-api.d.ts","../../../node_modules/@lynx-js/react/runtime/lib/index.d.ts","../../../node_modules/@lynx-js/react/types/react.docs.d.ts","../../../node_modules/@lynx-js/react/types/react.d.ts","../src/media.tsx"],"fileIdsList":[[41,95,96,198,199],[173,174,179,185],[41,174],[41,173,174,179,185],[41,193],[170,173,175,177,179,180,181,183,184,195],[41,185,186,187,188,189,194],[175,176],[173,179],[41,95,198,199],[41,95,173,182,198,199],[173],[190],[192],[191],[41,95,97,197,198,199],[41,175,195,196],[42,85,86,87],[53],[42,77,86,87,88,89,91,92,93],[42,85,86,87,89,90],[85,87],[42,85],[49,77],[43],[44],[51,55],[47],[41,51,55,56,57,58,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,78,79],[47,51,55,77],[47,51,55],[56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,78,79,80,81,82],[47,51,55,59],[47,60,63],[46],[48,52,53,94],[44,47,48,49,51,53,54,55,83,84],[44,47],[52,85,94],[45,85],[46,47,55],[45,46,50,51],[49,85],[38,39,40],[41],[171,173,174,178],[171,172],[105],[104],[104,105,106],[104,105,106,107,108,109,110,111],[110],[115,117,119,120],[116],[110,115,116,117,118,119],[115,118],[124],[123],[122,123,124,125,126,127],[103,112,113,114,121,128,131,137,141],[114,116,118,129],[116,118,129,130],[114],[132,134],[132,134,135,136],[132,133],[113,132,133],[133,138,139],[133,138,139,140],[97,163,164,165],[97,164,165,166,167,168],[95,97,142,164,198],[97],[97,142,164],[97,163,164],[98,99,100,101],[101,143],[101,142],[142],[98,99,100,101,102,143,144,145,146,147,148,149,150,151,152,153,154,155,157,158,159,160,161,162],[101,102,147,149,150],[101,102,147],[101,102,146],[98,100,149],[100,101,142,143,147,148,149,151,157,158,159,160,163],[99,100,102],[146,147,148],[147],[98,100,142],[148,149,158],[98,100,102,142,143,149,151,153,154,155,156,157,159],[142,149],[102,143,149,158],[143,148,149,151,157,158,159,161],[142,145,147,149],[99]],"fileInfos":[{"version":"c430d44666289dae81f30fa7b2edebf186ecc91a2d4c71266ea6ae76388792e1","affectsGlobalScope":true,"impliedFormat":1},{"version":"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","impliedFormat":1},{"version":"3facaf05f0c5fc569c5649dd359892c98a85557e3e0c847964caeb67076f4d75","impliedFormat":1},{"version":"e44bb8bbac7f10ecc786703fe0a6a4b952189f908707980ba8f3c8975a760962","impliedFormat":1},{"version":"5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","impliedFormat":1},{"version":"68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","impliedFormat":1},{"version":"080941d9f9ff9307f7e27a83bcd888b7c8270716c39af943532438932ec1d0b9","affectsGlobalScope":true,"impliedFormat":1},{"version":"c57796738e7f83dbc4b8e65132f11a377649c00dd3eee333f672b8f0a6bea671","affectsGlobalScope":true,"impliedFormat":1},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true,"impliedFormat":1},{"version":"515d0b7b9bea2e31ea4ec968e9edd2c39d3eebf4a2d5cbd04e88639819ae3b71","affectsGlobalScope":true,"impliedFormat":1},{"version":"0559b1f683ac7505ae451f9a96ce4c3c92bdc71411651ca6ddb0e88baaaad6a3","affectsGlobalScope":true,"impliedFormat":1},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true,"impliedFormat":1},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true,"impliedFormat":1},{"version":"fb0f136d372979348d59b3f5020b4cdb81b5504192b1cacff5d1fbba29378aa1","affectsGlobalScope":true,"impliedFormat":1},{"version":"d15bea3d62cbbdb9797079416b8ac375ae99162a7fba5de2c6c505446486ac0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"68d18b664c9d32a7336a70235958b8997ebc1c3b8505f4f1ae2b7e7753b87618","affectsGlobalScope":true,"impliedFormat":1},{"version":"eb3d66c8327153d8fa7dd03f9c58d351107fe824c79e9b56b462935176cdf12a","affectsGlobalScope":true,"impliedFormat":1},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true,"impliedFormat":1},{"version":"69ab18c3b76cd9b1be3d188eaf8bba06112ebbe2f47f6c322b5105a6fbc45a2e","affectsGlobalScope":true,"impliedFormat":1},{"version":"a680117f487a4d2f30ea46f1b4b7f58bef1480456e18ba53ee85c2746eeca012","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true,"impliedFormat":1},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"954296b30da6d508a104a3a0b5d96b76495c709785c1d11610908e63481ee667","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac9538681b19688c8eae65811b329d3744af679e0bdfa5d842d0e32524c73e1c","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a969edff4bd52585473d24995c5ef223f6652d6ef46193309b3921d65dd4376","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e9fbd7030c440b33d021da145d3232984c8bb7916f277e8ffd3dc2e3eae2bdb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true,"impliedFormat":1},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true,"impliedFormat":1},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true,"impliedFormat":1},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true,"impliedFormat":1},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true,"impliedFormat":1},{"version":"74f7fa2d027d5b33eb0471c8e82a6c87216223181ec31247c357a3e8e2fddc5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e7f8264d0fb4c5339605a15daadb037bf238c10b654bb3eee14208f860a32ea","affectsGlobalScope":true,"impliedFormat":1},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true,"impliedFormat":1},{"version":"eb5b19b86227ace1d29ea4cf81387279d04bb34051e944bc53df69f58914b788","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac51dd7d31333793807a6abaa5ae168512b6131bd41d9c5b98477fc3b7800f9f","impliedFormat":1},{"version":"87d9d29dbc745f182683f63187bf3d53fd8673e5fca38ad5eaab69798ed29fbc","impliedFormat":1},{"version":"035312d4945d13efa134ae482f6dc56a1a9346f7ac3be7ccbad5741058ce87f3","affectsGlobalScope":true,"impliedFormat":1},{"version":"07b03f752ae52a7130e06c5a8399d3a0dde07a1a634f8430b80cd6236c56b5c8","impliedFormat":1},{"version":"8a8eb4ebffd85e589a1cc7c178e291626c359543403d58c9cd22b81fab5b1fb9","impliedFormat":1},{"version":"acbac4ca6cd4b2b459debc4a274535775cb6278a8315be383fafa623ab78f18e","impliedFormat":1},{"version":"e421d0b097c78304a2597c1f33da586630e1dc665ae381c0c36e5ebc4aaf4566","impliedFormat":1},{"version":"adf624c89a0d509a789f3c0bf522969d2c47033dbeb50920b37cd89be475a65e","impliedFormat":1},{"version":"8ff8dade82d215fba372ec8ca795cb433997a41287e049acf294dd50cba08cc4","impliedFormat":1},{"version":"b32b532dcbe0a91d71fd94cb780e94bdfdce10be21608d914c29fb4b8939b24a","impliedFormat":1},{"version":"eb2b64881998b562a4fe9330e55aa2466cd3a41a1a57e93feac6555218cec06f","impliedFormat":1},{"version":"6db1694d205177322d792d924335b046b80607445a45c0d2de1fcffd190b48c0","impliedFormat":1},{"version":"2b47193137d251e8a5d4cea2d67fe85a68199795ba019e41d635f7cf5f8a35c5","impliedFormat":1},{"version":"f7e5c3960dd9df65d83408b9be446f7119fa1db1dd8266dd343349d90c3bf2ce","impliedFormat":1},{"version":"09c6491ed74af89a4155feafedecaf77780f5751c66d4b65b18d30fc0e053a75","impliedFormat":1},{"version":"188b01044640e5ef65f6edf0dd6e6454f02dd19f4ead66b9e03ebe26cc7298ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"c2be64f223b024c0b70c5096a8c361c9e11c7644f3bd8325d19c2720ee7087cd","impliedFormat":1},{"version":"5bf51107315834a209b08395b141e262b7d143d14f6b4e4d403d8e020cef7e32","impliedFormat":1},{"version":"db0dcbe48d5cb38315083b412c8ab6995b0d42dc73b286833e296827feb0e5b4","impliedFormat":1},{"version":"b3e4a49a3ba19463662e7b821544948b953d2f6708370d42406bda558084000c","impliedFormat":1},{"version":"90bebc017d1c8408719f5a056813cce04e171a53469c263a136c35076121bab0","impliedFormat":1},{"version":"0675f9dddf11b81ec71825d5d97fdd789e445003506255513e0fc829ebfb795a","impliedFormat":1},{"version":"32d1e153cac16ca3a3f5f6b68fae76cddcda509950fa00d038c465776359db0c","impliedFormat":1},{"version":"0d85d0fa55dd433acf924675d7e976c025c8521c91a76079844cd15e52855ccf","impliedFormat":1},{"version":"89da6ea3ee9735e712691227b0e5ee74381779f9ad8b0f4fb7ced0247b16735a","impliedFormat":1},{"version":"37f90d8b4384dae49b873e620b7fff15655c706105104809114ba98df6373124","impliedFormat":1},{"version":"7618f7fdf0abf7f712cefe766ac1ab7fcd1f8e753c513e57d3ada9ada3a57257","impliedFormat":1},{"version":"759df9936f492afeacebec2cea4efafdb647951e0e5edfc4c677ce2441eac9d0","impliedFormat":1},{"version":"8d8848528b40a84ab42200e89d08f3d5cd83efa275de1bb70ae38cb9e6fd5911","impliedFormat":1},{"version":"0e323630cbfda771430e2720f6a2f02f257becd8fb9722aa975ae773fb572210","impliedFormat":1},{"version":"56dbc770513baae28f7cfbadeba5078bb13a37a13132a5292e98a8b103312b98","impliedFormat":1},{"version":"84ff906032fe12e816bfb7441cee6726243e5a7316c4f2d6b0a6c149f1a91a16","impliedFormat":1},{"version":"a8641f25f667160f356c504936576de22899e50ea575d7a4da47fe3b3704dd93","impliedFormat":1},{"version":"dcbbe1fb0f2c0efc12e29db8bbccb5b82513384d01d7a55342065cb0611da272","impliedFormat":1},{"version":"af209189a194cf5ad1f7b22dd680b52843fec2e30f1283be20b2977872fd4424","impliedFormat":1},{"version":"14745f699217e89ff1034f7be978bc28c195472a597b5f36442ef83d954d47b0","impliedFormat":1},{"version":"10c1feac0328f8f90a81f348b7f3c6d3c3b3454e46fc045ba1a706406c58fd8e","impliedFormat":1},{"version":"f64cd565aca17df45f4666473da75e4ce51a2610e2ed1c31198e9f9325747a24","impliedFormat":1},{"version":"e415a17ab6a413d6be640457231e045541405eab1f0f370c7dd1e5567aa25999","impliedFormat":1},{"version":"8c03a41d6dc701b6648db83d71a92dc27147d7677ab5d70f32675e7e37b3795a","impliedFormat":1},{"version":"09c18bc60888c58e8f4568b6ca973af72613a8a01e7b213aab778e910ae18b2f","impliedFormat":1},{"version":"5258d7af58615ea380d959cbcb6d83cb7b9841b8c8267f5a0fcb36c092dadbdb","impliedFormat":1},{"version":"b2d74af681f440a07e714ae9a33e3ea49c79870b9674058114c0404d2aa2f190","impliedFormat":1},{"version":"24f31e43eb3505e5d2946315e7b8ee8b426dfbe92c3031e435a4eb2d9dd8d69f","affectsGlobalScope":true,"impliedFormat":1},{"version":"679f7b45a77210e6dd0d72a4b81fd177868d2eacfd8ee6919ce6babd7512562d","impliedFormat":1},{"version":"c669ee7ba01fa6a60b17c3535f96b65fa82dfd2a475a8760364f2f3952f9bcbd","impliedFormat":1},{"version":"a8b121f6a75d603075e62793ff0c109112e882dd6ca2b70bdccbd8d8f753429b","impliedFormat":1},{"version":"f378d7ed5e3ecbe382ade55127a9c98e826c76f786e06effad6fde91a7023d55","impliedFormat":1},{"version":"4e3e9539df72b3bfcc56fa13140070020dac72f1eff39237b11253482cb99847","impliedFormat":1},{"version":"5a47b3a2bbe2c9b015fe356462afe0abe391c592fffbe277126e2415e0811967","impliedFormat":1},{"version":"a3e797c70a421cda37cdea4349dced37dceb1611669652d9c4c5523467a55cbf","impliedFormat":1},{"version":"9164e652ff4e7cbd993ca20acd0e2ad7e1cb775a7aefc577b506cf588763ec42","impliedFormat":1},{"version":"e52840670587e82e129c9bfc6a2f42d9c2f2e1fd6ce176fea998383a8c941ea5","impliedFormat":1},{"version":"31ca1ee726f5d7c7709913b98be76fc40fdfaaca6ad7fafc222108981e11227c","impliedFormat":1},{"version":"556db73da59f5162cdf5c7ea1bc3b063b6ccb758078ef6517ad6f6e4ae7b199a","impliedFormat":1},{"version":"0a2c8ef08611f5a5f711c7b10ba70d10dc1c6af0c9dba8168cbbf34911b74188","impliedFormat":1},{"version":"1d6ef45145a9939a43062fe18188d4f7bdfdf4547978e1f6b7c9089fe53e81e5","impliedFormat":1},{"version":"42c169fb8c2d42f4f668c624a9a11e719d5d07dacbebb63cbcf7ef365b0a75b3","impliedFormat":1},{"version":"509a86836776d5c821901abc16a2d21de674d2c8943ceb8d018049bf324bc56c","impliedFormat":99},"bbe47f7ebb177015803b69bad47ecf0e5987449cae5dd498664a9e4885d7cdff","4f260a074507a0065f3cd71d1adc1b361f5337b3db9e8d01589d5872e9387a4a","7674dcae15d29bcba5a7e8c26defdb06bf75297bfaa3025037bcc1e4df7b0ae1","97ff954e351fb81e182a8bc0d7c6e3625054e2c37ea5df0ad0ea12952bd5d9c0","c65ecf314f579465ceba2eb45ec7529f977a7809480ff6119c7c129022472cca","d533d1fe3018752aa47ee74ae5dbdca34377441b891176ad99bd33366a64372f","44b82e4f46178400732ea809a906f7ffb9dd38efab331ca23e7ca4586bf903ef","d3dcff003bac57338c3e60be409d0ff167ec1ff513539a5534c7679332dbc992","16d64c89cec74fa23e8cee7c72acc7549f117dcf7845051870c40366c7522d09","11f9f682c02d51de68eed569f8de1e91c56df296a78f3a6c520b93d52aac2308","28b43630d8d29a300e1e5b0f5efb04c8f994d372fff1b653ce8bb70d4e011e1a","b06c48902c3d127098839c1a6500f41d3e21b2f07f277ba7de23ec730df7275d","94659c94bb0ae17efde21aaf59f2beb05d286bea13f2d3b2b288a6df4faeac18","a7a0e658ca429cfb5268d4bf2e2e6e9fe871ffd06b6588d65424ba4eba35338f","ab4c80cb9cf211a7cd100429cb4a823c5bd9f3618bf981e6504c6606abf08656","e60dd3f69310681e28813b910da7d57f5cf0078feccfd683d22a29b45bb7a035","ccd708c3fff99b4ec315e14315dce6b9e85f4c96d10131e9fd219edb6efbdb26","abc924fce33b86b9f8588de3a5be04c609fafa6cb1dc42629b3e9e3e18f7d018","f919e3a8b2d274b631ee4fee0c50eba1d3f39ceaccba04dff915e9f61e9f153c","3ae17ae844491c7326d070c3e70a94a9239394e7a1e84eb203eb1d57470e752e","d1b2970d348eb9f89ef0f0c6730d27e9331067a28f21c8bd667ba1138d5d3e93","b2c4833e6308888c3947953770b3343deaf4276c803bb36148991a3fb90b4f6a","41b7c8204ea79a93e380a228f5c744e9c9a80183133ac62633a4c76e3fdbd7db","d0a441df587b0632c16a813117f110574d903ddd0bc4d28599cc82ff8af7c094","b24ac81f4fcff56ed9827736abcf2f92ea5f86e16d66eb2ee3ccfa0bb8143bc9","068309ff581d08c276c4a772ddf3ab9c8090e591fc9917fdc6cdffc12c95a5bf","5c1d368a451520260ebb6c06121201f18abf86d80540290df6e424d372c5d0ed","bb3ccaacf5c19a7170939b7f735c6a94537fd95ad16b4247a6ad572b23183e74","2c8b86d9d29c4ea62762c3815ffe4fdb0c5dbc0dd096b9703236010f4a17c255","9528dc401d1a2502393af70423c895c3df61ef62240c0dca429a7cd1bd535b82","eebf270ff516980678bf039e03e18a9461f196aee2825d4d65f7d8a1fa362bff","ee4e73f46ce2f6517e82434bd9fc63c8b6b2179d37d74525899f124a76d06669","b04de3a3cd10559130d898b36da5612fda5db2c31c95b502077cad9fe538ed6c","bc4c3476708a74ae09c06bcdbb9765baaa135592e1cf6e25f2ee9a942c6cd5ec","29e6e980f179ac2981d68954462dfd4a4545f73c021f6a4c8a5f442c0e16e56c","faa64d270fa523f80fd31bc7340ee7f6a21632c2ea0cea6535bf5a34bcc6adf7","cbd4ce7ee090549d836cbffac2e76a192ac5b1c5f15bcbe29c06d32dc7006f34","ea5a5d5873c239b97d846fb8c78437e08ffd731924764f746c0ebcb7731d7648","fb6b5b4592e0eca5b8dc2507432e621a18c16d488ae8a610e4d1ddba1edff667","df85ab12f80aced067959d43bd7744017fccb1eb95adcfa343f16cba7c9ef670","613df14d2c8c0ba78286705c4ed01ec701ed03189ca3803dd69bc7086b9c02ff","298f8d2584216932ea238927177ef343d0b8da735eb40a5ba96b1f92e3675e33","c8082c78975419ed5a9f7daa655643425cdd98fee91bb82fd92d25f908c78465","3d1717d66cd1094139f0c1f0ed07ec56d91e4f5cd27e2b6309b6f195491e7f4a","6f1302be2fa00d8a64e3bd48b4ccdf5d77a402441d7728d48c2ecee706c79127","efb30c7f5b1e7e2c8941c95355161907fdd6f3f28941cceacf81edc11db89bad","37700ef2907cfee5d680c1ceb83ba8355223f375c8093f523b9ee2ce108c1044","a244408662b901d15567a5bcff4b29cd13a2a6c9bb2c27329eec616c48c8f144","cf4c01af6890db612fcb2eda144fa7a947a0fd005052f41485459d195cd7396d","770c7abd7f2b17ff392e7179ad9b14518bc284f18834ec6efc00b4c62b8a4846","f29c840652a2d49e5b24debe0c06f9dd6ca15f96421cbac112ba982258b16a94","44a3d19d7e208acb0261a1f718c047854d0794683a0d5c2193522d310e36bdec","090ce3b05198a4c287542354fcedbfd570d87b2f32d0363cab0eb48989aecd2e","ad4b4e5abb5f01f966304dfa08c347137a3fe77329c7ae6c17c824c3d4babf33","b78cb18aa49943470bbab837676a7c35d1dfbfae7241c144f1d7fbd183989022","024aeda8ac048f7b98839a2b806e2034fe2fa1db797418cf8923a06fb32358c8","54f9c37e150e434622cff5d71fb87237c48497141cb379fc1ab4d019a4a43e2e","0d912ede0e33119759d7a3eee223fcbb83f1ca4c229719c62d54aa071487ceca","6f5878e8666a8abbb560dcc15b19c95ac5b0f4f85aabab2e804abb6a145030e4","ac683a7d8aa2506a3d5a3243ed94348867c85307ba54e46e6dd4a440b6a3012d","cf08b5dd44744b109ed2ddb8968bc8cbd4c6192b74180e5fb0fb1671f38d5dbc","efa3706b88ec75d05bfa7fa44d39af58305b7affda1b3789cf6d3688bb83070b","0a589d620f1d4719925c345e3c6e17dde3137765ea8db58c5a790f52ccdc58a6","8a3a12f093b91e0e3ca5f9909fb0cbaed59e2d864f04f103487f8f87095dfbfb","07d6a4c577cad80d9c1a2cf5d0e0ddae1aafadb264f5e41396999edd5963c94d","ba23c12c72c1523b39716c37b20fddaaab05f3f82139c8cdc33d552c3de70684",{"version":"7b7770361f404e9b167bce0ee92a608d8d14cb0b2f747ca9b300998db438a0fb","signature":"81d5aa9d15ee1ca18b073ecd13aa979f24d9100c2842f9e254d27992e014dd8a"},{"version":"b196a892a7087bc69d5e14a1647aaf5acfcdf995c1935a55afe405253c153b4c","signature":"f63a428eadbfdbc8c9137c4bdaa77a23988f7e82d1b01b5ef7d13e2f37d3d044"},{"version":"bb4df5f784c131c8fc70cfb1868ab99b883347d48c7260450d3c56958a996d60","signature":"b2b0e3e6fd8b425abfb54a11133c8b9abfc186d61ac86adc8deaba0b8c2f4e8f"},{"version":"faf3b4d50980988d8870ec5a63705d314d100f0338e3c9978362acea7a50e825","signature":"bd3f683b47db8bdf2c50f5c3becea6fd0610f1e70ae35e0a2d0605c7200b6719"},{"version":"a6ed2271e6d0d4530f902777df5c4123b86c872f50ef6796ec63b77f56ac11b9","signature":"46ec089d57ddc32a6869f7cdfb6a81e37a8b93eb3d4c15798ea7c2de2ff947d4"},{"version":"a2199b85e9360ee3c5f384b56666662168daecca269293ab815da773e1e6391d","signature":"f7e148507097b2e8e1703df7b0b9acb7b65afed60aa3addd303f0cc97dab640c"},{"version":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881","impliedFormat":99},{"version":"8a2ef120c4da7aab664148ed8d283aa0b98df4d5f15c570d830c8998ef05718b","impliedFormat":1},{"version":"4433d18f82991634feae5150a68f9b30f5b05b55416af8ff9f7251fb29431ed5","impliedFormat":1},{"version":"cc5d0b221824b7d8597e8a2bbdad2383af877eb564eaca392992049839e88c9e","impliedFormat":1},{"version":"21898d939444825cee1232af435330610b09171bea22a2f892cf2058d764b63d","impliedFormat":1},{"version":"6ec5f3b496e6f10c4f0a079e3b1102acef9c0bf5e3464909fa6e88b16a26480f","impliedFormat":99},{"version":"d9d320cf31f6d63659484f6c9ca4db4ae673daefa65118dd8589838925ff1397","impliedFormat":99},{"version":"027cf2216d065a97bf5a8ea126b3ea2734fab6cfe32adaff81ab4e94a1b51bbe","impliedFormat":99},{"version":"f6e6313fad233c5141220f7d25eae120cdd6e5079fbe0aba56821a1e99d05df8","impliedFormat":1},{"version":"9534c35b4577c193e499178deb47419fdadddd5e53af5ec8cb88218848013f65","impliedFormat":1},{"version":"804dca323c25404588a6e71d76e52eb09806f05e6013f0be1fcea1fb7eed5fa3","impliedFormat":99},{"version":"aeba529dfa69caa0efcdee1f1455540250d026522e5551b20b8a7ba9eebc707a","impliedFormat":99},{"version":"dfe6945467765f8e7843442a9dfbcf6b5526b6465b07b4c75a54a750329b5f17","impliedFormat":99},{"version":"7f9f6c9fe0e48c401d855d849e28112ffe2425569eca01b08b8c6112b8200695","impliedFormat":99},{"version":"68fcdc663627d12d336b420b19b3e54258844d0cbca0879f711c22aafd853352","impliedFormat":99},{"version":"6e97a7762ca61b836f275a14bf22a1696559bfa01bd6176df9498e717b5ff298","impliedFormat":99},{"version":"86535783bd695ee43e1a403e8cc50b1d643d3741df8074d30fbfae3b0438f996","impliedFormat":99},{"version":"7c94c072f4eef88b15710e2a6dd17036bfd943b390976aecc94af63df2f8a287","impliedFormat":99},{"version":"7e8a2efc54958a4ea7d678671d8703b00ae48a519d0f795a8f44f605abdba3d5","impliedFormat":99},{"version":"1409a9680115403cac91934df0062646e0a77f1b220b60faec5fe26cd775d9ca","impliedFormat":99},{"version":"335226d599a9382c9bea07d37e23bf998c1022c0f67e4d6d2b69633de6ac118f","impliedFormat":99},{"version":"ae430fd9bac320e71c3fe9299d90dcf67555d9a4f97ecaa35947b430ba8648ea","impliedFormat":99},{"version":"9061ff14146280f47d740b344ddd641c16df526ecaa868c348852277a9fb8686","impliedFormat":99},{"version":"7fa70acc5eed701b456f21e33f8f289e9e0e77fdd1f952385c33d6b9ecfb2021","impliedFormat":99},{"version":"16c6bbe197b6bf88db162c620e37218fab4c1c32892132d4aa33e461ae2b990a","impliedFormat":99},{"version":"9778598e1d86d1e544ab77fbc0bb5199d2fbb08ed386b3520732246b90005545","impliedFormat":99},{"version":"feed66ae8815d1981ad575482766fb9a82385e75cce35ae2f13be58e50c4349f","impliedFormat":99},{"version":"7e500d1f51b14c04c6dce8dcbadc5c48f4bec6fca0f321397c165868834916a2","affectsGlobalScope":true,"impliedFormat":99},{"version":"20c1041fbd4f1537686af4b707872b87c90a22201f8979e5def4554d28b46a5b","impliedFormat":99},{"version":"57ff3023920f09ea08ee1fb662518ff60312e81781e03c4e3b50cef3322143be","signature":"495d5d4a044fa18020972e7146c7416e467a364a9b23de05b096335d212ac9bb"}],"root":[[164,169],199],"options":{"composite":true,"declaration":true,"declarationDir":"./","declarationMap":true,"emitDeclarationOnly":true,"exactOptionalPropertyTypes":true,"jsx":4,"jsxImportSource":"@lynx-js/react","module":99,"noFallthroughCasesInSwitch":true,"noImplicitOverride":true,"noUncheckedIndexedAccess":true,"outDir":"./","rootDir":"../src","skipLibCheck":true,"strict":true,"target":6,"tsBuildInfoFile":"./.tsbuildinfo","verbatimModuleSyntax":true},"referencedMap":[[97,1],[186,2],[175,3],[187,4],[194,5],[196,6],[195,7],[177,8],[180,9],[181,10],[183,11],[184,12],[191,13],[190,14],[192,15],[193,14],[198,16],[197,17],[88,18],[90,19],[94,20],[91,21],[92,22],[87,23],[89,24],[44,25],[82,26],[73,27],[59,28],[56,27],[80,29],[57,27],[78,30],[58,31],[83,32],[66,31],[61,27],[60,33],[75,31],[81,34],[79,31],[62,27],[70,31],[71,31],[63,33],[69,31],[64,31],[67,31],[68,27],[76,31],[65,27],[72,31],[74,31],[47,35],[54,36],[85,37],[55,38],[95,39],[45,35],[46,40],[51,41],[52,42],[50,43],[41,44],[96,45],[179,46],[178,12],[174,12],[172,12],[173,47],[171,12],[106,48],[105,49],[107,50],[112,51],[109,49],[111,52],[110,48],[121,53],[117,54],[120,55],[119,56],[125,57],[126,57],[124,58],[128,59],[127,58],[142,60],[130,61],[131,62],[132,63],[135,64],[137,65],[134,66],[136,67],[140,68],[141,69],[166,70],[169,71],[199,72],[164,73],[167,74],[168,74],[165,75],[102,76],[144,77],[143,78],[145,79],[163,80],[151,81],[150,82],[147,83],[152,84],[161,85],[146,86],[149,87],[148,88],[153,89],[159,90],[158,91],[155,92],[162,93],[160,94],[157,95],[101,96]],"latestChangedDtsFile":"./media.d.ts","version":"5.9.3"}
|
|
1
|
+
{"fileNames":["../../../node_modules/typescript/lib/lib.es5.d.ts","../../../node_modules/typescript/lib/lib.es2015.d.ts","../../../node_modules/typescript/lib/lib.es2016.d.ts","../../../node_modules/typescript/lib/lib.es2017.d.ts","../../../node_modules/typescript/lib/lib.es2018.d.ts","../../../node_modules/typescript/lib/lib.es2019.d.ts","../../../node_modules/typescript/lib/lib.dom.d.ts","../../../node_modules/typescript/lib/lib.es2015.core.d.ts","../../../node_modules/typescript/lib/lib.es2015.collection.d.ts","../../../node_modules/typescript/lib/lib.es2015.generator.d.ts","../../../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../../node_modules/typescript/lib/lib.es2015.promise.d.ts","../../../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../../node_modules/typescript/lib/lib.es2016.intl.d.ts","../../../node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","../../../node_modules/typescript/lib/lib.es2017.date.d.ts","../../../node_modules/typescript/lib/lib.es2017.object.d.ts","../../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../../node_modules/typescript/lib/lib.es2017.string.d.ts","../../../node_modules/typescript/lib/lib.es2017.intl.d.ts","../../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../../node_modules/typescript/lib/lib.es2018.intl.d.ts","../../../node_modules/typescript/lib/lib.es2018.promise.d.ts","../../../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../../node_modules/typescript/lib/lib.es2019.array.d.ts","../../../node_modules/typescript/lib/lib.es2019.object.d.ts","../../../node_modules/typescript/lib/lib.es2019.string.d.ts","../../../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../../node_modules/typescript/lib/lib.es2019.intl.d.ts","../../../node_modules/typescript/lib/lib.decorators.d.ts","../../../node_modules/typescript/lib/lib.decorators.legacy.d.ts","../../../node_modules/@types/react/global.d.ts","../../../node_modules/@types/react/node_modules/csstype/index.d.ts","../../../node_modules/@types/prop-types/index.d.ts","../../../node_modules/@types/react/index.d.ts","../../../node_modules/@lynx-js/types/types/background-thread/animation.d.ts","../../../node_modules/csstype/index.d.ts","../../../node_modules/@lynx-js/types/types/common/csstype.d.ts","../../../node_modules/@lynx-js/types/types/main-thread/animation.d.ts","../../../node_modules/@lynx-js/types/types/main-thread/element.d.ts","../../../node_modules/@lynx-js/types/types/common/events.d.ts","../../../node_modules/@lynx-js/types/types/common/system-info.d.ts","../../../node_modules/@lynx-js/types/types/common/performance.d.ts","../../../node_modules/@lynx-js/types/types/main-thread/lynx.d.ts","../../../node_modules/@lynx-js/types/types/main-thread/events.d.ts","../../../node_modules/@lynx-js/types/types/main-thread/index.d.ts","../../../node_modules/@lynx-js/types/types/common/lynx.d.ts","../../../node_modules/@lynx-js/types/types/common/global.d.ts","../../../node_modules/@lynx-js/types/types/common/props.d.ts","../../../node_modules/@lynx-js/types/types/common/element/component.d.ts","../../../node_modules/@lynx-js/types/types/common/element/filter-image.d.ts","../../../node_modules/@lynx-js/types/types/common/element/image.d.ts","../../../node_modules/@lynx-js/types/types/common/element/common.d.ts","../../../node_modules/@lynx-js/types/types/common/element/inline-image.d.ts","../../../node_modules/@lynx-js/types/types/common/element/list.d.ts","../../../node_modules/@lynx-js/types/types/common/element/list-item.d.ts","../../../node_modules/@lynx-js/types/types/common/element/page.d.ts","../../../node_modules/@lynx-js/types/types/common/element/scroll-view.d.ts","../../../node_modules/@lynx-js/types/types/common/element/text.d.ts","../../../node_modules/@lynx-js/types/types/common/element/view.d.ts","../../../node_modules/@lynx-js/types/types/common/element/input.d.ts","../../../node_modules/@lynx-js/types/types/common/element/textarea.d.ts","../../../node_modules/@lynx-js/types/types/common/element/title-bar-view.d.ts","../../../node_modules/@lynx-js/types/types/common/element/svg.d.ts","../../../node_modules/@lynx-js/types/types/common/element/refresh.d.ts","../../../node_modules/@lynx-js/types/types/common/element/scroll-coordinator.d.ts","../../../node_modules/@lynx-js/types/types/common/element/viewpager.d.ts","../../../node_modules/@lynx-js/types/types/common/element/blur-view.d.ts","../../../node_modules/@lynx-js/types/types/common/element/webview.d.ts","../../../node_modules/@lynx-js/types/types/common/element/markdown.d.ts","../../../node_modules/@lynx-js/types/types/common/element/video.d.ts","../../../node_modules/@lynx-js/types/types/background-thread/lynx-performance-entry.d.ts","../../../node_modules/@lynx-js/types/types/common/element/frame.d.ts","../../../node_modules/@lynx-js/types/types/common/element/overlay.d.ts","../../../node_modules/@lynx-js/types/types/common/element/element.d.ts","../../../node_modules/@lynx-js/types/types/common/element/methods.d.ts","../../../node_modules/@lynx-js/types/types/common/element/attributes.d.ts","../../../node_modules/@lynx-js/types/types/common/element/index.d.ts","../../../node_modules/@lynx-js/types/types/common/console.d.ts","../../../node_modules/@lynx-js/types/types/common/index.d.ts","../../../node_modules/@lynx-js/types/types/background-thread/event.d.ts","../../../node_modules/@lynx-js/types/types/background-thread/nodes-ref.d.ts","../../../node_modules/@lynx-js/types/types/background-thread/app.d.ts","../../../node_modules/@lynx-js/types/types/background-thread/performance.d.ts","../../../node_modules/@lynx-js/types/types/background-thread/fetch.d.ts","../../../node_modules/@lynx-js/types/types/background-thread/lynx.d.ts","../../../node_modules/@lynx-js/types/types/background-thread/native-modules.d.ts","../../../node_modules/@lynx-js/types/types/background-thread/text-encoder-decoder.d.ts","../../../node_modules/@lynx-js/types/types/background-thread/index.d.ts","../../../node_modules/@lynx-js/types/types/index.d.ts","../../../node_modules/@types/react/jsx-runtime.d.ts","../../../node_modules/@lynx-js/react/runtime/jsx-runtime/index.d.ts","../../sqlite/dist/values/ids.d.ts","../../sqlite/dist/values/int64.d.ts","../../sqlite/dist/values/local-date-time.d.ts","../../sqlite/dist/values/sql-value.d.ts","../../sqlite/dist/codecs/codecs.d.ts","../../foundation/dist/collections.d.ts","../../foundation/dist/culture/digits.d.ts","../../foundation/dist/culture/culture.d.ts","../../foundation/dist/culture/calendar.d.ts","../../foundation/dist/culture/date-format.d.ts","../../foundation/dist/culture/duration.d.ts","../../foundation/dist/culture/numbers.d.ts","../../foundation/dist/culture/strings.d.ts","../../foundation/dist/culture/relative-time.d.ts","../../foundation/dist/culture/index.d.ts","../../foundation/dist/enums/index.d.ts","../../foundation/dist/errors.d.ts","../../foundation/dist/exec/diagnostics.d.ts","../../foundation/dist/services/abort.d.ts","../../foundation/dist/exec/options.d.ts","../../foundation/dist/services/clock.d.ts","../../foundation/dist/exec/trace.d.ts","../../foundation/dist/exec/safe-executor.d.ts","../../foundation/dist/exec/index.d.ts","../../foundation/dist/icons/generated/glyph-svg.d.ts","../../foundation/dist/icons/glyph.d.ts","../../foundation/dist/icons/icon.d.ts","../../foundation/dist/icons/glyph-slots.d.ts","../../foundation/dist/icons/icon-fonts.d.ts","../../foundation/dist/icons/svg.d.ts","../../foundation/dist/icons/index.d.ts","../../foundation/dist/services/preferences.d.ts","../../foundation/dist/services/contracts.d.ts","../../foundation/dist/services/motion.d.ts","../../foundation/dist/services/index.d.ts","../../foundation/dist/theme/color.d.ts","../../foundation/dist/tokens/generated/palettes.d.ts","../../foundation/dist/theme/theme.d.ts","../../foundation/dist/theme/control-colors.d.ts","../../foundation/dist/theme/variants.d.ts","../../foundation/dist/theme/index.d.ts","../../foundation/dist/tokens/generated/metrics.d.ts","../../foundation/dist/tokens/layout-metrics.d.ts","../../foundation/dist/tokens/css-vars.d.ts","../../foundation/dist/tokens/index.d.ts","../../foundation/dist/index.d.ts","../../sqlite/dist/driver/types.d.ts","../../sqlite/dist/contract/run-contract.d.ts","../../sqlite/dist/errors.d.ts","../../sqlite/dist/schema/columns.d.ts","../../sqlite/dist/query/expr.d.ts","../../sqlite/dist/schema/policies.d.ts","../../sqlite/dist/schema/entity.d.ts","../../sqlite/dist/query/compile.d.ts","../../sqlite/dist/query/builders.d.ts","../../sqlite/dist/repo/audit.d.ts","../../sqlite/dist/session/ambient.d.ts","../../sqlite/dist/session/locator.d.ts","../../sqlite/dist/session/migrations.d.ts","../../sqlite/dist/session/mutex.d.ts","../../sqlite/dist/session/write-hooks.d.ts","../../sqlite/dist/session/database.d.ts","../../sqlite/dist/session/cache.d.ts","../../sqlite/dist/session/scope.d.ts","../../sqlite/dist/repo/repository.d.ts","../../sqlite/dist/session/schema-setup.d.ts","../../sqlite/dist/index.d.ts","../src/protocol.ts","../src/transport.ts","../src/driver.ts","../src/services.ts","../src/speech.ts","../src/index.ts","../../../node_modules/@lynx-js/react/runtime/lib/runtime-marker.d.ts","../../../node_modules/preact/src/jsx.d.ts","../../../node_modules/preact/src/dom.d.ts","../../../node_modules/preact/src/index.d.ts","../../../node_modules/preact/hooks/src/index.d.ts","../../../node_modules/@lynx-js/react/runtime/lib/core/hooks/react.d.ts","../../../node_modules/@lynx-js/react/runtime/lib/snapshot/lynx/runwithforce.d.ts","../../../node_modules/@lynx-js/react/runtime/lib/lynx.d.ts","../../../node_modules/preact/compat/src/suspense.d.ts","../../../node_modules/preact/compat/src/index.d.ts","../../../node_modules/@lynx-js/react/runtime/lib/snapshot/lynx/children.d.ts","../../../node_modules/@lynx-js/react/runtime/lib/snapshot/lynx/element.d.ts","../../../node_modules/@lynx-js/react/runtime/lib/snapshot/lynx/portalspending.d.ts","../../../node_modules/@lynx-js/react/runtime/lib/snapshot/lynx/portals.d.ts","../../../node_modules/@lynx-js/react/runtime/lib/snapshot/lynx/suspense.d.ts","../../../node_modules/@lynx-js/react/runtime/lib/core/hooks/uselynxglobaleventlistener.d.ts","../../../node_modules/@lynx-js/react/runtime/lib/core/globalprops.d.ts","../../../node_modules/@lynx-js/react/runtime/lib/core/initdata.d.ts","../../../node_modules/@lynx-js/react/runtime/lib/core/lynx-data-processors.d.ts","../../../node_modules/@lynx-js/react/runtime/lib/core/background-function/run-on-background.d.ts","../../../node_modules/@lynx-js/react/runtime/lib/snapshot/worklet/call/runonmainthread.d.ts","../../../node_modules/@lynx-js/react/runtime/lib/worklet-runtime/api/animation/effect.d.ts","../../../node_modules/@lynx-js/react/runtime/lib/worklet-runtime/api/animation/animation.d.ts","../../../node_modules/@lynx-js/react/runtime/lib/worklet-runtime/api/element.d.ts","../../../node_modules/@lynx-js/react/runtime/lib/worklet-runtime/bindings/types.d.ts","../../../node_modules/@lynx-js/react/runtime/lib/core/main-thread-ref.d.ts","../../../node_modules/@lynx-js/react/runtime/lib/core/main-thread-object.d.ts","../../../node_modules/@lynx-js/react/runtime/lib/lynx-api.d.ts","../../../node_modules/@lynx-js/react/runtime/lib/index.d.ts","../../../node_modules/@lynx-js/react/types/react.docs.d.ts","../../../node_modules/@lynx-js/react/types/react.d.ts","../src/media.tsx"],"fileIdsList":[[41,96,97,202,203],[175,176,181,187],[41,176],[41,175,176,181,187],[41,196],[172,175,177,179,181,182,183,185,186,199],[41,187,188,189,190,191,192,197,198],[177,178],[175,181],[41,96,202,203],[41,96,175,184,202,203],[175],[193],[195],[194],[41,96,98,201,202,203],[41,177,199,200],[42,86,87,88],[53],[42,78,87,88,89,90,92,93,94],[42,86,87,88,90,91],[86,88],[42,86],[49,78],[43],[44],[51,55],[47],[41,51,55,56,57,58,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,79,80],[47,51,55,78],[47,51,55],[56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,79,80,81,82,83],[58,59],[47,51,55,59],[47,61,64],[46],[48,52,53,95],[44,47,48,49,51,53,54,55,84,85],[44,47],[52,86,95],[45,86],[46,47,55],[45,46,50,51],[49,86],[38,39,40],[41],[173,175,176,180],[173,174],[106],[105],[105,106,107],[105,106,107,108,109,110,111,112],[111],[116,118,120,121],[117],[111,116,117,118,119,120],[116,119],[125],[124],[123,124,125,126,127,128],[104,113,114,115,122,129,133,139,143],[115,117,119,130],[117,119,130,131,132],[115],[134,136],[134,136,137,138],[134,135],[114,134,135],[135,140,141],[135,140,141,142],[98,165,166,167],[98,166,167,168,169,170],[96,98,144,166,202],[98],[98,144,166],[98,165,166],[99,100,101,102],[102,145],[102,144],[144],[99,100,101,102,103,145,146,147,148,149,150,151,152,153,154,155,156,157,159,160,161,162,163,164],[102,103,149,151,152],[102,103,149],[102,103,148],[99,101,151],[101,102,144,145,149,150,151,153,159,160,161,162,165],[100,101,103],[148,149,150],[149],[99,101,144],[150,151,160],[99,101,103,144,145,151,153,155,156,157,158,159,161],[144,151],[103,145,151,160],[145,150,151,153,159,160,161,163],[144,147,149,151],[100]],"fileInfos":[{"version":"c430d44666289dae81f30fa7b2edebf186ecc91a2d4c71266ea6ae76388792e1","affectsGlobalScope":true,"impliedFormat":1},{"version":"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","impliedFormat":1},{"version":"3facaf05f0c5fc569c5649dd359892c98a85557e3e0c847964caeb67076f4d75","impliedFormat":1},{"version":"e44bb8bbac7f10ecc786703fe0a6a4b952189f908707980ba8f3c8975a760962","impliedFormat":1},{"version":"5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","impliedFormat":1},{"version":"68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","impliedFormat":1},{"version":"080941d9f9ff9307f7e27a83bcd888b7c8270716c39af943532438932ec1d0b9","affectsGlobalScope":true,"impliedFormat":1},{"version":"c57796738e7f83dbc4b8e65132f11a377649c00dd3eee333f672b8f0a6bea671","affectsGlobalScope":true,"impliedFormat":1},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true,"impliedFormat":1},{"version":"515d0b7b9bea2e31ea4ec968e9edd2c39d3eebf4a2d5cbd04e88639819ae3b71","affectsGlobalScope":true,"impliedFormat":1},{"version":"0559b1f683ac7505ae451f9a96ce4c3c92bdc71411651ca6ddb0e88baaaad6a3","affectsGlobalScope":true,"impliedFormat":1},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true,"impliedFormat":1},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true,"impliedFormat":1},{"version":"fb0f136d372979348d59b3f5020b4cdb81b5504192b1cacff5d1fbba29378aa1","affectsGlobalScope":true,"impliedFormat":1},{"version":"d15bea3d62cbbdb9797079416b8ac375ae99162a7fba5de2c6c505446486ac0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"68d18b664c9d32a7336a70235958b8997ebc1c3b8505f4f1ae2b7e7753b87618","affectsGlobalScope":true,"impliedFormat":1},{"version":"eb3d66c8327153d8fa7dd03f9c58d351107fe824c79e9b56b462935176cdf12a","affectsGlobalScope":true,"impliedFormat":1},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true,"impliedFormat":1},{"version":"69ab18c3b76cd9b1be3d188eaf8bba06112ebbe2f47f6c322b5105a6fbc45a2e","affectsGlobalScope":true,"impliedFormat":1},{"version":"a680117f487a4d2f30ea46f1b4b7f58bef1480456e18ba53ee85c2746eeca012","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true,"impliedFormat":1},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"954296b30da6d508a104a3a0b5d96b76495c709785c1d11610908e63481ee667","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac9538681b19688c8eae65811b329d3744af679e0bdfa5d842d0e32524c73e1c","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a969edff4bd52585473d24995c5ef223f6652d6ef46193309b3921d65dd4376","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e9fbd7030c440b33d021da145d3232984c8bb7916f277e8ffd3dc2e3eae2bdb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true,"impliedFormat":1},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true,"impliedFormat":1},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true,"impliedFormat":1},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true,"impliedFormat":1},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true,"impliedFormat":1},{"version":"74f7fa2d027d5b33eb0471c8e82a6c87216223181ec31247c357a3e8e2fddc5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e7f8264d0fb4c5339605a15daadb037bf238c10b654bb3eee14208f860a32ea","affectsGlobalScope":true,"impliedFormat":1},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true,"impliedFormat":1},{"version":"eb5b19b86227ace1d29ea4cf81387279d04bb34051e944bc53df69f58914b788","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac51dd7d31333793807a6abaa5ae168512b6131bd41d9c5b98477fc3b7800f9f","impliedFormat":1},{"version":"87d9d29dbc745f182683f63187bf3d53fd8673e5fca38ad5eaab69798ed29fbc","impliedFormat":1},{"version":"035312d4945d13efa134ae482f6dc56a1a9346f7ac3be7ccbad5741058ce87f3","affectsGlobalScope":true,"impliedFormat":1},{"version":"07b03f752ae52a7130e06c5a8399d3a0dde07a1a634f8430b80cd6236c56b5c8","impliedFormat":1},{"version":"8a8eb4ebffd85e589a1cc7c178e291626c359543403d58c9cd22b81fab5b1fb9","impliedFormat":1},{"version":"acbac4ca6cd4b2b459debc4a274535775cb6278a8315be383fafa623ab78f18e","impliedFormat":1},{"version":"e421d0b097c78304a2597c1f33da586630e1dc665ae381c0c36e5ebc4aaf4566","impliedFormat":1},{"version":"adf624c89a0d509a789f3c0bf522969d2c47033dbeb50920b37cd89be475a65e","impliedFormat":1},{"version":"f4664d05efc95a0fb8ee228d391e5271a1c8fc9bc3452c7bd760f9ca18b5a837","impliedFormat":1},{"version":"b32b532dcbe0a91d71fd94cb780e94bdfdce10be21608d914c29fb4b8939b24a","impliedFormat":1},{"version":"eb2b64881998b562a4fe9330e55aa2466cd3a41a1a57e93feac6555218cec06f","impliedFormat":1},{"version":"6db1694d205177322d792d924335b046b80607445a45c0d2de1fcffd190b48c0","impliedFormat":1},{"version":"d5465281e0aaffe267f46382c5f014740dc16e7fd8e1c57a0b0ddf8a2eab9be4","impliedFormat":1},{"version":"f7e5c3960dd9df65d83408b9be446f7119fa1db1dd8266dd343349d90c3bf2ce","impliedFormat":1},{"version":"09c6491ed74af89a4155feafedecaf77780f5751c66d4b65b18d30fc0e053a75","impliedFormat":1},{"version":"188b01044640e5ef65f6edf0dd6e6454f02dd19f4ead66b9e03ebe26cc7298ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"d34d6de13412a24e8d9252040d972edce68b4db8d8a64a3f7fd63ca1fda3a67f","impliedFormat":1},{"version":"5bf51107315834a209b08395b141e262b7d143d14f6b4e4d403d8e020cef7e32","impliedFormat":1},{"version":"db0dcbe48d5cb38315083b412c8ab6995b0d42dc73b286833e296827feb0e5b4","impliedFormat":1},{"version":"b3e4a49a3ba19463662e7b821544948b953d2f6708370d42406bda558084000c","impliedFormat":1},{"version":"7c5e49b3d96da389b07d4ae3705c9f33a03dadcd04e6c0e76edece6d636f4ce7","impliedFormat":1},{"version":"24e9add3c802e7c9431b2c99edbbda02c1899901fd955dfb2e9ee3e9cdc93c4c","impliedFormat":1},{"version":"cd6611fd8cd9d40de1bdec02a3c5027c968c4aaf7639ee88ee48b2c41edeaddc","impliedFormat":1},{"version":"32d1e153cac16ca3a3f5f6b68fae76cddcda509950fa00d038c465776359db0c","impliedFormat":1},{"version":"0d85d0fa55dd433acf924675d7e976c025c8521c91a76079844cd15e52855ccf","impliedFormat":1},{"version":"89da6ea3ee9735e712691227b0e5ee74381779f9ad8b0f4fb7ced0247b16735a","impliedFormat":1},{"version":"77fbe475cb649a3598aa8f932ab5f6fe011444d94b52d329078c1f6d63c5d3bd","impliedFormat":1},{"version":"7618f7fdf0abf7f712cefe766ac1ab7fcd1f8e753c513e57d3ada9ada3a57257","impliedFormat":1},{"version":"db0441149b37984c225e945a112713d07616b34552d64f814c5cbf8e8c95f165","impliedFormat":1},{"version":"51f5a8fa3de5f13b21ba2604b4de8f0aae3d97acadab981d536a282ea26257af","impliedFormat":1},{"version":"0e323630cbfda771430e2720f6a2f02f257becd8fb9722aa975ae773fb572210","impliedFormat":1},{"version":"56dbc770513baae28f7cfbadeba5078bb13a37a13132a5292e98a8b103312b98","impliedFormat":1},{"version":"84ff906032fe12e816bfb7441cee6726243e5a7316c4f2d6b0a6c149f1a91a16","impliedFormat":1},{"version":"446e9432c63958893f65b4f7eea86fb5b506c2e0e7dd971a1f75e361b333a3db","impliedFormat":1},{"version":"dcbbe1fb0f2c0efc12e29db8bbccb5b82513384d01d7a55342065cb0611da272","impliedFormat":1},{"version":"af209189a194cf5ad1f7b22dd680b52843fec2e30f1283be20b2977872fd4424","impliedFormat":1},{"version":"18e37ffc10db360e66b0af639e55bcc66496830994734f64a97c6751458f7f3a","impliedFormat":1},{"version":"14137199a98201c616a7ee925bfaa9809b659dfbec733f86fa5dc5348a897de6","impliedFormat":1},{"version":"f64cd565aca17df45f4666473da75e4ce51a2610e2ed1c31198e9f9325747a24","impliedFormat":1},{"version":"e415a17ab6a413d6be640457231e045541405eab1f0f370c7dd1e5567aa25999","impliedFormat":1},{"version":"8c03a41d6dc701b6648db83d71a92dc27147d7677ab5d70f32675e7e37b3795a","impliedFormat":1},{"version":"e27b62f2410bb10697800d1c09ae2c48db46cd1eca18ffdd35022b1802bfd6d5","impliedFormat":1},{"version":"2ec0bfa713f313f8b2dc2bf64c5962433722ea7b413f69428106a65584656dc9","impliedFormat":1},{"version":"b2d74af681f440a07e714ae9a33e3ea49c79870b9674058114c0404d2aa2f190","impliedFormat":1},{"version":"24f31e43eb3505e5d2946315e7b8ee8b426dfbe92c3031e435a4eb2d9dd8d69f","affectsGlobalScope":true,"impliedFormat":1},{"version":"5b6a59d1e98f908badf07f243deb42ebd926b4e3d33ec00a5f50cbb8d0464488","impliedFormat":1},{"version":"c669ee7ba01fa6a60b17c3535f96b65fa82dfd2a475a8760364f2f3952f9bcbd","impliedFormat":1},{"version":"a8b121f6a75d603075e62793ff0c109112e882dd6ca2b70bdccbd8d8f753429b","impliedFormat":1},{"version":"f378d7ed5e3ecbe382ade55127a9c98e826c76f786e06effad6fde91a7023d55","impliedFormat":1},{"version":"4e3e9539df72b3bfcc56fa13140070020dac72f1eff39237b11253482cb99847","impliedFormat":1},{"version":"5a47b3a2bbe2c9b015fe356462afe0abe391c592fffbe277126e2415e0811967","impliedFormat":1},{"version":"b1248e5931d2a49c697203e69449c58dacd3d19f12d76bf11d816600a0cf423b","impliedFormat":1},{"version":"0b02aebd8c41453aefd3b1f33b9b9862a57770f8b21e916ecc5b35c0bedcc52b","impliedFormat":1},{"version":"e52840670587e82e129c9bfc6a2f42d9c2f2e1fd6ce176fea998383a8c941ea5","impliedFormat":1},{"version":"31ca1ee726f5d7c7709913b98be76fc40fdfaaca6ad7fafc222108981e11227c","impliedFormat":1},{"version":"556db73da59f5162cdf5c7ea1bc3b063b6ccb758078ef6517ad6f6e4ae7b199a","impliedFormat":1},{"version":"0a2c8ef08611f5a5f711c7b10ba70d10dc1c6af0c9dba8168cbbf34911b74188","impliedFormat":1},{"version":"1d6ef45145a9939a43062fe18188d4f7bdfdf4547978e1f6b7c9089fe53e81e5","impliedFormat":1},{"version":"42c169fb8c2d42f4f668c624a9a11e719d5d07dacbebb63cbcf7ef365b0a75b3","impliedFormat":1},{"version":"509a86836776d5c821901abc16a2d21de674d2c8943ceb8d018049bf324bc56c","impliedFormat":99},"bbe47f7ebb177015803b69bad47ecf0e5987449cae5dd498664a9e4885d7cdff","4f260a074507a0065f3cd71d1adc1b361f5337b3db9e8d01589d5872e9387a4a","7674dcae15d29bcba5a7e8c26defdb06bf75297bfaa3025037bcc1e4df7b0ae1","fd99d077c946173acf9d955de97346ce70eee272fad895a7859cbf0846a9c16e","c93a8b906c128dec5e80e64404e21ea7a083f71c58de46d0b9b3c144a99a8f24","d533d1fe3018752aa47ee74ae5dbdca34377441b891176ad99bd33366a64372f","44b82e4f46178400732ea809a906f7ffb9dd38efab331ca23e7ca4586bf903ef","d3dcff003bac57338c3e60be409d0ff167ec1ff513539a5534c7679332dbc992","16d64c89cec74fa23e8cee7c72acc7549f117dcf7845051870c40366c7522d09","11f9f682c02d51de68eed569f8de1e91c56df296a78f3a6c520b93d52aac2308","28b43630d8d29a300e1e5b0f5efb04c8f994d372fff1b653ce8bb70d4e011e1a","b06c48902c3d127098839c1a6500f41d3e21b2f07f277ba7de23ec730df7275d","94659c94bb0ae17efde21aaf59f2beb05d286bea13f2d3b2b288a6df4faeac18","a7a0e658ca429cfb5268d4bf2e2e6e9fe871ffd06b6588d65424ba4eba35338f","ab4c80cb9cf211a7cd100429cb4a823c5bd9f3618bf981e6504c6606abf08656","e60dd3f69310681e28813b910da7d57f5cf0078feccfd683d22a29b45bb7a035","ccd708c3fff99b4ec315e14315dce6b9e85f4c96d10131e9fd219edb6efbdb26","abc924fce33b86b9f8588de3a5be04c609fafa6cb1dc42629b3e9e3e18f7d018","f919e3a8b2d274b631ee4fee0c50eba1d3f39ceaccba04dff915e9f61e9f153c","3ae17ae844491c7326d070c3e70a94a9239394e7a1e84eb203eb1d57470e752e","d1b2970d348eb9f89ef0f0c6730d27e9331067a28f21c8bd667ba1138d5d3e93","b2c4833e6308888c3947953770b3343deaf4276c803bb36148991a3fb90b4f6a","41b7c8204ea79a93e380a228f5c744e9c9a80183133ac62633a4c76e3fdbd7db","d0a441df587b0632c16a813117f110574d903ddd0bc4d28599cc82ff8af7c094","b24ac81f4fcff56ed9827736abcf2f92ea5f86e16d66eb2ee3ccfa0bb8143bc9","068309ff581d08c276c4a772ddf3ab9c8090e591fc9917fdc6cdffc12c95a5bf","5c1d368a451520260ebb6c06121201f18abf86d80540290df6e424d372c5d0ed","bb3ccaacf5c19a7170939b7f735c6a94537fd95ad16b4247a6ad572b23183e74","2c8b86d9d29c4ea62762c3815ffe4fdb0c5dbc0dd096b9703236010f4a17c255","9528dc401d1a2502393af70423c895c3df61ef62240c0dca429a7cd1bd535b82","eebf270ff516980678bf039e03e18a9461f196aee2825d4d65f7d8a1fa362bff","ee4e73f46ce2f6517e82434bd9fc63c8b6b2179d37d74525899f124a76d06669","b04de3a3cd10559130d898b36da5612fda5db2c31c95b502077cad9fe538ed6c","216aa3f63d62f13b158445ff6a3bea8ccfd110f2bf219d607175518c9cc5b29d","f6d793b6c416157f50f82be85376ac2a9ee5a9f66e34a8317c9be19f8b4d41a7","29e6e980f179ac2981d68954462dfd4a4545f73c021f6a4c8a5f442c0e16e56c","faa64d270fa523f80fd31bc7340ee7f6a21632c2ea0cea6535bf5a34bcc6adf7","cbd4ce7ee090549d836cbffac2e76a192ac5b1c5f15bcbe29c06d32dc7006f34","ea5a5d5873c239b97d846fb8c78437e08ffd731924764f746c0ebcb7731d7648","fb6b5b4592e0eca5b8dc2507432e621a18c16d488ae8a610e4d1ddba1edff667","df85ab12f80aced067959d43bd7744017fccb1eb95adcfa343f16cba7c9ef670","613df14d2c8c0ba78286705c4ed01ec701ed03189ca3803dd69bc7086b9c02ff","298f8d2584216932ea238927177ef343d0b8da735eb40a5ba96b1f92e3675e33","c8082c78975419ed5a9f7daa655643425cdd98fee91bb82fd92d25f908c78465","3d1717d66cd1094139f0c1f0ed07ec56d91e4f5cd27e2b6309b6f195491e7f4a","6f1302be2fa00d8a64e3bd48b4ccdf5d77a402441d7728d48c2ecee706c79127","ec5e4d7021c750ea1b5b29b6c5d40e3cdbc180762b0806f0d0cbe117327162b9","594145b6622d5b02a40942c1a17fa6bb4fdb13a277ec703ee38018fc22d45034","a244408662b901d15567a5bcff4b29cd13a2a6c9bb2c27329eec616c48c8f144","4445f683ff67d2a80f6cbb5ae52039753c899890ebc27086ad17ffd005a8330d","050e9264752c154aa4f2d64f89c66a6e53dbf13a829c462aaa88eecc6e2e64b7","7cd6162b58f9275f44dc4e2293e0b7965680c2c271f7a2f8cece0b90ec61627c","6c2207dbeb0be8f55f38992b4b780ec29a8a0a0787b7076d8460ea71a27d5187","da3481884a0bbe5a9dfb44c1819ca7ad109cc1712d8a793eeef8742d94322ac1","f007826b8993773396aea70f1ad8b3e812aa33ee356b4c4034125efbc727ebb4","d25b3f0682520845fa1a1f42cdc23fbf5c0f7f8dc9806ec74d47f075d29b06dd","0a9f595404a498a83031f74e28f9fb3218038195f032a83da72146b3f8b5fb8c","54f9c37e150e434622cff5d71fb87237c48497141cb379fc1ab4d019a4a43e2e","0a0bb371deaec9e4e6580408c196fe5f0b668764c7a774f3f3f8a1447df0316f","6f5878e8666a8abbb560dcc15b19c95ac5b0f4f85aabab2e804abb6a145030e4","42997ccaad776930cb3b67f9585e680fb600e60c4464004d79eb2811869d047b","f341bef577fe12a6a779c986f89598855b39fe27810f12b2a181df6182cfc986","ebb1f50c2d70bc6310ac7eb99218ae3c0aba56d532964aff7a6872c668345d06","e34992c536be7eba4356e76d29f0cea34c8ef825ebe5f7f57841e48c38a6db17","e4f379e50c84ebb1be3476e4318c27597a0fcd518d7afca038f43a7ba4798c3c","09a9cb77ae0718ba8ccac3503fad79a896f071a24a64f8d40414d9c4f49e1b31","09ecbb99c6068a330c19d3c2efba4061bc1f3f7c55c1ae792398cc072d8a0dee",{"version":"7b7770361f404e9b167bce0ee92a608d8d14cb0b2f747ca9b300998db438a0fb","signature":"81d5aa9d15ee1ca18b073ecd13aa979f24d9100c2842f9e254d27992e014dd8a"},{"version":"b196a892a7087bc69d5e14a1647aaf5acfcdf995c1935a55afe405253c153b4c","signature":"f63a428eadbfdbc8c9137c4bdaa77a23988f7e82d1b01b5ef7d13e2f37d3d044"},{"version":"bb4df5f784c131c8fc70cfb1868ab99b883347d48c7260450d3c56958a996d60","signature":"b2b0e3e6fd8b425abfb54a11133c8b9abfc186d61ac86adc8deaba0b8c2f4e8f"},{"version":"0f5c336dc6acf154d2d0345e712c571683389b378778690a43d6d60ae386d4ea","signature":"bd3f683b47db8bdf2c50f5c3becea6fd0610f1e70ae35e0a2d0605c7200b6719"},{"version":"a6ed2271e6d0d4530f902777df5c4123b86c872f50ef6796ec63b77f56ac11b9","signature":"46ec089d57ddc32a6869f7cdfb6a81e37a8b93eb3d4c15798ea7c2de2ff947d4"},{"version":"a2199b85e9360ee3c5f384b56666662168daecca269293ab815da773e1e6391d","signature":"f7e148507097b2e8e1703df7b0b9acb7b65afed60aa3addd303f0cc97dab640c"},{"version":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881","impliedFormat":99},{"version":"8a2ef120c4da7aab664148ed8d283aa0b98df4d5f15c570d830c8998ef05718b","impliedFormat":1},{"version":"4433d18f82991634feae5150a68f9b30f5b05b55416af8ff9f7251fb29431ed5","impliedFormat":1},{"version":"cc5d0b221824b7d8597e8a2bbdad2383af877eb564eaca392992049839e88c9e","impliedFormat":1},{"version":"21898d939444825cee1232af435330610b09171bea22a2f892cf2058d764b63d","impliedFormat":1},{"version":"2baebea93983e898000858daeeeb2ac29938891b6b8db72ebce294837fc9499f","impliedFormat":99},{"version":"d9d320cf31f6d63659484f6c9ca4db4ae673daefa65118dd8589838925ff1397","impliedFormat":99},{"version":"027cf2216d065a97bf5a8ea126b3ea2734fab6cfe32adaff81ab4e94a1b51bbe","impliedFormat":99},{"version":"f6e6313fad233c5141220f7d25eae120cdd6e5079fbe0aba56821a1e99d05df8","impliedFormat":1},{"version":"9534c35b4577c193e499178deb47419fdadddd5e53af5ec8cb88218848013f65","impliedFormat":1},{"version":"97f43a6558157a3abae4e32256cc74ba34f69ab30473008ffa13011bf0932986","impliedFormat":99},{"version":"45b8adde5735e97329752dd5598b7ecd85202f221a1d0e8aa90137ce5810f21c","impliedFormat":99},{"version":"dfe6945467765f8e7843442a9dfbcf6b5526b6465b07b4c75a54a750329b5f17","impliedFormat":99},{"version":"7f9f6c9fe0e48c401d855d849e28112ffe2425569eca01b08b8c6112b8200695","impliedFormat":99},{"version":"68fcdc663627d12d336b420b19b3e54258844d0cbca0879f711c22aafd853352","impliedFormat":99},{"version":"d3dd47deefa1cc5dd6f1b866132506ec8dfd678ae0ddaa44de188505df14fcc4","impliedFormat":99},{"version":"a5946bc88dac85da2afacdfa3471ff3bc2bbda7c0e34efde184cf17e6bceb6bc","impliedFormat":99},{"version":"75b68165b9bcc07579562f182d327e83583b89b91d62e76b86f4001feee699ba","impliedFormat":99},{"version":"a9d1030f6773d29b383f49e2c647a7e6e464906e1de97a6bc33d2528d957c4d7","impliedFormat":99},{"version":"37b997d60987b68ce8117da783442b4602c8a85d47680823d469fdc90d29e3b8","impliedFormat":99},{"version":"600850ecc310012e3b1a562629d97a1d78662ae8c477357513dd2e6aa704079b","impliedFormat":99},{"version":"335226d599a9382c9bea07d37e23bf998c1022c0f67e4d6d2b69633de6ac118f","impliedFormat":99},{"version":"ae430fd9bac320e71c3fe9299d90dcf67555d9a4f97ecaa35947b430ba8648ea","impliedFormat":99},{"version":"9061ff14146280f47d740b344ddd641c16df526ecaa868c348852277a9fb8686","impliedFormat":99},{"version":"49ee4555c2fafa01119cccc62436baad88ed937ff55d6a655e764ada6b0721e3","impliedFormat":99},{"version":"e059fb9064bc023bc06945ddda6b00e711c18e8657c82514b51c1c1b828642e9","impliedFormat":99},{"version":"f01b3b376946defc432893dcbbbc79472076b6a55a316b0a461a1b38d09e961c","impliedFormat":99},{"version":"da74d8af20172cfee988a2daf92c560f3fdc816fb9c0537f2cc37ef27b1552a8","impliedFormat":99},{"version":"feed66ae8815d1981ad575482766fb9a82385e75cce35ae2f13be58e50c4349f","impliedFormat":99},{"version":"21305b3c41b1e29c0f0d8f43fe227bca82493f6e4c6407a3363c6f729f1c04ba","affectsGlobalScope":true,"impliedFormat":99},{"version":"20c1041fbd4f1537686af4b707872b87c90a22201f8979e5def4554d28b46a5b","impliedFormat":99},{"version":"57ff3023920f09ea08ee1fb662518ff60312e81781e03c4e3b50cef3322143be","signature":"495d5d4a044fa18020972e7146c7416e467a364a9b23de05b096335d212ac9bb"}],"root":[[166,171],203],"options":{"composite":true,"declaration":true,"declarationDir":"./","declarationMap":true,"emitDeclarationOnly":true,"exactOptionalPropertyTypes":true,"jsx":4,"jsxImportSource":"@lynx-js/react","module":99,"noFallthroughCasesInSwitch":true,"noImplicitOverride":true,"noUncheckedIndexedAccess":true,"outDir":"./","rootDir":"../src","skipLibCheck":true,"strict":true,"target":6,"tsBuildInfoFile":"./.tsbuildinfo","verbatimModuleSyntax":true},"referencedMap":[[98,1],[188,2],[177,3],[189,4],[197,5],[200,6],[199,7],[179,8],[182,9],[183,10],[185,11],[186,12],[194,13],[193,14],[195,15],[196,14],[202,16],[201,17],[89,18],[91,19],[95,20],[92,21],[93,22],[88,23],[90,24],[44,25],[83,26],[74,27],[59,28],[56,27],[81,29],[57,27],[79,30],[58,31],[84,32],[60,33],[67,31],[62,27],[61,34],[76,31],[82,35],[80,31],[63,27],[71,31],[72,31],[64,34],[70,31],[65,34],[68,31],[69,27],[77,31],[66,27],[73,31],[75,31],[47,36],[54,37],[86,38],[55,39],[96,40],[45,36],[46,41],[51,42],[52,43],[50,44],[41,45],[97,46],[181,47],[180,12],[176,12],[174,12],[175,48],[173,12],[107,49],[106,50],[108,51],[113,52],[110,50],[112,53],[111,49],[122,54],[118,55],[121,56],[120,57],[126,58],[127,58],[125,59],[129,60],[128,59],[144,61],[131,62],[133,63],[134,64],[137,65],[139,66],[136,67],[138,68],[142,69],[143,70],[168,71],[171,72],[203,73],[166,74],[169,75],[170,75],[167,76],[103,77],[146,78],[145,79],[147,80],[165,81],[153,82],[152,83],[149,84],[154,85],[163,86],[148,87],[151,88],[150,89],[155,90],[161,91],[160,92],[157,93],[164,94],[162,95],[159,96],[102,97]],"latestChangedDtsFile":"./media.d.ts","version":"5.9.3"}
|
package/dist/services.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"services.d.ts","sourceRoot":"","sources":["../src/services.ts"],"names":[],"mappings":"AAEA,OAAO,EAEL,KAAK,cAAc,EACnB,KAAK,iBAAiB,EAEtB,KAAK,YAAY,EAClB,MAAM,+BAA+B,CAAC;AACvC,OAAO,KAAK,EAAE,kBAAkB,EAAwC,MAAM,YAAY,CAAC;AAY3F,sFAAsF;AACtF,wBAAgB,gBAAgB,IAAI,kBAAkB,GAAG,IAAI,CAM5D;AAiBD,+EAA+E;AAC/E,MAAM,MAAM,kBAAkB,GAAG,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,YAAY,KAAK,IAAI,KAAK,MAAM,IAAI,CAAC;AAE1F,0HAA0H;AAC1H,wBAAgB,gBAAgB,IAAI,kBAAkB,CAQrD;AAED,mDAAmD;AACnD,MAAM,WAAW,mBAAmB;IAClC,6EAA6E;IAC7E,QAAQ,CAAC,MAAM,CAAC,EAAE,kBAAkB,CAAC;IACrC,yEAAyE;IACzE,QAAQ,CAAC,YAAY,CAAC,EAAE,kBAAkB,CAAC;CAC5C;AAED,mHAAmH;AACnH,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;IAC9B,QAAQ,CAAC,WAAW,EAAE,iBAAiB,CAAC;IACxC,gGAAgG;IAChG,UAAU,IAAI,IAAI,CAAC;IACnB;;;;;OAKG;IACH,gBAAgB,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;CACrC;AAID;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,GAAE,mBAAwB,GAAG,gBAAgB,
|
|
1
|
+
{"version":3,"file":"services.d.ts","sourceRoot":"","sources":["../src/services.ts"],"names":[],"mappings":"AAEA,OAAO,EAEL,KAAK,cAAc,EACnB,KAAK,iBAAiB,EAEtB,KAAK,YAAY,EAClB,MAAM,+BAA+B,CAAC;AACvC,OAAO,KAAK,EAAE,kBAAkB,EAAwC,MAAM,YAAY,CAAC;AAY3F,sFAAsF;AACtF,wBAAgB,gBAAgB,IAAI,kBAAkB,GAAG,IAAI,CAM5D;AAiBD,+EAA+E;AAC/E,MAAM,MAAM,kBAAkB,GAAG,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,YAAY,KAAK,IAAI,KAAK,MAAM,IAAI,CAAC;AAE1F,0HAA0H;AAC1H,wBAAgB,gBAAgB,IAAI,kBAAkB,CAQrD;AAED,mDAAmD;AACnD,MAAM,WAAW,mBAAmB;IAClC,6EAA6E;IAC7E,QAAQ,CAAC,MAAM,CAAC,EAAE,kBAAkB,CAAC;IACrC,yEAAyE;IACzE,QAAQ,CAAC,YAAY,CAAC,EAAE,kBAAkB,CAAC;CAC5C;AAED,mHAAmH;AACnH,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;IAC9B,QAAQ,CAAC,WAAW,EAAE,iBAAiB,CAAC;IACxC,gGAAgG;IAChG,UAAU,IAAI,IAAI,CAAC;IACnB;;;;;OAKG;IACH,gBAAgB,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;CACrC;AAID;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,GAAE,mBAAwB,GAAG,gBAAgB,CAuE5F"}
|
package/dist/services.js
CHANGED
|
@@ -54,8 +54,14 @@ function createNativeHostServices(options = {}) {
|
|
|
54
54
|
});
|
|
55
55
|
for (const listener of Array.from(listeners))listener(insets);
|
|
56
56
|
};
|
|
57
|
-
|
|
58
|
-
|
|
57
|
+
let reported = false;
|
|
58
|
+
call((reply)=>native.safeInsets(reply)).then((first)=>{
|
|
59
|
+
if (!reported) publish(first);
|
|
60
|
+
}, ()=>void 0);
|
|
61
|
+
subscribe((next)=>{
|
|
62
|
+
reported = true;
|
|
63
|
+
publish(next);
|
|
64
|
+
});
|
|
59
65
|
const host = {
|
|
60
66
|
exit: ()=>native.moveToBack(),
|
|
61
67
|
hideKeyboard: ()=>native.hideKeyboard(),
|
package/dist/services.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"services.js","sources":["../src/services.ts"],"sourcesContent":["// The mobile host services over `NativeModules.G9HostModule` (plan/specs/06 §7): G9HostServices and an asynchronous\n// G9PreferenceStore. Safe-area insets are read once and then follow the host's `g9:insets` global event.\nimport {\n G9Error,\n type G9HostServices,\n type G9PreferenceStore,\n type G9PreferenceValue,\n type G9SafeInsets,\n} from '@g9tm/lynxcontrols-foundation';\nimport type { G9HostNativeModule, G9NativeEnvelope, G9NativePreference } from './protocol';\n\ndeclare const NativeModules: { G9HostModule?: G9HostNativeModule } | undefined;\ndeclare const lynx:\n | {\n getJSModule?(name: string): {\n addListener(name: string, listener: (...args: never[]) => void): void;\n removeListener(name: string, listener: (...args: never[]) => void): void;\n };\n }\n | undefined;\n\n/** `NativeModules.G9HostModule`, or `null` where the native library is not linked. */\nexport function nativeHostModule(): G9HostNativeModule | null {\n try {\n return (typeof NativeModules === 'undefined' ? undefined : NativeModules?.G9HostModule) ?? null;\n } catch {\n return null;\n }\n}\n\nfunction call<T>(\n invoke: (reply: (envelope: G9NativeEnvelope<T>) => void) => void,\n missingCode = 'preference-store',\n): Promise<T> {\n return new Promise<T>((resolve, reject) => {\n invoke((envelope) => {\n if (envelope?.ok) resolve(envelope.value);\n else {\n const e = envelope?.error ?? { code: missingCode, message: 'The native module sent no reply.' };\n reject(new G9Error(e.code, e.message));\n }\n });\n });\n}\n\n/** Subscribes to the host's insets event; returns the unsubscribe function. */\nexport type G9InsetsSubscriber = (listener: (insets: G9SafeInsets) => void) => () => void;\n\n/** The default insets source: the `g9:insets` global event a host sends on rotation / resize (Lynx background thread). */\nexport function lynxInsetsEvents(): G9InsetsSubscriber {\n return (listener) => {\n const target = typeof lynx === 'undefined' ? undefined : lynx?.getJSModule?.('GlobalEventEmitter');\n if (!target) return () => undefined;\n const handler = ((insets: G9SafeInsets) => listener(insets)) as unknown as (...args: never[]) => void;\n target.addListener('g9:insets', handler);\n return () => target.removeListener('g9:insets', handler);\n };\n}\n\n/** Options of {@link createNativeHostServices}. */\nexport interface G9NativeHostOptions {\n /** The module (default: `NativeModules.G9HostModule`). Tests pass a fake. */\n readonly module?: G9HostNativeModule;\n /** Where inset changes come from (default: {@link lynxInsetsEvents}). */\n readonly insetsEvents?: G9InsetsSubscriber;\n}\n\n/** What {@link createNativeHostServices} returns: the services for `G9Provider`, plus the optional haptic tick. */\nexport interface G9NativeServices {\n readonly host: G9HostServices;\n readonly preferences: G9PreferenceStore;\n /** A light haptic tick (Android `HapticFeedbackConstants`, iOS `UIImpactFeedbackGenerator`). */\n hapticTick(): void;\n /**\n * The app's private data directory, absolute (MAUI `FileSystem.AppDataDirectory`: Android `Context.filesDir`, iOS\n * the user `Library` directory), so the database keeps the path its MAUI version used. Pass it to a database\n * locator (`singleFileDatabaseLocator(dir + '/g9.db')` or `perUserDatabaseLocator({ root: dir, … })`).\n * Rejects with `host-data-directory` when the host reports none.\n */\n appDataDirectory(): Promise<string>;\n}\n\nconst NO_INSETS: G9SafeInsets = Object.freeze({ top: 0, end: 0, bottom: 0, start: 0 });\n\n/**\n * Android/iOS host services: `exit` moves the task to the back (Android; iOS has no programmatic exit, the module\n * ignores it), `hideKeyboard`, `setSoftInputMode` (Android), safe-area insets, and preferences in `SharedPreferences`\n * / `NSUserDefaults` (typed int/string, `null` string removes). Throws outside a host that linked `@g9tm/lynxcontrols-native`.\n */\nexport function createNativeHostServices(options: G9NativeHostOptions = {}): G9NativeServices {\n const native = options.module ?? nativeHostModule();\n if (!native) {\n throw new Error(\n 'NativeModules.G9HostModule is missing: add @g9tm/lynxcontrols-native to the app so Autolink links it.',\n );\n }\n const subscribe = options.insetsEvents ?? lynxInsetsEvents();\n let insets: G9SafeInsets = NO_INSETS;\n const listeners = new Set<(insets: G9SafeInsets) => void>();\n const publish = (next: G9SafeInsets) => {\n insets = Object.freeze({ top: next.top, end: next.end, bottom: next.bottom, start: next.start });\n for (const listener of Array.from(listeners)) listener(insets);\n };\n call<G9SafeInsets>((reply) => native.safeInsets(reply)).then(publish, () => undefined);\n subscribe(publish);\n\n const host: G9HostServices = {\n exit: () => native.moveToBack(),\n hideKeyboard: () => native.hideKeyboard(),\n getSafeInsets: () => insets,\n subscribeSafeInsets(listener) {\n listeners.add(listener);\n return () => {\n listeners.delete(listener);\n };\n },\n setSoftInputMode: (mode) => native.setSoftInputMode(mode),\n };\n const preferences: G9PreferenceStore = {\n async getInt(key, defaultValue) {\n const stored = await call<G9NativePreference | null>((reply) => native.getPreference(key, reply));\n return stored?.type === 'int' ? stored.value : defaultValue;\n },\n async setInt(key, value) {\n await call<null>((reply) => native.setPreference(key, 'int', String(value), reply));\n },\n async getString(key, defaultValue) {\n const stored = await call<G9NativePreference | null>((reply) => native.getPreference(key, reply));\n return stored?.type === 'string' ? stored.value : defaultValue;\n },\n async setString(key, value) {\n await call<null>((reply) => native.setPreference(key, 'string', value, reply));\n },\n async remove(key) {\n await call<null>((reply) => native.setPreference(key, 'remove', null, reply));\n },\n async entries(prefix): Promise<ReadonlyArray<readonly [string, G9PreferenceValue]>> {\n const list = await call<Array<[string, number | string]>>((reply) => native.preferenceEntries(prefix, reply));\n return list.map(([key, value]) => [key, value] as const);\n },\n };\n const appDataDirectory = async (): Promise<string> => {\n const dir = await call<string>((reply) => native.appDataDirectory(reply), 'host-data-directory');\n if (typeof dir !== 'string' || dir.trim() === '') {\n throw new G9Error('host-data-directory', 'The host reported no app data directory.');\n }\n return dir;\n };\n return { host, preferences, hapticTick: () => native.hapticTick(), appDataDirectory };\n}\n"],"names":["nativeHostModule","_ref","NativeModules","undefined","call","invoke","missingCode","Promise","resolve","reject","envelope","e","G9Error","lynxInsetsEvents","listener","lynx","target","handler","insets","NO_INSETS","Object","createNativeHostServices","options","_options_module","_options_insetsEvents","native","Error","subscribe","listeners","Set","publish","next","Array","reply","host","mode","preferences","key","defaultValue","stored","value","String","prefix","list","appDataDirectory","dir"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"services.js","sources":["../src/services.ts"],"sourcesContent":["// The mobile host services over `NativeModules.G9HostModule` (plan/specs/06 §7): G9HostServices and an asynchronous\n// G9PreferenceStore. Safe-area insets are read once and then follow the host's `g9:insets` global event.\nimport {\n G9Error,\n type G9HostServices,\n type G9PreferenceStore,\n type G9PreferenceValue,\n type G9SafeInsets,\n} from '@g9tm/lynxcontrols-foundation';\nimport type { G9HostNativeModule, G9NativeEnvelope, G9NativePreference } from './protocol';\n\ndeclare const NativeModules: { G9HostModule?: G9HostNativeModule } | undefined;\ndeclare const lynx:\n | {\n getJSModule?(name: string): {\n addListener(name: string, listener: (...args: never[]) => void): void;\n removeListener(name: string, listener: (...args: never[]) => void): void;\n };\n }\n | undefined;\n\n/** `NativeModules.G9HostModule`, or `null` where the native library is not linked. */\nexport function nativeHostModule(): G9HostNativeModule | null {\n try {\n return (typeof NativeModules === 'undefined' ? undefined : NativeModules?.G9HostModule) ?? null;\n } catch {\n return null;\n }\n}\n\nfunction call<T>(\n invoke: (reply: (envelope: G9NativeEnvelope<T>) => void) => void,\n missingCode = 'preference-store',\n): Promise<T> {\n return new Promise<T>((resolve, reject) => {\n invoke((envelope) => {\n if (envelope?.ok) resolve(envelope.value);\n else {\n const e = envelope?.error ?? { code: missingCode, message: 'The native module sent no reply.' };\n reject(new G9Error(e.code, e.message));\n }\n });\n });\n}\n\n/** Subscribes to the host's insets event; returns the unsubscribe function. */\nexport type G9InsetsSubscriber = (listener: (insets: G9SafeInsets) => void) => () => void;\n\n/** The default insets source: the `g9:insets` global event a host sends on rotation / resize (Lynx background thread). */\nexport function lynxInsetsEvents(): G9InsetsSubscriber {\n return (listener) => {\n const target = typeof lynx === 'undefined' ? undefined : lynx?.getJSModule?.('GlobalEventEmitter');\n if (!target) return () => undefined;\n const handler = ((insets: G9SafeInsets) => listener(insets)) as unknown as (...args: never[]) => void;\n target.addListener('g9:insets', handler);\n return () => target.removeListener('g9:insets', handler);\n };\n}\n\n/** Options of {@link createNativeHostServices}. */\nexport interface G9NativeHostOptions {\n /** The module (default: `NativeModules.G9HostModule`). Tests pass a fake. */\n readonly module?: G9HostNativeModule;\n /** Where inset changes come from (default: {@link lynxInsetsEvents}). */\n readonly insetsEvents?: G9InsetsSubscriber;\n}\n\n/** What {@link createNativeHostServices} returns: the services for `G9Provider`, plus the optional haptic tick. */\nexport interface G9NativeServices {\n readonly host: G9HostServices;\n readonly preferences: G9PreferenceStore;\n /** A light haptic tick (Android `HapticFeedbackConstants`, iOS `UIImpactFeedbackGenerator`). */\n hapticTick(): void;\n /**\n * The app's private data directory, absolute (MAUI `FileSystem.AppDataDirectory`: Android `Context.filesDir`, iOS\n * the user `Library` directory), so the database keeps the path its MAUI version used. Pass it to a database\n * locator (`singleFileDatabaseLocator(dir + '/g9.db')` or `perUserDatabaseLocator({ root: dir, … })`).\n * Rejects with `host-data-directory` when the host reports none.\n */\n appDataDirectory(): Promise<string>;\n}\n\nconst NO_INSETS: G9SafeInsets = Object.freeze({ top: 0, end: 0, bottom: 0, start: 0 });\n\n/**\n * Android/iOS host services: `exit` moves the task to the back (Android; iOS has no programmatic exit, the module\n * ignores it), `hideKeyboard`, `setSoftInputMode` (Android), safe-area insets, and preferences in `SharedPreferences`\n * / `NSUserDefaults` (typed int/string, `null` string removes). Throws outside a host that linked `@g9tm/lynxcontrols-native`.\n */\nexport function createNativeHostServices(options: G9NativeHostOptions = {}): G9NativeServices {\n const native = options.module ?? nativeHostModule();\n if (!native) {\n throw new Error(\n 'NativeModules.G9HostModule is missing: add @g9tm/lynxcontrols-native to the app so Autolink links it.',\n );\n }\n const subscribe = options.insetsEvents ?? lynxInsetsEvents();\n let insets: G9SafeInsets = NO_INSETS;\n const listeners = new Set<(insets: G9SafeInsets) => void>();\n const publish = (next: G9SafeInsets) => {\n insets = Object.freeze({ top: next.top, end: next.end, bottom: next.bottom, start: next.start });\n for (const listener of Array.from(listeners)) listener(insets);\n };\n // The first read answers later than it asks: an `insets` event that arrived meanwhile is newer and wins (the read\n // once overwrote a fresh report with a stale one — AgriPad Lynx on Android 10, 48 dp under every bottom bar).\n let reported = false;\n call<G9SafeInsets>((reply) => native.safeInsets(reply)).then(\n (first) => {\n if (!reported) publish(first);\n },\n () => undefined,\n );\n subscribe((next) => {\n reported = true;\n publish(next);\n });\n\n const host: G9HostServices = {\n exit: () => native.moveToBack(),\n hideKeyboard: () => native.hideKeyboard(),\n getSafeInsets: () => insets,\n subscribeSafeInsets(listener) {\n listeners.add(listener);\n return () => {\n listeners.delete(listener);\n };\n },\n setSoftInputMode: (mode) => native.setSoftInputMode(mode),\n };\n const preferences: G9PreferenceStore = {\n async getInt(key, defaultValue) {\n const stored = await call<G9NativePreference | null>((reply) => native.getPreference(key, reply));\n return stored?.type === 'int' ? stored.value : defaultValue;\n },\n async setInt(key, value) {\n await call<null>((reply) => native.setPreference(key, 'int', String(value), reply));\n },\n async getString(key, defaultValue) {\n const stored = await call<G9NativePreference | null>((reply) => native.getPreference(key, reply));\n return stored?.type === 'string' ? stored.value : defaultValue;\n },\n async setString(key, value) {\n await call<null>((reply) => native.setPreference(key, 'string', value, reply));\n },\n async remove(key) {\n await call<null>((reply) => native.setPreference(key, 'remove', null, reply));\n },\n async entries(prefix): Promise<ReadonlyArray<readonly [string, G9PreferenceValue]>> {\n const list = await call<Array<[string, number | string]>>((reply) => native.preferenceEntries(prefix, reply));\n return list.map(([key, value]) => [key, value] as const);\n },\n };\n const appDataDirectory = async (): Promise<string> => {\n const dir = await call<string>((reply) => native.appDataDirectory(reply), 'host-data-directory');\n if (typeof dir !== 'string' || dir.trim() === '') {\n throw new G9Error('host-data-directory', 'The host reported no app data directory.');\n }\n return dir;\n };\n return { host, preferences, hapticTick: () => native.hapticTick(), appDataDirectory };\n}\n"],"names":["nativeHostModule","_ref","NativeModules","undefined","call","invoke","missingCode","Promise","resolve","reject","envelope","e","G9Error","lynxInsetsEvents","listener","lynx","target","handler","insets","NO_INSETS","Object","createNativeHostServices","options","_options_module","_options_insetsEvents","native","Error","subscribe","listeners","Set","publish","next","Array","reported","reply","first","host","mode","preferences","key","defaultValue","stored","value","String","prefix","list","appDataDirectory","dir"],"mappings":"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"}
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
// XCTest target (simulator, macOS runner): the portable suite in G9NativeTestSuite.m. Paths come from this file's
|
|
2
2
|
// location in the repository (the simulator can read the host file system).
|
|
3
3
|
#import <XCTest/XCTest.h>
|
|
4
|
+
#import <UIKit/UIKit.h>
|
|
4
5
|
#import "G9NativeTestSuite.h"
|
|
6
|
+
#import "G9PointerEventsHitTest.h"
|
|
5
7
|
|
|
6
8
|
@interface G9NativeTests : XCTestCase
|
|
7
9
|
@end
|
|
@@ -49,4 +51,13 @@
|
|
|
49
51
|
XCTAssertEqualObjects([G9NativeTestSuite videoCore], @[]);
|
|
50
52
|
}
|
|
51
53
|
|
|
54
|
+
// The patch must still find Lynx's private UILynxView after a Lynx upgrade, and a view that is not a rendered element
|
|
55
|
+
// (no sign) keeps Lynx's own answer. The `pointer-events: none` path needs a rendered page: the hosts' device rounds.
|
|
56
|
+
- (void)testPointerEventsHitTestInstalled {
|
|
57
|
+
XCTAssertTrue([G9PointerEventsHitTest installed]);
|
|
58
|
+
UIView *view = [[NSClassFromString(@"UILynxView") alloc] initWithFrame:CGRectMake(0, 0, 100, 100)];
|
|
59
|
+
XCTAssertEqual([view hitTest:CGPointMake(50, 50) withEvent:nil], view);
|
|
60
|
+
XCTAssertNil([view hitTest:CGPointMake(150, 50) withEvent:nil]);
|
|
61
|
+
}
|
|
62
|
+
|
|
52
63
|
@end
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
# package version, which always equals the pinned G9MAUIControls version (npm run check:versions).
|
|
5
5
|
Pod::Spec.new do |s|
|
|
6
6
|
s.name = 'g9lynx-native'
|
|
7
|
-
s.version = '1.4.
|
|
7
|
+
s.version = '1.4.7'
|
|
8
8
|
s.summary = 'G9 SQLite, host and speech native modules and the <g9-video> element for Lynx (sqlite3, NSUserDefaults, UIKit, AVFoundation, Speech).'
|
|
9
9
|
s.homepage = 'https://github.com/imankari/g9lynxcontrols'
|
|
10
10
|
s.license = { :type => 'MIT' }
|
|
@@ -19,7 +19,9 @@ Pod::Spec.new do |s|
|
|
|
19
19
|
# Speech: G9SpeechModule (dictation; the host's Info.plist carries NSSpeechRecognitionUsageDescription).
|
|
20
20
|
s.frameworks = 'UIKit', 'AVFoundation', 'Speech'
|
|
21
21
|
s.requires_arc = true
|
|
22
|
-
|
|
22
|
+
# The whole Lynx 4.2 line, its -dev engine included (Trace and Recorder live only there; lynx-family/Specs pins
|
|
23
|
+
# every Lynx pod to one exact version, so a host that builds on 4.2.0-dev must find this pod willing too).
|
|
24
|
+
s.dependency 'Lynx', '>= 4.2.0-dev', '< 4.3'
|
|
23
25
|
|
|
24
26
|
# XCTest on a simulator: the shared contract (packages/sqlite/contract/cases.json), the Kotlin-written transport
|
|
25
27
|
# golden, interrupt, core edges and preferences (Tests/G9NativeTestSuite.m, also run on Linux by test:ios-core).
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
#import <Foundation/Foundation.h>
|
|
2
|
+
|
|
3
|
+
NS_ASSUME_NONNULL_BEGIN
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Makes UIKit honour Lynx's `pointer-events: none` (installed at load; nothing to call).
|
|
7
|
+
*
|
|
8
|
+
* Lynx 4.0.3 on iOS applies `pointer-events` only in its OWN event hit test. UIKit's hit test of a Lynx view
|
|
9
|
+
* (`UILynxView`) returns the view itself wherever no subview is hit, so an input-transparent full-size element — a
|
|
10
|
+
* G9Host overlay layer, a non-modal sheet's frame — still takes the UIKit touch, and a native view below it inside the
|
|
11
|
+
* same LynxView (a map, a video) never receives one. Android's ViewGroups fall through to the siblings below; this
|
|
12
|
+
* gives iOS the same rule: where the element itself would take the touch and its `pointer-events` resolves to `none`,
|
|
13
|
+
* the hit test answers nil and UIKit goes on to the views below. Its subviews hit-test as before.
|
|
14
|
+
*/
|
|
15
|
+
@interface G9PointerEventsHitTest : NSObject
|
|
16
|
+
|
|
17
|
+
/** Whether the hit test is patched (false only when Lynx no longer has `UILynxView`). */
|
|
18
|
+
+ (BOOL)installed;
|
|
19
|
+
|
|
20
|
+
@end
|
|
21
|
+
|
|
22
|
+
NS_ASSUME_NONNULL_END
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
#import "G9PointerEventsHitTest.h"
|
|
2
|
+
|
|
3
|
+
#import <Lynx/LynxEventTarget.h>
|
|
4
|
+
#import <Lynx/LynxUI.h>
|
|
5
|
+
#import <Lynx/LynxView.h>
|
|
6
|
+
#import <Lynx/UIView+Lynx.h>
|
|
7
|
+
#import <UIKit/UIKit.h>
|
|
8
|
+
#import <objc/runtime.h>
|
|
9
|
+
|
|
10
|
+
typedef UIView *_Nullable (*G9HitTestImp)(UIView *, SEL, CGPoint, UIEvent *_Nullable);
|
|
11
|
+
|
|
12
|
+
static G9HitTestImp gLynxHitTest;
|
|
13
|
+
|
|
14
|
+
static UIView *_Nullable G9HitTest(UIView *self, SEL cmd, CGPoint point, UIEvent *_Nullable event) {
|
|
15
|
+
UIView *hit = gLynxHitTest(self, cmd, point, event);
|
|
16
|
+
// Only the element's own area: a subview that took the touch keeps it.
|
|
17
|
+
if (hit != self || self.lynxSign == nil) return hit;
|
|
18
|
+
for (UIView *v = self.superview; v != nil; v = v.superview) {
|
|
19
|
+
if (![v isKindOfClass:LynxView.class]) continue;
|
|
20
|
+
LynxUI *ui = [(LynxView *)v findUIByIndex:self.lynxSign.intValue];
|
|
21
|
+
if (ui != nil && ui.view == self && [ui pointerEvents] == kLynxPointerEventsValueNone) return nil;
|
|
22
|
+
break;
|
|
23
|
+
}
|
|
24
|
+
return hit;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
@implementation G9PointerEventsHitTest
|
|
28
|
+
|
|
29
|
+
static BOOL gInstalled;
|
|
30
|
+
|
|
31
|
+
+ (void)load {
|
|
32
|
+
// `UILynxView` is private to Lynx (LynxUIView.m), hence the lookup by name.
|
|
33
|
+
Class cls = NSClassFromString(@"UILynxView");
|
|
34
|
+
Method m = cls ? class_getInstanceMethod(cls, @selector(hitTest:withEvent:)) : NULL;
|
|
35
|
+
if (m == NULL) {
|
|
36
|
+
NSLog(@"G9PointerEventsHitTest: UILynxView not found; pointer-events: none stays Lynx-only on this Lynx");
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
// The class's own method (UILynxView overrides hitTest:withEvent:), so UIView's stays untouched.
|
|
40
|
+
gLynxHitTest = (G9HitTestImp)method_setImplementation(m, (IMP)G9HitTest);
|
|
41
|
+
gInstalled = YES;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
+ (BOOL)installed {
|
|
45
|
+
return gInstalled;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
@end
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@g9tm/lynxcontrols-native",
|
|
3
|
-
"version": "1.4.
|
|
3
|
+
"version": "1.4.7",
|
|
4
4
|
"description": "Android and iOS platform layer: the G9SqliteModule and G9HostModule native modules (Autolink) and their JS adapters.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -38,14 +38,14 @@
|
|
|
38
38
|
"check:android-types": "node scripts/android-bridge-types.mjs"
|
|
39
39
|
},
|
|
40
40
|
"dependencies": {
|
|
41
|
-
"@g9tm/lynxcontrols-foundation": "1.4.
|
|
42
|
-
"@g9tm/lynxcontrols-sqlite": "1.4.
|
|
41
|
+
"@g9tm/lynxcontrols-foundation": "1.4.7",
|
|
42
|
+
"@g9tm/lynxcontrols-sqlite": "1.4.7"
|
|
43
43
|
},
|
|
44
44
|
"peerDependencies": {
|
|
45
|
-
"@lynx-js/react": ">=0.
|
|
45
|
+
"@lynx-js/react": ">=0.129.1 <0.130.0"
|
|
46
46
|
},
|
|
47
47
|
"devDependencies": {
|
|
48
|
-
"@g9tm/lynxcontrols-lynxtron": "1.4.
|
|
48
|
+
"@g9tm/lynxcontrols-lynxtron": "1.4.7",
|
|
49
49
|
"@lynx-js/autolink-codegen": "0.6.0"
|
|
50
50
|
}
|
|
51
51
|
}
|