@c2-markdown-ui/react 0.4.3 → 0.4.4

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 (73) hide show
  1. package/README.md +6 -24
  2. package/dist/index.d.ts +2 -0
  3. package/dist/index.d.ts.map +1 -0
  4. package/dist/index.js +3733 -4365
  5. package/dist/lib/MarkdownUI.d.ts +10 -0
  6. package/dist/lib/MarkdownUI.d.ts.map +1 -0
  7. package/dist/lib/index.d.ts +4 -0
  8. package/dist/lib/index.d.ts.map +1 -0
  9. package/dist/widgets/Button.d.ts +15 -0
  10. package/dist/widgets/Button.d.ts.map +1 -0
  11. package/dist/widgets/ButtonGroup.d.ts +11 -0
  12. package/dist/widgets/ButtonGroup.d.ts.map +1 -0
  13. package/dist/widgets/Cascader.d.ts +34 -0
  14. package/dist/widgets/Cascader.d.ts.map +1 -0
  15. package/dist/widgets/Chart.d.ts +20 -0
  16. package/dist/widgets/Chart.d.ts.map +1 -0
  17. package/dist/widgets/DatePicker.d.ts +28 -0
  18. package/dist/widgets/DatePicker.d.ts.map +1 -0
  19. package/dist/widgets/Form.d.ts +47 -0
  20. package/dist/widgets/Form.d.ts.map +1 -0
  21. package/dist/widgets/Incomplete.d.ts +3 -0
  22. package/dist/widgets/Incomplete.d.ts.map +1 -0
  23. package/dist/widgets/MultipleChoiceQuestion.d.ts +15 -0
  24. package/dist/widgets/MultipleChoiceQuestion.d.ts.map +1 -0
  25. package/dist/widgets/NumberInput.d.ts +26 -0
  26. package/dist/widgets/NumberInput.d.ts.map +1 -0
  27. package/dist/widgets/Quiz.d.ts +37 -0
  28. package/dist/widgets/Quiz.d.ts.map +1 -0
  29. package/dist/widgets/Radio.d.ts +24 -0
  30. package/dist/widgets/Radio.d.ts.map +1 -0
  31. package/dist/widgets/Select.d.ts +15 -0
  32. package/dist/widgets/Select.d.ts.map +1 -0
  33. package/dist/widgets/SelectMulti.d.ts +20 -0
  34. package/dist/widgets/SelectMulti.d.ts.map +1 -0
  35. package/dist/widgets/ShortAnswerQuestion.d.ts +16 -0
  36. package/dist/widgets/ShortAnswerQuestion.d.ts.map +1 -0
  37. package/dist/widgets/Slider.d.ts +13 -0
  38. package/dist/widgets/Slider.d.ts.map +1 -0
  39. package/dist/widgets/Switch.d.ts +17 -0
  40. package/dist/widgets/Switch.d.ts.map +1 -0
  41. package/dist/widgets/TextInput.d.ts +11 -0
  42. package/dist/widgets/TextInput.d.ts.map +1 -0
  43. package/dist/widgets/Widget.d.ts +7 -0
  44. package/dist/widgets/Widget.d.ts.map +1 -0
  45. package/dist/widgets/chartRemoteData.d.ts +18 -0
  46. package/dist/widgets/chartRemoteData.d.ts.map +1 -0
  47. package/dist/widgets/choiceUtils.d.ts +24 -0
  48. package/dist/widgets/choiceUtils.d.ts.map +1 -0
  49. package/dist/widgets/index.d.ts +18 -0
  50. package/dist/widgets/index.d.ts.map +1 -0
  51. package/package.json +2 -2
  52. package/src/lib/MarkdownUI.tsx +9 -47
  53. package/src/lib/widgets.css +1372 -2188
  54. package/src/widgets/Button.tsx +39 -39
  55. package/src/widgets/ButtonGroup.tsx +47 -47
  56. package/src/widgets/Cascader.tsx +2 -3
  57. package/src/widgets/Chart.tsx +237 -237
  58. package/src/widgets/DatePicker.tsx +434 -451
  59. package/src/widgets/Form.tsx +372 -512
  60. package/src/widgets/Incomplete.tsx +3 -3
  61. package/src/widgets/MultipleChoiceQuestion.tsx +82 -82
  62. package/src/widgets/Quiz.tsx +320 -320
  63. package/src/widgets/Radio.tsx +26 -57
  64. package/src/widgets/Select.tsx +142 -178
  65. package/src/widgets/SelectMulti.tsx +72 -105
  66. package/src/widgets/ShortAnswerQuestion.tsx +101 -101
  67. package/src/widgets/Slider.tsx +56 -70
  68. package/src/widgets/Switch.tsx +2 -14
  69. package/src/widgets/TextInput.tsx +38 -76
  70. package/src/widgets/Widget.tsx +82 -130
  71. package/src/widgets/choiceUtils.ts +45 -90
  72. package/src/widgets/index.ts +16 -17
  73. package/src/widgets/TreeSelect.tsx +0 -649
@@ -0,0 +1,10 @@
1
+ import React from 'react';
2
+ export interface MarkdownUIProps {
3
+ html: string;
4
+ onWidgetEvent?: (event: CustomEvent<{
5
+ id: string;
6
+ value: unknown;
7
+ }>) => void;
8
+ }
9
+ export declare const MarkdownUI: React.FC<MarkdownUIProps>;
10
+ //# sourceMappingURL=MarkdownUI.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MarkdownUI.d.ts","sourceRoot":"","sources":["../../src/lib/MarkdownUI.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA4B,MAAM,OAAO,CAAC;AAIjD,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,WAAW,CAAC;QAAC,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,OAAO,CAAA;KAAC,CAAC,KAAK,IAAI,CAAC;CAC5E;AAuCD,eAAO,MAAM,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,eAAe,CA0BhD,CAAC"}
@@ -0,0 +1,4 @@
1
+ export { MarkdownUI } from './MarkdownUI';
2
+ export type { MarkdownUIProps } from './MarkdownUI';
3
+ export * from '../widgets';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/lib/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,YAAY,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AACpD,cAAc,YAAY,CAAC"}
@@ -0,0 +1,15 @@
1
+ import React from 'react';
2
+ export interface ButtonProps {
3
+ label?: string;
4
+ /** 背景色(十六进制或 CSS 颜色名) */
5
+ color?: string;
6
+ /** 字体颜色(十六进制或 CSS 颜色名) */
7
+ textColor?: string;
8
+ /** 尺寸:small / medium / large,默认 medium */
9
+ size?: 'small' | 'medium' | 'large';
10
+ /** 是否禁用 */
11
+ disabled?: boolean;
12
+ onchange: (value: string) => void;
13
+ }
14
+ export declare const Button: React.FC<ButtonProps>;
15
+ //# sourceMappingURL=Button.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Button.d.ts","sourceRoot":"","sources":["../../src/widgets/Button.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,MAAM,WAAW,WAAW;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,yBAAyB;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,0BAA0B;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,0CAA0C;IAC1C,IAAI,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAC;IACpC,WAAW;IACX,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACnC;AAED,eAAO,MAAM,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC,WAAW,CAuBxC,CAAC"}
@@ -0,0 +1,11 @@
1
+ import React from 'react';
2
+ export interface ButtonGroupProps {
3
+ choices: string[];
4
+ label?: string;
5
+ default?: string;
6
+ /** 是否禁用 */
7
+ disabled?: boolean;
8
+ onchange: (value: string) => void;
9
+ }
10
+ export declare const ButtonGroup: React.FC<ButtonGroupProps>;
11
+ //# sourceMappingURL=ButtonGroup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ButtonGroup.d.ts","sourceRoot":"","sources":["../../src/widgets/ButtonGroup.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmB,MAAM,OAAO,CAAC;AAGxC,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW;IACX,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACnC;AAED,eAAO,MAAM,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC,gBAAgB,CAkClD,CAAC"}
@@ -0,0 +1,34 @@
1
+ import React from 'react';
2
+ export interface CascaderProps {
3
+ choices: string[];
4
+ /** 嵌套对象树数据源(与扁平路径 choices 兼容共存,优先于 choices) */
5
+ data?: CascadeNode[];
6
+ /** 远端数据源 URL:设置后运行时 fetch 拉取嵌套树,data/choices 作为初始/后备树 */
7
+ url?: string;
8
+ /** 懒加载模式(url 存在时生效):首次只拉根级,点击父级后以 url?parent=<value> 逐级请求子级 */
9
+ lazy?: boolean;
10
+ label?: string;
11
+ default?: string;
12
+ placeholder?: string;
13
+ hint?: string;
14
+ required?: boolean;
15
+ /** 校验失败提示文案 */
16
+ message?: string;
17
+ /** 外部(form 提交时)传入的错误信息 */
18
+ error?: string;
19
+ /** 是否禁用 */
20
+ disabled?: boolean;
21
+ onchange: (value: string) => void;
22
+ }
23
+ /** 级联数据节点(嵌套树形,对应 mdui-lang 的 CascadeNode)
24
+ * 取值字段兼容 value/key(无 value 时用 key);展示字段 label 缺省回退 value/key */
25
+ export interface CascadeNode {
26
+ value?: string | number;
27
+ /** value 的别名(key:label 风格数据源) */
28
+ key?: string | number;
29
+ label?: string | number;
30
+ children?: CascadeNode[];
31
+ [extra: string]: any;
32
+ }
33
+ export declare const Cascader: React.FC<CascaderProps>;
34
+ //# sourceMappingURL=Cascader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Cascader.d.ts","sourceRoot":"","sources":["../../src/widgets/Cascader.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA+C,MAAM,OAAO,CAAC;AAEpE,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,+CAA+C;IAC/C,IAAI,CAAC,EAAE,WAAW,EAAE,CAAC;IACrB,yDAAyD;IACzD,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,+DAA+D;IAC/D,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,eAAe;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,0BAA0B;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW;IACX,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACnC;AAED;iEACiE;AACjE,MAAM,WAAW,WAAW;IAC1B,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACxB,iCAAiC;IACjC,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACxB,QAAQ,CAAC,EAAE,WAAW,EAAE,CAAC;IACzB,CAAC,KAAK,EAAE,MAAM,GAAG,GAAG,CAAC;CACtB;AA+FD,eAAO,MAAM,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,aAAa,CA8Q5C,CAAC"}
@@ -0,0 +1,20 @@
1
+ interface Dataset {
2
+ label: string;
3
+ data: number[];
4
+ }
5
+ interface ChartProps {
6
+ type: "chart-line" | "chart-bar" | "chart-pie" | "chart-scatter";
7
+ title?: string;
8
+ height?: number;
9
+ /** 远端数据源 URL:设置后运行时 fetch 拉取(CSV 文本或 JSON),本地 CSV 作为初始/后备数据 */
10
+ url?: string;
11
+ /** 是否展示图例:未设置(undefined)时自动判断(多数据集或饼图时展示) */
12
+ legend?: boolean;
13
+ labels: string[];
14
+ datasets: Dataset[];
15
+ options?: Record<string, any>;
16
+ onchange: (data: any) => void;
17
+ }
18
+ export declare function Chart({ type, title, height, url, legend, labels, datasets, options, onchange }: ChartProps): import("react/jsx-runtime").JSX.Element;
19
+ export {};
20
+ //# sourceMappingURL=Chart.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Chart.d.ts","sourceRoot":"","sources":["../../src/widgets/Chart.tsx"],"names":[],"mappings":"AAoCA,UAAU,OAAO;IACf,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB;AAED,UAAU,UAAU;IAClB,IAAI,EAAE,YAAY,GAAG,WAAW,GAAG,WAAW,GAAG,eAAe,CAAC;IACjE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,+DAA+D;IAC/D,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,6CAA6C;IAC7C,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC9B,QAAQ,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,IAAI,CAAC;CAC/B;AAED,wBAAgB,KAAK,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,GAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAY,EAAE,QAAQ,EAAE,EAAE,UAAU,2CAsLpH"}
@@ -0,0 +1,28 @@
1
+ import React from 'react';
2
+ export interface DatePickerProps {
3
+ label?: string;
4
+ /** 选择模式:date 仅日期(默认)/ datetime 日期+时间 */
5
+ picker?: 'date' | 'datetime';
6
+ /** 范围选择(antd RangePicker 效果:双月历面板) */
7
+ range?: boolean;
8
+ /** 默认值:时间戳(毫秒)或格式化时间字符串;range 模式为 [start, end] */
9
+ default?: number | string | (number | string)[];
10
+ /** 显示格式:默认按模式推导——date 为 YYYY-MM-DD,datetime 为 YYYY-MM-DD HH:mm:ss */
11
+ format?: string;
12
+ placeholder?: string;
13
+ /** 禁用当前日期之前的日期 */
14
+ disableBeforeNow?: boolean;
15
+ /** 禁用当前日期之后的日期 */
16
+ disableAfterNow?: boolean;
17
+ hint?: string;
18
+ required?: boolean;
19
+ /** 校验失败提示文案 */
20
+ message?: string;
21
+ /** 外部(form 提交时)传入的错误信息 */
22
+ error?: string;
23
+ /** 是否禁用(整组件不可交互,区别于 disableBeforeNow/disableAfterNow 的部分日期禁用) */
24
+ disabled?: boolean;
25
+ onchange: (value: number | number[] | null) => void;
26
+ }
27
+ export declare const DatePicker: React.FC<DatePickerProps>;
28
+ //# sourceMappingURL=DatePicker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DatePicker.d.ts","sourceRoot":"","sources":["../../src/widgets/DatePicker.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA+C,MAAM,OAAO,CAAC;AAEpE,MAAM,WAAW,eAAe;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,wCAAwC;IACxC,MAAM,CAAC,EAAE,MAAM,GAAG,UAAU,CAAC;IAC7B,sCAAsC;IACtC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,kDAAkD;IAClD,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC;IAChD,qEAAqE;IACrE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,kBAAkB;IAClB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,kBAAkB;IAClB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,eAAe;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,0BAA0B;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,iEAAiE;IACjE,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI,KAAK,IAAI,CAAC;CACrD;AAiCD,eAAO,MAAM,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,eAAe,CAsXhD,CAAC"}
@@ -0,0 +1,47 @@
1
+ import React from 'react';
2
+ export interface FieldWhen {
3
+ /** 依赖的字段 id */
4
+ field: string;
5
+ /** 依赖字段命中这些值之一时才展示 */
6
+ values: string[];
7
+ }
8
+ /** 条件组合:all 且组(全部命中)、any 或组(任一命中),两组同时存在取交集 */
9
+ export interface FieldWhenGroup {
10
+ all?: FieldWhen[];
11
+ any?: FieldWhen[];
12
+ }
13
+ export interface Field {
14
+ type: string;
15
+ id: string;
16
+ /** 在 row 内占据的栅格数(1-24,类似 antd Col 的 span) */
17
+ span?: number;
18
+ /** 条件显示:依赖字段的取值命中时才展示;
19
+ * 多条件时为数组(AND 组合:全部命中才显示);
20
+ * 分组形态 { all, any }:且组全部命中 且 或组任一命中 */
21
+ when?: FieldWhen | FieldWhen[] | FieldWhenGroup;
22
+ [key: string]: any;
23
+ }
24
+ export interface FormRow {
25
+ /** 列间距(px),类似 antd Row 的 gutter */
26
+ gutter?: number;
27
+ fields: Field[];
28
+ }
29
+ export interface FormProps {
30
+ fields: Field[];
31
+ /** 行分组(对象形态 { gutter, fields };兼容旧数组形态 Field[][]) */
32
+ rows?: (FormRow | Field[])[];
33
+ inline?: boolean;
34
+ columns?: number;
35
+ submitLabel?: string;
36
+ /** 取消按钮文案,未设置则不显示 */
37
+ cancelLabel?: string;
38
+ /** 清空/重置按钮文案,未设置则不显示 */
39
+ resetLabel?: string;
40
+ /** 按钮组对齐:left / center / right */
41
+ buttonsAlign?: 'left' | 'center' | 'right';
42
+ /** 是否禁用:级联禁用所有字段与按钮 */
43
+ disabled?: boolean;
44
+ onchange: (values: Record<string, unknown>) => void;
45
+ }
46
+ export declare const Form: React.FC<FormProps>;
47
+ //# sourceMappingURL=Form.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Form.d.ts","sourceRoot":"","sources":["../../src/widgets/Form.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAuC,MAAM,OAAO,CAAC;AAe5D,MAAM,WAAW,SAAS;IACxB,eAAe;IACf,KAAK,EAAE,MAAM,CAAC;IACd,sBAAsB;IACtB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,+CAA+C;AAC/C,MAAM,WAAW,cAAc;IAC7B,GAAG,CAAC,EAAE,SAAS,EAAE,CAAC;IAClB,GAAG,CAAC,EAAE,SAAS,EAAE,CAAC;CACnB;AAED,MAAM,WAAW,KAAK;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,6CAA6C;IAC7C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;4CAEwC;IACxC,IAAI,CAAC,EAAE,SAAS,GAAG,SAAS,EAAE,GAAG,cAAc,CAAC;IAChD,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AAED,MAAM,WAAW,OAAO;IACtB,mCAAmC;IACnC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,KAAK,EAAE,CAAC;CACjB;AAED,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,KAAK,EAAE,CAAC;IAChB,qDAAqD;IACrD,IAAI,CAAC,EAAE,CAAC,OAAO,GAAG,KAAK,EAAE,CAAC,EAAE,CAAC;IAC7B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,qBAAqB;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,wBAAwB;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,kCAAkC;IAClC,YAAY,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC;IAC3C,uBAAuB;IACvB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;CACrD;AAED,eAAO,MAAM,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,SAAS,CAmTpC,CAAC"}
@@ -0,0 +1,3 @@
1
+ import React from 'react';
2
+ export declare const Incomplete: React.FC;
3
+ //# sourceMappingURL=Incomplete.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Incomplete.d.ts","sourceRoot":"","sources":["../../src/widgets/Incomplete.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,eAAO,MAAM,UAAU,EAAE,KAAK,CAAC,EAQ9B,CAAC"}
@@ -0,0 +1,15 @@
1
+ import React from 'react';
2
+ export interface MultipleChoiceQuestionProps {
3
+ question: string;
4
+ choices: string[];
5
+ correctAnswer?: string;
6
+ showFeedback?: boolean;
7
+ /** 是否禁用:禁用后选项不可点击 */
8
+ disabled?: boolean;
9
+ onchange: (value: {
10
+ answer: string;
11
+ isCorrect?: boolean;
12
+ }) => void;
13
+ }
14
+ export declare const MultipleChoiceQuestion: React.FC<MultipleChoiceQuestionProps>;
15
+ //# sourceMappingURL=MultipleChoiceQuestion.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MultipleChoiceQuestion.d.ts","sourceRoot":"","sources":["../../src/widgets/MultipleChoiceQuestion.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmB,MAAM,OAAO,CAAC;AAGxC,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,qBAAqB;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,CAAC,KAAK,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,OAAO,CAAA;KAAE,KAAK,IAAI,CAAC;CACpE;AAED,eAAO,MAAM,sBAAsB,EAAE,KAAK,CAAC,EAAE,CAAC,2BAA2B,CAoExE,CAAC"}
@@ -0,0 +1,26 @@
1
+ import React from 'react';
2
+ export interface NumberInputProps {
3
+ label?: string;
4
+ /** 最小值 */
5
+ min?: number;
6
+ /** 最大值 */
7
+ max?: number;
8
+ /** 步长(点击上下按钮/方向键的增减量),默认 1 */
9
+ step?: number;
10
+ /** 数值精度(小数位数) */
11
+ precision?: number;
12
+ default?: number;
13
+ placeholder?: string;
14
+ hint?: string;
15
+ /** 是否必填:空值提交校验不通过 */
16
+ required?: boolean;
17
+ /** 校验失败提示文案 */
18
+ message?: string;
19
+ /** 外部(form 提交时)传入的错误信息,优先于组件内部即时校验 */
20
+ error?: string;
21
+ /** 是否禁用 */
22
+ disabled?: boolean;
23
+ onchange: (value: number | null) => void;
24
+ }
25
+ export declare const NumberInput: React.FC<NumberInputProps>;
26
+ //# sourceMappingURL=NumberInput.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NumberInput.d.ts","sourceRoot":"","sources":["../../src/widgets/NumberInput.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmB,MAAM,OAAO,CAAC;AAExC,MAAM,WAAW,gBAAgB;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU;IACV,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,UAAU;IACV,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,8BAA8B;IAC9B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,iBAAiB;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,qBAAqB;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,eAAe;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,sCAAsC;IACtC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW;IACX,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;CAC1C;AAUD,eAAO,MAAM,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC,gBAAgB,CAsIlD,CAAC"}
@@ -0,0 +1,37 @@
1
+ import React from 'react';
2
+ export interface QuizProps {
3
+ title: string;
4
+ questions: QuizQuestion[];
5
+ showScore?: boolean;
6
+ showProgress?: boolean;
7
+ passingScore?: number;
8
+ /** 是否禁用:级联禁用所有题目 */
9
+ disabled?: boolean;
10
+ onchange: (value: QuizState) => void;
11
+ }
12
+ interface QuizQuestion {
13
+ id: string;
14
+ type: "mcq" | "short-answer";
15
+ question: string;
16
+ points: number;
17
+ choices?: string[];
18
+ correctAnswer?: string;
19
+ placeholder?: string;
20
+ correctAnswers?: string[];
21
+ }
22
+ interface QuizAnswer {
23
+ answer: string;
24
+ isCorrect: boolean;
25
+ points: number;
26
+ submitted: boolean;
27
+ }
28
+ interface QuizState {
29
+ answers: Record<string, QuizAnswer>;
30
+ totalScore: number;
31
+ maxScore: number;
32
+ questionsAnswered: number;
33
+ isCompleted: boolean;
34
+ }
35
+ export declare const Quiz: React.FC<QuizProps>;
36
+ export {};
37
+ //# sourceMappingURL=Quiz.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Quiz.d.ts","sourceRoot":"","sources":["../../src/widgets/Quiz.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA4B,MAAM,OAAO,CAAC;AAGjD,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,YAAY,EAAE,CAAC;IAC1B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,oBAAoB;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,IAAI,CAAC;CACtC;AAED,UAAU,YAAY;IACpB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,KAAK,GAAG,cAAc,CAAC;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IAEf,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;CAC3B;AAED,UAAU,UAAU;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,OAAO,CAAC;CACpB;AAED,UAAU,SAAS;IACjB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACpC,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,WAAW,EAAE,OAAO,CAAC;CACtB;AAED,eAAO,MAAM,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,SAAS,CAqRpC,CAAC"}
@@ -0,0 +1,24 @@
1
+ import React from 'react';
2
+ export interface RadioGroupProps {
3
+ /** 选项:字符串数组(每项支持 key:label 格式)或对象数组({key|value,label},取值为 key/value,展示 label) */
4
+ choices: string[] | Array<{
5
+ value?: string;
6
+ key?: string;
7
+ label?: string;
8
+ }>;
9
+ label?: string;
10
+ default?: string;
11
+ /** 按钮样式(参考 antd Radio optionType:button):渲染为按钮组而非圆点单选 */
12
+ button?: boolean;
13
+ /** 远端数据源 URL:设置后运行时 fetch 拉取选项,choices 作为后备/初始选项 */
14
+ url?: string;
15
+ /** 选项排列方向:vertical 纵向(默认)/ horizontal 横向 */
16
+ direction?: 'vertical' | 'horizontal';
17
+ /** 自定义布局:每行列数(设置后按 N 列网格排列,优先于 direction) */
18
+ columns?: number;
19
+ /** 是否禁用 */
20
+ disabled?: boolean;
21
+ onchange: (value: string) => void;
22
+ }
23
+ export declare const RadioGroup: React.FC<RadioGroupProps>;
24
+ //# sourceMappingURL=Radio.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Radio.d.ts","sourceRoot":"","sources":["../../src/widgets/Radio.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA8B,MAAM,OAAO,CAAC;AAGnD,MAAM,WAAW,eAAe;IAC9B,iFAAiF;IACjF,OAAO,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC5E,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,yDAAyD;IACzD,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,oDAAoD;IACpD,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,4CAA4C;IAC5C,SAAS,CAAC,EAAE,UAAU,GAAG,YAAY,CAAC;IACtC,6CAA6C;IAC7C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW;IACX,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACnC;AAeD,eAAO,MAAM,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,eAAe,CA+GhD,CAAC"}
@@ -0,0 +1,15 @@
1
+ import React from 'react';
2
+ export interface SelectProps {
3
+ choices: string[];
4
+ label?: string;
5
+ default?: string;
6
+ /** 是否可搜索:开启后下拉面板内置搜索框,按 key/value 与 label 过滤选项 */
7
+ searchable?: boolean;
8
+ /** 搜索框占位文案 */
9
+ placeholder?: string;
10
+ /** 是否禁用 */
11
+ disabled?: boolean;
12
+ onchange: (value: string | string[]) => void;
13
+ }
14
+ export declare const Select: React.FC<SelectProps>;
15
+ //# sourceMappingURL=Select.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Select.d.ts","sourceRoot":"","sources":["../../src/widgets/Select.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA+C,MAAM,OAAO,CAAC;AAGpE,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,kDAAkD;IAClD,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,cAAc;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW;IACX,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,KAAK,IAAI,CAAC;CAC9C;AAED,eAAO,MAAM,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC,WAAW,CA6HxC,CAAC"}
@@ -0,0 +1,20 @@
1
+ import React from 'react';
2
+ export interface SelectMultiProps {
3
+ /** 选项:字符串数组(每项支持 key:label 格式)或对象数组({key|value,label},取值为 key/value,展示 label) */
4
+ choices: string[] | Array<{
5
+ value?: string;
6
+ key?: string;
7
+ label?: string;
8
+ }>;
9
+ label?: string;
10
+ default?: string | string[];
11
+ /** 选项排列方向:vertical 纵向(默认)/ horizontal 横向 */
12
+ direction?: 'vertical' | 'horizontal';
13
+ /** 自定义布局:每行列数(设置后按 N 列网格排列,优先于 direction) */
14
+ columns?: number;
15
+ /** 是否禁用 */
16
+ disabled?: boolean;
17
+ onchange: (value: string | string[]) => void;
18
+ }
19
+ export declare const SelectMulti: React.FC<SelectMultiProps>;
20
+ //# sourceMappingURL=SelectMulti.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SelectMulti.d.ts","sourceRoot":"","sources":["../../src/widgets/SelectMulti.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmB,MAAM,OAAO,CAAC;AAGxC,MAAM,WAAW,gBAAgB;IAC/B,iFAAiF;IACjF,OAAO,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC5E,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC5B,4CAA4C;IAC5C,SAAS,CAAC,EAAE,UAAU,GAAG,YAAY,CAAC;IACtC,6CAA6C;IAC7C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW;IACX,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,KAAK,IAAI,CAAC;CAC9C;AAED,eAAO,MAAM,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC,gBAAgB,CAsDlD,CAAC"}
@@ -0,0 +1,16 @@
1
+ import React from 'react';
2
+ export interface ShortAnswerQuestionProps {
3
+ question: string;
4
+ placeholder?: string;
5
+ correctAnswer?: string;
6
+ correctAnswers?: string[];
7
+ showFeedback?: boolean;
8
+ /** 是否禁用:禁用后输入框与提交按钮不可交互 */
9
+ disabled?: boolean;
10
+ onchange: (value: {
11
+ answer: string;
12
+ isCorrect?: boolean;
13
+ }) => void;
14
+ }
15
+ export declare const ShortAnswerQuestion: React.FC<ShortAnswerQuestionProps>;
16
+ //# sourceMappingURL=ShortAnswerQuestion.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ShortAnswerQuestion.d.ts","sourceRoot":"","sources":["../../src/widgets/ShortAnswerQuestion.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmB,MAAM,OAAO,CAAC;AAExC,MAAM,WAAW,wBAAwB;IACvC,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,2BAA2B;IAC3B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,CAAC,KAAK,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,OAAO,CAAA;KAAE,KAAK,IAAI,CAAC;CACpE;AAED,eAAO,MAAM,mBAAmB,EAAE,KAAK,CAAC,EAAE,CAAC,wBAAwB,CAuFlE,CAAC"}
@@ -0,0 +1,13 @@
1
+ import React from 'react';
2
+ export interface SliderProps {
3
+ min: number;
4
+ max: number;
5
+ step?: number;
6
+ label?: string;
7
+ default?: number;
8
+ /** 是否禁用 */
9
+ disabled?: boolean;
10
+ onchange: (value: number) => void;
11
+ }
12
+ export declare const Slider: React.FC<SliderProps>;
13
+ //# sourceMappingURL=Slider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Slider.d.ts","sourceRoot":"","sources":["../../src/widgets/Slider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmB,MAAM,OAAO,CAAC;AAExC,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW;IACX,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACnC;AAED,eAAO,MAAM,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC,WAAW,CA2CxC,CAAC"}
@@ -0,0 +1,17 @@
1
+ import React from 'react';
2
+ export interface SwitchProps {
3
+ label?: string;
4
+ /** 默认是否选中 */
5
+ default?: boolean;
6
+ /** 选中时展示的文案(antd checkedChildren) */
7
+ checkedText?: string;
8
+ /** 未选中时展示的文案(antd unCheckedChildren) */
9
+ unCheckedText?: string;
10
+ /** 是否禁用 */
11
+ disabled?: boolean;
12
+ onchange: (value: boolean) => void;
13
+ }
14
+ /** 开关组件(参考 antd Switch):布尔切换控件,可配置选中/未选中文案。
15
+ label 在上(与表单其他字段同构),表单布局切换时位置自动跟随 */
16
+ export declare const Switch: React.FC<SwitchProps>;
17
+ //# sourceMappingURL=Switch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Switch.d.ts","sourceRoot":"","sources":["../../src/widgets/Switch.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmB,MAAM,OAAO,CAAC;AAExC,MAAM,WAAW,WAAW;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,aAAa;IACb,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,qCAAqC;IACrC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,wCAAwC;IACxC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,WAAW;IACX,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;CACpC;AAED;wCACwC;AACxC,eAAO,MAAM,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC,WAAW,CAsCxC,CAAC"}
@@ -0,0 +1,11 @@
1
+ import React from 'react';
2
+ export interface TextInputProps {
3
+ placeholder?: string;
4
+ label?: string;
5
+ default?: string;
6
+ /** 是否禁用 */
7
+ disabled?: boolean;
8
+ onchange: (value: string) => void;
9
+ }
10
+ export declare const TextInput: React.FC<TextInputProps>;
11
+ //# sourceMappingURL=TextInput.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TextInput.d.ts","sourceRoot":"","sources":["../../src/widgets/TextInput.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmB,MAAM,OAAO,CAAC;AAExC,MAAM,WAAW,cAAc;IAC7B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW;IACX,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACnC;AAED,eAAO,MAAM,SAAS,EAAE,KAAK,CAAC,EAAE,CAAC,cAAc,CA0B9C,CAAC"}
@@ -0,0 +1,7 @@
1
+ import React from 'react';
2
+ export interface WidgetProps {
3
+ id: string;
4
+ content: string;
5
+ }
6
+ export declare const Widget: React.FC<WidgetProps>;
7
+ //# sourceMappingURL=Widget.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Widget.d.ts","sourceRoot":"","sources":["../../src/widgets/Widget.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAoB,MAAM,OAAO,CAAC;AAGzC,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;CACjB;AA4BD,eAAO,MAAM,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC,WAAW,CAgDxC,CAAC"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * 图表远端数据源解析:
3
+ * - CSV 文本(与 DSL 内嵌 CSV 同格式:首行 header「标签列,系列1,系列2...」,其后数据行)
4
+ * - JSON:支持 { labels, datasets:[{label,data}] } 及常见包装({data|result} 内嵌)
5
+ */
6
+ export interface ChartDataset {
7
+ label: string;
8
+ data: number[];
9
+ }
10
+ export interface RemoteChartData {
11
+ labels: string[];
12
+ datasets: ChartDataset[];
13
+ }
14
+ /** 解析 CSV 文本为图表数据(header 至少 2 列,数据列须为数字) */
15
+ export declare function parseChartCsv(text: string): RemoteChartData | null;
16
+ /** 归一化 JSON 响应为图表数据(labels + datasets) */
17
+ export declare function normalizeRemoteChartData(json: any): RemoteChartData | null;
18
+ //# sourceMappingURL=chartRemoteData.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chartRemoteData.d.ts","sourceRoot":"","sources":["../../src/widgets/chartRemoteData.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB;AAED,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,EAAE,YAAY,EAAE,CAAC;CAC1B;AAED,4CAA4C;AAC5C,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI,CAwBlE;AAED,0CAA0C;AAC1C,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,GAAG,GAAG,eAAe,GAAG,IAAI,CAuC1E"}
@@ -0,0 +1,24 @@
1
+ /** 选项条目:value 是表单实际取值(key),label 是展示文案 */
2
+ export interface ChoiceItem {
3
+ value: string;
4
+ label: string;
5
+ }
6
+ /**
7
+ * 解析本地 choices 条目的 key:label 格式:
8
+ * - "bj:北京" → {value: "bj", label: "北京"}(value 是表单实际取值,label 是展示文案)
9
+ * - "北京" → {value: "北京", label: "北京"}(无冒号或不符合判定规则时视为纯文本)
10
+ * - "09:00" → {value: "09:00", label: "09:00"}(纯数字 key 视为时间/比例值,保持原样)
11
+ * - "http://x" → 原样(label 以 // 开头视为 URL)
12
+ *
13
+ * 判定规则:按首个冒号分割,仅当 key 非空且不含空白、非纯数字,
14
+ * 且 label 非空、不以 // 开头时才视为 key:label。
15
+ */
16
+ export declare function parseChoice(c: string): ChoiceItem;
17
+ /** 把本地 choices(string[] 或对象数组)解析为 {value,label} 数组。
18
+ * 对象条目:value > key 取值(表单实际取值),label 缺省回落到 value */
19
+ export declare function parseChoices(choices: string[] | Array<{
20
+ value?: string;
21
+ key?: string;
22
+ label?: string;
23
+ }> | undefined | null): ChoiceItem[];
24
+ //# sourceMappingURL=choiceUtils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"choiceUtils.d.ts","sourceRoot":"","sources":["../../src/widgets/choiceUtils.ts"],"names":[],"mappings":"AAAA,0CAA0C;AAC1C,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;;;;;;;;GASG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,MAAM,GAAG,UAAU,CAWjD;AAED;oDACoD;AACpD,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,GAAG,SAAS,GAAG,IAAI,GAAG,UAAU,EAAE,CAazI"}
@@ -0,0 +1,18 @@
1
+ export { Button } from './Button';
2
+ export { ButtonGroup } from './ButtonGroup';
3
+ export { Cascader } from './Cascader';
4
+ export { Chart } from './Chart';
5
+ export { DatePicker } from './DatePicker';
6
+ export { Form } from './Form';
7
+ export { Incomplete } from './Incomplete';
8
+ export { MultipleChoiceQuestion } from './MultipleChoiceQuestion';
9
+ export { NumberInput } from './NumberInput';
10
+ export { Quiz } from './Quiz';
11
+ export { RadioGroup } from './Radio';
12
+ export { Select } from './Select';
13
+ export { SelectMulti } from './SelectMulti';
14
+ export { ShortAnswerQuestion } from './ShortAnswerQuestion';
15
+ export { Slider } from './Slider';
16
+ export { Switch } from './Switch';
17
+ export { TextInput } from './TextInput';
18
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/widgets/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@c2-markdown-ui/react",
3
- "version": "0.4.3",
3
+ "version": "0.4.4",
4
4
  "description": "React renderer for markdown-ui",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -17,7 +17,7 @@
17
17
  "src"
18
18
  ],
19
19
  "scripts": {
20
- "build": "tsc -p tsconfig.build.json && vite build",
20
+ "build": "vite build && tsc -p tsconfig.build.json",
21
21
  "dev": "vite build --watch",
22
22
  "demo": "node demo/server.js",
23
23
  "prepublishOnly": "npm run build",