@ng-atomic/common 19.35.0 → 19.36.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/fesm2022/ng-atomic-common-directives-active-control.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-directives-molecules-column.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-interceptors-authorization.mjs +3 -1
- package/fesm2022/ng-atomic-common-interceptors-authorization.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-interceptors-throttle.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-pipes-domain.mjs +2 -2
- package/fesm2022/ng-atomic-common-pipes-domain.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-pipes-pagination.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-pipes-smart-field.mjs +1 -1
- package/fesm2022/ng-atomic-common-pipes-smart-field.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-pipes-sort-by.mjs +2 -2
- package/fesm2022/ng-atomic-common-pipes-sort-by.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-services-auth.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-services-breakpoint.mjs +3 -2
- package/fesm2022/ng-atomic-common-services-breakpoint.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-services-fab.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-services-form-columns.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-services-form-json-schema.mjs +1 -1
- package/fesm2022/ng-atomic-common-services-form-json-schema.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-services-form-sort.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-services-form.mjs +1 -1
- package/fesm2022/ng-atomic-common-services-form.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-services-root-property.mjs +10 -7
- package/fesm2022/ng-atomic-common-services-root-property.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-services-side-app.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-services-spreadsheet.mjs +4 -4
- package/fesm2022/ng-atomic-common-services-spreadsheet.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-services-ui.mjs +5 -4
- package/fesm2022/ng-atomic-common-services-ui.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-stores-entities.mjs +3 -1
- package/fesm2022/ng-atomic-common-stores-entities.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-stores-selection.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-stores-sort.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-utils.mjs +5 -5
- package/fesm2022/ng-atomic-common-utils.mjs.map +1 -1
- package/fesm2022/ng-atomic-common.mjs.map +1 -1
- package/package.json +3 -3
- package/types/ng-atomic-common-directives-active-control.d.ts +2 -2
- package/types/ng-atomic-common-directives-molecules-column.d.ts +7 -7
- package/types/ng-atomic-common-interceptors-authorization.d.ts.map +1 -1
- package/types/ng-atomic-common-interceptors-throttle.d.ts +1 -1
- package/types/ng-atomic-common-interceptors-throttle.d.ts.map +1 -1
- package/types/ng-atomic-common-pipes-data-accessor.d.ts +1 -1
- package/types/ng-atomic-common-pipes-index-length.d.ts +1 -1
- package/types/ng-atomic-common-pipes-index.d.ts +1 -1
- package/types/ng-atomic-common-pipes-pagination.d.ts +1 -1
- package/types/ng-atomic-common-pipes-pagination.d.ts.map +1 -1
- package/types/ng-atomic-common-pipes-sort-by.d.ts +1 -1
- package/types/ng-atomic-common-pipes-sort-by.d.ts.map +1 -1
- package/types/ng-atomic-common-services-auth.d.ts +4 -4
- package/types/ng-atomic-common-services-breakpoint.d.ts +1 -1
- package/types/ng-atomic-common-services-breakpoint.d.ts.map +1 -1
- package/types/ng-atomic-common-services-fab.d.ts +1 -1
- package/types/ng-atomic-common-services-form-_index.d.ts +12 -12
- package/types/ng-atomic-common-services-form-json-schema.d.ts +1 -1
- package/types/ng-atomic-common-services-form-json-schema.d.ts.map +1 -1
- package/types/ng-atomic-common-services-form-pagination.d.ts +3 -3
- package/types/ng-atomic-common-services-form-sort.d.ts +3 -3
- package/types/ng-atomic-common-services-form-sort.d.ts.map +1 -1
- package/types/ng-atomic-common-services-language.d.ts +1 -1
- package/types/ng-atomic-common-services-root-property.d.ts +5 -65
- package/types/ng-atomic-common-services-root-property.d.ts.map +1 -1
- package/types/ng-atomic-common-services-spreadsheet.d.ts +8 -8
- package/types/ng-atomic-common-services-spreadsheet.d.ts.map +1 -1
- package/types/ng-atomic-common-services-ui.d.ts +6 -6
- package/types/ng-atomic-common-stores-entities.d.ts +5 -5
- package/types/ng-atomic-common-stores-entities.d.ts.map +1 -1
- package/types/ng-atomic-common-utils.d.ts +8 -8
- package/types/ng-atomic-common.d.ts +3 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ng-atomic-common-services-spreadsheet.mjs","sources":["../../../../../packages/@ng-atomic/common/src/lib/services/spreadsheet/features/data.service.ts","../../../../../packages/@ng-atomic/common/src/lib/services/spreadsheet/features/grid.service.ts","../../../../../packages/@ng-atomic/common/src/lib/services/spreadsheet/features/navigation.service.ts","../../../../../packages/@ng-atomic/common/src/lib/services/spreadsheet/features/selection.service.ts","../../../../../packages/@ng-atomic/common/src/lib/services/spreadsheet/features/clipboard.service.ts","../../../../../packages/@ng-atomic/common/src/lib/services/spreadsheet/features/protection.service.ts","../../../../../packages/@ng-atomic/common/src/lib/services/spreadsheet/features/editor.service.ts","../../../../../packages/@ng-atomic/common/src/lib/services/spreadsheet/features/autofill.service.ts","../../../../../packages/@ng-atomic/common/src/lib/services/spreadsheet/spreadsheet.service.ts","../../../../../packages/@ng-atomic/common/src/lib/services/spreadsheet/directives/grid-cell.directive.ts","../../../../../packages/@ng-atomic/common/src/lib/services/spreadsheet/directives/grid-table-autofill.directive.ts","../../../../../packages/@ng-atomic/common/src/lib/services/spreadsheet/directives/grid-cell-autofill.directive.ts","../../../../../packages/@ng-atomic/common/src/lib/services/spreadsheet/index.ts","../../../../../packages/@ng-atomic/common/src/lib/services/spreadsheet/ng-atomic-common-services-spreadsheet.ts"],"sourcesContent":["import { Injectable, signal } from \"@angular/core\";\n\n\n@Injectable()\nexport class SpreadSheetDataService {\n readonly displayedColumns = signal<string[]>([]);\n readonly items = signal<any[]>([]);\n}\n","import { computed, inject, Injectable } from '@angular/core';\nimport { CellContext, Position } from '../models/cell.model';\nimport { SpreadSheetDataService } from './data.service';\n\n@Injectable()\nexport class GridService {\n protected readonly contextMap = new Map<string, CellContext>();\n protected readonly data = inject(SpreadSheetDataService);\n\n readonly maxCol = computed(() => this.data.displayedColumns().length - 1);\n readonly maxRow = computed(() => this.data.items().length);\n\n setContext(context: CellContext): void {\n this.contextMap.set(this.buildKey(context.position), context);\n }\n\n getContext(position: Position): CellContext | null {\n return this.contextMap.get(this.buildKey(position)) ?? null;\n }\n\n protected buildKey(position: Position): string {\n return `(${position.row}, ${position.col})`;\n }\n}","import { inject, Injectable } from '@angular/core';\nimport { Position } from '../models/cell.model';\nimport { GridService } from './grid.service';\n\n@Injectable()\nexport class NavigationService {\n private gridService = inject(GridService)\n\n moveToNextCell({row, col}: Position): Position {\n if (col < this.gridService.maxCol()) {\n return { row, col: col + 1 };\n } else if (row < this.gridService.maxRow()) {\n return { row: row + 1, col: 0 };\n }\n return { row, col };\n }\n\n moveToPreviousCell({row, col}: Position): Position {\n if (col > 0) {\n return { row, col: col - 1 };\n } else if (row > 0) {\n return { row: row - 1, col: this.gridService.maxCol() };\n }\n return { row, col };\n }\n\n moveToNextRow({row, col}: Position): Position {\n if (row < this.gridService.maxRow()) {\n return { row: row + 1, col };\n }\n return { row, col };\n }\n\n moveToPreviousRow({row, col}: Position): Position {\n if (row > 0) {\n return { row: row - 1, col };\n }\n return { row, col };\n }\n\n moveRight(position: Position): Position {\n const {row, col} = position;\n if (col < this.gridService.maxCol()) {\n return { row, col: col + 1 };\n }\n return { row, col };\n }\n\n moveLeft({row, col}: Position): Position {\n if (col > 0) {\n return { row, col: col - 1 };\n }\n return { row, col };\n }\n\n moveUp({row, col}: Position): Position {\n if (row > 0) {\n return { row: row - 1, col };\n }\n return { row, col };\n }\n\n moveDown({row, col}: Position): Position {\n if (row < this.gridService.maxRow()) {\n return { row: row + 1, col };\n }\n return { row, col };\n }\n}","import { computed, effect, inject, Injectable, signal } from '@angular/core';\nimport { Selection, Position } from '../models/cell.model';\nimport { GridService } from './grid.service';\nimport { isEqual } from 'lodash-es';\nimport { SpreadSheetDataService } from './data.service';\n\n@Injectable()\nexport class SelectionService {\n protected readonly data = inject(SpreadSheetDataService);\n private readonly selection = signal<Selection>({ start: { row: 1, col: 0}, end: null });\n private readonly selectionStart = computed(() => this.selection().start, { equal: isEqual });\n private readonly isMouseDown = signal(false);\n private readonly grid = inject(GridService);\n private readonly cellElMap = new Map<string, HTMLTableCellElement>();\n\n constructor() {\n effect(() => {\n const position = this.selectionStart();\n if (position) this.focus(position);\n });\n }\n\n isSelected(position: Position): boolean {\n // selectionの範囲に含まれているかどうかを返す\n const selection = this.selection();\n if (!selection) return false;\n\n const { start, end } = selection;\n const minRow = Math.min(start.row, end?.row ?? start.row);\n const maxRow = Math.max(start.row, end?.row ?? start.row);\n const minCol = Math.min(start.col, end?.col ?? start.col);\n const maxCol = Math.max(start.col, end?.col ?? start.col);\n const { row, col } = position;\n return row >= minRow && row <= maxRow && col >= minCol && col <= maxCol;\n }\n\n isCursorPosition(position: Position): boolean {\n return isEqual(this.selection().start, position);\n }\n\n handleMouseDown(position: Position, event?: MouseEvent): void {\n this.isMouseDown.set(true);\n if (!event?.shiftKey) {\n this.startSelection(position);\n }\n }\n\n handleMouseUp(): void {\n this.isMouseDown.set(false);\n }\n\n handleMouseEnter(position: Position): void {\n if (this.isMouseDown()) {\n this.updateSelection(position);\n }\n }\n\n handleClick(position: Position, event?: MouseEvent): void {\n if (!this.isMouseDown()) {\n if (event?.shiftKey) {\n this.updateSelectionEnd(position);\n } else {\n this.startSelection(position);\n }\n }\n }\n\n clearSelection(): void {\n this.selection.update((selection) => ({...selection, start: selection.start, end: null}));\n }\n\n setStartPosition(position: Position): void {\n this.selection.update((selection) => ({...selection, start: position, end: null}));\n }\n\n getSelection(): Selection | null {\n return this.selection();\n }\n\n getSelectionEndOrStart(): Position {\n return this.selection()?.end || this.selection()?.start;\n }\n\n updateSelectionEnd(position: Position): void {\n this.selection.update((selection) => ({...selection, end: position}));\n }\n\n private startSelection(position: Position): void {\n this.selection.set({ start: position, end: null });\n }\n\n private updateSelection(position: Position): void {\n if (this.selection()) {\n this.selection.update((selection) => ({...selection, end: position}));\n }\n }\n\n clearSelectedRange(selection: { start: { row: number; col: number }; end: { row: number; col: number } }): void {\n\n }\n\n setCell(position: Position, el: HTMLTableCellElement): void {\n this.cellElMap.set(`${this.buildKey(position)}`, el);\n }\n\n getCell(position: Position): HTMLTableCellElement | null {\n return this.cellElMap.get(this.buildKey(position)) ?? null;\n }\n\n focus(position: Position): void {\n setTimeout(() => {\n const el = this.getCell(position);\n if (el && el !== document.activeElement) {\n el.focus();\n }\n });\n }\n\n protected buildKey(position: Position): string {\n return `(${position.row}, ${position.col})`;\n }\n}","import { inject, Injectable } from '@angular/core';\nimport { Clipboard } from '@angular/cdk/clipboard';\nimport { SnackBarService } from '@ng-atomic/common/services/snack-bar';\nimport { injectDataAccessor } from '@ng-atomic/common/pipes/data-accessor';\nimport { EXPRESSION_TRANSFORMER } from '@ng-atomic/common/utils';\nimport { LanguageService } from '@ng-atomic/common/services/language';\nimport papaparse from 'papaparse';\nimport { Cell } from '../models';\nimport { SelectionService } from './selection.service';\nimport { SpreadSheetDataService } from './data.service';\n\n@Injectable()\nexport class ClipboardService {\n private clipboard = inject(Clipboard);\n private snackBar = inject(SnackBarService);\n protected data = inject(SpreadSheetDataService);\n readonly dataAccessor = injectDataAccessor();\n readonly expression = inject(EXPRESSION_TRANSFORMER);\n readonly language = inject(LanguageService);\n\n constructor(\n private selectionService: SelectionService,\n ) { }\n\n private buildGridData(range: {minRow: number; maxRow: number; minCol: number; maxCol: number}): Cell[][] {\n const header = this.data.displayedColumns().map(column => ({\n dataValue: this.language.transform(column),\n expressionValue: this.language.transform(column),\n isHeader: true\n }));\n const rows = this.data.items().map(item => this.data.displayedColumns().map(column => ({\n dataValue: this.dataAccessor(item, column),\n expressionValue: this.expression(this.dataAccessor(item, column), {item, name: column}),\n })));\n const fullData = [header, ...rows];\n return fullData.slice(range.minRow, range.maxRow + 1).map(row => row.slice(range.minCol, range.maxCol + 1));\n }\n\n async copy(): Promise<void> {\n const selection = this.selectionService.getSelection();\n if (!selection) return;\n let { start, end } = selection;\n end = end ?? start;\n const minRow = Math.min(start.row, end.row);\n const maxRow = Math.max(start.row, end.row);\n const minCol = Math.min(start.col, end.col);\n const maxCol = Math.max(start.col, end.col);\n const selectedData = this.buildGridData({minRow, maxRow, minCol, maxCol});\n const tsv = papaparse.unparse(selectedData.map(row => row.map(cell => cell.dataValue)),\n { delimiter: \"\\t\", newline: \"\\n\", header: false });\n this.copyText(tsv);\n }\n\n setData(items: any[], displayedColumns: string[]): void {\n this.data.displayedColumns.set(displayedColumns);\n this.data.items.set(items);\n }\n\n protected copyText(text: string) {\n this.clipboard.copy(text);\n this.snackBar.open('クリップボードにコピーしました。');\n }\n\n async paste(targetRow: number, targetCol: number): Promise<void> {\n }\n}","import { inject, Injectable, InjectionToken } from \"@angular/core\";\n\ninterface CellContext<T> {\n item: T;\n name: string;\n position: {\n row: number;\n col: number;\n }\n}\n\nexport type CellProtector = (value: any, context: CellContext<any>) => boolean;\nexport const COLUMN_PROTECTOR = new InjectionToken<CellProtector[]>('COLUMN_PROTECTOR', {\n providedIn: 'root',\n factory: () => [],\n});\nexport function provideCellProtector(useFactory: () => CellProtector) {\n return { provide: COLUMN_PROTECTOR, useFactory, multi: true };\n}\n\n@Injectable()\nexport class ProtectionService {\n readonly protectors = inject(COLUMN_PROTECTOR, {optional: true});\n\n isEditable(value: any, context: CellContext<any>): boolean {\n if (!this.protectors) return true;\n return this.protectors.every((protector) => protector(value, context));\n }\n}\n","import { inject, Injectable, signal } from '@angular/core';\nimport { EditingStateManager } from '@ng-atomic/common/services/editing';\nimport { GridService } from './grid.service';\nimport { SelectionService } from './selection.service';\nimport { ProtectionService } from './protection.service';\nimport { Position } from '../models/cell.model';\nimport { SpreadSheetDataService } from './data.service';\n\n@Injectable()\nexport class EditorService {\n protected readonly data = inject(SpreadSheetDataService);\n private grid = inject(GridService);\n private selection = inject(SelectionService);\n private protection = inject(ProtectionService);\n private editingStateManager = inject(EditingStateManager);\n readonly editinngCell = signal<{ row: number, col: number } | null>(null);\n protected readonly inputMap = new Map<string, HTMLInputElement>();\n\n isEditing(position: Position): boolean {\n return this.editinngCell()?.row === position.row && this.editinngCell()?.col === position.col;\n }\n\n startEditing(position: Position): void {\n const context = this.grid.getContext(position);\n console.debug('context:', context);\n if (!this.protection.isEditable(null, context)) {\n return;\n }\n this.selection.clearSelection();\n this.editinngCell.set(position);\n \n // Notify EditingStateManager about editing start\n const columnId = this.data.displayedColumns()[position.col];\n this.editingStateManager.startEditing(position.row, columnId);\n \n this.focus(position);\n }\n\n stopEditing(): void {\n const editingCell = this.editinngCell();\n if (editingCell) {\n // Notify EditingStateManager about editing stop\n const columnId = this.data.displayedColumns()[editingCell.col];\n this.editingStateManager.stopEditing(editingCell.row, columnId);\n }\n this.editinngCell.set(null);\n }\n\n focus(position: Position): void {\n setTimeout(() => {\n const input = this.getInput(position);\n if (input && input !== document.activeElement) {\n input.focus();\n input.select();\n }\n });\n }\n\n getEditingCell(): Position | null {\n for (let i = 0; i < this.data.items().length; i++) {\n for (let j = 0; j < this.data.displayedColumns().length; j++) {\n if (this.isEditing({row: i, col: j})) {\n return { row: i, col: j };\n }\n }\n }\n return null;\n }\n\n setInput(input: HTMLInputElement, position: Position): void {\n this.inputMap.set(`${this.buildKey(position)}`, input);\n }\n\n getInput(position: Position): HTMLInputElement | null {\n return this.inputMap.get(this.buildKey(position)) ?? null;\n }\n\n protected buildKey(position: Position): string {\n return `(${position.row}, ${position.col})`;\n }\n}","import { Injectable, signal } from '@angular/core';\nimport { Position } from '../models';\n\nexport interface Range {\n start: Position;\n end: Position;\n}\n\n@Injectable()\nexport class AutoFillService {\n private autofillMode = signal(false);\n private sourcePosition = signal<Position | null>(null);\n private targetRange = signal<Range | null>(null);\n private previewElements = new Set<HTMLElement>();\n \n readonly isAutofillMode = this.autofillMode.asReadonly();\n readonly getSourcePosition = this.sourcePosition.asReadonly();\n readonly getTargetRange = this.targetRange.asReadonly();\n \n startAutofill(position: Position): void {\n this.autofillMode.set(true);\n this.sourcePosition.set(position);\n this.targetRange.set({ start: position, end: position });\n }\n \n updateAutofillRange(endPosition: Position): void {\n const sourcePos = this.sourcePosition();\n if (sourcePos) {\n this.targetRange.set({ start: sourcePos, end: endPosition });\n this.updatePreview();\n }\n }\n \n \n cancelAutofill(): void {\n this.resetAutofill();\n }\n \n \n private updatePreview(): void {\n // 既存のプレビューをクリア\n this.clearPreview();\n \n const range = this.targetRange();\n if (!range) return;\n \n // 影響を受けるセルにプレビュークラスを追加\n for (let row = range.start.row + 1; row <= range.end.row; row++) {\n const position = { row, col: range.start.col };\n const cellElement = this.getCellElement(position);\n if (cellElement) {\n cellElement.classList.add('autofill-preview');\n this.previewElements.add(cellElement);\n }\n }\n }\n \n private clearPreview(): void {\n this.previewElements.forEach(element => {\n element.classList.remove('autofill-preview');\n });\n this.previewElements.clear();\n }\n \n private getCellElement(position: Position): HTMLElement | null {\n return document.querySelector(\n `[data-row=\"${position.row}\"][data-col=\"${position.col}\"]`\n ) as HTMLElement;\n }\n \n \n private resetAutofill(): void {\n this.clearPreview();\n this.autofillMode.set(false);\n this.sourcePosition.set(null);\n this.targetRange.set(null);\n }\n}","import { inject, Injectable, Provider } from '@angular/core';\nimport { Position } from './models/cell.model';\nimport { GridService } from './features/grid.service';\nimport { NavigationService } from './features/navigation.service';\nimport { SelectionService } from './features/selection.service';\nimport { ClipboardService } from './features/clipboard.service';\nimport { EditorService } from './features/editor.service';\nimport { ProtectionService } from './features/protection.service';\nimport { SpreadSheetDataService } from './features/data.service';\nimport { AutoFillService } from './features/autofill.service';\n\n@Injectable()\nexport class SpreadSheetService {\n readonly config = { paste: false };\n readonly grid = inject(GridService);\n // readonly data = inject(SpreadSheetDataService);\n readonly navigation = inject(NavigationService);\n readonly selection = inject(SelectionService);\n readonly clipboard = inject(ClipboardService);\n readonly editor = inject(EditorService);\n readonly protection = inject(ProtectionService);\n readonly autofill = inject(AutoFillService);\n\n handleKeyDown(event: KeyboardEvent): void {\n if (this.editor.editinngCell()) {\n this.handleKeyDownOnEditing(event);\n } else {\n this.handleKeyDownOnSelecting(event);\n }\n }\n\n protected handleKeyDownOnEditing(event: KeyboardEvent): void {\n const cell = this.editor.editinngCell();\n \n // stopPropagation()が呼ばれている場合は処理しない\n // IME入力中やユーザーの意図的な入力中断の場合にValueCellAtomから制御される\n if (event.cancelBubble) {\n return;\n }\n \n if (event.key === 'Tab') {\n event.preventDefault();\n if (event.shiftKey) {\n this.move(cell, 'left', 'select');\n } else {\n this.move(cell, 'right', 'select');\n }\n } else if (event.key === 'Enter') {\n event.preventDefault();\n if (event.shiftKey) {\n this.move(cell, 'top', 'select');\n } else {\n this.move(cell, 'bottom', 'select');\n }\n }\n }\n\n protected handleKeyDownOnSelecting(event: KeyboardEvent): void {\n if (event.key === 'Tab') {\n const selectedCell = this.selection.getSelection().start;\n event.preventDefault();\n event.stopPropagation();\n if (event.shiftKey) {\n this.move(selectedCell, 'left', 'select');\n } else {\n this.move(selectedCell, 'right', 'select');\n }\n return;\n } else if (event.key === 'Enter') {\n const selectedCell = this.selection.getSelection().start;\n if (selectedCell) {\n this.editor.startEditing(selectedCell);\n event.preventDefault();\n }\n } else if (event.ctrlKey || event.metaKey) {\n if (event.key === 'c') {\n this.clipboard.copy();\n event.preventDefault();\n } else if (event.key === 'v') {\n if (!this.config.paste) return;\n const target = this.selection.getSelection().start;\n if (target) {\n this.clipboard.paste(target.row, target.col);\n }\n event.preventDefault();\n }\n return;\n } else if (event.key === 'Delete' || event.key === 'Backspace') {\n const selection = this.selection.getSelection();\n if (selection) {\n this.selection.clearSelectedRange(selection);\n event.preventDefault();\n return;\n }\n } else {\n const selection = this.selection.getSelection().start;\n let newPosition: Position;\n if (event.shiftKey) {\n const selectionEnd = this.selection.getSelectionEndOrStart();\n switch (event.key) {\n case 'ArrowRight':\n newPosition = this.navigation.moveRight(selectionEnd);\n break;\n case 'ArrowLeft':\n newPosition = this.navigation.moveLeft(selectionEnd);\n break;\n case 'ArrowUp':\n newPosition = this.navigation.moveUp(selectionEnd);\n break;\n case 'ArrowDown':\n newPosition = this.navigation.moveDown(selectionEnd);\n break;\n default:\n return;\n }\n if (newPosition) {\n event.preventDefault();\n this.selection.updateSelectionEnd(newPosition);\n }\n } else {\n switch (event.key) {\n case 'ArrowRight':\n newPosition = this.navigation.moveRight(selection);\n break;\n case 'ArrowLeft':\n newPosition = this.navigation.moveLeft(selection);\n break;\n case 'ArrowUp':\n newPosition = this.navigation.moveUp(selection);\n break;\n case 'ArrowDown':\n newPosition = this.navigation.moveDown(selection);\n break;\n default:\n return;\n }\n if (newPosition) {\n event.preventDefault();\n this.selection.clearSelection();\n this.selection.handleClick(newPosition);\n }\n }\n }\n }\n\n protected move(_position: Position, dest: 'top' | 'bottom' | 'left' | 'right', mode: 'edit' | 'select') {\n this.editor.stopEditing();\n let position: Position;\n if (dest === 'top') {\n position = this.navigation.moveToPreviousRow(_position);\n } else if (dest === 'bottom') {\n position = this.navigation.moveToNextRow(_position);\n } else if (dest === 'left') {\n position = this.navigation.moveToPreviousCell(_position);\n } else if (dest === 'right') {\n position = this.navigation.moveToNextCell(_position);\n }\n\n this.selection.setStartPosition(position);\n\n if (mode === 'edit') {\n this.editor.startEditing(position);\n }\n }\n}\n\nexport function provideSpreadSheetService(): Provider[] {\n return [\n ClipboardService,\n SpreadSheetDataService,\n EditorService,\n SpreadSheetService,\n GridService,\n NavigationService,\n SelectionService,\n ProtectionService,\n AutoFillService\n ];\n}\n","import { computed, Directive, effect, ElementRef, inject, input, signal, AfterViewInit } from \"@angular/core\";\nimport { SpreadSheetService } from \"../spreadsheet.service\";\nimport { CellContext } from \"../models/cell.model\";\n\n@Directive({\n standalone: true,\n selector: '[ssCell]',\n host: {\n '[class.selected]': 'ss.selection.isSelected(position())',\n '[class.editing]': 'ss.editor.isEditing(position())',\n '(mousedown)': 'ss.selection.handleMouseDown(position(), $event)',\n '(mouseup)': 'ss.selection.handleMouseUp()',\n '(mouseenter)': 'ss.selection.handleMouseEnter(position())',\n '(click)': 'ss.selection.handleClick(position(), $event)',\n '(dblclick)': 'onDbClick()',\n '[attr.data-row]': 'position().row',\n '[attr.data-col]': 'position().col',\n }\n})\nexport class SpreadSheetCell implements AfterViewInit {\n protected ss = inject(SpreadSheetService);\n readonly el = inject<ElementRef<HTMLTableCellElement>>(ElementRef);\n\n readonly position = input<{row: number, col: number}>({row: 0, col: 0}, {alias: 'ssCell'});\n readonly editable = input<boolean>(false, {alias: 'ssCellEditable'});\n readonly context = input<CellContext>(null, {alias: 'ssCellContext'});\n readonly isSelected = computed(() => this.ss.selection.isSelected(this.position()));\n readonly isEditing = computed(() => this.ss.editor.isEditing(this.position()));\n readonly frameEl = signal<HTMLDivElement | null>(null);\n\n constructor() {\n effect(() => {\n if (!this.context()) return;\n this.ss.grid.setContext(this.context());\n });\n\n effect(() => {\n const isCursor = this.ss.selection.isCursorPosition(this.position());\n let frame = this.frameEl();\n\n if (isCursor) {\n if (!frame) {\n frame = this.buildOutlineFrame();\n this.el.nativeElement.appendChild(frame);\n this.frameEl.set(frame);\n }\n } else {\n frame?.remove();\n this.frameEl.set(null);\n }\n });\n }\n\n onDbClick(): void {\n if (!this.editable()) return;\n this.ss.editor.startEditing(this.position());\n }\n\n ngAfterViewInit(): void {\n this.ss.selection.setCell(this.position(), this.el.nativeElement);\n if (this.isSelected() && !this.isEditing()) {\n this.ss.selection.focus(this.position());\n }\n }\n\n protected buildOutlineFrame(): HTMLDivElement {\n const frame = document.createElement('div');\n frame.classList.add('selection-frame');\n frame.style.position = 'absolute';\n frame.style.top = '0';\n frame.style.left = '0';\n frame.style.width = '100%';\n frame.style.height = '100%';\n frame.style.border = '2px solid #2196f3';\n frame.style.borderRadius = '4px';\n frame.style.pointerEvents = 'none';\n frame.style.boxSizing = 'border-box';\n return frame;\n }\n\n protected createLabelElement(options: {\n label: string\n color: string\n }) {\n const el = document.createElement('span');\n el.textContent = options.label;\n el.style.backgroundColor = `${options.color}`;\n el.style.color = '#fff';\n el.style.padding = '2px 4px';\n el.style.position = 'absolute';\n el.style.fontSize = '10px';\n el.style.top = '0';\n el.style.left = '0';\n el.style.zIndex = '9999';\n el.style.lineHeight = '1.5em';\n el.style.whiteSpace = 'nowrap';\n this.el.nativeElement.appendChild(el);\n }\n}\n\n\n@Directive({\n standalone: true,\n selector: '[ssCellInput]',\n host: {\n '(blur)': 'stopEditing()',\n }\n})\nexport class SpreadSheetCellInput implements AfterViewInit {\n protected ss = inject(SpreadSheetService);\n readonly position = input<{row: number, col: number}>({row: 0, col: 0}, {alias: 'ssCellInput'});\n readonly el = inject<ElementRef<HTMLInputElement>>(ElementRef);\n readonly isSelected = computed(() => this.ss.selection.isSelected(this.position()));\n readonly isEditing = computed(() => this.ss.editor.isEditing(this.position()));\n\n ngAfterViewInit(): void {\n this.ss.editor.setInput(this.el.nativeElement, this.position());\n if (this.isSelected() && this.isEditing()) {\n this.ss.editor.focus(this.position());\n }\n }\n\n protected stopEditing(): void {\n this.ss.editor.stopEditing();\n }\n}\n","import { Component, Directive, inject, OnDestroy, output, ViewContainerRef, ComponentRef, ElementRef, Renderer2, HostListener } from '@angular/core';\nimport { SpreadSheetService } from '../spreadsheet.service';\n\ntype Position = { row: number; col: number };\ntype Range = { start: Position; end: Position };\n\nexport interface AutofillContext {\n sourceContext: any;\n targetContexts: Array<{ position: Position; context: any }>;\n}\n\n@Component({\n selector: 'autofill-handle',\n standalone: true,\n template: '',\n styles: [`\n :host {\n position: absolute;\n width: 8px;\n height: 8px;\n background-color: #2196F3;\n border: 2px solid #ffffff;\n border-radius: 50%;\n cursor: crosshair;\n z-index: 10000;\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.3);\n transition: background-color 0.2s, opacity 0.2s;\n opacity: 0;\n pointer-events: none;\n \n &:hover {\n background-color: #1976D2;\n }\n \n &.visible {\n opacity: 1;\n pointer-events: auto;\n }\n }\n `]\n})\nclass AutofillHandleComponent {\n readonly elementRef = inject(ElementRef<HTMLElement>);\n private renderer = inject(Renderer2);\n \n handleMouseDown = output<MouseEvent>();\n \n @HostListener('mousedown', ['$event'])\n onMouseDown(e: MouseEvent): void {\n e.preventDefault();\n e.stopPropagation();\n this.handleMouseDown.emit(e);\n }\n\n show(rect: DOMRect, containerRect?: DOMRect) {\n const el = this.elementRef.nativeElement;\n // ハンドルをセルの右下角に配置\n const handleSize = 14; // 8px + 2px*2 (border)\n \n if (containerRect) {\n // コンテナからの相対位置を計算\n this.renderer.setStyle(el, 'left', `${rect.right - containerRect.left - handleSize / 2}px`);\n this.renderer.setStyle(el, 'top', `${rect.bottom - containerRect.top - handleSize / 2}px`);\n } else {\n // position: fixedの場合(フォールバック)\n this.renderer.setStyle(el, 'left', `${rect.right - handleSize}px`);\n this.renderer.setStyle(el, 'top', `${rect.bottom - handleSize}px`);\n }\n \n this.renderer.addClass(el, 'visible');\n }\n \n hide() {\n this.renderer.removeClass(this.elementRef.nativeElement, 'visible');\n }\n}\n\n/**\n * テーブル全体のオートフィル機能を管理するディレクティブ\n * セルディレクティブから直接呼び出される\n */\n@Directive({\n standalone: true,\n selector: '[gridDataTableAutofill]'\n})\nexport class GridDataTableAutofill implements OnDestroy {\n private ss = inject(SpreadSheetService);\n private viewContainerRef = inject(ViewContainerRef);\n private renderer = inject(Renderer2);\n private autofillStartPosition: Position | null = null;\n private lastAutofillContexts: AutofillContext | null = null;\n private cleanupFunctions: (() => void)[] = [];\n private handleComponent: ComponentRef<AutofillHandleComponent> | null = null;\n private currentCell: HTMLElement | null = null;\n \n // オートフィル完了イベント\n readonly autofillComplete = output<{\n sourcePosition: Position;\n targetRange: Range;\n contexts: AutofillContext;\n }>();\n\n private currentPosition: Position | null = null;\n\n constructor() {\n // ハンドルコンポーネントを作成\n this.handleComponent = this.viewContainerRef.createComponent(AutofillHandleComponent);\n \n // ハンドルのmousedownイベントを設定\n this.handleComponent.instance.handleMouseDown.subscribe(() => {\n if (this.currentPosition) {\n this.startAutofill(this.currentPosition);\n }\n });\n }\n\n showHandle(cell: HTMLElement, position: Position): void {\n this.currentCell = cell;\n this.currentPosition = position;\n \n // ハンドルを適切な親要素に配置(初回のみ)\n let scrollContainer: HTMLElement | null = null;\n if (!this.handleComponent?.location.nativeElement.parentElement) {\n // スクロールビューポートか、テーブルコンテナを探す\n scrollContainer = cell.closest('cdk-virtual-scroll-viewport') || \n cell.closest('.mat-table-container') ||\n cell.closest('table')?.parentElement;\n \n if (scrollContainer) {\n this.renderer.appendChild(scrollContainer, this.handleComponent.location.nativeElement);\n } else {\n // フォールバック: document.bodyに追加(position: fixedモード)\n this.renderer.appendChild(document.body, this.handleComponent.location.nativeElement);\n this.renderer.setStyle(this.handleComponent.location.nativeElement, 'position', 'fixed');\n }\n } else {\n scrollContainer = this.handleComponent.location.nativeElement.parentElement as HTMLElement;\n }\n \n const cellRect = cell.getBoundingClientRect();\n const containerRect = scrollContainer?.getBoundingClientRect();\n \n this.handleComponent?.instance.show(cellRect, containerRect);\n \n // スクロールイベントのリスナーを設定\n this.setupScrollListener();\n }\n\n hideHandle(): void {\n this.currentCell = null;\n this.currentPosition = null;\n this.handleComponent?.instance.hide();\n }\n\n onAutofillStart(position: Position): void {\n this.startAutofill(position);\n }\n \n private setupScrollListener(): void {\n if (this.cleanupFunctions.some(fn => fn.name === 'scrollCleanup')) {\n return; // 既にリスナーが設定されている\n }\n \n const scrollHandler = () => {\n if (this.currentCell && this.handleComponent) {\n const cellRect = this.currentCell.getBoundingClientRect();\n const containerElement = this.handleComponent.location.nativeElement.parentElement;\n const containerRect = containerElement?.getBoundingClientRect();\n this.handleComponent.instance.show(cellRect, containerRect);\n }\n };\n \n // スクロール可能な親要素を見つける\n const scrollContainer = this.currentCell?.closest('cdk-virtual-scroll-viewport') || \n this.currentCell?.closest('.mat-table-container');\n \n if (scrollContainer) {\n scrollContainer.addEventListener('scroll', scrollHandler, { passive: true });\n const cleanup = () => scrollContainer.removeEventListener('scroll', scrollHandler);\n Object.defineProperty(cleanup, 'name', { value: 'scrollCleanup' });\n this.cleanupFunctions.push(cleanup);\n }\n \n // ウィンドウスクロールも監視\n window.addEventListener('scroll', scrollHandler, { passive: true });\n const windowCleanup = () => window.removeEventListener('scroll', scrollHandler);\n Object.defineProperty(windowCleanup, 'name', { value: 'scrollCleanup' });\n this.cleanupFunctions.push(windowCleanup);\n }\n \n // セルディレクティブから呼び出されるメソッド\n private startAutofill(position: Position): void {\n this.autofillStartPosition = position;\n this.ss.autofill.startAutofill(position);\n \n // 既存のリスナーをクリーンアップ\n this.cleanup();\n \n // マウスイベントの設定\n const onMouseMove = this.onMouseMove.bind(this);\n const onMouseUp = this.onMouseUp.bind(this);\n \n document.addEventListener('mousemove', onMouseMove);\n document.addEventListener('mouseup', onMouseUp);\n \n this.cleanupFunctions.push(() => {\n document.removeEventListener('mousemove', onMouseMove);\n document.removeEventListener('mouseup', onMouseUp);\n });\n }\n\n private onMouseMove(event: MouseEvent): void {\n if (!this.autofillStartPosition) return;\n \n // ドラッグ中のプレビュー処理\n const element = document.elementFromPoint(event.clientX, event.clientY);\n const cell = element?.closest('td[mat-cell]');\n if (cell) {\n const targetRow = parseInt(cell.getAttribute('data-row') || '0');\n const targetCol = parseInt(cell.getAttribute('data-col') || '0');\n \n this.ss.autofill.updateAutofillRange({ row: targetRow, col: targetCol });\n }\n }\n\n private onMouseUp(): void {\n const result = this.completeAutofill();\n if (result) {\n this.autofillComplete.emit(result);\n }\n \n this.autofillStartPosition = null;\n this.cleanup();\n }\n\n private completeAutofill(): { sourcePosition: Position; targetRange: Range; contexts: AutofillContext } | null {\n const sourcePosition = this.ss.autofill.getSourcePosition();\n const targetRange = this.ss.autofill.getTargetRange();\n \n if (!sourcePosition || !targetRange) {\n return null;\n }\n\n // GridServiceから実際のコンテキストを収集\n const contexts: Array<{ position: Position; context: any }> = [];\n const { start, end } = targetRange;\n \n // ソースコンテキストを取得\n const sourceContext = this.ss.grid.getContext(sourcePosition);\n if (!sourceContext) {\n console.warn('Source context not found');\n this.ss.autofill.cancelAutofill();\n return null;\n }\n \n // 影響を受けるセルのコンテキストを収集(表示されているセルのみ)\n for (let row = start.row + 1; row <= end.row; row++) {\n const targetContext = this.ss.grid.getContext({ row, col: start.col });\n if (targetContext) {\n contexts.push({ position: { row, col: start.col }, context: targetContext });\n }\n }\n \n // コンテキスト情報を保存\n this.lastAutofillContexts = { sourceContext, targetContexts: contexts };\n \n // オートフィルモードをリセット\n this.ss.autofill.cancelAutofill();\n \n if (contexts.length > 0) {\n return {\n sourcePosition,\n targetRange,\n contexts: this.lastAutofillContexts\n };\n }\n \n return null;\n }\n\n getLastAutofillContexts(): AutofillContext | null {\n return this.lastAutofillContexts;\n }\n\n private cleanup(): void {\n this.cleanupFunctions.forEach(fn => fn());\n this.cleanupFunctions = [];\n }\n \n ngOnDestroy(): void {\n this.cleanup();\n if (this.handleComponent) {\n this.handleComponent.destroy();\n }\n }\n}","import { Directive, effect, ElementRef, inject, input, computed } from \"@angular/core\";\nimport { SpreadSheetService } from \"../spreadsheet.service\";\nimport { GridDataTableAutofill } from \"./grid-table-autofill.directive\";\n\n@Directive({ standalone: true, selector: '[gridDataCellAutofill]' })\nexport class SpreadSheetCellAutofill {\n protected ss = inject(SpreadSheetService);\n readonly el = inject<ElementRef<HTMLTableCellElement>>(ElementRef);\n readonly table = inject(GridDataTableAutofill);\n \n readonly position = input<{row: number, col: number}>({row: 0, col: 0}, {alias: 'gridDataCellAutofill'});\n readonly enabled = input<boolean>(true, {alias: 'gridDataCellAutofillEnabled'});\n \n readonly shouldShow = computed(() => this.enabled() && \n this.ss.selection.isCursorPosition(this.position()) && \n !this.ss.editor.isEditing(this.position()) &&\n !this.ss.autofill.isAutofillMode());\n\n constructor() {\n // requestAnimationFrameを使用して、DOMの更新後に実行\n effect(() => {\n if (this.shouldShow()) {\n requestAnimationFrame(() => {\n this.table.showHandle(this.el.nativeElement, this.position());\n });\n } else if (!this.shouldShow() && this.ss.selection.isCursorPosition(this.position())) {\n // 現在のセルがカーソル位置だが表示条件を満たさない場合のみ非表示\n this.table.hideHandle();\n }\n });\n }\n}","export * from './directives';\nexport * from './features';\nexport * from './models';\nexport * from './spreadsheet.service';\n// Components are imported directly by directives to avoid circular dependencies\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.SelectionService"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ng-atomic-common-services-spreadsheet.mjs","sources":["../../../../../packages/@ng-atomic/common/src/lib/services/spreadsheet/features/data.service.ts","../../../../../packages/@ng-atomic/common/src/lib/services/spreadsheet/features/grid.service.ts","../../../../../packages/@ng-atomic/common/src/lib/services/spreadsheet/features/navigation.service.ts","../../../../../packages/@ng-atomic/common/src/lib/services/spreadsheet/features/selection.service.ts","../../../../../packages/@ng-atomic/common/src/lib/services/spreadsheet/features/clipboard.service.ts","../../../../../packages/@ng-atomic/common/src/lib/services/spreadsheet/features/protection.service.ts","../../../../../packages/@ng-atomic/common/src/lib/services/spreadsheet/features/editor.service.ts","../../../../../packages/@ng-atomic/common/src/lib/services/spreadsheet/features/autofill.service.ts","../../../../../packages/@ng-atomic/common/src/lib/services/spreadsheet/spreadsheet.service.ts","../../../../../packages/@ng-atomic/common/src/lib/services/spreadsheet/directives/grid-cell.directive.ts","../../../../../packages/@ng-atomic/common/src/lib/services/spreadsheet/directives/grid-table-autofill.directive.ts","../../../../../packages/@ng-atomic/common/src/lib/services/spreadsheet/directives/grid-cell-autofill.directive.ts","../../../../../packages/@ng-atomic/common/src/lib/services/spreadsheet/index.ts","../../../../../packages/@ng-atomic/common/src/lib/services/spreadsheet/ng-atomic-common-services-spreadsheet.ts"],"sourcesContent":["import { Injectable, signal } from \"@angular/core\";\n\n\n@Injectable()\nexport class SpreadSheetDataService {\n readonly displayedColumns = signal<string[]>([]);\n readonly items = signal<any[]>([]);\n}\n","import { computed, inject, Injectable } from '@angular/core';\nimport { CellContext, Position } from '../models/cell.model';\nimport { SpreadSheetDataService } from './data.service';\n\n@Injectable()\nexport class GridService {\n protected readonly contextMap = new Map<string, CellContext>();\n protected readonly data = inject(SpreadSheetDataService);\n\n readonly maxCol = computed(() => this.data.displayedColumns().length - 1);\n readonly maxRow = computed(() => this.data.items().length);\n\n setContext(context: CellContext): void {\n this.contextMap.set(this.buildKey(context.position), context);\n }\n\n getContext(position: Position): CellContext | null {\n return this.contextMap.get(this.buildKey(position)) ?? null;\n }\n\n protected buildKey(position: Position): string {\n return `(${position.row}, ${position.col})`;\n }\n}","import { inject, Injectable } from '@angular/core';\nimport { Position } from '../models/cell.model';\nimport { GridService } from './grid.service';\n\n@Injectable()\nexport class NavigationService {\n private gridService = inject(GridService)\n\n moveToNextCell({row, col}: Position): Position {\n if (col < this.gridService.maxCol()) {\n return { row, col: col + 1 };\n } else if (row < this.gridService.maxRow()) {\n return { row: row + 1, col: 0 };\n }\n return { row, col };\n }\n\n moveToPreviousCell({row, col}: Position): Position {\n if (col > 0) {\n return { row, col: col - 1 };\n } else if (row > 0) {\n return { row: row - 1, col: this.gridService.maxCol() };\n }\n return { row, col };\n }\n\n moveToNextRow({row, col}: Position): Position {\n if (row < this.gridService.maxRow()) {\n return { row: row + 1, col };\n }\n return { row, col };\n }\n\n moveToPreviousRow({row, col}: Position): Position {\n if (row > 0) {\n return { row: row - 1, col };\n }\n return { row, col };\n }\n\n moveRight(position: Position): Position {\n const {row, col} = position;\n if (col < this.gridService.maxCol()) {\n return { row, col: col + 1 };\n }\n return { row, col };\n }\n\n moveLeft({row, col}: Position): Position {\n if (col > 0) {\n return { row, col: col - 1 };\n }\n return { row, col };\n }\n\n moveUp({row, col}: Position): Position {\n if (row > 0) {\n return { row: row - 1, col };\n }\n return { row, col };\n }\n\n moveDown({row, col}: Position): Position {\n if (row < this.gridService.maxRow()) {\n return { row: row + 1, col };\n }\n return { row, col };\n }\n}","import { computed, effect, inject, Injectable, signal } from '@angular/core';\nimport { Selection, Position } from '../models/cell.model';\nimport { GridService } from './grid.service';\nimport { isEqual } from 'lodash-es';\nimport { SpreadSheetDataService } from './data.service';\n\n@Injectable()\nexport class SelectionService {\n protected readonly data = inject(SpreadSheetDataService);\n private readonly selection = signal<Selection>({ start: { row: 1, col: 0}, end: null });\n private readonly selectionStart = computed(() => this.selection().start, { equal: isEqual });\n private readonly isMouseDown = signal(false);\n private readonly grid = inject(GridService);\n private readonly cellElMap = new Map<string, HTMLTableCellElement>();\n\n constructor() {\n effect(() => {\n const position = this.selectionStart();\n if (position) this.focus(position);\n });\n }\n\n isSelected(position: Position): boolean {\n // selectionの範囲に含まれているかどうかを返す\n const selection = this.selection();\n if (!selection) return false;\n\n const { start, end } = selection;\n const minRow = Math.min(start.row, end?.row ?? start.row);\n const maxRow = Math.max(start.row, end?.row ?? start.row);\n const minCol = Math.min(start.col, end?.col ?? start.col);\n const maxCol = Math.max(start.col, end?.col ?? start.col);\n const { row, col } = position;\n return row >= minRow && row <= maxRow && col >= minCol && col <= maxCol;\n }\n\n isCursorPosition(position: Position): boolean {\n return isEqual(this.selection().start, position);\n }\n\n handleMouseDown(position: Position, event?: MouseEvent): void {\n this.isMouseDown.set(true);\n if (!event?.shiftKey) {\n this.startSelection(position);\n }\n }\n\n handleMouseUp(): void {\n this.isMouseDown.set(false);\n }\n\n handleMouseEnter(position: Position): void {\n if (this.isMouseDown()) {\n this.updateSelection(position);\n }\n }\n\n handleClick(position: Position, event?: MouseEvent): void {\n if (!this.isMouseDown()) {\n if (event?.shiftKey) {\n this.updateSelectionEnd(position);\n } else {\n this.startSelection(position);\n }\n }\n }\n\n clearSelection(): void {\n this.selection.update((selection) => ({...selection, start: selection.start, end: null}));\n }\n\n setStartPosition(position: Position): void {\n this.selection.update((selection) => ({...selection, start: position, end: null}));\n }\n\n getSelection(): Selection | null {\n return this.selection();\n }\n\n getSelectionEndOrStart(): Position {\n return (this.selection()?.end || this.selection()?.start) as Position;\n }\n\n updateSelectionEnd(position: Position): void {\n this.selection.update((selection) => ({...selection, end: position}));\n }\n\n private startSelection(position: Position): void {\n this.selection.set({ start: position, end: null });\n }\n\n private updateSelection(position: Position): void {\n if (this.selection()) {\n this.selection.update((selection) => ({...selection, end: position}));\n }\n }\n\n clearSelectedRange(selection: { start: { row: number; col: number }; end: { row: number; col: number } | null }): void {\n\n }\n\n setCell(position: Position, el: HTMLTableCellElement): void {\n this.cellElMap.set(`${this.buildKey(position)}`, el);\n }\n\n getCell(position: Position): HTMLTableCellElement | null {\n return this.cellElMap.get(this.buildKey(position)) ?? null;\n }\n\n focus(position: Position): void {\n setTimeout(() => {\n const el = this.getCell(position);\n if (el && el !== document.activeElement) {\n el.focus();\n }\n });\n }\n\n protected buildKey(position: Position): string {\n return `(${position.row}, ${position.col})`;\n }\n}","import { inject, Injectable } from '@angular/core';\nimport { Clipboard } from '@angular/cdk/clipboard';\nimport { SnackBarService } from '@ng-atomic/common/services/snack-bar';\nimport { injectDataAccessor } from '@ng-atomic/common/pipes/data-accessor';\nimport { EXPRESSION_TRANSFORMER } from '@ng-atomic/common/utils';\nimport { LanguageService } from '@ng-atomic/common/services/language';\nimport papaparse from 'papaparse';\nimport { Cell } from '../models';\nimport { SelectionService } from './selection.service';\nimport { SpreadSheetDataService } from './data.service';\n\n@Injectable()\nexport class ClipboardService {\n private clipboard = inject(Clipboard);\n private snackBar = inject(SnackBarService);\n protected data = inject(SpreadSheetDataService);\n readonly dataAccessor = injectDataAccessor();\n readonly expression = inject(EXPRESSION_TRANSFORMER);\n readonly language = inject(LanguageService);\n\n constructor(\n private selectionService: SelectionService,\n ) { }\n\n private buildGridData(range: {minRow: number; maxRow: number; minCol: number; maxCol: number}): Cell[][] {\n const header = this.data.displayedColumns().map(column => ({\n dataValue: this.language.transform(column),\n expressionValue: this.language.transform(column),\n isHeader: true\n }));\n const rows = this.data.items().map(item => this.data.displayedColumns().map(column => ({\n dataValue: this.dataAccessor(item, column),\n expressionValue: this.expression(this.dataAccessor(item, column), {item, name: column}),\n })));\n const fullData = [header, ...rows];\n return fullData.slice(range.minRow, range.maxRow + 1).map(row => row.slice(range.minCol, range.maxCol + 1));\n }\n\n async copy(): Promise<void> {\n const selection = this.selectionService.getSelection();\n if (!selection) return;\n let { start, end } = selection;\n end = end ?? start;\n const minRow = Math.min(start.row, end.row);\n const maxRow = Math.max(start.row, end.row);\n const minCol = Math.min(start.col, end.col);\n const maxCol = Math.max(start.col, end.col);\n const selectedData = this.buildGridData({minRow, maxRow, minCol, maxCol});\n const tsv = papaparse.unparse(selectedData.map(row => row.map(cell => cell.dataValue)),\n { delimiter: \"\\t\", newline: \"\\n\", header: false });\n this.copyText(tsv);\n }\n\n setData(items: any[], displayedColumns: string[]): void {\n this.data.displayedColumns.set(displayedColumns);\n this.data.items.set(items);\n }\n\n protected copyText(text: string) {\n this.clipboard.copy(text);\n this.snackBar.open('クリップボードにコピーしました。');\n }\n\n async paste(targetRow: number, targetCol: number): Promise<void> {\n }\n}","import { inject, Injectable, InjectionToken } from \"@angular/core\";\n\ninterface CellContext<T> {\n item: T;\n name: string;\n position: {\n row: number;\n col: number;\n }\n}\n\nexport type CellProtector = (value: any, context: CellContext<any>) => boolean;\nexport const COLUMN_PROTECTOR = new InjectionToken<CellProtector[]>('COLUMN_PROTECTOR', {\n providedIn: 'root',\n factory: () => [],\n});\nexport function provideCellProtector(useFactory: () => CellProtector) {\n return { provide: COLUMN_PROTECTOR, useFactory, multi: true };\n}\n\n@Injectable()\nexport class ProtectionService {\n readonly protectors = inject(COLUMN_PROTECTOR, {optional: true});\n\n isEditable(value: any, context: CellContext<any>): boolean {\n if (!this.protectors) return true;\n return this.protectors.every((protector) => protector(value, context));\n }\n}\n","import { inject, Injectable, signal } from '@angular/core';\nimport { EditingStateManager } from '@ng-atomic/common/services/editing';\nimport { GridService } from './grid.service';\nimport { SelectionService } from './selection.service';\nimport { ProtectionService } from './protection.service';\nimport { Position } from '../models/cell.model';\nimport { SpreadSheetDataService } from './data.service';\n\n@Injectable()\nexport class EditorService {\n protected readonly data = inject(SpreadSheetDataService);\n private grid = inject(GridService);\n private selection = inject(SelectionService);\n private protection = inject(ProtectionService);\n private editingStateManager = inject(EditingStateManager);\n readonly editinngCell = signal<{ row: number, col: number } | null>(null);\n protected readonly inputMap = new Map<string, HTMLInputElement>();\n\n isEditing(position: Position): boolean {\n return this.editinngCell()?.row === position.row && this.editinngCell()?.col === position.col;\n }\n\n startEditing(position: Position): void {\n const context = this.grid.getContext(position);\n console.debug('context:', context);\n if (!this.protection.isEditable(null, context!)) {\n return;\n }\n this.selection.clearSelection();\n this.editinngCell.set(position);\n \n // Notify EditingStateManager about editing start\n const columnId = this.data.displayedColumns()[position.col];\n this.editingStateManager.startEditing(position.row, columnId);\n \n this.focus(position);\n }\n\n stopEditing(): void {\n const editingCell = this.editinngCell();\n if (editingCell) {\n // Notify EditingStateManager about editing stop\n const columnId = this.data.displayedColumns()[editingCell.col];\n this.editingStateManager.stopEditing(editingCell.row, columnId);\n }\n this.editinngCell.set(null);\n }\n\n focus(position: Position): void {\n setTimeout(() => {\n const input = this.getInput(position);\n if (input && input !== document.activeElement) {\n input.focus();\n input.select();\n }\n });\n }\n\n getEditingCell(): Position | null {\n for (let i = 0; i < this.data.items().length; i++) {\n for (let j = 0; j < this.data.displayedColumns().length; j++) {\n if (this.isEditing({row: i, col: j})) {\n return { row: i, col: j };\n }\n }\n }\n return null;\n }\n\n setInput(input: HTMLInputElement, position: Position): void {\n this.inputMap.set(`${this.buildKey(position)}`, input);\n }\n\n getInput(position: Position): HTMLInputElement | null {\n return this.inputMap.get(this.buildKey(position)) ?? null;\n }\n\n protected buildKey(position: Position): string {\n return `(${position.row}, ${position.col})`;\n }\n}","import { Injectable, signal } from '@angular/core';\nimport { Position } from '../models';\n\nexport interface Range {\n start: Position;\n end: Position;\n}\n\n@Injectable()\nexport class AutoFillService {\n private autofillMode = signal(false);\n private sourcePosition = signal<Position | null>(null);\n private targetRange = signal<Range | null>(null);\n private previewElements = new Set<HTMLElement>();\n \n readonly isAutofillMode = this.autofillMode.asReadonly();\n readonly getSourcePosition = this.sourcePosition.asReadonly();\n readonly getTargetRange = this.targetRange.asReadonly();\n \n startAutofill(position: Position): void {\n this.autofillMode.set(true);\n this.sourcePosition.set(position);\n this.targetRange.set({ start: position, end: position });\n }\n \n updateAutofillRange(endPosition: Position): void {\n const sourcePos = this.sourcePosition();\n if (sourcePos) {\n this.targetRange.set({ start: sourcePos, end: endPosition });\n this.updatePreview();\n }\n }\n \n \n cancelAutofill(): void {\n this.resetAutofill();\n }\n \n \n private updatePreview(): void {\n // 既存のプレビューをクリア\n this.clearPreview();\n \n const range = this.targetRange();\n if (!range) return;\n \n // 影響を受けるセルにプレビュークラスを追加\n for (let row = range.start.row + 1; row <= range.end.row; row++) {\n const position = { row, col: range.start.col };\n const cellElement = this.getCellElement(position);\n if (cellElement) {\n cellElement.classList.add('autofill-preview');\n this.previewElements.add(cellElement);\n }\n }\n }\n \n private clearPreview(): void {\n this.previewElements.forEach(element => {\n element.classList.remove('autofill-preview');\n });\n this.previewElements.clear();\n }\n \n private getCellElement(position: Position): HTMLElement | null {\n return document.querySelector(\n `[data-row=\"${position.row}\"][data-col=\"${position.col}\"]`\n ) as HTMLElement;\n }\n \n \n private resetAutofill(): void {\n this.clearPreview();\n this.autofillMode.set(false);\n this.sourcePosition.set(null);\n this.targetRange.set(null);\n }\n}","import { inject, Injectable, Provider } from '@angular/core';\nimport { Position } from './models/cell.model';\nimport { GridService } from './features/grid.service';\nimport { NavigationService } from './features/navigation.service';\nimport { SelectionService } from './features/selection.service';\nimport { ClipboardService } from './features/clipboard.service';\nimport { EditorService } from './features/editor.service';\nimport { ProtectionService } from './features/protection.service';\nimport { SpreadSheetDataService } from './features/data.service';\nimport { AutoFillService } from './features/autofill.service';\n\n@Injectable()\nexport class SpreadSheetService {\n readonly config = { paste: false };\n readonly grid = inject(GridService);\n // readonly data = inject(SpreadSheetDataService);\n readonly navigation = inject(NavigationService);\n readonly selection = inject(SelectionService);\n readonly clipboard = inject(ClipboardService);\n readonly editor = inject(EditorService);\n readonly protection = inject(ProtectionService);\n readonly autofill = inject(AutoFillService);\n\n handleKeyDown(event: KeyboardEvent): void {\n if (this.editor.editinngCell()) {\n this.handleKeyDownOnEditing(event);\n } else {\n this.handleKeyDownOnSelecting(event);\n }\n }\n\n protected handleKeyDownOnEditing(event: KeyboardEvent): void {\n const cell = this.editor.editinngCell();\n \n // stopPropagation()が呼ばれている場合は処理しない\n // IME入力中やユーザーの意図的な入力中断の場合にValueCellAtomから制御される\n if (event.cancelBubble) {\n return;\n }\n \n if (event.key === 'Tab') {\n event.preventDefault();\n if (event.shiftKey) {\n this.move(cell!, 'left', 'select');\n } else {\n this.move(cell!, 'right', 'select');\n }\n } else if (event.key === 'Enter') {\n event.preventDefault();\n if (event.shiftKey) {\n this.move(cell!, 'top', 'select');\n } else {\n this.move(cell!, 'bottom', 'select');\n }\n }\n }\n\n protected handleKeyDownOnSelecting(event: KeyboardEvent): void {\n if (event.key === 'Tab') {\n const selectedCell = this.selection.getSelection()!.start;\n event.preventDefault();\n event.stopPropagation();\n if (event.shiftKey) {\n this.move(selectedCell, 'left', 'select');\n } else {\n this.move(selectedCell, 'right', 'select');\n }\n return;\n } else if (event.key === 'Enter') {\n const selectedCell = this.selection.getSelection()!.start;\n if (selectedCell) {\n this.editor.startEditing(selectedCell);\n event.preventDefault();\n }\n } else if (event.ctrlKey || event.metaKey) {\n if (event.key === 'c') {\n this.clipboard.copy();\n event.preventDefault();\n } else if (event.key === 'v') {\n if (!this.config.paste) return;\n const target = this.selection.getSelection()!.start;\n if (target) {\n this.clipboard.paste(target.row, target.col);\n }\n event.preventDefault();\n }\n return;\n } else if (event.key === 'Delete' || event.key === 'Backspace') {\n const selection = this.selection.getSelection();\n if (selection) {\n this.selection.clearSelectedRange(selection);\n event.preventDefault();\n return;\n }\n } else {\n const selection = this.selection.getSelection()!.start;\n let newPosition: Position | undefined;\n if (event.shiftKey) {\n const selectionEnd = this.selection.getSelectionEndOrStart();\n switch (event.key) {\n case 'ArrowRight':\n newPosition = this.navigation.moveRight(selectionEnd);\n break;\n case 'ArrowLeft':\n newPosition = this.navigation.moveLeft(selectionEnd);\n break;\n case 'ArrowUp':\n newPosition = this.navigation.moveUp(selectionEnd);\n break;\n case 'ArrowDown':\n newPosition = this.navigation.moveDown(selectionEnd);\n break;\n default:\n return;\n }\n if (newPosition) {\n event.preventDefault();\n this.selection.updateSelectionEnd(newPosition);\n }\n } else {\n switch (event.key) {\n case 'ArrowRight':\n newPosition = this.navigation.moveRight(selection);\n break;\n case 'ArrowLeft':\n newPosition = this.navigation.moveLeft(selection);\n break;\n case 'ArrowUp':\n newPosition = this.navigation.moveUp(selection);\n break;\n case 'ArrowDown':\n newPosition = this.navigation.moveDown(selection);\n break;\n default:\n return;\n }\n if (newPosition) {\n event.preventDefault();\n this.selection.clearSelection();\n this.selection.handleClick(newPosition);\n }\n }\n }\n }\n\n protected move(_position: Position, dest: 'top' | 'bottom' | 'left' | 'right', mode: 'edit' | 'select') {\n this.editor.stopEditing();\n let position: Position = _position;\n if (dest === 'top') {\n position = this.navigation.moveToPreviousRow(_position);\n } else if (dest === 'bottom') {\n position = this.navigation.moveToNextRow(_position);\n } else if (dest === 'left') {\n position = this.navigation.moveToPreviousCell(_position);\n } else if (dest === 'right') {\n position = this.navigation.moveToNextCell(_position);\n }\n\n this.selection.setStartPosition(position);\n\n if (mode === 'edit') {\n this.editor.startEditing(position);\n }\n }\n}\n\nexport function provideSpreadSheetService(): Provider[] {\n return [\n ClipboardService,\n SpreadSheetDataService,\n EditorService,\n SpreadSheetService,\n GridService,\n NavigationService,\n SelectionService,\n ProtectionService,\n AutoFillService\n ];\n}\n","import { computed, Directive, effect, ElementRef, inject, input, signal, AfterViewInit } from \"@angular/core\";\nimport { SpreadSheetService } from \"../spreadsheet.service\";\nimport { CellContext } from \"../models/cell.model\";\n\n@Directive({\n standalone: true,\n selector: '[ssCell]',\n host: {\n '[class.selected]': 'ss.selection.isSelected(position())',\n '[class.editing]': 'ss.editor.isEditing(position())',\n '(mousedown)': 'ss.selection.handleMouseDown(position(), $event)',\n '(mouseup)': 'ss.selection.handleMouseUp()',\n '(mouseenter)': 'ss.selection.handleMouseEnter(position())',\n '(click)': 'ss.selection.handleClick(position(), $event)',\n '(dblclick)': 'onDbClick()',\n '[attr.data-row]': 'position().row',\n '[attr.data-col]': 'position().col',\n }\n})\nexport class SpreadSheetCell implements AfterViewInit {\n protected ss = inject(SpreadSheetService);\n readonly el = inject<ElementRef<HTMLTableCellElement>>(ElementRef);\n\n readonly position = input<{row: number, col: number}>({row: 0, col: 0}, {alias: 'ssCell'});\n readonly editable = input<boolean>(false, {alias: 'ssCellEditable'});\n readonly context = input<CellContext | null>(null, {alias: 'ssCellContext'});\n readonly isSelected = computed(() => this.ss.selection.isSelected(this.position()));\n readonly isEditing = computed(() => this.ss.editor.isEditing(this.position()));\n readonly frameEl = signal<HTMLDivElement | null>(null);\n\n constructor() {\n effect(() => {\n if (!this.context()) return;\n this.ss.grid.setContext(this.context()!);\n });\n\n effect(() => {\n const isCursor = this.ss.selection.isCursorPosition(this.position());\n let frame = this.frameEl();\n\n if (isCursor) {\n if (!frame) {\n frame = this.buildOutlineFrame();\n this.el.nativeElement.appendChild(frame);\n this.frameEl.set(frame);\n }\n } else {\n frame?.remove();\n this.frameEl.set(null);\n }\n });\n }\n\n onDbClick(): void {\n if (!this.editable()) return;\n this.ss.editor.startEditing(this.position());\n }\n\n ngAfterViewInit(): void {\n this.ss.selection.setCell(this.position(), this.el.nativeElement);\n if (this.isSelected() && !this.isEditing()) {\n this.ss.selection.focus(this.position());\n }\n }\n\n protected buildOutlineFrame(): HTMLDivElement {\n const frame = document.createElement('div');\n frame.classList.add('selection-frame');\n frame.style.position = 'absolute';\n frame.style.top = '0';\n frame.style.left = '0';\n frame.style.width = '100%';\n frame.style.height = '100%';\n frame.style.border = '2px solid #2196f3';\n frame.style.borderRadius = '4px';\n frame.style.pointerEvents = 'none';\n frame.style.boxSizing = 'border-box';\n return frame;\n }\n\n protected createLabelElement(options: {\n label: string\n color: string\n }) {\n const el = document.createElement('span');\n el.textContent = options.label;\n el.style.backgroundColor = `${options.color}`;\n el.style.color = '#fff';\n el.style.padding = '2px 4px';\n el.style.position = 'absolute';\n el.style.fontSize = '10px';\n el.style.top = '0';\n el.style.left = '0';\n el.style.zIndex = '9999';\n el.style.lineHeight = '1.5em';\n el.style.whiteSpace = 'nowrap';\n this.el.nativeElement.appendChild(el);\n }\n}\n\n\n@Directive({\n standalone: true,\n selector: '[ssCellInput]',\n host: {\n '(blur)': 'stopEditing()',\n }\n})\nexport class SpreadSheetCellInput implements AfterViewInit {\n protected ss = inject(SpreadSheetService);\n readonly position = input<{row: number, col: number}>({row: 0, col: 0}, {alias: 'ssCellInput'});\n readonly el = inject<ElementRef<HTMLInputElement>>(ElementRef);\n readonly isSelected = computed(() => this.ss.selection.isSelected(this.position()));\n readonly isEditing = computed(() => this.ss.editor.isEditing(this.position()));\n\n ngAfterViewInit(): void {\n this.ss.editor.setInput(this.el.nativeElement, this.position());\n if (this.isSelected() && this.isEditing()) {\n this.ss.editor.focus(this.position());\n }\n }\n\n protected stopEditing(): void {\n this.ss.editor.stopEditing();\n }\n}\n","import { Component, Directive, inject, OnDestroy, output, ViewContainerRef, ComponentRef, ElementRef, Renderer2, HostListener } from '@angular/core';\nimport { SpreadSheetService } from '../spreadsheet.service';\n\ntype Position = { row: number; col: number };\ntype Range = { start: Position; end: Position };\n\nexport interface AutofillContext {\n sourceContext: any;\n targetContexts: Array<{ position: Position; context: any }>;\n}\n\n@Component({\n selector: 'autofill-handle',\n standalone: true,\n template: '',\n styles: [`\n :host {\n position: absolute;\n width: 8px;\n height: 8px;\n background-color: #2196F3;\n border: 2px solid #ffffff;\n border-radius: 50%;\n cursor: crosshair;\n z-index: 10000;\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.3);\n transition: background-color 0.2s, opacity 0.2s;\n opacity: 0;\n pointer-events: none;\n \n &:hover {\n background-color: #1976D2;\n }\n \n &.visible {\n opacity: 1;\n pointer-events: auto;\n }\n }\n `]\n})\nclass AutofillHandleComponent {\n readonly elementRef = inject(ElementRef<HTMLElement>);\n private renderer = inject(Renderer2);\n \n handleMouseDown = output<MouseEvent>();\n \n @HostListener('mousedown', ['$event'])\n onMouseDown(e: MouseEvent): void {\n e.preventDefault();\n e.stopPropagation();\n this.handleMouseDown.emit(e);\n }\n\n show(rect: DOMRect, containerRect?: DOMRect) {\n const el = this.elementRef.nativeElement;\n // ハンドルをセルの右下角に配置\n const handleSize = 14; // 8px + 2px*2 (border)\n \n if (containerRect) {\n // コンテナからの相対位置を計算\n this.renderer.setStyle(el, 'left', `${rect.right - containerRect.left - handleSize / 2}px`);\n this.renderer.setStyle(el, 'top', `${rect.bottom - containerRect.top - handleSize / 2}px`);\n } else {\n // position: fixedの場合(フォールバック)\n this.renderer.setStyle(el, 'left', `${rect.right - handleSize}px`);\n this.renderer.setStyle(el, 'top', `${rect.bottom - handleSize}px`);\n }\n \n this.renderer.addClass(el, 'visible');\n }\n \n hide() {\n this.renderer.removeClass(this.elementRef.nativeElement, 'visible');\n }\n}\n\n/**\n * テーブル全体のオートフィル機能を管理するディレクティブ\n * セルディレクティブから直接呼び出される\n */\n@Directive({\n standalone: true,\n selector: '[gridDataTableAutofill]'\n})\nexport class GridDataTableAutofill implements OnDestroy {\n private ss = inject(SpreadSheetService);\n private viewContainerRef = inject(ViewContainerRef);\n private renderer = inject(Renderer2);\n private autofillStartPosition: Position | null = null;\n private lastAutofillContexts: AutofillContext | null = null;\n private cleanupFunctions: (() => void)[] = [];\n private handleComponent: ComponentRef<AutofillHandleComponent> | null = null;\n private currentCell: HTMLElement | null = null;\n \n // オートフィル完了イベント\n readonly autofillComplete = output<{\n sourcePosition: Position;\n targetRange: Range;\n contexts: AutofillContext;\n }>();\n\n private currentPosition: Position | null = null;\n\n constructor() {\n // ハンドルコンポーネントを作成\n this.handleComponent = this.viewContainerRef.createComponent(AutofillHandleComponent);\n \n // ハンドルのmousedownイベントを設定\n this.handleComponent.instance.handleMouseDown.subscribe(() => {\n if (this.currentPosition) {\n this.startAutofill(this.currentPosition);\n }\n });\n }\n\n showHandle(cell: HTMLElement, position: Position): void {\n this.currentCell = cell;\n this.currentPosition = position;\n \n // ハンドルを適切な親要素に配置(初回のみ)\n let scrollContainer: HTMLElement | null = null;\n if (!this.handleComponent?.location.nativeElement.parentElement) {\n // スクロールビューポートか、テーブルコンテナを探す\n scrollContainer = (cell.closest('cdk-virtual-scroll-viewport') ||\n cell.closest('.mat-table-container') ||\n cell.closest('table')?.parentElement) as HTMLElement | null;\n \n if (scrollContainer) {\n this.renderer.appendChild(scrollContainer, this.handleComponent!.location.nativeElement);\n } else {\n // フォールバック: document.bodyに追加(position: fixedモード)\n this.renderer.appendChild(document.body, this.handleComponent!.location.nativeElement);\n this.renderer.setStyle(this.handleComponent!.location.nativeElement, 'position', 'fixed');\n }\n } else {\n scrollContainer = this.handleComponent!.location.nativeElement.parentElement as HTMLElement;\n }\n \n const cellRect = cell.getBoundingClientRect();\n const containerRect = scrollContainer?.getBoundingClientRect();\n \n this.handleComponent?.instance.show(cellRect, containerRect);\n \n // スクロールイベントのリスナーを設定\n this.setupScrollListener();\n }\n\n hideHandle(): void {\n this.currentCell = null;\n this.currentPosition = null;\n this.handleComponent?.instance.hide();\n }\n\n onAutofillStart(position: Position): void {\n this.startAutofill(position);\n }\n \n private setupScrollListener(): void {\n if (this.cleanupFunctions.some(fn => fn.name === 'scrollCleanup')) {\n return; // 既にリスナーが設定されている\n }\n \n const scrollHandler = () => {\n if (this.currentCell && this.handleComponent) {\n const cellRect = this.currentCell.getBoundingClientRect();\n const containerElement = this.handleComponent.location.nativeElement.parentElement;\n const containerRect = containerElement?.getBoundingClientRect();\n this.handleComponent.instance.show(cellRect, containerRect);\n }\n };\n \n // スクロール可能な親要素を見つける\n const scrollContainer = this.currentCell?.closest('cdk-virtual-scroll-viewport') || \n this.currentCell?.closest('.mat-table-container');\n \n if (scrollContainer) {\n scrollContainer.addEventListener('scroll', scrollHandler, { passive: true });\n const cleanup = () => scrollContainer.removeEventListener('scroll', scrollHandler);\n Object.defineProperty(cleanup, 'name', { value: 'scrollCleanup' });\n this.cleanupFunctions.push(cleanup);\n }\n \n // ウィンドウスクロールも監視\n window.addEventListener('scroll', scrollHandler, { passive: true });\n const windowCleanup = () => window.removeEventListener('scroll', scrollHandler);\n Object.defineProperty(windowCleanup, 'name', { value: 'scrollCleanup' });\n this.cleanupFunctions.push(windowCleanup);\n }\n \n // セルディレクティブから呼び出されるメソッド\n private startAutofill(position: Position): void {\n this.autofillStartPosition = position;\n this.ss.autofill.startAutofill(position);\n \n // 既存のリスナーをクリーンアップ\n this.cleanup();\n \n // マウスイベントの設定\n const onMouseMove = this.onMouseMove.bind(this);\n const onMouseUp = this.onMouseUp.bind(this);\n \n document.addEventListener('mousemove', onMouseMove);\n document.addEventListener('mouseup', onMouseUp);\n \n this.cleanupFunctions.push(() => {\n document.removeEventListener('mousemove', onMouseMove);\n document.removeEventListener('mouseup', onMouseUp);\n });\n }\n\n private onMouseMove(event: MouseEvent): void {\n if (!this.autofillStartPosition) return;\n \n // ドラッグ中のプレビュー処理\n const element = document.elementFromPoint(event.clientX, event.clientY);\n const cell = element?.closest('td[mat-cell]');\n if (cell) {\n const targetRow = parseInt(cell.getAttribute('data-row') || '0');\n const targetCol = parseInt(cell.getAttribute('data-col') || '0');\n \n this.ss.autofill.updateAutofillRange({ row: targetRow, col: targetCol });\n }\n }\n\n private onMouseUp(): void {\n const result = this.completeAutofill();\n if (result) {\n this.autofillComplete.emit(result);\n }\n \n this.autofillStartPosition = null;\n this.cleanup();\n }\n\n private completeAutofill(): { sourcePosition: Position; targetRange: Range; contexts: AutofillContext } | null {\n const sourcePosition = this.ss.autofill.getSourcePosition();\n const targetRange = this.ss.autofill.getTargetRange();\n \n if (!sourcePosition || !targetRange) {\n return null;\n }\n\n // GridServiceから実際のコンテキストを収集\n const contexts: Array<{ position: Position; context: any }> = [];\n const { start, end } = targetRange;\n \n // ソースコンテキストを取得\n const sourceContext = this.ss.grid.getContext(sourcePosition);\n if (!sourceContext) {\n console.warn('Source context not found');\n this.ss.autofill.cancelAutofill();\n return null;\n }\n \n // 影響を受けるセルのコンテキストを収集(表示されているセルのみ)\n for (let row = start.row + 1; row <= end.row; row++) {\n const targetContext = this.ss.grid.getContext({ row, col: start.col });\n if (targetContext) {\n contexts.push({ position: { row, col: start.col }, context: targetContext });\n }\n }\n \n // コンテキスト情報を保存\n this.lastAutofillContexts = { sourceContext, targetContexts: contexts };\n \n // オートフィルモードをリセット\n this.ss.autofill.cancelAutofill();\n \n if (contexts.length > 0) {\n return {\n sourcePosition,\n targetRange,\n contexts: this.lastAutofillContexts\n };\n }\n \n return null;\n }\n\n getLastAutofillContexts(): AutofillContext | null {\n return this.lastAutofillContexts;\n }\n\n private cleanup(): void {\n this.cleanupFunctions.forEach(fn => fn());\n this.cleanupFunctions = [];\n }\n \n ngOnDestroy(): void {\n this.cleanup();\n if (this.handleComponent) {\n this.handleComponent.destroy();\n }\n }\n}","import { Directive, effect, ElementRef, inject, input, computed } from \"@angular/core\";\nimport { SpreadSheetService } from \"../spreadsheet.service\";\nimport { GridDataTableAutofill } from \"./grid-table-autofill.directive\";\n\n@Directive({ standalone: true, selector: '[gridDataCellAutofill]' })\nexport class SpreadSheetCellAutofill {\n protected ss = inject(SpreadSheetService);\n readonly el = inject<ElementRef<HTMLTableCellElement>>(ElementRef);\n readonly table = inject(GridDataTableAutofill);\n \n readonly position = input<{row: number, col: number}>({row: 0, col: 0}, {alias: 'gridDataCellAutofill'});\n readonly enabled = input<boolean>(true, {alias: 'gridDataCellAutofillEnabled'});\n \n readonly shouldShow = computed(() => this.enabled() && \n this.ss.selection.isCursorPosition(this.position()) && \n !this.ss.editor.isEditing(this.position()) &&\n !this.ss.autofill.isAutofillMode());\n\n constructor() {\n // requestAnimationFrameを使用して、DOMの更新後に実行\n effect(() => {\n if (this.shouldShow()) {\n requestAnimationFrame(() => {\n this.table.showHandle(this.el.nativeElement, this.position());\n });\n } else if (!this.shouldShow() && this.ss.selection.isCursorPosition(this.position())) {\n // 現在のセルがカーソル位置だが表示条件を満たさない場合のみ非表示\n this.table.hideHandle();\n }\n });\n }\n}","export * from './directives';\nexport * from './features';\nexport * from './models';\nexport * from './spreadsheet.service';\n// Components are imported directly by directives to avoid circular dependencies\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.SelectionService"],"mappings":"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"}
|
|
@@ -269,10 +269,11 @@ function injectDeepMulti(token, injector = inject(Injector)) {
|
|
|
269
269
|
}
|
|
270
270
|
function debugInjector(injector = inject(Injector)) {
|
|
271
271
|
const getParent = (injector, n = 0) => {
|
|
272
|
-
|
|
273
|
-
|
|
272
|
+
let current = injector;
|
|
273
|
+
while (current && n-- > 0) {
|
|
274
|
+
current = current.get(Injector, null, { skipSelf: true });
|
|
274
275
|
}
|
|
275
|
-
return
|
|
276
|
+
return current;
|
|
276
277
|
};
|
|
277
278
|
const getInjectorName = (injector) => {
|
|
278
279
|
const name = injector.get(ElementRef, null)?.nativeElement?.tagName?.toLowerCase();
|
|
@@ -283,7 +284,7 @@ function debugInjector(injector = inject(Injector)) {
|
|
|
283
284
|
const isNodeInjector = (injector) => {
|
|
284
285
|
return injector.get(ElementRef, null) !== null;
|
|
285
286
|
};
|
|
286
|
-
const mapToNames = (reducers) => (reducers ?? []).map(reducer => reducer.name);
|
|
287
|
+
const mapToNames = (reducers) => (reducers ?? []).map((reducer) => reducer.name);
|
|
287
288
|
for (let i = 0; i < 20; i++) {
|
|
288
289
|
injector = getParent(injector, i);
|
|
289
290
|
if (injector === Injector.NULL)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ng-atomic-common-services-ui.mjs","sources":["../../../../../packages/@ng-atomic/common/src/lib/services/ui/ui.service.ts","../../../../../packages/@ng-atomic/common/src/lib/services/ui/ui.helpers.ts","../../../../../packages/@ng-atomic/common/src/lib/services/ui/ng-atomic-common-services-ui.ts"],"sourcesContent":["\nimport { Injectable, PLATFORM_ID, computed, inject } from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { NavigationStart } from '@angular/router';\nimport { filter, map, startWith } from 'rxjs';\nimport { isPlatformBrowser } from '@angular/common';\nimport { RouterService } from '@ng-atomic/common/services/router';\nimport { Breakpoint, BreakpointService } from '@ng-atomic/common/services/breakpoint';\n\nexport interface UIContext {\n breakpoint: Breakpoint;\n paths: any[];\n}\n\n@Injectable({ providedIn: 'root' })\nexport class UiService {\n readonly breakpoint = inject(BreakpointService);\n readonly router = inject(RouterService);\n readonly platformId = inject(PLATFORM_ID);\n\n readonly paths$ = this.router.events.pipe(\n filter(event => event instanceof NavigationStart),\n map((event: NavigationStart) => event.url),\n startWith(isPlatformBrowser(this.platformId) ? window?.location?.pathname : ''),\n map(url => this.router.parseUrl(url)),\n map(urlTree => urlTree.root.children?.primary?.segments ?? []),\n );\n readonly paths = toSignal(this.paths$);\n\n readonly snapshot$ = this.router.events.pipe(\n filter(event => event instanceof NavigationStart),\n map(() => this.router.routerState.snapshot.root),\n );\n readonly snapshot = toSignal(this.snapshot$);\n\n readonly uiContext = computed(() => ({\n breakpoint: this.breakpoint.breakpoint(),\n paths: this.paths(),\n }));\n}\n","import { ElementRef, InjectionToken, Injector, Provider, ProviderToken, Signal, Type, computed, effect, inject, isSignal, runInInjectionContext, signal } from \"@angular/core\";\nimport { UIContext, UiService } from \"./ui.service\";\nimport { get, set } from \"lodash-es\";\nimport { Action, makeProvideComopnentConfigure } from \"@ng-atomic/core\";\nimport { ActivatedRoute, PRIMARY_OUTLET, Router } from \"@angular/router\";\nimport { map, shareReplay, startWith, take } from \"rxjs\";\nimport { takeUntilDestroyed } from \"@angular/core/rxjs-interop\";\nimport { NavigationHistoryService } from \"@ng-atomic/common/services/navigation-history\";\nimport { derivedAsync } from \"ngxtension/derived-async\";\nimport { makeInitializerConfig } from \"@ng-atomic/common/services/initializer\";\n\nexport function scoped<T extends object, TKey extends keyof T>(source: Signal<T>, path: TKey | [TKey]): Signal<T[TKey]> {\n const scopedSignal = signal<T[TKey]>(get(source(), path));\n effect(() => {\n scopedSignal.set(get(source(), path, source()) as T[TKey]);\n });\n return computed(() => scopedSignal());\n}\n\nexport function injectBreakpoint() {\n return inject(UiService).breakpoint.breakpoint;\n}\n\nexport function injectIsMobile() {\n const breakpoint = injectBreakpoint();\n return computed(() => ['xSmall', 'small'].includes(breakpoint()));\n}\n\nexport enum NavActionId {\n TOGGLE_SIDE_NAV = '[@ng-atomic/common/services/ui] TOGGLE_SIDE_NAV',\n BACK = '[@ng-atomic/common/services/ui] BACK',\n CLOSE = '[@ng-atomic/common/services/ui] CLOSE',\n}\n\n// routeを遡る\nfunction flattenRoutes(route: ActivatedRoute): ActivatedRoute[] {\n const routes = [];\n let route_ = route;\n while (route_) {\n routes.push(route_);\n if (!route_.parent) break;\n route_ = route_.parent;\n }\n return routes;\n}\n\nexport function isRootPageRoute(route: ActivatedRoute, outlet = PRIMARY_OUTLET) {\n const routes = flattenRoutes(route).reverse();\n const outletRootIndex = routes.findIndex(route => route.outlet === outlet);\n const outletComponentRoutes = routes\n .slice(outletRootIndex)\n .filter(route => !!route?.component);\n return outletComponentRoutes.length <= 2;\n}\n\nexport function injectIsRootPage$(outlet = PRIMARY_OUTLET) {\n const router = inject(Router);\n const route = inject(ActivatedRoute);\n return router.events.pipe(\n startWith(null),\n map(() => isRootPageRoute(route, outlet)),\n take(1),\n shareReplay(1),\n takeUntilDestroyed(),\n );\n}\n\nexport function injectIsRootPage(outlet = PRIMARY_OUTLET) {\n const isRootPage$ = injectIsRootPage$(outlet);\n const injector = inject(Injector);\n return derivedAsync(() => isRootPage$, { injector });\n}\n\nexport function injectNavStartActions(\n isRootPage: Signal<boolean> = signal<boolean>(false),\n): Signal<Action[]> {\n const context = injectUiContext();\n const navigationHistory = inject(NavigationHistoryService);\n const isInitial = false;\n return computed(() => {\n console.debug('[UiService] navigationHistory:', navigationHistory)\n const isRootPage_ = isRootPage();\n const context_ = context();\n switch (context_.breakpoint) {\n case 'xLarge':\n case 'large':\n case 'medium':\n case 'small': {\n if (isRootPage_) {\n return [];\n } else {\n if (isInitial) {\n return [];\n } else {\n return [{ id: NavActionId.BACK, name: 'BACK', icon: 'arrow_back' }];\n }\n }\n }\n case 'xSmall': {\n if (isRootPage_) {\n return [{ id: NavActionId.TOGGLE_SIDE_NAV, name: 'メニュー', icon: 'menu' }];\n } else {\n if (isInitial) {\n return [{ id: NavActionId.TOGGLE_SIDE_NAV, name: 'メニュー', icon: 'menu' }]\n } else {\n return [{ id: NavActionId.BACK, name: 'BACK', icon: 'arrow_back' }];\n }\n }\n }\n default: {\n if (isRootPage_) return [];\n return [{ id: NavActionId.BACK, name: 'BACK', icon: 'arrow_back' }];\n }\n }\n });\n}\n\nexport function injectNavStartActionsV2() {\n const isRootPage = injectIsRootPage();\n return injectNavStartActions(isRootPage);\n}\n\nexport function injectSideAppNavStartActions(outlet = 'side'): Signal<Action[]> {\n const context = injectUiContext();\n const isRootPageV2 = injectIsRootPage(outlet);\n return computed(() => {\n const isRootPage_ = isRootPageV2();\n const context_ = context();\n switch (context_.breakpoint) {\n default: {\n if (isRootPage_) {\n return [\n { id: NavActionId.CLOSE, name: 'CLOSE', icon: 'close' },\n ];\n } else {\n return [\n { id: NavActionId.BACK, name: 'BACK', icon: 'arrow_back' }\n ];\n }\n }\n }\n });\n\n}\n\nexport function injectUiContext(): Signal<UIContext> {\n return inject(UiService).uiContext;\n}\n\nexport type UiConfigReducer<T extends object | string, C extends UIContext = any> = (config: T, context: C) => T;\nexport const UI_CONFIG_REDUCER = new InjectionToken<UiConfigReducer<any>>('UI_CONFIG_REDUCER');\nexport type ReducerFactory<T extends object | string>\n = (injector: Injector, hostInjector: Injector) => (config: T, context: UIContext) => T;\n\nexport type DefaultReducerFactory<T extends object | string>\n = (injector: Injector, hostInjector: Injector) => (context: UIContext) => T;\n\nexport const wrap = <T extends object | string>(\n defaultReducerFactory: DefaultReducerFactory<T>,\n): ReducerFactory<T> => {\n return (injector: Injector, hostInjector: Injector) => {\n const reducer = defaultReducerFactory(injector, hostInjector);\n return (_: T, context: UIContext) => {\n return reducer(context);\n }\n };\n}\n\nexport function call<T>(signalOrValue: Signal<T> | T): T {\n return isSignal(signalOrValue) ? signalOrValue() : signalOrValue;\n}\n\nfunction setReducerPath(reducer: Function, path: string[]) {\n Object.defineProperty(reducer, 'path', { value: path, configurable: true });\n return reducer;\n}\n\nfunction getReducerPath(reducer: Function) {\n return reducer['path'];\n}\n\nexport function provideUiConfig<T extends object | string>(\n reducerFactory: ReducerFactory<T>,\n path: string[] = [],\n name = 'name',\n token = UI_CONFIG_REDUCER,\n): Provider {\n return {\n provide: token,\n useFactory: (injector: Injector) => {\n function _reducerFactory(hostInjector: Injector) {\n const reducer = reducerFactory(injector, hostInjector);\n return (config: T, context: any): T => {\n if (path.length === 0) return reducer(config, context);\n return set(config as object, path, reducer(get<any, any>(config, path), context)) as T;\n }\n }\n Object.defineProperty(_reducerFactory, 'name', { value: name, configurable: true });\n setReducerPath(_reducerFactory, path);\n return _reducerFactory;\n },\n deps: [Injector],\n multi: true,\n };\n}\n\nexport function injectRootConfig<T extends object>(\n paths: string[] = [],\n token = UI_CONFIG_REDUCER,\n): Signal<T> {\n const uiContext = injectUiContext();\n const factories = injectReducerFactories(paths, token);\n const hostInjector = inject(Injector);\n const reducers = factories.map(factory => {\n return runInInjectionContext(hostInjector, () => factory(hostInjector));\n });\n if (!reducers) return undefined;\n const rootConfig = computed(() => {\n const context = uiContext();\n return reducers.reduce((acc, reducer) => {\n return runInInjectionContext(hostInjector, () => reducer(acc, context));\n }, {} as T);\n });\n return rootConfig;\n}\n\n// TODO(@nontangent): itemsなどの取得が全てのコンポーネントで行われるので計算を最適化する。\nexport function injectUiConfig<T extends object>(\n paths: string[] = [],\n token: InjectionToken<UiConfigReducer<any>> = UI_CONFIG_REDUCER,\n): Signal<T> {\n const rootConfig = injectRootConfig<T>(paths, token);\n return scoped(rootConfig, paths as any);\n}\n\nexport function makeConfig<T extends object>(defaultUseFactory: DefaultReducerFactory<T>, path: string[]) {\n const factory = wrap(defaultUseFactory);\n const token = new InjectionToken<UiConfigReducer<T>>(`[${path.join('.')}] UI_CONFIG_REDUCER`);\n return {\n provide(useFactory?: ReducerFactory<T>, label = useFactory ? 'custom' : 'default') {\n useFactory ??= factory;\n return provideUiConfig<T>(useFactory, path, `[${path.join('.')}] ${label}`, token);\n },\n inject() {\n return injectUiConfig<T>(path, token);\n },\n }\n}\n\nexport function makeDI<T extends object, K>(type: Type<K>, defaultUseFactory: DefaultReducerFactory<T>, path: string[]) {\n const Config = makeConfig<T>(defaultUseFactory, path);\n const Initializer = makeInitializerConfig(type);\n const provideComponent = makeProvideComopnentConfigure(type);\n return {\n provide: (typeOrComponent: Parameters<typeof provideComponent>[0]) => [\n provideComponent(typeOrComponent), Config.provide(),\n Config.provide(),\n ],\n provideConfig: Config.provide,\n injectConfig: Config.inject,\n provideInitializer: Initializer.provide,\n initialize: Initializer.initializeStore,\n provideComponent,\n Initializer,\n Config,\n }\n}\n\nfunction injectReducers(token): ((hostInjector: Injector) => UiConfigReducer<any>)[] {\n return injectDeepMulti<(hostInjector: Injector) => UiConfigReducer<any>>(token);\n}\n\nfunction injectReducerFactories(\n path: string[] = [],\n token = UI_CONFIG_REDUCER,\n): ((hostInjector: Injector) => UiConfigReducer<any>)[] {\n return injectReducers(token).filter(factory => {\n return getReducerPath(factory).every((p, i) => path[i] === p);\n });\n}\n\nexport function injectDeepMulti<T>(token: ProviderToken<T>, injector: Injector = inject(Injector)): T[] {\n const valueOrArray = injector.get(token as ProviderToken<T[]>, [], { optional: true });\n const items = Array.isArray(valueOrArray) ? valueOrArray : [valueOrArray];\n const parentInjector = injector.get(Injector, null, { skipSelf: true });\n if (!parentInjector) return items;\n return [...new Set([...injectDeepMulti(token, parentInjector), ...items])];\n}\n\nexport function debugInjector(injector: Injector | null = inject(Injector)) {\n const getParent = (injector: Injector, n = 0): Injector | null => {\n while (injector && n-- > 0) {\n injector = injector.get(Injector, null, { skipSelf: true });\n }\n return injector;\n }\n\n const getInjectorName = (injector: Injector): string => {\n const name = injector.get(ElementRef, null)?.nativeElement?.tagName?.toLowerCase();\n if (name) return `<${name}>`;\n return `${injector['source']}`;\n }\n\n const isNodeInjector = (injector: Injector): boolean => {\n return injector.get(ElementRef, null) !== null;\n }\n\n const mapToNames = (reducers: any) => (reducers ?? []).map(reducer => reducer.name);\n\n for (let i = 0; i < 20; i++) {\n injector = getParent(injector, i);\n if (injector === Injector.NULL) break;\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ng-atomic-common-services-ui.mjs","sources":["../../../../../packages/@ng-atomic/common/src/lib/services/ui/ui.service.ts","../../../../../packages/@ng-atomic/common/src/lib/services/ui/ui.helpers.ts","../../../../../packages/@ng-atomic/common/src/lib/services/ui/ng-atomic-common-services-ui.ts"],"sourcesContent":["\nimport { Injectable, PLATFORM_ID, computed, inject } from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { NavigationStart } from '@angular/router';\nimport { filter, map, startWith } from 'rxjs';\nimport { isPlatformBrowser } from '@angular/common';\nimport { RouterService } from '@ng-atomic/common/services/router';\nimport { Breakpoint, BreakpointService } from '@ng-atomic/common/services/breakpoint';\n\nexport interface UIContext {\n breakpoint: Breakpoint;\n paths: any[];\n}\n\n@Injectable({ providedIn: 'root' })\nexport class UiService {\n readonly breakpoint = inject(BreakpointService);\n readonly router = inject(RouterService);\n readonly platformId = inject(PLATFORM_ID);\n\n readonly paths$ = this.router.events.pipe(\n filter(event => event instanceof NavigationStart),\n map((event: NavigationStart) => event.url),\n startWith(isPlatformBrowser(this.platformId) ? window?.location?.pathname : ''),\n map(url => this.router.parseUrl(url)),\n map(urlTree => urlTree.root.children?.primary?.segments ?? []),\n );\n readonly paths = toSignal(this.paths$);\n\n readonly snapshot$ = this.router.events.pipe(\n filter(event => event instanceof NavigationStart),\n map(() => this.router.routerState.snapshot.root),\n );\n readonly snapshot = toSignal(this.snapshot$);\n\n readonly uiContext = computed(() => ({\n breakpoint: this.breakpoint.breakpoint(),\n paths: this.paths(),\n }));\n}\n","import { ElementRef, InjectionToken, Injector, Provider, ProviderToken, Signal, Type, computed, effect, inject, isSignal, runInInjectionContext, signal } from \"@angular/core\";\nimport { UIContext, UiService } from \"./ui.service\";\nimport { get, set } from \"lodash-es\";\nimport { Action, makeProvideComopnentConfigure } from \"@ng-atomic/core\";\nimport { ActivatedRoute, PRIMARY_OUTLET, Router } from \"@angular/router\";\nimport { map, shareReplay, startWith, take } from \"rxjs\";\nimport { takeUntilDestroyed } from \"@angular/core/rxjs-interop\";\nimport { NavigationHistoryService } from \"@ng-atomic/common/services/navigation-history\";\nimport { derivedAsync } from \"ngxtension/derived-async\";\nimport { makeInitializerConfig } from \"@ng-atomic/common/services/initializer\";\n\nexport function scoped<T extends object, TKey extends keyof T>(source: Signal<T>, path: TKey | [TKey]): Signal<T[TKey]> {\n const scopedSignal = signal<T[TKey]>(get(source(), path));\n effect(() => {\n scopedSignal.set(get(source(), path, source()) as T[TKey]);\n });\n return computed(() => scopedSignal());\n}\n\nexport function injectBreakpoint() {\n return inject(UiService).breakpoint.breakpoint;\n}\n\nexport function injectIsMobile() {\n const breakpoint = injectBreakpoint();\n return computed(() => ['xSmall', 'small'].includes(breakpoint()));\n}\n\nexport enum NavActionId {\n TOGGLE_SIDE_NAV = '[@ng-atomic/common/services/ui] TOGGLE_SIDE_NAV',\n BACK = '[@ng-atomic/common/services/ui] BACK',\n CLOSE = '[@ng-atomic/common/services/ui] CLOSE',\n}\n\n// routeを遡る\nfunction flattenRoutes(route: ActivatedRoute): ActivatedRoute[] {\n const routes = [];\n let route_ = route;\n while (route_) {\n routes.push(route_);\n if (!route_.parent) break;\n route_ = route_.parent;\n }\n return routes;\n}\n\nexport function isRootPageRoute(route: ActivatedRoute, outlet = PRIMARY_OUTLET) {\n const routes = flattenRoutes(route).reverse();\n const outletRootIndex = routes.findIndex(route => route.outlet === outlet);\n const outletComponentRoutes = routes\n .slice(outletRootIndex)\n .filter(route => !!route?.component);\n return outletComponentRoutes.length <= 2;\n}\n\nexport function injectIsRootPage$(outlet = PRIMARY_OUTLET) {\n const router = inject(Router);\n const route = inject(ActivatedRoute);\n return router.events.pipe(\n startWith(null),\n map(() => isRootPageRoute(route, outlet)),\n take(1),\n shareReplay(1),\n takeUntilDestroyed(),\n );\n}\n\nexport function injectIsRootPage(outlet = PRIMARY_OUTLET) {\n const isRootPage$ = injectIsRootPage$(outlet);\n const injector = inject(Injector);\n return derivedAsync(() => isRootPage$, { injector });\n}\n\nexport function injectNavStartActions(\n isRootPage: Signal<boolean> = signal<boolean>(false),\n): Signal<Action[]> {\n const context = injectUiContext();\n const navigationHistory = inject(NavigationHistoryService);\n const isInitial = false;\n return computed(() => {\n console.debug('[UiService] navigationHistory:', navigationHistory)\n const isRootPage_ = isRootPage();\n const context_ = context();\n switch (context_.breakpoint) {\n case 'xLarge':\n case 'large':\n case 'medium':\n case 'small': {\n if (isRootPage_) {\n return [];\n } else {\n if (isInitial) {\n return [];\n } else {\n return [{ id: NavActionId.BACK, name: 'BACK', icon: 'arrow_back' }];\n }\n }\n }\n case 'xSmall': {\n if (isRootPage_) {\n return [{ id: NavActionId.TOGGLE_SIDE_NAV, name: 'メニュー', icon: 'menu' }];\n } else {\n if (isInitial) {\n return [{ id: NavActionId.TOGGLE_SIDE_NAV, name: 'メニュー', icon: 'menu' }]\n } else {\n return [{ id: NavActionId.BACK, name: 'BACK', icon: 'arrow_back' }];\n }\n }\n }\n default: {\n if (isRootPage_) return [];\n return [{ id: NavActionId.BACK, name: 'BACK', icon: 'arrow_back' }];\n }\n }\n });\n}\n\nexport function injectNavStartActionsV2() {\n const isRootPage = injectIsRootPage();\n return injectNavStartActions(isRootPage as Signal<boolean>);\n}\n\nexport function injectSideAppNavStartActions(outlet = 'side'): Signal<Action[]> {\n const context = injectUiContext();\n const isRootPageV2 = injectIsRootPage(outlet);\n return computed(() => {\n const isRootPage_ = isRootPageV2();\n const context_ = context();\n switch (context_.breakpoint) {\n default: {\n if (isRootPage_) {\n return [\n { id: NavActionId.CLOSE, name: 'CLOSE', icon: 'close' },\n ];\n } else {\n return [\n { id: NavActionId.BACK, name: 'BACK', icon: 'arrow_back' }\n ];\n }\n }\n }\n });\n\n}\n\nexport function injectUiContext(): Signal<UIContext> {\n return inject(UiService).uiContext as Signal<UIContext>;\n}\n\nexport type UiConfigReducer<T extends object | string, C extends UIContext = any> = (config: T, context: C) => T;\nexport const UI_CONFIG_REDUCER = new InjectionToken<UiConfigReducer<any>>('UI_CONFIG_REDUCER');\nexport type ReducerFactory<T extends object | string>\n = (injector: Injector, hostInjector: Injector) => (config: T, context: UIContext) => T;\n\nexport type DefaultReducerFactory<T extends object | string>\n = (injector: Injector, hostInjector: Injector) => (context: UIContext) => T;\n\nexport const wrap = <T extends object | string>(\n defaultReducerFactory: DefaultReducerFactory<T>,\n): ReducerFactory<T> => {\n return (injector: Injector, hostInjector: Injector) => {\n const reducer = defaultReducerFactory(injector, hostInjector);\n return (_: T, context: UIContext) => {\n return reducer(context);\n }\n };\n}\n\nexport function call<T>(signalOrValue: Signal<T> | T): T {\n return isSignal(signalOrValue) ? signalOrValue() : signalOrValue;\n}\n\nfunction setReducerPath(reducer: Function, path: string[]) {\n Object.defineProperty(reducer, 'path', { value: path, configurable: true });\n return reducer;\n}\n\nfunction getReducerPath(reducer: Function) {\n return (reducer as unknown as Record<string, unknown>)['path'];\n}\n\nexport function provideUiConfig<T extends object | string>(\n reducerFactory: ReducerFactory<T>,\n path: string[] = [],\n name = 'name',\n token = UI_CONFIG_REDUCER,\n): Provider {\n return {\n provide: token,\n useFactory: (injector: Injector) => {\n function _reducerFactory(hostInjector: Injector) {\n const reducer = reducerFactory(injector, hostInjector);\n return (config: T, context: any): T => {\n if (path.length === 0) return reducer(config, context);\n return set(config as object, path, reducer(get<any, any>(config, path), context)) as T;\n }\n }\n Object.defineProperty(_reducerFactory, 'name', { value: name, configurable: true });\n setReducerPath(_reducerFactory, path);\n return _reducerFactory;\n },\n deps: [Injector],\n multi: true,\n };\n}\n\nexport function injectRootConfig<T extends object>(\n paths: string[] = [],\n token = UI_CONFIG_REDUCER,\n): Signal<T> {\n const uiContext = injectUiContext();\n const factories = injectReducerFactories(paths, token);\n const hostInjector = inject(Injector);\n const reducers = factories.map(factory => {\n return runInInjectionContext(hostInjector, () => factory(hostInjector));\n });\n if (!reducers) return undefined as unknown as Signal<T>;\n const rootConfig = computed(() => {\n const context = uiContext();\n return reducers.reduce((acc, reducer) => {\n return runInInjectionContext(hostInjector, () => reducer(acc, context));\n }, {} as T);\n });\n return rootConfig;\n}\n\n// TODO(@nontangent): itemsなどの取得が全てのコンポーネントで行われるので計算を最適化する。\nexport function injectUiConfig<T extends object>(\n paths: string[] = [],\n token: InjectionToken<UiConfigReducer<any>> = UI_CONFIG_REDUCER,\n): Signal<T> {\n const rootConfig = injectRootConfig<T>(paths, token);\n return scoped(rootConfig, paths as any);\n}\n\nexport function makeConfig<T extends object>(defaultUseFactory: DefaultReducerFactory<T>, path: string[]) {\n const factory = wrap(defaultUseFactory);\n const token = new InjectionToken<UiConfigReducer<T>>(`[${path.join('.')}] UI_CONFIG_REDUCER`);\n return {\n provide(useFactory?: ReducerFactory<T>, label = useFactory ? 'custom' : 'default') {\n useFactory ??= factory;\n return provideUiConfig<T>(useFactory, path, `[${path.join('.')}] ${label}`, token);\n },\n inject() {\n return injectUiConfig<T>(path, token);\n },\n }\n}\n\nexport function makeDI<T extends object, K>(type: Type<K>, defaultUseFactory: DefaultReducerFactory<T>, path: string[]) {\n const Config = makeConfig<T>(defaultUseFactory, path);\n const Initializer = makeInitializerConfig(type);\n const provideComponent = makeProvideComopnentConfigure(type);\n return {\n provide: (typeOrComponent: Parameters<typeof provideComponent>[0]) => [\n provideComponent(typeOrComponent), Config.provide(),\n Config.provide(),\n ],\n provideConfig: Config.provide,\n injectConfig: Config.inject,\n provideInitializer: Initializer.provide,\n initialize: Initializer.initializeStore,\n provideComponent,\n Initializer,\n Config,\n }\n}\n\nfunction injectReducers(token: InjectionToken<UiConfigReducer<any>>): ((hostInjector: Injector) => UiConfigReducer<any>)[] {\n return injectDeepMulti<(hostInjector: Injector) => UiConfigReducer<any>>(token);\n}\n\nfunction injectReducerFactories(\n path: string[] = [],\n token = UI_CONFIG_REDUCER,\n): ((hostInjector: Injector) => UiConfigReducer<any>)[] {\n return injectReducers(token).filter(factory => {\n return (getReducerPath(factory) as string[]).every((p: string, i: number) => path[i] === p);\n });\n}\n\nexport function injectDeepMulti<T>(token: ProviderToken<T>, injector: Injector = inject(Injector)): T[] {\n const valueOrArray = injector.get(token as ProviderToken<T[]>, [], { optional: true });\n const items = Array.isArray(valueOrArray) ? valueOrArray : [valueOrArray];\n const parentInjector = injector.get(Injector, null, { skipSelf: true });\n if (!parentInjector) return items;\n return [...new Set([...injectDeepMulti(token, parentInjector), ...items])];\n}\n\nexport function debugInjector(injector: Injector | null = inject(Injector)) {\n const getParent = (injector: Injector, n = 0): Injector | null => {\n let current: Injector | null = injector;\n while (current && n-- > 0) {\n current = current.get(Injector, null, { skipSelf: true });\n }\n return current;\n }\n\n const getInjectorName = (injector: Injector): string => {\n const name = injector.get(ElementRef, null)?.nativeElement?.tagName?.toLowerCase();\n if (name) return `<${name}>`;\n return `${(injector as unknown as Record<string, unknown>)['source']}`;\n }\n\n const isNodeInjector = (injector: Injector): boolean => {\n return injector.get(ElementRef, null) !== null;\n }\n\n const mapToNames = (reducers: any) => (reducers ?? []).map((reducer: { name: string }) => reducer.name);\n\n for (let i = 0; i < 20; i++) {\n injector = getParent(injector!, i);\n if (injector === Injector.NULL) break;\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -93,6 +93,8 @@ class TaskComposerService {
|
|
|
93
93
|
payload: b.payload,
|
|
94
94
|
timestamp: b.timestamp,
|
|
95
95
|
};
|
|
96
|
+
default:
|
|
97
|
+
return a;
|
|
96
98
|
}
|
|
97
99
|
}, { type: 'noop', payload: {} });
|
|
98
100
|
}
|
|
@@ -168,7 +170,7 @@ class BaseEntityStore extends ComponentStore {
|
|
|
168
170
|
this.removeAll = this.updater((state) => this.entityAdapter.removeAll(state));
|
|
169
171
|
this.setOne = this.updater((state, entity) => this.entityAdapter.setOne(entity, state));
|
|
170
172
|
this.setAll = this.updater((state, entities) => this.entityAdapter.setAll(entities, state));
|
|
171
|
-
this.getEntities = this.effect((refresh$) => refresh$.pipe(switchMap(() => this.adapter?.list() ?? of([])), tap((entities) => this.setAll(entities))));
|
|
173
|
+
this.getEntities = this.effect((refresh$) => refresh$.pipe(switchMap(() => this.adapter?.list?.() ?? of([])), tap((entities) => this.setAll(entities))));
|
|
172
174
|
this.adapter = injectEntityStoreAdapter(entity);
|
|
173
175
|
this.getEntities(this.refresh$);
|
|
174
176
|
this.refresh();
|