@thelacanians/vue-native-cli 0.4.15 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (116) hide show
  1. package/dist/cli.js +329 -15
  2. package/native/android/VueNativeCore/src/main/kotlin/com/vuenative/core/Bridge/NativeBridge.kt +118 -0
  3. package/native/android/VueNativeCore/src/main/kotlin/com/vuenative/core/Components/Factories/VViewFactory.kt +178 -1
  4. package/native/android/VueNativeCore/src/main/kotlin/com/vuenative/core/Modules/GeneratedModuleRegistry.kt +28 -0
  5. package/native/android/VueNativeCore/src/main/kotlin/com/vuenative/core/Modules/NativeModuleRegistry.kt +3 -0
  6. package/native/android/VueNativeCore/src/test/kotlin/com/vuenative/core/ComponentFactoryTest.kt +674 -0
  7. package/native/android/VueNativeCore/src/test/kotlin/com/vuenative/core/ErrorOverlayViewTest.kt +183 -0
  8. package/native/android/VueNativeCore/src/test/kotlin/com/vuenative/core/EventThrottleTest.kt +203 -0
  9. package/native/android/VueNativeCore/src/test/kotlin/com/vuenative/core/HotReloadManagerTest.kt +162 -0
  10. package/native/android/VueNativeCore/src/test/kotlin/com/vuenative/core/JSPolyfillsTest.kt +153 -0
  11. package/native/android/VueNativeCore/src/test/kotlin/com/vuenative/core/NativeBridgeTest.kt +6 -3
  12. package/native/android/VueNativeCore/src/test/kotlin/com/vuenative/core/NativeModuleTest.kt +475 -0
  13. package/native/android/gradle.properties +1 -0
  14. package/native/android/gradlew +1 -1
  15. package/native/ios/VueNativeCore/Package.swift +1 -1
  16. package/native/ios/VueNativeCore/Sources/VueNativeCore/Bridge/EventThrottle.swift +1 -0
  17. package/native/ios/VueNativeCore/Sources/VueNativeCore/Bridge/NativeBridge.swift +143 -5
  18. package/native/ios/VueNativeCore/Sources/VueNativeCore/Components/Factories/VTextFactory.swift +43 -0
  19. package/native/ios/VueNativeCore/Sources/VueNativeCore/Components/Factories/VViewFactory.swift +116 -4
  20. package/native/ios/VueNativeCore/Sources/VueNativeCore/Helpers/GestureWrapper.swift +100 -0
  21. package/native/ios/VueNativeCore/Sources/VueNativeCore/Modules/GeneratedModuleRegistry.swift +28 -0
  22. package/native/ios/VueNativeCore/Sources/VueNativeCore/Modules/NativeModuleRegistry.swift +3 -0
  23. package/native/ios/VueNativeCore/Tests/VueNativeCoreTests/CertificatePinningTests.swift +190 -0
  24. package/native/ios/VueNativeCore/Tests/VueNativeCoreTests/ComponentFactoryTests.swift +585 -0
  25. package/native/ios/VueNativeCore/Tests/VueNativeCoreTests/EventThrottleTests.swift +161 -0
  26. package/native/ios/VueNativeCore/Tests/VueNativeCoreTests/HotReloadManagerTests.swift +88 -0
  27. package/native/ios/VueNativeCore/Tests/VueNativeCoreTests/JSPolyfillsTests.swift +319 -0
  28. package/native/ios/VueNativeCore/Tests/VueNativeCoreTests/NativeModuleTests.swift +400 -0
  29. package/native/macos/VueNativeMacOS/Package.swift +34 -0
  30. package/native/macos/VueNativeMacOS/Sources/VueNativeMacOS/Bridge/ErrorOverlayView.swift +112 -0
  31. package/native/macos/VueNativeMacOS/Sources/VueNativeMacOS/Bridge/EventThrottle.swift +58 -0
  32. package/native/macos/VueNativeMacOS/Sources/VueNativeMacOS/Bridge/HotReloadManager.swift +153 -0
  33. package/native/macos/VueNativeMacOS/Sources/VueNativeMacOS/Bridge/JSPolyfills.swift +696 -0
  34. package/native/macos/VueNativeMacOS/Sources/VueNativeMacOS/Bridge/JSRuntime.swift +347 -0
  35. package/native/macos/VueNativeMacOS/Sources/VueNativeMacOS/Bridge/NativeBridge.swift +877 -0
  36. package/native/macos/VueNativeMacOS/Sources/VueNativeMacOS/Bridge/VueNativeWindowController.swift +125 -0
  37. package/native/macos/VueNativeMacOS/Sources/VueNativeMacOS/Components/ComponentRegistry.swift +209 -0
  38. package/native/macos/VueNativeMacOS/Sources/VueNativeMacOS/Components/Factories/VActionSheetFactory.swift +155 -0
  39. package/native/macos/VueNativeMacOS/Sources/VueNativeMacOS/Components/Factories/VActivityIndicatorFactory.swift +85 -0
  40. package/native/macos/VueNativeMacOS/Sources/VueNativeMacOS/Components/Factories/VAlertDialogFactory.swift +132 -0
  41. package/native/macos/VueNativeMacOS/Sources/VueNativeMacOS/Components/Factories/VButtonFactory.swift +83 -0
  42. package/native/macos/VueNativeMacOS/Sources/VueNativeMacOS/Components/Factories/VCheckboxFactory.swift +108 -0
  43. package/native/macos/VueNativeMacOS/Sources/VueNativeMacOS/Components/Factories/VDropdownFactory.swift +155 -0
  44. package/native/macos/VueNativeMacOS/Sources/VueNativeMacOS/Components/Factories/VImageFactory.swift +270 -0
  45. package/native/macos/VueNativeMacOS/Sources/VueNativeMacOS/Components/Factories/VInputFactory.swift +257 -0
  46. package/native/macos/VueNativeMacOS/Sources/VueNativeMacOS/Components/Factories/VKeyboardAvoidingFactory.swift +22 -0
  47. package/native/macos/VueNativeMacOS/Sources/VueNativeMacOS/Components/Factories/VListFactory.swift +324 -0
  48. package/native/macos/VueNativeMacOS/Sources/VueNativeMacOS/Components/Factories/VModalFactory.swift +231 -0
  49. package/native/macos/VueNativeMacOS/Sources/VueNativeMacOS/Components/Factories/VOutlineViewFactory.swift +276 -0
  50. package/native/macos/VueNativeMacOS/Sources/VueNativeMacOS/Components/Factories/VPickerFactory.swift +134 -0
  51. package/native/macos/VueNativeMacOS/Sources/VueNativeMacOS/Components/Factories/VPressableFactory.swift +120 -0
  52. package/native/macos/VueNativeMacOS/Sources/VueNativeMacOS/Components/Factories/VProgressBarFactory.swift +71 -0
  53. package/native/macos/VueNativeMacOS/Sources/VueNativeMacOS/Components/Factories/VRadioFactory.swift +193 -0
  54. package/native/macos/VueNativeMacOS/Sources/VueNativeMacOS/Components/Factories/VRefreshControlFactory.swift +25 -0
  55. package/native/macos/VueNativeMacOS/Sources/VueNativeMacOS/Components/Factories/VSafeAreaFactory.swift +46 -0
  56. package/native/macos/VueNativeMacOS/Sources/VueNativeMacOS/Components/Factories/VScrollViewFactory.swift +190 -0
  57. package/native/macos/VueNativeMacOS/Sources/VueNativeMacOS/Components/Factories/VSectionListFactory.swift +374 -0
  58. package/native/macos/VueNativeMacOS/Sources/VueNativeMacOS/Components/Factories/VSegmentedControlFactory.swift +125 -0
  59. package/native/macos/VueNativeMacOS/Sources/VueNativeMacOS/Components/Factories/VSliderFactory.swift +131 -0
  60. package/native/macos/VueNativeMacOS/Sources/VueNativeMacOS/Components/Factories/VSplitViewFactory.swift +215 -0
  61. package/native/macos/VueNativeMacOS/Sources/VueNativeMacOS/Components/Factories/VStatusBarFactory.swift +25 -0
  62. package/native/macos/VueNativeMacOS/Sources/VueNativeMacOS/Components/Factories/VSwitchFactory.swift +92 -0
  63. package/native/macos/VueNativeMacOS/Sources/VueNativeMacOS/Components/Factories/VTextFactory.swift +336 -0
  64. package/native/macos/VueNativeMacOS/Sources/VueNativeMacOS/Components/Factories/VToolbarFactory.swift +212 -0
  65. package/native/macos/VueNativeMacOS/Sources/VueNativeMacOS/Components/Factories/VVideoFactory.swift +245 -0
  66. package/native/macos/VueNativeMacOS/Sources/VueNativeMacOS/Components/Factories/VViewFactory.swift +314 -0
  67. package/native/macos/VueNativeMacOS/Sources/VueNativeMacOS/Components/Factories/VWebViewFactory.swift +162 -0
  68. package/native/macos/VueNativeMacOS/Sources/VueNativeMacOS/Components/NativeComponentFactory.swift +54 -0
  69. package/native/macos/VueNativeMacOS/Sources/VueNativeMacOS/Helpers/ClickableView.swift +100 -0
  70. package/native/macos/VueNativeMacOS/Sources/VueNativeMacOS/Helpers/Extensions.swift +23 -0
  71. package/native/macos/VueNativeMacOS/Sources/VueNativeMacOS/Helpers/GestureWrapper.swift +183 -0
  72. package/native/macos/VueNativeMacOS/Sources/VueNativeMacOS/Helpers/NSColor+Hex.swift +78 -0
  73. package/native/macos/VueNativeMacOS/Sources/VueNativeMacOS/Layout/FlippedView.swift +19 -0
  74. package/native/macos/VueNativeMacOS/Sources/VueNativeMacOS/Layout/LayoutNode.swift +493 -0
  75. package/native/macos/VueNativeMacOS/Sources/VueNativeMacOS/Modules/AnimationModule.swift +354 -0
  76. package/native/macos/VueNativeMacOS/Sources/VueNativeMacOS/Modules/AppStateModule.swift +62 -0
  77. package/native/macos/VueNativeMacOS/Sources/VueNativeMacOS/Modules/BiometryModule.swift +60 -0
  78. package/native/macos/VueNativeMacOS/Sources/VueNativeMacOS/Modules/CameraModule.swift +167 -0
  79. package/native/macos/VueNativeMacOS/Sources/VueNativeMacOS/Modules/ClipboardModule.swift +34 -0
  80. package/native/macos/VueNativeMacOS/Sources/VueNativeMacOS/Modules/DeviceInfoModule.swift +49 -0
  81. package/native/macos/VueNativeMacOS/Sources/VueNativeMacOS/Modules/DragDropModule.swift +50 -0
  82. package/native/macos/VueNativeMacOS/Sources/VueNativeMacOS/Modules/FileDialogModule.swift +86 -0
  83. package/native/macos/VueNativeMacOS/Sources/VueNativeMacOS/Modules/HapticsModule.swift +42 -0
  84. package/native/macos/VueNativeMacOS/Sources/VueNativeMacOS/Modules/KeyboardModule.swift +28 -0
  85. package/native/macos/VueNativeMacOS/Sources/VueNativeMacOS/Modules/LinkingModule.swift +49 -0
  86. package/native/macos/VueNativeMacOS/Sources/VueNativeMacOS/Modules/MenuModule.swift +95 -0
  87. package/native/macos/VueNativeMacOS/Sources/VueNativeMacOS/Modules/NativeModuleRegistry.swift +63 -0
  88. package/native/macos/VueNativeMacOS/Sources/VueNativeMacOS/Modules/NotificationsModule.swift +112 -0
  89. package/native/macos/VueNativeMacOS/Sources/VueNativeMacOS/Modules/PermissionsModule.swift +149 -0
  90. package/native/macos/VueNativeMacOS/Sources/VueNativeMacOS/Modules/ShareModule.swift +37 -0
  91. package/native/macos/VueNativeMacOS/Sources/VueNativeMacOS/Modules/WindowModule.swift +71 -0
  92. package/native/macos/VueNativeMacOS/Sources/VueNativeMacOS/Resources/vue-native-placeholder.js +2 -0
  93. package/native/macos/VueNativeMacOS/Sources/VueNativeMacOS/Styling/StyleEngine.swift +885 -0
  94. package/native/macos/VueNativeMacOS/Tests/VueNativeMacOSTests/ComponentFactoryTests.swift +80 -0
  95. package/native/macos/VueNativeMacOS/Tests/VueNativeMacOSTests/VueNativeMacOSTests.swift +149 -0
  96. package/native/shared/VueNativeShared/AGENTS.md +129 -0
  97. package/native/shared/VueNativeShared/Package.swift +14 -0
  98. package/native/shared/VueNativeShared/Sources/VueNativeShared/CertificatePinning.swift +134 -0
  99. package/native/shared/VueNativeShared/Sources/VueNativeShared/EventThrottle.swift +78 -0
  100. package/native/shared/VueNativeShared/Sources/VueNativeShared/HotReloadManager.swift +162 -0
  101. package/native/shared/VueNativeShared/Sources/VueNativeShared/JSRuntime.swift +412 -0
  102. package/native/shared/VueNativeShared/Sources/VueNativeShared/Modules/AsyncStorageModule.swift +68 -0
  103. package/native/shared/VueNativeShared/Sources/VueNativeShared/Modules/AudioModule.swift +359 -0
  104. package/native/shared/VueNativeShared/Sources/VueNativeShared/Modules/DatabaseModule.swift +259 -0
  105. package/native/shared/VueNativeShared/Sources/VueNativeShared/Modules/FileSystemModule.swift +233 -0
  106. package/native/shared/VueNativeShared/Sources/VueNativeShared/Modules/GeolocationModule.swift +156 -0
  107. package/native/shared/VueNativeShared/Sources/VueNativeShared/Modules/NetworkModule.swift +59 -0
  108. package/native/shared/VueNativeShared/Sources/VueNativeShared/Modules/PerformanceModule.swift +113 -0
  109. package/native/shared/VueNativeShared/Sources/VueNativeShared/Modules/SecureStorageModule.swift +119 -0
  110. package/native/shared/VueNativeShared/Sources/VueNativeShared/Modules/WebSocketModule.swift +212 -0
  111. package/native/shared/VueNativeShared/Sources/VueNativeShared/NativeEventDispatcher.swift +6 -0
  112. package/native/shared/VueNativeShared/Sources/VueNativeShared/NativeModule.swift +26 -0
  113. package/native/shared/VueNativeShared/Sources/VueNativeShared/NativeModuleRegistry.swift +37 -0
  114. package/native/shared/VueNativeShared/Sources/VueNativeShared/SharedJSPolyfills.swift +673 -0
  115. package/native/shared/VueNativeShared/Tests/VueNativeSharedTests/VueNativeSharedTests.swift +44 -0
  116. package/package.json +8 -2
@@ -1,10 +1,16 @@
1
1
  package com.vuenative.core
2
2
 
3
3
  import android.content.Context
4
+ import android.view.GestureDetector
5
+ import android.view.MotionEvent
6
+ import android.view.ScaleGestureDetector
4
7
  import android.view.View
5
8
  import android.view.ViewGroup
6
9
  import com.google.android.flexbox.FlexDirection
7
10
  import com.google.android.flexbox.FlexboxLayout
11
+ import kotlin.math.abs
12
+ import kotlin.math.atan2
13
+ import kotlin.math.sqrt
8
14
 
9
15
  class VViewFactory : NativeComponentFactory {
10
16
  override fun createView(context: Context): View {
@@ -28,6 +34,125 @@ class VViewFactory : NativeComponentFactory {
28
34
  handler(null)
29
35
  true
30
36
  }
37
+ "pan", "swipeLeft", "swipeRight", "swipeUp", "swipeDown", "pinch", "rotate" -> {
38
+ setupGestureListener(view, event, handler)
39
+ }
40
+ }
41
+ }
42
+
43
+ private fun setupGestureListener(view: View, event: String, handler: (Any?) -> Unit) {
44
+ val context = view.context
45
+
46
+ when (event) {
47
+ "pan" -> {
48
+ val gestureDetector = GestureDetector(context, object : GestureDetector.SimpleOnGestureListener() {
49
+ override fun onScroll(e1: MotionEvent?, e2: MotionEvent, distanceX: Float, distanceY: Float): Boolean {
50
+ val payload = mapOf(
51
+ "translationX" to -distanceX,
52
+ "translationY" to -distanceY,
53
+ "velocityX" to 0f,
54
+ "velocityY" to 0f,
55
+ "state" to "changed"
56
+ )
57
+ handler(payload)
58
+ return true
59
+ }
60
+ })
61
+ view.setOnTouchListener { _, motionEvent ->
62
+ gestureDetector.onTouchEvent(motionEvent)
63
+ false
64
+ }
65
+ }
66
+ "swipeLeft" -> {
67
+ val gestureDetector = GestureDetector(context, object : GestureDetector.SimpleOnGestureListener() {
68
+ override fun onFling(e1: MotionEvent?, e2: MotionEvent, velocityX: Float, velocityY: Float): Boolean {
69
+ if (abs(velocityX) > abs(velocityY) && velocityX < 0) {
70
+ val payload = mapOf("direction" to "left")
71
+ handler(payload)
72
+ }
73
+ return true
74
+ }
75
+ })
76
+ view.setOnTouchListener { _, motionEvent ->
77
+ gestureDetector.onTouchEvent(motionEvent)
78
+ false
79
+ }
80
+ }
81
+ "swipeRight" -> {
82
+ val gestureDetector = GestureDetector(context, object : GestureDetector.SimpleOnGestureListener() {
83
+ override fun onFling(e1: MotionEvent?, e2: MotionEvent, velocityX: Float, velocityY: Float): Boolean {
84
+ if (abs(velocityX) > abs(velocityY) && velocityX > 0) {
85
+ val payload = mapOf("direction" to "right")
86
+ handler(payload)
87
+ }
88
+ return true
89
+ }
90
+ })
91
+ view.setOnTouchListener { _, motionEvent ->
92
+ gestureDetector.onTouchEvent(motionEvent)
93
+ false
94
+ }
95
+ }
96
+ "swipeUp" -> {
97
+ val gestureDetector = GestureDetector(context, object : GestureDetector.SimpleOnGestureListener() {
98
+ override fun onFling(e1: MotionEvent?, e2: MotionEvent, velocityX: Float, velocityY: Float): Boolean {
99
+ if (abs(velocityY) > abs(velocityX) && velocityY < 0) {
100
+ val payload = mapOf("direction" to "up")
101
+ handler(payload)
102
+ }
103
+ return true
104
+ }
105
+ })
106
+ view.setOnTouchListener { _, motionEvent ->
107
+ gestureDetector.onTouchEvent(motionEvent)
108
+ false
109
+ }
110
+ }
111
+ "swipeDown" -> {
112
+ val gestureDetector = GestureDetector(context, object : GestureDetector.SimpleOnGestureListener() {
113
+ override fun onFling(e1: MotionEvent?, e2: MotionEvent, velocityX: Float, velocityY: Float): Boolean {
114
+ if (abs(velocityY) > abs(velocityX) && velocityY > 0) {
115
+ val payload = mapOf("direction" to "down")
116
+ handler(payload)
117
+ }
118
+ return true
119
+ }
120
+ })
121
+ view.setOnTouchListener { _, motionEvent ->
122
+ gestureDetector.onTouchEvent(motionEvent)
123
+ false
124
+ }
125
+ }
126
+ "pinch" -> {
127
+ val scaleGestureDetector = ScaleGestureDetector(context, object : ScaleGestureDetector.SimpleOnScaleGestureListener() {
128
+ override fun onScale(detector: ScaleGestureDetector): Boolean {
129
+ val payload = mapOf(
130
+ "scale" to detector.scaleFactor,
131
+ "velocity" to detector.currentSpan,
132
+ "state" to "changed"
133
+ )
134
+ handler(payload)
135
+ return true
136
+ }
137
+ })
138
+ view.setOnTouchListener { _, motionEvent ->
139
+ scaleGestureDetector.onTouchEvent(motionEvent)
140
+ false
141
+ }
142
+ }
143
+ "rotate" -> {
144
+ val rotationDetector = RotationGestureDetector { rotation ->
145
+ val payload = mapOf(
146
+ "rotation" to rotation,
147
+ "state" to "changed"
148
+ )
149
+ handler(payload)
150
+ }
151
+ view.setOnTouchListener { _, motionEvent ->
152
+ rotationDetector.onTouchEvent(motionEvent)
153
+ false
154
+ }
155
+ }
31
156
  }
32
157
  }
33
158
 
@@ -35,6 +160,7 @@ class VViewFactory : NativeComponentFactory {
35
160
  when (event) {
36
161
  "press" -> view.setOnClickListener(null)
37
162
  "longPress" -> view.setOnLongClickListener(null)
163
+ else -> view.setOnTouchListener(null)
38
164
  }
39
165
  }
40
166
 
@@ -51,4 +177,55 @@ class VViewFactory : NativeComponentFactory {
51
177
  override fun removeChild(parent: View, child: View) {
52
178
  (parent as? ViewGroup)?.removeView(child)
53
179
  }
54
- }
180
+
181
+ /**
182
+ * RotationGestureDetector detectsstwo-finger rotation gestures.
183
+ * Calculates rotation angle between two touch points.
184
+ */
185
+ private class RotationGestureDetector(
186
+ private val onRotation: (Float) -> Unit
187
+ ) {
188
+ private var previousAngle: Float = 0f
189
+ private var isTracking = false
190
+
191
+ fun onTouchEvent(event: MotionEvent): Boolean {
192
+ when (event.actionMasked) {
193
+ MotionEvent.ACTION_POINTER_DOWN -> {
194
+ if (event.pointerCount == 2) {
195
+ previousAngle = calculateAngle(event)
196
+ isTracking = true
197
+ }
198
+ }
199
+ MotionEvent.ACTION_MOVE -> {
200
+ if (isTracking && event.pointerCount == 2) {
201
+ val currentAngle = calculateAngle(event)
202
+ val deltaAngle = currentAngle - previousAngle
203
+
204
+ // Normalize angle to -PI to PI range
205
+ val normalizedDelta = when {
206
+ deltaAngle > Math.PI -> deltaAngle - (2 * Math.PI).toFloat()
207
+ deltaAngle < -Math.PI -> deltaAngle + (2 * Math.PI).toFloat()
208
+ else -> deltaAngle
209
+ }
210
+
211
+ onRotation(normalizedDelta)
212
+ previousAngle = currentAngle
213
+ }
214
+ }
215
+ MotionEvent.ACTION_POINTER_UP, MotionEvent.ACTION_UP, MotionEvent.ACTION_CANCEL -> {
216
+ isTracking = false
217
+ }
218
+ }
219
+ return true
220
+ }
221
+
222
+ private fun calculateAngle(event: MotionEvent): Float {
223
+ if (event.pointerCount < 2) return 0f
224
+
225
+ val dx = event.getX(1) - event.getX(0)
226
+ val dy = event.getY(1) - event.getY(0)
227
+
228
+ return atan2(dy, dx)
229
+ }
230
+ }
231
+ }
@@ -0,0 +1,28 @@
1
+ // ────────────────────────────────────────────────────────────────────────────────
2
+ // Auto-Generated Module Registration
3
+ // ────────────────────────────────────────────────────────────────────────────────
4
+ //
5
+ // ⚠️ WARNING: This file is auto-generated. DO NOT EDIT MANUALLY.
6
+ // Changes will be overwritten by the vue-native-codegen tool.
7
+ //
8
+ // Generated: {{GENERATED_DATE}}
9
+ //
10
+ // This file registers all native modules generated from <native> blocks
11
+ // in Vue SFC files.
12
+ //
13
+ // ────────────────────────────────────────────────────────────────────────────────
14
+
15
+ package com.vuenative.core
16
+
17
+ /**
18
+ * Register all generated native modules from <native> blocks
19
+ * This function is called automatically after registerDefaults()
20
+ */
21
+ fun NativeModuleRegistry.registerGeneratedModules() {
22
+ // Generated modules will be registered here
23
+ // Example:
24
+ // register(HapticsModule())
25
+ // register(CameraModule())
26
+
27
+ // This function is called automatically after registerDefaults()
28
+ }
@@ -58,6 +58,9 @@ class NativeModuleRegistry private constructor(private val context: Context) {
58
58
  register(m)
59
59
  m.initialize(ctx, bridge)
60
60
  }
61
+
62
+ // Register generated modules from <native> blocks
63
+ registerGeneratedModules()
61
64
  }
62
65
 
63
66
  fun getModule(name: String): NativeModule? = modules[name]