@gui-chat-plugin/scroll-to-anchor 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +66 -0
- package/dist/core/definition.d.ts +7 -0
- package/dist/core/index.d.ts +5 -0
- package/dist/core/plugin.d.ts +12 -0
- package/dist/core/types.d.ts +7 -0
- package/dist/core.cjs +1 -0
- package/dist/core.js +47 -0
- package/dist/index.cjs +1 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.js +8 -0
- package/dist/style.css +1 -0
- package/dist/vue/index.d.ts +16 -0
- package/dist/vue.cjs +1 -0
- package/dist/vue.js +15 -0
- package/package.json +63 -0
package/README.md
ADDED
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
# @gui-chat-plugin/scroll-to-anchor
|
|
2
|
+
|
|
3
|
+
[](https://www.npmjs.com/package/@gui-chat-plugin/scroll-to-anchor)
|
|
4
|
+
|
|
5
|
+
A scroll-to-anchor plugin for [MulmoChat](https://github.com/receptron/MulmoChat).
|
|
6
|
+
|
|
7
|
+
## Overview
|
|
8
|
+
|
|
9
|
+
This plugin allows the AI to scroll the view to a specific tool result by its anchor ID. Useful for navigating between multiple results in a conversation.
|
|
10
|
+
|
|
11
|
+
## Installation
|
|
12
|
+
|
|
13
|
+
```bash
|
|
14
|
+
yarn add @gui-chat-plugin/scroll-to-anchor
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
## Usage
|
|
18
|
+
|
|
19
|
+
### Vue Implementation (for MulmoChat)
|
|
20
|
+
|
|
21
|
+
```typescript
|
|
22
|
+
// In src/tools/index.ts
|
|
23
|
+
import ScrollToAnchorPlugin from "@gui-chat-plugin/scroll-to-anchor/vue";
|
|
24
|
+
|
|
25
|
+
const pluginList = [
|
|
26
|
+
// ... other plugins
|
|
27
|
+
ScrollToAnchorPlugin,
|
|
28
|
+
];
|
|
29
|
+
|
|
30
|
+
// In src/main.ts
|
|
31
|
+
import "@gui-chat-plugin/scroll-to-anchor/style.css";
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
### Core Only (Framework-agnostic)
|
|
35
|
+
|
|
36
|
+
```typescript
|
|
37
|
+
import { pluginCore, TOOL_NAME } from "@gui-chat-plugin/scroll-to-anchor";
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
## Package Exports
|
|
41
|
+
|
|
42
|
+
| Export | Description |
|
|
43
|
+
|--------|-------------|
|
|
44
|
+
| `@gui-chat-plugin/scroll-to-anchor` | Core (framework-agnostic) |
|
|
45
|
+
| `@gui-chat-plugin/scroll-to-anchor/vue` | Vue implementation |
|
|
46
|
+
| `@gui-chat-plugin/scroll-to-anchor/style.css` | Tailwind CSS styles |
|
|
47
|
+
|
|
48
|
+
## Test Prompts
|
|
49
|
+
|
|
50
|
+
1. "Show me the previous image" (after generating multiple images)
|
|
51
|
+
2. "Go back to the first result"
|
|
52
|
+
3. "Scroll to the quiz"
|
|
53
|
+
|
|
54
|
+
## Development
|
|
55
|
+
|
|
56
|
+
```bash
|
|
57
|
+
yarn install
|
|
58
|
+
yarn dev # Start dev server
|
|
59
|
+
yarn build # Build
|
|
60
|
+
yarn typecheck # Type check
|
|
61
|
+
yarn lint # Lint
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
## License
|
|
65
|
+
|
|
66
|
+
MIT
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ScrollToAnchor Tool Definition (Schema)
|
|
3
|
+
*/
|
|
4
|
+
import type { ToolDefinition } from "gui-chat-protocol";
|
|
5
|
+
export declare const TOOL_NAME = "scrollToAnchor";
|
|
6
|
+
export declare const TOOL_DEFINITION: ToolDefinition;
|
|
7
|
+
export declare const SYSTEM_PROMPT = "Use the scrollToAnchor API to scroll the document view to a specific anchor when the user asks to read a specific step or navigate to a section. For example, when the user says \"read step 3\" or \"what's next?\", call this function with the appropriate anchor ID (e.g., \"step-3\") BEFORE or AFTER reading the step aloud.";
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ScrollToAnchor Plugin Core (Framework-agnostic)
|
|
3
|
+
*/
|
|
4
|
+
import type { ToolPluginCore, ToolContext, ToolResult } from "gui-chat-protocol";
|
|
5
|
+
import type { ScrollToAnchorArgs } from "./types";
|
|
6
|
+
export { TOOL_NAME, TOOL_DEFINITION, SYSTEM_PROMPT } from "./definition";
|
|
7
|
+
/**
|
|
8
|
+
* Execute the scrollToAnchor function
|
|
9
|
+
* Updates the current result's viewState to trigger scrolling in the document
|
|
10
|
+
*/
|
|
11
|
+
export declare const executeScrollToAnchor: (context: ToolContext, args: ScrollToAnchorArgs) => Promise<ToolResult>;
|
|
12
|
+
export declare const pluginCore: ToolPluginCore<unknown, unknown, ScrollToAnchorArgs>;
|
package/dist/core.cjs
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t="scrollToAnchor",r={type:"function",name:t,description:"Scroll the current document view to a specific anchor tag. Use this when reading recipe steps aloud or navigating to specific sections.",parameters:{type:"object",properties:{anchorId:{type:"string",description:'The ID of the anchor tag to scroll to (e.g., "step-1", "step-2"). Should match the anchor IDs in the document.'}},required:["anchorId"]}},s=`Use the ${t} API to scroll the document view to a specific anchor when the user asks to read a specific step or navigate to a section. For example, when the user says "read step 3" or "what's next?", call this function with the appropriate anchor ID (e.g., "step-3") BEFORE or AFTER reading the step aloud.`,n=async(e,c)=>{const{anchorId:o}=c;return e.currentResult?{...e.currentResult,message:`Scrolled to ${o}`,updating:!0,viewState:{...e.currentResult.viewState,scrollToAnchor:o,scrollTimestamp:Date.now()},instructions:"Read the step aloud.",instructionsRequired:!0}:{message:"No document is currently displayed to scroll.",updating:!1}},i={toolDefinition:r,execute:n,generatingMessage:"Scrolling to section...",isEnabled:()=>!0,systemPrompt:s};exports.SYSTEM_PROMPT=s;exports.TOOL_DEFINITION=r;exports.TOOL_NAME=t;exports.executeScrollToAnchor=n;exports.pluginCore=i;
|
package/dist/core.js
ADDED
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
const o = "scrollToAnchor", s = {
|
|
2
|
+
type: "function",
|
|
3
|
+
name: o,
|
|
4
|
+
description: "Scroll the current document view to a specific anchor tag. Use this when reading recipe steps aloud or navigating to specific sections.",
|
|
5
|
+
parameters: {
|
|
6
|
+
type: "object",
|
|
7
|
+
properties: {
|
|
8
|
+
anchorId: {
|
|
9
|
+
type: "string",
|
|
10
|
+
description: 'The ID of the anchor tag to scroll to (e.g., "step-1", "step-2"). Should match the anchor IDs in the document.'
|
|
11
|
+
}
|
|
12
|
+
},
|
|
13
|
+
required: ["anchorId"]
|
|
14
|
+
}
|
|
15
|
+
}, n = `Use the ${o} API to scroll the document view to a specific anchor when the user asks to read a specific step or navigate to a section. For example, when the user says "read step 3" or "what's next?", call this function with the appropriate anchor ID (e.g., "step-3") BEFORE or AFTER reading the step aloud.`, c = async (e, r) => {
|
|
16
|
+
const { anchorId: t } = r;
|
|
17
|
+
return e.currentResult ? {
|
|
18
|
+
...e.currentResult,
|
|
19
|
+
message: `Scrolled to ${t}`,
|
|
20
|
+
updating: !0,
|
|
21
|
+
// This will update the existing result instead of creating a new one
|
|
22
|
+
viewState: {
|
|
23
|
+
...e.currentResult.viewState,
|
|
24
|
+
scrollToAnchor: t,
|
|
25
|
+
scrollTimestamp: Date.now()
|
|
26
|
+
// Add timestamp to ensure reactivity even with same anchor
|
|
27
|
+
},
|
|
28
|
+
instructions: "Read the step aloud.",
|
|
29
|
+
instructionsRequired: !0
|
|
30
|
+
} : {
|
|
31
|
+
message: "No document is currently displayed to scroll.",
|
|
32
|
+
updating: !1
|
|
33
|
+
};
|
|
34
|
+
}, i = {
|
|
35
|
+
toolDefinition: s,
|
|
36
|
+
execute: c,
|
|
37
|
+
generatingMessage: "Scrolling to section...",
|
|
38
|
+
isEnabled: () => !0,
|
|
39
|
+
systemPrompt: n
|
|
40
|
+
};
|
|
41
|
+
export {
|
|
42
|
+
n as SYSTEM_PROMPT,
|
|
43
|
+
s as TOOL_DEFINITION,
|
|
44
|
+
o as TOOL_NAME,
|
|
45
|
+
c as executeScrollToAnchor,
|
|
46
|
+
i as pluginCore
|
|
47
|
+
};
|
package/dist/index.cjs
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./core.cjs");exports.SYSTEM_PROMPT=e.SYSTEM_PROMPT;exports.TOOL_DEFINITION=e.TOOL_DEFINITION;exports.TOOL_NAME=e.TOOL_NAME;exports.executeScrollToAnchor=e.executeScrollToAnchor;exports.pluginCore=e.pluginCore;
|
package/dist/index.d.ts
ADDED
package/dist/index.js
ADDED
package/dist/style.css
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-space-y-reverse:0;--tw-border-style:solid;--tw-font-weight:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000}}}@layer theme{:root,:host{--font-sans:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--color-yellow-50:oklch(98.7% .026 102.212);--color-yellow-200:oklch(94.5% .129 101.54);--color-yellow-700:oklch(55.4% .135 66.442);--color-yellow-800:oklch(47.6% .114 61.907);--color-indigo-600:oklch(51.1% .262 276.966);--color-indigo-700:oklch(45.7% .24 277.023);--color-gray-100:oklch(96.7% .003 264.542);--color-gray-300:oklch(87.2% .01 258.338);--color-gray-600:oklch(44.6% .03 256.802);--color-gray-800:oklch(27.8% .033 256.848);--color-white:#fff;--spacing:.25rem;--container-3xl:48rem;--text-xs:.75rem;--text-xs--line-height:calc(1/.75);--text-sm:.875rem;--text-sm--line-height:calc(1.25/.875);--text-lg:1.125rem;--text-lg--line-height:calc(1.75/1.125);--text-xl:1.25rem;--text-xl--line-height:calc(1.75/1.25);--text-2xl:1.5rem;--text-2xl--line-height:calc(2/1.5);--font-weight-bold:700;--radius-lg:.5rem;--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.mx-auto{margin-inline:auto}.mt-4{margin-top:calc(var(--spacing)*4)}.mb-2{margin-bottom:calc(var(--spacing)*2)}.mb-4{margin-bottom:calc(var(--spacing)*4)}.mb-5{margin-bottom:calc(var(--spacing)*5)}.mb-8{margin-bottom:calc(var(--spacing)*8)}.contents{display:contents}.flex{display:flex}.max-w-3xl{max-width:var(--container-3xl)}.flex-1{flex:1}.gap-2{gap:calc(var(--spacing)*2)}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*2)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*2)*calc(1 - var(--tw-space-y-reverse)))}.overflow-auto{overflow:auto}.rounded{border-radius:.25rem}.rounded-lg{border-radius:var(--radius-lg)}.border{border-style:var(--tw-border-style);border-width:1px}.border-gray-300{border-color:var(--color-gray-300)}.border-yellow-200{border-color:var(--color-yellow-200)}.bg-gray-100{background-color:var(--color-gray-100)}.bg-indigo-600{background-color:var(--color-indigo-600)}.bg-white{background-color:var(--color-white)}.bg-yellow-50{background-color:var(--color-yellow-50)}.p-3{padding:calc(var(--spacing)*3)}.p-5{padding:calc(var(--spacing)*5)}.p-8{padding:calc(var(--spacing)*8)}.px-3{padding-inline:calc(var(--spacing)*3)}.px-4{padding-inline:calc(var(--spacing)*4)}.py-2{padding-block:calc(var(--spacing)*2)}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.text-gray-600{color:var(--color-gray-600)}.text-gray-800{color:var(--color-gray-800)}.text-white{color:var(--color-white)}.text-yellow-700{color:var(--color-yellow-700)}.text-yellow-800{color:var(--color-yellow-800)}.shadow-md{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a),0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}@media(hover:hover){.hover\:bg-indigo-700:hover{background-color:var(--color-indigo-700)}}}body{margin:calc(var(--spacing)*0);background-color:var(--color-gray-100);padding:calc(var(--spacing)*5);font-family:var(--font-sans)}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ScrollToAnchor Plugin - Vue Implementation
|
|
3
|
+
*
|
|
4
|
+
* Note: This plugin has no View or Preview components
|
|
5
|
+
* It only updates the viewState of the current result to trigger scrolling
|
|
6
|
+
*/
|
|
7
|
+
import "../style.css";
|
|
8
|
+
import type { ToolPlugin } from "gui-chat-protocol/vue";
|
|
9
|
+
import type { ScrollToAnchorArgs } from "../core/types";
|
|
10
|
+
export declare const plugin: ToolPlugin<unknown, unknown, ScrollToAnchorArgs>;
|
|
11
|
+
export type { ScrollToAnchorArgs } from "../core/types";
|
|
12
|
+
export { TOOL_NAME, TOOL_DEFINITION, SYSTEM_PROMPT, executeScrollToAnchor, pluginCore, } from "../core/plugin";
|
|
13
|
+
declare const _default: {
|
|
14
|
+
plugin: ToolPlugin<unknown, unknown, ScrollToAnchorArgs, import("gui-chat-protocol/vue").InputHandler, Record<string, unknown>>;
|
|
15
|
+
};
|
|
16
|
+
export default _default;
|
package/dist/vue.cjs
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("./core.cjs"),o={...e.pluginCore},l={plugin:o};exports.SYSTEM_PROMPT=e.SYSTEM_PROMPT;exports.TOOL_DEFINITION=e.TOOL_DEFINITION;exports.TOOL_NAME=e.TOOL_NAME;exports.executeScrollToAnchor=e.executeScrollToAnchor;exports.pluginCore=e.pluginCore;exports.default=l;exports.plugin=o;
|
package/dist/vue.js
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { pluginCore as o } from "./core.js";
|
|
2
|
+
import { SYSTEM_PROMPT as T, TOOL_DEFINITION as c, TOOL_NAME as l, executeScrollToAnchor as p } from "./core.js";
|
|
3
|
+
const e = {
|
|
4
|
+
...o
|
|
5
|
+
// No viewComponent or previewComponent - this plugin updates existing results
|
|
6
|
+
}, t = { plugin: e };
|
|
7
|
+
export {
|
|
8
|
+
T as SYSTEM_PROMPT,
|
|
9
|
+
c as TOOL_DEFINITION,
|
|
10
|
+
l as TOOL_NAME,
|
|
11
|
+
t as default,
|
|
12
|
+
p as executeScrollToAnchor,
|
|
13
|
+
e as plugin,
|
|
14
|
+
o as pluginCore
|
|
15
|
+
};
|
package/package.json
ADDED
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@gui-chat-plugin/scroll-to-anchor",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "Scroll to anchor plugin for GUIChat",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "./dist/index.cjs",
|
|
7
|
+
"module": "./dist/index.js",
|
|
8
|
+
"types": "./dist/index.d.ts",
|
|
9
|
+
"exports": {
|
|
10
|
+
".": {
|
|
11
|
+
"types": "./dist/index.d.ts",
|
|
12
|
+
"import": "./dist/index.js",
|
|
13
|
+
"require": "./dist/index.cjs"
|
|
14
|
+
},
|
|
15
|
+
"./core": {
|
|
16
|
+
"types": "./dist/core/index.d.ts",
|
|
17
|
+
"import": "./dist/core.js",
|
|
18
|
+
"require": "./dist/core.cjs"
|
|
19
|
+
},
|
|
20
|
+
"./vue": {
|
|
21
|
+
"types": "./dist/vue/index.d.ts",
|
|
22
|
+
"import": "./dist/vue.js",
|
|
23
|
+
"require": "./dist/vue.cjs"
|
|
24
|
+
},
|
|
25
|
+
"./style.css": "./dist/style.css"
|
|
26
|
+
},
|
|
27
|
+
"files": [
|
|
28
|
+
"dist"
|
|
29
|
+
],
|
|
30
|
+
"scripts": {
|
|
31
|
+
"dev": "vite",
|
|
32
|
+
"build": "vite build && vue-tsc -p tsconfig.build.json --emitDeclarationOnly",
|
|
33
|
+
"typecheck": "vue-tsc --noEmit",
|
|
34
|
+
"lint": "eslint src demo"
|
|
35
|
+
},
|
|
36
|
+
"peerDependencies": {
|
|
37
|
+
"gui-chat-protocol": "^0.0.1",
|
|
38
|
+
"vue": "^3.5.0"
|
|
39
|
+
},
|
|
40
|
+
"devDependencies": {
|
|
41
|
+
"@tailwindcss/vite": "^4.1.18",
|
|
42
|
+
"@typescript-eslint/eslint-plugin": "^8.53.0",
|
|
43
|
+
"@typescript-eslint/parser": "^8.53.0",
|
|
44
|
+
"@vitejs/plugin-vue": "^6.0.3",
|
|
45
|
+
"eslint": "^9.39.2",
|
|
46
|
+
"eslint-plugin-vue": "^10.6.2",
|
|
47
|
+
"globals": "^17.0.0",
|
|
48
|
+
"gui-chat-protocol": "^0.0.1",
|
|
49
|
+
"tailwindcss": "^4.1.18",
|
|
50
|
+
"typescript": "~5.9.3",
|
|
51
|
+
"vite": "^7.3.1",
|
|
52
|
+
"vue": "^3.5.27",
|
|
53
|
+
"vue-eslint-parser": "^10.2.0",
|
|
54
|
+
"vue-tsc": "^3.2.2"
|
|
55
|
+
},
|
|
56
|
+
"keywords": [
|
|
57
|
+
"guichat",
|
|
58
|
+
"plugin",
|
|
59
|
+
"scroll",
|
|
60
|
+
"anchor"
|
|
61
|
+
],
|
|
62
|
+
"license": "MIT"
|
|
63
|
+
}
|