@falcon-ui/falcon-ui 1.0.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 (289) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +182 -0
  3. package/cjs/JsBarcode-BlUjuVmB.cjs +3519 -0
  4. package/cjs/JsBarcode-BlUjuVmB.cjs.map +1 -0
  5. package/cjs/chunk-D4y6LrGi.cjs +40 -0
  6. package/cjs/components/JsBarcode-BOXEZn4Q.cjs +3519 -0
  7. package/cjs/components/JsBarcode-BOXEZn4Q.cjs.map +1 -0
  8. package/cjs/components/barcode/JsBarcode-BOXEZn4Q.cjs +3519 -0
  9. package/cjs/components/barcode/JsBarcode-BOXEZn4Q.cjs.map +1 -0
  10. package/cjs/components/barcode/chunk-D4y6LrGi.cjs +40 -0
  11. package/cjs/components/barcode/index.cjs +211 -0
  12. package/cjs/components/barcode/index.cjs.map +1 -0
  13. package/cjs/components/barcode/src/JsBarcode-BOXEZn4Q.cjs +3519 -0
  14. package/cjs/components/barcode/src/JsBarcode-BOXEZn4Q.cjs.map +1 -0
  15. package/cjs/components/barcode/src/barcode.cjs +102 -0
  16. package/cjs/components/barcode/src/barcode.cjs.map +1 -0
  17. package/cjs/components/barcode/src/barcode.vue.cjs +200 -0
  18. package/cjs/components/barcode/src/barcode.vue.cjs.map +1 -0
  19. package/cjs/components/barcode/src/chunk-D4y6LrGi.cjs +40 -0
  20. package/cjs/components/button/index.cjs +135 -0
  21. package/cjs/components/button/index.cjs.map +1 -0
  22. package/cjs/components/button/src/button.cjs +16 -0
  23. package/cjs/components/button/src/button.cjs.map +1 -0
  24. package/cjs/components/button/src/button.vue.cjs +124 -0
  25. package/cjs/components/button/src/button.vue.cjs.map +1 -0
  26. package/cjs/components/chunk-D4y6LrGi.cjs +40 -0
  27. package/cjs/components/date-picker/index.cjs +164 -0
  28. package/cjs/components/date-picker/index.cjs.map +1 -0
  29. package/cjs/components/date-picker/src/date-picker.cjs +25 -0
  30. package/cjs/components/date-picker/src/date-picker.cjs.map +1 -0
  31. package/cjs/components/date-picker/src/date-picker.vue.cjs +153 -0
  32. package/cjs/components/date-picker/src/date-picker.vue.cjs.map +1 -0
  33. package/cjs/components/dialog/index.cjs +346 -0
  34. package/cjs/components/dialog/index.cjs.map +1 -0
  35. package/cjs/components/dialog/src/dialog.cjs +40 -0
  36. package/cjs/components/dialog/src/dialog.cjs.map +1 -0
  37. package/cjs/components/dialog/src/dialog.vue.cjs +343 -0
  38. package/cjs/components/dialog/src/dialog.vue.cjs.map +1 -0
  39. package/cjs/components/index.cjs +9450 -0
  40. package/cjs/components/index.cjs.map +1 -0
  41. package/cjs/components/input/index.cjs +175 -0
  42. package/cjs/components/input/index.cjs.map +1 -0
  43. package/cjs/components/input/src/input.cjs +27 -0
  44. package/cjs/components/input/src/input.cjs.map +1 -0
  45. package/cjs/components/input/src/input.vue.cjs +164 -0
  46. package/cjs/components/input/src/input.vue.cjs.map +1 -0
  47. package/cjs/components/input-number/index.cjs +374 -0
  48. package/cjs/components/input-number/index.cjs.map +1 -0
  49. package/cjs/components/input-number/src/input-number.cjs +48 -0
  50. package/cjs/components/input-number/src/input-number.cjs.map +1 -0
  51. package/cjs/components/input-number/src/input-number.vue.cjs +363 -0
  52. package/cjs/components/input-number/src/input-number.vue.cjs.map +1 -0
  53. package/cjs/components/input-search/index.cjs +286 -0
  54. package/cjs/components/input-search/index.cjs.map +1 -0
  55. package/cjs/components/input-search/src/input-search.cjs +55 -0
  56. package/cjs/components/input-search/src/input-search.cjs.map +1 -0
  57. package/cjs/components/input-search/src/input-search.vue.cjs +275 -0
  58. package/cjs/components/input-search/src/input-search.vue.cjs.map +1 -0
  59. package/cjs/components/qr-code/index.cjs +1975 -0
  60. package/cjs/components/qr-code/index.cjs.map +1 -0
  61. package/cjs/components/qr-code/src/qr-code.cjs +63 -0
  62. package/cjs/components/qr-code/src/qr-code.cjs.map +1 -0
  63. package/cjs/components/qr-code/src/qr-code.vue.cjs +1964 -0
  64. package/cjs/components/qr-code/src/qr-code.vue.cjs.map +1 -0
  65. package/cjs/components/radial-menu/index.cjs +983 -0
  66. package/cjs/components/radial-menu/index.cjs.map +1 -0
  67. package/cjs/components/radial-menu/src/radial-menu.cjs +96 -0
  68. package/cjs/components/radial-menu/src/radial-menu.cjs.map +1 -0
  69. package/cjs/components/radial-menu/src/radial-menu.vue.cjs +921 -0
  70. package/cjs/components/radial-menu/src/radial-menu.vue.cjs.map +1 -0
  71. package/cjs/components/select/index.cjs +163 -0
  72. package/cjs/components/select/index.cjs.map +1 -0
  73. package/cjs/components/select/src/select.cjs +16 -0
  74. package/cjs/components/select/src/select.cjs.map +1 -0
  75. package/cjs/components/select/src/select.vue.cjs +152 -0
  76. package/cjs/components/select/src/select.vue.cjs.map +1 -0
  77. package/cjs/components/table/index.cjs +3351 -0
  78. package/cjs/components/table/index.cjs.map +1 -0
  79. package/cjs/components/table/src/table.cjs +62 -0
  80. package/cjs/components/table/src/table.cjs.map +1 -0
  81. package/cjs/components/table/src/table.vue.cjs +3085 -0
  82. package/cjs/components/table/src/table.vue.cjs.map +1 -0
  83. package/cjs/dialog-CJU00aEV.cjs +614 -0
  84. package/cjs/dialog-CJU00aEV.cjs.map +1 -0
  85. package/cjs/dialog-DcH26KbE.cjs +2 -0
  86. package/cjs/hooks/dialog-DpYPBcKV.cjs +266 -0
  87. package/cjs/hooks/dialog-DpYPBcKV.cjs.map +1 -0
  88. package/cjs/hooks/hooks-D2Jaq5kO.cjs +328 -0
  89. package/cjs/hooks/hooks-D2Jaq5kO.cjs.map +1 -0
  90. package/cjs/hooks/index.cjs +8 -0
  91. package/cjs/icons/index.cjs +86 -0
  92. package/cjs/icons/index.cjs.map +1 -0
  93. package/cjs/index.cjs +9141 -0
  94. package/cjs/index.cjs.map +1 -0
  95. package/cjs/utils/index.cjs +69 -0
  96. package/cjs/utils/index.cjs.map +1 -0
  97. package/esm/JsBarcode-kVJER62m.js +3514 -0
  98. package/esm/JsBarcode-kVJER62m.js.map +1 -0
  99. package/esm/chunk-BuRq7rDw.js +23 -0
  100. package/esm/components/JsBarcode-CzzxrEd_.js +3514 -0
  101. package/esm/components/JsBarcode-CzzxrEd_.js.map +1 -0
  102. package/esm/components/barcode/JsBarcode-C5ux6wsb.js +3514 -0
  103. package/esm/components/barcode/JsBarcode-C5ux6wsb.js.map +1 -0
  104. package/esm/components/barcode/chunk--em_ddB3.js +23 -0
  105. package/esm/components/barcode/index.mjs +204 -0
  106. package/esm/components/barcode/index.mjs.map +1 -0
  107. package/esm/components/barcode/src/JsBarcode-C5ux6wsb.js +3514 -0
  108. package/esm/components/barcode/src/JsBarcode-C5ux6wsb.js.map +1 -0
  109. package/esm/components/barcode/src/barcode.mjs +98 -0
  110. package/esm/components/barcode/src/barcode.mjs.map +1 -0
  111. package/esm/components/barcode/src/barcode.vue.mjs +194 -0
  112. package/esm/components/barcode/src/barcode.vue.mjs.map +1 -0
  113. package/esm/components/barcode/src/chunk--em_ddB3.js +23 -0
  114. package/esm/components/button/index.mjs +126 -0
  115. package/esm/components/button/index.mjs.map +1 -0
  116. package/esm/components/button/src/button.mjs +14 -0
  117. package/esm/components/button/src/button.mjs.map +1 -0
  118. package/esm/components/button/src/button.vue.mjs +117 -0
  119. package/esm/components/button/src/button.vue.mjs.map +1 -0
  120. package/esm/components/chunk-BuRq7rDw.js +23 -0
  121. package/esm/components/date-picker/index.mjs +155 -0
  122. package/esm/components/date-picker/index.mjs.map +1 -0
  123. package/esm/components/date-picker/src/date-picker.mjs +23 -0
  124. package/esm/components/date-picker/src/date-picker.mjs.map +1 -0
  125. package/esm/components/date-picker/src/date-picker.vue.mjs +146 -0
  126. package/esm/components/date-picker/src/date-picker.vue.mjs.map +1 -0
  127. package/esm/components/dialog/index.mjs +335 -0
  128. package/esm/components/dialog/index.mjs.map +1 -0
  129. package/esm/components/dialog/src/dialog.mjs +38 -0
  130. package/esm/components/dialog/src/dialog.mjs.map +1 -0
  131. package/esm/components/dialog/src/dialog.vue.mjs +334 -0
  132. package/esm/components/dialog/src/dialog.vue.mjs.map +1 -0
  133. package/esm/components/index.mjs +9386 -0
  134. package/esm/components/index.mjs.map +1 -0
  135. package/esm/components/input/index.mjs +166 -0
  136. package/esm/components/input/index.mjs.map +1 -0
  137. package/esm/components/input/src/input.mjs +25 -0
  138. package/esm/components/input/src/input.mjs.map +1 -0
  139. package/esm/components/input/src/input.vue.mjs +157 -0
  140. package/esm/components/input/src/input.vue.mjs.map +1 -0
  141. package/esm/components/input-number/index.mjs +365 -0
  142. package/esm/components/input-number/index.mjs.map +1 -0
  143. package/esm/components/input-number/src/input-number.mjs +45 -0
  144. package/esm/components/input-number/src/input-number.mjs.map +1 -0
  145. package/esm/components/input-number/src/input-number.vue.mjs +356 -0
  146. package/esm/components/input-number/src/input-number.vue.mjs.map +1 -0
  147. package/esm/components/input-search/index.mjs +277 -0
  148. package/esm/components/input-search/index.mjs.map +1 -0
  149. package/esm/components/input-search/src/input-search.mjs +53 -0
  150. package/esm/components/input-search/src/input-search.mjs.map +1 -0
  151. package/esm/components/input-search/src/input-search.vue.mjs +268 -0
  152. package/esm/components/input-search/src/input-search.vue.mjs.map +1 -0
  153. package/esm/components/qr-code/index.mjs +1967 -0
  154. package/esm/components/qr-code/index.mjs.map +1 -0
  155. package/esm/components/qr-code/src/qr-code.mjs +59 -0
  156. package/esm/components/qr-code/src/qr-code.mjs.map +1 -0
  157. package/esm/components/qr-code/src/qr-code.vue.mjs +1958 -0
  158. package/esm/components/qr-code/src/qr-code.vue.mjs.map +1 -0
  159. package/esm/components/radial-menu/index.mjs +974 -0
  160. package/esm/components/radial-menu/index.mjs.map +1 -0
  161. package/esm/components/radial-menu/src/radial-menu.mjs +94 -0
  162. package/esm/components/radial-menu/src/radial-menu.mjs.map +1 -0
  163. package/esm/components/radial-menu/src/radial-menu.vue.mjs +916 -0
  164. package/esm/components/radial-menu/src/radial-menu.vue.mjs.map +1 -0
  165. package/esm/components/select/index.mjs +154 -0
  166. package/esm/components/select/index.mjs.map +1 -0
  167. package/esm/components/select/src/select.mjs +14 -0
  168. package/esm/components/select/src/select.mjs.map +1 -0
  169. package/esm/components/select/src/select.vue.mjs +145 -0
  170. package/esm/components/select/src/select.vue.mjs.map +1 -0
  171. package/esm/components/table/index.mjs +3342 -0
  172. package/esm/components/table/index.mjs.map +1 -0
  173. package/esm/components/table/src/table.mjs +60 -0
  174. package/esm/components/table/src/table.mjs.map +1 -0
  175. package/esm/components/table/src/table.vue.mjs +3080 -0
  176. package/esm/components/table/src/table.vue.mjs.map +1 -0
  177. package/esm/dialog-Cm3Px-Bu.js +537 -0
  178. package/esm/dialog-Cm3Px-Bu.js.map +1 -0
  179. package/esm/dialog-CzZm50XM.js +2 -0
  180. package/esm/hooks/dialog-d4SMZWbw.js +261 -0
  181. package/esm/hooks/dialog-d4SMZWbw.js.map +1 -0
  182. package/esm/hooks/hooks-DdjieG2I.js +281 -0
  183. package/esm/hooks/hooks-DdjieG2I.js.map +1 -0
  184. package/esm/hooks/index.mjs +2 -0
  185. package/esm/icons/index.mjs +79 -0
  186. package/esm/icons/index.mjs.map +1 -0
  187. package/esm/index.mjs +9065 -0
  188. package/esm/index.mjs.map +1 -0
  189. package/esm/utils/index.mjs +65 -0
  190. package/esm/utils/index.mjs.map +1 -0
  191. package/global.d.ts +39 -0
  192. package/package.json +131 -0
  193. package/theme/index.css +1 -0
  194. package/theme/index.scss +16 -0
  195. package/theme/src/barcode.scss +14 -0
  196. package/theme/src/button.scss +65 -0
  197. package/theme/src/date-picker.scss +87 -0
  198. package/theme/src/dialog.scss +146 -0
  199. package/theme/src/ep-vars.scss +11 -0
  200. package/theme/src/input-number.scss +66 -0
  201. package/theme/src/input-search.scss +78 -0
  202. package/theme/src/input.scss +66 -0
  203. package/theme/src/mixins/bem.scss +35 -0
  204. package/theme/src/mixins/color.scss +8 -0
  205. package/theme/src/qr-code.scss +23 -0
  206. package/theme/src/radial-menu.scss +346 -0
  207. package/theme/src/select.scss +44 -0
  208. package/theme/src/table.scss +143 -0
  209. package/theme/src/tokens.scss +26 -0
  210. package/theme/src/tree-select.scss +45 -0
  211. package/theme/src/tree.scss +369 -0
  212. package/types/components/barcode/index.d.ts +183 -0
  213. package/types/components/barcode/src/barcode.d.ts +147 -0
  214. package/types/components/barcode/src/barcode.vue.d.ts +184 -0
  215. package/types/components/button/index.d.ts +135 -0
  216. package/types/components/button/src/button.d.ts +33 -0
  217. package/types/components/button/src/button.vue.d.ts +138 -0
  218. package/types/components/date-picker/index.d.ts +508 -0
  219. package/types/components/date-picker/src/date-picker.d.ts +35 -0
  220. package/types/components/date-picker/src/date-picker.vue.d.ts +509 -0
  221. package/types/components/dialog/index.d.ts +630 -0
  222. package/types/components/dialog/src/dialog.d.ts +70 -0
  223. package/types/components/dialog/src/dialog.vue.d.ts +257 -0
  224. package/types/components/index.d.ts +27 -0
  225. package/types/components/input/index.d.ts +233 -0
  226. package/types/components/input/src/input.d.ts +65 -0
  227. package/types/components/input/src/input.vue.d.ts +239 -0
  228. package/types/components/input-number/index.d.ts +713 -0
  229. package/types/components/input-number/src/input-number.d.ts +101 -0
  230. package/types/components/input-number/src/input-number.vue.d.ts +283 -0
  231. package/types/components/input-search/index.d.ts +113 -0
  232. package/types/components/input-search/src/input-search.d.ts +128 -0
  233. package/types/components/input-search/src/input-search.vue.d.ts +114 -0
  234. package/types/components/qr-code/index.d.ts +109 -0
  235. package/types/components/qr-code/src/qr-code.d.ts +93 -0
  236. package/types/components/qr-code/src/qr-code.vue.d.ts +109 -0
  237. package/types/components/radial-menu/index.d.ts +499 -0
  238. package/types/components/radial-menu/src/radial-menu-item.d.ts +40 -0
  239. package/types/components/radial-menu/src/radial-menu-item.vue.d.ts +95 -0
  240. package/types/components/radial-menu/src/radial-menu.d.ts +92 -0
  241. package/types/components/radial-menu/src/radial-menu.vue.d.ts +200 -0
  242. package/types/components/radial-menu/src/types.d.ts +48 -0
  243. package/types/components/radial-menu/src/use-radial-menu-items.d.ts +19 -0
  244. package/types/components/radial-menu/src/use-radial-menu-keyboard.d.ts +17 -0
  245. package/types/components/radial-menu/src/use-radial-menu-position.d.ts +45 -0
  246. package/types/components/radial-menu/src/use-radial-menu-shortcut.d.ts +8 -0
  247. package/types/components/radial-menu/src/use-radial-menu-state.d.ts +15 -0
  248. package/types/components/select/index.d.ts +5 -0
  249. package/types/components/select/src/select.d.ts +30 -0
  250. package/types/components/select/src/select.vue.d.ts +25 -0
  251. package/types/components/table/index.d.ts +8 -0
  252. package/types/components/table/src/editor-registry.d.ts +24 -0
  253. package/types/components/table/src/proxy-data.d.ts +10 -0
  254. package/types/components/table/src/table-editor.d.ts +18 -0
  255. package/types/components/table/src/table-editor.vue.d.ts +43 -0
  256. package/types/components/table/src/table.d.ts +179 -0
  257. package/types/components/table/src/table.vue.d.ts +121 -0
  258. package/types/components/tree/index.d.ts +5 -0
  259. package/types/components/tree/src/tree-node.vue.d.ts +88 -0
  260. package/types/components/tree/src/tree-types.d.ts +90 -0
  261. package/types/components/tree/src/tree.d.ts +448 -0
  262. package/types/components/tree/src/tree.vue.d.ts +301 -0
  263. package/types/components/tree/src/use-tree-check-conduct.d.ts +43 -0
  264. package/types/components/tree/src/use-tree-checked-state.d.ts +34 -0
  265. package/types/components/tree/src/use-tree-drag.d.ts +45 -0
  266. package/types/components/tree/src/use-tree-expanded-state.d.ts +41 -0
  267. package/types/components/tree/src/use-tree-keyboard.d.ts +21 -0
  268. package/types/components/tree/src/use-tree-load.d.ts +25 -0
  269. package/types/components/tree/src/use-tree-scroll.d.ts +17 -0
  270. package/types/components/tree/src/use-tree-selected-state.d.ts +29 -0
  271. package/types/components/tree-select/index.d.ts +5 -0
  272. package/types/components/tree-select/src/tree-select.d.ts +26 -0
  273. package/types/components/tree-select/src/tree-select.vue.d.ts +25 -0
  274. package/types/falcon-ui/index.d.ts +8 -0
  275. package/types/hooks/index.d.ts +3 -0
  276. package/types/hooks/src/use-clearable-state.d.ts +10 -0
  277. package/types/hooks/src/use-component.d.ts +15 -0
  278. package/types/hooks/src/use-dialog.d.ts +49 -0
  279. package/types/icons/index.d.ts +1 -0
  280. package/types/icons/src/components/holder-outlined.vue.d.ts +3 -0
  281. package/types/icons/src/components/index.d.ts +3 -0
  282. package/types/icons/src/components/minus-square-outlined.vue.d.ts +3 -0
  283. package/types/icons/src/components/plus-square-outlined.vue.d.ts +3 -0
  284. package/types/utils/index.d.ts +3 -0
  285. package/types/utils/src/bem.d.ts +11 -0
  286. package/types/utils/src/component.d.ts +6 -0
  287. package/types/utils/src/install.d.ts +5 -0
  288. package/umd/falcon-ui.umd.js +13297 -0
  289. package/umd/falcon-ui.umd.js.map +1 -0
@@ -0,0 +1,98 @@
1
+ const flBarcodeFormats = [
2
+ "CODE128",
3
+ "CODE39",
4
+ "EAN13",
5
+ "EAN8",
6
+ "UPCA",
7
+ "UPCE"
8
+ ];
9
+ const flBarcodeTextAligns = [
10
+ "left",
11
+ "center",
12
+ "right"
13
+ ];
14
+ const flBarcodeTextPositions = ["top", "bottom"];
15
+ const flBarcodeProps = {
16
+ value: {
17
+ type: String,
18
+ default: ""
19
+ },
20
+ format: {
21
+ type: String,
22
+ default: "CODE128",
23
+ validator: (value) => flBarcodeFormats.includes(value)
24
+ },
25
+ width: {
26
+ type: Number,
27
+ default: 2
28
+ },
29
+ height: {
30
+ type: Number,
31
+ default: 100
32
+ },
33
+ color: {
34
+ type: String,
35
+ default: "#000000"
36
+ },
37
+ backgroundColor: {
38
+ type: String,
39
+ default: "#ffffff"
40
+ },
41
+ displayValue: {
42
+ type: Boolean,
43
+ default: true
44
+ },
45
+ text: {
46
+ type: String,
47
+ default: ""
48
+ },
49
+ font: {
50
+ type: String,
51
+ default: "monospace"
52
+ },
53
+ fontOptions: {
54
+ type: String,
55
+ default: ""
56
+ },
57
+ fontSize: {
58
+ type: Number,
59
+ default: 20
60
+ },
61
+ textAlign: {
62
+ type: String,
63
+ default: "center",
64
+ validator: (value) => flBarcodeTextAligns.includes(value)
65
+ },
66
+ textPosition: {
67
+ type: String,
68
+ default: "bottom",
69
+ validator: (value) => flBarcodeTextPositions.includes(value)
70
+ },
71
+ textMargin: {
72
+ type: Number,
73
+ default: 2
74
+ },
75
+ margin: {
76
+ type: Number,
77
+ default: 10
78
+ },
79
+ marginTop: {
80
+ type: Number,
81
+ default: void 0
82
+ },
83
+ marginRight: {
84
+ type: Number,
85
+ default: void 0
86
+ },
87
+ marginBottom: {
88
+ type: Number,
89
+ default: void 0
90
+ },
91
+ marginLeft: {
92
+ type: Number,
93
+ default: void 0
94
+ }
95
+ };
96
+ export { flBarcodeFormats, flBarcodeProps, flBarcodeTextAligns, flBarcodeTextPositions };
97
+
98
+ //# sourceMappingURL=barcode.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"barcode.mjs","names":[],"sources":["../../../../../../packages/components/barcode/src/barcode.ts"],"sourcesContent":["import type { ExtractPublicPropTypes, PropType } from 'vue'\r\n\r\nexport const flBarcodeFormats = ['CODE128', 'CODE39', 'EAN13', 'EAN8', 'UPCA', 'UPCE'] as const\r\n\r\nexport type FlBarcodeFormat = (typeof flBarcodeFormats)[number]\r\n\r\nexport const flBarcodeTextAligns = ['left', 'center', 'right'] as const\r\n\r\nexport type FlBarcodeTextAlign = (typeof flBarcodeTextAligns)[number]\r\n\r\nexport const flBarcodeTextPositions = ['top', 'bottom'] as const\r\n\r\nexport type FlBarcodeTextPosition = (typeof flBarcodeTextPositions)[number]\r\n\r\nexport const flBarcodeProps = {\r\n /**\r\n * Barcode payload.\r\n */\r\n value: {\r\n type: String,\r\n default: ''\r\n },\r\n /**\r\n * Supported barcode format.\r\n */\r\n format: {\r\n type: String as PropType<FlBarcodeFormat>,\r\n default: 'CODE128',\r\n validator: (value: string) => flBarcodeFormats.includes(value as FlBarcodeFormat)\r\n },\r\n /**\r\n * Width of each bar.\r\n */\r\n width: {\r\n type: Number,\r\n default: 2\r\n },\r\n /**\r\n * Barcode height.\r\n */\r\n height: {\r\n type: Number,\r\n default: 100\r\n },\r\n /**\r\n * Bar color.\r\n */\r\n color: {\r\n type: String,\r\n default: '#000000'\r\n },\r\n /**\r\n * Background color.\r\n */\r\n backgroundColor: {\r\n type: String,\r\n default: '#ffffff'\r\n },\r\n /**\r\n * Whether to display readable text.\r\n */\r\n displayValue: {\r\n type: Boolean,\r\n default: true\r\n },\r\n /**\r\n * Custom text. Falls back to value when empty.\r\n */\r\n text: {\r\n type: String,\r\n default: ''\r\n },\r\n /**\r\n * Text font family.\r\n */\r\n font: {\r\n type: String,\r\n default: 'monospace'\r\n },\r\n /**\r\n * Text font style flags.\r\n */\r\n fontOptions: {\r\n type: String,\r\n default: ''\r\n },\r\n /**\r\n * Text font size.\r\n */\r\n fontSize: {\r\n type: Number,\r\n default: 20\r\n },\r\n /**\r\n * Text alignment.\r\n */\r\n textAlign: {\r\n type: String as PropType<FlBarcodeTextAlign>,\r\n default: 'center',\r\n validator: (value: string) => flBarcodeTextAligns.includes(value as FlBarcodeTextAlign)\r\n },\r\n /**\r\n * Text position.\r\n */\r\n textPosition: {\r\n type: String as PropType<FlBarcodeTextPosition>,\r\n default: 'bottom',\r\n validator: (value: string) => flBarcodeTextPositions.includes(value as FlBarcodeTextPosition)\r\n },\r\n /**\r\n * Distance between barcode bars and text.\r\n */\r\n textMargin: {\r\n type: Number,\r\n default: 2\r\n },\r\n /**\r\n * Global margin around the barcode.\r\n */\r\n margin: {\r\n type: Number,\r\n default: 10\r\n },\r\n /**\r\n * Overrides the top margin when provided.\r\n */\r\n marginTop: {\r\n type: Number,\r\n default: undefined\r\n },\r\n /**\r\n * Overrides the right margin when provided.\r\n */\r\n marginRight: {\r\n type: Number,\r\n default: undefined\r\n },\r\n /**\r\n * Overrides the bottom margin when provided.\r\n */\r\n marginBottom: {\r\n type: Number,\r\n default: undefined\r\n },\r\n /**\r\n * Overrides the left margin when provided.\r\n */\r\n marginLeft: {\r\n type: Number,\r\n default: undefined\r\n }\r\n} as const\r\n\r\nexport type FlBarcodeProps = ExtractPublicPropTypes<typeof flBarcodeProps>\r\n\r\nexport type BarcodeProps = FlBarcodeProps\r\n"],"mappings":"AAEA,MAAa,mBAAmB;CAAC;CAAW;CAAU;CAAS;CAAQ;CAAQ;CAAO;AAItF,MAAa,sBAAsB;CAAC;CAAQ;CAAU;CAAQ;AAI9D,MAAa,yBAAyB,CAAC,OAAO,SAAS;AAIvD,MAAa,iBAAiB;CAI5B,OAAO;EACL,MAAM;EACN,SAAS;EACV;CAID,QAAQ;EACN,MAAM;EACN,SAAS;EACT,YAAY,UAAkB,iBAAiB,SAAS,MAAyB;EAClF;CAID,OAAO;EACL,MAAM;EACN,SAAS;EACV;CAID,QAAQ;EACN,MAAM;EACN,SAAS;EACV;CAID,OAAO;EACL,MAAM;EACN,SAAS;EACV;CAID,iBAAiB;EACf,MAAM;EACN,SAAS;EACV;CAID,cAAc;EACZ,MAAM;EACN,SAAS;EACV;CAID,MAAM;EACJ,MAAM;EACN,SAAS;EACV;CAID,MAAM;EACJ,MAAM;EACN,SAAS;EACV;CAID,aAAa;EACX,MAAM;EACN,SAAS;EACV;CAID,UAAU;EACR,MAAM;EACN,SAAS;EACV;CAID,WAAW;EACT,MAAM;EACN,SAAS;EACT,YAAY,UAAkB,oBAAoB,SAAS,MAA4B;EACxF;CAID,cAAc;EACZ,MAAM;EACN,SAAS;EACT,YAAY,UAAkB,uBAAuB,SAAS,MAA+B;EAC9F;CAID,YAAY;EACV,MAAM;EACN,SAAS;EACV;CAID,QAAQ;EACN,MAAM;EACN,SAAS;EACV;CAID,WAAW;EACT,MAAM;EACN,SAAS,KAAA;EACV;CAID,aAAa;EACX,MAAM;EACN,SAAS,KAAA;EACV;CAID,cAAc;EACZ,MAAM;EACN,SAAS,KAAA;EACV;CAID,YAAY;EACV,MAAM;EACN,SAAS,KAAA;EACV;CACF"}
@@ -0,0 +1,194 @@
1
+ import { n as __toDynamicImportESM } from "./chunk--em_ddB3.js";
2
+ import { createElementBlock, defineComponent, mergeProps, onBeforeUnmount, onMounted, openBlock, ref, unref, useAttrs, watch } from "vue";
3
+ const flBarcodeFormats = [
4
+ "CODE128",
5
+ "CODE39",
6
+ "EAN13",
7
+ "EAN8",
8
+ "UPCA",
9
+ "UPCE"
10
+ ];
11
+ const flBarcodeTextAligns = [
12
+ "left",
13
+ "center",
14
+ "right"
15
+ ];
16
+ const flBarcodeTextPositions = ["top", "bottom"];
17
+ var barcode_default = /* @__PURE__ */ defineComponent({
18
+ name: "FlBarcode",
19
+ inheritAttrs: false,
20
+ __name: "barcode",
21
+ props: {
22
+ value: {
23
+ type: String,
24
+ default: ""
25
+ },
26
+ format: {
27
+ type: String,
28
+ default: "CODE128",
29
+ validator: (value) => flBarcodeFormats.includes(value)
30
+ },
31
+ width: {
32
+ type: Number,
33
+ default: 2
34
+ },
35
+ height: {
36
+ type: Number,
37
+ default: 100
38
+ },
39
+ color: {
40
+ type: String,
41
+ default: "#000000"
42
+ },
43
+ backgroundColor: {
44
+ type: String,
45
+ default: "#ffffff"
46
+ },
47
+ displayValue: {
48
+ type: Boolean,
49
+ default: true
50
+ },
51
+ text: {
52
+ type: String,
53
+ default: ""
54
+ },
55
+ font: {
56
+ type: String,
57
+ default: "monospace"
58
+ },
59
+ fontOptions: {
60
+ type: String,
61
+ default: ""
62
+ },
63
+ fontSize: {
64
+ type: Number,
65
+ default: 20
66
+ },
67
+ textAlign: {
68
+ type: String,
69
+ default: "center",
70
+ validator: (value) => flBarcodeTextAligns.includes(value)
71
+ },
72
+ textPosition: {
73
+ type: String,
74
+ default: "bottom",
75
+ validator: (value) => flBarcodeTextPositions.includes(value)
76
+ },
77
+ textMargin: {
78
+ type: Number,
79
+ default: 2
80
+ },
81
+ margin: {
82
+ type: Number,
83
+ default: 10
84
+ },
85
+ marginTop: {
86
+ type: Number,
87
+ default: void 0
88
+ },
89
+ marginRight: {
90
+ type: Number,
91
+ default: void 0
92
+ },
93
+ marginBottom: {
94
+ type: Number,
95
+ default: void 0
96
+ },
97
+ marginLeft: {
98
+ type: Number,
99
+ default: void 0
100
+ }
101
+ },
102
+ setup(__props) {
103
+ const props = __props;
104
+ const attrs = useAttrs();
105
+ const svgRef = ref(null);
106
+ let renderVersion = 0;
107
+ let jsBarcodeModulePromise = null;
108
+ const clearSvg = (svg) => {
109
+ svg.innerHTML = "";
110
+ };
111
+ const resolveFormat = (format) => {
112
+ const normalized = String(format).toUpperCase();
113
+ if (normalized === "UPCA") return "UPC";
114
+ return normalized;
115
+ };
116
+ const buildOptions = () => {
117
+ const options = {
118
+ format: resolveFormat(props.format),
119
+ width: props.width,
120
+ height: props.height,
121
+ lineColor: props.color,
122
+ background: props.backgroundColor,
123
+ displayValue: props.displayValue,
124
+ text: props.text === "" ? void 0 : props.text,
125
+ font: props.font,
126
+ fontOptions: props.fontOptions,
127
+ fontSize: props.fontSize,
128
+ textAlign: props.textAlign,
129
+ textPosition: props.textPosition,
130
+ textMargin: props.textMargin,
131
+ margin: props.margin
132
+ };
133
+ if (props.marginTop !== void 0) options.marginTop = props.marginTop;
134
+ if (props.marginRight !== void 0) options.marginRight = props.marginRight;
135
+ if (props.marginBottom !== void 0) options.marginBottom = props.marginBottom;
136
+ if (props.marginLeft !== void 0) options.marginLeft = props.marginLeft;
137
+ return options;
138
+ };
139
+ const loadJsBarcode = async () => {
140
+ if (!jsBarcodeModulePromise) jsBarcodeModulePromise = import("./JsBarcode-C5ux6wsb.js").then(__toDynamicImportESM());
141
+ return (await jsBarcodeModulePromise).default;
142
+ };
143
+ const renderBarcode = async () => {
144
+ const currentVersion = ++renderVersion;
145
+ const svg = svgRef.value;
146
+ if (!svg) return;
147
+ clearSvg(svg);
148
+ if (props.value === "") return;
149
+ const JsBarcode = await loadJsBarcode();
150
+ if (currentVersion !== renderVersion) return;
151
+ JsBarcode(svg, props.value, buildOptions());
152
+ };
153
+ const watchSources = () => [
154
+ props.value,
155
+ props.format,
156
+ props.width,
157
+ props.height,
158
+ props.color,
159
+ props.backgroundColor,
160
+ props.displayValue,
161
+ props.text,
162
+ props.font,
163
+ props.fontOptions,
164
+ props.fontSize,
165
+ props.textAlign,
166
+ props.textPosition,
167
+ props.textMargin,
168
+ props.margin,
169
+ props.marginTop,
170
+ props.marginRight,
171
+ props.marginBottom,
172
+ props.marginLeft
173
+ ];
174
+ onMounted(() => {
175
+ renderBarcode();
176
+ });
177
+ watch(watchSources, () => {
178
+ renderBarcode();
179
+ }, { flush: "post" });
180
+ onBeforeUnmount(() => {
181
+ renderVersion += 1;
182
+ });
183
+ return (_ctx, _cache) => {
184
+ return openBlock(), createElementBlock("svg", mergeProps({
185
+ ref_key: "svgRef",
186
+ ref: svgRef,
187
+ class: "fl-barcode"
188
+ }, unref(attrs)), null, 16);
189
+ };
190
+ }
191
+ });
192
+ export { barcode_default as default };
193
+
194
+ //# sourceMappingURL=barcode.vue.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"barcode.vue.mjs","names":[],"sources":["../../../../../../packages/components/barcode/src/barcode.ts","../../../../../../packages/components/barcode/src/barcode.vue","../../../../../../packages/components/barcode/src/barcode.vue"],"sourcesContent":["import type { ExtractPublicPropTypes, PropType } from 'vue'\r\n\r\nexport const flBarcodeFormats = ['CODE128', 'CODE39', 'EAN13', 'EAN8', 'UPCA', 'UPCE'] as const\r\n\r\nexport type FlBarcodeFormat = (typeof flBarcodeFormats)[number]\r\n\r\nexport const flBarcodeTextAligns = ['left', 'center', 'right'] as const\r\n\r\nexport type FlBarcodeTextAlign = (typeof flBarcodeTextAligns)[number]\r\n\r\nexport const flBarcodeTextPositions = ['top', 'bottom'] as const\r\n\r\nexport type FlBarcodeTextPosition = (typeof flBarcodeTextPositions)[number]\r\n\r\nexport const flBarcodeProps = {\r\n /**\r\n * Barcode payload.\r\n */\r\n value: {\r\n type: String,\r\n default: ''\r\n },\r\n /**\r\n * Supported barcode format.\r\n */\r\n format: {\r\n type: String as PropType<FlBarcodeFormat>,\r\n default: 'CODE128',\r\n validator: (value: string) => flBarcodeFormats.includes(value as FlBarcodeFormat)\r\n },\r\n /**\r\n * Width of each bar.\r\n */\r\n width: {\r\n type: Number,\r\n default: 2\r\n },\r\n /**\r\n * Barcode height.\r\n */\r\n height: {\r\n type: Number,\r\n default: 100\r\n },\r\n /**\r\n * Bar color.\r\n */\r\n color: {\r\n type: String,\r\n default: '#000000'\r\n },\r\n /**\r\n * Background color.\r\n */\r\n backgroundColor: {\r\n type: String,\r\n default: '#ffffff'\r\n },\r\n /**\r\n * Whether to display readable text.\r\n */\r\n displayValue: {\r\n type: Boolean,\r\n default: true\r\n },\r\n /**\r\n * Custom text. Falls back to value when empty.\r\n */\r\n text: {\r\n type: String,\r\n default: ''\r\n },\r\n /**\r\n * Text font family.\r\n */\r\n font: {\r\n type: String,\r\n default: 'monospace'\r\n },\r\n /**\r\n * Text font style flags.\r\n */\r\n fontOptions: {\r\n type: String,\r\n default: ''\r\n },\r\n /**\r\n * Text font size.\r\n */\r\n fontSize: {\r\n type: Number,\r\n default: 20\r\n },\r\n /**\r\n * Text alignment.\r\n */\r\n textAlign: {\r\n type: String as PropType<FlBarcodeTextAlign>,\r\n default: 'center',\r\n validator: (value: string) => flBarcodeTextAligns.includes(value as FlBarcodeTextAlign)\r\n },\r\n /**\r\n * Text position.\r\n */\r\n textPosition: {\r\n type: String as PropType<FlBarcodeTextPosition>,\r\n default: 'bottom',\r\n validator: (value: string) => flBarcodeTextPositions.includes(value as FlBarcodeTextPosition)\r\n },\r\n /**\r\n * Distance between barcode bars and text.\r\n */\r\n textMargin: {\r\n type: Number,\r\n default: 2\r\n },\r\n /**\r\n * Global margin around the barcode.\r\n */\r\n margin: {\r\n type: Number,\r\n default: 10\r\n },\r\n /**\r\n * Overrides the top margin when provided.\r\n */\r\n marginTop: {\r\n type: Number,\r\n default: undefined\r\n },\r\n /**\r\n * Overrides the right margin when provided.\r\n */\r\n marginRight: {\r\n type: Number,\r\n default: undefined\r\n },\r\n /**\r\n * Overrides the bottom margin when provided.\r\n */\r\n marginBottom: {\r\n type: Number,\r\n default: undefined\r\n },\r\n /**\r\n * Overrides the left margin when provided.\r\n */\r\n marginLeft: {\r\n type: Number,\r\n default: undefined\r\n }\r\n} as const\r\n\r\nexport type FlBarcodeProps = ExtractPublicPropTypes<typeof flBarcodeProps>\r\n\r\nexport type BarcodeProps = FlBarcodeProps\r\n","<template>\r\n <svg ref=\"svgRef\" class=\"fl-barcode\" v-bind=\"attrs\"></svg>\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\nimport { onBeforeUnmount, onMounted, ref, useAttrs, watch } from 'vue'\r\nimport { flBarcodeProps } from './barcode'\r\nimport type { FlBarcodeFormat } from './barcode'\r\n\r\ndefineOptions({\r\n name: 'FlBarcode',\r\n inheritAttrs: false\r\n})\r\n\r\ntype JsBarcodeRenderer = (\r\n element: SVGSVGElement,\r\n value: string,\r\n options: Record<string, unknown>\r\n) => void\r\n\r\ntype JsBarcodeModule = {\r\n default: JsBarcodeRenderer\r\n}\r\n\r\nconst props = defineProps(flBarcodeProps)\r\nconst attrs = useAttrs()\r\nconst svgRef = ref<SVGSVGElement | null>(null)\r\n\r\nlet renderVersion = 0\r\nlet jsBarcodeModulePromise: Promise<JsBarcodeModule> | null = null\r\n\r\nconst clearSvg = (svg: SVGSVGElement) => {\r\n svg.innerHTML = ''\r\n}\r\n\r\nconst resolveFormat = (format: FlBarcodeFormat): string => {\r\n const normalized = String(format).toUpperCase()\r\n\r\n if (normalized === 'UPCA') {\r\n return 'UPC'\r\n }\r\n\r\n return normalized\r\n}\r\n\r\nconst buildOptions = (): Record<string, unknown> => {\r\n const options: Record<string, unknown> = {\r\n format: resolveFormat(props.format),\r\n width: props.width,\r\n height: props.height,\r\n lineColor: props.color,\r\n background: props.backgroundColor,\r\n displayValue: props.displayValue,\r\n text: props.text === '' ? undefined : props.text,\r\n font: props.font,\r\n fontOptions: props.fontOptions,\r\n fontSize: props.fontSize,\r\n textAlign: props.textAlign,\r\n textPosition: props.textPosition,\r\n textMargin: props.textMargin,\r\n margin: props.margin\r\n }\r\n\r\n if (props.marginTop !== undefined) {\r\n options.marginTop = props.marginTop\r\n }\r\n\r\n if (props.marginRight !== undefined) {\r\n options.marginRight = props.marginRight\r\n }\r\n\r\n if (props.marginBottom !== undefined) {\r\n options.marginBottom = props.marginBottom\r\n }\r\n\r\n if (props.marginLeft !== undefined) {\r\n options.marginLeft = props.marginLeft\r\n }\r\n\r\n return options\r\n}\r\n\r\nconst loadJsBarcode = async (): Promise<JsBarcodeRenderer> => {\r\n if (!jsBarcodeModulePromise) {\r\n jsBarcodeModulePromise = import('jsbarcode') as Promise<JsBarcodeModule>\r\n }\r\n\r\n const module = await jsBarcodeModulePromise\r\n return module.default\r\n}\r\n\r\nconst renderBarcode = async () => {\r\n const currentVersion = ++renderVersion\r\n const svg = svgRef.value\r\n\r\n if (!svg) {\r\n return\r\n }\r\n\r\n clearSvg(svg)\r\n\r\n if (props.value === '') {\r\n return\r\n }\r\n\r\n const JsBarcode = await loadJsBarcode()\r\n if (currentVersion !== renderVersion) {\r\n return\r\n }\r\n\r\n JsBarcode(svg, props.value, buildOptions())\r\n}\r\n\r\nconst watchSources = () => [\r\n props.value,\r\n props.format,\r\n props.width,\r\n props.height,\r\n props.color,\r\n props.backgroundColor,\r\n props.displayValue,\r\n props.text,\r\n props.font,\r\n props.fontOptions,\r\n props.fontSize,\r\n props.textAlign,\r\n props.textPosition,\r\n props.textMargin,\r\n props.margin,\r\n props.marginTop,\r\n props.marginRight,\r\n props.marginBottom,\r\n props.marginLeft\r\n]\r\n\r\nonMounted(() => {\r\n void renderBarcode()\r\n})\r\n\r\nwatch(\r\n watchSources,\r\n () => {\r\n void renderBarcode()\r\n },\r\n { flush: 'post' }\r\n)\r\n\r\nonBeforeUnmount(() => {\r\n renderVersion += 1\r\n})\r\n</script>\r\n","<template>\r\n <svg ref=\"svgRef\" class=\"fl-barcode\" v-bind=\"attrs\"></svg>\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\nimport { onBeforeUnmount, onMounted, ref, useAttrs, watch } from 'vue'\r\nimport { flBarcodeProps } from './barcode'\r\nimport type { FlBarcodeFormat } from './barcode'\r\n\r\ndefineOptions({\r\n name: 'FlBarcode',\r\n inheritAttrs: false\r\n})\r\n\r\ntype JsBarcodeRenderer = (\r\n element: SVGSVGElement,\r\n value: string,\r\n options: Record<string, unknown>\r\n) => void\r\n\r\ntype JsBarcodeModule = {\r\n default: JsBarcodeRenderer\r\n}\r\n\r\nconst props = defineProps(flBarcodeProps)\r\nconst attrs = useAttrs()\r\nconst svgRef = ref<SVGSVGElement | null>(null)\r\n\r\nlet renderVersion = 0\r\nlet jsBarcodeModulePromise: Promise<JsBarcodeModule> | null = null\r\n\r\nconst clearSvg = (svg: SVGSVGElement) => {\r\n svg.innerHTML = ''\r\n}\r\n\r\nconst resolveFormat = (format: FlBarcodeFormat): string => {\r\n const normalized = String(format).toUpperCase()\r\n\r\n if (normalized === 'UPCA') {\r\n return 'UPC'\r\n }\r\n\r\n return normalized\r\n}\r\n\r\nconst buildOptions = (): Record<string, unknown> => {\r\n const options: Record<string, unknown> = {\r\n format: resolveFormat(props.format),\r\n width: props.width,\r\n height: props.height,\r\n lineColor: props.color,\r\n background: props.backgroundColor,\r\n displayValue: props.displayValue,\r\n text: props.text === '' ? undefined : props.text,\r\n font: props.font,\r\n fontOptions: props.fontOptions,\r\n fontSize: props.fontSize,\r\n textAlign: props.textAlign,\r\n textPosition: props.textPosition,\r\n textMargin: props.textMargin,\r\n margin: props.margin\r\n }\r\n\r\n if (props.marginTop !== undefined) {\r\n options.marginTop = props.marginTop\r\n }\r\n\r\n if (props.marginRight !== undefined) {\r\n options.marginRight = props.marginRight\r\n }\r\n\r\n if (props.marginBottom !== undefined) {\r\n options.marginBottom = props.marginBottom\r\n }\r\n\r\n if (props.marginLeft !== undefined) {\r\n options.marginLeft = props.marginLeft\r\n }\r\n\r\n return options\r\n}\r\n\r\nconst loadJsBarcode = async (): Promise<JsBarcodeRenderer> => {\r\n if (!jsBarcodeModulePromise) {\r\n jsBarcodeModulePromise = import('jsbarcode') as Promise<JsBarcodeModule>\r\n }\r\n\r\n const module = await jsBarcodeModulePromise\r\n return module.default\r\n}\r\n\r\nconst renderBarcode = async () => {\r\n const currentVersion = ++renderVersion\r\n const svg = svgRef.value\r\n\r\n if (!svg) {\r\n return\r\n }\r\n\r\n clearSvg(svg)\r\n\r\n if (props.value === '') {\r\n return\r\n }\r\n\r\n const JsBarcode = await loadJsBarcode()\r\n if (currentVersion !== renderVersion) {\r\n return\r\n }\r\n\r\n JsBarcode(svg, props.value, buildOptions())\r\n}\r\n\r\nconst watchSources = () => [\r\n props.value,\r\n props.format,\r\n props.width,\r\n props.height,\r\n props.color,\r\n props.backgroundColor,\r\n props.displayValue,\r\n props.text,\r\n props.font,\r\n props.fontOptions,\r\n props.fontSize,\r\n props.textAlign,\r\n props.textPosition,\r\n props.textMargin,\r\n props.margin,\r\n props.marginTop,\r\n props.marginRight,\r\n props.marginBottom,\r\n props.marginLeft\r\n]\r\n\r\nonMounted(() => {\r\n void renderBarcode()\r\n})\r\n\r\nwatch(\r\n watchSources,\r\n () => {\r\n void renderBarcode()\r\n },\r\n { flush: 'post' }\r\n)\r\n\r\nonBeforeUnmount(() => {\r\n renderVersion += 1\r\n})\r\n</script>\r\n"],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ var __create = Object.create;
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __getProtoOf = Object.getPrototypeOf;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __commonJSMin = (cb, mod) => () => (mod || cb((mod = { exports: {} }).exports, mod), mod.exports);
8
+ var __copyProps = (to, from, except, desc) => {
9
+ if (from && typeof from === "object" || typeof from === "function") for (var keys = __getOwnPropNames(from), i = 0, n = keys.length, key; i < n; i++) {
10
+ key = keys[i];
11
+ if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
12
+ get: ((k) => from[k]).bind(null, key),
13
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
14
+ });
15
+ }
16
+ return to;
17
+ };
18
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
19
+ value: mod,
20
+ enumerable: true
21
+ }) : target, mod));
22
+ var __toDynamicImportESM = (isNodeMode) => (mod) => __toESM(mod.default, isNodeMode);
23
+ export { __toDynamicImportESM as n, __commonJSMin as t };
@@ -0,0 +1,126 @@
1
+ import { computed, createBlock, defineComponent, getCurrentInstance, h, openBlock, resolveDynamicComponent, unref, useAttrs, useSlots } from "vue";
2
+ import { ElButton } from "element-plus";
3
+ var defaultNamespace = "fl";
4
+ var statePrefix = "is-";
5
+ var buildBemName = (namespace, block, blockSuffix = "", element = "", modifier = "") => {
6
+ let className = `${namespace}-${block}`;
7
+ if (blockSuffix) className += `-${blockSuffix}`;
8
+ if (element) className += `__${element}`;
9
+ if (modifier) className += `--${modifier}`;
10
+ return className;
11
+ };
12
+ const useNamespace = (block, namespace = defaultNamespace) => {
13
+ const b = (blockSuffix = "") => buildBemName(namespace, block, blockSuffix);
14
+ const e = (element) => element ? buildBemName(namespace, block, "", element) : "";
15
+ const m = (modifier) => modifier ? buildBemName(namespace, block, "", "", modifier) : "";
16
+ const be = (blockSuffix, element) => {
17
+ if (!blockSuffix || !element) return "";
18
+ return buildBemName(namespace, block, blockSuffix, element);
19
+ };
20
+ const em = (element, modifier) => {
21
+ if (!element || !modifier) return "";
22
+ return buildBemName(namespace, block, "", element, modifier);
23
+ };
24
+ const bm = (blockSuffix, modifier) => {
25
+ if (!blockSuffix || !modifier) return "";
26
+ return buildBemName(namespace, block, blockSuffix, "", modifier);
27
+ };
28
+ const bem = (blockSuffix, element, modifier) => {
29
+ if (!blockSuffix && !element && !modifier) return b();
30
+ return buildBemName(namespace, block, blockSuffix, element, modifier);
31
+ };
32
+ const is = (name, state = true) => state ? `${statePrefix}${name}` : "";
33
+ return {
34
+ namespace,
35
+ b,
36
+ e,
37
+ m,
38
+ be,
39
+ em,
40
+ bm,
41
+ bem,
42
+ is
43
+ };
44
+ };
45
+ const mergeComponentExpose = (vm, exposed, extras = {}) => {
46
+ if (!vm?.exposed || !exposed || typeof exposed !== "object" && typeof exposed !== "function") return;
47
+ Object.assign(vm.exposed, extras, exposed);
48
+ };
49
+ const invokeListener = (listener, ...args) => {
50
+ if (typeof listener === "function") {
51
+ listener(...args);
52
+ return;
53
+ }
54
+ if (!Array.isArray(listener)) return;
55
+ for (const item of listener) if (typeof item === "function") item(...args);
56
+ };
57
+ const withInstall = (component) => {
58
+ const installable = component;
59
+ installable.install = (app) => {
60
+ if (!component.name) return;
61
+ app.component(component.name, component);
62
+ };
63
+ return installable;
64
+ };
65
+ const useMergedAttrs = ({ attrs, block, listenerName, onListener }) => {
66
+ const className = useNamespace(block).b();
67
+ return { mergedAttrs: computed(() => {
68
+ const next = { ...attrs };
69
+ const originalListener = next[listenerName];
70
+ next.class = [className, next.class];
71
+ next[listenerName] = (...args) => {
72
+ onListener?.(...args);
73
+ invokeListener(originalListener, ...args);
74
+ };
75
+ return next;
76
+ }) };
77
+ };
78
+ const useMergedExpose = (extras) => {
79
+ const vm = getCurrentInstance();
80
+ const changeRef = (exposed) => {
81
+ mergeComponentExpose(vm, exposed, extras);
82
+ };
83
+ return { changeRef };
84
+ };
85
+ const FlButton = withInstall(/* @__PURE__ */ defineComponent({
86
+ name: "FlButton",
87
+ inheritAttrs: false,
88
+ __name: "button",
89
+ props: {
90
+ debugLabel: {
91
+ type: String,
92
+ default: ""
93
+ },
94
+ debugMode: {
95
+ type: Boolean,
96
+ default: false
97
+ }
98
+ },
99
+ emits: { "debug-click": (payload) => typeof payload.label === "string" },
100
+ setup(__props, { expose: __expose, emit: __emit }) {
101
+ const props = __props;
102
+ const emit = __emit;
103
+ const attrs = useAttrs();
104
+ const slots = useSlots();
105
+ const { changeRef } = useMergedExpose({ debugKind: "button" });
106
+ const { mergedAttrs } = useMergedAttrs({
107
+ attrs,
108
+ block: "button",
109
+ listenerName: "onClick",
110
+ onListener: () => {
111
+ if (props.debugMode) emit("debug-click", { label: props.debugLabel });
112
+ }
113
+ });
114
+ __expose({});
115
+ return (_ctx, _cache) => {
116
+ return openBlock(), createBlock(resolveDynamicComponent(h(unref(ElButton), {
117
+ ...unref(mergedAttrs),
118
+ ref: unref(changeRef)
119
+ }, unref(slots))));
120
+ };
121
+ }
122
+ }));
123
+ var button_default = FlButton;
124
+ export { FlButton, button_default as default };
125
+
126
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.mjs","names":[],"sources":["../../../../../packages/utils/src/bem.ts","../../../../../packages/utils/src/component.ts","../../../../../packages/utils/src/install.ts","../../../../../packages/hooks/src/use-component.ts","../../../../../packages/components/button/src/button.ts","../../../../../packages/components/button/src/button.vue","../../../../../packages/components/button/src/button.vue","../../../../../packages/components/button/index.ts"],"sourcesContent":["const defaultNamespace = 'fl'\r\nconst statePrefix = 'is-'\r\n\r\nconst buildBemName = (\r\n namespace: string,\r\n block: string,\r\n blockSuffix = '',\r\n element = '',\r\n modifier = ''\r\n) => {\r\n let className = `${namespace}-${block}`\r\n\r\n if (blockSuffix) {\r\n className += `-${blockSuffix}`\r\n }\r\n\r\n if (element) {\r\n className += `__${element}`\r\n }\r\n\r\n if (modifier) {\r\n className += `--${modifier}`\r\n }\r\n\r\n return className\r\n}\r\n\r\nexport const useNamespace = (block: string, namespace = defaultNamespace) => {\r\n const b = (blockSuffix = '') => buildBemName(namespace, block, blockSuffix)\r\n\r\n const e = (element?: string) => (element ? buildBemName(namespace, block, '', element) : '')\r\n\r\n const m = (modifier?: string) =>\r\n modifier ? buildBemName(namespace, block, '', '', modifier) : ''\r\n\r\n const be = (blockSuffix?: string, element?: string) => {\r\n if (!blockSuffix || !element) {\r\n return ''\r\n }\r\n\r\n return buildBemName(namespace, block, blockSuffix, element)\r\n }\r\n\r\n const em = (element?: string, modifier?: string) => {\r\n if (!element || !modifier) {\r\n return ''\r\n }\r\n\r\n return buildBemName(namespace, block, '', element, modifier)\r\n }\r\n\r\n const bm = (blockSuffix?: string, modifier?: string) => {\r\n if (!blockSuffix || !modifier) {\r\n return ''\r\n }\r\n\r\n return buildBemName(namespace, block, blockSuffix, '', modifier)\r\n }\r\n\r\n const bem = (blockSuffix?: string, element?: string, modifier?: string) => {\r\n if (!blockSuffix && !element && !modifier) {\r\n return b()\r\n }\r\n\r\n return buildBemName(namespace, block, blockSuffix, element, modifier)\r\n }\r\n\r\n const is = (name: string, state = true) => (state ? `${statePrefix}${name}` : '')\r\n\r\n return {\r\n namespace,\r\n b,\r\n e,\r\n m,\r\n be,\r\n em,\r\n bm,\r\n bem,\r\n is\r\n }\r\n}\r\n","type ExposedTarget = {\r\n exposed?: Record<string, unknown> | null\r\n} | null\r\n\r\nexport const mergeComponentExpose = (\r\n vm: ExposedTarget,\r\n exposed: unknown,\r\n extras: Record<string, unknown> = {}\r\n) => {\r\n if (!vm?.exposed || !exposed || (typeof exposed !== 'object' && typeof exposed !== 'function')) {\r\n return\r\n }\r\n\r\n Object.assign(vm.exposed, extras, exposed)\r\n}\r\n\r\nexport const invokeListener = (listener: unknown, ...args: unknown[]) => {\r\n if (typeof listener === 'function') {\r\n listener(...args)\r\n return\r\n }\r\n\r\n if (!Array.isArray(listener)) {\r\n return\r\n }\r\n\r\n for (const item of listener) {\r\n if (typeof item === 'function') {\r\n item(...args)\r\n }\r\n }\r\n}\r\n","import type { App, Plugin } from 'vue'\r\n\r\nexport type SFCWithInstall<T> = T & Plugin\r\n\r\nexport const withInstall = <T extends { name?: string }>(component: T): SFCWithInstall<T> => {\r\n const installable = component as SFCWithInstall<T>\r\n\r\n installable.install = (app: App) => {\r\n if (!component.name) {\r\n return\r\n }\r\n\r\n app.component(component.name, component as unknown as object)\r\n }\r\n\r\n return installable\r\n}\r\n","import { computed, getCurrentInstance } from 'vue'\r\nimport { invokeListener, mergeComponentExpose, useNamespace } from '@falcon-ui/utils'\r\n\r\ntype UseMergedAttrsOptions = {\r\n attrs: Record<string, unknown>\r\n block: string\r\n listenerName: string\r\n onListener?: (...args: unknown[]) => void\r\n}\r\n\r\nexport const useMergedAttrs = ({\r\n attrs,\r\n block,\r\n listenerName,\r\n onListener\r\n}: UseMergedAttrsOptions) => {\r\n const ns = useNamespace(block)\r\n const className = ns.b()\r\n\r\n const mergedAttrs = computed(() => {\r\n const next = { ...attrs }\r\n const originalListener = next[listenerName]\r\n next.class = [className, next.class]\r\n\r\n next[listenerName] = (...args: unknown[]) => {\r\n onListener?.(...args)\r\n invokeListener(originalListener, ...args)\r\n }\r\n\r\n return next\r\n })\r\n\r\n return {\r\n mergedAttrs\r\n }\r\n}\r\n\r\nexport const useMergedExpose = <TExpose extends Record<string, unknown>>(extras: TExpose) => {\r\n const vm = getCurrentInstance()\r\n\r\n const changeRef = (exposed: unknown) => {\r\n mergeComponentExpose(vm, exposed, extras)\r\n }\r\n\r\n return {\r\n changeRef\r\n }\r\n}\r\n","import type { ExtractPublicPropTypes } from 'vue'\r\n\r\nexport const flButtonProps = {\r\n /**\r\n * 调试事件标签,在开启调试模式后会随 `debug-click` 一起抛出。\r\n */\r\n debugLabel: {\r\n type: String,\r\n default: ''\r\n },\r\n /**\r\n * 是否开启调试点击事件,开启后每次点击都会触发 `debug-click`。\r\n */\r\n debugMode: {\r\n type: Boolean,\r\n default: false\r\n }\r\n} as const\r\n\r\nexport interface FlButtonDebugPayload {\r\n /**\r\n * 用于标识当前按钮实例的业务标签。\r\n */\r\n label: string\r\n}\r\n\r\nexport const flButtonEmits = {\r\n /**\r\n * 开启调试模式后,在按钮点击时触发。\r\n */\r\n 'debug-click': (payload: FlButtonDebugPayload) => typeof payload.label === 'string'\r\n} as const\r\n\r\nexport type FlButtonProps = ExtractPublicPropTypes<typeof flButtonProps>\r\nexport type FlButtonEmits = typeof flButtonEmits\r\n\r\nexport type ButtonProps = FlButtonProps\r\nexport type ButtonEmits = FlButtonEmits\r\n","<template>\r\n <component :is=\"h(ElButton, { ...mergedAttrs, ref: changeRef }, slots)\" />\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\nimport { ElButton } from 'element-plus'\r\nimport type { ComponentInstance } from 'vue'\r\nimport { h, useAttrs, useSlots } from 'vue'\r\nimport { useMergedAttrs, useMergedExpose } from '@falcon-ui/hooks'\r\nimport { flButtonEmits, flButtonProps } from './button'\r\n\r\ndefineOptions({\r\n name: 'FlButton',\r\n inheritAttrs: false\r\n})\r\n\r\nconst props = defineProps(flButtonProps)\r\nconst emit = defineEmits(flButtonEmits)\r\nconst attrs = useAttrs()\r\nconst slots = useSlots()\r\n\r\nconst _myExpose = {\r\n /**\r\n * 标记该暴露值来源于 FlButton,便于调试识别。\r\n */\r\n debugKind: 'button'\r\n}\r\n\r\nconst { changeRef } = useMergedExpose(_myExpose)\r\nconst { mergedAttrs } = useMergedAttrs({\r\n attrs: attrs as Record<string, unknown>,\r\n block: 'button',\r\n listenerName: 'onClick',\r\n onListener: () => {\r\n if (props.debugMode) {\r\n emit('debug-click', {\r\n label: props.debugLabel\r\n })\r\n }\r\n }\r\n})\r\n\r\ndefineExpose({} as ComponentInstance<typeof ElButton> & typeof _myExpose)\r\n</script>\r\n","<template>\r\n <component :is=\"h(ElButton, { ...mergedAttrs, ref: changeRef }, slots)\" />\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\nimport { ElButton } from 'element-plus'\r\nimport type { ComponentInstance } from 'vue'\r\nimport { h, useAttrs, useSlots } from 'vue'\r\nimport { useMergedAttrs, useMergedExpose } from '@falcon-ui/hooks'\r\nimport { flButtonEmits, flButtonProps } from './button'\r\n\r\ndefineOptions({\r\n name: 'FlButton',\r\n inheritAttrs: false\r\n})\r\n\r\nconst props = defineProps(flButtonProps)\r\nconst emit = defineEmits(flButtonEmits)\r\nconst attrs = useAttrs()\r\nconst slots = useSlots()\r\n\r\nconst _myExpose = {\r\n /**\r\n * 标记该暴露值来源于 FlButton,便于调试识别。\r\n */\r\n debugKind: 'button'\r\n}\r\n\r\nconst { changeRef } = useMergedExpose(_myExpose)\r\nconst { mergedAttrs } = useMergedAttrs({\r\n attrs: attrs as Record<string, unknown>,\r\n block: 'button',\r\n listenerName: 'onClick',\r\n onListener: () => {\r\n if (props.debugMode) {\r\n emit('debug-click', {\r\n label: props.debugLabel\r\n })\r\n }\r\n }\r\n})\r\n\r\ndefineExpose({} as ComponentInstance<typeof ElButton> & typeof _myExpose)\r\n</script>\r\n","import Button from './src/button.vue'\r\nimport { withInstall } from '@falcon-ui/utils'\r\n\r\nexport const FlButton = withInstall(Button)\r\n\r\nexport default FlButton\r\n\r\nexport type { ButtonEmits, ButtonProps, FlButtonEmits, FlButtonProps } from './src/button'\r\n"],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ const flButtonProps = {
2
+ debugLabel: {
3
+ type: String,
4
+ default: ""
5
+ },
6
+ debugMode: {
7
+ type: Boolean,
8
+ default: false
9
+ }
10
+ };
11
+ const flButtonEmits = { "debug-click": (payload) => typeof payload.label === "string" };
12
+ export { flButtonEmits, flButtonProps };
13
+
14
+ //# sourceMappingURL=button.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"button.mjs","names":[],"sources":["../../../../../../packages/components/button/src/button.ts"],"sourcesContent":["import type { ExtractPublicPropTypes } from 'vue'\r\n\r\nexport const flButtonProps = {\r\n /**\r\n * 调试事件标签,在开启调试模式后会随 `debug-click` 一起抛出。\r\n */\r\n debugLabel: {\r\n type: String,\r\n default: ''\r\n },\r\n /**\r\n * 是否开启调试点击事件,开启后每次点击都会触发 `debug-click`。\r\n */\r\n debugMode: {\r\n type: Boolean,\r\n default: false\r\n }\r\n} as const\r\n\r\nexport interface FlButtonDebugPayload {\r\n /**\r\n * 用于标识当前按钮实例的业务标签。\r\n */\r\n label: string\r\n}\r\n\r\nexport const flButtonEmits = {\r\n /**\r\n * 开启调试模式后,在按钮点击时触发。\r\n */\r\n 'debug-click': (payload: FlButtonDebugPayload) => typeof payload.label === 'string'\r\n} as const\r\n\r\nexport type FlButtonProps = ExtractPublicPropTypes<typeof flButtonProps>\r\nexport type FlButtonEmits = typeof flButtonEmits\r\n\r\nexport type ButtonProps = FlButtonProps\r\nexport type ButtonEmits = FlButtonEmits\r\n"],"mappings":"AAEA,MAAa,gBAAgB;CAI3B,YAAY;EACV,MAAM;EACN,SAAS;EACV;CAID,WAAW;EACT,MAAM;EACN,SAAS;EACV;CACF;AASD,MAAa,gBAAgB,EAI3B,gBAAgB,YAAkC,OAAO,QAAQ,UAAU,UAC5E"}
@@ -0,0 +1,117 @@
1
+ import { computed, createBlock, defineComponent, getCurrentInstance, h, openBlock, resolveDynamicComponent, unref, useAttrs, useSlots } from "vue";
2
+ import { ElButton } from "element-plus";
3
+ var defaultNamespace = "fl";
4
+ var statePrefix = "is-";
5
+ var buildBemName = (namespace, block, blockSuffix = "", element = "", modifier = "") => {
6
+ let className = `${namespace}-${block}`;
7
+ if (blockSuffix) className += `-${blockSuffix}`;
8
+ if (element) className += `__${element}`;
9
+ if (modifier) className += `--${modifier}`;
10
+ return className;
11
+ };
12
+ const useNamespace = (block, namespace = defaultNamespace) => {
13
+ const b = (blockSuffix = "") => buildBemName(namespace, block, blockSuffix);
14
+ const e = (element) => element ? buildBemName(namespace, block, "", element) : "";
15
+ const m = (modifier) => modifier ? buildBemName(namespace, block, "", "", modifier) : "";
16
+ const be = (blockSuffix, element) => {
17
+ if (!blockSuffix || !element) return "";
18
+ return buildBemName(namespace, block, blockSuffix, element);
19
+ };
20
+ const em = (element, modifier) => {
21
+ if (!element || !modifier) return "";
22
+ return buildBemName(namespace, block, "", element, modifier);
23
+ };
24
+ const bm = (blockSuffix, modifier) => {
25
+ if (!blockSuffix || !modifier) return "";
26
+ return buildBemName(namespace, block, blockSuffix, "", modifier);
27
+ };
28
+ const bem = (blockSuffix, element, modifier) => {
29
+ if (!blockSuffix && !element && !modifier) return b();
30
+ return buildBemName(namespace, block, blockSuffix, element, modifier);
31
+ };
32
+ const is = (name, state = true) => state ? `${statePrefix}${name}` : "";
33
+ return {
34
+ namespace,
35
+ b,
36
+ e,
37
+ m,
38
+ be,
39
+ em,
40
+ bm,
41
+ bem,
42
+ is
43
+ };
44
+ };
45
+ const mergeComponentExpose = (vm, exposed, extras = {}) => {
46
+ if (!vm?.exposed || !exposed || typeof exposed !== "object" && typeof exposed !== "function") return;
47
+ Object.assign(vm.exposed, extras, exposed);
48
+ };
49
+ const invokeListener = (listener, ...args) => {
50
+ if (typeof listener === "function") {
51
+ listener(...args);
52
+ return;
53
+ }
54
+ if (!Array.isArray(listener)) return;
55
+ for (const item of listener) if (typeof item === "function") item(...args);
56
+ };
57
+ const useMergedAttrs = ({ attrs, block, listenerName, onListener }) => {
58
+ const className = useNamespace(block).b();
59
+ return { mergedAttrs: computed(() => {
60
+ const next = { ...attrs };
61
+ const originalListener = next[listenerName];
62
+ next.class = [className, next.class];
63
+ next[listenerName] = (...args) => {
64
+ onListener?.(...args);
65
+ invokeListener(originalListener, ...args);
66
+ };
67
+ return next;
68
+ }) };
69
+ };
70
+ const useMergedExpose = (extras) => {
71
+ const vm = getCurrentInstance();
72
+ const changeRef = (exposed) => {
73
+ mergeComponentExpose(vm, exposed, extras);
74
+ };
75
+ return { changeRef };
76
+ };
77
+ var button_default = /* @__PURE__ */ defineComponent({
78
+ name: "FlButton",
79
+ inheritAttrs: false,
80
+ __name: "button",
81
+ props: {
82
+ debugLabel: {
83
+ type: String,
84
+ default: ""
85
+ },
86
+ debugMode: {
87
+ type: Boolean,
88
+ default: false
89
+ }
90
+ },
91
+ emits: { "debug-click": (payload) => typeof payload.label === "string" },
92
+ setup(__props, { expose: __expose, emit: __emit }) {
93
+ const props = __props;
94
+ const emit = __emit;
95
+ const attrs = useAttrs();
96
+ const slots = useSlots();
97
+ const { changeRef } = useMergedExpose({ debugKind: "button" });
98
+ const { mergedAttrs } = useMergedAttrs({
99
+ attrs,
100
+ block: "button",
101
+ listenerName: "onClick",
102
+ onListener: () => {
103
+ if (props.debugMode) emit("debug-click", { label: props.debugLabel });
104
+ }
105
+ });
106
+ __expose({});
107
+ return (_ctx, _cache) => {
108
+ return openBlock(), createBlock(resolveDynamicComponent(h(unref(ElButton), {
109
+ ...unref(mergedAttrs),
110
+ ref: unref(changeRef)
111
+ }, unref(slots))));
112
+ };
113
+ }
114
+ });
115
+ export { button_default as default };
116
+
117
+ //# sourceMappingURL=button.vue.mjs.map