flet-box 1.0.6 → 1.0.8

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 (162) hide show
  1. package/README.md +28 -1
  2. package/bin/cli.js +90 -11
  3. package/bin/commands/auditFix.js +682 -0
  4. package/bin/commands/checkApi.js +20 -6
  5. package/bin/commands/checkUi.js +1369 -0
  6. package/bin/commands/create.js +86 -12
  7. package/bin/commands/createBundle.js +75 -1
  8. package/bin/commands/images.js +349 -0
  9. package/bin/commands/pruneAssets.js +170 -0
  10. package/bin/commands/release.js +34 -1
  11. package/bin/commands/runCloudflare.js +47 -9
  12. package/bin/commands/runServer.js +91 -25
  13. package/bin/commands/toPng.js +346 -0
  14. package/bin/commands/unpack.js +1173 -0
  15. package/bin/ota/loader.js +90 -0
  16. package/bin/utils/appSources.js +101 -0
  17. package/bin/utils/bundleConfig.js +166 -0
  18. package/bin/utils/dtsProps.js +147 -0
  19. package/bin/utils/imageTools.js +271 -0
  20. package/bin/utils/images/bmp.js +99 -0
  21. package/bin/utils/images/gif.js +244 -0
  22. package/bin/utils/images/index.js +163 -0
  23. package/bin/utils/images/jpeg.js +643 -0
  24. package/bin/utils/images/png.js +486 -0
  25. package/bin/utils/images/unsupported.js +29 -0
  26. package/bin/utils/neutralise.js +109 -6
  27. package/bin/utils/pwaShell.js +137 -0
  28. package/bin/utils/templates.js +1653 -471
  29. package/docs/README.md +2 -0
  30. package/docs/cli/README.md +144 -1
  31. package/docs/guides/README.md +2 -0
  32. package/docs/guides/clean-ui.md +211 -0
  33. package/docs/guides/minification-and-protection.md +1 -1
  34. package/docs/guides/online-updates.md +105 -9
  35. package/docs/tools/README.md +1 -1
  36. package/docs/tools/animation.md +1 -1
  37. package/docs/tools/markdown.md +3 -3
  38. package/docs/tools/theme.md +41 -1
  39. package/docs/widget/Accordion.md +4 -0
  40. package/docs/widget/AdMob.md +5 -1
  41. package/docs/widget/AdSense.md +4 -0
  42. package/docs/widget/AnimatedBox.md +7 -3
  43. package/docs/widget/AnimatedText.md +4 -0
  44. package/docs/widget/Audio.md +5 -1
  45. package/docs/widget/Avatar.md +15 -3
  46. package/docs/widget/Badge.md +4 -0
  47. package/docs/widget/Button.md +4 -0
  48. package/docs/widget/COMMON_PROPS.md +52 -0
  49. package/docs/widget/Card.md +4 -0
  50. package/docs/widget/Carousel.md +4 -0
  51. package/docs/widget/Chart.md +4 -0
  52. package/docs/widget/Checkbox.md +4 -0
  53. package/docs/widget/Chip.md +4 -0
  54. package/docs/widget/CircularBar.md +4 -0
  55. package/docs/widget/CircularChart.md +4 -0
  56. package/docs/widget/CodeViewer.md +4 -0
  57. package/docs/widget/Column.md +4 -0
  58. package/docs/widget/Container.md +4 -0
  59. package/docs/widget/DataTable.md +4 -0
  60. package/docs/widget/Divider.md +4 -0
  61. package/docs/widget/DraggBox.md +6 -2
  62. package/docs/widget/Dropdown.md +6 -0
  63. package/docs/widget/DroppBox.md +5 -1
  64. package/docs/widget/FloatingActionButton.md +4 -0
  65. package/docs/widget/GridView.md +4 -0
  66. package/docs/widget/Icon.md +4 -0
  67. package/docs/widget/Image.md +14 -3
  68. package/docs/widget/Input.md +4 -0
  69. package/docs/widget/Inspector.md +2 -2
  70. package/docs/widget/InstallButton.md +4 -0
  71. package/docs/widget/ListTile.md +4 -0
  72. package/docs/widget/ListView.md +4 -0
  73. package/docs/widget/Maps.md +191 -0
  74. package/docs/widget/Markdown.md +4 -0
  75. package/docs/widget/MatrixRain.md +4 -0
  76. package/docs/widget/Pagination.md +4 -0
  77. package/docs/widget/ParallaxBox.md +4 -0
  78. package/docs/widget/ProgressBar.md +4 -0
  79. package/docs/widget/QRCode.md +4 -0
  80. package/docs/widget/README.md +12 -10
  81. package/docs/widget/Radio.md +5 -1
  82. package/docs/widget/Rating.md +4 -0
  83. package/docs/widget/Row.md +4 -0
  84. package/docs/widget/Skeleton.md +4 -0
  85. package/docs/widget/Slider.md +4 -0
  86. package/docs/widget/Stack.md +4 -0
  87. package/docs/widget/Stepper.md +4 -0
  88. package/docs/widget/Switch.md +4 -0
  89. package/docs/widget/Tabs.md +5 -5
  90. package/docs/widget/Text.md +4 -0
  91. package/docs/widget/Tooltip.md +14 -13
  92. package/docs/widget/TreeView.md +4 -0
  93. package/docs/widget/Video.md +6 -2
  94. package/package.json +2 -2
  95. package/src/animations/AnimatedBox.js +4 -1
  96. package/src/animations/MatrixRain.js +3 -3
  97. package/src/core/hmr-client.js +129 -34
  98. package/src/index.d.ts +195 -7
  99. package/src/index.js +2 -0
  100. package/src/navigations/AppBar.js +22 -16
  101. package/src/navigations/BottomNavigation.js +8 -13
  102. package/src/navigations/CollapsibleSideBar.js +30 -8
  103. package/src/navigations/Drawer.js +25 -15
  104. package/src/navigations/DrawerItem.js +3 -1
  105. package/src/navigations/Scaffold.js +26 -12
  106. package/src/navigations/Tabs.js +104 -59
  107. package/src/tools/color.js +54 -0
  108. package/src/tools/index.js +9 -1
  109. package/src/tools/scale.js +41 -0
  110. package/src/tools/shadow.js +20 -0
  111. package/src/utils/index.js +1 -0
  112. package/src/utils/readableInk.js +19 -0
  113. package/src/utils/syntaxHighlight.js +78 -10
  114. package/src/utils/themes.js +217 -54
  115. package/src/utils/units.js +33 -11
  116. package/src/widget-factory/effects.js +56 -5
  117. package/src/widget-factory/processProps.js +10 -1
  118. package/src/widget-factory/remTool.js +15 -29
  119. package/src/widget-factory/stackPosition.js +18 -3
  120. package/src/widget-factory/translateProps.js +60 -1
  121. package/src/widgets/Accordion.js +20 -23
  122. package/src/widgets/AdMob.js +7 -2
  123. package/src/widgets/Avatar.js +236 -133
  124. package/src/widgets/Badge.js +3 -2
  125. package/src/widgets/BottomSheet.js +14 -13
  126. package/src/widgets/Button.js +69 -30
  127. package/src/widgets/Card.js +6 -2
  128. package/src/widgets/Carousel.js +12 -10
  129. package/src/widgets/Chart.js +28 -5
  130. package/src/widgets/Checkbox.js +76 -18
  131. package/src/widgets/Chip.js +31 -10
  132. package/src/widgets/CircularBar.js +7 -7
  133. package/src/widgets/CircularChart.js +26 -8
  134. package/src/widgets/CodeViewer.js +93 -20
  135. package/src/widgets/Container.js +13 -0
  136. package/src/widgets/DataTable.js +17 -11
  137. package/src/widgets/DraggBox.js +2 -1
  138. package/src/widgets/Dropdown.js +59 -14
  139. package/src/widgets/DroppBox.js +4 -2
  140. package/src/widgets/FloatingActionButton.js +13 -7
  141. package/src/widgets/Icon.js +3 -1
  142. package/src/widgets/Image.js +102 -3
  143. package/src/widgets/Input.js +30 -23
  144. package/src/widgets/Inspector.js +54 -1
  145. package/src/widgets/InstallButton.js +6 -4
  146. package/src/widgets/ListTile.js +4 -3
  147. package/src/widgets/ListView.js +30 -12
  148. package/src/widgets/Maps.js +1495 -0
  149. package/src/widgets/Markdown.js +37 -26
  150. package/src/widgets/Modal.js +14 -11
  151. package/src/widgets/Pagination.js +16 -11
  152. package/src/widgets/ProgressBar.js +6 -4
  153. package/src/widgets/Radio.js +73 -15
  154. package/src/widgets/Rating.js +24 -6
  155. package/src/widgets/Skeleton.js +31 -31
  156. package/src/widgets/Slider.js +29 -18
  157. package/src/widgets/SnackBar.js +35 -39
  158. package/src/widgets/Stepper.js +13 -9
  159. package/src/widgets/Switch.js +59 -18
  160. package/src/widgets/Tooltip.js +24 -12
  161. package/src/widgets/TreeView.js +27 -15
  162. package/src/widgets/index.js +1 -0
@@ -31,6 +31,7 @@ import { createRequire } from "node:module";
31
31
  import { fileURLToPath, pathToFileURL } from "node:url";
32
32
  import {
33
33
  parseInterfaces,
34
+ parseSignatures,
34
35
  resolveInterfaceProps,
35
36
  } from "../utils/dtsProps.js";
36
37
  import { c, banner, section } from "../utils/colors.js";
@@ -42,7 +43,7 @@ const __dirname = path.dirname(fileURLToPath(import.meta.url));
42
43
  const CLI_PACKAGE_DIR = path.join(__dirname, "..", "..");
43
44
 
44
45
  /** Keys the factory itself reads, so they are never "invented props". */
45
- const STRUCTURAL_PROPS = new Set([
46
+ export const STRUCTURAL_PROPS = new Set([
46
47
  "child",
47
48
  "children",
48
49
  "tag",
@@ -129,7 +130,7 @@ const resolvePackage = (projectRoot) => {
129
130
  * @param {string} projectRoot
130
131
  * @returns {Promise<object>}
131
132
  */
132
- const loadApi = async (projectRoot) => {
133
+ export const loadApi = async (projectRoot) => {
133
134
  const { dir, pkg } = resolvePackage(projectRoot);
134
135
  const barrel = await import(pathToFileURL(path.join(dir, "src", "index.js")).href);
135
136
  const registry = await import(
@@ -143,6 +144,7 @@ const loadApi = async (projectRoot) => {
143
144
  PROP_MAP: registry.PROP_MAP,
144
145
  ALL_PROPS: registry.ALL_PROPS,
145
146
  interfaces: parseInterfaces(dts),
147
+ signatures: parseSignatures(dts),
146
148
  };
147
149
  };
148
150
 
@@ -153,7 +155,7 @@ const loadApi = async (projectRoot) => {
153
155
  * @param {string} b
154
156
  * @returns {number}
155
157
  */
156
- const distance = (a, b) => {
158
+ export const distance = (a, b) => {
157
159
  if (a === b) return 0;
158
160
  const m = a.length;
159
161
  const n = b.length;
@@ -180,7 +182,7 @@ const distance = (a, b) => {
180
182
  * @param {Iterable<string>} candidates
181
183
  * @returns {string | null}
182
184
  */
183
- const nearest = (value, candidates) => {
185
+ export const nearest = (value, candidates) => {
184
186
  let best = null;
185
187
  let bestScore = 4; // never suggest for names that are simply unrelated
186
188
  const lower = value.toLowerCase();
@@ -200,7 +202,7 @@ const nearest = (value, candidates) => {
200
202
  * @param {string} projectRoot
201
203
  * @returns {string[]}
202
204
  */
203
- const collectSources = (projectRoot) => {
205
+ export const collectSources = (projectRoot) => {
204
206
  const files = [];
205
207
  const walk = (dir) => {
206
208
  let entries;
@@ -232,6 +234,13 @@ const collectSources = (projectRoot) => {
232
234
  /**
233
235
  * Read the keys of an object literal starting at its opening brace.
234
236
  *
237
+ * Only the object's own level is scanned: a comma inside an array, a call or a
238
+ * nested brace belongs to that inner expression, not to the props object.
239
+ * Without the group counter, `children: [slot, line]` was split on its inner
240
+ * commas and every widget variable in the list was reported as a shorthand prop
241
+ * (`Column({ line })` — UNKNOWN_PROP), which is the single most common shape in
242
+ * a FletBox app.
243
+ *
235
244
  * @param {string} code Comment/string-free source.
236
245
  * @param {number} open Index of `{`.
237
246
  * @returns {{ keys: string[], opaque: boolean }} `opaque` when a top-level
@@ -240,6 +249,7 @@ const collectSources = (projectRoot) => {
240
249
  const literalKeys = (code, open) => {
241
250
  const keys = [];
242
251
  let depth = 0;
252
+ let group = 0;
243
253
  let current = "";
244
254
  let opaque = false;
245
255
  const flush = () => {
@@ -265,7 +275,11 @@ const literalKeys = (code, open) => {
265
275
  flush();
266
276
  return { keys, opaque };
267
277
  }
268
- } else if (depth === 1 && ch === ",") {
278
+ } else if (ch === "[" || ch === "(") {
279
+ group++;
280
+ } else if (ch === "]" || ch === ")") {
281
+ if (group > 0) group--;
282
+ } else if (depth === 1 && group === 0 && ch === ",") {
269
283
  flush();
270
284
  continue;
271
285
  }