vue-form-craft 2.0.11 → 2.0.13

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 (153) hide show
  1. package/README.md +12 -29
  2. package/dist/{add-hT59kaby.mjs → add-EoHoyHmQ.mjs} +1 -1
  3. package/dist/alert-k2rZ-pm2.mjs +53 -0
  4. package/dist/apl-p0IPP13W.mjs +76 -0
  5. package/dist/asciiarmor-lJsBxlJJ.mjs +34 -0
  6. package/dist/asn1-Q9v1zIy5.mjs +102 -0
  7. package/dist/asterisk-foNkeTjy.mjs +273 -0
  8. package/dist/brainfuck-0XqyXpNS.mjs +35 -0
  9. package/dist/{button-GY4d9Y6s.mjs → button-9A6flrTc.mjs} +1 -1
  10. package/dist/{card-bnWsX8LP.mjs → card-l2TDXmyi.mjs} +1 -1
  11. package/dist/{cascader-cQst1g0E.mjs → cascader-f8QsYkto.mjs} +1 -1
  12. package/dist/{checkbox-JWtn28zw.mjs → checkbox-QUwlzHGM.mjs} +1 -1
  13. package/dist/clike-ak6Z6Yhe.mjs +639 -0
  14. package/dist/clojure-iYO8U8Sg.mjs +810 -0
  15. package/dist/cmake-SVzjkxV_.mjs +28 -0
  16. package/dist/cobol-APHEnAOX.mjs +74 -0
  17. package/dist/coffeescript-KqQa0SYG.mjs +182 -0
  18. package/dist/{colorPicker-93LeRPg9.mjs → colorPicker-x6N46_O2.mjs} +1 -1
  19. package/dist/commonlisp-bwqNqR5V.mjs +79 -0
  20. package/dist/crystal-BViWuDpA.mjs +217 -0
  21. package/dist/css-KHXHXfXg.mjs +1572 -0
  22. package/dist/cypher-XpTt4zQ3.mjs +69 -0
  23. package/dist/d-fLig6yqY.mjs +139 -0
  24. package/dist/datePicker-j8yNXBHs.mjs +50 -0
  25. package/dist/{delete-f_cJBSDh.mjs → delete-xBVATMBo.mjs} +1 -1
  26. package/dist/{design-yP5EOwhK.mjs → design-x1NREnN9.mjs} +1 -1
  27. package/dist/diff-WoKGLpy6.mjs +18 -0
  28. package/dist/dockerfile-P8izJOAf.mjs +194 -0
  29. package/dist/{document-uyarkumr.mjs → document-O73HbdUh.mjs} +1 -1
  30. package/dist/dtd-SIJRUW6K.mjs +91 -0
  31. package/dist/dylan-4HCLhpWP.mjs +238 -0
  32. package/dist/ebnf-h_0lged5.mjs +77 -0
  33. package/dist/ecl-Lf4FF0lf.mjs +133 -0
  34. package/dist/eiffel-qlw8KUyf.mjs +112 -0
  35. package/dist/elm-QRnB3zXs.mjs +108 -0
  36. package/dist/erlang-fyVKb7eK.mjs +488 -0
  37. package/dist/factor-Uq0_GFro.mjs +65 -0
  38. package/dist/fcl-lRek3hEb.mjs +106 -0
  39. package/dist/{formList-F8r2l1dB.mjs → formList-hPtEP4Ky.mjs} +1 -1
  40. package/dist/forth-ua2bRd8T.mjs +60 -0
  41. package/dist/fortran-WnF7znuN.mjs +443 -0
  42. package/dist/gas-wowve1o7.mjs +183 -0
  43. package/dist/gherkin-m7GIChu3.mjs +34 -0
  44. package/dist/{github-fWRoD_no.mjs → github-KoINobLU.mjs} +1 -1
  45. package/dist/go-th443Dhb.mjs +158 -0
  46. package/dist/groovy-tR4RiZnc.mjs +161 -0
  47. package/dist/haskell-jxVBofv5.mjs +375 -0
  48. package/dist/haxe-kWPI2tq3.mjs +390 -0
  49. package/dist/{help-R2LNu7-e.mjs → help-749fhL2P.mjs} +1 -1
  50. package/dist/http-3GIFWUlG.mjs +45 -0
  51. package/dist/idl-PvpMZg-l.mjs +947 -0
  52. package/dist/index-2tOJGL07.mjs +546 -0
  53. package/dist/index-4wIoK2RV.mjs +76 -0
  54. package/dist/index-M2pAYnZp.mjs +283 -0
  55. package/dist/index-NVqZrKkn.mjs +514 -0
  56. package/dist/index-VLqU2s7k.mjs +99 -0
  57. package/dist/index-WbISJBFk.mjs +269 -0
  58. package/dist/index-bbmdPhh5.mjs +163 -0
  59. package/dist/index-hlA8jpbU.mjs +72 -0
  60. package/dist/index-k-kmrmDd.mjs +59 -0
  61. package/dist/index-n44sZXuD.mjs +94 -0
  62. package/dist/index-p8r3iIzE.mjs +135 -0
  63. package/dist/index-tLyNcnK8.mjs +141 -0
  64. package/dist/index-xJCbZsUA.mjs +315 -0
  65. package/dist/{inline-gwroQeui.mjs → inline-LgsKoZk8.mjs} +1 -1
  66. package/dist/{input-P8xcJTDu.mjs → input-w22Mgu7d.mjs} +1 -1
  67. package/dist/{inputNumber-Gq34hoEc.mjs → inputNumber-P71Xzdju.mjs} +1 -1
  68. package/dist/{itemGroup-h-VYg8H6.mjs → itemGroup-F537CR5s.mjs} +1 -1
  69. package/dist/javascript-8ZHqHagw.mjs +758 -0
  70. package/dist/jinja2-vsOFe0qD.mjs +154 -0
  71. package/dist/{jsonEdit-qjj06Ro-.mjs → jsonEdit-SFTAL9sz.mjs} +1 -1
  72. package/dist/julia-dlp_pbN1.mjs +241 -0
  73. package/dist/{library-xpeMt_p0.mjs → library-um2AxRlt.mjs} +1 -1
  74. package/dist/livescript-Gf5R-LT6.mjs +273 -0
  75. package/dist/lua-c5Y_JsBp.mjs +221 -0
  76. package/dist/markdown-WScJtLZn.mjs +31 -0
  77. package/dist/mathematica-iiGTGmUs.mjs +35 -0
  78. package/dist/mbox-ZJh86H8B.mjs +78 -0
  79. package/dist/md/FormDesignDoc.md +44 -0
  80. package/dist/md/globalConfig.md +22 -0
  81. package/dist/md/introduce.md +13 -0
  82. package/dist/md/linkage.md +229 -0
  83. package/dist/md/lowCode.md +24 -0
  84. package/dist/md/schema.md +72 -0
  85. package/dist/md/schemaFormDoc.md +198 -2
  86. package/dist/md/start.md +5 -5
  87. package/dist/mirc-i0qkCa0y.mjs +73 -0
  88. package/dist/mllike-Dy551fZW.mjs +275 -0
  89. package/dist/modelica-n6tGqUT9.mjs +94 -0
  90. package/dist/{move-7E4__Mf7.mjs → move-xFoKuPa4.mjs} +1 -1
  91. package/dist/mscgen-aKSbB7D9.mjs +104 -0
  92. package/dist/mumps-lNiKA6sp.mjs +25 -0
  93. package/dist/nginx--YmuCfDj.mjs +93 -0
  94. package/dist/nsis-gURxwqa7.mjs +62 -0
  95. package/dist/ntriples-E3jQl3MC.mjs +79 -0
  96. package/dist/octave-EQvkGIeG.mjs +144 -0
  97. package/dist/oz-W2cpqFf6.mjs +152 -0
  98. package/dist/pascal-lCh6ouNZ.mjs +79 -0
  99. package/dist/{password-Rw7e5EfW.mjs → password-smRUbj5j.mjs} +1 -1
  100. package/dist/perl-PxEQBX0B.mjs +915 -0
  101. package/dist/pig-Y_bNcrzS.mjs +56 -0
  102. package/dist/powershell-GaQP-TZr.mjs +249 -0
  103. package/dist/properties-mbRyn54L.mjs +26 -0
  104. package/dist/protobuf-8CJideyJ.mjs +49 -0
  105. package/dist/puppet-ABBaChNZ.mjs +45 -0
  106. package/dist/python-sKdHg3Ka.mjs +321 -0
  107. package/dist/q-_1yG40Nm.mjs +89 -0
  108. package/dist/r-Ziz56bHT.mjs +108 -0
  109. package/dist/{radio-kIExfw7_.mjs → radio-i8Osy06n.mjs} +1 -1
  110. package/dist/{reduce-M0s3xS0f.mjs → reduce-_8z_bJSl.mjs} +1 -1
  111. package/dist/release-S-TGj6yv.mjs +79353 -0
  112. package/dist/rpm-ORjGOHaQ.mjs +57 -0
  113. package/dist/ruby-jlbYq0dT.mjs +233 -0
  114. package/dist/sas-2n7xeUuO.mjs +107 -0
  115. package/dist/scheme-XCs-NPeU.mjs +126 -0
  116. package/dist/{select-S_MiU4fC.mjs → select-6cxe4XOq.mjs} +1 -1
  117. package/dist/shell-0_1Um7Dq.mjs +184 -0
  118. package/dist/sieve-7uyJD1x1.mjs +73 -0
  119. package/dist/simple-mode--HIzBxba.mjs +95 -0
  120. package/dist/smalltalk-PEFzrlQ-.mjs +48 -0
  121. package/dist/solr-BLBaHahN.mjs +41 -0
  122. package/dist/sparql-4F9ZWf1b.mjs +204 -0
  123. package/dist/spreadsheet-SGSo6blj.mjs +49 -0
  124. package/dist/sql-tebLBzN0.mjs +291 -0
  125. package/dist/stex-SFJcFGOO.mjs +130 -0
  126. package/dist/style.css +1 -1
  127. package/dist/stylus-rwwWYWFm.mjs +256 -0
  128. package/dist/swift-eorJ0tCv.mjs +238 -0
  129. package/dist/{switch-q2ma5cBO.mjs → switch-hPyM9jf5.mjs} +1 -1
  130. package/dist/tcl-IwXMB8U4.mjs +82 -0
  131. package/dist/{textarea-kCGp6Dtp.mjs → textarea-5BvvBb9l.mjs} +1 -1
  132. package/dist/textile-ok2VyjwC.mjs +299 -0
  133. package/dist/tiddlywiki-DLhz8_pc.mjs +156 -0
  134. package/dist/tiki-DFAqFElY.mjs +183 -0
  135. package/dist/toml-ryxpTZEV.mjs +49 -0
  136. package/dist/troff-ZzZyvNct.mjs +36 -0
  137. package/dist/ttcn-6gvkqqpW.mjs +136 -0
  138. package/dist/ttcn-cfg-oSu-Dq5C.mjs +98 -0
  139. package/dist/turtle-10ofr5au.mjs +87 -0
  140. package/dist/vb-a6n6fzrD.mjs +74 -0
  141. package/dist/vbscript-dgvo8jPt.mjs +324 -0
  142. package/dist/velocity-CBncCrwO.mjs +97 -0
  143. package/dist/verilog-KlcACt6C.mjs +271 -0
  144. package/dist/vhdl-NMd7Gf35.mjs +117 -0
  145. package/dist/vue-form-craft.mjs +2 -2
  146. package/dist/vue-form-craft.umd.js +271 -148
  147. package/dist/webidl-z1UE5DN_.mjs +160 -0
  148. package/dist/xquery-hDt5jWTp.mjs +431 -0
  149. package/dist/yacas-ftgh_qwr.mjs +74 -0
  150. package/dist/yaml-DnNTfjXK.mjs +53 -0
  151. package/dist/z80-dA1PqWe1.mjs +62 -0
  152. package/package.json +8 -2
  153. package/dist/release-wq6hOrN5.mjs +0 -44293
@@ -0,0 +1,24 @@
1
+ ## 低代码开发方案
2
+
3
+ 将 `vue-form-craft` 接入vue3项目后,推荐两种高效率的低代码开发方案。
4
+
5
+ ### 方案一
6
+
7
+ 这种属于轻量级使用方案,就是前端使用 `FormDesign` 做一个 **表单设计器** 的页面,对内开放,专门用来设计表单。
8
+
9
+ ```vue
10
+ //FormDesign.vue
11
+ <template>
12
+ <form-design />
13
+ </template>
14
+ ```
15
+
16
+ 遇到表单的需求,前端开发的同学就来到这个页面拖拉拽搞出一个表单,然后导出json写到代码中,最后再用 `SchemaForm` 组件渲染出来就可以了。
17
+
18
+ ### 方案二
19
+
20
+ 这是作者比较推荐的一个方案。表单管理模式,需要后端同学配合,数据库建一张表用于存储前端的所有表单。
21
+
22
+ 前端开发一套 **表单管理 + 表单设计** 页面。表单管理页面具有增删改查的功能,新增或修改表单就跳转到表单设计页面,直接在线修改即可,无需再改前端代码和部署发版什么的,非常方便。
23
+
24
+ 使用表单也非常方便。 `SchemaForm` 和 `FormDesign`都支持配置一个schemaId参数,组件会根据`schemaId`再调用全局`getSchema`方法,去向后端查询表单。做到真正的低代码
@@ -0,0 +1,72 @@
1
+ ## Schema详解
2
+
3
+ 低代码表单开发,最核心的就是JSON Schema,理解了这套协议之后,我们就能更高效,更快速的来开发表单了。
4
+
5
+ ### 结构
6
+
7
+ 首先,我们要理解,JSON Schema用于描述表单结构,并且 vue-form-craft 对其做了扩展,可以支持描述 UI:
8
+
9
+ ```json
10
+ {
11
+ "labelWidth": 150, //表单label宽度
12
+ "labelAlign": "right", //表单label对齐方式
13
+ "size": "default", //表单字段大小
14
+ "items": [ //表单所有字段的配置
15
+ {
16
+ "label": "用户名", //字段的label
17
+ "component": "input", //字段使用的组件
18
+ "props": { //传给该组件的props,支持该组件在element plus的所有props
19
+ "placeholder": "请输入用户名"
20
+ },
21
+ "name": "username" //字段标识,也就是值key
22
+ },
23
+ {
24
+ "label": "密码",
25
+ "component": "password",
26
+ "props": {
27
+ "placeholder": "请输入密码"
28
+ },
29
+ "name": "password"
30
+ },
31
+ {
32
+ "component": "button",
33
+ "props": {
34
+ "name": "提交",
35
+ "clickEvent": "submitForm"
36
+ }
37
+ }
38
+ ]
39
+ }
40
+ ```
41
+
42
+ 这是个简单的登陆表单Schema,基本概念就是json的最外层是表单整体的配置,items里面是表单项的配置。
43
+
44
+ ### 配置
45
+
46
+ 了解了上面的简单用例后,下面是所有可选配置:
47
+
48
+ #### 表单整体配置
49
+
50
+ | 参数名 | 类型 | 默认值 | 是否必传 | 描述 |
51
+ | -------------------- | ------------------------------- | ------- | -------- | ----------------- |
52
+ | labelWidth | Number | 150 | No | 表单label宽度 |
53
+ | labelAlign | 'left' \| 'top' \| 'right' | right | No | 表单label对齐方式 |
54
+ | size | 'small' \| 'default' \| 'large' | default | No | 表单字段大小 |
55
+ | hideRequiredAsterisk | Boolean | false | No | 表单隐藏必填星号 |
56
+ | labelBold | Boolean | false | No | 表单label加粗 |
57
+
58
+ #### 表单项配置
59
+
60
+ | 参数名 | 类型 | 默认值 | 是否必传 | 描述 |
61
+ | ------------ | ------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------- |
62
+ | label | String | ——— | No | 标签 |
63
+ | name | String | ——— | Yes | 唯一标识,值key |
64
+ | component | String | ——— | yes | 使用的组件 |
65
+ | props | Object | {} | No | 传给组件的props,具体参考element文档 |
66
+ | required | Boolean | false | No | 字段是否必填 |
67
+ | initialValue | any | ——— | No | 字段初始值 |
68
+ | style | Object | {} | No | 字段样式,不包括它使用的组件<br/>如果想修改组件的样式,可以给props里传递style,就会传递给element原生的style了 |
69
+ | help | String | ——— | No | 字段的提示信息 |
70
+ | hideLabel | Boolean | false | No | 是否隐藏字段的标签 |
71
+ | rules | Array | —— | No | 字段校验规则,基本只用于input |
72
+ | children | Array | —— | No | 子字段,有children会被视为一个字段组,用于渲染一些高级字段 |
@@ -1,4 +1,200 @@
1
- ## 快速开始
1
+ ## 简介
2
2
 
3
- ### 安装
3
+ SchemaForm 是 vue-form-craft 的渲染组件。
4
4
 
5
+ ```vue
6
+ <template>
7
+ <schema-form v-model="formValues" :schema="schema" ref="formRef" />
8
+ <button @click="handleSubmit">提交</button>
9
+ </template>
10
+
11
+ <script setup>
12
+ import { ref } from 'vue'
13
+
14
+ const formRef = ref()
15
+
16
+ const formValues = ref({
17
+ title: 'test',
18
+ desc: '这是一个简单基本的描述'
19
+ })
20
+
21
+ const schema = {
22
+ labelWidth: 150,
23
+ labelAlign: 'right',
24
+ size: 'default',
25
+ items: [
26
+ {
27
+ label: '标题',
28
+ component: 'input',
29
+ props: {
30
+ placeholder: '请输入标题'
31
+ },
32
+ onlyId: 'form-eNR0',
33
+ name: 'title',
34
+ required: true
35
+ },
36
+ {
37
+ label: '描述',
38
+ component: 'textarea',
39
+ props: {
40
+ placeholder: '请输入描述'
41
+ },
42
+ onlyId: 'form-D1x7',
43
+ name: 'desc'
44
+ }
45
+ ]
46
+ }
47
+
48
+ const handleSubmit = () => {
49
+ formRef.value
50
+ .submit()
51
+ .then((values) => {
52
+ alert(JSON.stringify(values))
53
+ })
54
+ .catch((e) => console.log(e))
55
+ }
56
+ </script>
57
+ ```
58
+
59
+ ## Props
60
+
61
+ | 参数名 | 类型 | 默认值 | 是否必传 | 描述 |
62
+ | ------------- | ---------- | ------- | -------- | ----------------------------------------------------------- |
63
+ | schema | object | -- | No | 表单Schema配置,纯JSON,用于描述表单结构 |
64
+ | v-model | object ref | ref({}) | No | 表单数据对象,用于控制表单值,双向绑定 |
65
+ | schemaContext | object | {} | No | 自定义的联动变量 |
66
+ | disabled | Boolean | false | No | 禁用所有表单项 |
67
+ | style | any | ——— | No | 渲染器的style |
68
+ | class | any | ——— | No | 渲染器的class |
69
+ | schemaId | String | ——— | No | 渲染器会根据这个id,远程获取schema。需提前配置getSchema方法 |
70
+
71
+
72
+ ## Events
73
+
74
+ | 事件名 | 类型 | 描述 |
75
+ | -------- | ------------ | ---------------- |
76
+ | onSubmit | values=>void | 表单提交时触发 |
77
+ | onChange | values=>void | 表单值改变时触发 |
78
+
79
+ ## Exposes
80
+
81
+ >组件暴露出的方法,通过ref调用
82
+
83
+ | 名称 | 类型 | 描述 |
84
+ | ------------- | --------------------- | -------------------------------------- |
85
+ | submit | ()=>Promise\<values\> | 提交表单,会先触发校验 |
86
+ | validate | ()=>Promise | 校验表单 |
87
+ | reset | ()=>void | 重置表单 |
88
+ | getFormValues | ()=>void | 获取表单值 |
89
+ | setFormValues | (values)=>void | 修改表单值,常用于表单回显 |
90
+ | selectData | Array | 选择类型的组件,已选项对应的数据源集合 |
91
+ | context | {} | 表单的联动变量 |
92
+
93
+
94
+
95
+
96
+ ## 提交表单
97
+
98
+ 提交表单,会先触发表单的校验,校验通过才会执行onSubmit回调。下面是两个示例:
99
+
100
+ >示例一:通过ref去调用组件暴露的submit方法,好处是可以让你指定任何元素去触发表单提交
101
+ ```vue
102
+ <template>
103
+ <schema-form :schema="schema" ref="formRef" />
104
+ <button @click="handleSubmit">提交</button>
105
+ </template>
106
+
107
+ <script setup>
108
+ import { ref } from 'vue'
109
+
110
+ const formRef = ref()
111
+
112
+ const schema = {
113
+ labelWidth: 150,
114
+ labelAlign: 'right',
115
+ size: 'default',
116
+ items: [
117
+ {
118
+ label: '用户名',
119
+ component: 'input',
120
+ props: {
121
+ placeholder: '请输入用户名'
122
+ },
123
+ onlyId: 'form-eNR0',
124
+ name: 'username',
125
+ initialValue: 10
126
+ },
127
+ {
128
+ label: '密码',
129
+ component: 'password',
130
+ props: {
131
+ placeholder: '请输入密码'
132
+ },
133
+ onlyId: 'form-D1x7',
134
+ name: 'password',
135
+ required: true
136
+ }
137
+ ]
138
+ }
139
+
140
+ const handleSubmit = () => {
141
+ formRef.value
142
+ .submit()
143
+ .then((values) => {
144
+ alert(JSON.stringify(values))
145
+ })
146
+ .catch((e) => console.log(e))
147
+ }
148
+ </script>
149
+ ```
150
+
151
+
152
+ >示例二:在schema配置一个按钮组件,它内置了触发表单提交功能,然后给表单传递onSubmit去处理提交逻辑就可以了,省去多写一个提交按钮的功夫
153
+ ```vue
154
+ <template>
155
+ <schema-form :schema="schema" @onSubmit="onSubmit" />
156
+ </template>
157
+
158
+ <script setup>
159
+ const schema = {
160
+ labelWidth: 150,
161
+ labelAlign: 'right',
162
+ size: 'default',
163
+ items: [
164
+ {
165
+ label: '用户名',
166
+ component: 'input',
167
+ props: {
168
+ placeholder: '请输入用户名'
169
+ },
170
+ onlyId: 'form-eNR0',
171
+ name: 'username',
172
+ initialValue: 10
173
+ },
174
+ {
175
+ label: '密码',
176
+ component: 'password',
177
+ props: {
178
+ placeholder: '请输入密码'
179
+ },
180
+ onlyId: 'form-D1x7',
181
+ name: 'password'
182
+ },
183
+ {
184
+ component: 'button',
185
+ props: {
186
+ name: '提交',
187
+ clickEvent: 'submitForm'
188
+ },
189
+ onlyId: 'form-aBMY',
190
+ name: 'submit',
191
+ }
192
+ ]
193
+ }
194
+ //表单提交,且校验通过才会触发
195
+ const onSubmit = (values) => {
196
+ alert(JSON.stringify(values))
197
+ }
198
+ </script>
199
+
200
+ ```
package/dist/md/start.md CHANGED
@@ -3,9 +3,13 @@
3
3
  ### 安装
4
4
 
5
5
  ```js
6
+ npm i vue-form-craft
7
+ //或
8
+ yarn add vue-form-craft
9
+ //或
6
10
  pnpm i vue-form-craft
7
-
8
11
  ```
12
+
9
13
  ### 全局注册
10
14
 
11
15
  ```js
@@ -38,7 +42,6 @@ const schema = {
38
42
  props: {
39
43
  placeholder: '请输入用户名'
40
44
  },
41
- onlyId: 'form-eNR0',
42
45
  name: 'username'
43
46
  },
44
47
  {
@@ -47,7 +50,6 @@ const schema = {
47
50
  props: {
48
51
  placeholder: '请输入密码'
49
52
  },
50
- onlyId: 'form-D1x7',
51
53
  name: 'password'
52
54
  },
53
55
  {
@@ -56,8 +58,6 @@ const schema = {
56
58
  name: '提交',
57
59
  clickEvent: 'submitForm'
58
60
  },
59
- onlyId: 'form-aBMY',
60
- name: 'submit'
61
61
  }
62
62
  ]
63
63
  }
@@ -0,0 +1,73 @@
1
+ function n(e) {
2
+ for (var $ = {}, r = e.split(" "), i = 0; i < r.length; ++i)
3
+ $[r[i]] = !0;
4
+ return $;
5
+ }
6
+ var a = n("$! $$ $& $? $+ $abook $abs $active $activecid $activewid $address $addtok $agent $agentname $agentstat $agentver $alias $and $anick $ansi2mirc $aop $appactive $appstate $asc $asctime $asin $atan $avoice $away $awaymsg $awaytime $banmask $base $bfind $binoff $biton $bnick $bvar $bytes $calc $cb $cd $ceil $chan $chanmodes $chantypes $chat $chr $cid $clevel $click $cmdbox $cmdline $cnick $color $com $comcall $comchan $comerr $compact $compress $comval $cos $count $cr $crc $creq $crlf $ctime $ctimer $ctrlenter $date $day $daylight $dbuh $dbuw $dccignore $dccport $dde $ddename $debug $decode $decompress $deltok $devent $dialog $did $didreg $didtok $didwm $disk $dlevel $dll $dllcall $dname $dns $duration $ebeeps $editbox $emailaddr $encode $error $eval $event $exist $feof $ferr $fgetc $file $filename $filtered $finddir $finddirn $findfile $findfilen $findtok $fline $floor $fopen $fread $fserve $fulladdress $fulldate $fullname $fullscreen $get $getdir $getdot $gettok $gmt $group $halted $hash $height $hfind $hget $highlight $hnick $hotline $hotlinepos $ial $ialchan $ibl $idle $iel $ifmatch $ignore $iif $iil $inelipse $ini $inmidi $inpaste $inpoly $input $inrect $inroundrect $insong $instok $int $inwave $ip $isalias $isbit $isdde $isdir $isfile $isid $islower $istok $isupper $keychar $keyrpt $keyval $knick $lactive $lactivecid $lactivewid $left $len $level $lf $line $lines $link $lock $lock $locked $log $logstamp $logstampfmt $longfn $longip $lower $ltimer $maddress $mask $matchkey $matchtok $md5 $me $menu $menubar $menucontext $menutype $mid $middir $mircdir $mircexe $mircini $mklogfn $mnick $mode $modefirst $modelast $modespl $mouse $msfile $network $newnick $nick $nofile $nopath $noqt $not $notags $notify $null $numeric $numok $oline $onpoly $opnick $or $ord $os $passivedcc $pic $play $pnick $port $portable $portfree $pos $prefix $prop $protect $puttok $qt $query $rand $r $rawmsg $read $readomo $readn $regex $regml $regsub $regsubex $remove $remtok $replace $replacex $reptok $result $rgb $right $round $scid $scon $script $scriptdir $scriptline $sdir $send $server $serverip $sfile $sha1 $shortfn $show $signal $sin $site $sline $snick $snicks $snotify $sock $sockbr $sockerr $sockname $sorttok $sound $sqrt $ssl $sreq $sslready $status $strip $str $stripped $syle $submenu $switchbar $tan $target $ticks $time $timer $timestamp $timestampfmt $timezone $tip $titlebar $toolbar $treebar $trust $ulevel $ulist $upper $uptime $url $usermode $v1 $v2 $var $vcmd $vcmdstat $vcmdver $version $vnick $vol $wid $width $wildsite $wildtok $window $wrap $xor"), s = n("abook ajinvite alias aline ame amsg anick aop auser autojoin avoice away background ban bcopy beep bread break breplace bset btrunc bunset bwrite channel clear clearall cline clipboard close cnick color comclose comopen comreg continue copy creq ctcpreply ctcps dcc dccserver dde ddeserver debug dec describe dialog did didtok disable disconnect dlevel dline dll dns dqwindow drawcopy drawdot drawfill drawline drawpic drawrect drawreplace drawrot drawsave drawscroll drawtext ebeeps echo editbox emailaddr enable events exit fclose filter findtext finger firewall flash flist flood flush flushini font fopen fseek fsend fserve fullname fwrite ghide gload gmove gopts goto gplay gpoint gqreq groups gshow gsize gstop gtalk gunload hadd halt haltdef hdec hdel help hfree hinc hload hmake hop hsave ial ialclear ialmark identd if ignore iline inc invite iuser join kick linesep links list load loadbuf localinfo log mdi me menubar mkdir mnick mode msg nick noop notice notify omsg onotice part partall pdcc perform play playctrl pop protect pvoice qme qmsg query queryn quit raw reload remini remote remove rename renwin reseterror resetidle return rlevel rline rmdir run ruser save savebuf saveini say scid scon server set showmirc signam sline sockaccept sockclose socklist socklisten sockmark sockopen sockpause sockread sockrename sockudp sockwrite sound speak splay sreq strip switchbar timer timestamp titlebar tnick tokenize toolbar topic tray treebar ulist unload unset unsetall updatenl url uwho var vcadd vcmd vcrem vol while whois window winhelp write writeint if isalnum isalpha isaop isavoice isban ischan ishop isignore isin isincs isletter islower isnotify isnum ison isop isprotect isreg isupper isvoice iswm iswmcs elseif else goto menu nicklist status title icon size option text edit button check radio box scroll list combo link tab item"), l = n("if elseif else and not or eq ne in ni for foreach while switch"), c = /[+\-*&%=<>!?^\/\|]/;
7
+ function d(e, $, r) {
8
+ return $.tokenize = r, r(e, $);
9
+ }
10
+ function o(e, $) {
11
+ var r = $.beforeParams;
12
+ $.beforeParams = !1;
13
+ var i = e.next();
14
+ if (/[\[\]{}\(\),\.]/.test(i))
15
+ return i == "(" && r ? $.inParams = !0 : i == ")" && ($.inParams = !1), null;
16
+ if (/\d/.test(i))
17
+ return e.eatWhile(/[\w\.]/), "number";
18
+ if (i == "\\")
19
+ return e.eat("\\"), e.eat(/./), "number";
20
+ if (i == "/" && e.eat("*"))
21
+ return d(e, $, m);
22
+ if (i == ";" && e.match(/ *\( *\(/))
23
+ return d(e, $, p);
24
+ if (i == ";" && !$.inParams)
25
+ return e.skipToEnd(), "comment";
26
+ if (i == '"')
27
+ return e.eat(/"/), "keyword";
28
+ if (i == "$")
29
+ return e.eatWhile(/[$_a-z0-9A-Z\.:]/), a && a.propertyIsEnumerable(e.current().toLowerCase()) ? "keyword" : ($.beforeParams = !0, "builtin");
30
+ if (i == "%")
31
+ return e.eatWhile(/[^,\s()]/), $.beforeParams = !0, "string";
32
+ if (c.test(i))
33
+ return e.eatWhile(c), "operator";
34
+ e.eatWhile(/[\w\$_{}]/);
35
+ var t = e.current().toLowerCase();
36
+ return s && s.propertyIsEnumerable(t) ? "keyword" : l && l.propertyIsEnumerable(t) ? ($.beforeParams = !0, "keyword") : null;
37
+ }
38
+ function m(e, $) {
39
+ for (var r = !1, i; i = e.next(); ) {
40
+ if (i == "/" && r) {
41
+ $.tokenize = o;
42
+ break;
43
+ }
44
+ r = i == "*";
45
+ }
46
+ return "comment";
47
+ }
48
+ function p(e, $) {
49
+ for (var r = 0, i; i = e.next(); ) {
50
+ if (i == ";" && r == 2) {
51
+ $.tokenize = o;
52
+ break;
53
+ }
54
+ i == ")" ? r++ : i != " " && (r = 0);
55
+ }
56
+ return "meta";
57
+ }
58
+ const u = {
59
+ name: "mirc",
60
+ startState: function() {
61
+ return {
62
+ tokenize: o,
63
+ beforeParams: !1,
64
+ inParams: !1
65
+ };
66
+ },
67
+ token: function(e, $) {
68
+ return e.eatSpace() ? null : $.tokenize(e, $);
69
+ }
70
+ };
71
+ export {
72
+ u as mirc
73
+ };
@@ -0,0 +1,275 @@
1
+ function y(i) {
2
+ var t = {
3
+ as: "keyword",
4
+ do: "keyword",
5
+ else: "keyword",
6
+ end: "keyword",
7
+ exception: "keyword",
8
+ fun: "keyword",
9
+ functor: "keyword",
10
+ if: "keyword",
11
+ in: "keyword",
12
+ include: "keyword",
13
+ let: "keyword",
14
+ of: "keyword",
15
+ open: "keyword",
16
+ rec: "keyword",
17
+ struct: "keyword",
18
+ then: "keyword",
19
+ type: "keyword",
20
+ val: "keyword",
21
+ while: "keyword",
22
+ with: "keyword"
23
+ }, l = i.extraWords || {};
24
+ for (var w in l)
25
+ l.hasOwnProperty(w) && (t[w] = i.extraWords[w]);
26
+ var u = [];
27
+ for (var a in t)
28
+ u.push(a);
29
+ function d(e, r) {
30
+ var o = e.next();
31
+ if (o === '"')
32
+ return r.tokenize = c, r.tokenize(e, r);
33
+ if (o === "{" && e.eat("|"))
34
+ return r.longString = !0, r.tokenize = b, r.tokenize(e, r);
35
+ if (o === "(" && e.match(/^\*(?!\))/))
36
+ return r.commentLevel++, r.tokenize = f, r.tokenize(e, r);
37
+ if (o === "~" || o === "?")
38
+ return e.eatWhile(/\w/), "variableName.special";
39
+ if (o === "`")
40
+ return e.eatWhile(/\w/), "quote";
41
+ if (o === "/" && i.slashComments && e.eat("/"))
42
+ return e.skipToEnd(), "comment";
43
+ if (/\d/.test(o))
44
+ return o === "0" && e.eat(/[bB]/) && e.eatWhile(/[01]/), o === "0" && e.eat(/[xX]/) && e.eatWhile(/[0-9a-fA-F]/), o === "0" && e.eat(/[oO]/) ? e.eatWhile(/[0-7]/) : (e.eatWhile(/[\d_]/), e.eat(".") && e.eatWhile(/[\d]/), e.eat(/[eE]/) && e.eatWhile(/[\d\-+]/)), "number";
45
+ if (/[+\-*&%=<>!?|@\.~:]/.test(o))
46
+ return "operator";
47
+ if (/[\w\xa1-\uffff]/.test(o)) {
48
+ e.eatWhile(/[\w\xa1-\uffff]/);
49
+ var n = e.current();
50
+ return t.hasOwnProperty(n) ? t[n] : "variable";
51
+ }
52
+ return null;
53
+ }
54
+ function c(e, r) {
55
+ for (var o, n = !1, k = !1; (o = e.next()) != null; ) {
56
+ if (o === '"' && !k) {
57
+ n = !0;
58
+ break;
59
+ }
60
+ k = !k && o === "\\";
61
+ }
62
+ return n && !k && (r.tokenize = d), "string";
63
+ }
64
+ function f(e, r) {
65
+ for (var o, n; r.commentLevel > 0 && (n = e.next()) != null; )
66
+ o === "(" && n === "*" && r.commentLevel++, o === "*" && n === ")" && r.commentLevel--, o = n;
67
+ return r.commentLevel <= 0 && (r.tokenize = d), "comment";
68
+ }
69
+ function b(e, r) {
70
+ for (var o, n; r.longString && (n = e.next()) != null; )
71
+ o === "|" && n === "}" && (r.longString = !1), o = n;
72
+ return r.longString || (r.tokenize = d), "string";
73
+ }
74
+ return {
75
+ startState: function() {
76
+ return { tokenize: d, commentLevel: 0, longString: !1 };
77
+ },
78
+ token: function(e, r) {
79
+ return e.eatSpace() ? null : r.tokenize(e, r);
80
+ },
81
+ languageData: {
82
+ autocomplete: u,
83
+ commentTokens: {
84
+ line: i.slashComments ? "//" : void 0,
85
+ block: { open: "(*", close: "*)" }
86
+ }
87
+ }
88
+ };
89
+ }
90
+ const s = y({
91
+ name: "ocaml",
92
+ extraWords: {
93
+ and: "keyword",
94
+ assert: "keyword",
95
+ begin: "keyword",
96
+ class: "keyword",
97
+ constraint: "keyword",
98
+ done: "keyword",
99
+ downto: "keyword",
100
+ external: "keyword",
101
+ function: "keyword",
102
+ initializer: "keyword",
103
+ lazy: "keyword",
104
+ match: "keyword",
105
+ method: "keyword",
106
+ module: "keyword",
107
+ mutable: "keyword",
108
+ new: "keyword",
109
+ nonrec: "keyword",
110
+ object: "keyword",
111
+ private: "keyword",
112
+ sig: "keyword",
113
+ to: "keyword",
114
+ try: "keyword",
115
+ value: "keyword",
116
+ virtual: "keyword",
117
+ when: "keyword",
118
+ // builtins
119
+ raise: "builtin",
120
+ failwith: "builtin",
121
+ true: "builtin",
122
+ false: "builtin",
123
+ // Pervasives builtins
124
+ asr: "builtin",
125
+ land: "builtin",
126
+ lor: "builtin",
127
+ lsl: "builtin",
128
+ lsr: "builtin",
129
+ lxor: "builtin",
130
+ mod: "builtin",
131
+ or: "builtin",
132
+ // More Pervasives
133
+ raise_notrace: "builtin",
134
+ trace: "builtin",
135
+ exit: "builtin",
136
+ print_string: "builtin",
137
+ print_endline: "builtin",
138
+ int: "type",
139
+ float: "type",
140
+ bool: "type",
141
+ char: "type",
142
+ string: "type",
143
+ unit: "type",
144
+ // Modules
145
+ List: "builtin"
146
+ }
147
+ }), h = y({
148
+ name: "fsharp",
149
+ extraWords: {
150
+ abstract: "keyword",
151
+ assert: "keyword",
152
+ base: "keyword",
153
+ begin: "keyword",
154
+ class: "keyword",
155
+ default: "keyword",
156
+ delegate: "keyword",
157
+ "do!": "keyword",
158
+ done: "keyword",
159
+ downcast: "keyword",
160
+ downto: "keyword",
161
+ elif: "keyword",
162
+ extern: "keyword",
163
+ finally: "keyword",
164
+ for: "keyword",
165
+ function: "keyword",
166
+ global: "keyword",
167
+ inherit: "keyword",
168
+ inline: "keyword",
169
+ interface: "keyword",
170
+ internal: "keyword",
171
+ lazy: "keyword",
172
+ "let!": "keyword",
173
+ match: "keyword",
174
+ member: "keyword",
175
+ module: "keyword",
176
+ mutable: "keyword",
177
+ namespace: "keyword",
178
+ new: "keyword",
179
+ null: "keyword",
180
+ override: "keyword",
181
+ private: "keyword",
182
+ public: "keyword",
183
+ "return!": "keyword",
184
+ return: "keyword",
185
+ select: "keyword",
186
+ static: "keyword",
187
+ to: "keyword",
188
+ try: "keyword",
189
+ upcast: "keyword",
190
+ "use!": "keyword",
191
+ use: "keyword",
192
+ void: "keyword",
193
+ when: "keyword",
194
+ "yield!": "keyword",
195
+ yield: "keyword",
196
+ // Reserved words
197
+ atomic: "keyword",
198
+ break: "keyword",
199
+ checked: "keyword",
200
+ component: "keyword",
201
+ const: "keyword",
202
+ constraint: "keyword",
203
+ constructor: "keyword",
204
+ continue: "keyword",
205
+ eager: "keyword",
206
+ event: "keyword",
207
+ external: "keyword",
208
+ fixed: "keyword",
209
+ method: "keyword",
210
+ mixin: "keyword",
211
+ object: "keyword",
212
+ parallel: "keyword",
213
+ process: "keyword",
214
+ protected: "keyword",
215
+ pure: "keyword",
216
+ sealed: "keyword",
217
+ tailcall: "keyword",
218
+ trait: "keyword",
219
+ virtual: "keyword",
220
+ volatile: "keyword",
221
+ // builtins
222
+ List: "builtin",
223
+ Seq: "builtin",
224
+ Map: "builtin",
225
+ Set: "builtin",
226
+ Option: "builtin",
227
+ int: "builtin",
228
+ string: "builtin",
229
+ not: "builtin",
230
+ true: "builtin",
231
+ false: "builtin",
232
+ raise: "builtin",
233
+ failwith: "builtin"
234
+ },
235
+ slashComments: !0
236
+ }), p = y({
237
+ name: "sml",
238
+ extraWords: {
239
+ abstype: "keyword",
240
+ and: "keyword",
241
+ andalso: "keyword",
242
+ case: "keyword",
243
+ datatype: "keyword",
244
+ fn: "keyword",
245
+ handle: "keyword",
246
+ infix: "keyword",
247
+ infixr: "keyword",
248
+ local: "keyword",
249
+ nonfix: "keyword",
250
+ op: "keyword",
251
+ orelse: "keyword",
252
+ raise: "keyword",
253
+ withtype: "keyword",
254
+ eqtype: "keyword",
255
+ sharing: "keyword",
256
+ sig: "keyword",
257
+ signature: "keyword",
258
+ structure: "keyword",
259
+ where: "keyword",
260
+ true: "keyword",
261
+ false: "keyword",
262
+ // types
263
+ int: "builtin",
264
+ real: "builtin",
265
+ string: "builtin",
266
+ char: "builtin",
267
+ bool: "builtin"
268
+ },
269
+ slashComments: !0
270
+ });
271
+ export {
272
+ h as fSharp,
273
+ s as oCaml,
274
+ p as sml
275
+ };