@connectorvol/chess-widgets 7.0.3 → 8.0.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.
@@ -1,68 +1,83 @@
1
1
  <script lang="ts">
2
- import type { TGameAnalyzerProps } from "./types.js";
2
+ import type { TGameAnalyzerProps } from "./types.js";
3
3
 
4
- import { Chessboard, DEFAULT_BOARD_SETTINGS } from "@connectorvol/chessboard";
5
- import { TreeViewer, TreeViewerPanelManager } from "@connectorvol/tree";
6
- import { Game } from "./gameAnalyzer.svelte.js";
7
- import { untrack } from "svelte";
4
+ import { Chessboard } from "@connectorvol/chessboard";
5
+ import { TreeViewer, TreeViewerPanelManager } from "@connectorvol/tree";
6
+ import { Game } from "./gameAnalyzer.svelte.js";
7
+ import { untrack } from "svelte";
8
8
 
9
- let {
10
- pgn,
11
- onChangePGN,
12
- boardTheme,
13
- boardAppearanceSettings,
14
- editMode = true,
15
- class: className,
16
- }: TGameAnalyzerProps = $props();
9
+ let {
10
+ pgn,
11
+ onChangePGN,
12
+ boardTheme,
13
+ boardAppearanceSettings,
14
+ editMode = true,
15
+ class: className,
16
+ }: TGameAnalyzerProps = $props();
17
17
 
18
-
19
- let game = $derived(new Game(
20
- untrack(() => pgn),
21
- {
22
- ...DEFAULT_BOARD_SETTINGS,
23
- ...boardAppearanceSettings,
24
- boardSize: "auto",
25
- },
26
- "chess",
27
- boardTheme,
28
- ))
18
+ let game = $derived(
19
+ new Game(
20
+ untrack(() => pgn),
21
+ {
22
+ ...boardAppearanceSettings,
23
+ },
24
+ "chess",
25
+ boardTheme,
26
+ ),
27
+ );
29
28
 
30
- function handleChangeDirty(_setIsDirty: (value: boolean) => void) {
31
- console.log('handleChangeDirty')
32
- const exported = game.exportPgn();
33
- onChangePGN?.(exported);
34
- }
35
-
29
+ let boardSize = $derived(
30
+ game.chessboard.getBoard().settingsService.boardSize,
31
+ );
32
+ let isAutoSize = $derived(boardSize === "auto");
33
+
34
+ function handleChangeDirty(_setIsDirty: (value: boolean) => void) {
35
+ console.log("handleChangeDirty");
36
+ const exported = game.exportPgn();
37
+ onChangePGN?.(exported);
38
+ }
36
39
  </script>
37
40
 
38
41
  <div class={["mx-4 lg:container lg:mx-auto gap-4", className]}>
39
- <div class="flex justify-center relative lg:gap-4 flex-col lg:flex-row">
40
- <div class="lg:w-2/5">
41
- <Chessboard facade={game.chessboard} />
42
- </div>
43
-
42
+ <div class="flex justify-center relative lg:gap-4 flex-col lg:flex-row">
43
+ <div
44
+ class={[
45
+ "w-full",
46
+ isAutoSize ? "lg:w-2/5" : "lg:w-auto lg:min-w-[3.75rem]",
47
+ ]}
48
+ style={!isAutoSize && typeof boardSize === "number"
49
+ ? `flex-basis: ${boardSize}rem;`
50
+ : ""}
51
+ >
52
+ <Chessboard facade={game.chessboard} />
53
+ </div>
44
54
 
45
- <div class="lg:w-3/5 flex lg:flex-col flex-col-reverse h-full">
46
- <div class="h-full">
47
- <TreeViewer
48
- className="h-[calc(100dvh-8rem)]"
49
- chessTree={game.chessTree}
50
- onSelectNode={game.onSelectNode}
51
- onDeleteVariant={game.onDeleteVariant}
52
- setChessFen={game.setChessFen}
53
- setChessboardFen={game.setChessboardFen}
54
- pieceSet={game.chessboard.chessSet}
55
- {editMode}
56
- onChangeDirty={handleChangeDirty}
57
- />
58
- </div>
55
+ <div
56
+ class={[
57
+ "w-full flex lg:flex-col flex-col-reverse h-full",
58
+ isAutoSize ? "lg:w-3/5" : "lg:flex-1 lg:min-w-[20rem]",
59
+ ]}
60
+ >
61
+ <div class="h-full">
62
+ <TreeViewer
63
+ className="h-[calc(100dvh-8rem)]"
64
+ chessTree={game.chessTree}
65
+ onSelectNode={game.onSelectNode}
66
+ onDeleteVariant={game.onDeleteVariant}
67
+ setChessFen={game.setChessFen}
68
+ setChessboardFen={game.setChessboardFen}
69
+ pieceSet={game.chessboard.chessSet}
70
+ {editMode}
71
+ onChangeDirty={handleChangeDirty}
72
+ />
73
+ </div>
59
74
 
60
- <TreeViewerPanelManager
61
- className="flex w-full justify-center select-none col-span-1 my-4"
62
- chessTree={game.chessTree}
63
- setChessFen={game.setChessFen}
64
- setChessboardFen={game.setChessboardFen}
65
- />
75
+ <TreeViewerPanelManager
76
+ className="flex w-full justify-center select-none col-span-1 my-4"
77
+ chessTree={game.chessTree}
78
+ setChessFen={game.setChessFen}
79
+ setChessboardFen={game.setChessboardFen}
80
+ />
81
+ </div>
66
82
  </div>
67
- </div>
68
83
  </div>
@@ -1,5 +1,5 @@
1
1
  import { Color, calculatePly, generateId } from "@connectorvol/shared";
2
- import { CHESSBOARD_THEMES, createBoardApi, DEFAULT_BOARD_SETTINGS, Draggable, syncMoveEvaluationNagBadge, } from "@connectorvol/chessboard";
2
+ import { CHESSBOARD_THEMES, createBoardApi, Draggable, syncMoveEvaluationNagBadge, } from "@connectorvol/chessboard";
3
3
  import { PgnOps } from "@connectorvol/chessops/pgnOps.svelte";
4
4
  import { transformPgnToChessNode, createPgnFromTree } from "@connectorvol/tree";
5
5
  import { ChessTree } from "@connectorvol/tree";
@@ -12,7 +12,7 @@ export class Game {
12
12
  boardSettings;
13
13
  variant;
14
14
  boardTheme;
15
- constructor(pgn, chessBoardSettings = DEFAULT_BOARD_SETTINGS, variant = "chess", boardTheme) {
15
+ constructor(pgn, chessBoardSettings, variant = "chess", boardTheme) {
16
16
  this.boardSettings = chessBoardSettings;
17
17
  this.variant = variant;
18
18
  this.boardTheme = boardTheme ?? CHESSBOARD_THEMES.blue;
@@ -59,7 +59,7 @@ export class Game {
59
59
  this.chessboard.setNodeMarkers(this.chessTree.currentNode.data.parsedFirstComment?.shapes);
60
60
  },
61
61
  beforePieceMove: (from, to, promotion) => {
62
- const { san, ply, fullMoves, move: lastMove } = this.chess.makeMove({
62
+ const { san, ply, fullMoves, move: lastMove, } = this.chess.makeMove({
63
63
  from,
64
64
  to,
65
65
  promotion,
@@ -23,7 +23,7 @@ export interface TGameAnalyzerProps {
23
23
  /**
24
24
  * Возвращает дополнительные визуальные настройки шахматной доски (кроме `boardSize`, `orientation`, `draggable`).
25
25
  */
26
- boardAppearanceSettings?: TChessboardAppearanceSettings;
26
+ boardAppearanceSettings: TChessboardAppearanceSettings;
27
27
  /**
28
28
  * Возвращает признак режима правки дерева (по умолчанию `true`).
29
29
  */
@@ -1,5 +1,5 @@
1
1
  import { INITIAL_FEN } from "@connectorvol/chessops/fen";
2
- import { makePgn, parsePgn, } from "@connectorvol/chessops/pgn";
2
+ import { makePgn, parsePgn } from "@connectorvol/chessops/pgn";
3
3
  /**
4
4
  * Представляет разбор полного PGN из дерева задачи на FEN и чистую строку ходов.
5
5
  */
@@ -12,7 +12,6 @@
12
12
  import {
13
13
  CHESSBOARD_THEMES,
14
14
  createBoardApi,
15
- DEFAULT_BOARD_SETTINGS,
16
15
  Draggable,
17
16
  syncMoveEvaluationNagBadge,
18
17
  } from "@connectorvol/chessboard";
@@ -389,8 +388,7 @@
389
388
  createBoardApi({
390
389
  fen: INITIAL_FEN,
391
390
  settings: {
392
- ...DEFAULT_BOARD_SETTINGS,
393
- ...(boardAppearanceSettings ?? {}),
391
+ ...boardAppearanceSettings,
394
392
  boardSize: 38,
395
393
  isResizable: false,
396
394
  orientation: Color.WHITE,
@@ -30,7 +30,7 @@
30
30
  /** Возвращает тему оформления шахматной доски (по умолчанию `CHESSBOARD_THEMES.blue`). */
31
31
  boardTheme?: ChessboardTheme;
32
32
  /** Возвращает дополнительные визуальные настройки шахматной доски (кроме `boardSize`, `orientation`, `draggable`). */
33
- boardAppearanceSettings?: TChessboardAppearanceSettings;
33
+ boardAppearanceSettings: TChessboardAppearanceSettings;
34
34
  }
35
35
 
36
36
  const props: Props = $props();
@@ -16,7 +16,7 @@ interface Props {
16
16
  /** Возвращает тему оформления шахматной доски (по умолчанию `CHESSBOARD_THEMES.blue`). */
17
17
  boardTheme?: ChessboardTheme;
18
18
  /** Возвращает дополнительные визуальные настройки шахматной доски (кроме `boardSize`, `orientation`, `draggable`). */
19
- boardAppearanceSettings?: TChessboardAppearanceSettings;
19
+ boardAppearanceSettings: TChessboardAppearanceSettings;
20
20
  }
21
21
  declare const StepPreview: import("svelte").Component<Props, {}, "">;
22
22
  type StepPreview = ReturnType<typeof StepPreview>;
@@ -10,7 +10,7 @@ export declare function sideToMoveFromFullFen(fullFen: string): Color;
10
10
  * Представляет создание API доски для интерактивного построения линии (как в мастере задач):
11
11
  * ориентация и перетаскивание по стороне хода, фиксированный размер доски.
12
12
  */
13
- export declare function createPuzzleLineEditingBoardApi(fullFen: string, actions: IChessBoardActions, opts?: {
13
+ export declare function createPuzzleLineEditingBoardApi(fullFen: string, actions: IChessBoardActions, opts: {
14
14
  boardTheme?: ChessboardTheme;
15
- boardAppearanceSettings?: TChessboardAppearanceSettings;
15
+ boardAppearanceSettings: TChessboardAppearanceSettings;
16
16
  }): import("@connectorvol/chessboard").BoardApi;
@@ -1,4 +1,4 @@
1
- import { CHESSBOARD_THEMES, createBoardApi, DEFAULT_BOARD_SETTINGS, Draggable, } from "@connectorvol/chessboard";
1
+ import { CHESSBOARD_THEMES, createBoardApi, Draggable, } from "@connectorvol/chessboard";
2
2
  import { Color } from "@connectorvol/shared";
3
3
  import { DEFAULT_EDITABLE_BOARD_SETTINGS } from "../constants/editable-board-settings.js";
4
4
  /**
@@ -12,13 +12,12 @@ export function sideToMoveFromFullFen(fullFen) {
12
12
  * Представляет создание API доски для интерактивного построения линии (как в мастере задач):
13
13
  * ориентация и перетаскивание по стороне хода, фиксированный размер доски.
14
14
  */
15
- export function createPuzzleLineEditingBoardApi(fullFen, actions, opts = {}) {
15
+ export function createPuzzleLineEditingBoardApi(fullFen, actions, opts) {
16
16
  const side = sideToMoveFromFullFen(fullFen);
17
- const { boardSize: _boardSize, orientation: _orientation, draggable: _draggable, ...appearanceSettings } = (opts.boardAppearanceSettings ?? {});
17
+ const { boardSize: _boardSize, orientation: _orientation, draggable: _draggable, ...appearanceSettings } = opts.boardAppearanceSettings;
18
18
  return createBoardApi({
19
19
  fen: fullFen,
20
20
  settings: {
21
- ...DEFAULT_BOARD_SETTINGS,
22
21
  ...appearanceSettings,
23
22
  boardSize: DEFAULT_EDITABLE_BOARD_SETTINGS.boardSize,
24
23
  isResizable: false,
@@ -40,7 +40,7 @@ export interface TPuzzlePgnBoardTreeEditorProps {
40
40
  /**
41
41
  * Возвращает дополнительные визуальные настройки шахматной доски (кроме `boardSize`, `orientation`, `draggable`).
42
42
  */
43
- boardAppearanceSettings?: TChessboardAppearanceSettings;
43
+ boardAppearanceSettings: TChessboardAppearanceSettings;
44
44
  /**
45
45
  * Возвращает дополнительные классы Tailwind для корневого контейнера раскладки.
46
46
  */
@@ -65,5 +65,5 @@ export interface TPuzzleCreationWizardProps {
65
65
  /**
66
66
  * Возвращает дополнительные визуальные настройки шахматной доски (кроме `boardSize`, `orientation`, `draggable`).
67
67
  */
68
- boardAppearanceSettings?: TChessboardAppearanceSettings;
68
+ boardAppearanceSettings: TChessboardAppearanceSettings;
69
69
  }
package/package.json CHANGED
@@ -1,10 +1,7 @@
1
1
  {
2
2
  "name": "@connectorvol/chess-widgets",
3
- "version": "7.0.3",
3
+ "version": "8.0.1",
4
4
  "private": false,
5
- "publishConfig": {
6
- "access": "public"
7
- },
8
5
  "files": [
9
6
  "dist",
10
7
  "!dist/**/*.test.*",
@@ -25,6 +22,9 @@
25
22
  "require": "./dist/index.js"
26
23
  }
27
24
  },
25
+ "publishConfig": {
26
+ "access": "public"
27
+ },
28
28
  "scripts": {
29
29
  "start": "vite",
30
30
  "dev": "vite",
@@ -42,10 +42,10 @@
42
42
  "test:e2e:ui": "node node_modules/@playwright/test/cli.js test --ui"
43
43
  },
44
44
  "dependencies": {
45
- "@connectorvol/chessboard": "7.0.2",
46
- "@connectorvol/chessops": "7.0.2",
47
- "@connectorvol/shared": "7.0.2",
48
- "@connectorvol/tree": "7.0.2",
45
+ "@connectorvol/chessboard": "8.0.1",
46
+ "@connectorvol/chessops": "8.0.1",
47
+ "@connectorvol/shared": "8.0.1",
48
+ "@connectorvol/tree": "8.0.1",
49
49
  "bits-ui": "2.16.4",
50
50
  "clsx": "^2.1.1",
51
51
  "svelte-toolbelt": "^0.10.6",
@@ -54,8 +54,8 @@
54
54
  },
55
55
  "devDependencies": {
56
56
  "@ianvs/prettier-plugin-sort-imports": "4.5.1",
57
- "@playwright/test": "1.54.1",
58
57
  "@lucide/svelte": "^1.16.0",
58
+ "@playwright/test": "1.54.1",
59
59
  "@sveltejs/adapter-static": "3.0.10",
60
60
  "@sveltejs/kit": "2.48.0",
61
61
  "@sveltejs/package": "2.4.0",
@@ -77,4 +77,4 @@
77
77
  "@lucide/svelte": "^1.16.0",
78
78
  "svelte": "^5.53.12"
79
79
  }
80
- }
80
+ }