@alaarab/ogrid-angular-primeng 2.0.6 → 2.0.8

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.
@@ -0,0 +1,97 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ import { Component, input, ChangeDetectionStrategy, signal, effect, viewChild, Injector, createComponent, EnvironmentInjector, inject, } from '@angular/core';
8
+ /**
9
+ * PopoverCellEditor component for Angular PrimeNG.
10
+ * Renders custom popover editor when anchor element is set.
11
+ */
12
+ let PopoverCellEditorComponent = class PopoverCellEditorComponent {
13
+ constructor() {
14
+ this.item = input.required();
15
+ this.column = input.required();
16
+ this.rowIndex = input.required();
17
+ this.globalColIndex = input.required();
18
+ this.displayValue = input.required();
19
+ this.editorProps = input.required();
20
+ this.onCancel = input.required();
21
+ this.anchorRef = viewChild('anchorEl');
22
+ this.editorContainerRef = viewChild('editorContainer');
23
+ this.injector = inject(Injector);
24
+ this.envInjector = inject(EnvironmentInjector);
25
+ this.showEditor = signal(false);
26
+ // Show editor after anchor is rendered
27
+ effect(() => {
28
+ const anchor = this.anchorRef();
29
+ if (anchor) {
30
+ setTimeout(() => this.showEditor.set(true), 0);
31
+ }
32
+ });
33
+ // Render custom editor component when container is available
34
+ effect(() => {
35
+ const container = this.editorContainerRef();
36
+ const props = this.editorProps();
37
+ const col = this.column();
38
+ if (!container || !this.showEditor() || typeof col.cellEditor !== 'function')
39
+ return;
40
+ const EditorComponent = col.cellEditor; // ComponentType
41
+ const componentRef = createComponent(EditorComponent, {
42
+ environmentInjector: this.envInjector,
43
+ elementInjector: this.injector,
44
+ });
45
+ // Pass props to component instance
46
+ Object.assign(componentRef.instance, props);
47
+ componentRef.changeDetectorRef.detectChanges();
48
+ // Append to DOM
49
+ container.nativeElement.appendChild(componentRef.location.nativeElement);
50
+ // Cleanup on destroy
51
+ return () => componentRef.destroy();
52
+ });
53
+ }
54
+ handleOverlayClick() {
55
+ this.onCancel()();
56
+ }
57
+ };
58
+ PopoverCellEditorComponent = __decorate([
59
+ Component({
60
+ selector: 'ogrid-primeng-popover-cell-editor',
61
+ standalone: true,
62
+ changeDetection: ChangeDetectionStrategy.OnPush,
63
+ template: `
64
+ <div #anchorEl
65
+ class="ogrid-popover-anchor"
66
+ [attr.data-row-index]="rowIndex()"
67
+ [attr.data-col-index]="globalColIndex()"
68
+ >
69
+ {{ displayValue() }}
70
+ </div>
71
+ @if (showEditor()) {
72
+ <div class="ogrid-popover-editor-overlay" (click)="handleOverlayClick()">
73
+ <div class="ogrid-popover-editor-content" #editorContainer></div>
74
+ </div>
75
+ }
76
+ `,
77
+ styles: [`
78
+ :host { display: contents; }
79
+ .ogrid-popover-anchor {
80
+ padding: 6px 10px; min-height: 20px; cursor: default; overflow: hidden;
81
+ text-overflow: ellipsis; white-space: nowrap;
82
+ outline: 2px solid var(--ogrid-selection, #217346); outline-offset: -2px;
83
+ }
84
+ .ogrid-popover-editor-overlay {
85
+ position: fixed; inset: 0; z-index: 1000;
86
+ background: rgba(0,0,0,0.3);
87
+ display: flex; align-items: center; justify-content: center;
88
+ }
89
+ .ogrid-popover-editor-content {
90
+ background: #fff; border-radius: 4px; padding: 16px;
91
+ box-shadow: 0 4px 12px rgba(0,0,0,0.15);
92
+ max-width: 90vw; max-height: 90vh; overflow: auto;
93
+ }
94
+ `],
95
+ })
96
+ ], PopoverCellEditorComponent);
97
+ export { PopoverCellEditorComponent };
package/dist/esm/index.js CHANGED
@@ -4,6 +4,7 @@ export * from '@alaarab/ogrid-angular';
4
4
  export { OGridComponent } from './ogrid/ogrid.component';
5
5
  export { DataGridTableComponent } from './datagrid-table/datagrid-table.component';
6
6
  export { InlineCellEditorComponent } from './datagrid-table/inline-cell-editor.component';
7
+ export { PopoverCellEditorComponent } from './datagrid-table/popover-cell-editor.component';
7
8
  export { ColumnHeaderFilterComponent } from './column-header-filter/column-header-filter.component';
8
9
  export { ColumnChooserComponent } from './column-chooser/column-chooser.component';
9
10
  export { PaginationControlsComponent } from './pagination-controls/pagination-controls.component';
@@ -1,4 +1,9 @@
1
1
  import type { IColumnDefinition } from '@alaarab/ogrid-angular';
2
+ export interface IColumnChooserProps {
3
+ columns: IColumnDefinition[];
4
+ visibleColumns: Set<string>;
5
+ onVisibilityChange: (columnKey: string, visible: boolean) => void;
6
+ }
2
7
  export declare class ColumnChooserComponent {
3
8
  readonly columns: import("@angular/core").InputSignal<IColumnDefinition[]>;
4
9
  readonly visibleColumns: import("@angular/core").InputSignal<Set<string>>;
@@ -1,5 +1,24 @@
1
1
  import { ElementRef } from '@angular/core';
2
2
  import type { ColumnFilterType, IDateFilterValue, UserLike } from '@alaarab/ogrid-angular';
3
+ export interface IColumnHeaderFilterProps {
4
+ columnKey: string;
5
+ columnName: string;
6
+ filterType: ColumnFilterType;
7
+ isSorted?: boolean;
8
+ isSortedDescending?: boolean;
9
+ onSort?: () => void;
10
+ selectedValues?: string[];
11
+ onFilterChange?: (values: string[]) => void;
12
+ options?: string[];
13
+ isLoadingOptions?: boolean;
14
+ textValue?: string;
15
+ onTextChange?: (value: string) => void;
16
+ selectedUser?: UserLike;
17
+ onUserChange?: (user: UserLike | undefined) => void;
18
+ peopleSearch?: (query: string) => Promise<UserLike[]>;
19
+ dateValue?: IDateFilterValue;
20
+ onDateChange?: (value: IDateFilterValue | undefined) => void;
21
+ }
3
22
  export declare class ColumnHeaderFilterComponent {
4
23
  private destroyRef;
5
24
  readonly columnKey: import("@angular/core").InputSignal<string>;
@@ -1,4 +1,3 @@
1
- import { EventEmitter } from '@angular/core';
2
1
  import type { Menu } from 'primeng/menu';
3
2
  import type { MenuItem } from 'primeng/api';
4
3
  /**
@@ -6,20 +5,15 @@ import type { MenuItem } from 'primeng/api';
6
5
  * Uses PrimeNG Menu component.
7
6
  */
8
7
  export declare class ColumnHeaderMenuComponent {
9
- columnId: string;
10
- set canPinLeft(value: boolean);
11
- set canPinRight(value: boolean);
12
- set canUnpin(value: boolean);
13
- pinLeft: EventEmitter<void>;
14
- pinRight: EventEmitter<void>;
15
- unpin: EventEmitter<void>;
16
- menu: Menu;
17
- private _canPinLeft;
18
- private _canPinRight;
19
- private _canUnpin;
20
- menuModel: MenuItem[];
21
- ngOnInit(): void;
22
- private updateMenuModel;
8
+ readonly columnId: import("@angular/core").InputSignal<string>;
9
+ readonly canPinLeft: import("@angular/core").InputSignal<boolean>;
10
+ readonly canPinRight: import("@angular/core").InputSignal<boolean>;
11
+ readonly canUnpin: import("@angular/core").InputSignal<boolean>;
12
+ readonly onPinLeft: import("@angular/core").InputSignal<(() => void) | undefined>;
13
+ readonly onPinRight: import("@angular/core").InputSignal<(() => void) | undefined>;
14
+ readonly onUnpin: import("@angular/core").InputSignal<(() => void) | undefined>;
15
+ readonly menuRef: import("@angular/core").Signal<Menu | undefined>;
16
+ readonly menuModel: import("@angular/core").Signal<MenuItem[]>;
23
17
  handlePinLeft(): void;
24
18
  handlePinRight(): void;
25
19
  handleUnpin(): void;
@@ -1,15 +1,12 @@
1
1
  import { ElementRef } from '@angular/core';
2
- import { ColumnReorderService, VirtualScrollService } from '@alaarab/ogrid-angular';
3
- import type { IColumnDef, IColumnGroupDef, RowId, HeaderFilterConfig } from '@alaarab/ogrid-angular';
4
- export declare class DataGridTableComponent<T = unknown> {
5
- private readonly stateService;
6
- readonly columnReorderService: ColumnReorderService<T>;
7
- readonly virtualScrollService: VirtualScrollService;
8
- readonly wrapperRef: import("@angular/core").Signal<ElementRef<HTMLDivElement> | undefined>;
9
- readonly tableContainerRef: import("@angular/core").Signal<ElementRef<HTMLDivElement> | undefined>;
10
- readonly items: import("@angular/core").InputSignal<T[]>;
2
+ import { BaseDataGridTableComponent } from '@alaarab/ogrid-angular';
3
+ import type { IOGridDataGridProps, IColumnDef, IColumnGroupDef, RowId } from '@alaarab/ogrid-angular';
4
+ export declare class DataGridTableComponent<T = unknown> extends BaseDataGridTableComponent<T> {
5
+ private readonly wrapperRef;
6
+ private readonly tableContainerRefEl;
7
+ readonly itemsInput: import("@angular/core").InputSignal<T[]>;
11
8
  readonly columns: import("@angular/core").InputSignal<(IColumnDef<T> | IColumnGroupDef<T>)[]>;
12
- readonly getRowIdFn: import("@angular/core").InputSignal<(item: T) => RowId>;
9
+ readonly getRowIdInput: import("@angular/core").InputSignal<(item: T) => RowId>;
13
10
  readonly sortBy: import("@angular/core").InputSignal<string | undefined>;
14
11
  readonly sortDirection: import("@angular/core").InputSignal<"asc" | "desc">;
15
12
  readonly onColumnSort: import("@angular/core").InputSignal<(columnKey: string) => void>;
@@ -18,14 +15,14 @@ export declare class DataGridTableComponent<T = unknown> {
18
15
  readonly onColumnOrderChange: import("@angular/core").InputSignal<((order: string[]) => void) | undefined>;
19
16
  readonly onColumnResized: import("@angular/core").InputSignal<((columnId: string, width: number) => void) | undefined>;
20
17
  readonly onColumnPinned: import("@angular/core").InputSignal<((columnId: string, pinned: "left" | "right" | null) => void) | undefined>;
21
- readonly pinnedColumns: import("@angular/core").InputSignal<Record<string, "left" | "right"> | undefined>;
18
+ readonly pinnedColumnsInput: import("@angular/core").InputSignal<Record<string, "left" | "right"> | undefined>;
22
19
  readonly initialColumnWidths: import("@angular/core").InputSignal<Record<string, number> | undefined>;
23
- readonly freezeRows: import("@angular/core").InputSignal<number | undefined>;
24
- readonly freezeCols: import("@angular/core").InputSignal<number | undefined>;
20
+ readonly freezeRowsInput: import("@angular/core").InputSignal<number | undefined>;
21
+ readonly freezeColsInput: import("@angular/core").InputSignal<number | undefined>;
25
22
  readonly layoutMode: import("@angular/core").InputSignal<"fill" | "content">;
26
23
  readonly suppressHorizontalScroll: import("@angular/core").InputSignal<boolean | undefined>;
27
- readonly isLoading: import("@angular/core").InputSignal<boolean>;
28
- readonly loadingMessage: import("@angular/core").InputSignal<string>;
24
+ readonly isLoadingInput: import("@angular/core").InputSignal<boolean>;
25
+ readonly loadingMessageInput: import("@angular/core").InputSignal<string>;
29
26
  readonly editable: import("@angular/core").InputSignal<boolean | undefined>;
30
27
  readonly cellSelection: import("@angular/core").InputSignal<boolean | undefined>;
31
28
  readonly onCellValueChanged: import("@angular/core").InputSignal<((event: {
@@ -35,10 +32,10 @@ export declare class DataGridTableComponent<T = unknown> {
35
32
  newValue: unknown;
36
33
  rowIndex: number;
37
34
  }) => void) | undefined>;
38
- readonly onUndo: import("@angular/core").InputSignal<(() => void) | undefined>;
39
- readonly onRedo: import("@angular/core").InputSignal<(() => void) | undefined>;
40
- readonly canUndo: import("@angular/core").InputSignal<boolean | undefined>;
41
- readonly canRedo: import("@angular/core").InputSignal<boolean | undefined>;
35
+ readonly onUndoInput: import("@angular/core").InputSignal<(() => void) | undefined>;
36
+ readonly onRedoInput: import("@angular/core").InputSignal<(() => void) | undefined>;
37
+ readonly canUndoInput: import("@angular/core").InputSignal<boolean | undefined>;
38
+ readonly canRedoInput: import("@angular/core").InputSignal<boolean | undefined>;
42
39
  readonly rowSelectionMode: import("@angular/core").InputSignal<"none" | "single" | "multiple">;
43
40
  readonly selectedRows: import("@angular/core").InputSignal<Set<RowId> | undefined>;
44
41
  readonly onSelectionChange: import("@angular/core").InputSignal<((event: {
@@ -52,18 +49,18 @@ export declare class DataGridTableComponent<T = unknown> {
52
49
  readonly loadingFilterOptions: import("@angular/core").InputSignal<Record<string, boolean>>;
53
50
  readonly peopleSearch: import("@angular/core").InputSignal<((query: string) => Promise<unknown[]>) | undefined>;
54
51
  readonly getUserByEmail: import("@angular/core").InputSignal<((email: string) => Promise<unknown>) | undefined>;
55
- readonly emptyState: import("@angular/core").InputSignal<{
52
+ readonly emptyStateInput: import("@angular/core").InputSignal<{
56
53
  onClearAll: () => void;
57
54
  hasActiveFilters: boolean;
58
55
  message?: string;
59
56
  render?: unknown;
60
57
  } | undefined>;
61
58
  readonly onCellError: import("@angular/core").InputSignal<((error: Error) => void) | undefined>;
62
- readonly ariaLabel: import("@angular/core").InputSignal<string | undefined>;
63
- readonly ariaLabelledBy: import("@angular/core").InputSignal<string | undefined>;
59
+ readonly ariaLabelInput: import("@angular/core").InputSignal<string | undefined>;
60
+ readonly ariaLabelledByInput: import("@angular/core").InputSignal<string | undefined>;
64
61
  readonly showRowNumbers: import("@angular/core").InputSignal<boolean>;
65
- readonly currentPage: import("@angular/core").InputSignal<number>;
66
- readonly pageSize: import("@angular/core").InputSignal<number>;
62
+ readonly currentPageInput: import("@angular/core").InputSignal<number>;
63
+ readonly pageSizeInput: import("@angular/core").InputSignal<number>;
67
64
  readonly defaultMinWidth = 80;
68
65
  readonly statusBarClasses: {
69
66
  statusBar: string;
@@ -71,55 +68,37 @@ export declare class DataGridTableComponent<T = unknown> {
71
68
  statusBarLabel: string;
72
69
  statusBarValue: string;
73
70
  };
74
- private readonly columnSizingOverrides;
71
+ private readonly primengColumnSizingOverrides;
75
72
  private resizeStartX;
76
73
  private resizeColumnId;
77
74
  private resizeStartWidth;
78
- private lastMouseShift;
79
- private columnSizingVersion;
80
75
  constructor();
81
- readonly state: import("@angular/core").Signal<import("@alaarab/ogrid-angular").DataGridStateResult<T>>;
82
- readonly tableContainerEl: import("@angular/core").Signal<HTMLDivElement | null>;
76
+ protected getProps(): IOGridDataGridProps<T> | undefined;
77
+ protected getWrapperRef(): ElementRef<HTMLElement> | undefined;
78
+ protected getTableContainerRef(): ElementRef<HTMLElement> | undefined;
83
79
  readonly resolvedAriaLabel: import("@angular/core").Signal<string | undefined>;
84
- readonly rowNumberOffset: import("@angular/core").Signal<number>;
85
- readonly headerRows: import("@angular/core").Signal<import("@alaarab/ogrid-core").HeaderRow<T>[]>;
86
- readonly allowOverflowX: import("@angular/core").Signal<boolean>;
87
80
  readonly tableWidthStyle: import("@angular/core").Signal<"100%" | "fit-content">;
88
81
  readonly tableMinWidthStyle: import("@angular/core").Signal<"100%" | "max-content">;
89
- readonly selectedCellCount: import("@angular/core").Signal<number | undefined>;
82
+ getColumnWidth(col: IColumnDef<T>): number;
90
83
  trackByRowId(_index: number, item: T): RowId;
91
- getColumnWidth(col: IColumnDef<T>): number | undefined;
92
- getFilterConfig(col: IColumnDef<T>): HeaderFilterConfig;
93
84
  getCellValueFn(item: T, col: IColumnDef<T>): unknown;
94
85
  resolveCellDisplay(col: IColumnDef<T>, item: T): string;
95
86
  getCellStyleObj(col: IColumnDef<T>, item: T): Record<string, string> | null;
96
87
  canEditCell(col: IColumnDef<T>, item: T): boolean;
97
88
  isEditingCell(item: T, col: IColumnDef<T>): boolean;
89
+ isEditingCellInline(item: T, col: IColumnDef<T>): boolean;
90
+ isEditingCellPopover(item: T, col: IColumnDef<T>): boolean;
91
+ buildPopoverEditorPropsForPrimeng(item: T, col: IColumnDef<T>, rowIndex: number, colIdx: number): unknown;
98
92
  getEditorType(col: IColumnDef<T>, _item: T): 'text' | 'select' | 'checkbox' | 'date' | 'richSelect';
99
93
  isActiveCell(rowIndex: number, colIdx: number): boolean;
100
94
  isInSelectionRange(rowIndex: number, colIdx: number): boolean;
101
95
  isSelectionEndCell(rowIndex: number, colIdx: number): boolean;
102
96
  getCellBackground(rowIndex: number, colIdx: number): string | null;
103
- onMouseDown(e: MouseEvent): void;
104
- onGridKeyDown(e: KeyboardEvent): void;
105
- onCellMouseDown(e: MouseEvent, rowIndex: number, globalColIndex: number): void;
106
- onCellDblClick(item: T, col: IColumnDef<T>, rowIndex: number, colIdx: number): void;
107
- onCellContextMenu(e: MouseEvent): void;
97
+ onCellDblClickPrimeng(item: T, col: IColumnDef<T>, _rowIndex: number, _colIdx: number): void;
108
98
  onCellEditorCommit(item: T, col: IColumnDef<T>, rowIndex: number, colIdx: number, newValue: unknown): void;
109
- onFillHandleMouseDown(e: MouseEvent): void;
110
- onSelectAllChange(checked: boolean): void;
111
- onRowClick(e: MouseEvent, item: T): void;
112
- onRowCheckboxChange(item: T, checked: boolean, rowIndex: number, e: Event): void;
113
- handlePaste(): void;
114
- onHeaderMouseDown(columnId: string, event: MouseEvent): void;
115
- onResizeStart(e: MouseEvent, col: IColumnDef<T>): void;
116
- onPinColumn(columnId: string, side: 'left' | 'right'): void;
117
- onUnpinColumn(columnId: string): void;
118
- isPinned(columnId: string): 'left' | 'right' | undefined;
119
- getPinState(columnId: string): {
120
- canPinLeft: boolean;
121
- canPinRight: boolean;
122
- canUnpin: boolean;
123
- };
99
+ onSelectAllChangePrimeng(checked: boolean): void;
100
+ onRowClickPrimeng(e: MouseEvent, item: T): void;
101
+ onRowCheckboxChangePrimeng(item: T, checked: boolean, rowIndex: number, _e: Event): void;
102
+ onResizeStartPrimeng(e: MouseEvent, col: IColumnDef<T>): void;
124
103
  private buildProps;
125
104
  }
@@ -0,0 +1,21 @@
1
+ import type { IColumnDef, ICellEditorProps } from '@alaarab/ogrid-core';
2
+ /**
3
+ * PopoverCellEditor component for Angular PrimeNG.
4
+ * Renders custom popover editor when anchor element is set.
5
+ */
6
+ export declare class PopoverCellEditorComponent<T> {
7
+ readonly item: import("@angular/core").InputSignal<T>;
8
+ readonly column: import("@angular/core").InputSignal<IColumnDef<T>>;
9
+ readonly rowIndex: import("@angular/core").InputSignal<number>;
10
+ readonly globalColIndex: import("@angular/core").InputSignal<number>;
11
+ readonly displayValue: import("@angular/core").InputSignal<unknown>;
12
+ readonly editorProps: import("@angular/core").InputSignal<ICellEditorProps<T>>;
13
+ readonly onCancel: import("@angular/core").InputSignal<() => void>;
14
+ private readonly anchorRef;
15
+ private readonly editorContainerRef;
16
+ private readonly injector;
17
+ private readonly envInjector;
18
+ protected readonly showEditor: import("@angular/core").WritableSignal<boolean>;
19
+ constructor();
20
+ protected handleOverlayClick(): void;
21
+ }
@@ -2,7 +2,10 @@ export * from '@alaarab/ogrid-angular';
2
2
  export { OGridComponent } from './ogrid/ogrid.component';
3
3
  export { DataGridTableComponent } from './datagrid-table/datagrid-table.component';
4
4
  export { InlineCellEditorComponent } from './datagrid-table/inline-cell-editor.component';
5
+ export { PopoverCellEditorComponent } from './datagrid-table/popover-cell-editor.component';
5
6
  export { ColumnHeaderFilterComponent } from './column-header-filter/column-header-filter.component';
7
+ export type { IColumnHeaderFilterProps } from './column-header-filter/column-header-filter.component';
6
8
  export { ColumnChooserComponent } from './column-chooser/column-chooser.component';
9
+ export type { IColumnChooserProps } from './column-chooser/column-chooser.component';
7
10
  export { PaginationControlsComponent } from './pagination-controls/pagination-controls.component';
8
11
  export { ColumnHeaderMenuComponent } from './column-header-menu/column-header-menu.component';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@alaarab/ogrid-angular-primeng",
3
- "version": "2.0.6",
3
+ "version": "2.0.8",
4
4
  "description": "OGrid PrimeNG – PrimeNG Table-based data grid with sorting, filtering, pagination, column chooser, and CSV export.",
5
5
  "main": "dist/esm/index.js",
6
6
  "module": "dist/esm/index.js",
@@ -16,13 +16,26 @@
16
16
  "build": "rimraf dist && tsc -p tsconfig.build.json",
17
17
  "test": "jest --passWithNoTests"
18
18
  },
19
- "keywords": ["ogrid", "angular", "primeng", "datatable", "typescript", "grid"],
19
+ "keywords": [
20
+ "ogrid",
21
+ "angular",
22
+ "primeng",
23
+ "datatable",
24
+ "typescript",
25
+ "grid"
26
+ ],
20
27
  "author": "Ala Arab",
21
28
  "license": "MIT",
22
- "files": ["dist", "README.md", "LICENSE"],
23
- "engines": { "node": ">=18" },
29
+ "files": [
30
+ "dist",
31
+ "README.md",
32
+ "LICENSE"
33
+ ],
34
+ "engines": {
35
+ "node": ">=18"
36
+ },
24
37
  "dependencies": {
25
- "@alaarab/ogrid-angular": "2.0.6"
38
+ "@alaarab/ogrid-angular": "2.0.7"
26
39
  },
27
40
  "peerDependencies": {
28
41
  "@angular/core": "^21.0.0",
@@ -42,5 +55,7 @@
42
55
  "typescript": "^5.9.3"
43
56
  },
44
57
  "sideEffects": false,
45
- "publishConfig": { "access": "public" }
58
+ "publishConfig": {
59
+ "access": "public"
60
+ }
46
61
  }