@coderyo/interaction 1.0.0-rc.2
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/index.d.ts +22 -0
- package/dist/index.js +45 -0
- package/dist/index.js.map +1 -0
- package/package.json +36 -0
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
interface ChartKeyboardActions {
|
|
2
|
+
fitContent?: () => void;
|
|
3
|
+
scrollToRealtime?: () => void;
|
|
4
|
+
toggleFullscreen?: () => void;
|
|
5
|
+
exportImage?: () => void;
|
|
6
|
+
toggleLogScale?: () => void;
|
|
7
|
+
toggleTheme?: () => void;
|
|
8
|
+
selectCursorTool?: () => void;
|
|
9
|
+
deleteSelectedDrawing?: () => void;
|
|
10
|
+
}
|
|
11
|
+
declare function bindChartKeyboard(actions: ChartKeyboardActions): () => void;
|
|
12
|
+
|
|
13
|
+
/** Interaction handlers (pan/zoom/crosshair) — wired via LWC in PR-08+ */
|
|
14
|
+
interface InteractionOptions {
|
|
15
|
+
enableCrosshair?: boolean;
|
|
16
|
+
enablePanZoom?: boolean;
|
|
17
|
+
}
|
|
18
|
+
declare function createInteraction(_opts?: InteractionOptions): {
|
|
19
|
+
destroy: () => void;
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
export { type ChartKeyboardActions, type InteractionOptions, bindChartKeyboard, createInteraction };
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
// src/keyboard.ts
|
|
2
|
+
function bindChartKeyboard(actions) {
|
|
3
|
+
const handler = (e) => {
|
|
4
|
+
const tag = e.target?.tagName;
|
|
5
|
+
if (tag === "INPUT" || tag === "TEXTAREA" || tag === "SELECT") return;
|
|
6
|
+
const key = e.key.toLowerCase();
|
|
7
|
+
if (key === "f" && !e.ctrlKey && !e.metaKey) {
|
|
8
|
+
actions.toggleFullscreen?.();
|
|
9
|
+
e.preventDefault();
|
|
10
|
+
} else if (key === "s" && !e.ctrlKey && !e.metaKey) {
|
|
11
|
+
actions.exportImage?.();
|
|
12
|
+
e.preventDefault();
|
|
13
|
+
} else if (key === "l" && !e.ctrlKey && !e.metaKey) {
|
|
14
|
+
actions.toggleLogScale?.();
|
|
15
|
+
e.preventDefault();
|
|
16
|
+
} else if (key === "t" && !e.ctrlKey && !e.metaKey) {
|
|
17
|
+
actions.toggleTheme?.();
|
|
18
|
+
e.preventDefault();
|
|
19
|
+
} else if (key === "r" && !e.ctrlKey && !e.metaKey) {
|
|
20
|
+
actions.fitContent?.();
|
|
21
|
+
e.preventDefault();
|
|
22
|
+
} else if (e.key === "End" || key === "arrowright" && e.altKey) {
|
|
23
|
+
actions.scrollToRealtime?.();
|
|
24
|
+
e.preventDefault();
|
|
25
|
+
} else if (key === "escape") {
|
|
26
|
+
actions.selectCursorTool?.();
|
|
27
|
+
e.preventDefault();
|
|
28
|
+
} else if (e.key === "Delete" || e.key === "Backspace") {
|
|
29
|
+
if (actions.deleteSelectedDrawing?.()) e.preventDefault();
|
|
30
|
+
}
|
|
31
|
+
};
|
|
32
|
+
window.addEventListener("keydown", handler);
|
|
33
|
+
return () => window.removeEventListener("keydown", handler);
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
// src/index.ts
|
|
37
|
+
function createInteraction(_opts = {}) {
|
|
38
|
+
return { destroy: () => {
|
|
39
|
+
} };
|
|
40
|
+
}
|
|
41
|
+
export {
|
|
42
|
+
bindChartKeyboard,
|
|
43
|
+
createInteraction
|
|
44
|
+
};
|
|
45
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/keyboard.ts","../src/index.ts"],"sourcesContent":["export interface ChartKeyboardActions {\n fitContent?: () => void;\n scrollToRealtime?: () => void;\n toggleFullscreen?: () => void;\n exportImage?: () => void;\n toggleLogScale?: () => void;\n toggleTheme?: () => void;\n selectCursorTool?: () => void;\n deleteSelectedDrawing?: () => void;\n}\n\nexport function bindChartKeyboard(actions: ChartKeyboardActions): () => void {\n const handler = (e: KeyboardEvent) => {\n const tag = (e.target as HTMLElement)?.tagName;\n if (tag === 'INPUT' || tag === 'TEXTAREA' || tag === 'SELECT') return;\n\n const key = e.key.toLowerCase();\n if (key === 'f' && !e.ctrlKey && !e.metaKey) {\n actions.toggleFullscreen?.();\n e.preventDefault();\n } else if (key === 's' && !e.ctrlKey && !e.metaKey) {\n actions.exportImage?.();\n e.preventDefault();\n } else if (key === 'l' && !e.ctrlKey && !e.metaKey) {\n actions.toggleLogScale?.();\n e.preventDefault();\n } else if (key === 't' && !e.ctrlKey && !e.metaKey) {\n actions.toggleTheme?.();\n e.preventDefault();\n } else if (key === 'r' && !e.ctrlKey && !e.metaKey) {\n actions.fitContent?.();\n e.preventDefault();\n } else if (e.key === 'End' || (key === 'arrowright' && e.altKey)) {\n actions.scrollToRealtime?.();\n e.preventDefault();\n } else if (key === 'escape') {\n actions.selectCursorTool?.();\n e.preventDefault();\n } else if (e.key === 'Delete' || e.key === 'Backspace') {\n if (actions.deleteSelectedDrawing?.()) e.preventDefault();\n }\n };\n\n window.addEventListener('keydown', handler);\n return () => window.removeEventListener('keydown', handler);\n}","export * from './keyboard.js';\n\n/** Interaction handlers (pan/zoom/crosshair) — wired via LWC in PR-08+ */\nexport interface InteractionOptions {\n enableCrosshair?: boolean;\n enablePanZoom?: boolean;\n}\n\nexport function createInteraction(_opts: InteractionOptions = {}): { destroy: () => void } {\n return { destroy: () => {} };\n}"],"mappings":";AAWO,SAAS,kBAAkB,SAA2C;AAC3E,QAAM,UAAU,CAAC,MAAqB;AACpC,UAAM,MAAO,EAAE,QAAwB;AACvC,QAAI,QAAQ,WAAW,QAAQ,cAAc,QAAQ,SAAU;AAE/D,UAAM,MAAM,EAAE,IAAI,YAAY;AAC9B,QAAI,QAAQ,OAAO,CAAC,EAAE,WAAW,CAAC,EAAE,SAAS;AAC3C,cAAQ,mBAAmB;AAC3B,QAAE,eAAe;AAAA,IACnB,WAAW,QAAQ,OAAO,CAAC,EAAE,WAAW,CAAC,EAAE,SAAS;AAClD,cAAQ,cAAc;AACtB,QAAE,eAAe;AAAA,IACnB,WAAW,QAAQ,OAAO,CAAC,EAAE,WAAW,CAAC,EAAE,SAAS;AAClD,cAAQ,iBAAiB;AACzB,QAAE,eAAe;AAAA,IACnB,WAAW,QAAQ,OAAO,CAAC,EAAE,WAAW,CAAC,EAAE,SAAS;AAClD,cAAQ,cAAc;AACtB,QAAE,eAAe;AAAA,IACnB,WAAW,QAAQ,OAAO,CAAC,EAAE,WAAW,CAAC,EAAE,SAAS;AAClD,cAAQ,aAAa;AACrB,QAAE,eAAe;AAAA,IACnB,WAAW,EAAE,QAAQ,SAAU,QAAQ,gBAAgB,EAAE,QAAS;AAChE,cAAQ,mBAAmB;AAC3B,QAAE,eAAe;AAAA,IACnB,WAAW,QAAQ,UAAU;AAC3B,cAAQ,mBAAmB;AAC3B,QAAE,eAAe;AAAA,IACnB,WAAW,EAAE,QAAQ,YAAY,EAAE,QAAQ,aAAa;AACtD,UAAI,QAAQ,wBAAwB,EAAG,GAAE,eAAe;AAAA,IAC1D;AAAA,EACF;AAEA,SAAO,iBAAiB,WAAW,OAAO;AAC1C,SAAO,MAAM,OAAO,oBAAoB,WAAW,OAAO;AAC5D;;;ACrCO,SAAS,kBAAkB,QAA4B,CAAC,GAA4B;AACzF,SAAO,EAAE,SAAS,MAAM;AAAA,EAAC,EAAE;AAC7B;","names":[]}
|
package/package.json
ADDED
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@coderyo/interaction",
|
|
3
|
+
"version": "1.0.0-rc.2",
|
|
4
|
+
"license": "MIT",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"exports": {
|
|
7
|
+
".": {
|
|
8
|
+
"types": "./dist/index.d.ts",
|
|
9
|
+
"import": "./dist/index.js"
|
|
10
|
+
}
|
|
11
|
+
},
|
|
12
|
+
"devDependencies": {
|
|
13
|
+
"tsup": "^8.5.0",
|
|
14
|
+
"typescript": "^5.8.3",
|
|
15
|
+
"vitest": "^3.2.4",
|
|
16
|
+
"@coderyo/eslint-config": "0.0.0",
|
|
17
|
+
"@coderyo/tsconfig": "0.0.0"
|
|
18
|
+
},
|
|
19
|
+
"files": [
|
|
20
|
+
"dist"
|
|
21
|
+
],
|
|
22
|
+
"repository": {
|
|
23
|
+
"type": "git",
|
|
24
|
+
"url": "git+https://github.com/CodeRyoStudio/tradview.git",
|
|
25
|
+
"directory": "packages/interaction"
|
|
26
|
+
},
|
|
27
|
+
"publishConfig": {
|
|
28
|
+
"access": "public"
|
|
29
|
+
},
|
|
30
|
+
"scripts": {
|
|
31
|
+
"build": "tsup",
|
|
32
|
+
"test": "vitest run --passWithNoTests",
|
|
33
|
+
"lint": "eslint src",
|
|
34
|
+
"typecheck": "tsc --noEmit"
|
|
35
|
+
}
|
|
36
|
+
}
|