@pipsend/charts 2.3.10 → 2.3.12

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/typings.d.ts CHANGED
@@ -313,14 +313,6 @@ export declare class CrossLineTool extends DrawingToolBase {
313
313
  remove(): void;
314
314
  protected _serializeShape(): SerializedDrawingTool;
315
315
  }
316
- /**
317
- * A price line that can be dragged and clicked.
318
- *
319
- * Input is not handled here: every line on a chart shares a single
320
- * TradingLineController, which is what guarantees that one gesture moves one
321
- * line. Hit testing comes from the engine — the line's id travels as the price
322
- * line's `externalId` — so the hit area matches what is drawn.
323
- */
324
316
  export declare class DraggablePriceLine implements ControllableLine {
325
317
  private readonly _chart;
326
318
  private readonly _series;
@@ -336,6 +328,11 @@ export declare class DraggablePriceLine implements ControllableLine {
336
328
  isDraggable(): boolean;
337
329
  isClickable(): boolean;
338
330
  setHovered(hovered: boolean): void;
331
+ /**
332
+ * The engine draws this one, so there is no pane view to ask: a press within
333
+ * the line's own grab strip counts as a hit.
334
+ */
335
+ hitTestAt(x: number, y: number, slop?: number): unknown;
339
336
  priceAt(paneY: number): number | null;
340
337
  beginDrag(): void;
341
338
  dragTo(price: number): void;
@@ -389,6 +386,7 @@ export declare class DrawingToolsManager {
389
386
  private _mouseMoveHandler;
390
387
  private _pointerDownHandler;
391
388
  private _pointerUpHandler;
389
+ private _pointerMoveHandler;
392
390
  private _pointerCancelHandler;
393
391
  private _lostCaptureHandler;
394
392
  private _windowPointerUpHandler;
@@ -542,6 +540,12 @@ export declare class DrawingToolsManager {
542
540
  */
543
541
  private _findToolByExternalId;
544
542
  private _handlePointerDown;
543
+ /**
544
+ * The drag reads the crosshair, which touch never moves: its move handler
545
+ * only tries to pan, and the drag has just turned panning off. So touch is
546
+ * driven straight from the pointer instead.
547
+ */
548
+ private _handlePointerMove;
545
549
  private _handlePointerUp;
546
550
  /** Ends the drag when capture is lost without a pointerup ever arriving. */
547
551
  private _handleLostPointerCapture;
@@ -1161,6 +1165,7 @@ export declare class PositionLine implements ISeriesPrimitive, ControllableLine
1161
1165
  * of jumping to sit under it — which matters most when the label has been
1162
1166
  * fanned away from its own line.
1163
1167
  */
1168
+ hitTestAt(x: number, y: number, slop?: number): unknown;
1164
1169
  dragAnchorY(): number | null;
1165
1170
  beginDrag(): void;
1166
1171
  dragTo(price: number): void;
@@ -3300,6 +3305,12 @@ export interface ControllableLine {
3300
3305
  * the pointer and that point instead of snapping the line under the cursor.
3301
3306
  */
3302
3307
  dragAnchorY?(): number | null;
3308
+ /**
3309
+ * Optional. What sits at this pane point, as the id the hover would have
3310
+ * reported, or null. A touch has no hover — the press is the first event —
3311
+ * so it resolves the hit itself.
3312
+ */
3313
+ hitTestAt?(x: number, y: number, slop?: number): unknown;
3303
3314
  priceAt(paneY: number): number | null;
3304
3315
  beginDrag(): void;
3305
3316
  dragTo(price: number): void;
package/package.json CHANGED
@@ -1,5 +1,6 @@
1
1
  {
2
- "version": "2.3.10",
2
+ "private": false,
3
+ "version": "2.3.12",
3
4
  "name": "@pipsend/charts",
4
5
  "author": "Pipsend",
5
6
  "license": "SEE LICENSE IN LICENSE",
@@ -53,7 +54,88 @@
53
54
  "bollinger-bands",
54
55
  "financial-analysis"
55
56
  ],
57
+ "engines": {
58
+ "node": ">=22.3"
59
+ },
56
60
  "dependencies": {
57
61
  "fancy-canvas": "2.1.0"
62
+ },
63
+ "devDependencies": {
64
+ "@juggle/resize-observer": "3.4.0",
65
+ "@rollup/plugin-node-resolve": "16.0.1",
66
+ "@rollup/plugin-replace": "6.0.2",
67
+ "@rollup/plugin-terser": "0.4.4",
68
+ "@size-limit/file": "11.2.0",
69
+ "@size-limit/webpack": "11.2.0",
70
+ "@types/chai": "5.2.1",
71
+ "@types/express": "5.0.1",
72
+ "@types/glob": "8.1.0",
73
+ "@types/node": "22",
74
+ "@types/pixelmatch": "5.2.6",
75
+ "@types/pngjs": "6.0.5",
76
+ "@typescript-eslint/eslint-plugin": "7.18.0",
77
+ "@typescript-eslint/eslint-plugin-tslint": "7.0.2",
78
+ "@typescript-eslint/parser": "7.18.0",
79
+ "ajv": "7.2.4",
80
+ "bytes": "3.1.2",
81
+ "chai": "5.2.0",
82
+ "chai-exclude": "3.0.1",
83
+ "cross-env": "7.0.3",
84
+ "dts-bundle-generator": "9.5.1",
85
+ "eslint": "8",
86
+ "eslint-formatter-unix": "8.40.0",
87
+ "eslint-plugin-deprecation": "3.0.0",
88
+ "eslint-plugin-import": "2.31.0",
89
+ "eslint-plugin-unicorn": "56.0.1",
90
+ "esno": "4.8.0",
91
+ "glob": "11.0.1",
92
+ "markdown-it": "14.1.0",
93
+ "markdown-it-anchor": "9.2.0",
94
+ "markdownlint-cli": "0.44.0",
95
+ "npm-run-all": "4.1.5",
96
+ "rimraf": "6.0.1",
97
+ "rollup": "4.40.0",
98
+ "size-limit": "11.2.0",
99
+ "ts-node": "10.9.2",
100
+ "ts-patch": "3.3.0",
101
+ "ts-transformer-properties-rename": "0.17.0",
102
+ "ts-transformer-strip-const-enums": "2.0.0",
103
+ "tslib": "2.8.1",
104
+ "tslint": "6.1.3",
105
+ "tslint-eslint-rules": "5.4.0",
106
+ "tslint-microsoft-contrib": "6.2.0",
107
+ "tsx": "4.19.3",
108
+ "typescript": "5.5.4",
109
+ "yargs": "17.7.2"
110
+ },
111
+ "scripts": {
112
+ "prepare": "node scripts/githooks/install.js || true",
113
+ "clean": "rimraf lib/ dist/",
114
+ "bundle-dts": "dts-bundle-generator --config dts-config.json",
115
+ "tsc": "tspc -p tsconfig.prod.json",
116
+ "tsc-watch": "npm run tsc -- --watch --preserveWatchOutput",
117
+ "tsc-verify": "node -e \"const fs=require('fs');const p='website/scripts/generate-versions-dts.js'; if(fs.existsSync(p)){require('child_process').execSync('node '+p,{stdio:'inherit'});} else {console.warn('[tsc-verify] skip: '+p+' not found');}\" && tsc -b tsconfig.composite.json",
118
+ "lint": "npm-run-all -p lint:**",
119
+ "lint:eslint": "eslint --format=unix ./",
120
+ "lint:md": "markdownlint -i \"**/node_modules/**\" -i \"**/website/docs/api/**\" -i \"**/website/versioned_docs/**/api/**\" -i \"**/*.mdx\" \"**/*.md\"",
121
+ "check-dts-docs": "npm-run-all -p check-dts-docs-duplicates check-dts-docs-eslint",
122
+ "check-dts-docs-duplicates": "node ./scripts/check-typings-for-duplicates.js ./dist/typings.d.ts",
123
+ "check-dts-docs-eslint": "eslint --format=unix ./dist/typings.d.ts --no-ignore",
124
+ "check-markdown-links": "node scripts/check-markdown-links.js",
125
+ "rollup": "rollup -c rollup.config.js",
126
+ "rollup-watch": "npm run rollup -- --watch",
127
+ "build": "npm-run-all tsc rollup bundle-dts",
128
+ "build:watch": "npm-run-all tsc -p tsc-watch rollup-watch",
129
+ "build:prod": "cross-env NODE_ENV=production npm run build",
130
+ "build:release": "cross-env BUILD_TAG=release npm run build:prod",
131
+ "prepare-release": "npm-run-all clean build:release && npm run prepare-package-json-for-release",
132
+ "prepare-package-json-for-release": "node ./scripts/clean-package-json.js",
133
+ "size-limit": "size-limit",
134
+ "verify": "npm-run-all clean -p build:prod check-markdown-links -p lint check-dts-docs tsc-verify test size-limit -p type-tests",
135
+ "test": "esno --import ./tests/unittests/setup.units.mjs --test './tests/unittests/**/*.spec.ts'",
136
+ "type-tests": "tsc -b ./src/tsconfig.composite.json && tsc -p ./tests/type-checks/tsconfig.composite.json --noEmit",
137
+ "e2e:coverage": "esno ./tests/e2e/coverage/runner.ts ./dist/pipsend-charts.standalone.development.js",
138
+ "e2e:interactions": "esno ./tests/e2e/interactions/runner.ts ./dist/pipsend-charts.standalone.development.js",
139
+ "e2e:memleaks": "esno ./tests/e2e/memleaks/runner.ts ./dist/pipsend-charts.standalone.development.js"
58
140
  }
59
141
  }