dishui 0.0.106 → 0.0.110
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/dist/.release-verified.json +3 -2
- package/dist/components/Accordion/index.js.map +1 -1
- package/dist/components/Avatar/index.js.map +1 -1
- package/dist/components/Badge/index.js.map +1 -1
- package/dist/components/Button/index.js.map +1 -1
- package/dist/components/ButtonMenu/index.js.map +1 -1
- package/dist/components/Card/Metric2.js.map +1 -1
- package/dist/components/Card/Ticket2.js.map +1 -1
- package/dist/components/Card/index.js.map +1 -1
- package/dist/components/Chart/Chart.js.map +1 -1
- package/dist/components/Checkbox/index.js.map +1 -1
- package/dist/components/ChoicePicker/index.js.map +1 -1
- package/dist/components/Column/index.js.map +1 -1
- package/dist/components/ConfirmDialog/index.js.map +1 -1
- package/dist/components/DateTimeInput/index.js.map +1 -1
- package/dist/components/Demo/index.js.map +1 -1
- package/dist/components/Demo/source.js.map +1 -1
- package/dist/components/Divider/index.js.map +1 -1
- package/dist/components/EmptyState/index.js.map +1 -1
- package/dist/components/Field/index.js.map +1 -1
- package/dist/components/FileUploader/DropZone.js.map +1 -1
- package/dist/components/FileUploader/FileItem.js.map +1 -1
- package/dist/components/FileUploader/FileUploader.js.map +1 -1
- package/dist/components/FileUploader/UploadQueue.js.map +1 -1
- package/dist/components/GroupButton/index.js.map +1 -1
- package/dist/components/GroupedTable/index.js.map +1 -1
- package/dist/components/Icon/index.js.map +1 -1
- package/dist/components/Image/index.js.map +1 -1
- package/dist/components/Input/index.js.map +1 -1
- package/dist/components/Label/index.js.map +1 -1
- package/dist/components/Layout/index.js.map +1 -1
- package/dist/components/LayoutSuite/DashboardSuite.js.map +1 -1
- package/dist/components/LayoutSuite/index.js.map +1 -1
- package/dist/components/List/index.js.map +1 -1
- package/dist/components/Markdown/Markdown.js.map +1 -1
- package/dist/components/Markdown/codeThemes.js.map +1 -1
- package/dist/components/Markdown/markdownComponents.js.map +1 -1
- package/dist/components/Markdown/parseCodeBlockMeta.js.map +1 -1
- package/dist/components/Markdown/useMarkdownSource.js.map +1 -1
- package/dist/components/Markdown/useMarkmapRenderer.js.map +1 -1
- package/dist/components/Markdown/useMermaidRenderer.js.map +1 -1
- package/dist/components/Modal/focusScope.js.map +1 -1
- package/dist/components/Modal/index.js.map +1 -1
- package/dist/components/MultipleChoice/index.js.map +1 -1
- package/dist/components/NavigationList/index.js.map +1 -1
- package/dist/components/Page/Float2.js.map +1 -1
- package/dist/components/Page/index.js.map +1 -1
- package/dist/components/Page/resize2.js.map +1 -1
- package/dist/components/PageHeader/index.js.map +1 -1
- package/dist/components/PagePanel/index.js.map +1 -1
- package/dist/components/ProtectedRoute/index.js.map +1 -1
- package/dist/components/Resizable/ResizeGrip.js.map +1 -1
- package/dist/components/Resizable/index.js.map +1 -1
- package/dist/components/Resizable/useResize.js.map +1 -1
- package/dist/components/Row/index.js.map +1 -1
- package/dist/components/Section/index.js.map +1 -1
- package/dist/components/Select/index.js.map +1 -1
- package/dist/components/SidebarToggleButton/index.js.map +1 -1
- package/dist/components/Skeleton/index.js.map +1 -1
- package/dist/components/Slider/index.js.map +1 -1
- package/dist/components/Switch/index.js.map +1 -1
- package/dist/components/Tab/index.js.map +1 -1
- package/dist/components/Table/index.js.map +1 -1
- package/dist/components/Tabs/index.js.map +1 -1
- package/dist/components/Tabs/tabNavigation.js.map +1 -1
- package/dist/components/Text/index.js.map +1 -1
- package/dist/components/Textarea/index.js.map +1 -1
- package/dist/components/Tooltip/index.js.map +1 -1
- package/dist/components/Tree/Tree.js.map +1 -1
- package/dist/components/ai/AgentChat/index.js.map +1 -1
- package/dist/components/ai/AgentRunCard/index.js.map +1 -1
- package/dist/components/ai/AgentScreen/index.js.map +1 -1
- package/dist/components/ai/ApprovalCard/index.js.map +1 -1
- package/dist/components/ai/CodeView/index.js.map +1 -1
- package/dist/components/ai/CommandSearch/index.js.map +1 -1
- package/dist/components/ai/ContextCards/index.js.map +1 -1
- package/dist/components/ai/DiffTable/index.js.map +1 -1
- package/dist/components/ai/FilterTable/index.js.map +1 -1
- package/dist/components/ai/FineTuneCard/index.js.map +1 -1
- package/dist/components/ai/InsightCards/index.js.map +1 -1
- package/dist/components/ai/IssueCard/index.js.map +1 -1
- package/dist/components/ai/LoadingState/index.js.map +1 -1
- package/dist/components/ai/PromptBar/index.js.map +1 -1
- package/dist/components/ai/RecommendationCard/index.js.map +1 -1
- package/dist/components/ai/RecordsTable/index.js.map +1 -1
- package/dist/components/ai/SelectionActions/index.js.map +1 -1
- package/dist/components/ai/StateFlow/index.js.map +1 -1
- package/dist/components/ai/StreamingText/index.js.map +1 -1
- package/dist/components/ai/TaskRows/index.js.map +1 -1
- package/dist/components/ai/Thinking/index.js.map +1 -1
- package/dist/components/ai/ToolChips/index.js.map +1 -1
- package/dist/components/ai/shared.js.map +1 -1
- package/dist/components/pro/ArticleContextMenu/index.js.map +1 -1
- package/dist/components/pro/ArticleControl/ArticleControl2.js.map +1 -1
- package/dist/components/pro/ArticleControl/buildHeadingTree.js.map +1 -1
- package/dist/components/pro/ArticleControl/useArticleToc.js.map +1 -1
- package/dist/components/pro/Calendar/Calendar.js +165 -160
- package/dist/components/pro/Calendar/Calendar.js.map +1 -1
- package/dist/components/pro/Calendar/hooks/useCalendarDrag.js.map +1 -1
- package/dist/components/pro/Calendar/hooks/useCalendarState.js +31 -31
- package/dist/components/pro/Calendar/hooks/useCalendarState.js.map +1 -1
- package/dist/components/pro/Calendar/utils.js.map +1 -1
- package/dist/components/pro/CodeEditor/editors/CodeEditor.js.map +1 -1
- package/dist/components/pro/CodeEditor/editors/MarkdownEditor.js.map +1 -1
- package/dist/components/pro/CodeEditor/editors/markdownExtensions.js.map +1 -1
- package/dist/components/pro/CodeEditor/extensions/contextMenu.js.map +1 -1
- package/dist/components/pro/CodeEditor/extensions/index.js.map +1 -1
- package/dist/components/pro/CodeEditor/langs/index.js.map +1 -1
- package/dist/components/pro/CodeEditor/langs/javascript.js.map +1 -1
- package/dist/components/pro/CodeEditor/langs/python.js.map +1 -1
- package/dist/components/pro/CodeEditor/langs/snippets.js.map +1 -1
- package/dist/components/pro/CodeEditor/panels/FootnotePanel.js.map +1 -1
- package/dist/components/pro/CodeEditor/panels/HistoryPanel.js +65 -59
- package/dist/components/pro/CodeEditor/panels/HistoryPanel.js.map +1 -1
- package/dist/components/pro/CodeEditor/panels/OutlinePanel.js.map +1 -1
- package/dist/components/pro/CodeEditor/panels/TableOfContentsPanel.js.map +1 -1
- package/dist/components/pro/CodeEditor/panels/VariablePanel.js.map +1 -1
- package/dist/components/pro/CodeEditor/themes.js.map +1 -1
- package/dist/components/pro/CodeEditor/utils.js.map +1 -1
- package/dist/components/pro/DataTable/DataTable.js.map +1 -1
- package/dist/components/pro/DataTable/Filters.js.map +1 -1
- package/dist/components/pro/DataTable/PivotPanel.js.map +1 -1
- package/dist/components/pro/DataTable/PivotView.js.map +1 -1
- package/dist/components/pro/DataTable/components/BulkActions.js.map +1 -1
- package/dist/components/pro/DataTable/components/ColumnSelector.js.map +1 -1
- package/dist/components/pro/DataTable/components/FilterBar.js.map +1 -1
- package/dist/components/pro/DataTable/components/TableBody.js.map +1 -1
- package/dist/components/pro/DataTable/components/TableHeader.js.map +1 -1
- package/dist/components/pro/DataTable/components/TablePagination.js.map +1 -1
- package/dist/components/pro/DataTable/components/TableToolbar.js.map +1 -1
- package/dist/components/pro/DataTable/extension.js.map +1 -1
- package/dist/components/pro/DataTable/pivotEngine.js.map +1 -1
- package/dist/components/pro/DataTable/pivotExtension.js.map +1 -1
- package/dist/components/pro/DataTable/rowDetailExtension.js.map +1 -1
- package/dist/components/pro/DataTable/tanstack-table.js.map +1 -1
- package/dist/components/pro/DataTable/treeDataUtils.js.map +1 -1
- package/dist/components/pro/DataTable/useColumnDragReorder.js.map +1 -1
- package/dist/components/pro/DataTable/useDataTableModel.js +119 -104
- package/dist/components/pro/DataTable/useDataTableModel.js.map +1 -1
- package/dist/components/pro/DataTable/utils.js.map +1 -1
- package/dist/components/pro/FileExplorer/Breadcrumb.js.map +1 -1
- package/dist/components/pro/FileExplorer/CreateDialog.js.map +1 -1
- package/dist/components/pro/FileExplorer/FileExplorer.js.map +1 -1
- package/dist/components/pro/FileExplorer/FileIcon.js.map +1 -1
- package/dist/components/pro/FileExplorer/GridView.js.map +1 -1
- package/dist/components/pro/FileExplorer/ListView.js.map +1 -1
- package/dist/components/pro/FileExplorer/Toolbar.js.map +1 -1
- package/dist/components/pro/Flow/Flow.js.map +1 -1
- package/dist/components/pro/Flow/FlowCanvas.js.map +1 -1
- package/dist/components/pro/Flow/archify/build.js.map +1 -1
- package/dist/components/pro/Flow/archify/convert.js.map +1 -1
- package/dist/components/pro/Flow/archify/palette.js.map +1 -1
- package/dist/components/pro/Flow/archify/presets.js.map +1 -1
- package/dist/components/pro/Flow/archify/spec.js.map +1 -1
- package/dist/components/pro/Flow/canvas/AlignmentGuides.js.map +1 -1
- package/dist/components/pro/Flow/canvas/GridRenderer.js.map +1 -1
- package/dist/components/pro/Flow/canvas/MiniMapRenderer.js.map +1 -1
- package/dist/components/pro/Flow/canvas/PixiApp.js.map +1 -1
- package/dist/components/pro/Flow/canvas/SelectionOverlay.js.map +1 -1
- package/dist/components/pro/Flow/canvas/ViewportContainer.js.map +1 -1
- package/dist/components/pro/Flow/constants.js.map +1 -1
- package/dist/components/pro/Flow/context/FlowAIContext.js.map +1 -1
- package/dist/components/pro/Flow/context/FlowContext.js.map +1 -1
- package/dist/components/pro/Flow/context/FlowUIContext.js.map +1 -1
- package/dist/components/pro/Flow/edges/EdgeRenderer.js.map +1 -1
- package/dist/components/pro/Flow/edges/edgeMarkers.js.map +1 -1
- package/dist/components/pro/Flow/edges/edgePaths.js.map +1 -1
- package/dist/components/pro/Flow/hooks/useAlignmentGuides.js.map +1 -1
- package/dist/components/pro/Flow/hooks/useClipboard.js.map +1 -1
- package/dist/components/pro/Flow/hooks/useCompactMode.js.map +1 -1
- package/dist/components/pro/Flow/hooks/useDeleteSelection.js.map +1 -1
- package/dist/components/pro/Flow/hooks/useDraggablePanel.js.map +1 -1
- package/dist/components/pro/Flow/hooks/useEdgeMutations.js.map +1 -1
- package/dist/components/pro/Flow/hooks/useFlowImportExport.js.map +1 -1
- package/dist/components/pro/Flow/hooks/useKeyboardShortcuts.js.map +1 -1
- package/dist/components/pro/Flow/hooks/useLayoutActions.js.map +1 -1
- package/dist/components/pro/Flow/hooks/useLineMutations.js.map +1 -1
- package/dist/components/pro/Flow/hooks/useMindMap.js.map +1 -1
- package/dist/components/pro/Flow/hooks/useNodeMutations.js.map +1 -1
- package/dist/components/pro/Flow/hooks/usePdfExport.js.map +1 -1
- package/dist/components/pro/Flow/hooks/usePixiApp.js.map +1 -1
- package/dist/components/pro/Flow/hooks/useResizablePanel.js.map +1 -1
- package/dist/components/pro/Flow/hooks/useSelection.js.map +1 -1
- package/dist/components/pro/Flow/hooks/useUndoRedo.js.map +1 -1
- package/dist/components/pro/Flow/hooks/useViewport.js.map +1 -1
- package/dist/components/pro/Flow/lines/FreehandTool.js.map +1 -1
- package/dist/components/pro/Flow/lines/GeometricLineTool.js.map +1 -1
- package/dist/components/pro/Flow/lines/LineRenderer.js.map +1 -1
- package/dist/components/pro/Flow/lines/lineSmoothing.js.map +1 -1
- package/dist/components/pro/Flow/nodes/DataNodeView.js.map +1 -1
- package/dist/components/pro/Flow/nodes/MediaContent.js.map +1 -1
- package/dist/components/pro/Flow/nodes/MediaOverlay.js.map +1 -1
- package/dist/components/pro/Flow/nodes/Model3DView.js.map +1 -1
- package/dist/components/pro/Flow/nodes/NodeHandles.js.map +1 -1
- package/dist/components/pro/Flow/nodes/NodeRenderer.js.map +1 -1
- package/dist/components/pro/Flow/nodes/NodeText.js.map +1 -1
- package/dist/components/pro/Flow/nodes/aiClient.js.map +1 -1
- package/dist/components/pro/Flow/nodes/animAnchors.js.map +1 -1
- package/dist/components/pro/Flow/nodes/chartGeometryBudget.js.map +1 -1
- package/dist/components/pro/Flow/nodes/dataUtils.js.map +1 -1
- package/dist/components/pro/Flow/nodes/demandRender.js.map +1 -1
- package/dist/components/pro/Flow/nodes/nodeUtils.js.map +1 -1
- package/dist/components/pro/Flow/nodes/shapes.js.map +1 -1
- package/dist/components/pro/Flow/nodes/svgIconTexture.js.map +1 -1
- package/dist/components/pro/Flow/nodes/svgIcons.js.map +1 -1
- package/dist/components/pro/Flow/panels/AIPanel.js.map +1 -1
- package/dist/components/pro/Flow/panels/Breadcrumb.js.map +1 -1
- package/dist/components/pro/Flow/panels/ContextMenu.js.map +1 -1
- package/dist/components/pro/Flow/panels/DataInspectorSection.js.map +1 -1
- package/dist/components/pro/Flow/panels/ExpandableTextarea.js.map +1 -1
- package/dist/components/pro/Flow/panels/FlowPanelGroup.js.map +1 -1
- package/dist/components/pro/Flow/panels/FlowToolbar.js.map +1 -1
- package/dist/components/pro/Flow/panels/InspectorPanel.js.map +1 -1
- package/dist/components/pro/Flow/panels/OutlinePanel.js.map +1 -1
- package/dist/components/pro/Flow/panels/PresentationMode.js.map +1 -1
- package/dist/components/pro/Flow/panels/ProjectTitle.js.map +1 -1
- package/dist/components/pro/Flow/panels/ShapePalette.js.map +1 -1
- package/dist/components/pro/Flow/panels/toolbarIcons.js.map +1 -1
- package/dist/components/pro/Flow/types.js.map +1 -1
- package/dist/components/pro/Flow/utils/dashedLine.js.map +1 -1
- package/dist/components/pro/Flow/utils/gradient.js.map +1 -1
- package/dist/components/pro/Flow/utils/pdfExport.js.map +1 -1
- package/dist/components/pro/Flow/utils/themeColor.js.map +1 -1
- package/dist/components/pro/Gantt/Gantt.js.map +1 -1
- package/dist/components/pro/Gantt/hooks/useGanttDrag.js.map +1 -1
- package/dist/components/pro/Gantt/hooks/useGanttState.js +79 -71
- package/dist/components/pro/Gantt/hooks/useGanttState.js.map +1 -1
- package/dist/components/pro/Gantt/utils.js.map +1 -1
- package/dist/components/pro/Kanban/Kanban.js.map +1 -1
- package/dist/components/pro/Kanban/Swimlanes.js.map +1 -1
- package/dist/components/pro/Kanban/useKanbanDrag.js.map +1 -1
- package/dist/components/pro/Kanban/utils.js.map +1 -1
- package/dist/components/pro/RichTextEditor/AIRewrite.d.ts +1 -0
- package/dist/components/pro/RichTextEditor/AIRewrite.js +109 -88
- package/dist/components/pro/RichTextEditor/AIRewrite.js.map +1 -1
- package/dist/components/pro/RichTextEditor/BlockHandle.js.map +1 -1
- package/dist/components/pro/RichTextEditor/BubbleToolbar.js.map +1 -1
- package/dist/components/pro/RichTextEditor/CommentDialog.js.map +1 -1
- package/dist/components/pro/RichTextEditor/CommentPanel.js.map +1 -1
- package/dist/components/pro/RichTextEditor/CommentPopover.js.map +1 -1
- package/dist/components/pro/RichTextEditor/ContextMenu.js.map +1 -1
- package/dist/components/pro/RichTextEditor/RichTextEditor.js +133 -132
- package/dist/components/pro/RichTextEditor/RichTextEditor.js.map +1 -1
- package/dist/components/pro/RichTextEditor/SlashMenu.js.map +1 -1
- package/dist/components/pro/RichTextEditor/Toolbar/ColorPicker.js.map +1 -1
- package/dist/components/pro/RichTextEditor/Toolbar/FloatingDialogMenu.js.map +1 -1
- package/dist/components/pro/RichTextEditor/Toolbar/MarkdownTemplates.js.map +1 -1
- package/dist/components/pro/RichTextEditor/Toolbar/SelectDropdown.js.map +1 -1
- package/dist/components/pro/RichTextEditor/Toolbar/TableOpsMenu.js.map +1 -1
- package/dist/components/pro/RichTextEditor/Toolbar/Toolbar.js.map +1 -1
- package/dist/components/pro/RichTextEditor/Toolbar/ToolbarButton.js.map +1 -1
- package/dist/components/pro/RichTextEditor/Toolbar/useAnchoredDropdown.js.map +1 -1
- package/dist/components/pro/RichTextEditor/extensions/CodeBlockView.js.map +1 -1
- package/dist/components/pro/RichTextEditor/extensions/CommentMark.js.map +1 -1
- package/dist/components/pro/RichTextEditor/extensions/FloatingDialog.js.map +1 -1
- package/dist/components/pro/RichTextEditor/extensions/FontSize.js.map +1 -1
- package/dist/components/pro/RichTextEditor/extensions/MarkdownBlock.js.map +1 -1
- package/dist/components/pro/RichTextEditor/extensions/ResizableImage.js.map +1 -1
- package/dist/components/pro/RichTextEditor/extensions/legacyMermaid.js.map +1 -1
- package/dist/components/pro/RichTextEditor/types.d.ts +2 -0
- package/dist/components/pro/RichTextEditor/types.js.map +1 -1
- package/dist/components/pro/Sprite/Molly/animations.d.ts +6 -0
- package/dist/components/pro/Sprite/Molly/animations.js +52 -0
- package/dist/components/pro/Sprite/Molly/animations.js.map +1 -0
- package/dist/components/pro/Sprite/Molly/events.d.ts +2 -0
- package/dist/components/pro/Sprite/Molly/events.js +46 -0
- package/dist/components/pro/Sprite/Molly/events.js.map +1 -0
- package/dist/components/pro/Sprite/Molly/index.d.ts +1 -0
- package/dist/components/pro/Sprite/Molly/index.js +12 -0
- package/dist/components/pro/Sprite/Molly/index.js.map +1 -0
- package/dist/components/pro/Sprite/Molly/legFlexion.d.ts +3 -0
- package/dist/components/pro/Sprite/Molly/legFlexion.js +48 -0
- package/dist/components/pro/Sprite/Molly/legFlexion.js.map +1 -0
- package/dist/components/pro/Sprite/Molly/locomotion.d.ts +4 -0
- package/dist/components/pro/Sprite/Molly/locomotion.js +51 -0
- package/dist/components/pro/Sprite/Molly/locomotion.js.map +1 -0
- package/dist/components/pro/Sprite/Molly/model.d.ts +23 -0
- package/dist/components/pro/Sprite/Molly/model.js +614 -0
- package/dist/components/pro/Sprite/Molly/model.js.map +1 -0
- package/dist/components/pro/Sprite/Molly/rig.d.ts +25 -0
- package/dist/components/pro/Sprite/Molly/rig.js +102 -0
- package/dist/components/pro/Sprite/Molly/rig.js.map +1 -0
- package/dist/components/pro/Sprite/Ruby/animations.d.ts +6 -0
- package/dist/components/pro/Sprite/Ruby/animations.js +58 -0
- package/dist/components/pro/Sprite/Ruby/animations.js.map +1 -0
- package/dist/components/pro/Sprite/Ruby/events.d.ts +2 -0
- package/dist/components/pro/Sprite/Ruby/events.js +46 -0
- package/dist/components/pro/Sprite/Ruby/events.js.map +1 -0
- package/dist/components/pro/Sprite/Ruby/index.d.ts +1 -0
- package/dist/components/pro/Sprite/Ruby/index.js +12 -0
- package/dist/components/pro/Sprite/Ruby/index.js.map +1 -0
- package/dist/components/pro/Sprite/Ruby/locomotion.d.ts +4 -0
- package/dist/components/pro/Sprite/Ruby/locomotion.js +41 -0
- package/dist/components/pro/Sprite/Ruby/locomotion.js.map +1 -0
- package/dist/components/pro/Sprite/Ruby/model.d.ts +23 -0
- package/dist/components/pro/Sprite/Ruby/model.js +605 -0
- package/dist/components/pro/Sprite/Ruby/model.js.map +1 -0
- package/dist/components/pro/Sprite/Ruby/rig.d.ts +26 -0
- package/dist/components/pro/Sprite/Ruby/rig.js +112 -0
- package/dist/components/pro/Sprite/Ruby/rig.js.map +1 -0
- package/dist/components/pro/Sprite/Sprite.d.ts +23 -0
- package/dist/components/pro/Sprite/Sprite2.js +224 -0
- package/dist/components/pro/Sprite/Sprite2.js.map +1 -0
- package/dist/components/pro/Sprite/actions.d.ts +3 -0
- package/dist/components/pro/Sprite/actions.js +16 -0
- package/dist/components/pro/Sprite/actions.js.map +1 -0
- package/dist/components/pro/Sprite/createSpriteScene.d.ts +4 -0
- package/dist/components/pro/Sprite/createSpriteScene.js +14 -0
- package/dist/components/pro/Sprite/createSpriteScene.js.map +1 -0
- package/dist/components/pro/Sprite/index.d.ts +4 -0
- package/dist/components/pro/Sprite/shared/animation.d.ts +33 -0
- package/dist/components/pro/Sprite/shared/animation.js +39 -0
- package/dist/components/pro/Sprite/shared/animation.js.map +1 -0
- package/dist/components/pro/Sprite/shared/createSpriteStage.d.ts +14 -0
- package/dist/components/pro/Sprite/shared/createSpriteStage.js +127 -0
- package/dist/components/pro/Sprite/shared/createSpriteStage.js.map +1 -0
- package/dist/components/pro/Sprite/shared/events.d.ts +5 -0
- package/dist/components/pro/Sprite/shared/events.js +21 -0
- package/dist/components/pro/Sprite/shared/events.js.map +1 -0
- package/dist/components/pro/Sprite/shared/face.d.ts +15 -0
- package/dist/components/pro/Sprite/shared/face.js +33 -0
- package/dist/components/pro/Sprite/shared/face.js.map +1 -0
- package/dist/components/pro/Sprite/shared/faceSurface.d.ts +6 -0
- package/dist/components/pro/Sprite/shared/faceSurface.js +66 -0
- package/dist/components/pro/Sprite/shared/faceSurface.js.map +1 -0
- package/dist/components/pro/Sprite/shared/gait.d.ts +5 -0
- package/dist/components/pro/Sprite/shared/gait.js +19 -0
- package/dist/components/pro/Sprite/shared/gait.js.map +1 -0
- package/dist/components/pro/Sprite/shared/geometry.d.ts +8 -0
- package/dist/components/pro/Sprite/shared/geometry.js +59 -0
- package/dist/components/pro/Sprite/shared/geometry.js.map +1 -0
- package/dist/components/pro/Sprite/shared/magicEffect.d.ts +27 -0
- package/dist/components/pro/Sprite/shared/magicEffect.js +61 -0
- package/dist/components/pro/Sprite/shared/magicEffect.js.map +1 -0
- package/dist/components/pro/Sprite/shared/playback.d.ts +8 -0
- package/dist/components/pro/Sprite/shared/playback.js +74 -0
- package/dist/components/pro/Sprite/shared/playback.js.map +1 -0
- package/dist/components/pro/Sprite/shared/rig.d.ts +6 -0
- package/dist/components/pro/Sprite/shared/rig.js +48 -0
- package/dist/components/pro/Sprite/shared/rig.js.map +1 -0
- package/dist/components/pro/Sprite/shared/scene.d.ts +9 -0
- package/dist/components/pro/Sprite/shared/scene.js +21 -0
- package/dist/components/pro/Sprite/shared/scene.js.map +1 -0
- package/dist/components/pro/Sprite/shared/sculptor.d.ts +14 -0
- package/dist/components/pro/Sprite/shared/sculptor.js +78 -0
- package/dist/components/pro/Sprite/shared/sculptor.js.map +1 -0
- package/dist/components/pro/Sprite/shared/speechBubble.d.ts +15 -0
- package/dist/components/pro/Sprite/shared/speechBubble.js +129 -0
- package/dist/components/pro/Sprite/shared/speechBubble.js.map +1 -0
- package/dist/components/pro/Sprite/types.d.ts +40 -0
- package/dist/contexts/AppContext.js.map +1 -1
- package/dist/contexts/authentication.js.map +1 -1
- package/dist/data-table.js +3 -3
- package/dist/data-table.js.map +1 -1
- package/dist/dishui.css +1 -1
- package/dist/hooks/useClickOutside.js.map +1 -1
- package/dist/hooks/useContainerElement.js.map +1 -1
- package/dist/hooks/useControllableState.js.map +1 -1
- package/dist/hooks/useCopyToClipboard.js.map +1 -1
- package/dist/hooks/useDebounce.js.map +1 -1
- package/dist/hooks/useDraggable.js.map +1 -1
- package/dist/hooks/useTableColumns.js.map +1 -1
- package/dist/hooks/useTableData.js.map +1 -1
- package/dist/index-nostyled.d.ts +2 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +116 -115
- package/dist/layouts/MainLayout.js.map +1 -1
- package/dist/layouts/Navbar.js.map +1 -1
- package/dist/layouts/Sidebar.js.map +1 -1
- package/dist/layouts/headbar/Headbar.js.map +1 -1
- package/dist/layouts/headbar/HeadbarLangSwitcher.js.map +1 -1
- package/dist/layouts/headbar/HeadbarSearch.js.map +1 -1
- package/dist/layouts/headbar/HeadbarThemeSwitcher.js.map +1 -1
- package/dist/layouts/headbar/HeadbarTitle.js.map +1 -1
- package/dist/sprite.js +2 -0
- package/dist/styles/themeStyles.js.map +1 -1
- package/dist/utils/cn.js.map +1 -1
- package/dist/utils/flexLayout.js.map +1 -1
- package/dist/utils/i18n.js.map +1 -1
- package/dist/utils/menu.js.map +1 -1
- package/dist/utils/rehype-code-meta.js.map +1 -1
- package/dist/utils/remark-code-meta.js.map +1 -1
- package/dist/utils/routerBuilder.js.map +1 -1
- package/dist/utils/safeStorage.js.map +1 -1
- package/dist/utils/selection.js +29 -20
- package/dist/utils/selection.js.map +1 -1
- package/dist/utils/themes.js.map +1 -1
- package/package.json +15 -11
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { animateFace as e, samplePose as t } from "../shared/animation.js";
|
|
2
|
+
import { createMagicEffect as n } from "../shared/magicEffect.js";
|
|
3
|
+
import { createMollyLocomotion as r } from "./locomotion.js";
|
|
4
|
+
import * as i from "three";
|
|
5
|
+
//#region src/components/pro/Sprite/Molly/animations.ts
|
|
6
|
+
function a(a) {
|
|
7
|
+
let { body: o, head: s, front: c, back: l, tail: u } = a, d = r(a), f = n({
|
|
8
|
+
name: "starlight-magic",
|
|
9
|
+
palette: [
|
|
10
|
+
16766330,
|
|
11
|
+
16772532,
|
|
12
|
+
12577535
|
|
13
|
+
],
|
|
14
|
+
core: {
|
|
15
|
+
shape: "star",
|
|
16
|
+
growth: .17,
|
|
17
|
+
rotate: (e, t) => {
|
|
18
|
+
e.set(0, 0, Math.sin(t * 2) * .12);
|
|
19
|
+
}
|
|
20
|
+
},
|
|
21
|
+
haloColor: 16766843,
|
|
22
|
+
sparkSpeed: .8,
|
|
23
|
+
orbit: {
|
|
24
|
+
count: 2,
|
|
25
|
+
tube: .012,
|
|
26
|
+
arc: Math.PI * 2,
|
|
27
|
+
radius: .3,
|
|
28
|
+
spacing: .09,
|
|
29
|
+
opacity: .4,
|
|
30
|
+
rotate: (e, t, n) => {
|
|
31
|
+
e.set(1.05, n * .65, t * (n % 2 ? -.8 : .8) + n * .22);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
});
|
|
35
|
+
return u.add(f.group), {
|
|
36
|
+
pose: (n) => {
|
|
37
|
+
let r = t(n), { t: p, happy: m, talk: h, comfort: g, curious: _, greet: v, bye: y, rise: b, sad: x, wave: S, phase: C, magic: w, beat: T } = r, E = i.MathUtils.clamp((C - .16) / .4, 0, 1), D = 2.08 * E * (1 - E), O = b * (C < .16 ? Math.sin(C / .16 * Math.PI) : C > .56 && C < .82 ? Math.sin((C - .56) / .26 * Math.PI) : 0) * .15, k = C > .12 && C < .28 ? b * Math.sin((C - .12) / .16 * Math.PI) * .1 : 0, A = b * Math.sin(E * Math.PI), j = b * Math.sin(Math.min(1, E / .68) * Math.PI), M = -b * .12 * Math.sin(E * Math.PI * 2);
|
|
38
|
+
o.scale.set(1 + O * .35 - k * .25, 1 - O + k, 1 + O * .35 - k * .25), o.position.y = m * (.045 + .045 * Math.sin(p * 10)) + b * D, o.rotation.set(M + v * .06 + w, -y * .65, m * .025 * T + g * .025 - v * .025 + y * .045), o.position.y += w ? .48 - (Math.cos(w) * .48 + Math.sin(w) * .3) : 0, o.position.z = w ? -.3 - (Math.sin(w) * .48 - Math.cos(w) * .3) : 0, s.rotation.set(g * .09 + h * .022 * Math.sin(p * 8) + v * .2 * Math.sin(C * Math.PI) + x * .24 - w * .7 - M * .4, _ * .18 + y * .28, _ * -.13 + g * .12 + m * .035 * T - y * .1), s.position.y = 1.8 + m * .025 * T - x * .045, s.position.z = .06;
|
|
39
|
+
for (let e = 0; e < 2; e++) {
|
|
40
|
+
let t = e ? 1 : -1;
|
|
41
|
+
c[e].position.set(t * .285, 1.03, .115), c[e].scale.set(1, 1, 1), c[e].rotation.set(-m * (.35 + t * .25 * T) - h * (.1 + .1 * Math.sin(p * 6 + e)) - _ * (e ? .02 : .24) - j * .8 - w * 2.08 - (e ? v * 1.05 : y * .3), 0, t * (m * .18 + g * .1 + A * .08 + w * .06) + (e ? v * .16 : -y * (1.72 + .28 * Math.sin(p * 14)))), l[e].position.set(t * .34, .47 + w * .12, -.12), l[e].scale.set(1, 1, 1), l[e].rotation.set(m * (t * .2 * T - .12) + A * .65 - w, 0, t * (m * .045 + A * .05));
|
|
42
|
+
}
|
|
43
|
+
if (r.run === 0) for (let e = 0; e < 4; e++) a.flexLeg(e, 0);
|
|
44
|
+
e(a, r, -.3, .25), a.shapeTail(Math.max(w, r.run)), u.rotation.set(-w + A * .22, m * .25 * T + _ * .12 + S * .16 * Math.sin(p * 7), m * .2 * Math.sin(p * 10) + g * .08 + x * -.4), w > 0 && a.groundFeet(), d(r), f.group.position.set(.49 - w * .35, .7 + w * .76, -.08 + w * .25), f.update(p, C, w), a.face.update();
|
|
45
|
+
},
|
|
46
|
+
dispose: f.dispose
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
//#endregion
|
|
50
|
+
export { a as createMollyAnimations };
|
|
51
|
+
|
|
52
|
+
//# sourceMappingURL=animations.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"animations.js","names":["THREE","createMollyAnimations","rig","locomotion","createMollyLocomotion","magicEffect","createMagicEffect","i","tail","state","samplePose","input","prowl","flight","phase","jumpHeight","compression","rise","extension","tuck","foreTuck","jumpPitch","body","happy","t","greet","bye","beat","comfort","head","talk","sad","curious","side","front","back","animateFace","wave"],"sources":["../../../../../src/components/pro/Sprite/Molly/animations.ts"],"sourcesContent":["import * as THREE from 'three';\nimport type { SpritePose } from '../types';\nimport type { MollyRig } from './rig';\nimport { createMollyLocomotion } from './locomotion';\nimport { animateFace, samplePose } from '../shared/animation';\nimport { createMagicEffect } from '../shared/magicEffect';\n\nexport function createMollyAnimations(rig: MollyRig) {\n const { body, head, front, back, tail } = rig;\n const locomotion = createMollyLocomotion(rig);\n const magicEffect = createMagicEffect({\n name: 'starlight-magic', palette: [0xffd57a, 0xffedb4, 0xbfeaff],\n core: { shape: 'star', growth: 0.17, rotate: (rotation, t) => { rotation.set(0, 0, Math.sin(t * 2) * 0.12); } },\n haloColor: 0xffd77b, sparkSpeed: 0.8,\n orbit: {\n count: 2, tube: 0.012, arc: Math.PI * 2, radius: 0.30, spacing: 0.09, opacity: 0.40,\n rotate: (rotation, t, i) => { rotation.set(1.05, i * 0.65, t * (i % 2 ? -0.8 : 0.8) + i * 0.22); },\n },\n });\n tail.add(magicEffect.group);\n\n const pose = (input: SpritePose) => {\n const state = samplePose(input);\n const { t, happy, talk, comfort, curious, greet, bye, rise, sad, wave, phase, magic: prowl, beat } = state;\n // 720 ms of flight over 0.52 model units: y = v0*t - g*t²/2, g ≈ 8.02 units/s².\n // No easing at the apex or touchdown: gravity keeps accelerating the fall until paw contact.\n const flight = THREE.MathUtils.clamp((phase - 0.16) / 0.40, 0, 1);\n const jumpHeight = 4 * 0.52 * flight * (1 - flight);\n const crouch = phase < 0.16 ? Math.sin(phase / 0.16 * Math.PI)\n : phase > 0.56 && phase < 0.82 ? Math.sin((phase - 0.56) / 0.26 * Math.PI) : 0;\n const compression = rise * crouch * 0.15;\n const extension = phase > 0.12 && phase < 0.28 ? rise * Math.sin((phase - 0.12) / 0.16 * Math.PI) * 0.10 : 0;\n const tuck = rise * Math.sin(flight * Math.PI);\n const foreTuck = rise * Math.sin(Math.min(1, flight / 0.68) * Math.PI);\n const jumpPitch = -rise * 0.12 * Math.sin(flight * Math.PI * 2);\n body.scale.set(1 + compression * 0.35 - extension * 0.25, 1 - compression + extension, 1 + compression * 0.35 - extension * 0.25);\n body.position.y = happy * (0.045 + 0.045 * Math.sin(t * 10)) + rise * jumpHeight;\n body.rotation.set(jumpPitch + greet * 0.06 + prowl, -bye * 0.65,\n happy * 0.025 * beat + comfort * 0.025 - greet * 0.025 + bye * 0.045);\n // Pitch around the seated rump, keeping the tail attachment and hind support in place.\n body.position.y += prowl ? 0.48 - (Math.cos(prowl) * 0.48 + Math.sin(prowl) * 0.30) : 0;\n body.position.z = prowl ? -0.30 - (Math.sin(prowl) * 0.48 - Math.cos(prowl) * 0.30) : 0;\n head.rotation.set(comfort * 0.09 + talk * 0.022 * Math.sin(t * 8) + greet * 0.20 * Math.sin(phase * Math.PI) + sad * 0.24 - prowl * 0.70 - jumpPitch * 0.4,\n curious * 0.18 + bye * 0.28,\n curious * -0.13 + comfort * 0.12 + happy * 0.035 * beat - bye * 0.10);\n head.position.y = 1.80 + happy * 0.025 * beat - sad * 0.045;\n head.position.z = 0.06;\n for (let i = 0; i < 2; i++) {\n const side = i ? 1 : -1;\n front[i].position.set(side * 0.285, 1.03, 0.115);\n front[i].scale.set(1, 1, 1);\n front[i].rotation.set(-happy * (0.35 + side * 0.25 * beat) - talk * (0.1 + 0.10 * Math.sin(t * 6 + i))\n - curious * (i ? 0.02 : 0.24) - foreTuck * 0.80 - prowl * 2.08 - (i ? greet * 1.05 : bye * 0.30),\n 0, side * (happy * 0.18 + comfort * 0.1 + tuck * 0.08 + prowl * 0.06)\n + (i ? greet * 0.16 : -bye * (1.72 + 0.28 * Math.sin(t * 14))));\n back[i].position.set(side * 0.34, 0.47 + prowl * 0.12, -0.12);\n back[i].scale.set(1, 1, 1);\n back[i].rotation.set(happy * (side * 0.2 * beat - 0.12) + tuck * 0.65 - prowl, 0, side * (happy * 0.045 + tuck * 0.05));\n }\n if (state.run === 0) for (let i = 0; i < 4; i++) rig.flexLeg(i, 0);\n animateFace(rig, state, -0.30, 0.25);\n rig.shapeTail(Math.max(prowl, state.run));\n tail.rotation.set(-prowl + tuck * 0.22, happy * 0.25 * beat + curious * 0.12 + wave * 0.16 * Math.sin(t * 7),\n happy * 0.2 * Math.sin(t * 10) + comfort * 0.08 + sad * -0.40);\n if (prowl > 0) rig.groundFeet();\n locomotion(state);\n magicEffect.group.position.set(0.49 - prowl * 0.35, 0.70 + prowl * 0.76, -0.08 + prowl * 0.25);\n magicEffect.update(t, phase, prowl);\n rig.face.update();\n };\n return { pose, dispose: magicEffect.dispose };\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { SPRITE_ACTION_DURATIONS as e } from "../actions.js";
|
|
2
|
+
//#region src/components/pro/Sprite/Molly/events.ts
|
|
3
|
+
var t = {
|
|
4
|
+
zh: "喵~我是 Molly。来和我聊聊今天的好心情吧!",
|
|
5
|
+
en: "Meow! I’m Molly. Tell me about your day!"
|
|
6
|
+
}, n = {
|
|
7
|
+
greeting: t,
|
|
8
|
+
localReply(e, n) {
|
|
9
|
+
switch (e) {
|
|
10
|
+
case "greeting": return t[n];
|
|
11
|
+
case "comfort": return n === "zh" ? "喵~我陪你待一会儿,要不要说说发生了什么?" : "Purr… I can stay with you. Want to tell me what happened?";
|
|
12
|
+
case "thanks": return n === "zh" ? "不客气!能陪你聊天我很开心。" : "You’re welcome! I love chatting with you.";
|
|
13
|
+
case "identity": return n === "zh" ? "我是喜欢晒太阳的小猫咪 Molly!" : "I’m Molly, the sunshine-loving cat!";
|
|
14
|
+
case "default": return n === "zh" ? "喵~我听到了!接下来发生了什么?" : "Meow, I’m listening! What happened next?";
|
|
15
|
+
}
|
|
16
|
+
},
|
|
17
|
+
action(t) {
|
|
18
|
+
switch (t.type) {
|
|
19
|
+
case "greet": return {
|
|
20
|
+
mood: "greet",
|
|
21
|
+
duration: e.greet
|
|
22
|
+
};
|
|
23
|
+
case "turn": return {
|
|
24
|
+
mood: "curious",
|
|
25
|
+
duration: 580
|
|
26
|
+
};
|
|
27
|
+
case "message-pending": return {
|
|
28
|
+
mood: "talk",
|
|
29
|
+
duration: 700,
|
|
30
|
+
sustain: !0
|
|
31
|
+
};
|
|
32
|
+
case "message-replied": return {
|
|
33
|
+
mood: t.comfort ? "comfort" : "talk",
|
|
34
|
+
duration: 1100
|
|
35
|
+
};
|
|
36
|
+
case "message-failed": return {
|
|
37
|
+
mood: "comfort",
|
|
38
|
+
duration: 1100
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
};
|
|
43
|
+
//#endregion
|
|
44
|
+
export { n as mollyEvents };
|
|
45
|
+
|
|
46
|
+
//# sourceMappingURL=events.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"events.js","names":["greeting","mollyEvents","intent","locale","event","SPRITE_ACTION_DURATIONS"],"sources":["../../../../../src/components/pro/Sprite/Molly/events.ts"],"sourcesContent":["import { SPRITE_ACTION_DURATIONS } from '../actions';\nimport type { SpriteCharacterEvents } from '../types';\n\nconst greeting: SpriteCharacterEvents['greeting'] = {\n zh: '喵~我是 Molly。来和我聊聊今天的好心情吧!',\n en: 'Meow! I’m Molly. Tell me about your day!',\n};\n\nexport const mollyEvents: SpriteCharacterEvents = {\n greeting,\n localReply(intent, locale) {\n switch (intent) {\n case 'greeting': return greeting[locale];\n case 'comfort': return locale === 'zh'\n ? '喵~我陪你待一会儿,要不要说说发生了什么?'\n : 'Purr… I can stay with you. Want to tell me what happened?';\n case 'thanks': return locale === 'zh'\n ? '不客气!能陪你聊天我很开心。'\n : 'You’re welcome! I love chatting with you.';\n case 'identity': return locale === 'zh'\n ? '我是喜欢晒太阳的小猫咪 Molly!'\n : 'I’m Molly, the sunshine-loving cat!';\n case 'default': return locale === 'zh'\n ? '喵~我听到了!接下来发生了什么?'\n : 'Meow, I’m listening! What happened next?';\n }\n },\n action(event) {\n switch (event.type) {\n case 'greet': return { mood: 'greet', duration: SPRITE_ACTION_DURATIONS.greet };\n case 'turn': return { mood: 'curious', duration: 580 };\n case 'message-pending': return { mood: 'talk', duration: 700, sustain: true };\n case 'message-replied': return { mood: event.comfort ? 'comfort' : 'talk', duration: 1100 };\n case 'message-failed': return { mood: 'comfort', duration: 1100 };\n }\n },\n};\n"],"mappings":";;AAGA,IAAMA,IAA8C;CAClD,IAAI;CACJ,IAAI;AACN,GAEaC,IAAqC;CAChD;CACA,WAAW,GAAQ,GAAQ;EACzB,QAAQC,GAAR;GACE,KAAK,YAAY,OAAOF,EAASG;GACjC,KAAK,WAAW,OAAOA,MAAW,OAC9B,0BACA;GACJ,KAAK,UAAU,OAAOA,MAAW,OAC7B,mBACA;GACJ,KAAK,YAAY,OAAOA,MAAW,OAC/B,uBACA;GACJ,KAAK,WAAW,OAAOA,MAAW,OAC9B,qBACA;EACN;CACF;CACA,OAAO,GAAO;EACZ,QAAQC,EAAM,MAAd;GACE,KAAK,SAAS,OAAO;IAAE,MAAM;IAAS,UAAUC,EAAwB;GAAM;GAC9E,KAAK,QAAQ,OAAO;IAAE,MAAM;IAAW,UAAU;GAAI;GACrD,KAAK,mBAAmB,OAAO;IAAE,MAAM;IAAQ,UAAU;IAAK,SAAS;GAAK;GAC5E,KAAK,mBAAmB,OAAO;IAAE,MAAMD,EAAM,UAAU,YAAY;IAAQ,UAAU;GAAK;GAC1F,KAAK,kBAAkB,OAAO;IAAE,MAAM;IAAW,UAAU;GAAK;EAClE;CACF;AACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function createMolly(): import("../types").SpriteScene;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { assembleSprite as e } from "../shared/scene.js";
|
|
2
|
+
import { createMollyRig as t } from "./rig.js";
|
|
3
|
+
import { createMollyAnimations as n } from "./animations.js";
|
|
4
|
+
//#region src/components/pro/Sprite/Molly/index.ts
|
|
5
|
+
function r() {
|
|
6
|
+
let r = t();
|
|
7
|
+
return e(r, n(r));
|
|
8
|
+
}
|
|
9
|
+
//#endregion
|
|
10
|
+
export { r as createMolly };
|
|
11
|
+
|
|
12
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":["createMolly","rig","createMollyRig","assembleSprite","createMollyAnimations"],"sources":["../../../../../src/components/pro/Sprite/Molly/index.ts"],"sourcesContent":["import { createMollyRig } from './rig';\nimport { createMollyAnimations } from './animations';\nimport { assembleSprite } from '../shared/scene';\n\nexport function createMolly() {\n const rig = createMollyRig();\n return assembleSprite(rig, createMollyAnimations(rig));\n}\n"],"mappings":";;;;AAIA,SAAgBA,IAAc;CAC5B,IAAMC,IAAMC,EAAe;CAC3B,OAAOC,EAAeF,GAAKG,EAAsBH,CAAG,CAAC;AACvD"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import * as e from "three";
|
|
2
|
+
//#region src/components/pro/Sprite/Molly/legFlexion.ts
|
|
3
|
+
function t(t, n) {
|
|
4
|
+
let r = [...t, ...n].map((t, n) => {
|
|
5
|
+
let r = n < 2 ? -.48 : -.2, i = n < 2 ? .12 : .065;
|
|
6
|
+
return {
|
|
7
|
+
pivotY: r,
|
|
8
|
+
pivotZ: .1,
|
|
9
|
+
meshes: t.children.filter((t) => t instanceof e.Mesh).map((t, a) => {
|
|
10
|
+
t.updateMatrix();
|
|
11
|
+
let o = t.geometry.getAttribute("position"), s = new Float32Array(o.array), c = new Float32Array(t.geometry.getAttribute("normal").array), l = Array.from({ length: o.count }, (n, r) => new e.Vector3().fromBufferAttribute(o, r).applyMatrix4(t.matrix));
|
|
12
|
+
return {
|
|
13
|
+
mesh: t,
|
|
14
|
+
positions: o,
|
|
15
|
+
rest: s,
|
|
16
|
+
normals: c,
|
|
17
|
+
points: l,
|
|
18
|
+
weights: l.map((t) => 1 - e.MathUtils.smoothstep(t.y, r - i, r + i)),
|
|
19
|
+
thigh: n >= 2 && a === 0,
|
|
20
|
+
inverse: t.matrix.clone().invert()
|
|
21
|
+
};
|
|
22
|
+
}),
|
|
23
|
+
previous: 0,
|
|
24
|
+
previousStance: 0
|
|
25
|
+
};
|
|
26
|
+
}), i = new e.Vector3();
|
|
27
|
+
return (e, t, n = 0) => {
|
|
28
|
+
let a = r[e];
|
|
29
|
+
if (a.previous !== t || a.previousStance !== n) {
|
|
30
|
+
a.previous = t, a.previousStance = n;
|
|
31
|
+
for (let { mesh: e, positions: r, rest: o, normals: s, points: c, weights: l, thigh: u, inverse: d } of a.meshes) {
|
|
32
|
+
if (t === 0 && n === 0) r.array.set(o), e.geometry.getAttribute("normal").array.set(s), e.geometry.getAttribute("normal").needsUpdate = !0;
|
|
33
|
+
else {
|
|
34
|
+
for (let e = 0; e < r.count; e++) {
|
|
35
|
+
let o = c[e], s = t * l[e], f = o.y - (u ? n * (o.y * .35 + .12) : 0) - a.pivotY, p = o.z - a.pivotZ;
|
|
36
|
+
i.set(o.x, a.pivotY + f * Math.cos(s) - p * Math.sin(s), a.pivotZ + f * Math.sin(s) + p * Math.cos(s)).applyMatrix4(d), r.setXYZ(e, i.x, i.y, i.z);
|
|
37
|
+
}
|
|
38
|
+
e.geometry.computeVertexNormals();
|
|
39
|
+
}
|
|
40
|
+
r.needsUpdate = !0, e.geometry.computeBoundingBox(), e.geometry.computeBoundingSphere();
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
//#endregion
|
|
46
|
+
export { t as createMollyLegFlexion };
|
|
47
|
+
|
|
48
|
+
//# sourceMappingURL=legFlexion.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"legFlexion.js","names":["THREE","createMollyLegFlexion","limbs","front","back","pivotY","index","blend","leg","child","positions","mesh","rest","normals","points","i","point","meshIndex","vertex","limb","bend","stance","angle","weights","y","thigh","z","inverse"],"sources":["../../../../../src/components/pro/Sprite/Molly/legFlexion.ts"],"sourcesContent":["import * as THREE from 'three';\n\n/** Bend the existing continuous sculpt around an elbow/hock without opening seams. */\nexport function createMollyLegFlexion(front: THREE.Group[], back: THREE.Group[]) {\n const limbs = [...front, ...back].map((leg, index) => {\n const pivotY = index < 2 ? -0.48 : -0.20;\n const pivotZ = 0.10;\n const blend = index < 2 ? 0.12 : 0.065;\n const meshes = leg.children.filter((child): child is THREE.Mesh => child instanceof THREE.Mesh).map((mesh, meshIndex) => {\n mesh.updateMatrix();\n const positions = mesh.geometry.getAttribute('position');\n const rest = new Float32Array(positions.array);\n const normals = new Float32Array(mesh.geometry.getAttribute('normal').array);\n const points = Array.from({ length: positions.count }, (_, i) =>\n new THREE.Vector3().fromBufferAttribute(positions, i).applyMatrix4(mesh.matrix));\n const weights = points.map(point => 1 - THREE.MathUtils.smoothstep(point.y, pivotY - blend, pivotY + blend));\n return { mesh, positions, rest, normals, points, weights, thigh: index >= 2 && meshIndex === 0,\n inverse: mesh.matrix.clone().invert() };\n });\n return { pivotY, pivotZ, meshes, previous: 0, previousStance: 0 };\n });\n const vertex = new THREE.Vector3();\n return (index: number, bend: number, stance = 0) => {\n const limb = limbs[index];\n if (limb.previous === bend && limb.previousStance === stance) return;\n limb.previous = bend;\n limb.previousStance = stance;\n for (const { mesh, positions, rest, normals, points, weights, thigh, inverse } of limb.meshes) {\n if (bend === 0 && stance === 0) {\n positions.array.set(rest);\n mesh.geometry.getAttribute('normal').array.set(normals);\n mesh.geometry.getAttribute('normal').needsUpdate = true;\n } else {\n for (let i = 0; i < positions.count; i++) {\n const point = points[i];\n const angle = bend * weights[i];\n // The seated haunch is round above the hip. As the leg unfolds, keep\n // that volume below its attachment instead of scaling it into a spike.\n const y = point.y - (thigh ? stance * (point.y * 0.35 + 0.12) : 0) - limb.pivotY;\n const z = point.z - limb.pivotZ;\n vertex.set(point.x, limb.pivotY + y * Math.cos(angle) - z * Math.sin(angle),\n limb.pivotZ + y * Math.sin(angle) + z * Math.cos(angle)).applyMatrix4(inverse);\n positions.setXYZ(i, vertex.x, vertex.y, vertex.z);\n }\n mesh.geometry.computeVertexNormals();\n }\n positions.needsUpdate = true;\n mesh.geometry.computeBoundingBox();\n mesh.geometry.computeBoundingSphere();\n }\n };\n}\n"],"mappings":";;AAGA,SAAgBC,EAAsB,GAAsB,GAAqB;CAC/E,IAAMC,IAAQ,CAAC,GAAGC,GAAO,GAAGC,CAAI,CAAC,CAAC,KAAK,GAAK,MAAU;EACpD,IAAMC,IAASC,IAAQ,IAAI,OAAQ,KAE7BC,IAAQD,IAAQ,IAAI,MAAO;EAYjC,OAAO;GAAE;GAAQ;GAAQ,QAXVE,EAAI,SAAS,QAAQ,MAA+BC,aAAiBT,EAAM,IAAI,CAAC,CAAC,KAAK,GAAM,MAAc;IACvH,EAAK,aAAa;IAClB,IAAMU,IAAYC,EAAK,SAAS,aAAa,UAAU,GACjDC,IAAO,IAAI,aAAaF,EAAU,KAAK,GACvCG,IAAU,IAAI,aAAaF,EAAK,SAAS,aAAa,QAAQ,CAAC,CAAC,KAAK,GACrEG,IAAS,MAAM,KAAK,EAAE,QAAQJ,EAAU,MAAM,IAAI,GAAG,MACzD,IAAIV,EAAM,QAAQ,CAAC,CAAC,oBAAoBU,GAAWK,CAAC,CAAC,CAAC,aAAaJ,EAAK,MAAM,CAAC;IAEjF,OAAO;KAAE;KAAM;KAAW;KAAM;KAAS;KAAQ,SADjCG,EAAO,KAAI,MAAS,IAAId,EAAM,UAAU,WAAWgB,EAAM,GAAGX,IAASE,GAAOF,IAASE,CAAK,CACzD;KAAS,OAAOD,KAAS,KAAKW,MAAc;KACrF,SAASN,EAAK,OAAO,MAAM,CAAC,CAAC,OAAO;IAAE;GAChD,CACyB;GAAQ,UAAU;GAAG,gBAAgB;EAAE;CAClE,CAAC,GACKO,IAAS,IAAIlB,EAAM,QAAQ;CACjC,QAAQ,GAAe,GAAc,IAAS,MAAM;EAClD,IAAMmB,IAAOjB,EAAMI;EACnB,IAAIa,EAAK,aAAaC,KAAQD,EAAK,mBAAmBE,GAEtD;GADA,EAAK,WAAWD,GAChB,EAAK,iBAAiBC;GACtB,KAAK,IAAM,EAAE,SAAM,cAAW,SAAM,YAAS,WAAQ,YAAS,UAAO,gBAAaF,EAAK,QAAQ;IAC7F,IAAIC,MAAS,KAAKC,MAAW,GAG3B,AAFAX,EAAU,MAAM,IAAIE,CAAI,GACxBD,EAAK,SAAS,aAAa,QAAQ,CAAC,CAAC,MAAM,IAAIE,CAAO,GACtD,EAAK,SAAS,aAAa,QAAQ,CAAC,CAAC,cAAc;SAC9C;KACL,KAAK,IAAIE,IAAI,GAAGA,IAAIL,EAAU,OAAO,KAAK;MACxC,IAAMM,IAAQF,EAAOC,IACfO,IAAQF,IAAOG,EAAQR,IAGvBS,IAAIR,EAAM,KAAKS,IAAQJ,KAAUL,EAAM,IAAI,MAAO,OAAQ,KAAKG,EAAK,QACpEO,IAAIV,EAAM,IAAIG,EAAK;MAGzB,AAFAD,EAAO,IAAIF,EAAM,GAAGG,EAAK,SAASK,IAAI,KAAK,IAAIF,CAAK,IAAII,IAAI,KAAK,IAAIJ,CAAK,GACxEH,EAAK,SAASK,IAAI,KAAK,IAAIF,CAAK,IAAII,IAAI,KAAK,IAAIJ,CAAK,CAAC,CAAC,CAAC,aAAaK,CAAO,GAC/EjB,EAAU,OAAOK,GAAGG,EAAO,GAAGA,EAAO,GAAGA,EAAO,CAAC;KAClD;KACA,EAAK,SAAS,qBAAqB;IACrC;IAGA,AAFA,EAAU,cAAc,IACxBP,EAAK,SAAS,mBAAmB,GACjCA,EAAK,SAAS,sBAAsB;GACtC;EAvBsB;CAwBxB;AACF"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { MollyRig } from './rig';
|
|
2
|
+
import type { samplePose } from '../shared/animation';
|
|
3
|
+
/** Raise the seated kitten into a catwalk or a stretched gallop with the chest above the hips. */
|
|
4
|
+
export declare function createMollyLocomotion(rig: MollyRig): ({ t, walk, run }: ReturnType<typeof samplePose>) => void;
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { sampleFootstep as e } from "../shared/gait.js";
|
|
2
|
+
//#region src/components/pro/Sprite/Molly/locomotion.ts
|
|
3
|
+
var t = [
|
|
4
|
+
0,
|
|
5
|
+
.5,
|
|
6
|
+
.75,
|
|
7
|
+
.25
|
|
8
|
+
], n = [
|
|
9
|
+
.5,
|
|
10
|
+
.42,
|
|
11
|
+
0,
|
|
12
|
+
-.08
|
|
13
|
+
], r = 2, i = .7;
|
|
14
|
+
function a(a) {
|
|
15
|
+
let { body: o, head: s, front: c, back: l, tail: u } = a, d = [...c, ...l], f = [
|
|
16
|
+
0,
|
|
17
|
+
0,
|
|
18
|
+
0,
|
|
19
|
+
0
|
|
20
|
+
];
|
|
21
|
+
return ({ t: c, walk: l, run: p }) => {
|
|
22
|
+
if (p > 0) {
|
|
23
|
+
let t = c * r, l = (t % 1 + 1) % 1, m = l * Math.PI * 2, h = l < .5 ? (l - .08) / .12 : (l - .58) / .12, g = h > 0 && h < 1 ? .12 * Math.sin(h * Math.PI) ** 2 : 0, _ = p * (1.22 + .035 * Math.sin(m - .4));
|
|
24
|
+
o.rotation.set(_, 0, p * .012 * Math.sin(m)), o.position.set(0, 0, -p * .95 * Math.sin(_)), s.rotation.set(-_ + p * .035, 0, -o.rotation.z * .5);
|
|
25
|
+
let v = p * .16;
|
|
26
|
+
s.position.y = 1.8 + v * Math.cos(_), s.position.z = .06 - v * Math.sin(_);
|
|
27
|
+
for (let r = 0; r < d.length; r++) {
|
|
28
|
+
let o = r < 2, s = r % 2 ? 1 : -1, c = e(t, n[r], i), l = c.lift * c.lift, u = p * (o ? 1.7 : -.9) * l;
|
|
29
|
+
a.flexLeg(r, u, p), d[r].rotation.set(-_ - p * (o ? .5 : .6) * c.travel - u * .45, 0, s * p * .012), d[r].position.set(s * (o ? .285 : .34), o ? 1.03 : .47, o ? .115 - p * .22 : -.12 - p * .08);
|
|
30
|
+
let m = 1 - p * (o ? .04 : .14);
|
|
31
|
+
d[r].scale.set(m, 1 + p * (o ? .04 : 1.15), m), f[r] = p * g;
|
|
32
|
+
}
|
|
33
|
+
u.rotation.set(-_ - p * (1.22 + .035 * Math.sin(m - .6)), p * .04 * Math.sin(m - .5), p * .025 * Math.sin(m - .8)), a.groundFeet(f, "body");
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
36
|
+
if (l === 0) return;
|
|
37
|
+
let m = c * 1.25, h = m * Math.PI * 2, g = l * .3;
|
|
38
|
+
o.rotation.set(g, l * .025 * Math.sin(h), l * .02 * Math.sin(h)), o.position.y = .48 - (Math.cos(g) * .48 + Math.sin(g) * .3) + l * .18 + l * (.008 + .008 * Math.cos(h * 2)), o.position.z = -.3 - (Math.sin(g) * .48 - Math.cos(g) * .3), s.rotation.x = -g * .86, s.rotation.z = -o.rotation.z * .5, s.position.y = 1.8;
|
|
39
|
+
for (let n = 0; n < d.length; n++) {
|
|
40
|
+
let r = n < 2, i = n % 2 ? 1 : -1, a = e(m, t[n], .32);
|
|
41
|
+
d[n].rotation.set(-g - l * .24 * a.travel, 0, i * -l * .02), d[n].position.x = i * ((r ? .285 : .34) - l * (r ? .03 : .045)), d[n].position.z = (r ? .115 : -.12) + l * (r ? .08 : -.1) + l * i * (r ? .015 : -.015) * Math.sin(h), d[n].position.y = r ? 1.03 : .47;
|
|
42
|
+
let o = r ? 1 : 1 - l * .08, s = r ? 1 : 1 + l * .36;
|
|
43
|
+
d[n].scale.set(o, s, o), f[n] = l * .075 * a.lift;
|
|
44
|
+
}
|
|
45
|
+
u.rotation.set(-g + l * .1, l * .2 * Math.sin(h), l * .09 * Math.cos(h)), a.groundFeet(f);
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
//#endregion
|
|
49
|
+
export { a as createMollyLocomotion };
|
|
50
|
+
|
|
51
|
+
//# sourceMappingURL=locomotion.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"locomotion.js","names":["walkOffsets","runOffsets","runCadence","swingFraction","createMollyLocomotion","rig","legs","front","back","clearance","run","cycle","t","phase","angle","flight","air","pitch","body","head","headLift","i","isFront","side","step","sampleFootstep","fold","bend","width","tail","walk","length"],"sources":["../../../../../src/components/pro/Sprite/Molly/locomotion.ts"],"sourcesContent":["import type { MollyRig } from './rig';\nimport type { samplePose } from '../shared/animation';\nimport { sampleFootstep } from '../shared/gait';\n\nconst walkOffsets = [0, 0.5, 0.75, 0.25];\nconst runOffsets = [0.50, 0.42, 0, -0.08];\nconst runCadence = 2;\nconst swingFraction = 0.70;\n\n/** Raise the seated kitten into a catwalk or a stretched gallop with the chest above the hips. */\nexport function createMollyLocomotion(rig: MollyRig) {\n const { body, head, front, back, tail } = rig;\n const legs = [...front, ...back];\n const clearance = [0, 0, 0, 0];\n return ({ t, walk, run }: ReturnType<typeof samplePose>) => {\n if (run > 0) {\n const cycle = t * runCadence;\n const phase = ((cycle % 1) + 1) % 1;\n const angle = phase * Math.PI * 2;\n // Hind push-off, extended flight, fore support, gathered flight. Each pair\n // lands 8% of a cycle apart; suspension only occupies the gaps in support.\n const flight = phase < 0.5 ? (phase - 0.08) / 0.12 : (phase - 0.58) / 0.12;\n const air = flight > 0 && flight < 1 ? 0.12 * Math.sin(flight * Math.PI) ** 2 : 0;\n const pitch = run * (1.22 + 0.035 * Math.sin(angle - 0.4));\n body.rotation.set(pitch, 0, run * 0.012 * Math.sin(angle));\n body.position.set(0, 0, -run * 0.95 * Math.sin(pitch));\n head.rotation.set(-pitch + run * 0.035, 0, -body.rotation.z * 0.5);\n // Lift vertically rather than along the tilted torso's spine.\n const headLift = run * 0.16;\n head.position.y = 1.80 + headLift * Math.cos(pitch);\n head.position.z = 0.06 - headLift * Math.sin(pitch);\n for (let i = 0; i < legs.length; i++) {\n const isFront = i < 2;\n const side = i % 2 ? 1 : -1;\n const step = sampleFootstep(cycle, runOffsets[i], swingFraction);\n const fold = step.lift * step.lift;\n const bend = run * (isFront ? 1.70 : -0.90) * fold;\n // The elbow folds back and the hock folds forward during recovery.\n // Counter-swing the upper limb so the paw passes under the belly, not\n // through the ground; open the joint again before it accepts weight.\n rig.flexLeg(i, bend, run);\n legs[i].rotation.set(-pitch - run * (isFront ? 0.50 : 0.60) * step.travel - bend * 0.45,\n 0, side * run * 0.012);\n legs[i].position.set(side * (isFront ? 0.285 : 0.34), isFront ? 1.03 : 0.47,\n isFront ? 0.115 - run * 0.22 : -0.12 - run * 0.08);\n const width = 1 - run * (isFront ? 0.04 : 0.14);\n legs[i].scale.set(width, 1 + run * (isFront ? 0.04 : 1.15), width);\n clearance[i] = run * air;\n }\n tail.rotation.set(-pitch - run * (1.22 + 0.035 * Math.sin(angle - 0.6)),\n run * 0.04 * Math.sin(angle - 0.5), run * 0.025 * Math.sin(angle - 0.8));\n rig.groundFeet(clearance, 'body');\n return;\n }\n if (walk === 0) return;\n const cycle = t * 1.25;\n const angle = cycle * Math.PI * 2;\n const pitch = walk * 0.30;\n body.rotation.set(pitch, walk * 0.025 * Math.sin(angle), walk * 0.02 * Math.sin(angle));\n body.position.y = 0.48 - (Math.cos(pitch) * 0.48 + Math.sin(pitch) * 0.30)\n + walk * 0.18 + walk * (0.008 + 0.008 * Math.cos(angle * 2));\n body.position.z = -0.30 - (Math.sin(pitch) * 0.48 - Math.cos(pitch) * 0.30);\n head.rotation.x = -pitch * 0.86;\n head.rotation.z = -body.rotation.z * 0.5;\n head.position.y = 1.80;\n for (let i = 0; i < legs.length; i++) {\n const isFront = i < 2;\n const side = i % 2 ? 1 : -1;\n const step = sampleFootstep(cycle, walkOffsets[i], 0.32);\n legs[i].rotation.set(-pitch - walk * 0.24 * step.travel, 0, side * -walk * 0.02);\n legs[i].position.x = side * ((isFront ? 0.285 : 0.34) - walk * (isFront ? 0.03 : 0.045));\n legs[i].position.z = (isFront ? 0.115 : -0.12) + walk * (isFront ? 0.08 : -0.10)\n + walk * side * (isFront ? 0.015 : -0.015) * Math.sin(angle);\n legs[i].position.y = isFront ? 1.03 : 0.47;\n const width = isFront ? 1 : 1 - walk * 0.08;\n const length = isFront ? 1 : 1 + walk * 0.36;\n legs[i].scale.set(width, length, width);\n clearance[i] = walk * 0.075 * step.lift;\n }\n tail.rotation.set(-pitch + walk * 0.10, walk * 0.20 * Math.sin(angle), walk * 0.09 * Math.cos(angle));\n rig.groundFeet(clearance);\n };\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import * as THREE from 'three';
|
|
2
|
+
/** Local shapes only. Articulated groups remain unbound until createMollyRig. */
|
|
3
|
+
export declare function createMollyModel(): {
|
|
4
|
+
body: THREE.Group<THREE.Object3DEventMap>;
|
|
5
|
+
head: THREE.Group<THREE.Object3DEventMap>;
|
|
6
|
+
front: THREE.Group<THREE.Object3DEventMap>[];
|
|
7
|
+
back: THREE.Group<THREE.Object3DEventMap>[];
|
|
8
|
+
tail: THREE.Group<THREE.Object3DEventMap>;
|
|
9
|
+
tailMesh: THREE.Mesh<THREE.BufferGeometry<THREE.NormalBufferAttributes, THREE.BufferGeometryEventMap>, THREE.Material<THREE.MaterialEventMap>, THREE.Object3DEventMap>;
|
|
10
|
+
tailRest: Float32Array<ArrayBuffer>;
|
|
11
|
+
tailLifted: Float32Array<ArrayBuffer>;
|
|
12
|
+
ears: THREE.Group<THREE.Object3DEventMap>[];
|
|
13
|
+
eyes: THREE.Group<THREE.Object3DEventMap>[];
|
|
14
|
+
lids: THREE.Group<THREE.Object3DEventMap>[];
|
|
15
|
+
brows: THREE.Group<THREE.Object3DEventMap>[];
|
|
16
|
+
mouth: THREE.Group<THREE.Object3DEventMap>;
|
|
17
|
+
lip: THREE.Group<THREE.Object3DEventMap>;
|
|
18
|
+
opening: THREE.Mesh<THREE.BufferGeometry<THREE.NormalBufferAttributes, THREE.BufferGeometryEventMap>, THREE.Material<THREE.MaterialEventMap>, THREE.Object3DEventMap>;
|
|
19
|
+
tongue: THREE.Mesh<THREE.BufferGeometry<THREE.NormalBufferAttributes, THREE.BufferGeometryEventMap>, THREE.Material<THREE.MaterialEventMap>, THREE.Object3DEventMap>;
|
|
20
|
+
skin: THREE.Mesh<THREE.BufferGeometry<THREE.NormalBufferAttributes, THREE.BufferGeometryEventMap>, THREE.Material<THREE.MaterialEventMap>[] | THREE.Material<THREE.MaterialEventMap>, THREE.Object3DEventMap>[];
|
|
21
|
+
patches: import("../shared/face").FacePatch[];
|
|
22
|
+
dispose: () => void;
|
|
23
|
+
};
|