cardbuddy 0.11.0 → 0.12.1
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.
- package/README.md +46 -5
- package/dist/cli.js +51 -1
- package/dist/config.js +51 -16
- package/dist/core.js +2 -2
- package/dist/init.js +425 -0
- package/dist/preview-editor/assets/index-CHuGGIR3.js +276 -0
- package/dist/preview-editor/assets/{index-B4VZgNSK.css → index-CQScMhyg.css} +1 -1
- package/dist/preview-editor/index.html +2 -2
- package/dist/standalone.js +8 -0
- package/dist/vendored/mcp/client.mjs +537 -0
- package/dist/vendored/mcp/tools.mjs +268 -0
- package/dist/vendored/preview/assets/default-image.png +0 -0
- package/dist/{server-core → vendored/server/core}/ai-chat.js +82 -38
- package/dist/{server-core → vendored/server/core}/browser.js +1 -1
- package/dist/{server-core → vendored/server/core}/cardSave.js +8 -3
- package/dist/{server-core → vendored/server/core}/cardSync.js +6 -14
- package/dist/{server-core → vendored/server/core}/cardValidate.js +11 -8
- package/dist/{server-core → vendored/server/core}/index.js +5 -3
- package/dist/vendored/server/core/skillPaths.js +124 -0
- package/dist/{server-core → vendored/server/core}/sliceUpload.js +5 -8
- package/dist/vendored/skills/README.md +93 -0
- package/dist/vendored/skills/card-doctor/SKILL.md +52 -0
- package/dist/vendored/skills/card-skill-trainer/SKILL.md +312 -0
- package/dist/vendored/skills/card-skill-trainer/baselines/v3-r038n.json +43 -0
- package/dist/vendored/skills/card-skill-trainer/baselines/v3-r039n.json +47 -0
- package/dist/vendored/skills/card-skill-trainer/baselines/v3-r050n.json +48 -0
- package/dist/vendored/skills/card-skill-trainer/scripts/build_dataset.py +472 -0
- package/dist/vendored/skills/card-skill-trainer/scripts/build_sample.mjs +162 -0
- package/dist/vendored/skills/card-skill-trainer/scripts/diagnose_case.mjs +241 -0
- package/dist/vendored/skills/card-skill-trainer/scripts/lib/scoring.mjs +525 -0
- package/dist/vendored/skills/card-skill-trainer/scripts/round_diff.mjs +133 -0
- package/dist/vendored/skills/card-skill-trainer/scripts/run_round.mjs +1043 -0
- package/dist/vendored/skills/card-skill-trainer/scripts/score_round.mjs +195 -0
- package/dist/vendored/skills/card-skill-trainer/scripts/test_missing_slice.py +122 -0
- package/dist/vendored/skills/dsl-card-ai/SKILL.md +191 -0
- package/dist/vendored/skills/dsl-card-generator/SKILL.md +480 -0
- package/dist/vendored/skills/dsl-card-generator/config/render-contract.json +11 -0
- package/dist/vendored/skills/dsl-card-generator/references/amount_formatting.md +138 -0
- package/dist/vendored/skills/dsl-card-generator/references/card_index.json +1597 -0
- package/dist/vendored/skills/dsl-card-generator/references/card_templates.json +384 -0
- package/dist/vendored/skills/dsl-card-generator/references/card_to_summary.md +56 -0
- package/dist/vendored/skills/dsl-card-generator/references/component_rules.md +76 -0
- package/dist/vendored/skills/dsl-card-generator/references/component_specs.md +393 -0
- package/dist/vendored/skills/dsl-card-generator/references/dsl_structure.md +208 -0
- package/dist/vendored/skills/dsl-card-generator/references/event_patterns.md +287 -0
- package/dist/vendored/skills/dsl-card-generator/references/expression_engine.md +121 -0
- package/dist/vendored/skills/dsl-card-generator/references/field_name_dict.json +34 -0
- package/dist/vendored/skills/dsl-card-generator/references/field_naming.md +101 -0
- package/dist/vendored/skills/dsl-card-generator/references/generation_pitfalls.md +928 -0
- package/dist/vendored/skills/dsl-card-generator/references/handcrafted/README.md +69 -0
- package/dist/vendored/skills/dsl-card-generator/references/handcrafted/examples_index.json +2967 -0
- package/dist/vendored/skills/dsl-card-generator/references/handcrafted/patterns.json +2835 -0
- package/dist/vendored/skills/dsl-card-generator/references/handcrafted/recipes_v2.json +648 -0
- package/dist/vendored/skills/dsl-card-generator/references/handcrafted/recipes_v2_schema.md +295 -0
- package/dist/vendored/skills/dsl-card-generator/references/image_diff.md +48 -0
- package/dist/vendored/skills/dsl-card-generator/references/image_to_card.md +129 -0
- package/dist/vendored/skills/dsl-card-generator/references/ir-format.md +212 -0
- package/dist/vendored/skills/dsl-card-generator/references/message-center-pattern.md +149 -0
- package/dist/vendored/skills/dsl-card-generator/references/platform_jsapi.md +196 -0
- package/dist/vendored/skills/dsl-card-generator/references/previewer_contract.md +54 -0
- package/dist/vendored/skills/dsl-card-generator/references/quickref.md +197 -0
- package/dist/vendored/skills/dsl-card-generator/references/recipe_snippets/absolute-badge.json +84 -0
- package/dist/vendored/skills/dsl-card-generator/references/recipe_snippets/accordion-group-toggle.json +18 -0
- package/dist/vendored/skills/dsl-card-generator/references/recipe_snippets/alertCard-pair.json +12 -0
- package/dist/vendored/skills/dsl-card-generator/references/recipe_snippets/alertDialog-call.json +12 -0
- package/dist/vendored/skills/dsl-card-generator/references/recipe_snippets/canvas-countdown.json +15 -0
- package/dist/vendored/skills/dsl-card-generator/references/recipe_snippets/canvas-donut.json +15 -0
- package/dist/vendored/skills/dsl-card-generator/references/recipe_snippets/canvas-gauge-score.json +11 -0
- package/dist/vendored/skills/dsl-card-generator/references/recipe_snippets/canvas-radar.json +10 -0
- package/dist/vendored/skills/dsl-card-generator/references/recipe_snippets/canvas-title-head.json +13 -0
- package/dist/vendored/skills/dsl-card-generator/references/recipe_snippets/globalSet.json +12 -0
- package/dist/vendored/skills/dsl-card-generator/references/recipe_snippets/label-col-modes.json +21 -0
- package/dist/vendored/skills/dsl-card-generator/references/recipe_snippets/list-expand-collapse.json +17 -0
- package/dist/vendored/skills/dsl-card-generator/references/recipe_snippets/money-format.json +11 -0
- package/dist/vendored/skills/dsl-card-generator/references/recipe_snippets/opacity-switch.json +130 -0
- package/dist/vendored/skills/dsl-card-generator/references/recipe_snippets/progress-bar.json +25 -0
- package/dist/vendored/skills/dsl-card-generator/references/recipe_snippets/tab-billMode.json +15 -0
- package/dist/vendored/skills/dsl-card-generator/references/recipe_snippets/title-underline-overlay.json +21 -0
- package/dist/vendored/skills/dsl-card-generator/references/recipes.md +797 -0
- package/dist/vendored/skills/dsl-card-generator/references/rules.md +235 -0
- package/dist/vendored/skills/dsl-card-generator/references/slices_convention.md +177 -0
- package/dist/vendored/skills/dsl-card-generator/references/spec_to_schema_patterns.md +609 -0
- package/dist/vendored/skills/dsl-card-generator/references/ui_fidelity_rules.md +131 -0
- package/dist/vendored/skills/dsl-card-generator/scripts/add_component.mjs +118 -0
- package/dist/vendored/skills/dsl-card-generator/scripts/analyze_component_usage.mjs +153 -0
- package/dist/vendored/skills/dsl-card-generator/scripts/apply_opacity_pattern.mjs +343 -0
- package/dist/vendored/skills/dsl-card-generator/scripts/build_card_index.mjs +108 -0
- package/dist/vendored/skills/dsl-card-generator/scripts/build_card_templates.mjs +190 -0
- package/dist/vendored/skills/dsl-card-generator/scripts/check_fidelity.mjs +257 -0
- package/dist/vendored/skills/dsl-card-generator/scripts/check_magic_values.mjs +79 -0
- package/dist/vendored/skills/dsl-card-generator/scripts/crop_slices.mjs +98 -0
- package/dist/vendored/skills/dsl-card-generator/scripts/describe_card.mjs +265 -0
- package/dist/vendored/skills/dsl-card-generator/scripts/diff_bands.mjs +257 -0
- package/dist/vendored/skills/dsl-card-generator/scripts/diff_card.mjs +316 -0
- package/dist/vendored/skills/dsl-card-generator/scripts/expand_ir.mjs +873 -0
- package/dist/vendored/skills/dsl-card-generator/scripts/extract_handcrafted.py +1199 -0
- package/dist/vendored/skills/dsl-card-generator/scripts/extract_subtree.mjs +191 -0
- package/dist/vendored/skills/dsl-card-generator/scripts/generate_cards.mjs +389 -0
- package/dist/vendored/skills/dsl-card-generator/scripts/inventory_schemas.py +160 -0
- package/dist/vendored/skills/dsl-card-generator/scripts/iterate.mjs +700 -0
- package/dist/vendored/skills/dsl-card-generator/scripts/lib/design_image.mjs +56 -0
- package/dist/vendored/skills/dsl-card-generator/scripts/lib/design_sample.mjs +328 -0
- package/dist/vendored/skills/dsl-card-generator/scripts/lib/layout-tokens.mjs +79 -0
- package/dist/vendored/skills/dsl-card-generator/scripts/lib/paths.mjs +103 -0
- package/dist/vendored/skills/dsl-card-generator/scripts/lib/scaffold.mjs +575 -0
- package/dist/vendored/skills/dsl-card-generator/scripts/lib/slicePath.mjs +81 -0
- package/dist/vendored/skills/dsl-card-generator/scripts/lib/slice_dedupe.mjs +147 -0
- package/dist/vendored/skills/dsl-card-generator/scripts/lint_autofix.mjs +363 -0
- package/dist/vendored/skills/dsl-card-generator/scripts/lint_card.mjs +1399 -0
- package/dist/vendored/skills/dsl-card-generator/scripts/preflight.mjs +249 -0
- package/dist/vendored/skills/dsl-card-generator/scripts/register_card_template.mjs +208 -0
- package/dist/vendored/skills/dsl-card-generator/scripts/render_baseline.mjs +231 -0
- package/dist/vendored/skills/dsl-card-generator/scripts/render_card.mjs +801 -0
- package/dist/vendored/skills/dsl-card-generator/scripts/render_diff.mjs +239 -0
- package/dist/vendored/skills/dsl-card-generator/scripts/resolve_card_template.mjs +73 -0
- package/dist/vendored/skills/dsl-card-generator/scripts/route_input.mjs +447 -0
- package/dist/vendored/skills/dsl-card-generator/scripts/scaffold_card.mjs +81 -0
- package/dist/vendored/skills/dsl-card-generator/scripts/slices_normalize.mjs +316 -0
- package/dist/vendored/skills/dsl-card-generator/scripts/spec_audit.mjs +462 -0
- package/dist/vendored/skills/dsl-card-generator/scripts/spec_to_schema_v3.mjs +7735 -0
- package/dist/vendored/skills/dsl-card-generator/scripts/spec_tree.mjs +355 -0
- package/dist/vendored/skills/dsl-card-generator/scripts/validate_all_schemas.py +71 -0
- package/dist/vendored/skills/dsl-card-generator/vendor/preview/assets/default-image-wzZYQ86K.png +0 -0
- package/dist/vendored/skills/dsl-card-generator/vendor/preview/assets/standalone-C9k-07y7.css +1 -0
- package/dist/vendored/skills/dsl-card-generator/vendor/preview/assets/standalone-oFRM4f4V.js +55 -0
- package/dist/vendored/skills/dsl-card-generator/vendor/preview/assets/svg-symbols-B2exBrAr.svg +118 -0
- package/dist/vendored/skills/dsl-card-generator/vendor/preview/meta/component-meta.json +2714 -0
- package/dist/vendored/skills/dsl-card-generator/vendor/preview/meta/directive-meta.json +40 -0
- package/dist/vendored/skills/dsl-card-generator/vendor/preview/meta/style-meta.json +1086 -0
- package/dist/vendored/{standalone.html → skills/dsl-card-generator/vendor/preview/standalone.html} +2 -1
- package/dist/vendored/skills/finmall-card-sync/SKILL.md +262 -0
- package/dist/vendored/skills/finmall-session-navigator/SKILL.md +169 -0
- package/dist/vendored/skills/finmall-session-navigator/scripts/finmall_login.mjs +882 -0
- package/dist/vendored/skills/finmall-session-navigator/scripts/package-lock.json +59 -0
- package/dist/vendored/skills/finmall-session-navigator/scripts/package.json +10 -0
- package/dist/vendored/skills/finmall-session-navigator/scripts/session-manager.mjs +96 -0
- package/dist/vendored/skills/shared/README.md +55 -0
- package/dist/vendored/skills/shared/auth-model.md +79 -0
- package/dist/vendored/skills/sketch-spec-to-card/SKILL.md +329 -0
- package/dist/vendored/skills/sketch-spec-to-card/references/boundary.json +14 -0
- package/dist/vendored/skills/sketch-spec-to-card/references/card_refs.json +13 -0
- package/dist/vendored/skills/sketch-spec-to-card/references/spec-schema.md +103 -0
- package/dist/vendored/skills/sketch-spec-to-card/scripts/build_prompt.py +797 -0
- package/dist/vendored/skills/sketch-spec-to-card/scripts/card_refs.py +94 -0
- package/dist/vendored/skills/sketch-spec-to-card/scripts/cluster_states.py +706 -0
- package/dist/vendored/skills/sketch-spec-to-card/scripts/parse_meaxure.py +1781 -0
- package/dist/vendored/skills/sketch-spec-to-card/scripts/png_utils.py +318 -0
- package/dist/vendored/skills/sketch-spec-to-card/scripts/vision.py +1118 -0
- package/dist/vendored/templates/helloCard/data.json +10 -0
- package/dist/vendored/templates/helloCard/schema.json +238 -0
- package/dist/vendored/tools/link-skills.mjs +485 -0
- package/package.json +2 -1
- package/dist/preview-editor/assets/index-jl4YJzKv.js +0 -180
- package/dist/vendored/App.vue +0 -2858
- package/dist/vendored/ansi.js +0 -185
- package/dist/vendored/assets/apple-touch-icon.png +0 -0
- package/dist/vendored/assets/default-image.png +0 -0
- package/dist/vendored/assets/favicon-16.png +0 -0
- package/dist/vendored/assets/favicon-32.png +0 -0
- package/dist/vendored/assets/site-icon.png +0 -0
- package/dist/vendored/assets/svgIcons/icons.svg +0 -87
- package/dist/vendored/assets/svgIcons/index.js +0 -39
- package/dist/vendored/components/AiSettings.vue +0 -392
- package/dist/vendored/components/AlertCardInstance.vue +0 -58
- package/dist/vendored/components/AlertCardLayer.vue +0 -59
- package/dist/vendored/components/ApiCallPanel.vue +0 -127
- package/dist/vendored/components/ApiPayloadTree.vue +0 -201
- package/dist/vendored/components/AppToast.vue +0 -37
- package/dist/vendored/components/CardGallery.vue +0 -291
- package/dist/vendored/components/CardPreview.vue +0 -72
- package/dist/vendored/components/CardSelect.vue +0 -206
- package/dist/vendored/components/ChatComposer.vue +0 -413
- package/dist/vendored/components/ChatMessage.vue +0 -383
- package/dist/vendored/components/ChatPanel.vue +0 -937
- package/dist/vendored/components/ComponentPalette.vue +0 -301
- package/dist/vendored/components/ConfirmDialog.vue +0 -54
- package/dist/vendored/components/DatePickerOverlay.vue +0 -345
- package/dist/vendored/components/DebugPanel.vue +0 -1734
- package/dist/vendored/components/DeviceOverlay.vue +0 -70
- package/dist/vendored/components/Dropdown.vue +0 -193
- package/dist/vendored/components/EventEditor.vue +0 -273
- package/dist/vendored/components/HoverGuides.vue +0 -122
- package/dist/vendored/components/JsonTree.vue +0 -547
- package/dist/vendored/components/LogValue.vue +0 -52
- package/dist/vendored/components/MarkdownBody.vue +0 -64
- package/dist/vendored/components/NewCardDialog.vue +0 -132
- package/dist/vendored/components/NodeInspector.vue +0 -295
- package/dist/vendored/components/NumberStepper.vue +0 -125
- package/dist/vendored/components/PickerOverlay.vue +0 -131
- package/dist/vendored/components/PropControl.vue +0 -245
- package/dist/vendored/components/PropTree.vue +0 -128
- package/dist/vendored/components/RemotePreview.vue +0 -173
- package/dist/vendored/components/SelectionOverlay.vue +0 -105
- package/dist/vendored/components/StructureTree.vue +0 -1002
- package/dist/vendored/components/Switch.vue +0 -38
- package/dist/vendored/components/setters/SetBgPosition.vue +0 -64
- package/dist/vendored/components/setters/SetBgSize.vue +0 -90
- package/dist/vendored/components/setters/SetCode.vue +0 -198
- package/dist/vendored/components/setters/SetColor.vue +0 -244
- package/dist/vendored/components/setters/SetCustomSelect.vue +0 -58
- package/dist/vendored/components/setters/SetExpr.vue +0 -107
- package/dist/vendored/components/setters/SetGradient.vue +0 -125
- package/dist/vendored/components/setters/SetGrid9.vue +0 -68
- package/dist/vendored/components/setters/SetIconSelect.vue +0 -67
- package/dist/vendored/components/setters/SetIfForm.vue +0 -61
- package/dist/vendored/components/setters/SetImage.vue +0 -43
- package/dist/vendored/components/setters/SetList.vue +0 -139
- package/dist/vendored/components/setters/SetNumber.vue +0 -118
- package/dist/vendored/components/setters/SetNumberStyle.vue +0 -113
- package/dist/vendored/components/setters/SetPadding.vue +0 -77
- package/dist/vendored/components/setters/SetSegment.vue +0 -160
- package/dist/vendored/components/setters/SetSelect.vue +0 -51
- package/dist/vendored/components/setters/SetSwitch.vue +0 -49
- package/dist/vendored/components/setters/SetText.vue +0 -52
- package/dist/vendored/components/setters/props.js +0 -23
- package/dist/vendored/fidelity/baseline-messageOverview.json +0 -87
- package/dist/vendored/fidelity/calibration.json +0 -29
- package/dist/vendored/fidelity/fidelity-messageOverview-after.html +0 -114
- package/dist/vendored/fidelity/fidelity-messageOverview-after.json +0 -272
- package/dist/vendored/fidelity/fidelity-messageOverview.html +0 -185
- package/dist/vendored/fidelity/fidelity-messageOverview.json +0 -336
- package/dist/vendored/fidelity/fidelity-messageOverview_v2.html +0 -262
- package/dist/vendored/fidelity/fidelity-messageOverview_v2.json +0 -502
- package/dist/vendored/fidelity/fidelity-messageOverview_v3.html +0 -201
- package/dist/vendored/fidelity/fidelity-messageOverview_v3.json +0 -417
- package/dist/vendored/fidelity/fidelity-messageOverview_visual.html +0 -125
- package/dist/vendored/fidelity/fidelity-messageOverview_visual.json +0 -338
- package/dist/vendored/index.html +0 -16
- package/dist/vendored/main.js +0 -37
- package/dist/vendored/runtime/ai-api.js +0 -165
- package/dist/vendored/runtime/alert-card.js +0 -125
- package/dist/vendored/runtime/app-toast.js +0 -33
- package/dist/vendored/runtime/clipboard-node.js +0 -78
- package/dist/vendored/runtime/clipboard.js +0 -29
- package/dist/vendored/runtime/event-model.js +0 -300
- package/dist/vendored/runtime/hoverGuide.js +0 -31
- package/dist/vendored/runtime/jsapi-mock.js +0 -256
- package/dist/vendored/runtime/markdown.js +0 -140
- package/dist/vendored/runtime/node-model.js +0 -217
- package/dist/vendored/skills/.manifest.json +0 -1101
- package/dist/vendored/standalone-main.js +0 -36
- package/dist/vendored/styles/ai-chat.css +0 -1850
- package/dist/vendored/styles/app.css +0 -3648
- package/dist/vendored/styles/card-gallery.css +0 -285
- package/dist/vendored/styles/card-select.css +0 -288
- package/dist/vendored/styles/components.css +0 -383
- package/dist/vendored/styles/dropdown.css +0 -324
- package/dist/vendored/styles/json-tree.css +0 -308
- package/dist/vendored/styles/node-inspector.css +0 -800
- package/dist/vendored/styles/setters.css +0 -1050
- package/dist/vendored/styles/standalone.css +0 -27
- package/dist/vendored/styles/structure-tree.css +0 -460
- /package/dist/vendored/{api.js → preview/api.js} +0 -0
- /package/dist/vendored/{assets → preview/assets}/svg-symbols.svg +0 -0
- /package/dist/vendored/{components → preview/components}/AbsoluteLayout.vue +0 -0
- /package/dist/vendored/{components → preview/components}/Button.vue +0 -0
- /package/dist/vendored/{components → preview/components}/Canvas.vue +0 -0
- /package/dist/vendored/{components → preview/components}/CheckGroup.vue +0 -0
- /package/dist/vendored/{components → preview/components}/Column.vue +0 -0
- /package/dist/vendored/{components → preview/components}/CustomPlaceholder.vue +0 -0
- /package/dist/vendored/{components → preview/components}/Divider.vue +0 -0
- /package/dist/vendored/{components → preview/components}/GridLayout.vue +0 -0
- /package/dist/vendored/{components → preview/components}/Icon.vue +0 -0
- /package/dist/vendored/{components → preview/components}/Image.vue +0 -0
- /package/dist/vendored/{components → preview/components}/Input.vue +0 -0
- /package/dist/vendored/{components → preview/components}/ListLayout.vue +0 -0
- /package/dist/vendored/{components → preview/components}/Map.vue +0 -0
- /package/dist/vendored/{components → preview/components}/MultiColumn.vue +0 -0
- /package/dist/vendored/{components → preview/components}/MultiText.vue +0 -0
- /package/dist/vendored/{components → preview/components}/ProgressSlider.vue +0 -0
- /package/dist/vendored/{components → preview/components}/RadioButton.vue +0 -0
- /package/dist/vendored/{components → preview/components}/RenderTree.vue +0 -0
- /package/dist/vendored/{components → preview/components}/Root.vue +0 -0
- /package/dist/vendored/{components → preview/components}/Row.vue +0 -0
- /package/dist/vendored/{components → preview/components}/SvgCode.vue +0 -0
- /package/dist/vendored/{components → preview/components}/SvgSymbols.vue +0 -0
- /package/dist/vendored/{components → preview/components}/Text.vue +0 -0
- /package/dist/vendored/{components → preview/components}/Video.vue +0 -0
- /package/dist/vendored/{components → preview/components}/ViewContainer.vue +0 -0
- /package/dist/vendored/{components → preview/components}/base.js +0 -0
- /package/dist/vendored/{components → preview/components}/icons.js +0 -0
- /package/dist/vendored/{components → preview/components}/index.js +0 -0
- /package/dist/vendored/{meta → preview/meta}/component-meta.json +0 -0
- /package/dist/vendored/{meta → preview/meta}/directive-meta.json +0 -0
- /package/dist/vendored/{meta → preview/meta}/style-meta.json +0 -0
- /package/dist/vendored/{runtime → preview/runtime}/StyleParser.js +0 -0
- /package/dist/vendored/{runtime → preview/runtime}/adapter.js +0 -0
- /package/dist/vendored/{runtime → preview/runtime}/assets.js +0 -0
- /package/dist/vendored/{runtime → preview/runtime}/canvas-context.js +0 -0
- /package/dist/vendored/{runtime → preview/runtime}/card-runtime.js +0 -0
- /package/dist/vendored/{runtime → preview/runtime}/evaluate.js +0 -0
- /package/dist/vendored/{runtime → preview/runtime}/property.js +0 -0
- /package/dist/vendored/{runtime → preview/runtime}/selectionOverlay.js +0 -0
- /package/dist/vendored/{runtime → preview/runtime}/toPreview.js +0 -0
- /package/dist/{server-core → vendored/server/core}/assetProxy.js +0 -0
- /package/dist/{server-core → vendored/server/core}/bbox.js +0 -0
- /package/dist/{server-core → vendored/server/core}/buildDataFromSchema.js +0 -0
- /package/dist/{server-core → vendored/server/core}/cardFiles.js +0 -0
- /package/dist/{server-core → vendored/server/core}/cardHistory.js +0 -0
- /package/dist/{server-core → vendored/server/core}/cardImage.js +0 -0
- /package/dist/{server-core → vendored/server/core}/cardImportMeta.js +0 -0
- /package/dist/{server-core → vendored/server/core}/cardListCache.js +0 -0
- /package/dist/{server-core → vendored/server/core}/cardOpenFolder.js +0 -0
- /package/dist/{server-core → vendored/server/core}/cardSidecar.js +0 -0
- /package/dist/{server-core → vendored/server/core}/codeBridge.js +0 -0
- /package/dist/{server-core → vendored/server/core}/logStream.js +0 -0
- /package/dist/{server-core → vendored/server/core}/logger.js +0 -0
- /package/dist/{server-core → vendored/server/core}/nodeModels.js +0 -0
- /package/dist/{server-core → vendored/server/core}/renderStatus.js +0 -0
- /package/dist/{server-core → vendored/server/core}/screenshot.js +0 -0
- /package/dist/{server-core → vendored/server/core}/sliceStatic.js +0 -0
- /package/dist/vendored/{meta → skills/dsl-card-generator/vendor/preview/meta}/action-meta.json +0 -0
- /package/dist/{server-core/_vendor → vendored/tools}/finmall-env.mjs +0 -0
|
@@ -1,118 +0,0 @@
|
|
|
1
|
-
<!--
|
|
2
|
-
数字输入设置器:对应编辑器 common/InputNumber。
|
|
3
|
-
- itemOption.type 取值 integer/+integer/-integer/float/+float/-float,决定输入正则
|
|
4
|
-
- itemOption.iParamList 预设值列表(点击右侧箭头弹出,如字号 12/14/16…)
|
|
5
|
-
- itemOption.symbol 右侧单位文案;NumberStyle 通过具名插槽 symbol 注入单位下拉
|
|
6
|
-
-->
|
|
7
|
-
<template>
|
|
8
|
-
<div class="st-number-wrap">
|
|
9
|
-
<div class="st-number">
|
|
10
|
-
<input
|
|
11
|
-
ref="field"
|
|
12
|
-
class="st-number__field"
|
|
13
|
-
type="text"
|
|
14
|
-
:placeholder="options.placeholder || '请输入'"
|
|
15
|
-
:disabled="disabled"
|
|
16
|
-
:value="inputValue"
|
|
17
|
-
@input="onInput($event.target.value)"
|
|
18
|
-
@change="emitChange()"
|
|
19
|
-
@keydown.up.prevent="step(1)"
|
|
20
|
-
@keydown.down.prevent="step(-1)"
|
|
21
|
-
@blur="closeSug()"
|
|
22
|
-
/>
|
|
23
|
-
|
|
24
|
-
<span v-if="$slots.symbol" class="st-number__symbol st-number__symbol--btn">
|
|
25
|
-
<slot name="symbol" />
|
|
26
|
-
</span>
|
|
27
|
-
<span v-else-if="options.symbol && options.symbol !== true" class="st-number__symbol">{{ options.symbol }}</span>
|
|
28
|
-
|
|
29
|
-
<span
|
|
30
|
-
v-if="suggestions.length"
|
|
31
|
-
class="st-number__caret"
|
|
32
|
-
title="预设值"
|
|
33
|
-
@mousedown.prevent="sugOpen = !sugOpen"
|
|
34
|
-
>▾</span>
|
|
35
|
-
</div>
|
|
36
|
-
|
|
37
|
-
<!-- 预设值浮层:移出 .st-number,避免被 overflow:hidden 裁切 -->
|
|
38
|
-
<div v-if="sugOpen && suggestions.length" class="st-pop st-pop--sug">
|
|
39
|
-
<div
|
|
40
|
-
v-for="s in suggestions"
|
|
41
|
-
:key="s.key"
|
|
42
|
-
class="st-pop__item"
|
|
43
|
-
:class="{ 'st-pop__item--on': String(s.key) === String(inputValue) }"
|
|
44
|
-
@mousedown.prevent="pick(s)"
|
|
45
|
-
>{{ s.value }}</div>
|
|
46
|
-
</div>
|
|
47
|
-
</div>
|
|
48
|
-
</template>
|
|
49
|
-
|
|
50
|
-
<script>
|
|
51
|
-
import { setterProps, setterEmits } from './props.js'
|
|
52
|
-
|
|
53
|
-
const TYPES = {
|
|
54
|
-
integer: /^-?(0|[1-9][0-9]*)?$/,
|
|
55
|
-
'+integer': /^(0|[1-9][0-9]*)?$/,
|
|
56
|
-
'-integer': /^(0|-[1-9]?[0-9]*)?$/,
|
|
57
|
-
float: /^-?([0-9]*|(0|[1-9][0-9]*)\.[0-9]*)?$/,
|
|
58
|
-
'+float': /^([0-9]*|(0|[1-9][0-9]*)\.[0-9]*)?$/,
|
|
59
|
-
'-float': /^(0|-[0-9]*|-(0|[1-9][0-9]*)\.[0-9]*)?$/,
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
export default {
|
|
63
|
-
name: 'SetNumber',
|
|
64
|
-
props: setterProps,
|
|
65
|
-
emits: setterEmits,
|
|
66
|
-
data() {
|
|
67
|
-
return { inputValue: '', sugOpen: false }
|
|
68
|
-
},
|
|
69
|
-
computed: {
|
|
70
|
-
suggestions() {
|
|
71
|
-
return this.options.iParamList || []
|
|
72
|
-
},
|
|
73
|
-
pattern() {
|
|
74
|
-
return TYPES[this.options.type] || TYPES.integer
|
|
75
|
-
},
|
|
76
|
-
},
|
|
77
|
-
watch: {
|
|
78
|
-
value: {
|
|
79
|
-
immediate: true,
|
|
80
|
-
handler(v) {
|
|
81
|
-
this.inputValue = v === undefined || v === null ? '' : String(v)
|
|
82
|
-
},
|
|
83
|
-
},
|
|
84
|
-
},
|
|
85
|
-
methods: {
|
|
86
|
-
onInput(v) {
|
|
87
|
-
if (!this.pattern.test(v)) {
|
|
88
|
-
// 非法输入回滚(与编辑器一致:直接丢弃这次按键)
|
|
89
|
-
this.$refs.field.value = this.inputValue
|
|
90
|
-
return
|
|
91
|
-
}
|
|
92
|
-
this.inputValue = v
|
|
93
|
-
this.$emit('input', v)
|
|
94
|
-
},
|
|
95
|
-
step(delta) {
|
|
96
|
-
const n = parseFloat(this.inputValue)
|
|
97
|
-
const next = String((Number.isNaN(n) ? 0 : n) + delta)
|
|
98
|
-
if (!this.pattern.test(next)) return
|
|
99
|
-
this.inputValue = next
|
|
100
|
-
this.$emit('input', next)
|
|
101
|
-
this.emitChange()
|
|
102
|
-
},
|
|
103
|
-
pick(s) {
|
|
104
|
-
this.sugOpen = false
|
|
105
|
-
this.inputValue = String(s.key)
|
|
106
|
-
this.$emit('input', this.inputValue)
|
|
107
|
-
this.emitChange()
|
|
108
|
-
},
|
|
109
|
-
closeSug() {
|
|
110
|
-
// 交给 mousedown 先跑完(pick 用的是 mousedown)
|
|
111
|
-
setTimeout(() => (this.sugOpen = false), 0)
|
|
112
|
-
},
|
|
113
|
-
emitChange() {
|
|
114
|
-
this.$emit('change')
|
|
115
|
-
},
|
|
116
|
-
},
|
|
117
|
-
}
|
|
118
|
-
</script>
|
|
@@ -1,113 +0,0 @@
|
|
|
1
|
-
<!--
|
|
2
|
-
带单位的数值设置器:对应编辑器 style/NumberStyle。
|
|
3
|
-
|
|
4
|
-
DSL 里 width/height 这类字段是**单个字符串**,靠后缀区分单位:
|
|
5
|
-
"120" → px
|
|
6
|
-
"50%" → 百分比
|
|
7
|
-
"auto" → 自适应
|
|
8
|
-
切换单位时编辑器会重置数值(percent→100、auto→'auto'、number→''),这里保持一致。
|
|
9
|
-
-->
|
|
10
|
-
<template>
|
|
11
|
-
<div class="st-numberstyle">
|
|
12
|
-
<SetNumber
|
|
13
|
-
:value="numValue"
|
|
14
|
-
:options="numberOptions"
|
|
15
|
-
:disabled="disabled || isAuto"
|
|
16
|
-
@input="onNum"
|
|
17
|
-
@change="$emit('change')"
|
|
18
|
-
>
|
|
19
|
-
<template #symbol>
|
|
20
|
-
<span class="st-unit" @mousedown.prevent="menuOpen = !menuOpen">{{ unitLabel }}</span>
|
|
21
|
-
</template>
|
|
22
|
-
</SetNumber>
|
|
23
|
-
|
|
24
|
-
<!-- 单位切换浮层:移到 .st-number 之外,避免被 overflow:hidden 裁切 -->
|
|
25
|
-
<div v-if="menuOpen" class="st-pop-mask" @mousedown.prevent="menuOpen = false"></div>
|
|
26
|
-
<div v-if="menuOpen" class="st-pop st-pop--unit">
|
|
27
|
-
<div
|
|
28
|
-
v-for="u in unitList"
|
|
29
|
-
:key="u.key"
|
|
30
|
-
class="st-pop__item"
|
|
31
|
-
:class="{ 'st-pop__item--on': u.key === unit }"
|
|
32
|
-
@mousedown.prevent="pickUnit(u.key)"
|
|
33
|
-
>{{ u.value }}</div>
|
|
34
|
-
</div>
|
|
35
|
-
</div>
|
|
36
|
-
</template>
|
|
37
|
-
|
|
38
|
-
<script>
|
|
39
|
-
import { setterProps, setterEmits } from './props.js'
|
|
40
|
-
import SetNumber from './SetNumber.vue'
|
|
41
|
-
|
|
42
|
-
const DEFAULT_UNITS = [
|
|
43
|
-
{ key: 'number', value: 'px' },
|
|
44
|
-
{ key: 'percent', value: '%' },
|
|
45
|
-
{ key: 'auto', value: '@' },
|
|
46
|
-
]
|
|
47
|
-
|
|
48
|
-
export default {
|
|
49
|
-
name: 'SetNumberStyle',
|
|
50
|
-
components: { SetNumber },
|
|
51
|
-
props: setterProps,
|
|
52
|
-
emits: setterEmits,
|
|
53
|
-
data() {
|
|
54
|
-
return { unit: 'number', numValue: '', menuOpen: false }
|
|
55
|
-
},
|
|
56
|
-
computed: {
|
|
57
|
-
unitList() {
|
|
58
|
-
return this.options.iTypeList || DEFAULT_UNITS
|
|
59
|
-
},
|
|
60
|
-
unitLabel() {
|
|
61
|
-
const hit = this.unitList.filter((u) => u.key === this.unit)[0]
|
|
62
|
-
return hit ? hit.value : 'px'
|
|
63
|
-
},
|
|
64
|
-
// @/auto 单位下,输入框只读(显示 auto 且不可编辑)
|
|
65
|
-
isAuto() {
|
|
66
|
-
return this.unit === 'auto'
|
|
67
|
-
},
|
|
68
|
-
numberOptions() {
|
|
69
|
-
return {
|
|
70
|
-
...this.options,
|
|
71
|
-
type: this.unit === 'percent' ? 'integer' : 'float',
|
|
72
|
-
placeholder: this.options.placeholder || '',
|
|
73
|
-
symbol: true,
|
|
74
|
-
}
|
|
75
|
-
},
|
|
76
|
-
},
|
|
77
|
-
watch: {
|
|
78
|
-
value: { immediate: true, handler() { this.parse() } },
|
|
79
|
-
},
|
|
80
|
-
methods: {
|
|
81
|
-
parse() {
|
|
82
|
-
const v = this.value
|
|
83
|
-
if (/%$/.test(String(v))) {
|
|
84
|
-
this.unit = 'percent'
|
|
85
|
-
this.numValue = String(v).replace(/%/g, '')
|
|
86
|
-
} else if (v === 'auto') {
|
|
87
|
-
this.unit = 'auto'
|
|
88
|
-
this.numValue = 'auto'
|
|
89
|
-
} else {
|
|
90
|
-
this.unit = 'number'
|
|
91
|
-
this.numValue = v === 0 ? '0' : v === undefined || v === null ? '' : String(v)
|
|
92
|
-
}
|
|
93
|
-
},
|
|
94
|
-
onNum(v) {
|
|
95
|
-
this.numValue = v
|
|
96
|
-
this.emit()
|
|
97
|
-
},
|
|
98
|
-
pickUnit(key) {
|
|
99
|
-
this.menuOpen = false
|
|
100
|
-
this.unit = key
|
|
101
|
-
if (key === 'percent') this.numValue = '100'
|
|
102
|
-
else if (key === 'auto') this.numValue = 'auto'
|
|
103
|
-
else this.numValue = ''
|
|
104
|
-
this.emit()
|
|
105
|
-
this.$emit('change')
|
|
106
|
-
},
|
|
107
|
-
emit() {
|
|
108
|
-
if (this.unit === 'percent' && this.numValue) this.$emit('input', this.numValue + '%')
|
|
109
|
-
else this.$emit('input', this.numValue)
|
|
110
|
-
},
|
|
111
|
-
},
|
|
112
|
-
}
|
|
113
|
-
</script>
|
|
@@ -1,77 +0,0 @@
|
|
|
1
|
-
<!--
|
|
2
|
-
四向内边距设置器:对应编辑器 style/PaddingStyle。
|
|
3
|
-
|
|
4
|
-
DSL 里是一个字符串,默认形态 `{2,2,2,2}`:
|
|
5
|
-
- itemOption.brackets 包裹符,默认 ['{','}']
|
|
6
|
-
- itemOption.seperator 分隔符,默认 ','
|
|
7
|
-
- itemOption.normal true → 顺序同 CSS:上,右,下,左
|
|
8
|
-
false(默认)→ 上,左,下,右
|
|
9
|
-
顺序错了会让上下/左右内边距互换,所以这里严格照抄编辑器的分支。
|
|
10
|
-
-->
|
|
11
|
-
<template>
|
|
12
|
-
<div class="st-pad">
|
|
13
|
-
<SetNumber :value="form.top" :options="opt('上')" :disabled="disabled" @input="set('top', $event)" @change="emitOut" />
|
|
14
|
-
<SetNumber :value="form.right" :options="opt('右')" :disabled="disabled" @input="set('right', $event)" @change="emitOut" />
|
|
15
|
-
<SetNumber :value="form.bottom" :options="opt('下')" :disabled="disabled" @input="set('bottom', $event)" @change="emitOut" />
|
|
16
|
-
<SetNumber :value="form.left" :options="opt('左')" :disabled="disabled" @input="set('left', $event)" @change="emitOut" />
|
|
17
|
-
</div>
|
|
18
|
-
</template>
|
|
19
|
-
|
|
20
|
-
<script>
|
|
21
|
-
import { setterProps, setterEmits } from './props.js'
|
|
22
|
-
import SetNumber from './SetNumber.vue'
|
|
23
|
-
|
|
24
|
-
export default {
|
|
25
|
-
name: 'SetPadding',
|
|
26
|
-
components: { SetNumber },
|
|
27
|
-
props: setterProps,
|
|
28
|
-
emits: setterEmits,
|
|
29
|
-
data() {
|
|
30
|
-
return { form: { top: '', right: '', bottom: '', left: '' } }
|
|
31
|
-
},
|
|
32
|
-
computed: {
|
|
33
|
-
brackets() {
|
|
34
|
-
return this.options.brackets || ['{', '}']
|
|
35
|
-
},
|
|
36
|
-
seperator() {
|
|
37
|
-
return this.options.seperator || ','
|
|
38
|
-
},
|
|
39
|
-
},
|
|
40
|
-
watch: {
|
|
41
|
-
value: { immediate: true, handler() { this.parse() } },
|
|
42
|
-
},
|
|
43
|
-
methods: {
|
|
44
|
-
parse() {
|
|
45
|
-
let s = String(this.value || '')
|
|
46
|
-
if (this.brackets.length) {
|
|
47
|
-
s = s.replace(new RegExp(`[${this.brackets.join('')}]`, 'g'), '')
|
|
48
|
-
}
|
|
49
|
-
const p = s.split(this.seperator)
|
|
50
|
-
if (this.options.normal) {
|
|
51
|
-
this.form = { top: p[0] || '', right: p[1] || '', bottom: p[2] || '', left: p[3] || '' }
|
|
52
|
-
} else {
|
|
53
|
-
this.form = { top: p[0] || '', left: p[1] || '', bottom: p[2] || '', right: p[3] || '' }
|
|
54
|
-
}
|
|
55
|
-
},
|
|
56
|
-
opt(symbol) {
|
|
57
|
-
return { type: 'integer', symbol, placeholder: '0' }
|
|
58
|
-
},
|
|
59
|
-
set(k, v) {
|
|
60
|
-
this.form[k] = v
|
|
61
|
-
this.emitValue()
|
|
62
|
-
},
|
|
63
|
-
emitValue() {
|
|
64
|
-
const f = this.form
|
|
65
|
-
const arr = this.options.normal
|
|
66
|
-
? [f.top, f.right, f.bottom, f.left]
|
|
67
|
-
: [f.top, f.left, f.bottom, f.right]
|
|
68
|
-
const body = arr.map((x) => (x === '' || x === undefined ? '0' : x)).join(this.seperator)
|
|
69
|
-
const [l, r] = this.brackets.length ? this.brackets : ['', '']
|
|
70
|
-
this.$emit('input', `${l || ''}${body}${r || ''}`)
|
|
71
|
-
},
|
|
72
|
-
emitOut() {
|
|
73
|
-
this.$emit('change')
|
|
74
|
-
},
|
|
75
|
-
},
|
|
76
|
-
}
|
|
77
|
-
</script>
|
|
@@ -1,160 +0,0 @@
|
|
|
1
|
-
<!--
|
|
2
|
-
分段选择设置器 —— 合并编辑器中五个"单选一组"的控件:
|
|
3
|
-
|
|
4
|
-
TabSelect 文字分段(选项来自 itemOption.iParamList)
|
|
5
|
-
FontStyle 正体 / 斜体
|
|
6
|
-
TextDecorationStyle 无 / 下划线 / 删除线
|
|
7
|
-
JustifyContentStyle 主轴对齐(随 flexDirection 变向,图标旋转 90°)
|
|
8
|
-
AlignItemsStyle 交叉轴对齐(同上)
|
|
9
|
-
|
|
10
|
-
编辑器里它们是五个独立组件,但交互完全一致(点选 → input + change),
|
|
11
|
-
差异只在「选项从哪来 / 图标怎么画」,因此这里用同一个组件按 kind 分派,
|
|
12
|
-
避免五份重复模板。图标用内联 SVG 现画,不引外部图片资源。
|
|
13
|
-
-->
|
|
14
|
-
<template>
|
|
15
|
-
<div class="st-seg">
|
|
16
|
-
<div
|
|
17
|
-
v-for="(o, i) in items"
|
|
18
|
-
:key="o.key + '_' + i"
|
|
19
|
-
class="st-seg__item"
|
|
20
|
-
:class="{ 'st-seg__item--on': String(o.key) === String(current) }"
|
|
21
|
-
:title="o.title || o.value"
|
|
22
|
-
@click="pick(o)"
|
|
23
|
-
>
|
|
24
|
-
<svg
|
|
25
|
-
v-if="o.icon"
|
|
26
|
-
class="st-seg__icon"
|
|
27
|
-
viewBox="0 0 16 16"
|
|
28
|
-
:style="rotate ? 'transform:rotate(90deg)' : ''"
|
|
29
|
-
>
|
|
30
|
-
<!-- 容器外框 -->
|
|
31
|
-
<rect
|
|
32
|
-
v-if="o.icon.frame"
|
|
33
|
-
x="1" y="2.6" width="14" height="10.8" rx="1.4"
|
|
34
|
-
fill="none" stroke="currentColor" stroke-width="1" opacity="0.35"
|
|
35
|
-
/>
|
|
36
|
-
<!-- 内容条 -->
|
|
37
|
-
<rect
|
|
38
|
-
v-for="(r, ri) in o.icon.rects || []"
|
|
39
|
-
:key="'r' + ri"
|
|
40
|
-
:x="r[0]" :y="r[1]" :width="r[2]" :height="r[3]"
|
|
41
|
-
rx="0.6" fill="currentColor" stroke="none"
|
|
42
|
-
/>
|
|
43
|
-
<!-- 辅助线(基线 / 下划线 / 删除线) -->
|
|
44
|
-
<line
|
|
45
|
-
v-for="(l, li) in o.icon.lines || []"
|
|
46
|
-
:key="'l' + li"
|
|
47
|
-
:x1="l[0]" :y1="l[1]" :x2="l[2]" :y2="l[3]"
|
|
48
|
-
stroke="currentColor" stroke-width="1.1"
|
|
49
|
-
/>
|
|
50
|
-
<!-- 字形(FontStyle / TextDecorationStyle) -->
|
|
51
|
-
<text
|
|
52
|
-
v-if="o.icon.text"
|
|
53
|
-
x="8" y="12" text-anchor="middle"
|
|
54
|
-
font-size="11" font-weight="600" fill="currentColor" stroke="none"
|
|
55
|
-
:font-style="o.icon.italic ? 'italic' : 'normal'"
|
|
56
|
-
>{{ o.icon.text }}</text>
|
|
57
|
-
</svg>
|
|
58
|
-
<span v-else>{{ o.value }}</span>
|
|
59
|
-
</div>
|
|
60
|
-
</div>
|
|
61
|
-
</template>
|
|
62
|
-
|
|
63
|
-
<script>
|
|
64
|
-
import { setterProps, setterEmits } from './props.js'
|
|
65
|
-
|
|
66
|
-
/** 主轴对齐:两根竖条(w=3.2 h=6.4,居中于 y=4.8)在横向的摆位 */
|
|
67
|
-
const JUSTIFY = [
|
|
68
|
-
{ key: 'flex-start', name: '起始对齐', bars: [2.6, 6.2] },
|
|
69
|
-
{ key: 'center', name: '居中', bars: [4.6, 8.2] },
|
|
70
|
-
{ key: 'flex-end', name: '末端对齐', bars: [6.6, 10.2] },
|
|
71
|
-
{ key: 'space-between', name: '两端对齐', bars: [2.6, 10.2] },
|
|
72
|
-
{ key: 'space-around', name: '等距间隔', bars: [3.6, 9.2] },
|
|
73
|
-
]
|
|
74
|
-
|
|
75
|
-
/** 交叉轴对齐:两根竖条(高度不同)在纵向的摆位 [y, h] */
|
|
76
|
-
const ALIGN = [
|
|
77
|
-
{ key: 'flex-start', name: '起始对齐', a: [3.6, 6.4], b: [3.6, 4.4] },
|
|
78
|
-
{ key: 'center', name: '居中', a: [4.8, 6.4], b: [5.8, 4.4] },
|
|
79
|
-
{ key: 'flex-end', name: '末端对齐', a: [6, 6.4], b: [8, 4.4] },
|
|
80
|
-
{ key: 'baseline', name: '基线对齐', a: [4, 5.6], b: [6, 3.6], baseline: 9.6 },
|
|
81
|
-
{ key: 'stretch', name: '拉伸', a: [3.6, 9.4], b: [3.6, 9.4] },
|
|
82
|
-
]
|
|
83
|
-
|
|
84
|
-
const FONT_STYLE = [
|
|
85
|
-
{ key: 'normal', value: '正体', title: 'font-style: normal', icon: { text: 'A' } },
|
|
86
|
-
{ key: 'italic', value: '斜体', title: 'font-style: italic', icon: { text: 'A', italic: true } },
|
|
87
|
-
]
|
|
88
|
-
|
|
89
|
-
const TEXT_DECORATION = [
|
|
90
|
-
{ key: 'none', value: '无', title: 'text-decoration: none', icon: { text: 'A' } },
|
|
91
|
-
{
|
|
92
|
-
key: 'underline',
|
|
93
|
-
value: '下划线',
|
|
94
|
-
title: 'text-decoration: underline',
|
|
95
|
-
icon: { text: 'A', lines: [[3.5, 14, 12.5, 14]] },
|
|
96
|
-
},
|
|
97
|
-
{
|
|
98
|
-
key: 'line-through',
|
|
99
|
-
value: '删除线',
|
|
100
|
-
title: 'text-decoration: line-through',
|
|
101
|
-
icon: { text: 'A', lines: [[3, 8.6, 13, 8.6]] },
|
|
102
|
-
},
|
|
103
|
-
]
|
|
104
|
-
|
|
105
|
-
export default {
|
|
106
|
-
name: 'SetSegment',
|
|
107
|
-
props: { ...setterProps, kind: { type: String, default: 'TabSelect' } },
|
|
108
|
-
emits: setterEmits,
|
|
109
|
-
computed: {
|
|
110
|
-
current() {
|
|
111
|
-
return this.value === undefined || this.value === null ? '' : this.value
|
|
112
|
-
},
|
|
113
|
-
/** 竖排布局时对齐图标转 90°(与编辑器 lep_rotate 一致) */
|
|
114
|
-
flexDirection() {
|
|
115
|
-
return this.options.flexDirection || this.watches.flexDirection || 'row'
|
|
116
|
-
},
|
|
117
|
-
rotate() {
|
|
118
|
-
return (
|
|
119
|
-
(this.kind === 'JustifyContentStyle' || this.kind === 'AlignItemsStyle') &&
|
|
120
|
-
this.flexDirection === 'column'
|
|
121
|
-
)
|
|
122
|
-
},
|
|
123
|
-
items() {
|
|
124
|
-
if (this.kind === 'JustifyContentStyle') {
|
|
125
|
-
return JUSTIFY.map((o) => ({
|
|
126
|
-
key: o.key,
|
|
127
|
-
value: o.name,
|
|
128
|
-
title: `justify-content: ${o.key}`,
|
|
129
|
-
icon: { frame: true, rects: o.bars.map((x) => [x, 4.8, 3.2, 6.4]) },
|
|
130
|
-
}))
|
|
131
|
-
}
|
|
132
|
-
if (this.kind === 'AlignItemsStyle') {
|
|
133
|
-
return ALIGN.map((o) => ({
|
|
134
|
-
key: o.key,
|
|
135
|
-
value: o.name,
|
|
136
|
-
title: `align-items: ${o.key}`,
|
|
137
|
-
icon: {
|
|
138
|
-
frame: true,
|
|
139
|
-
rects: [
|
|
140
|
-
[4.2, o.a[0], 3.2, o.a[1]],
|
|
141
|
-
[8.6, o.b[0], 3.2, o.b[1]],
|
|
142
|
-
],
|
|
143
|
-
lines: o.baseline ? [[1.6, o.baseline, 14.4, o.baseline]] : undefined,
|
|
144
|
-
},
|
|
145
|
-
}))
|
|
146
|
-
}
|
|
147
|
-
if (this.kind === 'FontStyle') return FONT_STYLE
|
|
148
|
-
if (this.kind === 'TextDecorationStyle') return TEXT_DECORATION
|
|
149
|
-
return this.options.iParamList || []
|
|
150
|
-
},
|
|
151
|
-
},
|
|
152
|
-
methods: {
|
|
153
|
-
pick(o) {
|
|
154
|
-
if (this.disabled) return
|
|
155
|
-
this.$emit('input', o.key)
|
|
156
|
-
this.$emit('change')
|
|
157
|
-
},
|
|
158
|
-
},
|
|
159
|
-
}
|
|
160
|
-
</script>
|
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
<!--
|
|
2
|
-
下拉选择设置器:对应编辑器 common/Select。
|
|
3
|
-
选项来源 itemOption.iParamList = [{key, value}]。
|
|
4
|
-
可清空(对应编辑器的 clearable):选中值后触发器右侧出现 ✕ 清除按钮,
|
|
5
|
-
空值态由 Dropdown 的 placeholder 在触发器上显示,不再把占位文案当选项注入。
|
|
6
|
-
统一使用 Dropdown 组件(支持尺寸),替换原生 <select>。
|
|
7
|
-
-->
|
|
8
|
-
<template>
|
|
9
|
-
<Dropdown
|
|
10
|
-
:value="current"
|
|
11
|
-
:options="optionList"
|
|
12
|
-
:placeholder="placeholder"
|
|
13
|
-
clearable
|
|
14
|
-
size="sm"
|
|
15
|
-
block
|
|
16
|
-
:disabled="disabled"
|
|
17
|
-
@input="onChange"
|
|
18
|
-
/>
|
|
19
|
-
</template>
|
|
20
|
-
|
|
21
|
-
<script>
|
|
22
|
-
import { setterProps, setterEmits } from './props.js'
|
|
23
|
-
|
|
24
|
-
export default {
|
|
25
|
-
name: 'SetSelect',
|
|
26
|
-
props: setterProps,
|
|
27
|
-
emits: setterEmits,
|
|
28
|
-
computed: {
|
|
29
|
-
list() {
|
|
30
|
-
return this.options.iParamList || this.options.iTypeList || []
|
|
31
|
-
},
|
|
32
|
-
placeholder() {
|
|
33
|
-
return this.options.placeholder || '请选择'
|
|
34
|
-
},
|
|
35
|
-
optionList() {
|
|
36
|
-
// 不把占位文案当作可选项注入;空值态由 Dropdown 的 placeholder 在触发器上显示,
|
|
37
|
-
// 弹层内只列出真实选项(避免「请选择/待选择」作为一条选项出现)。
|
|
38
|
-
return this.list.map((o) => ({ key: String(o.key), value: o.value }))
|
|
39
|
-
},
|
|
40
|
-
current() {
|
|
41
|
-
return this.value === undefined || this.value === null ? '' : String(this.value)
|
|
42
|
-
},
|
|
43
|
-
},
|
|
44
|
-
methods: {
|
|
45
|
-
onChange(v) {
|
|
46
|
-
this.$emit('input', v)
|
|
47
|
-
this.$emit('change')
|
|
48
|
-
},
|
|
49
|
-
},
|
|
50
|
-
}
|
|
51
|
-
</script>
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
<!--
|
|
2
|
-
开关设置器:对应编辑器 common/Switcher 与 forms/BooleanForm。
|
|
3
|
-
|
|
4
|
-
关键点(照搬编辑器语义):Switcher 的开/关值默认是**字符串** '1' / '0',
|
|
5
|
-
BooleanForm 只是把 activeValue/inactiveValue 换成布尔 true/false 的 Switcher。
|
|
6
|
-
写成 boolean 会导致 DSL 里 isBorder 变成 true,线上解析不到,故必须保留原类型。
|
|
7
|
-
-->
|
|
8
|
-
<template>
|
|
9
|
-
<div class="st-switch" :class="{ 'st-switch--on': on }" @click="toggle">
|
|
10
|
-
<span class="st-switch__track"><span class="st-switch__knob" /></span>
|
|
11
|
-
<span class="st-switch__text">{{ on ? activeText : inactiveText }}</span>
|
|
12
|
-
</div>
|
|
13
|
-
</template>
|
|
14
|
-
|
|
15
|
-
<script>
|
|
16
|
-
import { setterProps, setterEmits } from './props.js'
|
|
17
|
-
|
|
18
|
-
export default {
|
|
19
|
-
name: 'SetSwitch',
|
|
20
|
-
props: { ...setterProps, boolean: { type: Boolean, default: false } },
|
|
21
|
-
emits: setterEmits,
|
|
22
|
-
computed: {
|
|
23
|
-
activeValue() {
|
|
24
|
-
if (this.options.activeValue !== undefined) return this.options.activeValue
|
|
25
|
-
return this.boolean ? true : '1'
|
|
26
|
-
},
|
|
27
|
-
inactiveValue() {
|
|
28
|
-
if (this.options.inactiveValue !== undefined) return this.options.inactiveValue
|
|
29
|
-
return this.boolean ? false : '0'
|
|
30
|
-
},
|
|
31
|
-
on() {
|
|
32
|
-
return this.value === this.activeValue
|
|
33
|
-
},
|
|
34
|
-
activeText() {
|
|
35
|
-
return this.options.activeText || '开'
|
|
36
|
-
},
|
|
37
|
-
inactiveText() {
|
|
38
|
-
return this.options.inactiveText || '关'
|
|
39
|
-
},
|
|
40
|
-
},
|
|
41
|
-
methods: {
|
|
42
|
-
toggle() {
|
|
43
|
-
if (this.disabled) return
|
|
44
|
-
this.$emit('input', this.on ? this.inactiveValue : this.activeValue)
|
|
45
|
-
this.$emit('change')
|
|
46
|
-
},
|
|
47
|
-
},
|
|
48
|
-
}
|
|
49
|
-
</script>
|
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
<!--
|
|
2
|
-
文本输入设置器:对应编辑器 common/Input 与 common/Textarea。
|
|
3
|
-
itemType 为 Input / Textarea / 空(无类型时的默认文本框)时使用。
|
|
4
|
-
-->
|
|
5
|
-
<template>
|
|
6
|
-
<textarea
|
|
7
|
-
v-if="multiline"
|
|
8
|
-
class="st-textarea"
|
|
9
|
-
:rows="rows"
|
|
10
|
-
:placeholder="options.placeholder || ''"
|
|
11
|
-
:disabled="disabled"
|
|
12
|
-
:value="text"
|
|
13
|
-
@input="onInput($event.target.value)"
|
|
14
|
-
@change="$emit('change')"
|
|
15
|
-
/>
|
|
16
|
-
<input
|
|
17
|
-
v-else
|
|
18
|
-
class="ni-input"
|
|
19
|
-
type="text"
|
|
20
|
-
:placeholder="options.placeholder || ''"
|
|
21
|
-
:disabled="disabled"
|
|
22
|
-
:value="text"
|
|
23
|
-
@input="onInput($event.target.value)"
|
|
24
|
-
@change="$emit('change')"
|
|
25
|
-
/>
|
|
26
|
-
</template>
|
|
27
|
-
|
|
28
|
-
<script>
|
|
29
|
-
import { setterProps, setterEmits } from './props.js'
|
|
30
|
-
|
|
31
|
-
export default {
|
|
32
|
-
name: 'SetText',
|
|
33
|
-
props: { ...setterProps, multiline: { type: Boolean, default: false } },
|
|
34
|
-
emits: setterEmits,
|
|
35
|
-
computed: {
|
|
36
|
-
text() {
|
|
37
|
-
return this.value === undefined || this.value === null ? '' : String(this.value)
|
|
38
|
-
},
|
|
39
|
-
rows() {
|
|
40
|
-
// itemOption.autosize = {minRows, maxRows}
|
|
41
|
-
const a = this.options.autosize
|
|
42
|
-
if (a && typeof a === 'object' && a.minRows) return a.minRows
|
|
43
|
-
return 4
|
|
44
|
-
},
|
|
45
|
-
},
|
|
46
|
-
methods: {
|
|
47
|
-
onInput(v) {
|
|
48
|
-
this.$emit('input', v)
|
|
49
|
-
},
|
|
50
|
-
},
|
|
51
|
-
}
|
|
52
|
-
</script>
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* 设置器统一 props / emits。
|
|
3
|
-
* 与编辑器 `base/properties/components/props.js` 一一对应,便于逐个组件对照移植。
|
|
4
|
-
*
|
|
5
|
-
* value 当前值(Property.itemValue)
|
|
6
|
-
* options itemOption
|
|
7
|
-
* watches 同级属性值快照,供 itemWatch 联动(如 flexDirection 决定对齐图标方向)
|
|
8
|
-
* itemInfo Property 实例本身(少数控件需要读 itemDefaultValue / itemKey)
|
|
9
|
-
* disabled 禁用
|
|
10
|
-
*
|
|
11
|
-
* 事件:input(新值) → 由 PropRow 写回 Property;change() → 触发预览刷新。
|
|
12
|
-
*/
|
|
13
|
-
export const setterProps = {
|
|
14
|
-
value: { default: '' },
|
|
15
|
-
options: { type: Object, default: () => ({}) },
|
|
16
|
-
watches: { type: Object, default: () => ({}) },
|
|
17
|
-
itemInfo: { type: Object, default: () => ({}) },
|
|
18
|
-
disabled: { type: Boolean, default: false },
|
|
19
|
-
};
|
|
20
|
-
|
|
21
|
-
export const setterEmits = ['input', 'change'];
|
|
22
|
-
|
|
23
|
-
export default setterProps;
|