@antglobal/copilot-cards-mini-program 0.0.0 → 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 (72) hide show
  1. package/README.md +1 -3
  2. package/dist/action-context/index.d.ts +44 -0
  3. package/dist/action-context/index.js +71 -0
  4. package/dist/action-context/index.js.map +1 -0
  5. package/dist/adapter/alipay.d.ts +22 -0
  6. package/dist/adapter/alipay.js +66 -0
  7. package/dist/adapter/alipay.js.map +1 -0
  8. package/dist/adapter/index.d.ts +53 -0
  9. package/dist/adapter/index.js +3 -0
  10. package/dist/adapter/index.js.map +1 -0
  11. package/dist/adapter/wechat.d.ts +22 -0
  12. package/dist/adapter/wechat.js +66 -0
  13. package/dist/adapter/wechat.js.map +1 -0
  14. package/dist/components/card-button/index.acss +61 -0
  15. package/dist/components/card-button/index.axml +9 -0
  16. package/dist/components/card-button/index.d.ts +23 -0
  17. package/dist/components/card-button/index.js +27 -0
  18. package/dist/components/card-button/index.js.map +1 -0
  19. package/dist/components/card-button/index.wxml +9 -0
  20. package/dist/components/card-divider/index.acss +8 -0
  21. package/dist/components/card-divider/index.axml +5 -0
  22. package/dist/components/card-divider/index.d.ts +11 -0
  23. package/dist/components/card-divider/index.js +14 -0
  24. package/dist/components/card-divider/index.js.map +1 -0
  25. package/dist/components/card-divider/index.wxml +5 -0
  26. package/dist/components/card-image/index.acss +7 -0
  27. package/dist/components/card-image/index.axml +9 -0
  28. package/dist/components/card-image/index.d.ts +22 -0
  29. package/dist/components/card-image/index.js +23 -0
  30. package/dist/components/card-image/index.js.map +1 -0
  31. package/dist/components/card-image/index.wxml +9 -0
  32. package/dist/components/card-input/index.acss +24 -0
  33. package/dist/components/card-input/index.axml +16 -0
  34. package/dist/components/card-input/index.d.ts +25 -0
  35. package/dist/components/card-input/index.js +46 -0
  36. package/dist/components/card-input/index.js.map +1 -0
  37. package/dist/components/card-input/index.wxml +16 -0
  38. package/dist/components/card-node/index.acss +5 -0
  39. package/dist/components/card-node/index.axml +27 -0
  40. package/dist/components/card-node/index.d.ts +31 -0
  41. package/dist/components/card-node/index.js +29 -0
  42. package/dist/components/card-node/index.js.map +1 -0
  43. package/dist/components/card-node/index.wxml +27 -0
  44. package/dist/components/card-root/index.acss +4 -0
  45. package/dist/components/card-root/index.axml +4 -0
  46. package/dist/components/card-root/index.d.ts +78 -0
  47. package/dist/components/card-root/index.js +94 -0
  48. package/dist/components/card-root/index.js.map +1 -0
  49. package/dist/components/card-root/index.wxml +4 -0
  50. package/dist/components/card-text/index.acss +11 -0
  51. package/dist/components/card-text/index.axml +8 -0
  52. package/dist/components/card-text/index.d.ts +23 -0
  53. package/dist/components/card-text/index.js +24 -0
  54. package/dist/components/card-text/index.js.map +1 -0
  55. package/dist/components/card-text/index.wxml +8 -0
  56. package/dist/events/index.d.ts +37 -0
  57. package/dist/events/index.js +51 -0
  58. package/dist/events/index.js.map +1 -0
  59. package/dist/index.d.ts +16 -0
  60. package/dist/index.js +16 -0
  61. package/dist/index.js.map +1 -0
  62. package/dist/renderer/index.d.ts +67 -0
  63. package/dist/renderer/index.js +159 -0
  64. package/dist/renderer/index.js.map +1 -0
  65. package/dist/renderer/transform.d.ts +24 -0
  66. package/dist/renderer/transform.js +88 -0
  67. package/dist/renderer/transform.js.map +1 -0
  68. package/dist/streaming/index.d.ts +80 -0
  69. package/dist/streaming/index.js +231 -0
  70. package/dist/streaming/index.js.map +1 -0
  71. package/package.json +30 -7
  72. package/LEGAL.md +0 -7
package/README.md CHANGED
@@ -1,3 +1 @@
1
- ### Marmot NPM
2
-
3
- placeholder
1
+ # Marmot NPM
@@ -0,0 +1,44 @@
1
+ import { ActionRunnerContext } from '@antglobal/copilot-cards-core';
2
+ import { MiniProgramAdapter } from '../adapter/index.js';
3
+
4
+ /**
5
+ * Mini-Program Action Context Factory
6
+ *
7
+ * Creates an ActionRunnerContext that bridges core action execution
8
+ * with mini-program platform APIs via the MiniProgramAdapter.
9
+ *
10
+ * Mirrors the web-side `createWebActionContext` but routes calls
11
+ * through the adapter instead of browser globals.
12
+ */
13
+
14
+ interface MiniProgramActionContextOptions {
15
+ /** Variable setter for setVariable actions — triggers re-render */
16
+ setVariable?: (key: string, value: unknown) => void;
17
+ /** Event emitter for emit actions */
18
+ emit?: (eventName: string, payload?: unknown) => void;
19
+ /** Copy text to clipboard (uses adapter.copyText if not provided) */
20
+ copyText?: (text: string) => void;
21
+ /** Abort signal for cancelling in-flight requests on dispose */
22
+ abortSignal?: AbortSignal;
23
+ /** Variables context for resolving expressions in action params */
24
+ variables?: Record<string, unknown>;
25
+ /** Current bot ID — used to look up bot-scoped handlers */
26
+ botId?: string;
27
+ }
28
+ /**
29
+ * Create an ActionRunnerContext wired to mini-program platform APIs.
30
+ *
31
+ * @example
32
+ * ```ts
33
+ * const adapter = new AlipayAdapter();
34
+ * const ctx = createMiniProgramActionContext(adapter, {
35
+ * setVariable: (key, value) => { variables[key] = value; rerender(); },
36
+ * emit: (event, payload) => triggerEvent(event, payload),
37
+ * });
38
+ * await runActionSteps(steps, ctx);
39
+ * ```
40
+ */
41
+ declare function createMiniProgramActionContext(adapter: MiniProgramAdapter, options?: MiniProgramActionContextOptions): ActionRunnerContext;
42
+
43
+ export { createMiniProgramActionContext };
44
+ export type { MiniProgramActionContextOptions };
@@ -0,0 +1,71 @@
1
+ /**
2
+ * Mini-Program Action Context Factory
3
+ *
4
+ * Creates an ActionRunnerContext that bridges core action execution
5
+ * with mini-program platform APIs via the MiniProgramAdapter.
6
+ *
7
+ * Mirrors the web-side `createWebActionContext` but routes calls
8
+ * through the adapter instead of browser globals.
9
+ */
10
+ // ─── Factory ─────────────────────────────────────────────────────
11
+ /**
12
+ * Create an ActionRunnerContext wired to mini-program platform APIs.
13
+ *
14
+ * @example
15
+ * ```ts
16
+ * const adapter = new AlipayAdapter();
17
+ * const ctx = createMiniProgramActionContext(adapter, {
18
+ * setVariable: (key, value) => { variables[key] = value; rerender(); },
19
+ * emit: (event, payload) => triggerEvent(event, payload),
20
+ * });
21
+ * await runActionSteps(steps, ctx);
22
+ * ```
23
+ */
24
+ function createMiniProgramActionContext(adapter, options = {}) {
25
+ return {
26
+ fetch: async (url, init) => {
27
+ // Convert standard fetch interface to mini-program adapter request
28
+ const response = await adapter.request({
29
+ url,
30
+ method: init?.method ?? 'GET',
31
+ headers: init?.headers,
32
+ data: init?.body ? JSON.parse(init.body) : undefined,
33
+ });
34
+ // Wrap as a fetch-compatible Response
35
+ return {
36
+ ok: response.statusCode >= 200 && response.statusCode < 300,
37
+ status: response.statusCode,
38
+ headers: new Headers(response.headers ?? {}),
39
+ json: async () => response.data,
40
+ text: async () => JSON.stringify(response.data),
41
+ };
42
+ },
43
+ showToast: (message, level, duration) => {
44
+ adapter.showToast({
45
+ title: message,
46
+ icon: level === 'success' ? 'success' : level === 'error' ? 'error' : 'none',
47
+ duration: duration ?? 2000,
48
+ });
49
+ },
50
+ navigate: (url) => {
51
+ adapter.navigateTo({ url });
52
+ },
53
+ setVariable: options.setVariable,
54
+ emit: options.emit,
55
+ copyText: options.copyText ?? ((text) => {
56
+ // Fallback to adapter's copyText if available
57
+ if ('copyText' in adapter && typeof adapter.copyText === 'function') {
58
+ adapter.copyText(text);
59
+ }
60
+ else {
61
+ console.warn('[MiniProgram ActionContext] No clipboard API available');
62
+ }
63
+ }),
64
+ variables: options.variables,
65
+ botId: options.botId,
66
+ abortSignal: options.abortSignal,
67
+ };
68
+ }
69
+
70
+ export { createMiniProgramActionContext };
71
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -0,0 +1,22 @@
1
+ import { MiniProgramAdapter, MiniProgramRequestOptions, MiniProgramResponse, MiniProgramToastOptions, MiniProgramNavigateOptions, MiniProgramSystemInfo } from './index.js';
2
+
3
+ /**
4
+ * Alipay Mini-Program Adapter
5
+ *
6
+ * Implements MiniProgramAdapter for Alipay (支付宝) / DingTalk mini-programs.
7
+ * Uses the `my.*` global API.
8
+ */
9
+
10
+ declare class AlipayAdapter implements MiniProgramAdapter {
11
+ readonly platform: "alipay";
12
+ request(options: MiniProgramRequestOptions): Promise<MiniProgramResponse>;
13
+ showToast(options: MiniProgramToastOptions): void;
14
+ navigateTo(options: MiniProgramNavigateOptions): void;
15
+ getSystemInfo(): MiniProgramSystemInfo;
16
+ /**
17
+ * Copy text to clipboard (Alipay-specific).
18
+ */
19
+ copyText(text: string): Promise<void>;
20
+ }
21
+
22
+ export { AlipayAdapter };
@@ -0,0 +1,66 @@
1
+ /**
2
+ * Alipay Mini-Program Adapter
3
+ *
4
+ * Implements MiniProgramAdapter for Alipay (支付宝) / DingTalk mini-programs.
5
+ * Uses the `my.*` global API.
6
+ */
7
+ // ─── Adapter Implementation ──────────────────────────────────────
8
+ class AlipayAdapter {
9
+ constructor() {
10
+ this.platform = 'alipay';
11
+ }
12
+ request(options) {
13
+ return new Promise((resolve, reject) => {
14
+ my.request({
15
+ url: options.url,
16
+ method: options.method ?? 'GET',
17
+ headers: options.headers,
18
+ data: options.data,
19
+ success(res) {
20
+ resolve({
21
+ statusCode: res.status,
22
+ data: res.data,
23
+ headers: res.headers,
24
+ });
25
+ },
26
+ fail(err) {
27
+ reject(err);
28
+ },
29
+ });
30
+ });
31
+ }
32
+ showToast(options) {
33
+ my.showToast({
34
+ content: options.title,
35
+ type: options.icon === 'success' ? 'success' : options.icon === 'error' ? 'fail' : 'none',
36
+ duration: options.duration ?? 2000,
37
+ });
38
+ }
39
+ navigateTo(options) {
40
+ my.navigateTo({ url: options.url });
41
+ }
42
+ getSystemInfo() {
43
+ const info = my.getSystemInfoSync();
44
+ return {
45
+ screenWidth: info.screenWidth,
46
+ screenHeight: info.screenHeight,
47
+ pixelRatio: info.pixelRatio,
48
+ platform: info.platform,
49
+ };
50
+ }
51
+ /**
52
+ * Copy text to clipboard (Alipay-specific).
53
+ */
54
+ copyText(text) {
55
+ return new Promise((resolve, reject) => {
56
+ my.setClipboardData({
57
+ text,
58
+ success: () => resolve(),
59
+ fail: (err) => reject(err),
60
+ });
61
+ });
62
+ }
63
+ }
64
+
65
+ export { AlipayAdapter };
66
+ //# sourceMappingURL=alipay.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"alipay.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -0,0 +1,53 @@
1
+ export { AlipayAdapter } from './alipay.js';
2
+ export { WeChatAdapter } from './wechat.js';
3
+
4
+ /**
5
+ * Platform adapter — abstracts mini-program platform differences.
6
+ *
7
+ * Different mini-program platforms (WeChat, Alipay, DingTalk) have
8
+ * different APIs for HTTP requests, navigation, toast, etc.
9
+ * This adapter provides a unified interface.
10
+ */
11
+ interface MiniProgramAdapter {
12
+ /** Platform name identifier */
13
+ platform: 'wechat' | 'alipay' | 'dingtalk' | string;
14
+ /** Make an HTTP request */
15
+ request(options: MiniProgramRequestOptions): Promise<MiniProgramResponse>;
16
+ /** Show a toast message */
17
+ showToast(options: MiniProgramToastOptions): void;
18
+ /** Navigate to a page */
19
+ navigateTo(options: MiniProgramNavigateOptions): void;
20
+ /** Get system info (screen size, platform, etc.) */
21
+ getSystemInfo(): MiniProgramSystemInfo;
22
+ }
23
+ interface MiniProgramRequestOptions {
24
+ url: string;
25
+ method?: 'GET' | 'POST' | 'PUT' | 'DELETE';
26
+ headers?: Record<string, string>;
27
+ data?: unknown;
28
+ }
29
+ interface MiniProgramResponse {
30
+ statusCode: number;
31
+ data: unknown;
32
+ headers?: Record<string, string>;
33
+ }
34
+ interface MiniProgramToastOptions {
35
+ title: string;
36
+ icon?: 'success' | 'error' | 'loading' | 'none';
37
+ duration?: number;
38
+ }
39
+ interface MiniProgramNavigateOptions {
40
+ url: string;
41
+ }
42
+ interface MiniProgramSystemInfo {
43
+ /** Screen width in px */
44
+ screenWidth: number;
45
+ /** Screen height in px */
46
+ screenHeight: number;
47
+ /** Device pixel ratio */
48
+ pixelRatio: number;
49
+ /** Platform (ios / android / devtools) */
50
+ platform: string;
51
+ }
52
+
53
+ export type { MiniProgramAdapter, MiniProgramNavigateOptions, MiniProgramRequestOptions, MiniProgramResponse, MiniProgramSystemInfo, MiniProgramToastOptions };
@@ -0,0 +1,3 @@
1
+ export { AlipayAdapter } from './alipay.js';
2
+ export { WeChatAdapter } from './wechat.js';
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -0,0 +1,22 @@
1
+ import { MiniProgramAdapter, MiniProgramRequestOptions, MiniProgramResponse, MiniProgramToastOptions, MiniProgramNavigateOptions, MiniProgramSystemInfo } from './index.js';
2
+
3
+ /**
4
+ * WeChat Mini-Program Adapter
5
+ *
6
+ * Implements MiniProgramAdapter for WeChat (微信) mini-programs.
7
+ * Uses the `wx.*` global API.
8
+ */
9
+
10
+ declare class WeChatAdapter implements MiniProgramAdapter {
11
+ readonly platform: "wechat";
12
+ request(options: MiniProgramRequestOptions): Promise<MiniProgramResponse>;
13
+ showToast(options: MiniProgramToastOptions): void;
14
+ navigateTo(options: MiniProgramNavigateOptions): void;
15
+ getSystemInfo(): MiniProgramSystemInfo;
16
+ /**
17
+ * Copy text to clipboard (WeChat-specific).
18
+ */
19
+ copyText(text: string): Promise<void>;
20
+ }
21
+
22
+ export { WeChatAdapter };
@@ -0,0 +1,66 @@
1
+ /**
2
+ * WeChat Mini-Program Adapter
3
+ *
4
+ * Implements MiniProgramAdapter for WeChat (微信) mini-programs.
5
+ * Uses the `wx.*` global API.
6
+ */
7
+ // ─── Adapter Implementation ──────────────────────────────────────
8
+ class WeChatAdapter {
9
+ constructor() {
10
+ this.platform = 'wechat';
11
+ }
12
+ request(options) {
13
+ return new Promise((resolve, reject) => {
14
+ wx.request({
15
+ url: options.url,
16
+ method: options.method ?? 'GET',
17
+ header: options.headers,
18
+ data: options.data,
19
+ success(res) {
20
+ resolve({
21
+ statusCode: res.statusCode,
22
+ data: res.data,
23
+ headers: res.header,
24
+ });
25
+ },
26
+ fail(err) {
27
+ reject(err);
28
+ },
29
+ });
30
+ });
31
+ }
32
+ showToast(options) {
33
+ wx.showToast({
34
+ title: options.title,
35
+ icon: options.icon === 'success' ? 'success' : options.icon === 'error' ? 'error' : 'none',
36
+ duration: options.duration ?? 2000,
37
+ });
38
+ }
39
+ navigateTo(options) {
40
+ wx.navigateTo({ url: options.url });
41
+ }
42
+ getSystemInfo() {
43
+ const info = wx.getSystemInfoSync();
44
+ return {
45
+ screenWidth: info.screenWidth,
46
+ screenHeight: info.screenHeight,
47
+ pixelRatio: info.pixelRatio,
48
+ platform: info.platform,
49
+ };
50
+ }
51
+ /**
52
+ * Copy text to clipboard (WeChat-specific).
53
+ */
54
+ copyText(text) {
55
+ return new Promise((resolve, reject) => {
56
+ wx.setClipboardData({
57
+ data: text,
58
+ success: () => resolve(),
59
+ fail: (err) => reject(err),
60
+ });
61
+ });
62
+ }
63
+ }
64
+
65
+ export { WeChatAdapter };
66
+ //# sourceMappingURL=wechat.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wechat.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -0,0 +1,61 @@
1
+ .card-button {
2
+ display: flex;
3
+ align-items: center;
4
+ justify-content: center;
5
+ border-radius: 8rpx;
6
+ padding: 16rpx 32rpx;
7
+ box-sizing: border-box;
8
+ cursor: pointer;
9
+ }
10
+
11
+ .card-button--primary {
12
+ background-color: #1677FF;
13
+ color: #FFFFFF;
14
+ }
15
+
16
+ .card-button--secondary {
17
+ background-color: #FFFFFF;
18
+ color: #1677FF;
19
+ border: 1rpx solid #1677FF;
20
+ }
21
+
22
+ .card-button--text {
23
+ background-color: transparent;
24
+ color: #1677FF;
25
+ padding: 0;
26
+ }
27
+
28
+ .card-button--danger {
29
+ background-color: #FF4D4F;
30
+ color: #FFFFFF;
31
+ }
32
+
33
+ .card-button--small {
34
+ padding: 8rpx 16rpx;
35
+ font-size: 24rpx;
36
+ }
37
+
38
+ .card-button--medium {
39
+ padding: 16rpx 32rpx;
40
+ font-size: 28rpx;
41
+ }
42
+
43
+ .card-button--large {
44
+ padding: 24rpx 48rpx;
45
+ font-size: 32rpx;
46
+ }
47
+
48
+ .card-button--disabled {
49
+ opacity: 0.4;
50
+ pointer-events: none;
51
+ }
52
+
53
+ .card-button__icon {
54
+ width: 32rpx;
55
+ height: 32rpx;
56
+ margin-right: 8rpx;
57
+ }
58
+
59
+ .card-button__text {
60
+ white-space: nowrap;
61
+ }
@@ -0,0 +1,9 @@
1
+ <!-- card-button: Alipay template -->
2
+ <view
3
+ class="card-button card-button--{{node.props.variant || 'primary'}} card-button--{{node.props.size || 'medium'}} {{node.disabled ? 'card-button--disabled' : ''}}"
4
+ style="{{node.props._styleString || ''}}"
5
+ onTap="onTap"
6
+ >
7
+ <image a:if="{{node.props.icon}}" class="card-button__icon" src="{{node.props.icon}}" />
8
+ <text class="card-button__text">{{node.props.content || node.props.label}}</text>
9
+ </view>
@@ -0,0 +1,23 @@
1
+ import { MiniProgramRenderNode } from '../../renderer/index.js';
2
+
3
+ /**
4
+ * card-button — Button component for mini-program.
5
+ * Supports variants: primary, secondary, text, danger.
6
+ */
7
+
8
+ interface CardButtonInstance {
9
+ props: {
10
+ node: MiniProgramRenderNode | null;
11
+ };
12
+ triggerEvent(name: string, detail?: any): void;
13
+ }
14
+ declare function createCardButtonComponent(): {
15
+ props: {
16
+ node: null;
17
+ };
18
+ methods: {
19
+ onTap(this: CardButtonInstance): void;
20
+ };
21
+ };
22
+
23
+ export { createCardButtonComponent };
@@ -0,0 +1,27 @@
1
+ /**
2
+ * card-button — Button component for mini-program.
3
+ * Supports variants: primary, secondary, text, danger.
4
+ */
5
+ function createCardButtonComponent() {
6
+ return {
7
+ props: {
8
+ node: null,
9
+ },
10
+ methods: {
11
+ onTap() {
12
+ const node = this.props.node;
13
+ if (!node || node.disabled)
14
+ return;
15
+ if (!node.events.includes('onClick'))
16
+ return;
17
+ this.triggerEvent('event', {
18
+ nodeId: node.id,
19
+ eventName: 'onClick',
20
+ });
21
+ },
22
+ },
23
+ };
24
+ }
25
+
26
+ export { createCardButtonComponent };
27
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -0,0 +1,9 @@
1
+ <!-- card-button: WeChat template -->
2
+ <view
3
+ class="card-button card-button--{{node.props.variant || 'primary'}} card-button--{{node.props.size || 'medium'}} {{node.disabled ? 'card-button--disabled' : ''}}"
4
+ style="{{node.props._styleString || ''}}"
5
+ bindtap="onTap"
6
+ >
7
+ <image wx:if="{{node.props.icon}}" class="card-button__icon" src="{{node.props.icon}}" />
8
+ <text class="card-button__text">{{node.props.content || node.props.label}}</text>
9
+ </view>
@@ -0,0 +1,8 @@
1
+ .card-divider {
2
+ border-top: 1rpx solid #E8E8E8;
3
+ width: 100%;
4
+ }
5
+
6
+ .card-divider--dashed {
7
+ border-top-style: dashed;
8
+ }
@@ -0,0 +1,5 @@
1
+ <!-- card-divider: Alipay template -->
2
+ <view
3
+ class="card-divider {{node.props.dashed ? 'card-divider--dashed' : ''}}"
4
+ style="margin: {{node.props.margin || '16rpx 0'}}; border-color: {{node.props.color || '#E8E8E8'}};"
5
+ />
@@ -0,0 +1,11 @@
1
+ /**
2
+ * card-divider — Divider component for mini-program.
3
+ * A simple horizontal line separator.
4
+ */
5
+ declare function createCardDividerComponent(): {
6
+ props: {
7
+ node: null;
8
+ };
9
+ };
10
+
11
+ export { createCardDividerComponent };
@@ -0,0 +1,14 @@
1
+ /**
2
+ * card-divider — Divider component for mini-program.
3
+ * A simple horizontal line separator.
4
+ */
5
+ function createCardDividerComponent() {
6
+ return {
7
+ props: {
8
+ node: null,
9
+ },
10
+ };
11
+ }
12
+
13
+ export { createCardDividerComponent };
14
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -0,0 +1,5 @@
1
+ <!-- card-divider: WeChat template -->
2
+ <view
3
+ class="card-divider {{node.props.dashed ? 'card-divider--dashed' : ''}}"
4
+ style="margin: {{node.props.margin || '16rpx 0'}}; border-color: {{node.props.color || '#E8E8E8'}};"
5
+ />
@@ -0,0 +1,7 @@
1
+ .card-image {
2
+ display: flex;
3
+ }
4
+
5
+ .card-image__img {
6
+ display: block;
7
+ }
@@ -0,0 +1,9 @@
1
+ <!-- card-image: Alipay template -->
2
+ <view class="card-image" style="{{node.props._styleString || ''}}" onTap="onTap">
3
+ <image
4
+ class="card-image__img"
5
+ src="{{node.props.src}}"
6
+ mode="{{node.props.objectFit === 'cover' ? 'aspectFill' : node.props.objectFit === 'contain' ? 'aspectFit' : 'widthFix'}}"
7
+ style="width: {{node.props.width || '100%'}}; height: {{node.props.height || 'auto'}}; border-radius: {{node.props.borderRadius || '0'}};"
8
+ />
9
+ </view>
@@ -0,0 +1,22 @@
1
+ import { MiniProgramRenderNode } from '../../renderer/index.js';
2
+
3
+ /**
4
+ * card-image — Image component for mini-program.
5
+ */
6
+
7
+ interface CardImageInstance {
8
+ props: {
9
+ node: MiniProgramRenderNode | null;
10
+ };
11
+ triggerEvent(name: string, detail?: any): void;
12
+ }
13
+ declare function createCardImageComponent(): {
14
+ props: {
15
+ node: null;
16
+ };
17
+ methods: {
18
+ onTap(this: CardImageInstance): void;
19
+ };
20
+ };
21
+
22
+ export { createCardImageComponent };
@@ -0,0 +1,23 @@
1
+ /**
2
+ * card-image — Image component for mini-program.
3
+ */
4
+ function createCardImageComponent() {
5
+ return {
6
+ props: {
7
+ node: null,
8
+ },
9
+ methods: {
10
+ onTap() {
11
+ if (!this.props.node?.events.includes('onClick'))
12
+ return;
13
+ this.triggerEvent('event', {
14
+ nodeId: this.props.node.id,
15
+ eventName: 'onClick',
16
+ });
17
+ },
18
+ },
19
+ };
20
+ }
21
+
22
+ export { createCardImageComponent };
23
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -0,0 +1,9 @@
1
+ <!-- card-image: WeChat template -->
2
+ <view class="card-image" style="{{node.props._styleString || ''}}" bindtap="onTap">
3
+ <image
4
+ class="card-image__img"
5
+ src="{{node.props.src}}"
6
+ mode="{{node.props.objectFit === 'cover' ? 'aspectFill' : node.props.objectFit === 'contain' ? 'aspectFit' : 'widthFix'}}"
7
+ style="width: {{node.props.width || '100%'}}; height: {{node.props.height || 'auto'}}; border-radius: {{node.props.borderRadius || '0'}};"
8
+ />
9
+ </view>