@ng-atomic/common 19.9.0 → 19.12.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/directives/fallback-src/index.d.ts +1 -0
- package/directives/fallback-src/index.d.ts.map +1 -0
- package/directives/ios-safari-scroll-buggyfill/index.d.ts +1 -0
- package/directives/ios-safari-scroll-buggyfill/index.d.ts.map +1 -0
- package/directives/molecules/column/index.d.ts +1 -0
- package/directives/molecules/column/index.d.ts.map +1 -0
- package/directives/resize-column/index.d.ts +1 -0
- package/directives/resize-column/index.d.ts.map +1 -0
- package/fesm2022/ng-atomic-common-directives-fallback-src.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-directives-ios-safari-scroll-buggyfill.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-directives-molecules-column.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-directives-resize-column.mjs.map +1 -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-interceptors-token.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-pipes-actions.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-pipes-auto-columns.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-pipes-columns.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-pipes-data-accessor.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-pipes-domain.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-pipes-error.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-pipes-expression.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-pipes-grouped-by.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-pipes-index-length.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-pipes-index.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-pipes-keys.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-pipes-map.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-pipes-page.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-pipes-pagination.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-pipes-query.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-pipes-resolve-columns.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-pipes-secret.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-pipes-select-id.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-pipes-signal.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-pipes-smart-field.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-pipes-sort-by.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-pipes-sort.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-pipes-style.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-pipes-yen.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-services-app.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-services-auth.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-services-breakpoint.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-services-chips-manager.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-services-csv.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-services-editing.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-services-fab.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-services-form-_index.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.map +1 -1
- package/fesm2022/ng-atomic-common-services-form-pagination.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-services-form-sort.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-services-form.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-services-initializer.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-services-language.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-services-loading.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-services-navigation-history.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-services-query-resolver.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-services-root-property.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-services-router.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-services-secret.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-services-sheets-actions.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-services-sheets.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-services-side-app.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-services-side-nav-mode.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-services-snack-bar.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-services-spreadsheet.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-services-ui.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-stores-entities.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-stores-entity.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-stores-pagination.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-stores-query.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 +36 -43
- package/fesm2022/ng-atomic-common-utils.mjs.map +1 -1
- package/fesm2022/ng-atomic-common.mjs.map +1 -1
- package/index.d.ts +1 -0
- package/index.d.ts.map +1 -0
- package/interceptors/authorization/index.d.ts +1 -0
- package/interceptors/authorization/index.d.ts.map +1 -0
- package/interceptors/index.d.ts +1 -0
- package/interceptors/index.d.ts.map +1 -0
- package/interceptors/throttle/index.d.ts +1 -0
- package/interceptors/throttle/index.d.ts.map +1 -0
- package/interceptors/token/index.d.ts +1 -0
- package/interceptors/token/index.d.ts.map +1 -0
- package/models/index.d.ts +1 -0
- package/models/index.d.ts.map +1 -0
- package/package.json +3 -3
- package/pipes/actions/index.d.ts +1 -0
- package/pipes/actions/index.d.ts.map +1 -0
- package/pipes/auto-columns/index.d.ts +1 -0
- package/pipes/auto-columns/index.d.ts.map +1 -0
- package/pipes/columns/index.d.ts +1 -0
- package/pipes/columns/index.d.ts.map +1 -0
- package/pipes/data-accessor/index.d.ts +1 -0
- package/pipes/data-accessor/index.d.ts.map +1 -0
- package/pipes/domain/index.d.ts +1 -0
- package/pipes/domain/index.d.ts.map +1 -0
- package/pipes/error/index.d.ts +1 -0
- package/pipes/error/index.d.ts.map +1 -0
- package/pipes/expression/index.d.ts +1 -0
- package/pipes/expression/index.d.ts.map +1 -0
- package/pipes/grouped-by/index.d.ts +1 -0
- package/pipes/grouped-by/index.d.ts.map +1 -0
- package/pipes/index/index.d.ts +1 -0
- package/pipes/index/index.d.ts.map +1 -0
- package/pipes/index-length/index.d.ts +1 -0
- package/pipes/index-length/index.d.ts.map +1 -0
- package/pipes/keys/index.d.ts +1 -0
- package/pipes/keys/index.d.ts.map +1 -0
- package/pipes/map/index.d.ts +1 -0
- package/pipes/map/index.d.ts.map +1 -0
- package/pipes/page/index.d.ts +1 -0
- package/pipes/page/index.d.ts.map +1 -0
- package/pipes/pagination/index.d.ts +1 -0
- package/pipes/pagination/index.d.ts.map +1 -0
- package/pipes/query/index.d.ts +1 -0
- package/pipes/query/index.d.ts.map +1 -0
- package/pipes/resolve-columns/index.d.ts +1 -0
- package/pipes/resolve-columns/index.d.ts.map +1 -0
- package/pipes/secret/index.d.ts +1 -0
- package/pipes/secret/index.d.ts.map +1 -0
- package/pipes/select-id/index.d.ts +1 -0
- package/pipes/select-id/index.d.ts.map +1 -0
- package/pipes/signal/index.d.ts +1 -0
- package/pipes/signal/index.d.ts.map +1 -0
- package/pipes/smart-field/index.d.ts +1 -0
- package/pipes/smart-field/index.d.ts.map +1 -0
- package/pipes/sort/index.d.ts +1 -0
- package/pipes/sort/index.d.ts.map +1 -0
- package/pipes/sort-by/index.d.ts +1 -0
- package/pipes/sort-by/index.d.ts.map +1 -0
- package/pipes/style/index.d.ts +1 -0
- package/pipes/style/index.d.ts.map +1 -0
- package/pipes/yen/index.d.ts +1 -0
- package/pipes/yen/index.d.ts.map +1 -0
- package/services/app/index.d.ts +1 -0
- package/services/app/index.d.ts.map +1 -0
- package/services/auth/index.d.ts +1 -0
- package/services/auth/index.d.ts.map +1 -0
- package/services/breakpoint/index.d.ts +1 -0
- package/services/breakpoint/index.d.ts.map +1 -0
- package/services/chips-manager/index.d.ts +1 -0
- package/services/chips-manager/index.d.ts.map +1 -0
- package/services/csv/index.d.ts +1 -0
- package/services/csv/index.d.ts.map +1 -0
- package/services/editing/index.d.ts +1 -0
- package/services/editing/index.d.ts.map +1 -0
- package/services/fab/index.d.ts +1 -0
- package/services/fab/index.d.ts.map +1 -0
- package/services/form/_index/index.d.ts +1 -0
- package/services/form/_index/index.d.ts.map +1 -0
- package/services/form/columns/index.d.ts +1 -0
- package/services/form/columns/index.d.ts.map +1 -0
- package/services/form/index.d.ts +1 -0
- package/services/form/index.d.ts.map +1 -0
- package/services/form/json-schema/index.d.ts +1 -0
- package/services/form/json-schema/index.d.ts.map +1 -0
- package/services/form/pagination/index.d.ts +1 -0
- package/services/form/pagination/index.d.ts.map +1 -0
- package/services/form/sort/index.d.ts +1 -0
- package/services/form/sort/index.d.ts.map +1 -0
- package/services/initializer/index.d.ts +1 -0
- package/services/initializer/index.d.ts.map +1 -0
- package/services/language/index.d.ts +1 -0
- package/services/language/index.d.ts.map +1 -0
- package/services/loading/index.d.ts +1 -0
- package/services/loading/index.d.ts.map +1 -0
- package/services/navigation-history/index.d.ts +1 -0
- package/services/navigation-history/index.d.ts.map +1 -0
- package/services/query-resolver/index.d.ts +1 -0
- package/services/query-resolver/index.d.ts.map +1 -0
- package/services/root-property/index.d.ts +1 -0
- package/services/root-property/index.d.ts.map +1 -0
- package/services/router/index.d.ts +1 -0
- package/services/router/index.d.ts.map +1 -0
- package/services/secret/index.d.ts +1 -0
- package/services/secret/index.d.ts.map +1 -0
- package/services/sheets/actions/index.d.ts +1 -0
- package/services/sheets/actions/index.d.ts.map +1 -0
- package/services/sheets/index.d.ts +1 -0
- package/services/sheets/index.d.ts.map +1 -0
- package/services/side-app/index.d.ts +1 -0
- package/services/side-app/index.d.ts.map +1 -0
- package/services/side-nav-mode/index.d.ts +1 -0
- package/services/side-nav-mode/index.d.ts.map +1 -0
- package/services/snack-bar/index.d.ts +1 -0
- package/services/snack-bar/index.d.ts.map +1 -0
- package/services/spreadsheet/index.d.ts +1 -0
- package/services/spreadsheet/index.d.ts.map +1 -0
- package/services/ui/index.d.ts +1 -0
- package/services/ui/index.d.ts.map +1 -0
- package/stores/entities/index.d.ts +1 -0
- package/stores/entities/index.d.ts.map +1 -0
- package/stores/entity/index.d.ts +1 -0
- package/stores/entity/index.d.ts.map +1 -0
- package/stores/pagination/index.d.ts +1 -0
- package/stores/pagination/index.d.ts.map +1 -0
- package/stores/query/index.d.ts +1 -0
- package/stores/query/index.d.ts.map +1 -0
- package/stores/selection/index.d.ts +1 -0
- package/stores/selection/index.d.ts.map +1 -0
- package/stores/sort/index.d.ts +1 -0
- package/stores/sort/index.d.ts.map +1 -0
- package/utils/index.d.ts +15 -10
- package/utils/index.d.ts.map +1 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ng-atomic-common-services-spreadsheet.mjs","sources":["../tmp-esm2022/services/spreadsheet/features/data.service.js","../tmp-esm2022/services/spreadsheet/features/grid.service.js","../tmp-esm2022/services/spreadsheet/features/navigation.service.js","../tmp-esm2022/services/spreadsheet/features/selection.service.js","../tmp-esm2022/services/spreadsheet/features/clipboard.service.js","../tmp-esm2022/services/spreadsheet/features/protection.service.js","../tmp-esm2022/services/spreadsheet/features/editor.service.js","../tmp-esm2022/services/spreadsheet/features/autofill.service.js","../tmp-esm2022/services/spreadsheet/spreadsheet.service.js","../tmp-esm2022/services/spreadsheet/directives/grid-cell.directive.js","../tmp-esm2022/services/spreadsheet/directives/grid-table-autofill.directive.js","../tmp-esm2022/services/spreadsheet/directives/grid-cell-autofill.directive.js","../tmp-esm2022/services/spreadsheet/index.js","../tmp-esm2022/services/spreadsheet/ng-atomic-common-services-spreadsheet.js"],"sourcesContent":["import { Injectable, signal } from \"@angular/core\";\nimport * as i0 from \"@angular/core\";\nexport class SpreadSheetDataService {\n constructor() {\n this.displayedColumns = signal([]);\n this.items = signal([]);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SpreadSheetDataService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SpreadSheetDataService }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SpreadSheetDataService, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvQG5nLWF0b21pYy9jb21tb24vc3JjL2xpYi9zZXJ2aWNlcy9zcHJlYWRzaGVldC9mZWF0dXJlcy9kYXRhLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBSW5ELE1BQU0sT0FBTyxzQkFBc0I7SUFEbkM7UUFFVyxxQkFBZ0IsR0FBRyxNQUFNLENBQVcsRUFBRSxDQUFDLENBQUM7UUFDeEMsVUFBSyxHQUFHLE1BQU0sQ0FBUSxFQUFFLENBQUMsQ0FBQztLQUNwQzs4R0FIWSxzQkFBc0I7a0hBQXRCLHNCQUFzQjs7MkZBQXRCLHNCQUFzQjtrQkFEbEMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIHNpZ25hbCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5cblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFNwcmVhZFNoZWV0RGF0YVNlcnZpY2Uge1xuICByZWFkb25seSBkaXNwbGF5ZWRDb2x1bW5zID0gc2lnbmFsPHN0cmluZ1tdPihbXSk7XG4gIHJlYWRvbmx5IGl0ZW1zID0gc2lnbmFsPGFueVtdPihbXSk7XG59XG4iXX0=","import { computed, inject, Injectable } from '@angular/core';\nimport { SpreadSheetDataService } from './data.service';\nimport * as i0 from \"@angular/core\";\nexport class GridService {\n constructor() {\n this.contextMap = new Map();\n this.data = inject(SpreadSheetDataService);\n this.maxCol = computed(() => this.data.displayedColumns().length - 1);\n this.maxRow = computed(() => this.data.items().length);\n }\n setContext(context) {\n this.contextMap.set(this.buildKey(context.position), context);\n }\n getContext(position) {\n return this.contextMap.get(this.buildKey(position)) ?? null;\n }\n buildKey(position) {\n return `(${position.row}, ${position.col})`;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: GridService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: GridService }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: GridService, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvQG5nLWF0b21pYy9jb21tb24vc3JjL2xpYi9zZXJ2aWNlcy9zcHJlYWRzaGVldC9mZWF0dXJlcy9ncmlkLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTdELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDOztBQUd4RCxNQUFNLE9BQU8sV0FBVztJQUR4QjtRQUVxQixlQUFVLEdBQUcsSUFBSSxHQUFHLEVBQXVCLENBQUM7UUFDNUMsU0FBSSxHQUFHLE1BQU0sQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO1FBRWhELFdBQU0sR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztRQUNqRSxXQUFNLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUM7S0FhNUQ7SUFYQyxVQUFVLENBQUMsT0FBb0I7UUFDN0IsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDaEUsQ0FBQztJQUVELFVBQVUsQ0FBQyxRQUFrQjtRQUMzQixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUM7SUFDOUQsQ0FBQztJQUVTLFFBQVEsQ0FBQyxRQUFrQjtRQUNuQyxPQUFPLElBQUksUUFBUSxDQUFDLEdBQUcsS0FBSyxRQUFRLENBQUMsR0FBRyxHQUFHLENBQUM7SUFDOUMsQ0FBQzs4R0FqQlUsV0FBVztrSEFBWCxXQUFXOzsyRkFBWCxXQUFXO2tCQUR2QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY29tcHV0ZWQsIGluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ2VsbENvbnRleHQsIFBvc2l0aW9uIH0gZnJvbSAnLi4vbW9kZWxzL2NlbGwubW9kZWwnO1xuaW1wb3J0IHsgU3ByZWFkU2hlZXREYXRhU2VydmljZSB9IGZyb20gJy4vZGF0YS5zZXJ2aWNlJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEdyaWRTZXJ2aWNlIHtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGNvbnRleHRNYXAgPSBuZXcgTWFwPHN0cmluZywgQ2VsbENvbnRleHQ+KCk7XG4gIHByb3RlY3RlZCByZWFkb25seSBkYXRhID0gaW5qZWN0KFNwcmVhZFNoZWV0RGF0YVNlcnZpY2UpO1xuXG4gIHJlYWRvbmx5IG1heENvbCA9IGNvbXB1dGVkKCgpID0+IHRoaXMuZGF0YS5kaXNwbGF5ZWRDb2x1bW5zKCkubGVuZ3RoIC0gMSk7XG4gIHJlYWRvbmx5IG1heFJvdyA9IGNvbXB1dGVkKCgpID0+IHRoaXMuZGF0YS5pdGVtcygpLmxlbmd0aCk7XG5cbiAgc2V0Q29udGV4dChjb250ZXh0OiBDZWxsQ29udGV4dCk6IHZvaWQge1xuICAgIHRoaXMuY29udGV4dE1hcC5zZXQodGhpcy5idWlsZEtleShjb250ZXh0LnBvc2l0aW9uKSwgY29udGV4dCk7XG4gIH1cblxuICBnZXRDb250ZXh0KHBvc2l0aW9uOiBQb3NpdGlvbik6IENlbGxDb250ZXh0IHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuY29udGV4dE1hcC5nZXQodGhpcy5idWlsZEtleShwb3NpdGlvbikpID8/IG51bGw7XG4gIH1cblxuICBwcm90ZWN0ZWQgYnVpbGRLZXkocG9zaXRpb246IFBvc2l0aW9uKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCgke3Bvc2l0aW9uLnJvd30sICR7cG9zaXRpb24uY29sfSlgO1xuICB9XG59Il19","import { inject, Injectable } from '@angular/core';\nimport { GridService } from './grid.service';\nimport * as i0 from \"@angular/core\";\nexport class NavigationService {\n constructor() {\n this.gridService = inject(GridService);\n }\n moveToNextCell({ row, col }) {\n if (col < this.gridService.maxCol()) {\n return { row, col: col + 1 };\n }\n else if (row < this.gridService.maxRow()) {\n return { row: row + 1, col: 0 };\n }\n return { row, col };\n }\n moveToPreviousCell({ row, col }) {\n if (col > 0) {\n return { row, col: col - 1 };\n }\n else if (row > 0) {\n return { row: row - 1, col: this.gridService.maxCol() };\n }\n return { row, col };\n }\n moveToNextRow({ row, col }) {\n if (row < this.gridService.maxRow()) {\n return { row: row + 1, col };\n }\n return { row, col };\n }\n moveToPreviousRow({ row, col }) {\n if (row > 0) {\n return { row: row - 1, col };\n }\n return { row, col };\n }\n moveRight(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 moveLeft({ row, col }) {\n if (col > 0) {\n return { row, col: col - 1 };\n }\n return { row, col };\n }\n moveUp({ row, col }) {\n if (row > 0) {\n return { row: row - 1, col };\n }\n return { row, col };\n }\n moveDown({ row, col }) {\n if (row < this.gridService.maxRow()) {\n return { row: row + 1, col };\n }\n return { row, col };\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: NavigationService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: NavigationService }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: NavigationService, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2aWdhdGlvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvQG5nLWF0b21pYy9jb21tb24vc3JjL2xpYi9zZXJ2aWNlcy9zcHJlYWRzaGVldC9mZWF0dXJlcy9uYXZpZ2F0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFbkQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDOztBQUc3QyxNQUFNLE9BQU8saUJBQWlCO0lBRDlCO1FBRVUsZ0JBQVcsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUE7S0E4RDFDO0lBNURDLGNBQWMsQ0FBQyxFQUFDLEdBQUcsRUFBRSxHQUFHLEVBQVc7UUFDakMsSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDO1lBQ3BDLE9BQU8sRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUMvQixDQUFDO2FBQU0sSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDO1lBQzNDLE9BQU8sRUFBRSxHQUFHLEVBQUUsR0FBRyxHQUFHLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUM7UUFDbEMsQ0FBQztRQUNELE9BQU8sRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUM7SUFDdEIsQ0FBQztJQUVELGtCQUFrQixDQUFDLEVBQUMsR0FBRyxFQUFFLEdBQUcsRUFBVztRQUNyQyxJQUFJLEdBQUcsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUNaLE9BQU8sRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUMvQixDQUFDO2FBQU0sSUFBSSxHQUFHLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDbkIsT0FBTyxFQUFFLEdBQUcsRUFBRSxHQUFHLEdBQUcsQ0FBQyxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUM7UUFDMUQsQ0FBQztRQUNELE9BQU8sRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUM7SUFDdEIsQ0FBQztJQUVELGFBQWEsQ0FBQyxFQUFDLEdBQUcsRUFBRSxHQUFHLEVBQVc7UUFDaEMsSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDO1lBQ3BDLE9BQU8sRUFBRSxHQUFHLEVBQUUsR0FBRyxHQUFHLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQztRQUMvQixDQUFDO1FBQ0QsT0FBTyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBRUQsaUJBQWlCLENBQUMsRUFBQyxHQUFHLEVBQUUsR0FBRyxFQUFXO1FBQ3BDLElBQUksR0FBRyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ1osT0FBTyxFQUFFLEdBQUcsRUFBRSxHQUFHLEdBQUcsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDO1FBQy9CLENBQUM7UUFDRCxPQUFPLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDO0lBQ3RCLENBQUM7SUFFRCxTQUFTLENBQUMsUUFBa0I7UUFDMUIsTUFBTSxFQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUMsR0FBRyxRQUFRLENBQUM7UUFDNUIsSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDO1lBQ3BDLE9BQU8sRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUMvQixDQUFDO1FBQ0QsT0FBTyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBRUQsUUFBUSxDQUFDLEVBQUMsR0FBRyxFQUFFLEdBQUcsRUFBVztRQUMzQixJQUFJLEdBQUcsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUNaLE9BQU8sRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUMvQixDQUFDO1FBQ0QsT0FBTyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBRUQsTUFBTSxDQUFDLEVBQUMsR0FBRyxFQUFFLEdBQUcsRUFBVztRQUN6QixJQUFJLEdBQUcsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUNaLE9BQU8sRUFBRSxHQUFHLEVBQUUsR0FBRyxHQUFHLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQztRQUMvQixDQUFDO1FBQ0QsT0FBTyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBRUQsUUFBUSxDQUFDLEVBQUMsR0FBRyxFQUFFLEdBQUcsRUFBVztRQUMzQixJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUM7WUFDcEMsT0FBTyxFQUFFLEdBQUcsRUFBRSxHQUFHLEdBQUcsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDO1FBQy9CLENBQUM7UUFDRCxPQUFPLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDO0lBQ3RCLENBQUM7OEdBOURVLGlCQUFpQjtrSEFBakIsaUJBQWlCOzsyRkFBakIsaUJBQWlCO2tCQUQ3QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBQb3NpdGlvbiB9IGZyb20gJy4uL21vZGVscy9jZWxsLm1vZGVsJztcbmltcG9ydCB7IEdyaWRTZXJ2aWNlIH0gZnJvbSAnLi9ncmlkLnNlcnZpY2UnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgTmF2aWdhdGlvblNlcnZpY2Uge1xuICBwcml2YXRlIGdyaWRTZXJ2aWNlID0gaW5qZWN0KEdyaWRTZXJ2aWNlKVxuXG4gIG1vdmVUb05leHRDZWxsKHtyb3csIGNvbH06IFBvc2l0aW9uKTogUG9zaXRpb24ge1xuICAgIGlmIChjb2wgPCB0aGlzLmdyaWRTZXJ2aWNlLm1heENvbCgpKSB7XG4gICAgICByZXR1cm4geyByb3csIGNvbDogY29sICsgMSB9O1xuICAgIH0gZWxzZSBpZiAocm93IDwgdGhpcy5ncmlkU2VydmljZS5tYXhSb3coKSkge1xuICAgICAgcmV0dXJuIHsgcm93OiByb3cgKyAxLCBjb2w6IDAgfTtcbiAgICB9XG4gICAgcmV0dXJuIHsgcm93LCBjb2wgfTtcbiAgfVxuXG4gIG1vdmVUb1ByZXZpb3VzQ2VsbCh7cm93LCBjb2x9OiBQb3NpdGlvbik6IFBvc2l0aW9uIHtcbiAgICBpZiAoY29sID4gMCkge1xuICAgICAgcmV0dXJuIHsgcm93LCBjb2w6IGNvbCAtIDEgfTtcbiAgICB9IGVsc2UgaWYgKHJvdyA+IDApIHtcbiAgICAgIHJldHVybiB7IHJvdzogcm93IC0gMSwgY29sOiB0aGlzLmdyaWRTZXJ2aWNlLm1heENvbCgpIH07XG4gICAgfVxuICAgIHJldHVybiB7IHJvdywgY29sIH07XG4gIH1cblxuICBtb3ZlVG9OZXh0Um93KHtyb3csIGNvbH06IFBvc2l0aW9uKTogUG9zaXRpb24ge1xuICAgIGlmIChyb3cgPCB0aGlzLmdyaWRTZXJ2aWNlLm1heFJvdygpKSB7XG4gICAgICByZXR1cm4geyByb3c6IHJvdyArIDEsIGNvbCB9O1xuICAgIH1cbiAgICByZXR1cm4geyByb3csIGNvbCB9O1xuICB9XG5cbiAgbW92ZVRvUHJldmlvdXNSb3coe3JvdywgY29sfTogUG9zaXRpb24pOiBQb3NpdGlvbiB7XG4gICAgaWYgKHJvdyA+IDApIHtcbiAgICAgIHJldHVybiB7IHJvdzogcm93IC0gMSwgY29sIH07XG4gICAgfVxuICAgIHJldHVybiB7IHJvdywgY29sIH07XG4gIH1cblxuICBtb3ZlUmlnaHQocG9zaXRpb246IFBvc2l0aW9uKTogUG9zaXRpb24ge1xuICAgIGNvbnN0IHtyb3csIGNvbH0gPSBwb3NpdGlvbjtcbiAgICBpZiAoY29sIDwgdGhpcy5ncmlkU2VydmljZS5tYXhDb2woKSkge1xuICAgICAgcmV0dXJuIHsgcm93LCBjb2w6IGNvbCArIDEgfTtcbiAgICB9XG4gICAgcmV0dXJuIHsgcm93LCBjb2wgfTtcbiAgfVxuXG4gIG1vdmVMZWZ0KHtyb3csIGNvbH06IFBvc2l0aW9uKTogUG9zaXRpb24ge1xuICAgIGlmIChjb2wgPiAwKSB7XG4gICAgICByZXR1cm4geyByb3csIGNvbDogY29sIC0gMSB9O1xuICAgIH1cbiAgICByZXR1cm4geyByb3csIGNvbCB9O1xuICB9XG5cbiAgbW92ZVVwKHtyb3csIGNvbH06IFBvc2l0aW9uKTogUG9zaXRpb24ge1xuICAgIGlmIChyb3cgPiAwKSB7XG4gICAgICByZXR1cm4geyByb3c6IHJvdyAtIDEsIGNvbCB9O1xuICAgIH1cbiAgICByZXR1cm4geyByb3csIGNvbCB9O1xuICB9XG5cbiAgbW92ZURvd24oe3JvdywgY29sfTogUG9zaXRpb24pOiBQb3NpdGlvbiB7XG4gICAgaWYgKHJvdyA8IHRoaXMuZ3JpZFNlcnZpY2UubWF4Um93KCkpIHtcbiAgICAgIHJldHVybiB7IHJvdzogcm93ICsgMSwgY29sIH07XG4gICAgfVxuICAgIHJldHVybiB7IHJvdywgY29sIH07XG4gIH1cbn0iXX0=","import { computed, effect, inject, Injectable, signal } from '@angular/core';\nimport { GridService } from './grid.service';\nimport { isEqual } from 'lodash-es';\nimport { SpreadSheetDataService } from './data.service';\nimport * as i0 from \"@angular/core\";\nexport class SelectionService {\n constructor() {\n this.data = inject(SpreadSheetDataService);\n this.selection = signal({ start: { row: 1, col: 0 }, end: null });\n this.selectionStart = computed(() => this.selection().start, { equal: isEqual });\n this.isMouseDown = signal(false);\n this.grid = inject(GridService);\n this.cellElMap = new Map();\n effect(() => {\n const position = this.selectionStart();\n if (position)\n this.focus(position);\n });\n }\n isSelected(position) {\n // selectionの範囲に含まれているかどうかを返す\n const selection = this.selection();\n if (!selection)\n return false;\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 isCursorPosition(position) {\n return isEqual(this.selection().start, position);\n }\n handleMouseDown(position, event) {\n this.isMouseDown.set(true);\n if (!event?.shiftKey) {\n this.startSelection(position);\n }\n }\n handleMouseUp() {\n this.isMouseDown.set(false);\n }\n handleMouseEnter(position) {\n if (this.isMouseDown()) {\n this.updateSelection(position);\n }\n }\n handleClick(position, event) {\n if (!this.isMouseDown()) {\n if (event?.shiftKey) {\n this.updateSelectionEnd(position);\n }\n else {\n this.startSelection(position);\n }\n }\n }\n clearSelection() {\n this.selection.update((selection) => ({ ...selection, start: selection.start, end: null }));\n }\n setStartPosition(position) {\n this.selection.update((selection) => ({ ...selection, start: position, end: null }));\n }\n getSelection() {\n return this.selection();\n }\n getSelectionEndOrStart() {\n return this.selection()?.end || this.selection()?.start;\n }\n updateSelectionEnd(position) {\n this.selection.update((selection) => ({ ...selection, end: position }));\n }\n startSelection(position) {\n this.selection.set({ start: position, end: null });\n }\n updateSelection(position) {\n if (this.selection()) {\n this.selection.update((selection) => ({ ...selection, end: position }));\n }\n }\n clearSelectedRange(selection) {\n }\n setCell(position, el) {\n this.cellElMap.set(`${this.buildKey(position)}`, el);\n }\n getCell(position) {\n return this.cellElMap.get(this.buildKey(position)) ?? null;\n }\n focus(position) {\n setTimeout(() => {\n const el = this.getCell(position);\n if (el && el !== document.activeElement) {\n el.focus();\n }\n });\n }\n buildKey(position) {\n return `(${position.row}, ${position.col})`;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SelectionService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SelectionService }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SelectionService, decorators: [{\n type: Injectable\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9AbmctYXRvbWljL2NvbW1vbi9zcmMvbGliL3NlcnZpY2VzL3NwcmVhZHNoZWV0L2ZlYXR1cmVzL3NlbGVjdGlvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTdFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDOztBQUd4RCxNQUFNLE9BQU8sZ0JBQWdCO0lBUTNCO1FBUG1CLFNBQUksR0FBRyxNQUFNLENBQUMsc0JBQXNCLENBQUMsQ0FBQztRQUN4QyxjQUFTLEdBQUcsTUFBTSxDQUFZLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFDLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFDdkUsbUJBQWMsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBQzVFLGdCQUFXLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzVCLFNBQUksR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDM0IsY0FBUyxHQUFHLElBQUksR0FBRyxFQUFnQyxDQUFDO1FBR25FLE1BQU0sQ0FBQyxHQUFHLEVBQUU7WUFDVixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsY0FB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QUFDLFFBQVEsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDdkQsQ0FBQztJQUVELE9BQU8sQ0FBQyxRQUFrQjtRQUN4QixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUM7SUFDN0QsQ0FBQztJQUVELEtBQUssQ0FBQyxRQUFrQjtRQUN0QixVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ2QsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUNsQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEtBQUssUUFBUSxDQUFDLGFBQWEsRUFBRSxDQUFDO2dCQUN4QyxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDYixDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRVMsUUFBUSxDQUFDLFFBQWtCO1FBQ25DLE9BQU8sSUFBSSxRQUFRLENBQUMsR0FBRyxLQUFLLFFBQVEsQ0FBQyxHQUFHLEdBQUcsQ0FBQztJQUM5QyxDQUFDOzhHQWpIVSxnQkFBZ0I7a0hBQWhCLGdCQUFnQjs7MkZBQWhCLGdCQUFnQjtrQkFENUIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNvbXB1dGVkLCBlZmZlY3QsIGluamVjdCwgSW5qZWN0YWJsZSwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTZWxlY3Rpb24sIFBvc2l0aW9uIH0gZnJvbSAnLi4vbW9kZWxzL2NlbGwubW9kZWwnO1xuaW1wb3J0IHsgR3JpZFNlcnZpY2UgfSBmcm9tICcuL2dyaWQuc2VydmljZSc7XG5pbXBvcnQgeyBpc0VxdWFsIH0gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCB7IFNwcmVhZFNoZWV0RGF0YVNlcnZpY2UgfSBmcm9tICcuL2RhdGEuc2VydmljZSc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBTZWxlY3Rpb25TZXJ2aWNlIHtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGRhdGEgPSBpbmplY3QoU3ByZWFkU2hlZXREYXRhU2VydmljZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgc2VsZWN0aW9uID0gc2lnbmFsPFNlbGVjdGlvbj4oeyBzdGFydDogeyByb3c6IDEsIGNvbDogMH0sIGVuZDogbnVsbCB9KTtcbiAgcHJpdmF0ZSByZWFkb25seSBzZWxlY3Rpb25TdGFydCA9IGNvbXB1dGVkKCgpID0+IHRoaXMuc2VsZWN0aW9uKCkuc3RhcnQsIHsgZXF1YWw6IGlzRXF1YWwgfSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgaXNNb3VzZURvd24gPSBzaWduYWwoZmFsc2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IGdyaWQgPSBpbmplY3QoR3JpZFNlcnZpY2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IGNlbGxFbE1hcCA9IG5ldyBNYXA8c3RyaW5nLCBIVE1MVGFibGVDZWxsRWxlbWVudD4oKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgY29uc3QgcG9zaXRpb24gPSB0aGlzLnNlbGVjdGlvblN0YXJ0KCk7XG4gICAgICBpZiAocG9zaXRpb24pIHRoaXMuZm9jdXMocG9zaXRpb24pO1xuICAgIH0pO1xuICB9XG5cbiAgaXNTZWxlY3RlZChwb3NpdGlvbjogUG9zaXRpb24pOiBib29sZWFuIHtcbiAgICAvLyBzZWxlY3Rpb27jga7nr4Tlm7LjgavlkKvjgb7jgozjgabjgYTjgovjgYvjganjgYbjgYvjgpLov5TjgZlcbiAgICBjb25zdCBzZWxlY3Rpb24gPSB0aGlzLnNlbGVjdGlvbigpO1xuICAgIGlmICghc2VsZWN0aW9uKSByZXR1cm4gZmFsc2U7XG5cbiAgICBjb25zdCB7IHN0YXJ0LCBlbmQgfSA9IHNlbGVjdGlvbjtcbiAgICBjb25zdCBtaW5Sb3cgPSBNYXRoLm1pbihzdGFydC5yb3csIGVuZD8ucm93ID8/IHN0YXJ0LnJvdyk7XG4gICAgY29uc3QgbWF4Um93ID0gTWF0aC5tYXgoc3RhcnQucm93LCBlbmQ/LnJvdyA/PyBzdGFydC5yb3cpO1xuICAgIGNvbnN0IG1pbkNvbCA9IE1hdGgubWluKHN0YXJ0LmNvbCwgZW5kPy5jb2wgPz8gc3RhcnQuY29sKTtcbiAgICBjb25zdCBtYXhDb2wgPSBNYXRoLm1heChzdGFydC5jb2wsIGVuZD8uY29sID8/IHN0YXJ0LmNvbCk7XG4gICAgY29uc3QgeyByb3csIGNvbCB9ID0gcG9zaXRpb247XG4gICAgcmV0dXJuIHJvdyA+PSBtaW5Sb3cgJiYgcm93IDw9IG1heFJvdyAmJiBjb2wgPj0gbWluQ29sICYmIGNvbCA8PSBtYXhDb2w7XG4gIH1cblxuICBpc0N1cnNvclBvc2l0aW9uKHBvc2l0aW9uOiBQb3NpdGlvbik6IGJvb2xlYW4ge1xuICAgIHJldHVybiBpc0VxdWFsKHRoaXMuc2VsZWN0aW9uKCkuc3RhcnQsIHBvc2l0aW9uKTtcbiAgfVxuXG4gIGhhbmRsZU1vdXNlRG93bihwb3NpdGlvbjogUG9zaXRpb24sIGV2ZW50PzogTW91c2VFdmVudCk6IHZvaWQge1xuICAgIHRoaXMuaXNNb3VzZURvd24uc2V0KHRydWUpO1xuICAgIGlmICghZXZlbnQ/LnNoaWZ0S2V5KSB7XG4gICAgICB0aGlzLnN0YXJ0U2VsZWN0aW9uKHBvc2l0aW9uKTtcbiAgICB9XG4gIH1cblxuICBoYW5kbGVNb3VzZVVwKCk6IHZvaWQge1xuICAgIHRoaXMuaXNNb3VzZURvd24uc2V0KGZhbHNlKTtcbiAgfVxuXG4gIGhhbmRsZU1vdXNlRW50ZXIocG9zaXRpb246IFBvc2l0aW9uKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaXNNb3VzZURvd24oKSkge1xuICAgICAgdGhpcy51cGRhdGVTZWxlY3Rpb24ocG9zaXRpb24pO1xuICAgIH1cbiAgfVxuXG4gIGhhbmRsZUNsaWNrKHBvc2l0aW9uOiBQb3NpdGlvbiwgZXZlbnQ/OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmlzTW91c2VEb3duKCkpIHtcbiAgICAgIGlmIChldmVudD8uc2hpZnRLZXkpIHtcbiAgICAgICAgdGhpcy51cGRhdGVTZWxlY3Rpb25FbmQocG9zaXRpb24pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5zdGFydFNlbGVjdGlvbihwb3NpdGlvbik7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgY2xlYXJTZWxlY3Rpb24oKTogdm9pZCB7XG4gICAgdGhpcy5zZWxlY3Rpb24udXBkYXRlKChzZWxlY3Rpb24pID0+ICh7Li4uc2VsZWN0aW9uLCBzdGFydDogc2VsZWN0aW9uLnN0YXJ0LCBlbmQ6IG51bGx9KSk7XG4gIH1cblxuICBzZXRTdGFydFBvc2l0aW9uKHBvc2l0aW9uOiBQb3NpdGlvbik6IHZvaWQge1xuICAgIHRoaXMuc2VsZWN0aW9uLnVwZGF0ZSgoc2VsZWN0aW9uKSA9PiAoey4uLnNlbGVjdGlvbiwgc3RhcnQ6IHBvc2l0aW9uLCBlbmQ6IG51bGx9KSk7XG4gIH1cblxuICBnZXRTZWxlY3Rpb24oKTogU2VsZWN0aW9uIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0aW9uKCk7XG4gIH1cblxuICBnZXRTZWxlY3Rpb25FbmRPclN0YXJ0KCk6IFBvc2l0aW9uIHtcbiAgICByZXR1cm4gdGhpcy5zZWxlY3Rpb24oKT8uZW5kIHx8IHRoaXMuc2VsZWN0aW9uKCk/LnN0YXJ0O1xuICB9XG5cbiAgdXBkYXRlU2VsZWN0aW9uRW5kKHBvc2l0aW9uOiBQb3NpdGlvbik6IHZvaWQge1xuICAgIHRoaXMuc2VsZWN0aW9uLnVwZGF0ZSgoc2VsZWN0aW9uKSA9PiAoey4uLnNlbGVjdGlvbiwgZW5kOiBwb3NpdGlvbn0pKTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhcnRTZWxlY3Rpb24ocG9zaXRpb246IFBvc2l0aW9uKTogdm9pZCB7XG4gICAgdGhpcy5zZWxlY3Rpb24uc2V0KHsgc3RhcnQ6IHBvc2l0aW9uLCBlbmQ6IG51bGwgfSk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZVNlbGVjdGlvbihwb3NpdGlvbjogUG9zaXRpb24pOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zZWxlY3Rpb24oKSkge1xuICAgICAgdGhpcy5zZWxlY3Rpb24udXBkYXRlKChzZWxlY3Rpb24pID0+ICh7Li4uc2VsZWN0aW9uLCBlbmQ6IHBvc2l0aW9ufSkpO1xuICAgIH1cbiAgfVxuXG4gIGNsZWFyU2VsZWN0ZWRSYW5nZShzZWxlY3Rpb246IHsgc3RhcnQ6IHsgcm93OiBudW1iZXI7IGNvbDogbnVtYmVyIH07IGVuZDogeyByb3c6IG51bWJlcjsgY29sOiBudW1iZXIgfSB9KTogdm9pZCB7XG5cbiAgfVxuXG4gIHNldENlbGwocG9zaXRpb246IFBvc2l0aW9uLCBlbDogSFRNTFRhYmxlQ2VsbEVsZW1lbnQpOiB2b2lkIHtcbiAgICB0aGlzLmNlbGxFbE1hcC5zZXQoYCR7dGhpcy5idWlsZEtleShwb3NpdGlvbil9YCwgZWwpO1xuICB9XG5cbiAgZ2V0Q2VsbChwb3NpdGlvbjogUG9zaXRpb24pOiBIVE1MVGFibGVDZWxsRWxlbWVudCB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLmNlbGxFbE1hcC5nZXQodGhpcy5idWlsZEtleShwb3NpdGlvbikpID8/IG51bGw7XG4gIH1cblxuICBmb2N1cyhwb3NpdGlvbjogUG9zaXRpb24pOiB2b2lkIHtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGNvbnN0IGVsID0gdGhpcy5nZXRDZWxsKHBvc2l0aW9uKTtcbiAgICAgIGlmIChlbCAmJiBlbCAhPT0gZG9jdW1lbnQuYWN0aXZlRWxlbWVudCkge1xuICAgICAgICBlbC5mb2N1cygpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIGJ1aWxkS2V5KHBvc2l0aW9uOiBQb3NpdGlvbik6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAoJHtwb3NpdGlvbi5yb3d9LCAke3Bvc2l0aW9uLmNvbH0pYDtcbiAgfVxufSJdfQ==","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 { SelectionService } from './selection.service';\nimport { SpreadSheetDataService } from './data.service';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"./selection.service\";\nexport class ClipboardService {\n constructor(selectionService) {\n this.selectionService = selectionService;\n this.clipboard = inject(Clipboard);\n this.snackBar = inject(SnackBarService);\n this.data = inject(SpreadSheetDataService);\n this.dataAccessor = injectDataAccessor();\n this.expression = inject(EXPRESSION_TRANSFORMER);\n this.language = inject(LanguageService);\n }\n buildGridData(range) {\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 async copy() {\n const selection = this.selectionService.getSelection();\n if (!selection)\n 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)), { delimiter: \"\\t\", newline: \"\\n\", header: false });\n this.copyText(tsv);\n }\n setData(items, displayedColumns) {\n this.data.displayedColumns.set(displayedColumns);\n this.data.items.set(items);\n }\n copyText(text) {\n this.clipboard.copy(text);\n this.snackBar.open('クリップボードにコピーしました。');\n }\n async paste(targetRow, targetCol) {\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: ClipboardService, deps: [{ token: i1.SelectionService }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: ClipboardService }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: ClipboardService, decorators: [{\n type: Injectable\n }], ctorParameters: () => [{ type: i1.SelectionService }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpcGJvYXJkLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9AbmctYXRvbWljL2NvbW1vbi9zcmMvbGliL3NlcnZpY2VzL3NwcmVhZHNoZWV0L2ZlYXR1cmVzL2NsaXBib2FyZC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNuRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDdkUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDM0UsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDakUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3RFLE9BQU8sU0FBUyxNQUFNLFdBQVcsQ0FBQztBQUVsQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7O0FBR3hELE1BQU0sT0FBTyxnQkFBZ0I7SUFRM0IsWUFDVSxnQkFBa0M7UUFBbEMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQVJwQyxjQUFTLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzlCLGFBQVEsR0FBRyxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDakMsU0FBSSxHQUFHLE1BQU0sQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO1FBQ3ZDLGlCQUFZLEdBQUcsa0JBQWtCLEVBQUUsQ0FBQztRQUNwQyxlQUFVLEdBQUcsTUFBTSxDQUFDLHNCQUFzQixDQUFDLENBQUM7UUFDNUMsYUFBUSxHQUFHLE1BQU0sQ0FBQyxl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QyxHQUFHLENBQUMsQ0FBQztJQUNyQixDQUFDO0lBRUQsT0FBTyxDQUFDLEtBQVksRUFBRSxnQkFBMEI7UUFDOUMsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUNqRCxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQUVTLFFBQVEsQ0FBQyxJQUFZO1FBQzdCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzFCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUM7SUFDekMsQ0FBQztJQUVELEtBQUssQ0FBQyxLQUFLLENBQUMsU0FBaUIsRUFBRSxTQUFpQjtJQUNoRCxDQUFDOzhHQXBEVSxnQkFBZ0I7a0hBQWhCLGdCQUFnQjs7MkZBQWhCLGdCQUFnQjtrQkFENUIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ2xpcGJvYXJkIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NsaXBib2FyZCc7XG5pbXBvcnQgeyBTbmFja0JhclNlcnZpY2UgfSBmcm9tICdAbmctYXRvbWljL2NvbW1vbi9zZXJ2aWNlcy9zbmFjay1iYXInO1xuaW1wb3J0IHsgaW5qZWN0RGF0YUFjY2Vzc29yIH0gZnJvbSAnQG5nLWF0b21pYy9jb21tb24vcGlwZXMvZGF0YS1hY2Nlc3Nvcic7XG5pbXBvcnQgeyBFWFBSRVNTSU9OX1RSQU5TRk9STUVSIH0gZnJvbSAnQG5nLWF0b21pYy9jb21tb24vdXRpbHMnO1xuaW1wb3J0IHsgTGFuZ3VhZ2VTZXJ2aWNlIH0gZnJvbSAnQG5nLWF0b21pYy9jb21tb24vc2VydmljZXMvbGFuZ3VhZ2UnO1xuaW1wb3J0IHBhcGFwYXJzZSBmcm9tICdwYXBhcGFyc2UnO1xuaW1wb3J0IHsgQ2VsbCB9IGZyb20gJy4uL21vZGVscyc7XG5pbXBvcnQgeyBTZWxlY3Rpb25TZXJ2aWNlIH0gZnJvbSAnLi9zZWxlY3Rpb24uc2VydmljZSc7XG5pbXBvcnQgeyBTcHJlYWRTaGVldERhdGFTZXJ2aWNlIH0gZnJvbSAnLi9kYXRhLnNlcnZpY2UnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQ2xpcGJvYXJkU2VydmljZSB7XG4gIHByaXZhdGUgY2xpcGJvYXJkID0gaW5qZWN0KENsaXBib2FyZCk7XG4gIHByaXZhdGUgc25hY2tCYXIgPSBpbmplY3QoU25hY2tCYXJTZXJ2aWNlKTtcbiAgcHJvdGVjdGVkIGRhdGEgPSBpbmplY3QoU3ByZWFkU2hlZXREYXRhU2VydmljZSk7XG4gIHJlYWRvbmx5IGRhdGFBY2Nlc3NvciA9IGluamVjdERhdGFBY2Nlc3NvcigpO1xuICByZWFkb25seSBleHByZXNzaW9uID0gaW5qZWN0KEVYUFJFU1NJT05fVFJBTlNGT1JNRVIpO1xuICByZWFkb25seSBsYW5ndWFnZSA9IGluamVjdChMYW5ndWFnZVNlcnZpY2UpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgc2VsZWN0aW9uU2VydmljZTogU2VsZWN0aW9uU2VydmljZSxcbiAgKSB7IH1cblxuICBwcml2YXRlIGJ1aWxkR3JpZERhdGEocmFuZ2U6IHttaW5Sb3c6IG51bWJlcjsgbWF4Um93OiBudW1iZXI7IG1pbkNvbDogbnVtYmVyOyBtYXhDb2w6IG51bWJlcn0pOiBDZWxsW11bXSB7XG4gICAgY29uc3QgaGVhZGVyID0gdGhpcy5kYXRhLmRpc3BsYXllZENvbHVtbnMoKS5tYXAoY29sdW1uID0+ICh7XG4gICAgICBkYXRhVmFsdWU6IHRoaXMubGFuZ3VhZ2UudHJhbnNmb3JtKGNvbHVtbiksXG4gICAgICBleHByZXNzaW9uVmFsdWU6IHRoaXMubGFuZ3VhZ2UudHJhbnNmb3JtKGNvbHVtbiksXG4gICAgICBpc0hlYWRlcjogdHJ1ZVxuICAgIH0pKTtcbiAgICBjb25zdCByb3dzID0gdGhpcy5kYXRhLml0ZW1zKCkubWFwKGl0ZW0gPT4gdGhpcy5kYXRhLmRpc3BsYXllZENvbHVtbnMoKS5tYXAoY29sdW1uID0+ICh7XG4gICAgICBkYXRhVmFsdWU6IHRoaXMuZGF0YUFjY2Vzc29yKGl0ZW0sIGNvbHVtbiksXG4gICAgICBleHByZXNzaW9uVmFsdWU6IHRoaXMuZXhwcmVzc2lvbih0aGlzLmRhdGFBY2Nlc3NvcihpdGVtLCBjb2x1bW4pLCB7aXRlbSwgbmFtZTogY29sdW1ufSksXG4gICAgfSkpKTtcbiAgICBjb25zdCBmdWxsRGF0YSA9IFtoZWFkZXIsIC4uLnJvd3NdO1xuICAgIHJldHVybiBmdWxsRGF0YS5zbGljZShyYW5nZS5taW5Sb3csIHJhbmdlLm1heFJvdyArIDEpLm1hcChyb3cgPT4gcm93LnNsaWNlKHJhbmdlLm1pbkNvbCwgcmFuZ2UubWF4Q29sICsgMSkpO1xuICB9XG5cbiAgYXN5bmMgY29weSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBzZWxlY3Rpb24gPSB0aGlzLnNlbGVjdGlvblNlcnZpY2UuZ2V0U2VsZWN0aW9uKCk7XG4gICAgaWYgKCFzZWxlY3Rpb24pIHJldHVybjtcbiAgICBsZXQgeyBzdGFydCwgZW5kIH0gPSBzZWxlY3Rpb247XG4gICAgZW5kID0gZW5kID8/IHN0YXJ0O1xuICAgIGNvbnN0IG1pblJvdyA9IE1hdGgubWluKHN0YXJ0LnJvdywgZW5kLnJvdyk7XG4gICAgY29uc3QgbWF4Um93ID0gTWF0aC5tYXgoc3RhcnQucm93LCBlbmQucm93KTtcbiAgICBjb25zdCBtaW5Db2wgPSBNYXRoLm1pbihzdGFydC5jb2wsIGVuZC5jb2wpO1xuICAgIGNvbnN0IG1heENvbCA9IE1hdGgubWF4KHN0YXJ0LmNvbCwgZW5kLmNvbCk7XG4gICAgY29uc3Qgc2VsZWN0ZWREYXRhID0gdGhpcy5idWlsZEdyaWREYXRhKHttaW5Sb3csIG1heFJvdywgbWluQ29sLCBtYXhDb2x9KTtcbiAgICBjb25zdCB0c3YgPSBwYXBhcGFyc2UudW5wYXJzZShzZWxlY3RlZERhdGEubWFwKHJvdyA9PiByb3cubWFwKGNlbGwgPT4gY2VsbC5kYXRhVmFsdWUpKSxcbiAgICAgIHsgZGVsaW1pdGVyOiBcIlxcdFwiLCBuZXdsaW5lOiBcIlxcblwiLCBoZWFkZXI6IGZhbHNlIH0pO1xuICAgIHRoaXMuY29weVRleHQodHN2KTtcbiAgfVxuXG4gIHNldERhdGEoaXRlbXM6IGFueVtdLCBkaXNwbGF5ZWRDb2x1bW5zOiBzdHJpbmdbXSk6IHZvaWQge1xuICAgIHRoaXMuZGF0YS5kaXNwbGF5ZWRDb2x1bW5zLnNldChkaXNwbGF5ZWRDb2x1bW5zKTtcbiAgICB0aGlzLmRhdGEuaXRlbXMuc2V0KGl0ZW1zKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBjb3B5VGV4dCh0ZXh0OiBzdHJpbmcpIHtcbiAgICB0aGlzLmNsaXBib2FyZC5jb3B5KHRleHQpO1xuICAgIHRoaXMuc25hY2tCYXIub3Blbign44Kv44Oq44OD44OX44Oc44O844OJ44Gr44Kz44OU44O844GX44G+44GX44Gf44CCJyk7XG4gIH1cblxuICBhc3luYyBwYXN0ZSh0YXJnZXRSb3c6IG51bWJlciwgdGFyZ2V0Q29sOiBudW1iZXIpOiBQcm9taXNlPHZvaWQ+IHtcbiAgfVxufSJdfQ==","import { inject, Injectable, InjectionToken } from \"@angular/core\";\nimport * as i0 from \"@angular/core\";\nexport const COLUMN_PROTECTOR = new InjectionToken('COLUMN_PROTECTOR', {\n providedIn: 'root',\n factory: () => [],\n});\nexport function provideCellProtector(useFactory) {\n return { provide: COLUMN_PROTECTOR, useFactory, multi: true };\n}\nexport class ProtectionService {\n constructor() {\n this.protectors = inject(COLUMN_PROTECTOR, { optional: true });\n }\n isEditable(value, context) {\n if (!this.protectors)\n return true;\n return this.protectors.every((protector) => protector(value, context));\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: ProtectionService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: ProtectionService }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: ProtectionService, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdGVjdGlvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvQG5nLWF0b21pYy9jb21tb24vc3JjL2xpYi9zZXJ2aWNlcy9zcHJlYWRzaGVldC9mZWF0dXJlcy9wcm90ZWN0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQVluRSxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLGNBQWMsQ0FBa0Isa0JBQWtCLEVBQUU7SUFDdEYsVUFBVSxFQUFFLE1BQU07SUFDbEIsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUU7Q0FDbEIsQ0FBQyxDQUFDO0FBQ0gsTUFBTSxVQUFVLG9CQUFvQixDQUFDLFVBQStCO0lBQ2xFLE9BQU8sRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQztBQUNoRSxDQUFDO0FBR0QsTUFBTSxPQUFPLGlCQUFpQjtJQUQ5QjtRQUVXLGVBQVUsR0FBRyxNQUFNLENBQUMsZ0JBQWdCLEVBQUUsRUFBQyxRQUFRLEVBQUUsSUFBSSxFQUFDLENBQUMsQ0FBQztLQU1sRTtJQUpDLFVBQVUsQ0FBQyxLQUFVLEVBQUUsT0FBeUI7UUFDOUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVO1lBQUUsT0FBTyxJQUFJLENBQUM7UUFDbEMsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQ3pFLENBQUM7OEdBTlUsaUJBQWlCO2tIQUFqQixpQkFBaUI7OzJGQUFqQixpQkFBaUI7a0JBRDdCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3QsIEluamVjdGFibGUsIEluamVjdGlvblRva2VuIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcblxuaW50ZXJmYWNlIENlbGxDb250ZXh0PFQ+IHtcbiAgaXRlbTogVDtcbiAgbmFtZTogc3RyaW5nO1xuICBwb3NpdGlvbjoge1xuICAgIHJvdzogbnVtYmVyO1xuICAgIGNvbDogbnVtYmVyO1xuICB9XG59XG5cbmV4cG9ydCB0eXBlIENlbGxQcm90ZWN0b3IgPSAodmFsdWU6IGFueSwgY29udGV4dDogQ2VsbENvbnRleHQ8YW55PikgPT4gYm9vbGVhbjtcbmV4cG9ydCBjb25zdCBDT0xVTU5fUFJPVEVDVE9SID0gbmV3IEluamVjdGlvblRva2VuPENlbGxQcm90ZWN0b3JbXT4oJ0NPTFVNTl9QUk9URUNUT1InLCB7XG4gIHByb3ZpZGVkSW46ICdyb290JyxcbiAgZmFjdG9yeTogKCkgPT4gW10sXG59KTtcbmV4cG9ydCBmdW5jdGlvbiBwcm92aWRlQ2VsbFByb3RlY3Rvcih1c2VGYWN0b3J5OiAoKSA9PiBDZWxsUHJvdGVjdG9yKSB7XG4gIHJldHVybiB7IHByb3ZpZGU6IENPTFVNTl9QUk9URUNUT1IsIHVzZUZhY3RvcnksIG11bHRpOiB0cnVlIH07XG59XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBQcm90ZWN0aW9uU2VydmljZSB7XG4gIHJlYWRvbmx5IHByb3RlY3RvcnMgPSBpbmplY3QoQ09MVU1OX1BST1RFQ1RPUiwge29wdGlvbmFsOiB0cnVlfSk7XG5cbiAgaXNFZGl0YWJsZSh2YWx1ZTogYW55LCBjb250ZXh0OiBDZWxsQ29udGV4dDxhbnk+KTogYm9vbGVhbiB7XG4gICAgaWYgKCF0aGlzLnByb3RlY3RvcnMpIHJldHVybiB0cnVlO1xuICAgIHJldHVybiB0aGlzLnByb3RlY3RvcnMuZXZlcnkoKHByb3RlY3RvcikgPT4gcHJvdGVjdG9yKHZhbHVlLCBjb250ZXh0KSk7XG4gIH1cbn1cbiJdfQ==","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 { SpreadSheetDataService } from './data.service';\nimport * as i0 from \"@angular/core\";\nexport class EditorService {\n constructor() {\n this.data = inject(SpreadSheetDataService);\n this.grid = inject(GridService);\n this.selection = inject(SelectionService);\n this.protection = inject(ProtectionService);\n this.editingStateManager = inject(EditingStateManager);\n this.editinngCell = signal(null);\n this.inputMap = new Map();\n }\n isEditing(position) {\n return this.editinngCell()?.row === position.row && this.editinngCell()?.col === position.col;\n }\n startEditing(position) {\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 // Notify EditingStateManager about editing start\n const columnId = this.data.displayedColumns()[position.col];\n this.editingStateManager.startEditing(position.row, columnId);\n this.focus(position);\n }\n stopEditing() {\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 focus(position) {\n setTimeout(() => {\n const input = this.getInput(position);\n if (input && input !== document.activeElement) {\n input.focus();\n input.select();\n }\n });\n }\n getEditingCell() {\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 setInput(input, position) {\n this.inputMap.set(`${this.buildKey(position)}`, input);\n }\n getInput(position) {\n return this.inputMap.get(this.buildKey(position)) ?? null;\n }\n buildKey(position) {\n return `(${position.row}, ${position.col})`;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: EditorService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: EditorService }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: EditorService, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdG9yLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9AbmctYXRvbWljL2NvbW1vbi9zcmMvbGliL3NlcnZpY2VzL3NwcmVhZHNoZWV0L2ZlYXR1cmVzL2VkaXRvci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUN6RSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFekQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7O0FBR3hELE1BQU0sT0FBTyxhQUFhO0lBRDFCO1FBRXFCLFNBQUksR0FBRyxNQUFNLENBQUMsc0JBQXNCLENBQUMsQ0FBQztRQUNqRCxTQUFJLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQzNCLGNBQVMsR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUNyQyxlQUFVLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDdkMsd0JBQW1CLEdBQUcsTUFBTSxDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFDakQsaUJBQVksR0FBRyxNQUFNLENBQXNDLElBQUksQ0FBQyxDQUFDO1FBQ3ZELGFBQVEsR0FBRyxJQUFJLEdBQUcsRUFBNEIsQ0FBQztLQWdFbkU7SUE5REMsU0FBUyxDQUFDLFFBQWtCO1FBQzFCLE9BQU8sSUFBSSxDQUFDLFlBQVksRUFBRSxFQUFFLEdBQUcsS0FBSyxRQUFRLENBQUMsR0FBRyxJQUFJ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LFFBQWtCO1FBQ3pCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQztJQUM1RCxDQUFDO0lBRVMsUUFBUSxDQUFDLFFBQWtCO1FBQ25DLE9BQU8sSUFBSSxRQUFRLENBQUMsR0FBRyxLQUFLLFFBQVEsQ0FBQyxHQUFHLEdBQUcsQ0FBQztJQUM5QyxDQUFDOzhHQXRFVSxhQUFhO2tIQUFiLGFBQWE7OzJGQUFiLGFBQWE7a0JBRHpCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3QsIEluamVjdGFibGUsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRWRpdGluZ1N0YXRlTWFuYWdlciB9IGZyb20gJ0BuZy1hdG9taWMvY29tbW9uL3NlcnZpY2VzL2VkaXRpbmcnO1xuaW1wb3J0IHsgR3JpZFNlcnZpY2UgfSBmcm9tICcuL2dyaWQuc2VydmljZSc7XG5pbXBvcnQgeyBTZWxlY3Rpb25TZXJ2aWNlIH0gZnJvbSAnLi9zZWxlY3Rpb24uc2VydmljZSc7XG5pbXBvcnQgeyBQcm90ZWN0aW9uU2VydmljZSB9IGZyb20gJy4vcHJvdGVjdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IFBvc2l0aW9uIH0gZnJvbSAnLi4vbW9kZWxzL2NlbGwubW9kZWwnO1xuaW1wb3J0IHsgU3ByZWFkU2hlZXREYXRhU2VydmljZSB9IGZyb20gJy4vZGF0YS5zZXJ2aWNlJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEVkaXRvclNlcnZpY2Uge1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZGF0YSA9IGluamVjdChTcHJlYWRTaGVldERhdGFTZXJ2aWNlKTtcbiAgcHJpdmF0ZSBncmlkID0gaW5qZWN0KEdyaWRTZXJ2aWNlKTtcbiAgcHJpdmF0ZSBzZWxlY3Rpb24gPSBpbmplY3QoU2VsZWN0aW9uU2VydmljZSk7XG4gIHByaXZhdGUgcHJvdGVjdGlvbiA9IGluamVjdChQcm90ZWN0aW9uU2VydmljZSk7XG4gIHByaXZhdGUgZWRpdGluZ1N0YXRlTWFuYWdlciA9IGluamVjdChFZGl0aW5nU3RhdGVNYW5hZ2VyKTtcbiAgcmVhZG9ubHkgZWRpdGlubmdDZWxsID0gc2lnbmFsPHsgcm93OiBudW1iZXIsIGNvbDogbnVtYmVyIH0gfCBudWxsPihudWxsKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGlucHV0TWFwID0gbmV3IE1hcDxzdHJpbmcsIEhUTUxJbnB1dEVsZW1lbnQ+KCk7XG5cbiAgaXNFZGl0aW5nKHBvc2l0aW9uOiBQb3NpdGlvbik6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmVkaXRpbm5nQ2VsbCgpPy5yb3cgPT09IHBvc2l0aW9uLnJvdyAmJiB0aGlzLmVkaXRpbm5nQ2VsbCgpPy5jb2wgPT09IHBvc2l0aW9uLmNvbDtcbiAgfVxuXG4gIHN0YXJ0RWRpdGluZyhwb3NpdGlvbjogUG9zaXRpb24pOiB2b2lkIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5ncmlkLmdldENvbnRleHQocG9zaXRpb24pO1xuICAgIGNvbnNvbGUuZGVidWcoJ2NvbnRleHQ6JywgY29udGV4dCk7XG4gICAgaWYgKCF0aGlzLnByb3RlY3Rpb24uaXNFZGl0YWJsZShudWxsLCBjb250ZXh0KSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLnNlbGVjdGlvbi5jbGVhclNlbGVjdGlvbigpO1xuICAgIHRoaXMuZWRpdGlubmdDZWxsLnNldChwb3NpdGlvbik7XG4gICAgXG4gICAgLy8gTm90aWZ5IEVkaXRpbmdTdGF0ZU1hbmFnZXIgYWJvdXQgZWRpdGluZyBzdGFydFxuICAgIGNvbnN0IGNvbHVtbklkID0gdGhpcy5kYXRhLmRpc3BsYXllZENvbHVtbnMoKVtwb3NpdGlvbi5jb2xdO1xuICAgIHRoaXMuZWRpdGluZ1N0YXRlTWFuYWdlci5zdGFydEVkaXRpbmcocG9zaXRpb24ucm93LCBjb2x1bW5JZCk7XG4gICAgXG4gICAgdGhpcy5mb2N1cyhwb3NpdGlvbik7XG4gIH1cblxuICBzdG9wRWRpdGluZygpOiB2b2lkIHtcbiAgICBjb25zdCBlZGl0aW5nQ2VsbCA9IHRoaXMuZWRpdGlubmdDZWxsKCk7XG4gICAgaWYgKGVkaXRpbmdDZWxsKSB7XG4gICAgICAvLyBOb3RpZnkgRWRpdGluZ1N0YXRlTWFuYWdlciBhYm91dCBlZGl0aW5nIHN0b3BcbiAgICAgIGNvbnN0IGNvbHVtbklkID0gdGhpcy5kYXRhLmRpc3BsYXllZENvbHVtbnMoKVtlZGl0aW5nQ2VsbC5jb2xdO1xuICAgICAgdGhpcy5lZGl0aW5nU3RhdGVNYW5hZ2VyLnN0b3BFZGl0aW5nKGVkaXRpbmdDZWxsLnJvdywgY29sdW1uSWQpO1xuICAgIH1cbiAgICB0aGlzLmVkaXRpbm5nQ2VsbC5zZXQobnVsbCk7XG4gIH1cblxuICBmb2N1cyhwb3NpdGlvbjogUG9zaXRpb24pOiB2b2lkIHtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGNvbnN0IGlucHV0ID0gdGhpcy5nZXRJbnB1dChwb3NpdGlvbik7XG4gICAgICBpZiAoaW5wdXQgJiYgaW5wdXQgIT09IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQpIHtcbiAgICAgICAgaW5wdXQuZm9jdXMoKTtcbiAgICAgICAgaW5wdXQuc2VsZWN0KCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBnZXRFZGl0aW5nQ2VsbCgpOiBQb3NpdGlvbiB8IG51bGwge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5kYXRhLml0ZW1zKCkubGVuZ3RoOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5kYXRhLmRpc3BsYXllZENvbHVtbnMoKS5sZW5ndGg7IGorKykge1xuICAgICAgICBpZiAodGhpcy5pc0VkaXRpbmcoe3JvdzogaSwgY29sOiBqfSkpIHtcbiAgICAgICAgICByZXR1cm4geyByb3c6IGksIGNvbDogaiB9O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgc2V0SW5wdXQoaW5wdXQ6IEhUTUxJbnB1dEVsZW1lbnQsIHBvc2l0aW9uOiBQb3NpdGlvbik6IHZvaWQge1xuICAgIHRoaXMuaW5wdXRNYXAuc2V0KGAke3RoaXMuYnVpbGRLZXkocG9zaXRpb24pfWAsIGlucHV0KTtcbiAgfVxuXG4gIGdldElucHV0KHBvc2l0aW9uOiBQb3NpdGlvbik6IEhUTUxJbnB1dEVsZW1lbnQgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5pbnB1dE1hcC5nZXQodGhpcy5idWlsZEtleShwb3NpdGlvbikpID8/IG51bGw7XG4gIH1cblxuICBwcm90ZWN0ZWQgYnVpbGRLZXkocG9zaXRpb246IFBvc2l0aW9uKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCgke3Bvc2l0aW9uLnJvd30sICR7cG9zaXRpb24uY29sfSlgO1xuICB9XG59Il19","import { Injectable, signal } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nexport class AutoFillService {\n constructor() {\n this.autofillMode = signal(false);\n this.sourcePosition = signal(null);\n this.targetRange = signal(null);\n this.previewElements = new Set();\n this.isAutofillMode = this.autofillMode.asReadonly();\n this.getSourcePosition = this.sourcePosition.asReadonly();\n this.getTargetRange = this.targetRange.asReadonly();\n }\n startAutofill(position) {\n this.autofillMode.set(true);\n this.sourcePosition.set(position);\n this.targetRange.set({ start: position, end: position });\n }\n updateAutofillRange(endPosition) {\n const sourcePos = this.sourcePosition();\n if (sourcePos) {\n this.targetRange.set({ start: sourcePos, end: endPosition });\n this.updatePreview();\n }\n }\n cancelAutofill() {\n this.resetAutofill();\n }\n updatePreview() {\n // 既存のプレビューをクリア\n this.clearPreview();\n const range = this.targetRange();\n if (!range)\n return;\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 clearPreview() {\n this.previewElements.forEach(element => {\n element.classList.remove('autofill-preview');\n });\n this.previewElements.clear();\n }\n getCellElement(position) {\n return document.querySelector(`[data-row=\"${position.row}\"][data-col=\"${position.col}\"]`);\n }\n resetAutofill() {\n this.clearPreview();\n this.autofillMode.set(false);\n this.sourcePosition.set(null);\n this.targetRange.set(null);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: AutoFillService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: AutoFillService }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: AutoFillService, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b2ZpbGwuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BuZy1hdG9taWMvY29tbW9uL3NyYy9saWIvc2VydmljZXMvc3ByZWFkc2hlZXQvZmVhdHVyZXMvYXV0b2ZpbGwuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFTbkQsTUFBTSxPQUFPLGVBQWU7SUFENUI7UUFFVSxpQkFBWSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM3QixtQkFBYyxHQUFHLE1BQU0sQ0FBa0IsSUFBSSxDQUFDLENBQUM7UUFDL0MsZ0JBQVcsR0FBRyxNQUFNLENBQWUsSUFBSSxDQUFDLENBQUM7UUFDekMsb0JBQWUsR0FBRyxJQUFJLEdBQUcsRUFBZSxDQUFDO1FBRXhDLG1CQUFjLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNoRCxzQkFBaUIsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ3JELG1CQUFjLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLEVBQUUsQ0FBQztLQTREekQ7SUExREMsYUFBYSxDQUFDLFFBQWtCO1FBQzlCLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzVCLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ2xDLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQztJQUMzRCxDQUFDO0lBRUQsbUJBQW1CLENBQUMsV0FBcUI7UUFDdkMsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3hDLElBQUksU0FBUyxFQUFFLENBQUM7WUFDZCxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLFdBQVcsRUFBRSxDQUFDLENBQUM7WUFDN0QsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3ZCLENBQUM7SUFDSCxDQUFDO0lBR0QsY0FBYztRQUNaLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUN2QixDQUFDO0lBR08sYUFBYTtRQUNuQixlQUFlO1FBQ2YsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBRXBCLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNqQyxJQUFJLENBQUMsS0FBSztZQUFFLE9BQU87UUFFbkIsdUJBQXVCO1FBQ3ZCLEtBQUssSUFBSSxHQUFHLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLEdBQUcsQ0FBQyxFQUFFLEdBQUcsSUFBSSxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDO1lBQ2hFLE1BQU0sUUFBUSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQy9DLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDbEQsSUFBSSxXQUFXLEVBQUUsQ0FBQztnQkFDaEIsV0FBVyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsa0JBQWtCLENBQUMsQ0FBQztnQkFDOUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDeEMsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBRU8sWUFBWTtRQUNsQixJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRTtZQUNyQyxPQUFPLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBQy9DLENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUMvQixDQUFDO0lBRU8sY0FBYyxDQUFDLFFBQWtCO1FBQ3ZDLE9BQU8sUUFBUSxDQUFDLGFBQWEsQ0FDM0IsY0FBYyxRQUFRLENBQUMsR0FBRyxnQkFBZ0IsUUFBUSxDQUFDLEdBQUcsSUFBSSxDQUM1QyxDQUFDO0lBQ25CLENBQUM7SUFHTyxhQUFhO1FBQ25CLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUNwQixJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM3QixJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM5QixJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM3QixDQUFDOzhHQW5FVSxlQUFlO2tIQUFmLGVBQWU7OzJGQUFmLGVBQWU7a0JBRDNCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFBvc2l0aW9uIH0gZnJvbSAnLi4vbW9kZWxzJztcblxuZXhwb3J0IGludGVyZmFjZSBSYW5nZSB7XG4gIHN0YXJ0OiBQb3NpdGlvbjtcbiAgZW5kOiBQb3NpdGlvbjtcbn1cblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEF1dG9GaWxsU2VydmljZSB7XG4gIHByaXZhdGUgYXV0b2ZpbGxNb2RlID0gc2lnbmFsKGZhbHNlKTtcbiAgcHJpdmF0ZSBzb3VyY2VQb3NpdGlvbiA9IHNpZ25hbDxQb3NpdGlvbiB8IG51bGw+KG51bGwpO1xuICBwcml2YXRlIHRhcmdldFJhbmdlID0gc2lnbmFsPFJhbmdlIHwgbnVsbD4obnVsbCk7XG4gIHByaXZhdGUgcHJldmlld0VsZW1lbnRzID0gbmV3IFNldDxIVE1MRWxlbWVudD4oKTtcbiAgXG4gIHJlYWRvbmx5IGlzQXV0b2ZpbGxNb2RlID0gdGhpcy5hdXRvZmlsbE1vZGUuYXNSZWFkb25seSgpO1xuICByZWFkb25seSBnZXRTb3VyY2VQb3NpdGlvbiA9IHRoaXMuc291cmNlUG9zaXRpb24uYXNSZWFkb25seSgpO1xuICByZWFkb25seSBnZXRUYXJnZXRSYW5nZSA9IHRoaXMudGFyZ2V0UmFuZ2UuYXNSZWFkb25seSgpO1xuICBcbiAgc3RhcnRBdXRvZmlsbChwb3NpdGlvbjogUG9zaXRpb24pOiB2b2lkIHtcbiAgICB0aGlzLmF1dG9maWxsTW9kZS5zZXQodHJ1ZSk7XG4gICAgdGhpcy5zb3VyY2VQb3NpdGlvbi5zZXQocG9zaXRpb24pO1xuICAgIHRoaXMudGFyZ2V0UmFuZ2Uuc2V0KHsgc3RhcnQ6IHBvc2l0aW9uLCBlbmQ6IHBvc2l0aW9uIH0pO1xuICB9XG4gIFxuICB1cGRhdGVBdXRvZmlsbFJhbmdlKGVuZFBvc2l0aW9uOiBQb3NpdGlvbik6IHZvaWQge1xuICAgIGNvbnN0IHNvdXJjZVBvcyA9IHRoaXMuc291cmNlUG9zaXRpb24oKTtcbiAgICBpZiAoc291cmNlUG9zKSB7XG4gICAgICB0aGlzLnRhcmdldFJhbmdlLnNldCh7IHN0YXJ0OiBzb3VyY2VQb3MsIGVuZDogZW5kUG9zaXRpb24gfSk7XG4gICAgICB0aGlzLnVwZGF0ZVByZXZpZXcoKTtcbiAgICB9XG4gIH1cbiAgXG4gIFxuICBjYW5jZWxBdXRvZmlsbCgpOiB2b2lkIHtcbiAgICB0aGlzLnJlc2V0QXV0b2ZpbGwoKTtcbiAgfVxuICBcbiAgXG4gIHByaXZhdGUgdXBkYXRlUHJldmlldygpOiB2b2lkIHtcbiAgICAvLyDml6LlrZjjga7jg5fjg6zjg5Pjg6Xjg7zjgpLjgq/jg6rjgqJcbiAgICB0aGlzLmNsZWFyUHJldmlldygpO1xuICAgIFxuICAgIGNvbnN0IHJhbmdlID0gdGhpcy50YXJnZXRSYW5nZSgpO1xuICAgIGlmICghcmFuZ2UpIHJldHVybjtcbiAgICBcbiAgICAvLyDlvbHpn7/jgpLlj5fjgZHjgovjgrvjg6vjgavjg5fjg6zjg5Pjg6Xjg7zjgq/jg6njgrnjgpLov73liqBcbiAgICBmb3IgKGxldCByb3cgPSByYW5nZS5zdGFydC5yb3cgKyAxOyByb3cgPD0gcmFuZ2UuZW5kLnJvdzsgcm93KyspIHtcbiAgICAgIGNvbnN0IHBvc2l0aW9uID0geyByb3csIGNvbDogcmFuZ2Uuc3RhcnQuY29sIH07XG4gICAgICBjb25zdCBjZWxsRWxlbWVudCA9IHRoaXMuZ2V0Q2VsbEVsZW1lbnQocG9zaXRpb24pO1xuICAgICAgaWYgKGNlbGxFbGVtZW50KSB7XG4gICAgICAgIGNlbGxFbGVtZW50LmNsYXNzTGlzdC5hZGQoJ2F1dG9maWxsLXByZXZpZXcnKTtcbiAgICAgICAgdGhpcy5wcmV2aWV3RWxlbWVudHMuYWRkKGNlbGxFbGVtZW50KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgXG4gIHByaXZhdGUgY2xlYXJQcmV2aWV3KCk6IHZvaWQge1xuICAgIHRoaXMucHJldmlld0VsZW1lbnRzLmZvckVhY2goZWxlbWVudCA9PiB7XG4gICAgICBlbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoJ2F1dG9maWxsLXByZXZpZXcnKTtcbiAgICB9KTtcbiAgICB0aGlzLnByZXZpZXdFbGVtZW50cy5jbGVhcigpO1xuICB9XG4gIFxuICBwcml2YXRlIGdldENlbGxFbGVtZW50KHBvc2l0aW9uOiBQb3NpdGlvbik6IEhUTUxFbGVtZW50IHwgbnVsbCB7XG4gICAgcmV0dXJuIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXG4gICAgICBgW2RhdGEtcm93PVwiJHtwb3NpdGlvbi5yb3d9XCJdW2RhdGEtY29sPVwiJHtwb3NpdGlvbi5jb2x9XCJdYFxuICAgICkgYXMgSFRNTEVsZW1lbnQ7XG4gIH1cbiAgXG4gIFxuICBwcml2YXRlIHJlc2V0QXV0b2ZpbGwoKTogdm9pZCB7XG4gICAgdGhpcy5jbGVhclByZXZpZXcoKTtcbiAgICB0aGlzLmF1dG9maWxsTW9kZS5zZXQoZmFsc2UpO1xuICAgIHRoaXMuc291cmNlUG9zaXRpb24uc2V0KG51bGwpO1xuICAgIHRoaXMudGFyZ2V0UmFuZ2Uuc2V0KG51bGwpO1xuICB9XG59Il19","import { inject, Injectable } from '@angular/core';\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';\nimport * as i0 from \"@angular/core\";\nexport class SpreadSheetService {\n constructor() {\n this.config = { paste: false };\n this.grid = inject(GridService);\n // readonly data = inject(SpreadSheetDataService);\n this.navigation = inject(NavigationService);\n this.selection = inject(SelectionService);\n this.clipboard = inject(ClipboardService);\n this.editor = inject(EditorService);\n this.protection = inject(ProtectionService);\n this.autofill = inject(AutoFillService);\n }\n handleKeyDown(event) {\n if (this.editor.editinngCell()) {\n this.handleKeyDownOnEditing(event);\n }\n else {\n this.handleKeyDownOnSelecting(event);\n }\n }\n handleKeyDownOnEditing(event) {\n const cell = this.editor.editinngCell();\n // stopPropagation()が呼ばれている場合は処理しない\n // IME入力中やユーザーの意図的な入力中断の場合にValueCellAtomから制御される\n if (event.cancelBubble) {\n return;\n }\n if (event.key === 'Tab') {\n event.preventDefault();\n if (event.shiftKey) {\n this.move(cell, 'left', 'select');\n }\n else {\n this.move(cell, 'right', 'select');\n }\n }\n else if (event.key === 'Enter') {\n event.preventDefault();\n if (event.shiftKey) {\n this.move(cell, 'top', 'select');\n }\n else {\n this.move(cell, 'bottom', 'select');\n }\n }\n }\n handleKeyDownOnSelecting(event) {\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 }\n else {\n this.move(selectedCell, 'right', 'select');\n }\n return;\n }\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 }\n else if (event.ctrlKey || event.metaKey) {\n if (event.key === 'c') {\n this.clipboard.copy();\n event.preventDefault();\n }\n else if (event.key === 'v') {\n if (!this.config.paste)\n 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 }\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 }\n else {\n const selection = this.selection.getSelection().start;\n let newPosition;\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 }\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 move(_position, dest, mode) {\n this.editor.stopEditing();\n let position;\n if (dest === 'top') {\n position = this.navigation.moveToPreviousRow(_position);\n }\n else if (dest === 'bottom') {\n position = this.navigation.moveToNextRow(_position);\n }\n else if (dest === 'left') {\n position = this.navigation.moveToPreviousCell(_position);\n }\n else if (dest === 'right') {\n position = this.navigation.moveToNextCell(_position);\n }\n this.selection.setStartPosition(position);\n if (mode === 'edit') {\n this.editor.startEditing(position);\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SpreadSheetService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SpreadSheetService }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SpreadSheetService, decorators: [{\n type: Injectable\n }] });\nexport function provideSpreadSheetService() {\n return [\n ClipboardService,\n SpreadSheetDataService,\n EditorService,\n SpreadSheetService,\n GridService,\n NavigationService,\n SelectionService,\n ProtectionService,\n AutoFillService\n ];\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3ByZWFkc2hlZXQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BuZy1hdG9taWMvY29tbW9uL3NyYy9saWIvc2VydmljZXMvc3ByZWFkc2hlZXQvc3ByZWFkc2hlZXQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBWSxNQUFNLGVBQWUsQ0FBQztBQUU3RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDaEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDaEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzFELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQzs7QUFHOUQsTUFBTSxPQUFPLGtCQUFrQjtJQUQvQjtRQUVXLFdBQU0sR0FBRyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsQ0FBQztRQUMxQixTQUFJLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3BDLGtEQUFrRDtRQUN6QyxlQUFVLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDdkMsY0FBUyxHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ3JDLGNBQVMsR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUNyQyxXQUFNLEdBQUcsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFD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LENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3JDLENBQUM7SUFDSCxDQUFDOzhHQXZKVSxrQkFBa0I7a0hBQWxCLGtCQUFrQjs7MkZBQWxCLGtCQUFrQjtrQkFEOUIsVUFBVTs7QUEySlgsTUFBTSxVQUFVLHlCQUF5QjtJQUN2QyxPQUFPO1FBQ0wsZ0JBQWdCO1FBQ2hCLHNCQUFzQjtRQUN0QixhQUFhO1FBQ2Isa0JBQWtCO1FBQ2xCLFdBQVc7UUFDWCxpQkFBaUI7UUFDakIsZ0JBQWdCO1FBQ2hCLGlCQUFpQjtRQUNqQixlQUFlO0tBQ2hCLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5qZWN0LCBJbmplY3RhYmxlLCBQcm92aWRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUG9zaXRpb24gfSBmcm9tICcuL21vZGVscy9jZWxsLm1vZGVsJztcbmltcG9ydCB7IEdyaWRTZXJ2aWNlIH0gZnJvbSAnLi9mZWF0dXJlcy9ncmlkLnNlcnZpY2UnO1xuaW1wb3J0IHsgTmF2aWdhdGlvblNlcnZpY2UgfSBmcm9tICcuL2ZlYXR1cmVzL25hdmlnYXRpb24uc2VydmljZSc7XG5pbXBvcnQgeyBTZWxlY3Rpb25TZXJ2aWNlIH0gZnJvbSAnLi9mZWF0dXJlcy9zZWxlY3Rpb24uc2VydmljZSc7XG5pbXBvcnQgeyBDbGlwYm9hcmRTZXJ2aWNlIH0gZnJvbSAnLi9mZWF0dXJlcy9jbGlwYm9hcmQuc2VydmljZSc7XG5pbXBvcnQgeyBFZGl0b3JTZXJ2aWNlIH0gZnJvbSAnLi9mZWF0dXJlcy9lZGl0b3Iuc2VydmljZSc7XG5pbXBvcnQgeyBQcm90ZWN0aW9uU2VydmljZSB9IGZyb20gJy4vZmVhdHVyZXMvcHJvdGVjdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IFNwcmVhZFNoZWV0RGF0YVNlcnZpY2UgfSBmcm9tICcuL2ZlYXR1cmVzL2RhdGEuc2VydmljZSc7XG5pbXBvcnQgeyBBdXRvRmlsbFNlcnZpY2UgfSBmcm9tICcuL2ZlYXR1cmVzL2F1dG9maWxsLnNlcnZpY2UnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgU3ByZWFkU2hlZXRTZXJ2aWNlIHtcbiAgcmVhZG9ubHkgY29uZmlnID0geyBwYXN0ZTogZmFsc2UgfTtcbiAgcmVhZG9ubHkgZ3JpZCA9IGluamVjdChHcmlkU2VydmljZSk7XG4gIC8vIHJlYWRvbmx5IGRhdGEgPSBpbmplY3QoU3ByZWFkU2hlZXREYXRhU2VydmljZSk7XG4gIHJlYWRvbmx5IG5hdmlnYXRpb24gPSBpbmplY3QoTmF2aWdhdGlvblNlcnZpY2UpO1xuICByZWFkb25seSBzZWxlY3Rpb24gPSBpbmplY3QoU2VsZWN0aW9uU2VydmljZSk7XG4gIHJlYWRvbmx5IGNsaXBib2FyZCA9IGluamVjdChDbGlwYm9hcmRTZXJ2aWNlKTtcbiAgcmVhZG9ubHkgZWRpdG9yID0gaW5qZWN0KEVkaXRvclNlcnZpY2UpO1xuICByZWFkb25seSBwcm90ZWN0aW9uID0gaW5qZWN0KFByb3RlY3Rpb25TZXJ2aWNlKTtcbiAgcmVhZG9ubHkgYXV0b2ZpbGwgPSBpbmplY3QoQXV0b0ZpbGxTZXJ2aWNlKTtcblxuICBoYW5kbGVLZXlEb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZWRpdG9yLmVkaXRpbm5nQ2VsbCgpKSB7XG4gICAgICB0aGlzLmhhbmRsZUtleURvd25PbkVkaXRpbmcoZXZlbnQpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmhhbmRsZUtleURvd25PblNlbGVjdGluZyhldmVudCk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGhhbmRsZUtleURvd25PbkVkaXRpbmcoZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICBjb25zdCBjZWxsID0gdGhpcy5lZGl0b3IuZWRpdGlubmdDZWxsKCk7XG4gICAgXG4gICAgLy8gc3RvcFByb3BhZ2F0aW9uKCnjgYzlkbzjgbDjgozjgabjgYTjgovloLTlkIjjga/lh6bnkIbjgZfjgarjgYRcbiAgICAvLyBJTUXlhaXlipvkuK3jgoTjg6bjg7zjgrbjg7zjga7mhI/lm7PnmoTjgarlhaXlipvkuK3mlq3jga7loLTlkIjjgatWYWx1ZUNlbGxBdG9t44GL44KJ5Yi25b6h44GV44KM44KLXG4gICAgaWYgKGV2ZW50LmNhbmNlbEJ1YmJsZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBcbiAgICBpZiAoZXZlbnQua2V5ID09PSAnVGFiJykge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIGlmIChldmVudC5zaGlmdEtleSkge1xuICAgICAgICB0aGlzLm1vdmUoY2VsbCwgJ2xlZnQnLCAnc2VsZWN0Jyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLm1vdmUoY2VsbCwgJ3JpZ2h0JywgJ3NlbGVjdCcpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoZXZlbnQua2V5ID09PSAnRW50ZXInKSB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgaWYgKGV2ZW50LnNoaWZ0S2V5KSB7XG4gICAgICAgIHRoaXMubW92ZShjZWxsLCAndG9wJywgJ3NlbGVjdCcpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5tb3ZlKGNlbGwsICdib3R0b20nLCAnc2VsZWN0Jyk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGhhbmRsZUtleURvd25PblNlbGVjdGluZyhldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgIGlmIChldmVudC5rZXkgPT09ICdUYWInKSB7XG4gICAgICBjb25zdCBzZWxlY3RlZENlbGwgPSB0aGlzLnNlbGVjdGlvbi5nZXRTZWxlY3Rpb24oKS5zdGFydDtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgIGlmIChldmVudC5zaGlmdEtleSkge1xuICAgICAgICB0aGlzLm1vdmUoc2VsZWN0ZWRDZWxsLCAnbGVmdCcsICdzZWxlY3QnKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMubW92ZShzZWxlY3RlZENlbGwsICdyaWdodCcsICdzZWxlY3QnKTtcbiAgICAgIH1cbiAgICAgIHJldHVybjtcbiAgICB9IGVsc2UgaWYgKGV2ZW50LmtleSA9PT0gJ0VudGVyJykge1xuICAgICAgY29uc3Qgc2VsZWN0ZWRDZWxsID0gdGhpcy5zZWxlY3Rpb24uZ2V0U2VsZWN0aW9uKCkuc3RhcnQ7XG4gICAgICBpZiAoc2VsZWN0ZWRDZWxsKSB7XG4gICAgICAgIHRoaXMuZWRpdG9yLnN0YXJ0RWRpdGluZyhzZWxlY3RlZENlbGwpO1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoZXZlbnQuY3RybEtleSB8fCBldmVudC5tZXRhS2V5KSB7XG4gICAgICBpZiAoZXZlbnQua2V5ID09PSAnYycpIHtcbiAgICAgICAgdGhpcy5jbGlwYm9hcmQuY29weSgpO1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgfSBlbHNlIGlmIChldmVudC5rZXkgPT09ICd2Jykge1xuICAgICAgICBpZiAoIXRoaXMuY29uZmlnLnBhc3RlKSByZXR1cm47XG4gICAgICAgIGNvbnN0IHRhcmdldCA9IHRoaXMuc2VsZWN0aW9uLmdldFNlbGVjdGlvbigpLnN0YXJ0O1xuICAgICAgICBpZiAodGFyZ2V0KSB7XG4gICAgICAgICAgdGhpcy5jbGlwYm9hcmQucGFzdGUodGFyZ2V0LnJvdywgdGFyZ2V0LmNvbCk7XG4gICAgICAgIH1cbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIH1cbiAgICAgIHJldHVybjtcbiAgICB9IGVsc2UgaWYgKGV2ZW50LmtleSA9PT0gJ0RlbGV0ZScgfHwgZXZlbnQua2V5ID09PSAnQmFja3NwYWNlJykge1xuICAgICAgY29uc3Qgc2VsZWN0aW9uID0gdGhpcy5zZWxlY3Rpb24uZ2V0U2VsZWN0aW9uKCk7XG4gICAgICBpZiAoc2VsZWN0aW9uKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0aW9uLmNsZWFyU2VsZWN0ZWRSYW5nZShzZWxlY3Rpb24pO1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHNlbGVjdGlvbiA9IHRoaXMuc2VsZWN0aW9uLmdldFNlbGVjdGlvbigpLnN0YXJ0O1xuICAgICAgbGV0IG5ld1Bvc2l0aW9uOiBQb3NpdGlvbjtcbiAgICAgIGlmIChldmVudC5zaGlmdEtleSkge1xuICAgICAgICBjb25zdCBzZWxlY3Rpb25FbmQgPSB0aGlzLnNlbGVjdGlvbi5nZXRTZWxlY3Rpb25FbmRPclN0YXJ0KCk7XG4gICAgICAgIHN3aXRjaCAoZXZlbnQua2V5KSB7XG4gICAgICAgICAgY2FzZSAnQXJyb3dSaWdodCc6XG4gICAgICAgICAgICBuZXdQb3NpdGlvbiA9IHRoaXMubmF2aWdhdGlvbi5tb3ZlUmlnaHQoc2VsZWN0aW9uRW5kKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgJ0Fycm93TGVmdCc6XG4gICAgICAgICAgICBuZXdQb3NpdGlvbiA9IHRoaXMubmF2aWdhdGlvbi5tb3ZlTGVmdChzZWxlY3Rpb25FbmQpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAnQXJyb3dVcCc6XG4gICAgICAgICAgICBuZXdQb3NpdGlvbiA9IHRoaXMubmF2aWdhdGlvbi5tb3ZlVXAoc2VsZWN0aW9uRW5kKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgJ0Fycm93RG93bic6XG4gICAgICAgICAgICBuZXdQb3NpdGlvbiA9IHRoaXMubmF2aWdhdGlvbi5tb3ZlRG93bihzZWxlY3Rpb25FbmQpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAobmV3UG9zaXRpb24pIHtcbiAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgIHRoaXMuc2VsZWN0aW9uLnVwZGF0ZVNlbGVjdGlvbkVuZChuZXdQb3NpdGlvbik7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHN3aXRjaCAoZXZlbnQua2V5KSB7XG4gICAgICAgICAgY2FzZSAnQXJyb3dSaWdodCc6XG4gICAgICAgICAgICBuZXdQb3NpdGlvbiA9IHRoaXMubmF2aWdhdGlvbi5tb3ZlUmlnaHQoc2VsZWN0aW9uKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgJ0Fycm93TGVmdCc6XG4gICAgICAgICAgICBuZXdQb3NpdGlvbiA9IHRoaXMubmF2aWdhdGlvbi5tb3ZlTGVmdChzZWxlY3Rpb24pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAnQXJyb3dVcCc6XG4gICAgICAgICAgICBuZXdQb3NpdGlvbiA9IHRoaXMubmF2aWdhdGlvbi5tb3ZlVXAoc2VsZWN0aW9uKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgJ0Fycm93RG93bic6XG4gICAgICAgICAgICBuZXdQb3NpdGlvbiA9IHRoaXMubmF2aWdhdGlvbi5tb3ZlRG93bihzZWxlY3Rpb24pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAobmV3UG9zaXRpb24pIHtcbiAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgIHRoaXMuc2VsZWN0aW9uLmNsZWFyU2VsZWN0aW9uKCk7XG4gICAgICAgICAgdGhpcy5zZWxlY3Rpb24uaGFuZGxlQ2xpY2sobmV3UG9zaXRpb24pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIG1vdmUoX3Bvc2l0aW9uOiBQb3NpdGlvbiwgZGVzdDogJ3RvcCcgfCAnYm90dG9tJyB8ICdsZWZ0JyB8ICdyaWdodCcsIG1vZGU6ICdlZGl0JyB8ICdzZWxlY3QnKSB7XG4gICAgdGhpcy5lZGl0b3Iuc3RvcEVkaXRpbmcoKTtcbiAgICBsZXQgcG9zaXRpb246IFBvc2l0aW9uO1xuICAgIGlmIChkZXN0ID09PSAndG9wJykge1xuICAgICAgcG9zaXRpb24gPSB0aGlzLm5hdmlnYXRpb24ubW92ZVRvUHJldmlvdXNSb3coX3Bvc2l0aW9uKTtcbiAgICB9IGVsc2UgaWYgKGRlc3QgPT09ICdib3R0b20nKSB7XG4gICAgICBwb3NpdGlvbiA9IHRoaXMubmF2aWdhdGlvbi5tb3ZlVG9OZXh0Um93KF9wb3NpdGlvbik7XG4gICAgfSBlbHNlIGlmIChkZXN0ID09PSAnbGVmdCcpIHtcbiAgICAgIHBvc2l0aW9uID0gdGhpcy5uYXZpZ2F0aW9uLm1vdmVUb1ByZXZpb3VzQ2VsbChfcG9zaXRpb24pO1xuICAgIH0gZWxzZSBpZiAoZGVzdCA9PT0gJ3JpZ2h0Jykge1xuICAgICAgcG9zaXRpb24gPSB0aGlzLm5hdmlnYXRpb24ubW92ZVRvTmV4dENlbGwoX3Bvc2l0aW9uKTtcbiAgICB9XG5cbiAgICB0aGlzLnNlbGVjdGlvbi5zZXRTdGFydFBvc2l0aW9uKHBvc2l0aW9uKTtcblxuICAgIGlmIChtb2RlID09PSAnZWRpdCcpIHtcbiAgICAgIHRoaXMuZWRpdG9yLnN0YXJ0RWRpdGluZyhwb3NpdGlvbik7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm92aWRlU3ByZWFkU2hlZXRTZXJ2aWNlKCk6IFByb3ZpZGVyW10ge1xuICByZXR1cm4gW1xuICAgIENsaXBib2FyZFNlcnZpY2UsXG4gICAgU3ByZWFkU2hlZXREYXRhU2VydmljZSxcbiAgICBFZGl0b3JTZXJ2aWNlLFxuICAgIFNwcmVhZFNoZWV0U2VydmljZSxcbiAgICBHcmlkU2VydmljZSxcbiAgICBOYXZpZ2F0aW9uU2VydmljZSxcbiAgICBTZWxlY3Rpb25TZXJ2aWNlLFxuICAgIFByb3RlY3Rpb25TZXJ2aWNlLFxuICAgIEF1dG9GaWxsU2VydmljZVxuICBdO1xufVxuIl19","import { computed, Directive, effect, ElementRef, inject, input, signal } from \"@angular/core\";\nimport { SpreadSheetService } from \"../spreadsheet.service\";\nimport * as i0 from \"@angular/core\";\nexport class SpreadSheetCell {\n constructor() {\n this.ss = inject(SpreadSheetService);\n this.el = inject(ElementRef);\n this.position = input({ row: 0, col: 0 }, { alias: 'ssCell' });\n this.editable = input(false, { alias: 'ssCellEditable' });\n this.context = input(null, { alias: 'ssCellContext' });\n this.isSelected = computed(() => this.ss.selection.isSelected(this.position()));\n this.isEditing = computed(() => this.ss.editor.isEditing(this.position()));\n this.frameEl = signal(null);\n effect(() => {\n if (!this.context())\n return;\n this.ss.grid.setContext(this.context());\n });\n effect(() => {\n const isCursor = this.ss.selection.isCursorPosition(this.position());\n let frame = this.frameEl();\n if (isCursor) {\n if (!frame) {\n frame = this.buildOutlineFrame();\n this.el.nativeElement.appendChild(frame);\n this.frameEl.set(frame);\n }\n }\n else {\n frame?.remove();\n this.frameEl.set(null);\n }\n });\n }\n onDbClick() {\n if (!this.editable())\n return;\n this.ss.editor.startEditing(this.position());\n }\n ngAfterViewInit() {\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 buildOutlineFrame() {\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 createLabelElement(options) {\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 static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SpreadSheetCell, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"17.1.0\", version: \"20.0.5\", type: SpreadSheetCell, isStandalone: true, selector: \"[ssCell]\", inputs: { position: { classPropertyName: \"position\", publicName: \"ssCell\", isSignal: true, isRequired: false, transformFunction: null }, editable: { classPropertyName: \"editable\", publicName: \"ssCellEditable\", isSignal: true, isRequired: false, transformFunction: null }, context: { classPropertyName: \"context\", publicName: \"ssCellContext\", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { \"mousedown\": \"ss.selection.handleMouseDown(position(), $event)\", \"mouseup\": \"ss.selection.handleMouseUp()\", \"mouseenter\": \"ss.selection.handleMouseEnter(position())\", \"click\": \"ss.selection.handleClick(position(), $event)\", \"dblclick\": \"onDbClick()\" }, properties: { \"class.selected\": \"ss.selection.isSelected(position())\", \"class.editing\": \"ss.editor.isEditing(position())\", \"attr.data-row\": \"position().row\", \"attr.data-col\": \"position().col\" } }, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SpreadSheetCell, decorators: [{\n type: Directive,\n args: [{\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 }]\n }], ctorParameters: () => [] });\nexport class SpreadSheetCellInput {\n constructor() {\n this.ss = inject(SpreadSheetService);\n this.position = input({ row: 0, col: 0 }, { alias: 'ssCellInput' });\n this.el = inject(ElementRef);\n this.isSelected = computed(() => this.ss.selection.isSelected(this.position()));\n this.isEditing = computed(() => this.ss.editor.isEditing(this.position()));\n }\n ngAfterViewInit() {\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 stopEditing() {\n this.ss.editor.stopEditing();\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SpreadSheetCellInput, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"17.1.0\", version: \"20.0.5\", type: SpreadSheetCellInput, isStandalone: true, selector: \"[ssCellInput]\", inputs: { position: { classPropertyName: \"position\", publicName: \"ssCellInput\", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { \"blur\": \"stopEditing()\" } }, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SpreadSheetCellInput, decorators: [{\n type: Directive,\n args: [{\n standalone: true,\n selector: '[ssCellInput]',\n host: {\n '(blur)': 'stopEditing()',\n }\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC1jZWxsLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BuZy1hdG9taWMvY29tbW9uL3NyYy9saWIvc2VydmljZXMvc3ByZWFkc2hlZXQvZGlyZWN0aXZlcy9ncmlkLWNlbGwuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBQzlHLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDOztBQWtCNUQsTUFBTSxPQUFPLGVBQWU7SUFXMUI7UUFWVSxPQUFFLEdBQUcsTUFBTSxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFDakMsT0FBRSxHQUFHLE1BQU0sQ0FBbUMsVUFBVSxDQUFDLENBQUM7UUFFMUQsYUFBUSxHQUFHLEtBQUssQ0FBNkIsRUFBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLEtBQUssRUFBRSxRQUFRLEVBQUMsQ0FBQyxDQUFDO1FBQ2xGLGFBQVEsR0FBRyxLQUFLLENBQVUsS0FBSyxFQUFFLEVBQUMsS0FBSyxFQUFFLGdCQUFnQixFQUFDLENBQUMsQ0FBQztRQUM1RCxZQUFPLEdBQUcsS0FBSyxDQUFjLElBQUksRUFBRSxFQUFDLEtBQUssRUFBRSxlQUFlLEVBQUMsQ0FBQyxDQUFDO1FBQzdELGVBQVUsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDM0UsY0FBUyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxD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QU0sQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUMvQixDQUFDOzhHQWhCVSxvQkFBb0I7a0dBQXBCLG9CQUFvQjs7MkZBQXBCLG9CQUFvQjtrQkFQaEMsU0FBUzttQkFBQztvQkFDVCxVQUFVLEVBQUUsSUFBSTtvQkFDaEIsUUFBUSxFQUFFLGVBQWU7b0JBQ3pCLElBQUksRUFBRTt3QkFDSixRQUFRLEVBQUUsZUFBZTtxQkFDMUI7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjb21wdXRlZCwgRGlyZWN0aXZlLCBlZmZlY3QsIEVsZW1lbnRSZWYsIGluamVjdCwgaW5wdXQsIHNpZ25hbCwgQWZ0ZXJWaWV3SW5pdCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBTcHJlYWRTaGVldFNlcnZpY2UgfSBmcm9tIFwiLi4vc3ByZWFkc2hlZXQuc2VydmljZVwiO1xuaW1wb3J0IHsgQ2VsbENvbnRleHQgfSBmcm9tIFwiLi4vbW9kZWxzL2NlbGwubW9kZWxcIjtcblxuQERpcmVjdGl2ZSh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHNlbGVjdG9yOiAnW3NzQ2VsbF0nLFxuICBob3N0OiB7XG4gICAgJ1tjbGFzcy5zZWxlY3RlZF0nOiAnc3Muc2VsZWN0aW9uLmlzU2VsZWN0ZWQocG9zaXRpb24oKSknLFxuICAgICdbY2xhc3MuZWRpdGluZ10nOiAnc3MuZWRpdG9yLmlzRWRpdGluZyhwb3NpdGlvbigpKScsXG4gICAgJyhtb3VzZWRvd24pJzogJ3NzLnNlbGVjdGlvbi5oYW5kbGVNb3VzZURvd24ocG9zaXRpb24oKSwgJGV2ZW50KScsXG4gICAgJyhtb3VzZXVwKSc6ICdzcy5zZWxlY3Rpb24uaGFuZGxlTW91c2VVcCgpJyxcbiAgICAnKG1vdXNlZW50ZXIpJzogJ3NzLnNlbGVjdGlvbi5oYW5kbGVNb3VzZUVudGVyKHBvc2l0aW9uKCkpJyxcbiAgICAnKGNsaWNrKSc6ICdzcy5zZWxlY3Rpb24uaGFuZGxlQ2xpY2socG9zaXRpb24oKSwgJGV2ZW50KScsXG4gICAgJyhkYmxjbGljayknOiAnb25EYkNsaWNrKCknLFxuICAgICdbYXR0ci5kYXRhLXJvd10nOiAncG9zaXRpb24oKS5yb3cnLFxuICAgICdbYXR0ci5kYXRhLWNvbF0nOiAncG9zaXRpb24oKS5jb2wnLFxuICB9XG59KVxuZXhwb3J0IGNsYXNzIFNwcmVhZFNoZWV0Q2VsbCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQge1xuICBwcm90ZWN0ZWQgc3MgPSBpbmplY3QoU3ByZWFkU2hlZXRTZXJ2aWNlKTtcbiAgcmVhZG9ubHkgZWwgPSBpbmplY3Q8RWxlbWVudFJlZjxIVE1MVGFibGVDZWxsRWxlbWVudD4+KEVsZW1lbnRSZWYpO1xuXG4gIHJlYWRvbmx5IHBvc2l0aW9uID0gaW5wdXQ8e3JvdzogbnVtYmVyLCBjb2w6IG51bWJlcn0+KHtyb3c6IDAsIGNvbDogMH0sIHthbGlhczogJ3NzQ2VsbCd9KTtcbiAgcmVhZG9ubHkgZWRpdGFibGUgPSBpbnB1dDxib29sZWFuPihmYWxzZSwge2FsaWFzOiAnc3NDZWxsRWRpdGFibGUnfSk7XG4gIHJlYWRvbmx5IGNvbnRleHQgPSBpbnB1dDxDZWxsQ29udGV4dD4obnVsbCwge2FsaWFzOiAnc3NDZWxsQ29udGV4dCd9KTtcbiAgcmVhZG9ubHkgaXNTZWxlY3RlZCA9IGNvbXB1dGVkKCgpID0+IHRoaXMuc3Muc2VsZWN0aW9uLmlzU2VsZWN0ZWQodGhpcy5wb3NpdGlvbigpKSk7XG4gIHJlYWRvbmx5IGlzRWRpdGluZyA9IGNvbXB1dGVkKCgpID0+IHRoaXMuc3MuZWRpdG9yLmlzRWRpdGluZyh0aGlzLnBvc2l0aW9uKCkpKTtcbiAgcmVhZG9ubHkgZnJhbWVFbCA9IHNpZ25hbDxIVE1MRGl2RWxlbWVudCB8IG51bGw+KG51bGwpO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICBpZiAoIXRoaXMuY29udGV4dCgpKSByZXR1cm47XG4gICAgICB0aGlzLnNzLmdyaWQuc2V0Q29udGV4dCh0aGlzLmNvbnRleHQoKSk7XG4gICAgfSk7XG5cbiAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgY29uc3QgaXNDdXJzb3IgPSB0aGlzLnNzLnNlbGVjdGlvbi5pc0N1cnNvclBvc2l0aW9uKHRoaXMucG9zaXRpb24oKSk7XG4gICAgICBsZXQgZnJhbWUgPSB0aGlzLmZyYW1lRWwoKTtcblxuICAgICAgaWYgKGlzQ3Vyc29yKSB7XG4gICAgICAgIGlmICghZnJhbWUpIHtcbiAgICAgICAgICBmcmFtZSA9IHRoaXMuYnVpbGRPdXRsaW5lRnJhbWUoKTtcbiAgICAgICAgICB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuYXBwZW5kQ2hpbGQoZnJhbWUpO1xuICAgICAgICAgIHRoaXMuZnJhbWVFbC5zZXQoZnJhbWUpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBmcmFtZT8ucmVtb3ZlKCk7XG4gICAgICAgIHRoaXMuZnJhbWVFbC5zZXQobnVsbCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBvbkRiQ2xpY2soKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmVkaXRhYmxlKCkpIHJldHVybjtcbiAgICB0aGlzLnNzLmVkaXRvci5zdGFydEVkaXRpbmcodGhpcy5wb3NpdGlvbigpKTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnNzLnNlbGVjdGlvbi5zZXRDZWxsKHRoaXMucG9zaXRpb24oKSwgdGhpcy5lbC5uYXRpdmVFbGVtZW50KTtcbiAgICBpZiAodGhpcy5pc1NlbGVjdGVkKCkgJiYgIXRoaXMuaXNFZGl0aW5nKCkpIHtcbiAgICAgIHRoaXMuc3Muc2VsZWN0aW9uLmZvY3VzKHRoaXMucG9zaXRpb24oKSk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGJ1aWxkT3V0bGluZUZyYW1lKCk6IEhUTUxEaXZFbGVtZW50IHtcbiAgICBjb25zdCBmcmFtZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgIGZyYW1lLmNsYXNzTGlzdC5hZGQoJ3NlbGVjdGlvbi1mcmFtZScpO1xuICAgIGZyYW1lLnN0eWxlLnBvc2l0aW9uID0gJ2Fic29sdXRlJztcbiAgICBmcmFtZS5zdHlsZS50b3AgPSAnMCc7XG4gICAgZnJhbWUuc3R5bGUubGVmdCA9ICcwJztcbiAgICBmcmFtZS5zdHlsZS53aWR0aCA9ICcxMDAlJztcbiAgICBmcmFtZS5zdHlsZS5oZWlnaHQgPSAnMTAwJSc7XG4gICAgZnJhbWUuc3R5bGUuYm9yZGVyID0gJzJweCBzb2xpZCAjMjE5NmYzJztcbiAgICBmcmFtZS5zdHlsZS5ib3JkZXJSYWRpdXMgPSAnNHB4JztcbiAgICBmcmFtZS5zdHlsZS5wb2ludGVyRXZlbnRzID0gJ25vbmUnO1xuICAgIGZyYW1lLnN0eWxlLmJveFNpemluZyA9ICdib3JkZXItYm94JztcbiAgICByZXR1cm4gZnJhbWU7XG4gIH1cblxuICBwcm90ZWN0ZWQgY3JlYXRlTGFiZWxFbGVtZW50KG9wdGlvbnM6IHtcbiAgICBsYWJlbDogc3RyaW5nXG4gICAgY29sb3I6IHN0cmluZ1xuICB9KSB7XG4gICAgY29uc3QgZWwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJyk7XG4gICAgZWwudGV4dENvbnRlbnQgPSBvcHRpb25zLmxhYmVsO1xuICAgIGVsLnN0eWxlLmJhY2tncm91bmRDb2xvciA9IGAke29wdGlvbnMuY29sb3J9YDtcbiAgICBlbC5zdHlsZS5jb2xvciA9ICcjZmZmJztcbiAgICBlbC5zdHlsZS5wYWRkaW5nID0gJzJweCA0cHgnO1xuICAgIGVsLnN0eWxlLnBvc2l0aW9uID0gJ2Fic29sdXRlJztcbiAgICBlbC5zdHlsZS5mb250U2l6ZSA9ICcxMHB4JztcbiAgICBlbC5zdHlsZS50b3AgPSAnMCc7XG4gICAgZWwuc3R5bGUubGVmdCA9ICcwJztcbiAgICBlbC5zdHlsZS56SW5kZXggPSAnOTk5OSc7XG4gICAgZWwuc3R5bGUubGluZUhlaWdodCA9ICcxLjVlbSc7XG4gICAgZWwuc3R5bGUud2hpdGVTcGFjZSA9ICdub3dyYXAnO1xuICAgIHRoaXMuZWwubmF0aXZlRWxlbWVudC5hcHBlbmRDaGlsZChlbCk7XG4gIH1cbn1cblxuXG5ARGlyZWN0aXZlKHtcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgc2VsZWN0b3I6ICdbc3NDZWxsSW5wdXRdJyxcbiAgaG9zdDoge1xuICAgICcoYmx1ciknOiAnc3RvcEVkaXRpbmcoKScsXG4gIH1cbn0pXG5leHBvcnQgY2xhc3MgU3ByZWFkU2hlZXRDZWxsSW5wdXQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0IHtcbiAgcHJvdGVjdGVkIHNzID0gaW5qZWN0KFNwcmVhZFNoZWV0U2VydmljZSk7XG4gIHJlYWRvbmx5IHBvc2l0aW9uID0gaW5wdXQ8e3JvdzogbnVtYmVyLCBjb2w6IG51bWJlcn0+KHtyb3c6IDAsIGNvbDogMH0sIHthbGlhczogJ3NzQ2VsbElucHV0J30pO1xuICByZWFkb25seSBlbCA9IGluamVjdDxFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQ+PihFbGVtZW50UmVmKTtcbiAgcmVhZG9ubHkgaXNTZWxlY3RlZCA9IGNvbXB1dGVkKCgpID0+IHRoaXMuc3Muc2VsZWN0aW9uLmlzU2VsZWN0ZWQodGhpcy5wb3NpdGlvbigpKSk7XG4gIHJlYWRvbmx5IGlzRWRpdGluZyA9IGNvbXB1dGVkKCgpID0+IHRoaXMuc3MuZWRpdG9yLmlzRWRpdGluZyh0aGlzLnBvc2l0aW9uKCkpKTtcblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgdGhpcy5zcy5lZGl0b3Iuc2V0SW5wdXQodGhpcy5lbC5uYXRpdmVFbGVtZW50LCB0aGlzLnBvc2l0aW9uKCkpO1xuICAgIGlmICh0aGlzLmlzU2VsZWN0ZWQoKSAmJiB0aGlzLmlzRWRpdGluZygpKSB7XG4gICAgICB0aGlzLnNzLmVkaXRvci5mb2N1cyh0aGlzLnBvc2l0aW9uKCkpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBzdG9wRWRpdGluZygpOiB2b2lkIHtcbiAgICB0aGlzLnNzLmVkaXRvci5zdG9wRWRpdGluZygpO1xuICB9XG59XG4iXX0=","import { Component, Directive, inject, output, ViewContainerRef, ElementRef, Renderer2, HostListener } from '@angular/core';\nimport { SpreadSheetService } from '../spreadsheet.service';\nimport * as i0 from \"@angular/core\";\nclass AutofillHandleComponent {\n constructor() {\n this.elementRef = inject((ElementRef));\n this.renderer = inject(Renderer2);\n this.handleMouseDown = output();\n }\n onMouseDown(e) {\n e.preventDefault();\n e.stopPropagation();\n this.handleMouseDown.emit(e);\n }\n show(rect, containerRect) {\n const el = this.elementRef.nativeElement;\n // ハンドルをセルの右下角に配置\n const handleSize = 14; // 8px + 2px*2 (border)\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 }\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 this.renderer.addClass(el, 'visible');\n }\n hide() {\n this.renderer.removeClass(this.elementRef.nativeElement, 'visible');\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: AutofillHandleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"20.0.5\", type: AutofillHandleComponent, isStandalone: true, selector: \"autofill-handle\", outputs: { handleMouseDown: \"handleMouseDown\" }, host: { listeners: { \"mousedown\": \"onMouseDown($event)\" } }, ngImport: i0, template: '', isInline: true, styles: [\":host{position:absolute;width:8px;height:8px;background-color:#2196f3;border:2px solid #ffffff;border-radius:50%;cursor:crosshair;z-index:10000;box-shadow:0 1px 3px #0000004d;transition:background-color .2s,opacity .2s;opacity:0;pointer-events:none}:host:hover{background-color:#1976d2}:host.visible{opacity:1;pointer-events:auto}\\n\"] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: AutofillHandleComponent, decorators: [{\n type: Component,\n args: [{ selector: 'autofill-handle', standalone: true, template: '', styles: [\":host{position:absolute;width:8px;height:8px;background-color:#2196f3;border:2px solid #ffffff;border-radius:50%;cursor:crosshair;z-index:10000;box-shadow:0 1px 3px #0000004d;transition:background-color .2s,opacity .2s;opacity:0;pointer-events:none}:host:hover{background-color:#1976d2}:host.visible{opacity:1;pointer-events:auto}\\n\"] }]\n }], propDecorators: { onMouseDown: [{\n type: HostListener,\n args: ['mousedown', ['$event']]\n }] } });\n/**\n * テーブル全体のオートフィル機能を管理するディレクティブ\n * セルディレクティブから直接呼び出される\n */\nexport class GridDataTableAutofill {\n constructor() {\n this.ss = inject(SpreadSheetService);\n this.viewContainerRef = inject(ViewContainerRef);\n this.renderer = inject(Renderer2);\n this.autofillStartPosition = null;\n this.lastAutofillContexts = null;\n this.cleanupFunctions = [];\n this.handleComponent = null;\n this.currentCell = null;\n // オートフィル完了イベント\n this.autofillComplete = output();\n this.currentPosition = null;\n // ハンドルコンポーネントを作成\n this.handleComponent = this.viewContainerRef.createComponent(AutofillHandleComponent);\n // ハンドルのmousedownイベントを設定\n this.handleComponent.instance.handleMouseDown.subscribe(() => {\n if (this.currentPosition) {\n this.startAutofill(this.currentPosition);\n }\n });\n }\n showHandle(cell, position) {\n this.currentCell = cell;\n this.currentPosition = position;\n // ハンドルを適切な親要素に配置(初回のみ)\n let scrollContainer = 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 if (scrollContainer) {\n this.renderer.appendChild(scrollContainer, this.handleComponent.location.nativeElement);\n }\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 }\n else {\n scrollContainer = this.handleComponent.location.nativeElement.parentElement;\n }\n const cellRect = cell.getBoundingClientRect();\n const containerRect = scrollContainer?.getBoundingClientRect();\n this.handleComponent?.instance.show(cellRect, containerRect);\n // スクロールイベントのリスナーを設定\n this.setupScrollListener();\n }\n hideHandle() {\n this.currentCell = null;\n this.currentPosition = null;\n this.handleComponent?.instance.hide();\n }\n onAutofillStart(position) {\n this.startAutofill(position);\n }\n setupScrollListener() {\n if (this.cleanupFunctions.some(fn => fn.name === 'scrollCleanup')) {\n return; // 既にリスナーが設定されている\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 const scrollContainer = this.currentCell?.closest('cdk-virtual-scroll-viewport') ||\n this.currentCell?.closest('.mat-table-container');\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 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 startAutofill(position) {\n this.autofillStartPosition = position;\n this.ss.autofill.startAutofill(position);\n // 既存のリスナーをクリーンアップ\n this.cleanup();\n // マウスイベントの設定\n const onMouseMove = this.onMouseMove.bind(this);\n const onMouseUp = this.onMouseUp.bind(this);\n document.addEventListener('mousemove', onMouseMove);\n document.addEventListener('mouseup', onMouseUp);\n this.cleanupFunctions.push(() => {\n document.removeEventListener('mousemove', onMouseMove);\n document.removeEventListener('mouseup', onMouseUp);\n });\n }\n onMouseMove(event) {\n if (!this.autofillStartPosition)\n return;\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 this.ss.autofill.updateAutofillRange({ row: targetRow, col: targetCol });\n }\n }\n onMouseUp() {\n const result = this.completeAutofill();\n if (result) {\n this.autofillComplete.emit(result);\n }\n this.autofillStartPosition = null;\n this.cleanup();\n }\n completeAutofill() {\n const sourcePosition = this.ss.autofill.getSourcePosition();\n const targetRange = this.ss.autofill.getTargetRange();\n if (!sourcePosition || !targetRange) {\n return null;\n }\n // GridServiceから実際のコンテキストを収集\n const contexts = [];\n const { start, end } = targetRange;\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 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 this.lastAutofillContexts = { sourceContext, targetContexts: contexts };\n // オートフィルモードをリセット\n this.ss.autofill.cancelAutofill();\n if (contexts.length > 0) {\n return {\n sourcePosition,\n targetRange,\n contexts: this.lastAutofillContexts\n };\n }\n return null;\n }\n getLastAutofillContexts() {\n return this.lastAutofillContexts;\n }\n cleanup() {\n this.cleanupFunctions.forEach(fn => fn());\n this.cleanupFunctions = [];\n }\n ngOnDestroy() {\n this.cleanup();\n if (this.handleComponent) {\n this.handleComponent.destroy();\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: GridDataTableAutofill, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.0.5\", type: GridDataTableAutofill, isStandalone: true, selector: \"[gridDataTableAutofill]\", outputs: { autofillComplete: \"autofillComplete\" }, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: GridDataTableAutofill, decorators: [{\n type: Directive,\n args: [{\n standalone: true,\n selector: '[gridDataTableAutofill]'\n }]\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC10YWJsZS1hdXRvZmlsbC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9AbmctYXRvbWljL2NvbW1vbi9zcmMvbGliL3NlcnZpY2VzL3NwcmVhZHNoZWV0L2RpcmVjdGl2ZXMvZ3JpZC10YWJsZS1hdXRvZmlsbC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFhLE1BQU0sRUFBRSxnQkFBZ0IsRUFBZ0IsVUFBVSxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckosT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7O0FBVTVELE1BOEJNLHVCQUF1QjtJQTlCN0I7UUErQlcsZUFBVSxHQUFHLE1BQU0sQ0FBQyxDQUFBLFVBQXVCLENBQUEsQ0FBQyxDQUFDO1FBQzlDLGFBQVEsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7UUFFckMsb0JBQWUsR0FBRyxNQUFNLEVBQWMsQ0FBQztLQThCeEM7SUEzQkMsV0FBVyxDQUFDLENBQWE7UUFDdkIsQ0FBQyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ25CLENBQUMsQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUNwQixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBRUQsSUFBSSxDQUFDLElBQWEsRUFBRSxhQUF1QjtRQUN6QyxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQztRQUN6QyxpQkFBaUI7UUFDakIsTUFBTSxVQUFVLEdBQUcsRUFBRSxDQUFDLENBQUMsdUJBQXVCO1FBRTlDLElBQUksYUFBYSxFQUFFLENBQUM7WUFDbEIsaUJBQWlCO1lBQ2pCLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBRSxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsS0FBSyxHQUFHLGFBQWEsQ0FBQyxJQUFJLEdBQUcsVUFBVSxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDNUYsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsRUFBRSxFQUFFLEtBQUssRUFBRSxHQUFHLElBQUksQ0FBQyxNQUFNLEdBQUcsYUFBYSxDQUFDLEdBQUcsR0FBRyxVQUFVLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM3RixDQUFDO2FBQU0sQ0FBQztZQUNOLDhCQUE4QjtZQUM5QixJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxFQUFFLEVBQUUsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLEtBQUssR0FBRyxVQUFVLElBQUksQ0FBQyxDQUFDO1lBQ25FLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBRSxLQUFLLEVBQUUsR0FBRyxJQUFJLENBQUMsTUFBTSxHQUFHLFVBQVUsSUFBSSxDQUFDLENBQUM7UUFDckUsQ0FBQztRQUVELElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBRSxTQUFTLENBQUMsQ0FBQztJQUN4QyxDQUFDO0lBRUQsSUFBSTtRQUNGLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQ3RFLENBQUM7OEdBakNHLHVCQUF1QjtrR0FBdkIsdUJBQXVCLHlMQTNCakIsRUFBRTs7MkZBMkJSLHVCQUF1QjtrQkE5QjVCLFNBQVM7K0JBQ0UsaUJBQWlCLGNBQ2YsSUFBSSxZQUNOLEVBQUU7OEJBa0NaLFdBQVc7c0JBRFYsWUFBWTt1QkFBQyxXQUFXLEVBQUUsQ0FBQyxRQUFRLENBQUM7O0FBOEJ2Qzs7O0dBR0c7QUFLSCxNQUFNLE9BQU8scUJBQXFCO0lBbUJoQztRQWxCUSxPQUFFLEdBQUcsTUFBTSxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFDaEMscUJBQWdCLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDNUMsYUFBUSxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUM3QiwwQkFBcUIsR0FBb0IsSUFBSSxDQUFDO1FBQzlDLHlCQUFvQixHQUEyQixJQUFJLENBQUM7UUFDcEQscUJBQWdCLEdBQW1CLEVBQUUsQ0FBQztRQUN0QyxvQkFBZSxHQUFpRCxJQUFJLENBQUM7UUFDckUsZ0JBQVcsR0FBdUIsSUFBSSxDQUFDO1FBRS9DLGVBQWU7UUFDTixxQkFBZ0IsR0FBRyxNQUFNLEVBSTlCLENBQUM7UUFFRyxvQkFBZSxHQUFvQixJQUFJLENBQUM7UUFHOUMsaUJBQWlCO1FBQ2pCLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGVBQWUsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO1FBRXRGLHdCQUF3QjtRQUN4QixJQUFJLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUMzRCxJQUFJLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztnQkFDekIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7WUFDM0MsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELFVBQVUsQ0FBQyxJQUFpQixFQUFFLFFBQWtCO1FBQzlDLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxlQUFlLEdBQUcsUUFBUSxDQUFDO1FBRWhDLHVCQUF1QjtRQUN2QixJQUFJLGVBQWUsR0FBdUIsSUFBSSxDQUFDO1FBQy9DLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLFFBQVEsQ0FBQyxhQUFhLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDaEUsMkJBQTJCO1lBQzNCLGVBQWUsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLDZCQUE2QixDQUFDO2dCQUM1QyxJQUFJLENBQUMsT0FBTyxDQUFDLHNCQUFzQixDQUFDO2dCQUNwQyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFLGFBQWEsQ0FBQztZQUV0RCxJQUFJLGVBQWUsRUFBRSxDQUFDO2dCQUNwQixJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxlQUFlLEVBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLENBQUM7WUFDMUYsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLGdEQUFnRDtnQkFDaEQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsQ0FBQztnQkFDdEYsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsYUFBYSxFQUFFLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQztZQUMzRixDQUFDO1FBQ0gsQ0FBQzthQUFNLENBQUM7WUFDTixlQUFlLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLGFBQTRCLENBQUM7UUFDN0YsQ0FBQztRQUVELE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1FBQzlDLE1BQU0sYUFBYSxHQUFHLGVBQWUsRUFBRSxxQkFBcUIsRUFBRSxDQUFDO1FBRS9ELElBQUksQ0FBQyxlQUFlLEVBQUUsUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsYUFBYSxDQUFDLENBQUM7UUFFN0Qsb0JBQW9CO1FBQ3BCLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO0lBQzdCLENBQUM7SUFFRCxVQUFVO1FBQ1IsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7UUFDeEIsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUM7UUFDNUIsSUFBSSxDQUFDLGVBQWUsRUFBRSxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDeEMsQ0FBQztJQUVELGVBQWUsQ0FBQyxRQUFrQjtRQUNoQyxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFFTyxtQkFBbUI7UUFDekIsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLElBQUksS0FBSyxlQUFlLENBQUMsRUFBRSxDQUFDO1lBQ2xFLE9BQU8sQ0FBQyxpQkFBaUI7UUFDM0IsQ0FBQztRQUVELE1BQU0sYUFBYSxHQUFHLEdBQUcsRUFBRTtZQUN6QixJQUFJLElBQUksQ0FBQyxXQUFXLElBQUksSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO2dCQUM3QyxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLHFCQUFxQixFQUFFLENBQUM7Z0JBQzFELE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQztnQkFDbkYsTUFBTSxhQUFhLEdBQUcsZ0JBQWdCLEVBQUUscUJBQXFCLEVBQUUsQ0FBQztnQkFDaEUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxhQUFhLENBQUMsQ0FBQztZQUM5RCxDQUFDO1FBQ0gsQ0FBQyxDQUFDO1FBRUYsbUJBQW1CO1FBQ25CLE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUUsT0FBTyxDQUFDLDZCQUE2QixDQUFDO1lBQ3pELElBQUksQ0FBQyxXQUFXLEVBQUUsT0FBTyxDQUFDLHNCQUFzQixDQUFDLENBQUM7UUFFekUsSUFBSSxlQUFlLEVBQUUsQ0FBQztZQUNwQixlQUFlLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxFQUFFLGFBQWEsRUFBRSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1lBQzdFLE1BQU0sT0FBTyxHQUFHLEdBQUcsRUFBRSxDQUFDLGVBQWUsQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLEVBQUUsYUFBYSxDQUFDLENBQUM7WUFDbkYsTUFBTSxDQUFDLGNBQWMsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUUsS0FBSyxFQUFFLGVBQWUsRUFBRSxDQUFDLENBQUM7WUFDbkUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN0QyxDQUFDO1FBRUQsZ0JBQWdCO1FBQ2hCLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLEVBQUUsYUFBYSxFQUFFLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFDcEUsTUFBTSxhQUFhLEdBQUcsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLG1CQUFtQixDQUFDLFFBQVEsRUFBRSxhQUFhLENBQUMsQ0FBQztRQUNoRixNQUFNLENBQUMsY0FBYyxDQUFDLGFBQWEsRUFBRSxNQUFNLEVBQUUsRUFBRSxLQUFLLEVBQUUsZUFBZSxFQUFFLENBQUMsQ0FBQztRQUN6RSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFFRCx3QkFBd0I7SUFDaEIsYUFBYSxDQUFDLFFBQWtCO1FBQ3RDLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxRQUFRLENBQUM7UUFDdEMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRXpDLGtCQUFrQjtRQUNsQixJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7UUFFZixhQUFhO1FBQ2IsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDaEQsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFNUMsUUFBUSxDQUFDLGdCQUFnQixDQUFDLFdBQVcsRUFBRSxXQUFXLENBQUMsQ0FBQztRQUNwRCxRQUFRLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBRWhELElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFO1lBQzlCLFFBQVEsQ0FBQyxtQkFBbUIsQ0FBQyxXQUFXLEVBQUUsV0FBVyxDQUFDLENBQUM7WUFDdkQsUUFBUSxDQUFDLG1CQUFtQixDQUFDLFNBQVMsRUFBRSxTQUFTLENBQUMsQ0FBQztRQUNyRCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTyxXQUFXLENBQUMsS0FBaUI7UUFDbkMsSUFBSSxDQUFDLElBQUksQ0FBQyxxQkFBcUI7WUFBRSxPQUFPO1FBRXhDLGdCQUFnQjtRQUNoQixNQUFNLE9BQU8sR0FBRyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDeEUsTUFBTSxJQUFJLEdBQUcsT0FBTyxFQUFFLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUM5QyxJQUFJLElBQUksRUFBRSxDQUFDO1lBQ1QsTUFBTSxTQUFTLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLElBQUksR0FBRyxDQUFDLENBQUM7WUFDakUsTUFBTSxTQUFTLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLElBQUksR0FBRyxDQUFDLENBQUM7WUFFakUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsbUJBQW1CLENBQUMsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDO1FBQzNFLENBQUM7SUFDSCxDQUFDO0lBRU8sU0FBUztRQUNmLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBQ3ZDLElBQUksTUFBTSxFQUFFLENBQUM7WUFDWCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3JDLENBQUM7UUFFRCxJQUFJLENBQUMscUJBQXFCLEdBQUcsSUFBSSxDQUFDO1FBQ2xDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNqQixDQUFDO0lBRU8sZ0JBQWdCO1FBQ3RCLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFDNUQsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsY0FBYyxFQUFFLENBQUM7UUFFdEQsSUFBSSxDQUFDLGNBQWMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ3BDLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztRQUVELDRCQUE0QjtRQUM1QixNQUFNLFFBQVEsR0FBZ0QsRUFBRSxDQUFDO1FBQ2pFLE1BQU0sRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLEdBQUcsV0FBVyxDQUFDO1FBRW5DLGVBQWU7UUFDZixNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDOUQsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQ25CLE9BQU8sQ0FBQyxJQUFJLENBQUMsMEJBQTBCLENBQUMsQ0FBQztZQUN6QyxJQUFJLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUNsQyxPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7UUFFRCxrQ0FBa0M7UUFDbEMsS0FBSyxJQUFJLEdBQUcsR0FBRyxLQUFLLENBQUMsR0FBRyxHQUFHLENBQUMsRUFBRSxHQUFHLElBQUksR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDO1lBQ3BELE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7WUFDdkUsSUFBSSxhQUFhLEVBQUUsQ0FBQztnQkFDbEIsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLFFBQVEsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsS0FBSyxDQUFDLEdBQUcsRUFBRSxFQUFFLE9BQU8sRUFBRSxhQUFhLEVBQUUsQ0FBQyxDQUFDO1lBQy9FLENBQUM7UUFDSCxDQUFDO1FBRUQsY0FBYztRQUNkLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxFQUFFLGFBQWEsRUFBRSxjQUFjLEVBQUUsUUFBUSxFQUFFLENBQUM7UUFFeEUsaUJBQWlCO1FBQ2pCLElBQUksQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBRWxDLElBQUksUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUN4QixPQUFPO2dCQUNMLGNBQWM7Z0JBQ2QsV0FBVztnQkFDWCxRQUFRLEVBQUUsSUFBSSxDQUFDLG9CQUFvQjthQUNwQyxDQUFDO1FBQ0osQ0FBQztRQUVELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELHVCQUF1QjtRQUNyQixPQUFPLElBQUksQ0FBQyxvQkFBb0IsQ0FBQztJQUNuQyxDQUFDO0lBRU8sT0FBTztRQUNiLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQzFDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxFQUFFLENBQUM7SUFDN0IsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDZixJQUFJLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUN6QixJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ2pDLENBQUM7SUFDSCxDQUFDOzhHQWpOVSxxQkFBcUI7a0dBQXJCLHFCQUFxQjs7MkZBQXJCLHFCQUFxQjtrQkFKakMsU0FBUzttQkFBQztvQkFDVCxVQUFVLEVBQUUsSUFBSTtvQkFDaEIsUUFBUSxFQUFFLHlCQUF5QjtpQkFDcEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIERpcmVjdGl2ZSwgaW5qZWN0LCBPbkRlc3Ryb3ksIG91dHB1dCwgVmlld0NvbnRhaW5lclJlZiwgQ29tcG9uZW50UmVmLCBFbGVtZW50UmVmLCBSZW5kZXJlcjIsIEhvc3RMaXN0ZW5lciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3ByZWFkU2hlZXRTZXJ2aWNlIH0gZnJvbSAnLi4vc3ByZWFkc2hlZXQuc2VydmljZSc7XG5cbnR5cGUgUG9zaXRpb24gPSB7IHJvdzogbnVtYmVyOyBjb2w6IG51bWJlciB9O1xudHlwZSBSYW5nZSA9IHsgc3RhcnQ6IFBvc2l0aW9uOyBlbmQ6IFBvc2l0aW9uIH07XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXV0b2ZpbGxDb250ZXh0IHtcbiAgc291cmNlQ29udGV4dDogYW55O1xuICB0YXJnZXRDb250ZXh0czogQXJyYXk8eyBwb3NpdGlvbjogUG9zaXRpb247IGNvbnRleHQ6IGFueSB9Pjtcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXV0b2ZpbGwtaGFuZGxlJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgdGVtcGxhdGU6ICcnLFxuICBzdHlsZXM6IFtgXG4gICAgOmhvc3Qge1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgd2lkdGg6IDhweDtcbiAgICAgIGhlaWdodDogOHB4O1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzIxOTZGMztcbiAgICAgIGJvcmRlcjogMnB4IHNvbGlkICNmZmZmZmY7XG4gICAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgICBjdXJzb3I6IGNyb3NzaGFpcjtcbiAgICAgIHotaW5kZXg6IDEwMDAwO1xuICAgICAgYm94LXNoYWRvdzogMCAxcHggM3B4IHJnYmEoMCwgMCwgMCwgMC4zKTtcbiAgICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMC4ycywgb3BhY2l0eSAwLjJzO1xuICAgICAgb3BhY2l0eTogMDtcbiAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgICAgXG4gICAgICAmOmhvdmVyIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzE5NzZEMjtcbiAgICAgIH1cbiAgICAgIFxuICAgICAgJi52aXNpYmxlIHtcbiAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgICAgcG9pbnRlci1ldmVudHM6IGF1dG87XG4gICAgICB9XG4gICAgfVxuICBgXVxufSlcbmNsYXNzIEF1dG9maWxsSGFuZGxlQ29tcG9uZW50IHtcbiAgcmVhZG9ubHkgZWxlbWVudFJlZiA9IGluamVjdChFbGVtZW50UmVmPEhUTUxFbGVtZW50Pik7XG4gIHByaXZhdGUgcmVuZGVyZXIgPSBpbmplY3QoUmVuZGVyZXIyKTtcbiAgXG4gIGhhbmRsZU1vdXNlRG93biA9IG91dHB1dDxNb3VzZUV2ZW50PigpO1xuICBcbiAgQEhvc3RMaXN0ZW5lcignbW91c2Vkb3duJywgWyckZXZlbnQnXSlcbiAgb25Nb3VzZURvd24oZTogTW91c2VFdmVudCk6IHZvaWQge1xuICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIHRoaXMuaGFuZGxlTW91c2VEb3duLmVtaXQoZSk7XG4gIH1cblxuICBzaG93KHJlY3Q6IERPTVJlY3QsIGNvbnRhaW5lclJlY3Q/OiBET01SZWN0KSB7XG4gICAgY29uc3QgZWwgPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcbiAgICAvLyDjg4/jg7Pjg4njg6vjgpLjgrvjg6vjga7lj7PkuIvop5LjgavphY3nva5cbiAgICBjb25zdCBoYW5kbGVTaXplID0gMTQ7IC8vIDhweCArIDJweCoyIChib3JkZXIpXG4gICAgXG4gICAgaWYgKGNvbnRhaW5lclJlY3QpIHtcbiAgICAgIC8vIOOCs+ODs+ODhuODiuOBi+OCieOBruebuOWvvuS9jee9ruOCkuioiOeul1xuICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShlbCwgJ2xlZnQnLCBgJHtyZWN0LnJpZ2h0IC0gY29udGFpbmVyUmVjdC5sZWZ0IC0gaGFuZGxlU2l6ZSAvIDJ9cHhgKTtcbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoZWwsICd0b3AnLCBgJHtyZWN0LmJvdHRvbSAtIGNvbnRhaW5lclJlY3QudG9wIC0gaGFuZGxlU2l6ZSAvIDJ9cHhgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gcG9zaXRpb246IGZpeGVk44Gu5aC05ZCI77yI44OV44Kp44O844Or44OQ44OD44Kv77yJXG4gICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKGVsLCAnbGVmdCcsIGAke3JlY3QucmlnaHQgLSBoYW5kbGVTaXplfXB4YCk7XG4gICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKGVsLCAndG9wJywgYCR7cmVjdC5ib3R0b20gLSBoYW5kbGVTaXplfXB4YCk7XG4gICAgfVxuICAgIFxuICAgIHRoaXMucmVuZGVyZXIuYWRkQ2xhc3MoZWwsICd2aXNpYmxlJyk7XG4gIH1cbiAgXG4gIGhpZGUoKSB7XG4gICAgdGhpcy5yZW5kZXJlci5yZW1vdmVDbGFzcyh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgJ3Zpc2libGUnKTtcbiAgfVxufVxuXG4vKipcbiAqIOODhuODvOODluODq+WFqOS9k+OBruOCquODvOODiOODleOCo+ODq+apn+iDveOCkueuoeeQhuOBmeOCi+ODh+OCo+ODrOOCr+ODhuOCo+ODllxuICog44K744Or44OH44Kj44Os44Kv44OG44Kj44OW44GL44KJ55u05o6l5ZG844Gz5Ye644GV44KM44KLXG4gKi9cbkBEaXJlY3RpdmUoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICBzZWxlY3RvcjogJ1tncmlkRGF0YVRhYmxlQXV0b2ZpbGxdJ1xufSlcbmV4cG9ydCBjbGFzcyBHcmlkRGF0YVRhYmxlQXV0b2ZpbGwgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICBwcml2YXRlIHNzID0gaW5qZWN0KFNwcmVhZFNoZWV0U2VydmljZSk7XG4gIHByaXZhdGUgdmlld0NvbnRhaW5lclJlZiA9IGluamVjdChWaWV3Q29udGFpbmVyUmVmKTtcbiAgcHJpdmF0ZSByZW5kZXJlciA9IGluamVjdChSZW5kZXJlcjIpO1xuICBwcml2YXRlIGF1dG9maWxsU3RhcnRQb3NpdGlvbjogUG9zaXRpb24gfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBsYXN0QXV0b2ZpbGxDb250ZXh0czogQXV0b2ZpbGxDb250ZXh0IHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgY2xlYW51cEZ1bmN0aW9uczogKCgpID0+IHZvaWQpW10gPSBbXTtcbiAgcHJpdmF0ZSBoYW5kbGVDb21wb25lbnQ6IENvbXBvbmVudFJlZjxBdXRvZmlsbEhhbmRsZUNvbXBvbmVudD4gfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBjdXJyZW50Q2VsbDogSFRNTEVsZW1lbnQgfCBudWxsID0gbnVsbDtcbiAgXG4gIC8vIOOCquODvOODiOODleOCo+ODq+WujOS6huOCpOODmeODs+ODiFxuICByZWFkb25seSBhdXRvZmlsbENvbXBsZXRlID0gb3V0cHV0PHtcbiAgICBzb3VyY2VQb3NpdGlvbjogUG9zaXRpb247XG4gICAgdGFyZ2V0UmFuZ2U6IFJhbmdlO1xuICAgIGNvbnRleHRzOiBBdXRvZmlsbENvbnRleHQ7XG4gIH0+KCk7XG5cbiAgcHJpdmF0ZSBjdXJyZW50UG9zaXRpb246IFBvc2l0aW9uIHwgbnVsbCA9IG51bGw7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgLy8g44OP44Oz44OJ44Or44Kz44Oz44Od44O844ON44Oz44OI44KS5L2c5oiQXG4gICAgdGhpcy5oYW5kbGVDb21wb25lbnQgPSB0aGlzLnZpZXdDb250YWluZXJSZWYuY3JlYXRlQ29tcG9uZW50KEF1dG9maWxsSGFuZGxlQ29tcG9uZW50KTtcbiAgICBcbiAgICAvLyDjg4/jg7Pjg4njg6vjga5tb3VzZWRvd27jgqTjg5njg7Pjg4jjgpLoqK3lrppcbiAgICB0aGlzLmhhbmRsZUNvbXBvbmVudC5pbnN0YW5jZS5oYW5kbGVNb3VzZURvd24uc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIGlmICh0aGlzLmN1cnJlbnRQb3NpdGlvbikge1xuICAgICAgICB0aGlzLnN0YXJ0QXV0b2ZpbGwodGhpcy5jdXJyZW50UG9zaXRpb24pO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgc2hvd0hhbmRsZShjZWxsOiBIVE1MRWxlbWVudCwgcG9zaXRpb246IFBvc2l0aW9uKTogdm9pZCB7XG4gICAgdGhpcy5jdXJyZW50Q2VsbCA9IGNlbGw7XG4gICAgdGhpcy5jdXJyZW50UG9zaXRpb24gPSBwb3NpdGlvbjtcbiAgICBcbiAgICAvLyDjg4/jg7Pjg4njg6vjgpLpganliIfjgaropqropoHntKDjgavphY3nva7vvIjliJ3lm57jga7jgb/vvIlcbiAgICBsZXQgc2Nyb2xsQ29udGFpbmVyOiBIVE1MRWxlbWVudCB8IG51bGwgPSBudWxsO1xuICAgIGlmICghdGhpcy5oYW5kbGVDb21wb25lbnQ/LmxvY2F0aW9uLm5hdGl2ZUVsZW1lbnQucGFyZW50RWxlbWVudCkge1xuICAgICAgLy8g44K544Kv44Ot44O844Or44OT44Ol44O844Od44O844OI44GL44CB44OG44O844OW44Or44Kz44Oz44OG44OK44KS5o6i44GZXG4gICAgICBzY3JvbGxDb250YWluZXIgPSBjZWxsLmNsb3Nlc3QoJ2Nkay12aXJ0dWFsLXNjcm9sbC12aWV3cG9ydCcpIHx8IFxuICAgICAgICAgICAgICAgICAgICAgICBjZWxsLmNsb3Nlc3QoJy5tYXQtdGFibGUtY29udGFpbmVyJykgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgY2VsbC5jbG9zZXN0KCd0YWJsZScpPy5wYXJlbnRFbGVtZW50O1xuICAgICAgXG4gICAgICBpZiAoc2Nyb2xsQ29udGFpbmVyKSB7XG4gICAgICAgIHRoaXMucmVuZGVyZXIuYXBwZW5kQ2hpbGQoc2Nyb2xsQ29udGFpbmVyLCB0aGlzLmhhbmRsZUNvbXBvbmVudC5sb2NhdGlvbi5uYXRpdmVFbGVtZW50KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIOODleOCqeODvOODq+ODkOODg+OCrzogZG9jdW1lbnQuYm9keeOBq+i/veWKoO+8iHBvc2l0aW9uOiBmaXhlZOODouODvOODie+8iVxuICAgICAgICB0aGlzLnJlbmRlcmVyLmFwcGVuZENoaWxkKGRvY3VtZW50LmJvZHksIHRoaXMuaGFuZGxlQ29tcG9uZW50LmxvY2F0aW9uLm5hdGl2ZUVsZW1lbnQpO1xuICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuaGFuZGxlQ29tcG9uZW50LmxvY2F0aW9uLm5hdGl2ZUVsZW1lbnQsICdwb3NpdGlvbicsICdmaXhlZCcpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBzY3JvbGxDb250YWluZXIgPSB0aGlzLmhhbmRsZUNvbXBvbmVudC5sb2NhdGlvbi5uYXRpdmVFbGVtZW50LnBhcmVudEVsZW1lbnQgYXMgSFRNTEVsZW1lbnQ7XG4gICAgfVxuICAgIFxuICAgIGNvbnN0IGNlbGxSZWN0ID0gY2VsbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICBjb25zdCBjb250YWluZXJSZWN0ID0gc2Nyb2xsQ29udGFpbmVyPy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICBcbiAgICB0aGlzLmhhbmRsZUNvbXBvbmVudD8uaW5zdGFuY2Uuc2hvdyhjZWxsUmVjdCwgY29udGFpbmVyUmVjdCk7XG4gICAgXG4gICAgLy8g44K544Kv44Ot44O844Or44Kk44OZ44Oz44OI44Gu44Oq44K544OK44O844KS6Kit5a6aXG4gICAgdGhpcy5zZXR1cFNjcm9sbExpc3RlbmVyKCk7XG4gIH1cblxuICBoaWRlSGFuZGxlKCk6IHZvaWQge1xuICAgIHRoaXMuY3VycmVudENlbGwgPSBudWxsO1xuICAgIHRoaXMuY3VycmVudFBvc2l0aW9uID0gbnVsbDtcbiAgICB0aGlzLmhhbmRsZUNvbXBvbmVudD8uaW5zdGFuY2UuaGlkZSgpO1xuICB9XG5cbiAgb25BdXRvZmlsbFN0YXJ0KHBvc2l0aW9uOiBQb3NpdGlvbik6IHZvaWQge1xuICAgIHRoaXMuc3RhcnRBdXRvZmlsbChwb3NpdGlvbik7XG4gIH1cbiAgXG4gIHByaXZhdGUgc2V0dXBTY3JvbGxMaXN0ZW5lcigpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5jbGVhbnVwRnVuY3Rpb25zLnNvbWUoZm4gPT4gZm4ubmFtZSA9PT0gJ3Njcm9sbENsZWFudXAnKSkge1xuICAgICAgcmV0dXJuOyAvLyDml6Ljgavjg6rjgrnjg4rjg7zjgYzoqK3lrprjgZXjgozjgabjgYTjgotcbiAgICB9XG4gICAgXG4gICAgY29uc3Qgc2Nyb2xsSGFuZGxlciA9ICgpID0+IHtcbiAgICAgIGlmICh0aGlzLmN1cnJlbnRDZWxsICYmIHRoaXMuaGFuZGxlQ29tcG9uZW50KSB7XG4gICAgICAgIGNvbnN0IGNlbGxSZWN0ID0gdGhpcy5jdXJyZW50Q2VsbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgY29uc3QgY29udGFpbmVyRWxlbWVudCA9IHRoaXMuaGFuZGxlQ29tcG9uZW50LmxvY2F0aW9uLm5hdGl2ZUVsZW1lbnQucGFyZW50RWxlbWVudDtcbiAgICAgICAgY29uc3QgY29udGFpbmVyUmVjdCA9IGNvbnRhaW5lckVsZW1lbnQ/LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICB0aGlzLmhhbmRsZUNvbXBvbmVudC5pbnN0YW5jZS5zaG93KGNlbGxSZWN0LCBjb250YWluZXJSZWN0KTtcbiAgICAgIH1cbiAgICB9O1xuICAgIFxuICAgIC8vIOOCueOCr+ODreODvOODq+WPr+iDveOBquimquimgee0oOOCkuimi+OBpOOBkeOCi1xuICAgIGNvbnN0IHNjcm9sbENvbnRhaW5lciA9IHRoaXMuY3VycmVudENlbGw/LmNsb3Nlc3QoJ2Nkay12aXJ0dWFsLXNjcm9sbC12aWV3cG9ydCcpIHx8IFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50Q2VsbD8uY2xvc2VzdCgnLm1hdC10YWJsZS1jb250YWluZXInKTtcbiAgICBcbiAgICBpZiAoc2Nyb2xsQ29udGFpbmVyKSB7XG4gICAgICBzY3JvbGxDb250YWluZXIuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgc2Nyb2xsSGFuZGxlciwgeyBwYXNzaXZlOiB0cnVlIH0pO1xuICAgICAgY29uc3QgY2xlYW51cCA9ICgpID0+IHNjcm9sbENvbnRhaW5lci5yZW1vdmVFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBzY3JvbGxIYW5kbGVyKTtcbiAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShjbGVhbnVwLCAnbmFtZScsIHsgdmFsdWU6ICdzY3JvbGxDbGVhbnVwJyB9KTtcbiAgICAgIHRoaXMuY2xlYW51cEZ1bmN0aW9ucy5wdXNoKGNsZWFudXApO1xuICAgIH1cbiAgICBcbiAgICAvLyDjgqbjgqPjg7Pjg4njgqbjgrnjgq/jg63jg7zjg6vjgoLnm6PoppZcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgc2Nyb2xsSGFuZGxlciwgeyBwYXNzaXZlOiB0cnVlIH0pO1xuICAgIGNvbnN0IHdpbmRvd0NsZWFudXAgPSAoKSA9PiB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgc2Nyb2xsSGFuZGxlcik7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHdpbmRvd0NsZWFudXAsICduYW1lJywgeyB2YWx1ZTogJ3Njcm9sbENsZWFudXAnIH0pO1xuICAgIHRoaXMuY2xlYW51cEZ1bmN0aW9ucy5wdXNoKHdpbmRvd0NsZWFudXApO1xuICB9XG4gIFxuICAvLyDjgrvjg6vjg4fjgqPjg6zjgq/jg4bjgqPjg5bjgYvjgonlkbzjgbPlh7rjgZXjgozjgovjg6Hjgr3jg4Pjg4lcbiAgcHJpdmF0ZSBzdGFydEF1dG9maWxsKHBvc2l0aW9uOiBQb3NpdGlvbik6IHZvaWQge1xuICAgIHRoaXMuYXV0b2ZpbGxTdGFydFBvc2l0aW9uID0gcG9zaXRpb247XG4gICAgdGhpcy5zcy5hdXRvZmlsbC5zdGFydEF1dG9maWxsKHBvc2l0aW9uKTtcbiAgICBcbiAgICAvLyDml6LlrZjjga7jg6rjgrnjg4rjg7zjgpLjgq/jg6rjg7zjg7PjgqLjg4Pjg5dcbiAgICB0aGlzLmNsZWFudXAoKTtcbiAgICBcbiAgICAvLyDjg57jgqbjgrnjgqTjg5njg7Pjg4jjga7oqK3lrppcbiAgICBjb25zdCBvbk1vdXNlTW92ZSA9IHRoaXMub25Nb3VzZU1vdmUuYmluZCh0aGlzKTtcbiAgICBjb25zdCBvbk1vdXNlVXAgPSB0aGlzLm9uTW91c2VVcC5iaW5kKHRoaXMpO1xuICAgIFxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIG9uTW91c2VNb3ZlKTtcbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgb25Nb3VzZVVwKTtcbiAgICBcbiAgICB0aGlzLmNsZWFudXBGdW5jdGlvbnMucHVzaCgoKSA9PiB7XG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZW1vdmUnLCBvbk1vdXNlTW92ZSk7XG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgb25Nb3VzZVVwKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgb25Nb3VzZU1vdmUoZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuYXV0b2ZpbGxTdGFydFBvc2l0aW9uKSByZXR1cm47XG4gICAgXG4gICAgLy8g44OJ44Op44OD44Kw5Lit44Gu44OX44Os44OT44Ol44O85Yem55CGXG4gICAgY29uc3QgZWxlbWVudCA9IGRvY3VtZW50LmVsZW1lbnRGcm9tUG9pbnQoZXZlbnQuY2xpZW50WCwgZXZlbnQuY2xpZW50WSk7XG4gICAgY29uc3QgY2VsbCA9IGVsZW1lbnQ/LmNsb3Nlc3QoJ3RkW21hdC1jZWxsXScpO1xuICAgIGlmIChjZWxsKSB7XG4gICAgICBjb25zdCB0YXJnZXRSb3cgPSBwYXJzZUludChjZWxsLmdldEF0dHJpYnV0ZSgnZGF0YS1yb3cnKSB8fCAnMCcpO1xuICAgICAgY29uc3QgdGFyZ2V0Q29sID0gcGFyc2VJbnQoY2VsbC5nZXRBdHRyaWJ1dGUoJ2RhdGEtY29sJykgfHwgJzAnKTtcbiAgICAgIFxuICAgICAgdGhpcy5zcy5hdXRvZmlsbC51cGRhdGVBdXRvZmlsbFJhbmdlKHsgcm93OiB0YXJnZXRSb3csIGNvbDogdGFyZ2V0Q29sIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgb25Nb3VzZVVwKCk6IHZvaWQge1xuICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMuY29tcGxldGVBdXRvZmlsbCgpO1xuICAgIGlmIChyZXN1bHQpIHtcbiAgICAgIHRoaXMuYXV0b2ZpbGxDb21wbGV0ZS5lbWl0KHJlc3VsdCk7XG4gICAgfVxuICAgIFxuICAgIHRoaXMuYXV0b2ZpbGxTdGFydFBvc2l0aW9uID0gbnVsbDtcbiAgICB0aGlzLmNsZWFudXAoKTtcbiAgfVxuXG4gIHByaXZhdGUgY29tcGxldGVBdXRvZmlsbCgpOiB7IHNvdXJjZVBvc2l0aW9uOiBQb3NpdGlvbjsgdGFyZ2V0UmFuZ2U6IFJhbmdlOyBjb250ZXh0czogQXV0b2ZpbGxDb250ZXh0IH0gfCBudWxsIHtcbiAgICBjb25zdCBzb3VyY2VQb3NpdGlvbiA9IHRoaXMuc3MuYXV0b2ZpbGwuZ2V0U291cmNlUG9zaXRpb24oKTtcbiAgICBjb25zdCB0YXJnZXRSYW5nZSA9IHRoaXMuc3MuYXV0b2ZpbGwuZ2V0VGFyZ2V0UmFuZ2UoKTtcbiAgICBcbiAgICBpZiAoIXNvdXJjZVBvc2l0aW9uIHx8ICF0YXJnZXRSYW5nZSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgLy8gR3JpZFNlcnZpY2XjgYvjgonlrp/pmpvjga7jgrPjg7Pjg4bjgq3jgrnjg4jjgpLlj47pm4ZcbiAgICBjb25zdCBjb250ZXh0czogQXJyYXk8eyBwb3NpdGlvbjogUG9zaXRpb247IGNvbnRleHQ6IGFueSB9PiA9IFtdO1xuICAgIGNvbnN0IHsgc3RhcnQsIGVuZCB9ID0gdGFyZ2V0UmFuZ2U7XG4gICAgXG4gICAgLy8g44K944O844K544Kz44Oz44OG44Kt44K544OI44KS5Y+W5b6XXG4gICAgY29uc3Qgc291cmNlQ29udGV4dCA9IHRoaXMuc3MuZ3JpZC5nZXRDb250ZXh0KHNvdXJjZVBvc2l0aW9uKTtcbiAgICBpZiAoIXNvdXJjZUNvbnRleHQpIHtcbiAgICAgIGNvbnNvbGUud2FybignU291cmNlIGNvbnRleHQgbm90IGZvdW5kJyk7XG4gICAgICB0aGlzLnNzLmF1dG9maWxsLmNhbmNlbEF1dG9maWxsKCk7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgXG4gICAgLy8g5b2x6Z+/44KS5Y+X44GR44KL44K744Or44Gu44Kz44Oz44OG44Kt44K544OI44KS5Y+O6ZuG77yI6KGo56S644GV44KM44Gm44GE44KL44K744Or44Gu44G/77yJXG4gICAgZm9yIChsZXQgcm93ID0gc3RhcnQucm93ICsgMTsgcm93IDw9IGVuZC5yb3c7IHJvdysrKSB7XG4gICAgICBjb25zdCB0YXJnZXRDb250ZXh0ID0gdGhpcy5zcy5ncmlkLmdldENvbnRleHQoeyByb3csIGNvbDogc3RhcnQuY29sIH0pO1xuICAgICAgaWYgKHRhcmdldENvbnRleHQpIHtcbiAgICAgICAgY29udGV4dHMucHVzaCh7IHBvc2l0aW9uOiB7IHJvdywgY29sOiBzdGFydC5jb2wgfSwgY29udGV4dDogdGFyZ2V0Q29udGV4dCB9KTtcbiAgICAgIH1cbiAgICB9XG4gICAgXG4gICAgLy8g44Kz44Oz44OG44Kt44K544OI5oOF5aCx44KS5L+d5a2YXG4gICAgdGhpcy5sYXN0QXV0b2ZpbGxDb250ZXh0cyA9IHsgc291cmNlQ29udGV4dCwgdGFyZ2V0Q29udGV4dHM6IGNvbnRleHRzIH07XG4gICAgXG4gICAgLy8g44Kq44O844OI44OV44Kj44Or44Oi44O844OJ44KS44Oq44K744OD44OIXG4gICAgdGhpcy5zcy5hdXRvZmlsbC5jYW5jZWxBdXRvZmlsbCgpO1xuICAgIFxuICAgIGlmIChjb250ZXh0cy5sZW5ndGggPiAwKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBzb3VyY2VQb3NpdGlvbixcbiAgICAgICAgdGFyZ2V0UmFuZ2UsXG4gICAgICAgIGNvbnRleHRzOiB0aGlzLmxhc3RBdXRvZmlsbENvbnRleHRzXG4gICAgICB9O1xuICAgIH1cbiAgICBcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGdldExhc3RBdXRvZmlsbENvbnRleHRzKCk6IEF1dG9maWxsQ29udGV4dCB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLmxhc3RBdXRvZmlsbENvbnRleHRzO1xuICB9XG5cbiAgcHJpdmF0ZSBjbGVhbnVwKCk6IHZvaWQge1xuICAgIHRoaXMuY2xlYW51cEZ1bmN0aW9ucy5mb3JFYWNoKGZuID0+IGZuKCkpO1xuICAgIHRoaXMuY2xlYW51cEZ1bmN0aW9ucyA9IFtdO1xuICB9XG4gIFxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmNsZWFudXAoKTtcbiAgICBpZiAodGhpcy5oYW5kbGVDb21wb25lbnQpIHtcbiAgICAgIHRoaXMuaGFuZGxlQ29tcG9uZW50LmRlc3Ryb3koKTtcbiAgICB9XG4gIH1cbn0iXX0=","import { Directive, effect, ElementRef, inject, input, computed } from \"@angular/core\";\nimport { SpreadSheetService } from \"../spreadsheet.service\";\nimport { GridDataTableAutofill } from \"./grid-table-autofill.directive\";\nimport * as i0 from \"@angular/core\";\nexport class SpreadSheetCellAutofill {\n constructor() {\n this.ss = inject(SpreadSheetService);\n this.el = inject(ElementRef);\n this.table = inject(GridDataTableAutofill);\n this.position = input({ row: 0, col: 0 }, { alias: 'gridDataCellAutofill' });\n this.enabled = input(true, { alias: 'gridDataCellAutofillEnabled' });\n this.shouldShow = computed(() => this.enabled() &&\n this.ss.selection.isCursorPosition(this.position()) &&\n !this.ss.editor.isEditing(this.position()) &&\n !this.ss.autofill.isAutofillMode());\n // requestAnimationFrameを使用して、DOMの更新後に実行\n effect(() => {\n if (this.shouldShow()) {\n requestAnimationFrame(() => {\n this.table.showHandle(this.el.nativeElement, this.position());\n });\n }\n else if (!this.shouldShow() && this.ss.selection.isCursorPosition(this.position())) {\n // 現在のセルがカーソル位置だが表示条件を満たさない場合のみ非表示\n this.table.hideHandle();\n }\n });\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SpreadSheetCellAutofill, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"17.1.0\", version: \"20.0.5\", type: SpreadSheetCellAutofill, isStandalone: true, selector: \"[gridDataCellAutofill]\", inputs: { position: { classPropertyName: \"position\", publicName: \"gridDataCellAutofill\", isSignal: true, isRequired: false, transformFunction: null }, enabled: { classPropertyName: \"enabled\", publicName: \"gridDataCellAutofillEnabled\", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SpreadSheetCellAutofill, decorators: [{\n type: Directive,\n args: [{ standalone: true, selector: '[gridDataCellAutofill]' }]\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC1jZWxsLWF1dG9maWxsLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BuZy1hdG9taWMvY29tbW9uL3NyYy9saWIvc2VydmljZXMvc3ByZWFkc2hlZXQvZGlyZWN0aXZlcy9ncmlkLWNlbGwtYXV0b2ZpbGwuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2RixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUM1RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQzs7QUFHeEUsTUFBTSxPQUFPLHVCQUF1QjtJQWFsQztRQVpVLE9BQUUsR0FBRyxNQUFNLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUNqQyxPQUFFLEdBQUcsTUFBTSxDQUFtQyxVQUFVLENBQUMsQ0FBQztRQUMxRCxVQUFLLEdBQUcsTUFBTSxDQUFDLHFCQUFxQixDQUFDLENBQUM7UUFFdEMsYUFBUSxHQUFHLEtBQUssQ0FBNkIsRUFBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLEtBQUssRUFBRSxzQkFBc0IsRUFBQyxDQUFDLENBQUM7UUFDaEcsWUFBTyxHQUFHLEtBQUssQ0FBVSxJQUFJLEVBQUUsRUFBQyxLQUFLLEVBQUUsNkJBQTZCLEVBQUMsQ0FBQyxDQUFDO1FBRXZFLGVBQVUsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNqRCxJQUFJLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDbkQsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQzFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQztRQUdwQyx3Q0FBd0M7UUFDeEMsTUFBTSxDQUFDLEdBQUcsRUFBRTtZQUNWLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUM7Z0JBQ3RCLHFCQUFxQixDQUFDLEdBQUcsRUFBRTtvQkFDekIsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7Z0JBQ2hFLENBQUMsQ0FBQyxDQUFDO1lBQ0wsQ0FBQztpQkFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJLElBQUksQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxFQUFFLENBQUM7Z0JBQ3JGLGtDQUFrQztnQkFDbEMsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUMxQixDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOzhHQXpCVSx1QkFBdUI7a0dBQXZCLHVCQUF1Qjs7MkZBQXZCLHVCQUF1QjtrQkFEbkMsU0FBUzttQkFBQyxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLHdCQUF3QixFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBlZmZlY3QsIEVsZW1lbnRSZWYsIGluamVjdCwgaW5wdXQsIGNvbXB1dGVkIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IFNwcmVhZFNoZWV0U2VydmljZSB9IGZyb20gXCIuLi9zcHJlYWRzaGVldC5zZXJ2aWNlXCI7XG5pbXBvcnQgeyBHcmlkRGF0YVRhYmxlQXV0b2ZpbGwgfSBmcm9tIFwiLi9ncmlkLXRhYmxlLWF1dG9maWxsLmRpcmVjdGl2ZVwiO1xuXG5ARGlyZWN0aXZlKHsgc3RhbmRhbG9uZTogdHJ1ZSwgc2VsZWN0b3I6ICdbZ3JpZERhdGFDZWxsQXV0b2ZpbGxdJyB9KVxuZXhwb3J0IGNsYXNzIFNwcmVhZFNoZWV0Q2VsbEF1dG9maWxsIHtcbiAgcHJvdGVjdGVkIHNzID0gaW5qZWN0KFNwcmVhZFNoZWV0U2VydmljZSk7XG4gIHJlYWRvbmx5IGVsID0gaW5qZWN0PEVsZW1lbnRSZWY8SFRNTFRhYmxlQ2VsbEVsZW1lbnQ+PihFbGVtZW50UmVmKTtcbiAgcmVhZG9ubHkgdGFibGUgPSBpbmplY3QoR3JpZERhdGFUYWJsZUF1dG9maWxsKTtcbiAgXG4gIHJlYWRvbmx5IHBvc2l0aW9uID0gaW5wdXQ8e3JvdzogbnVtYmVyLCBjb2w6IG51bWJlcn0+KHtyb3c6IDAsIGNvbDogMH0sIHthbGlhczogJ2dyaWREYXRhQ2VsbEF1dG9maWxsJ30pO1xuICByZWFkb25seSBlbmFibGVkID0gaW5wdXQ8Ym9vbGVhbj4odHJ1ZSwge2FsaWFzOiAnZ3JpZERhdGFDZWxsQXV0b2ZpbGxFbmFibGVkJ30pO1xuICBcbiAgcmVhZG9ubHkgc2hvdWxkU2hvdyA9IGNvbXB1dGVkKCgpID0+IHRoaXMuZW5hYmxlZCgpICYmIFxuICAgIHRoaXMuc3Muc2VsZWN0aW9uLmlzQ3Vyc29yUG9zaXRpb24odGhpcy5wb3NpdGlvbigpKSAmJiBcbiAgICAhdGhpcy5zcy5lZGl0b3IuaXNFZGl0aW5nKHRoaXMucG9zaXRpb24oKSkgJiZcbiAgICAhdGhpcy5zcy5hdXRvZmlsbC5pc0F1dG9maWxsTW9kZSgpKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICAvLyByZXF1ZXN0QW5pbWF0aW9uRnJhbWXjgpLkvb/nlKjjgZfjgabjgIFET03jga7mm7TmlrDlvozjgavlrp/ooYxcbiAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuc2hvdWxkU2hvdygpKSB7XG4gICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICAgICAgdGhpcy50YWJsZS5zaG93SGFuZGxlKHRoaXMuZWwubmF0aXZlRWxlbWVudCwgdGhpcy5wb3NpdGlvbigpKTtcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2UgaWYgKCF0aGlzLnNob3VsZFNob3coKSAmJiB0aGlzLnNzLnNlbGVjdGlvbi5pc0N1cnNvclBvc2l0aW9uKHRoaXMucG9zaXRpb24oKSkpIHtcbiAgICAgICAgLy8g54++5Zyo44Gu44K744Or44GM44Kr44O844K944Or5L2N572u44Gg44GM6KGo56S65p2h5Lu244KS5rqA44Gf44GV44Gq44GE5aC05ZCI44Gu44G/6Z2e6KGo56S6XG4gICAgICAgIHRoaXMudGFibGUuaGlkZUhhbmRsZSgpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59Il19","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//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9AbmctYXRvbWljL2NvbW1vbi9zcmMvbGliL3NlcnZpY2VzL3NwcmVhZHNoZWV0L2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsWUFBWSxDQUFDO0FBQzNCLGNBQWMsVUFBVSxDQUFDO0FBQ3pCLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsZ0ZBQWdGIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9kaXJlY3RpdmVzJztcbmV4cG9ydCAqIGZyb20gJy4vZmVhdHVyZXMnO1xuZXhwb3J0ICogZnJvbSAnLi9tb2RlbHMnO1xuZXhwb3J0ICogZnJvbSAnLi9zcHJlYWRzaGVldC5zZXJ2aWNlJztcbi8vIENvbXBvbmVudHMgYXJlIGltcG9ydGVkIGRpcmVjdGx5IGJ5IGRpcmVjdGl2ZXMgdG8gYXZvaWQgY2lyY3VsYXIgZGVwZW5kZW5jaWVzXG4iXX0=","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctYXRvbWljLWNvbW1vbi1zZXJ2aWNlcy1zcHJlYWRzaGVldC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BuZy1hdG9taWMvY29tbW9uL3NyYy9saWIvc2VydmljZXMvc3ByZWFkc2hlZXQvbmctYXRvbWljLWNvbW1vbi1zZXJ2aWNlcy1zcHJlYWRzaGVldC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ=="],"names":["i1.SelectionService"],"mappings":";;;;;;;;;;;AAEO,MAAM,sBAAsB,CAAC;AACpC,IAAI,WAAW,GAAG;AAClB,QAAQ,IAAI,CAAC,gBAAgB,GAAG,MAAM,CAAC,EAAE,CAAC;AAC1C,QAAQ,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,EAAE,CAAC;AAC/B;AACA,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,sBAAsB,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,UAAU,EAAE,CAAC,CAAC;AACzL,IAAI,SAAS,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,qBAAqB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,sBAAsB,EAAE,CAAC,CAAC;AAC5I;AACA,EAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,sBAAsB,EAAE,UAAU,EAAE,CAAC;AAChI,YAAY,IAAI,EAAE;AAClB,SAAS,CAAC,EAAE,CAAC;;ACTN,MAAM,WAAW,CAAC;AACzB,IAAI,WAAW,GAAG;AAClB,QAAQ,IAAI,CAAC,UAAU,GAAG,IAAI,GAAG,EAAE;AACnC,QAAQ,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,sBAAsB,CAAC;AAClD,QAAQ,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;AAC7E,QAAQ,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC;AAC9D;AACA,IAAI,UAAU,CAAC,OAAO,EAAE;AACxB,QAAQ,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;AACrE;AACA,IAAI,UAAU,CAAC,QAAQ,EAAE;AACzB,QAAQ,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,IAAI,IAAI;AACnE;AACA,IAAI,QAAQ,CAAC,QAAQ,EAAE;AACvB,QAAQ,OAAO,CAAC,CAAC,EAAE,QAAQ,CAAC,GAAG,CAAC,EAAE,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;AACnD;AACA,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,UAAU,EAAE,CAAC,CAAC;AAC9K,IAAI,SAAS,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,qBAAqB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC;AACjI;AACA,EAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC;AACrH,YAAY,IAAI,EAAE;AAClB,SAAS,CAAC,EAAE,CAAC;;ACrBN,MAAM,iBAAiB,CAAC;AAC/B,IAAI,WAAW,GAAG;AAClB,QAAQ,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;AAC9C;AACA,IAAI,cAAc,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;AACjC,QAAQ,IAAI,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAE;AAC7C,YAAY,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,CAAC,EAAE;AACxC;AACA,aAAa,IAAI,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAE;AAClD,YAAY,OAAO,EAAE,GAAG,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE;AAC3C;AACA,QAAQ,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE;AAC3B;AACA,IAAI,kBAAkB,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;AACrC,QAAQ,IAAI,GAAG,GAAG,CAAC,EAAE;AACrB,YAAY,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,CAAC,EAAE;AACxC;AACA,aAAa,IAAI,GAAG,GAAG,CAAC,EAAE;AAC1B,YAAY,OAAO,EAAE,GAAG,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAE;AACnE;AACA,QAAQ,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE;AAC3B;AACA,IAAI,aAAa,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;AAChC,QAAQ,IAAI,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAE;AAC7C,YAAY,OAAO,EAAE,GAAG,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,EAAE;AACxC;AACA,QAAQ,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE;AAC3B;AACA,IAAI,iBAAiB,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;AACpC,QAAQ,IAAI,GAAG,GAAG,CAAC,EAAE;AACrB,YAAY,OAAO,EAAE,GAAG,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,EAAE;AACxC;AACA,QAAQ,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE;AAC3B;AACA,IAAI,SAAS,CAAC,QAAQ,EAAE;AACxB,QAAQ,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,QAAQ;AACrC,QAAQ,IAAI,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAE;AAC7C,YAAY,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,CAAC,EAAE;AACxC;AACA,QAAQ,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE;AAC3B;AACA,IAAI,QAAQ,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;AAC3B,QAAQ,IAAI,GAAG,GAAG,CAAC,EAAE;AACrB,YAAY,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,CAAC,EAAE;AACxC;AACA,QAAQ,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE;AAC3B;AACA,IAAI,MAAM,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;AACzB,QAAQ,IAAI,GAAG,GAAG,CAAC,EAAE;AACrB,YAAY,OAAO,EAAE,GAAG,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,EAAE;AACxC;AACA,QAAQ,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE;AAC3B;AACA,IAAI,QAAQ,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;AAC3B,QAAQ,IAAI,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAE;AAC7C,YAAY,OAAO,EAAE,GAAG,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,EAAE;AACxC;AACA,QAAQ,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE;AAC3B;AACA,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,UAAU,EAAE,CAAC,CAAC;AACpL,IAAI,SAAS,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,qBAAqB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC,CAAC;AACvI;AACA,EAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE,UAAU,EAAE,CAAC;AAC3H,YAAY,IAAI,EAAE;AAClB,SAAS,CAAC,EAAE,CAAC;;AC9DN,MAAM,gBAAgB,CAAC;AAC9B,IAAI,WAAW,GAAG;AAClB,QAAQ,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,sBAAsB,CAAC;AAClD,QAAQ,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC;AACzE,QAAQ,IAAI,CAAC,cAAc,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;AACxF,QAAQ,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC;AACxC,QAAQ,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,WAAW,CAAC;AACvC,QAAQ,IAAI,CAAC,SAAS,GAAG,IAAI,GAAG,EAAE;AAClC,QAAQ,MAAM,CAAC,MAAM;AACrB,YAAY,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,EAAE;AAClD,YAAY,IAAI,QAAQ;AACxB,gBAAgB,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;AACpC,SAAS,CAAC;AACV;AACA,IAAI,UAAU,CAAC,QAAQ,EAAE;AACzB;AACA,QAAQ,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE;AAC1C,QAAQ,IAAI,CAAC,SAAS;AACtB,YAAY,OAAO,KAAK;AACxB,QAAQ,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,SAAS;AACxC,QAAQ,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,KAAK,CAAC,GAAG,CAAC;AACjE,QAAQ,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,KAAK,CAAC,GAAG,CAAC;AACjE,QAAQ,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,KAAK,CAAC,GAAG,CAAC;AACjE,QAAQ,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,KAAK,CAAC,GAAG,CAAC;AACjE,QAAQ,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,QAAQ;AACrC,QAAQ,OAAO,GAAG,IAAI,MAAM,IAAI,GAAG,IAAI,MAAM,IAAI,GAAG,IAAI,MAAM,IAAI,GAAG,IAAI,MAAM;AAC/E;AACA,IAAI,gBAAgB,CAAC,QAAQ,EAAE;AAC/B,QAAQ,OAAO,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC;AACxD;AACA,IAAI,eAAe,CAAC,QAAQ,EAAE,KAAK,EAAE;AACrC,QAAQ,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC;AAClC,QAAQ,IAAI,CAAC,KAAK,EAAE,QAAQ,EAAE;AAC9B,YAAY,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC;AACzC;AACA;AACA,IAAI,aAAa,GAAG;AACpB,QAAQ,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC;AACnC;AACA,IAAI,gBAAgB,CAAC,QAAQ,EAAE;AAC/B,QAAQ,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE;AAChC,YAAY,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC;AAC1C;AACA;AACA,IAAI,WAAW,CAAC,QAAQ,EAAE,KAAK,EAAE;AACjC,QAAQ,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE;AACjC,YAAY,IAAI,KAAK,EAAE,QAAQ,EAAE;AACjC,gBAAgB,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC;AACjD;AACA,iBAAiB;AACjB,gBAAgB,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC;AAC7C;AACA;AACA;AACA,IAAI,cAAc,GAAG;AACrB,QAAQ,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,SAAS,MAAM,EAAE,GAAG,SAAS,EAAE,KAAK,EAAE,SAAS,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC;AACnG;AACA,IAAI,gBAAgB,CAAC,QAAQ,EAAE;AAC/B,QAAQ,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,SAAS,MAAM,EAAE,GAAG,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC;AAC5F;AACA,IAAI,YAAY,GAAG;AACnB,QAAQ,OAAO,IAAI,CAAC,SAAS,EAAE;AAC/B;AACA,IAAI,sBAAsB,GAAG;AAC7B,QAAQ,OAAO,IAAI,CAAC,SAAS,EAAE,EAAE,GAAG,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE,KAAK;AAC/D;AACA,IAAI,kBAAkB,CAAC,QAAQ,EAAE;AACjC,QAAQ,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,SAAS,MAAM,EAAE,GAAG,SAAS,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC,CAAC;AAC/E;AACA,IAAI,cAAc,CAAC,QAAQ,EAAE;AAC7B,QAAQ,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC;AAC1D;AACA,IAAI,eAAe,CAAC,QAAQ,EAAE;AAC9B,QAAQ,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE;AAC9B,YAAY,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,SAAS,MAAM,EAAE,GAAG,SAAS,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC,CAAC;AACnF;AACA;AACA,IAAI,kBAAkB,CAAC,SAAS,EAAE;AAClC;AACA,IAAI,OAAO,CAAC,QAAQ,EAAE,EAAE,EAAE;AAC1B,QAAQ,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;AAC5D;AACA,IAAI,OAAO,CAAC,QAAQ,EAAE;AACtB,QAAQ,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,IAAI,IAAI;AAClE;AACA,IAAI,KAAK,CAAC,QAAQ,EAAE;AACpB,QAAQ,UAAU,CAAC,MAAM;AACzB,YAAY,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;AAC7C,YAAY,IAAI,EAAE,IAAI,EAAE,KAAK,QAAQ,CAAC,aAAa,EAAE;AACrD,gBAAgB,EAAE,CAAC,KAAK,EAAE;AAC1B;AACA,SAAS,CAAC;AACV;AACA,IAAI,QAAQ,CAAC,QAAQ,EAAE;AACvB,QAAQ,OAAO,CAAC,CAAC,EAAE,QAAQ,CAAC,GAAG,CAAC,EAAE,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;AACnD;AACA,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,UAAU,EAAE,CAAC,CAAC;AACnL,IAAI,SAAS,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,qBAAqB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,CAAC,CAAC;AACtI;AACA,EAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,UAAU,EAAE,CAAC;AAC1H,YAAY,IAAI,EAAE;AAClB,SAAS,CAAC,EAAE,cAAc,EAAE,MAAM,EAAE,EAAE,CAAC;;AC/FhC,MAAM,gBAAgB,CAAC;AAC9B,IAAI,WAAW,CAAC,gBAAgB,EAAE;AAClC,QAAQ,IAAI,CAAC,gBAAgB,GAAG,gBAAgB;AAChD,QAAQ,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;AAC1C,QAAQ,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,eAAe,CAAC;AAC/C,QAAQ,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,sBAAsB,CAAC;AAClD,QAAQ,IAAI,CAAC,YAAY,GAAG,kBAAkB,EAAE;AAChD,QAAQ,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,sBAAsB,CAAC;AACxD,QAAQ,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,eAAe,CAAC;AAC/C;AACA,IAAI,aAAa,CAAC,KAAK,EAAE;AACzB,QAAQ,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,GAAG,CAAC,MAAM,KAAK;AACnE,YAAY,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC;AACtD,YAAY,eAAe,EAAE,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC;AAC5D,YAAY,QAAQ,EAAE;AACtB,SAAS,CAAC,CAAC;AACX,QAAQ,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,GAAG,CAAC,MAAM,KAAK;AAC/F,YAAY,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC;AACtD,YAAY,eAAe,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;AACrG,SAAS,CAAC,CAAC,CAAC;AACZ,QAAQ,MAAM,QAAQ,GAAG,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC;AAC1C,QAAQ,OAAO,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACnH;AACA,IAAI,MAAM,IAAI,GAAG;AACjB,QAAQ,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE;AAC9D,QAAQ,IAAI,CAAC,SAAS;AACtB,YAAY;AACZ,QAAQ,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,SAAS;AACtC,QAAQ,GAAG,GAAG,GAAG,IAAI,KAAK;AAC1B,QAAQ,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC;AACnD,QAAQ,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC;AACnD,QAAQ,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC;AACnD,QAAQ,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC;AACnD,QAAQ,MAAM,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;AACnF,QAAQ,MAAM,GAAG,GAAG,SAAS,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;AAClJ,QAAQ,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;AAC1B;AACA,IAAI,OAAO,CAAC,KAAK,EAAE,gBAAgB,EAAE;AACrC,QAAQ,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,gBAAgB,CAAC;AACxD,QAAQ,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC;AAClC;AACA,IAAI,QAAQ,CAAC,IAAI,EAAE;AACnB,QAAQ,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;AACjC,QAAQ,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,kBAAkB,CAAC;AAC9C;AACA,IAAI,MAAM,KAAK,CAAC,SAAS,EAAE,SAAS,EAAE;AACtC;AACA,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAEA,gBAAmB,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,UAAU,EAAE,CAAC,CAAC;AACjN,IAAI,SAAS,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,qBAAqB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,CAAC,CAAC;AACtI;AACA,EAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,UAAU,EAAE,CAAC;AAC1H,YAAY,IAAI,EAAE;AAClB,SAAS,CAAC,EAAE,cAAc,EAAE,MAAM,CAAC,EAAE,IAAI,EAAEA,gBAAmB,EAAE,CAAC,EAAE,CAAC;;AC7DxD,MAAC,gBAAgB,GAAG,IAAI,cAAc,CAAC,kBAAkB,EAAE;AACvE,IAAI,UAAU,EAAE,MAAM;AACtB,IAAI,OAAO,EAAE,MAAM,EAAE;AACrB,CAAC;AACM,SAAS,oBAAoB,CAAC,UAAU,EAAE;AACjD,IAAI,OAAO,EAAE,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,KAAK,EAAE,IAAI,EAAE;AACjE;AACO,MAAM,iBAAiB,CAAC;AAC/B,IAAI,WAAW,GAAG;AAClB,QAAQ,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,gBAAgB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AACtE;AACA,IAAI,UAAU,CAAC,KAAK,EAAE,OAAO,EAAE;AAC/B,QAAQ,IAAI,CAAC,IAAI,CAAC,UAAU;AAC5B,YAAY,OAAO,IAAI;AACvB,QAAQ,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AAC9E;AACA,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,UAAU,EAAE,CAAC,CAAC;AACpL,IAAI,SAAS,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,qBAAqB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC,CAAC;AACvI;AACA,EAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE,UAAU,EAAE,CAAC;AAC3H,YAAY,IAAI,EAAE;AAClB,SAAS,CAAC,EAAE,CAAC;;AChBN,MAAM,aAAa,CAAC;AAC3B,IAAI,WAAW,GAAG;AAClB,QAAQ,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,sBAAsB,CAAC;AAClD,QAAQ,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,WAAW,CAAC;AACvC,QAAQ,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,gBAAgB,CAAC;AACjD,QAAQ,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,iBAAiB,CAAC;AACnD,QAAQ,IAAI,CAAC,mBAAmB,GAAG,MAAM,CAAC,mBAAmB,CAAC;AAC9D,QAAQ,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC;AACxC,QAAQ,IAAI,CAAC,QAAQ,GAAG,IAAI,GAAG,EAAE;AACjC;AACA,IAAI,SAAS,CAAC,QAAQ,EAAE;AACxB,QAAQ,OAAO,IAAI,CAAC,YAAY,EAAE,EAAE,GAAG,KAAK,QAAQ,CAAC,GAAG,IAAI,IAAI,CAAC,YAAY,EAAE,EAAE,GAAG,KAAK,QAAQ,CAAC,GAAG;AACrG;AACA,IAAI,YAAY,CAAC,QAAQ,EAAE;AAC3B,QAAQ,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;AACtD,QAAQ,OAAO,CAAC,KAAK,CAAC,UAAU,EAAE,OAAO,CAAC;AAC1C,QAAQ,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE;AACxD,YAAY;AACZ;AACA,QAAQ,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE;AACvC,QAAQ,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC;AACvC;AACA,QAAQ,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC;AACnE,QAAQ,IAAI,CAAC,mBAAmB,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC;AACrE,QAAQ,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;AAC5B;AACA,IAAI,WAAW,GAAG;AAClB,QAAQ,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY,EAAE;AAC/C,QAAQ,IAAI,WAAW,EAAE;AACzB;AACA,YAAY,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC;AAC1E,YAAY,IAAI,CAAC,mBAAmB,CAAC,WAAW,CAAC,WAAW,CAAC,GAAG,EAAE,QAAQ,CAAC;AAC3E;AACA,QAAQ,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC;AACnC;AACA,IAAI,KAAK,CAAC,QAAQ,EAAE;AACpB,QAAQ,UAAU,CAAC,MAAM;AACzB,YAAY,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;AACjD,YAAY,IAAI,KAAK,IAAI,KAAK,KAAK,QAAQ,CAAC,aAAa,EAAE;AAC3D,gBAAgB,KAAK,CAAC,KAAK,EAAE;AAC7B,gBAAgB,KAAK,CAAC,MAAM,EAAE;AAC9B;AACA,SAAS,CAAC;AACV;AACA,IAAI,cAAc,GAAG;AACrB,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC3D,YAAY,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC1E,gBAAgB,IAAI,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE;AACxD,oBAAoB,OAAO,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE;AAC7C;AACA;AACA;AACA,QAAQ,OAAO,IAAI;AACnB;AACA,IAAI,QAAQ,CAAC,KAAK,EAAE,QAAQ,EAAE;AAC9B,QAAQ,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC;AAC9D;AACA,IAAI,QAAQ,CAAC,QAAQ,EAAE;AACvB,QAAQ,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,IAAI,IAAI;AACjE;AACA,IAAI,QAAQ,CAAC,QAAQ,EAAE;AACvB,QAAQ,OAAO,CAAC,CAAC,EAAE,QAAQ,CAAC,GAAG,CAAC,EAAE,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;AACnD;AACA,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,UAAU,EAAE,CAAC,CAAC;AAChL,IAAI,SAAS,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,qBAAqB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC,CAAC;AACnI;AACA,EAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,UAAU,EAAE,CAAC;AACvH,YAAY,IAAI,EAAE;AAClB,SAAS,CAAC,EAAE,CAAC;;ACzEN,MAAM,eAAe,CAAC;AAC7B,IAAI,WAAW,GAAG;AAClB,QAAQ,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,KAAK,CAAC;AACzC,QAAQ,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC;AAC1C,QAAQ,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC;AACvC,QAAQ,IAAI,CAAC,eAAe,GAAG,IAAI,GAAG,EAAE;AACxC,QAAQ,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE;AAC5D,QAAQ,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE;AACjE,QAAQ,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE;AAC3D;AACA,IAAI,aAAa,CAAC,QAAQ,EAAE;AAC5B,QAAQ,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC;AACnC,QAAQ,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC;AACzC,QAAQ,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC;AAChE;AACA,IAAI,mBAAmB,CAAC,WAAW,EAAE;AACrC,QAAQ,MAAM,SAAS,GAAG,IAAI,CAAC,cAAc,EAAE;AAC/C,QAAQ,IAAI,SAAS,EAAE;AACvB,YAAY,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,WAAW,EAAE,CAAC;AACxE,YAAY,IAAI,CAAC,aAAa,EAAE;AAChC;AACA;AACA,IAAI,cAAc,GAAG;AACrB,QAAQ,IAAI,CAAC,aAAa,EAAE;AAC5B;AACA,IAAI,aAAa,GAAG;AACpB;AACA,QAAQ,IAAI,CAAC,YAAY,EAAE;AAC3B,QAAQ,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE;AACxC,QAAQ,IAAI,CAAC,KAAK;AAClB,YAAY;AACZ;AACA,QAAQ,KAAK,IAAI,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,EAAE,GAAG,IAAI,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;AACzE,YAAY,MAAM,QAAQ,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE;AAC1D,YAAY,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC;AAC7D,YAAY,IAAI,WAAW,EAAE;AAC7B,gBAAgB,WAAW,CAAC,SAAS,CAAC,GAAG,CAAC,kBAAkB,CAAC;AAC7D,gBAAgB,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,WAAW,CAAC;AACrD;AACA;AACA;AACA,IAAI,YAAY,GAAG;AACnB,QAAQ,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,OAAO,IAAI;AAChD,YAAY,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,kBAAkB,CAAC;AACxD,SAAS,CAAC;AACV,QAAQ,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE;AACpC;AACA,IAAI,cAAc,CAAC,QAAQ,EAAE;AAC7B,QAAQ,OAAO,QAAQ,CAAC,aAAa,CAAC,CAAC,WAAW,EAAE,QAAQ,CAAC,GAAG,CAAC,aAAa,EAAE,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AACjG;AACA,IAAI,aAAa,GAAG;AACpB,QAAQ,IAAI,CAAC,YAAY,EAAE;AAC3B,QAAQ,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC;AACpC,QAAQ,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC;AACrC,QAAQ,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC;AAClC;AACA,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,UAAU,EAAE,CAAC,CAAC;AAClL,IAAI,SAAS,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,qBAAqB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,CAAC,CAAC;AACrI;AACA,EAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,UAAU,EAAE,CAAC;AACzH,YAAY,IAAI,EAAE;AAClB,SAAS,CAAC,EAAE,CAAC;;ACrDN,MAAM,kBAAkB,CAAC;AAChC,IAAI,WAAW,GAAG;AAClB,QAAQ,IAAI,CAAC,MAAM,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE;AACtC,QAAQ,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,WAAW,CAAC;AACvC;AACA,QAAQ,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,iBAAiB,CAAC;AACnD,QAAQ,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,gBAAgB,CAAC;AACjD,QAAQ,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,gBAAgB,CAAC;AACjD,QAAQ,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,aAAa,CAAC;AAC3C,QAAQ,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,iBAAiB,CAAC;AACnD,QAAQ,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,eAAe,CAAC;AAC/C;AACA,IAAI,aAAa,CAAC,KAAK,EAAE;AACzB,QAAQ,IAAI,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,EAAE;AACxC,YAAY,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC;AAC9C;AACA,aAAa;AACb,YAAY,IAAI,CAAC,wBAAwB,CAAC,KAAK,CAAC;AAChD;AACA;AACA,IAAI,sBAAsB,CAAC,KAAK,EAAE;AAClC,QAAQ,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE;AAC/C;AACA;AACA,QAAQ,IAAI,KAAK,CAAC,YAAY,EAAE;AAChC,YAAY;AACZ;AACA,QAAQ,IAAI,KAAK,CAAC,GAAG,KAAK,KAAK,EAAE;AACjC,YAAY,KAAK,CAAC,cAAc,EAAE;AAClC,YAAY,IAAI,KAAK,CAAC,QAAQ,EAAE;AAChC,gBAAgB,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC;AACjD;AACA,iBAAiB;AACjB,gBAAgB,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,CAAC;AAClD;AACA;AACA,aAAa,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO,EAAE;AACxC,YAAY,KAAK,CAAC,cAAc,EAAE;AAClC,YAAY,IAAI,KAAK,CAAC,QAAQ,EAAE;AAChC,gBAAgB,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,QAAQ,CAAC;AAChD;AACA,iBAAiB;AACjB,gBAAgB,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,QAAQ,CAAC;AACnD;AACA;AACA;AACA,IAAI,wBAAwB,CAAC,KAAK,EAAE;AACpC,QAAQ,IAAI,KAAK,CAAC,GAAG,KAAK,KAAK,EAAE;AACjC,YAAY,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC,KAAK;AACpE,YAAY,KAAK,CAAC,cAAc,EAAE;AAClC,YAAY,KAAK,CAAC,eAAe,EAAE;AACnC,YAAY,IAAI,KAAK,CAAC,QAAQ,EAAE;AAChC,gBAAgB,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,MAAM,EAAE,QAAQ,CAAC;AACzD;AACA,iBAAiB;AACjB,gBAAgB,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,OAAO,EAAE,QAAQ,CAAC;AAC1D;AACA,YAAY;AACZ;AACA,aAAa,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO,EAAE;AACxC,YAAY,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC,KAAK;AACpE,YAAY,IAAI,YAAY,EAAE;AAC9B,gBAAgB,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,YAAY,CAAC;AACtD,gBAAgB,KAAK,CAAC,cAAc,EAAE;AACtC;AACA;AACA,aAAa,IAAI,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,EAAE;AACjD,YAAY,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG,EAAE;AACnC,gBAAgB,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE;AACrC,gBAAgB,KAAK,CAAC,cAAc,EAAE;AACtC;AACA,iBAAiB,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG,EAAE;AACxC,gBAAgB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK;AACtC,oBAAoB;AACpB,gBAAgB,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC,KAAK;AAClE,gBAAgB,IAAI,MAAM,EAAE;AAC5B,oBAAoB,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC;AAChE;AACA,gBAAgB,KAAK,CAAC,cAAc,EAAE;AACtC;AACA,YAAY;AACZ;AACA,aAAa,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ,IAAI,KAAK,CAAC,GAAG,KAAK,WAAW,EAAE;AACtE,YAAY,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE;AAC3D,YAAY,IAAI,SAAS,EAAE;AAC3B,gBAAgB,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAAC,SAAS,CAAC;AAC5D,gBAAgB,KAAK,CAAC,cAAc,EAAE;AACtC,gBAAgB;AAChB;AACA;AACA,aAAa;AACb,YAAY,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC,KAAK;AACjE,YAAY,IAAI,WAAW;AAC3B,YAAY,IAAI,KAAK,CAAC,QAAQ,EAAE;AAChC,gBAAgB,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,sBAAsB,EAAE;AAC5E,gBAAgB,QAAQ,KAAK,CAAC,GAAG;AACjC,oBAAoB,KAAK,YAAY;AACrC,wBAAwB,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,YAAY,CAAC;AAC7E,wBAAwB;AACxB,oBAAoB,KAAK,WAAW;AACpC,wBAAwB,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,YAAY,CAAC;AAC5E,wBAAwB;AACxB,oBAAoB,KAAK,SAAS;AAClC,wBAAwB,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,YAAY,CAAC;AAC1E,wBAAwB;AACxB,oBAAoB,KAAK,WAAW;AACpC,wBAAwB,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,YAAY,CAAC;AAC5E,wBAAwB;AACxB,oBAAoB;AACpB,wBAAwB;AACxB;AACA,gBAAgB,IAAI,WAAW,EAAE;AACjC,oBAAoB,KAAK,CAAC,cAAc,EAAE;AAC1C,oBAAoB,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAAC,WAAW,CAAC;AAClE;AACA;AACA,iBAAiB;AACjB,gBAAgB,QAAQ,KAAK,CAAC,GAAG;AACjC,oBAAoB,KAAK,YAAY;AACrC,wBAAwB,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,SAAS,CAAC;AAC1E,wBAAwB;AACxB,oBAAoB,KAAK,WAAW;AACpC,wBAAwB,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,SAAS,CAAC;AACzE,wBAAwB;AACxB,oBAAoB,KAAK,SAAS;AAClC,wBAAwB,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC;AACvE,wBAAwB;AACxB,oBAAoB,KAAK,WAAW;AACpC,wBAAwB,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,SAAS,CAAC;AACzE,wBAAwB;AACxB,oBAAoB;AACpB,wBAAwB;AACxB;AACA,gBAAgB,IAAI,WAAW,EAAE;AACjC,oBAAoB,KAAK,CAAC,cAAc,EAAE;AAC1C,oBAAoB,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE;AACnD,oBAAoB,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,WAAW,CAAC;AAC3D;AACA;AACA;AACA;AACA,IAAI,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE;AAChC,QAAQ,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE;AACjC,QAAQ,IAAI,QAAQ;AACpB,QAAQ,IAAI,IAAI,KAAK,KAAK,EAAE;AAC5B,YAAY,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC,SAAS,CAAC;AACnE;AACA,aAAa,IAAI,IAAI,KAAK,QAAQ,EAAE;AACpC,YAAY,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,SAAS,CAAC;AAC/D;AACA,aAAa,IAAI,IAAI,KAAK,MAAM,EAAE;AAClC,YAAY,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,kBAAkB,CAAC,SAAS,CAAC;AACpE;AACA,aAAa,IAAI,IAAI,KAAK,OAAO,EAAE;AACnC,YAAY,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,SAAS,CAAC;AAChE;AACA,QAAQ,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,QAAQ,CAAC;AACjD,QAAQ,IAAI,IAAI,KAAK,MAAM,EAAE;AAC7B,YAAY,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC;AAC9C;AACA;AACA,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,UAAU,EAAE,CAAC,CAAC;AACrL,IAAI,SAAS,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,qBAAqB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,CAAC,CAAC;AACxI;AACA,EAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,UAAU,EAAE,CAAC;AAC5H,YAAY,IAAI,EAAE;AAClB,SAAS,CAAC,EAAE,CAAC;AACN,SAAS,yBAAyB,GAAG;AAC5C,IAAI,OAAO;AACX,QAAQ,gBAAgB;AACxB,QAAQ,sBAAsB;AAC9B,QAAQ,aAAa;AACrB,QAAQ,kBAAkB;AAC1B,QAAQ,WAAW;AACnB,QAAQ,iBAAiB;AACzB,QAAQ,gBAAgB;AACxB,QAAQ,iBAAiB;AACzB,QAAQ;AACR,KAAK;AACL;;AC1LO,MAAM,eAAe,CAAC;AAC7B,IAAI,WAAW,GAAG;AAClB,QAAQ,IAAI,CAAC,EAAE,GAAG,MAAM,CAAC,kBAAkB,CAAC;AAC5C,QAAQ,IAAI,CAAC,EAAE,GAAG,MAAM,CAAC,UAAU,CAAC;AACpC,QAAQ,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;AACtE,QAAQ,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,gBAAgB,EAAE,CAAC;AACjE,QAAQ,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,eAAe,EAAE,CAAC;AAC9D,QAAQ,IAAI,CAAC,UAAU,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;AACvF,QAAQ,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;AAClF,QAAQ,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC;AACnC,QAAQ,MAAM,CAAC,MAAM;AACrB,YAAY,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AAC/B,gBAAgB;AAChB,YAAY,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;AACnD,SAAS,CAAC;AACV,QAAQ,MAAM,CAAC,MAAM;AACrB,YAAY,MAAM,QAAQ,GAAG,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;AAChF,YAAY,IAAI,KAAK,GAAG,IAAI,CAAC,OAAO,EAAE;AACtC,YAAY,IAAI,QAAQ,EAAE;AAC1B,gBAAgB,IAAI,CAAC,KAAK,EAAE;AAC5B,oBAAoB,KAAK,GAAG,IAAI,CAAC,iBAAiB,EAAE;AACpD,oBAAoB,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,WAAW,CAAC,KAAK,CAAC;AAC5D,oBAAoB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC;AAC3C;AACA;AACA,iBAAiB;AACjB,gBAAgB,KAAK,EAAE,MAAM,EAAE;AAC/B,gBAAgB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;AACtC;AACA,SAAS,CAAC;AACV;AACA,IAAI,SAAS,GAAG;AAChB,QAAQ,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AAC5B,YAAY;AACZ,QAAQ,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;AACpD;AACA,IAAI,eAAe,GAAG;AACtB,QAAQ,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC;AACzE,QAAQ,IAAI,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE;AACpD,YAAY,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;AACpD;AACA;AACA,IAAI,iBAAiB,GAAG;AACxB,QAAQ,MAAM,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC;AACnD,QAAQ,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,iBAAiB,CAAC;AAC9C,QAAQ,KAAK,CAAC,KAAK,CAAC,QAAQ,GAAG,UAAU;AACzC,QAAQ,KAAK,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG;AAC7B,QAAQ,KAAK,CAAC,KAAK,CAAC,IAAI,GAAG,GAAG;AAC9B,QAAQ,KAAK,CAAC,KAAK,CAAC,KAAK,GAAG,MAAM;AAClC,QAAQ,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM;AACnC,QAAQ,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,mBAAmB;AAChD,QAAQ,KAAK,CAAC,KAAK,CAAC,YAAY,GAAG,KAAK;AACxC,QAAQ,KAAK,CAAC,KAAK,CAAC,aAAa,GAAG,MAAM;AAC1C,QAAQ,KAAK,CAAC,KAAK,CAAC,SAAS,GAAG,YAAY;AAC5C,QAAQ,OAAO,KAAK;AACpB;AACA,IAAI,kBAAkB,CAAC,OAAO,EAAE;AAChC,QAAQ,MAAM,EAAE,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC;AACjD,QAAQ,EAAE,CAAC,WAAW,GAAG,OAAO,CAAC,KAAK;AACtC,QAAQ,EAAE,CAAC,KAAK,CAAC,eAAe,GAAG,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;AACrD,QAAQ,EAAE,CAAC,KAAK,CAAC,KAAK,GAAG,MAAM;AAC/B,QAAQ,EAAE,CAAC,KAAK,CAAC,OAAO,GAAG,SAAS;AACpC,QAAQ,EAAE,CAAC,KAAK,CAAC,QAAQ,GAAG,UAAU;AACtC,QAAQ,EAAE,CAAC,KAAK,CAAC,QAAQ,GAAG,MAAM;AAClC,QAAQ,EAAE,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG;AAC1B,QAAQ,EAAE,CAAC,KAAK,CAAC,IAAI,GAAG,GAAG;AAC3B,QAAQ,EAAE,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM;AAChC,QAAQ,EAAE,CAAC,KAAK,CAAC,UAAU,GAAG,OAAO;AACrC,QAAQ,EAAE,CAAC,KAAK,CAAC,UAAU,GAAG,QAAQ;AACtC,QAAQ,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,WAAW,CAAC,EAAE,CAAC;AAC7C;AACA,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,SAAS,EAAE,CAAC,CAAC;AACjL,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,oBAAoB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,eAAe,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,EAAE,iBAAiB,EAAE,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,EAAE,iBAAiB,EAAE,UAAU,EAAE,UAAU,EAAE,gBAAgB,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,EAAE,iBAAiB,EAAE,SAAS,EAAE,UAAU,EAAE,eAAe,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,SAAS,EAAE,EAAE,WAAW,EAAE,kDAAkD,EAAE,SAAS,EAAE,8BAA8B,EAAE,YAAY,EAAE,2CAA2C,EAAE,OAAO,EAAE,8CAA8C,EAAE,UAAU,EAAE,aAAa,EAAE,EAAE,UAAU,EAAE,EAAE,gBAAgB,EAAE,qCAAqC,EAAE,eAAe,EAAE,iCAAiC,EAAE,eAAe,EAAE,gBAAgB,EAAE,eAAe,EAAE,gBAAgB,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC;AAC1hC;AACA,EAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,UAAU,EAAE,CAAC;AACzH,YAAY,IAAI,EAAE,SAAS;AAC3B,YAAY,IAAI,EAAE,CAAC;AACnB,oBAAoB,UAAU,EAAE,IAAI;AACpC,oBAAoB,QAAQ,EAAE,UAAU;AACxC,oBAAoB,IAAI,EAAE;AAC1B,wBAAwB,kBAAkB,EAAE,qCAAqC;AACjF,wBAAwB,iBAAiB,EAAE,iCAAiC;AAC5E,wBAAwB,aAAa,EAAE,kDAAkD;AACzF,wBAAwB,WAAW,EAAE,8BAA8B;AACnE,wBAAwB,cAAc,EAAE,2CAA2C;AACnF,wBAAwB,SAAS,EAAE,8CAA8C;AACjF,wBAAwB,YAAY,EAAE,aAAa;AACnD,wBAAwB,iBAAiB,EAAE,gBAAgB;AAC3D,wBAAwB,iBAAiB,EAAE,gBAAgB;AAC3D;AACA,iBAAiB;AACjB,SAAS,CAAC,EAAE,cAAc,EAAE,MAAM,EAAE,EAAE,CAAC;AAChC,MAAM,oBAAoB,CAAC;AAClC,IAAI,WAAW,GAAG;AAClB,QAAQ,IAAI,CAAC,EAAE,GAAG,MAAM,CAAC,kBAAkB,CAAC;AAC5C,QAAQ,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE,CAAC;AAC3E,QAAQ,IAAI,CAAC,EAAE,GAAG,MAAM,CAAC,UAAU,CAAC;AACpC,QAAQ,IAAI,CAAC,UAAU,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;AACvF,QAAQ,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;AAClF;AACA,IAAI,eAAe,GAAG;AACtB,QAAQ,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;AACvE,QAAQ,IAAI,IAAI,CAAC,UAAU,EAAE,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE;AACnD,YAAY,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;AACjD;AACA;AACA,IAAI,WAAW,GAAG;AAClB,QAAQ,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,WAAW,EAAE;AACpC;AACA,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,oBAAoB,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,SAAS,EAAE,CAAC,CAAC;AACtL,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,oBAAoB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,oBAAoB,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,EAAE,iBAAiB,EAAE,UAAU,EAAE,UAAU,EAAE,aAAa,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,SAAS,EAAE,EAAE,MAAM,EAAE,eAAe,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC;AACzX;AACA,EAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,oBAAoB,EAAE,UAAU,EAAE,CAAC;AAC9H,YAAY,IAAI,EAAE,SAAS;AAC3B,YAAY,IAAI,EAAE,CAAC;AACnB,oBAAoB,UAAU,EAAE,IAAI;AACpC,oBAAoB,QAAQ,EAAE,eAAe;AAC7C,oBAAoB,IAAI,EAAE;AAC1B,wBAAwB,QAAQ,EAAE,eAAe;AACjD;AACA,iBAAiB;AACjB,SAAS,CAAC,EAAE,CAAC;;ACzHb,MAAM,uBAAuB,CAAC;AAC9B,IAAI,WAAW,GAAG;AAClB,QAAQ,IAAI,CAAC,UAAU,GAAG,MAAM,EAAE,UAAU,EAAE;AAC9C,QAAQ,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC;AACzC,QAAQ,IAAI,CAAC,eAAe,GAAG,MAAM,EAAE;AACvC;AACA,IAAI,WAAW,CAAC,CAAC,EAAE;AACnB,QAAQ,CAAC,CAAC,cAAc,EAAE;AAC1B,QAAQ,CAAC,CAAC,eAAe,EAAE;AAC3B,QAAQ,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC;AACpC;AACA,IAAI,IAAI,CAAC,IAAI,EAAE,aAAa,EAAE;AAC9B,QAAQ,MAAM,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa;AAChD;AACA,QAAQ,MAAM,UAAU,GAAG,EAAE,CAAC;AAC9B,QAAQ,IAAI,aAAa,EAAE;AAC3B;AACA,YAAY,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,CAAC,KAAK,GAAG,aAAa,CAAC,IAAI,GAAG,UAAU,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;AACvG,YAAY,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,CAAC,MAAM,GAAG,aAAa,CAAC,GAAG,GAAG,UAAU,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;AACtG;AACA,aAAa;AACb;AACA,YAAY,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,CAAC,KAAK,GAAG,UAAU,CAAC,EAAE,CAAC,CAAC;AAC9E,YAAY,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC,EAAE,CAAC,CAAC;AAC9E;AACA,QAAQ,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,EAAE,SAAS,CAAC;AAC7C;AACA,IAAI,IAAI,GAAG;AACX,QAAQ,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,SAAS,CAAC;AAC3E;AACA,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,uBAAuB,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,SAAS,EAAE,CAAC,CAAC;AACzL,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,oBAAoB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,uBAAuB,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,iBAAiB,EAAE,OAAO,EAAE,EAAE,eAAe,EAAE,iBAAiB,EAAE,EAAE,IAAI,EAAE,EAAE,SAAS,EAAE,EAAE,WAAW,EAAE,qBAAqB,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,8UAA8U,CAAC,EAAE,CAAC,CAAC;AAClqB;AACA,EAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,uBAAuB,EAAE,UAAU,EAAE,CAAC;AACjI,YAAY,IAAI,EAAE,SAAS;AAC3B,YAAY,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,iBAAiB,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,8UAA8U,CAAC,EAAE;AAC5a,SAAS,CAAC,EAAE,cAAc,EAAE,EAAE,WAAW,EAAE,CAAC;AAC5C,gBAAgB,IAAI,EAAE,YAAY;AAClC,gBAAgB,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC;AAC9C,aAAa,CAAC,EAAE,EAAE,CAAC;AACnB;AACA;AACA;AACA;AACO,MAAM,qBAAqB,CAAC;AACnC,IAAI,WAAW,GAAG;AAClB,QAAQ,IAAI,CAAC,EAAE,GAAG,MAAM,CAAC,kBAAkB,CAAC;AAC5C,QAAQ,IAAI,CAAC,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC;AACxD,QAAQ,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC;AACzC,QAAQ,IAAI,CAAC,qBAAqB,GAAG,IAAI;AACzC,QAAQ,IAAI,CAAC,oBAAoB,GAAG,IAAI;AACxC,QAAQ,IAAI,CAAC,gBAAgB,GAAG,EAAE;AAClC,QAAQ,IAAI,CAAC,eAAe,GAAG,IAAI;AACnC,QAAQ,IAAI,CAAC,WAAW,GAAG,IAAI;AAC/B;AACA,QAAQ,IAAI,CAAC,gBAAgB,GAAG,MAAM,EAAE;AACxC,QAAQ,IAAI,CAAC,eAAe,GAAG,IAAI;AACnC;AACA,QAAQ,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,gBAAgB,CAAC,eAAe,CAAC,uBAAuB,CAAC;AAC7F;AACA,QAAQ,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,eAAe,CAAC,SAAS,CAAC,MAAM;AACtE,YAAY,IAAI,IAAI,CAAC,eAAe,EAAE;AACtC,gBAAgB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,eAAe,CAAC;AACxD;AACA,SAAS,CAAC;AACV;AACA,IAAI,UAAU,CAAC,IAAI,EAAE,QAAQ,EAAE;AAC/B,QAAQ,IAAI,CAAC,WAAW,GAAG,IAAI;AAC/B,QAAQ,IAAI,CAAC,eAAe,GAAG,QAAQ;AACvC;AACA,QAAQ,IAAI,eAAe,GAAG,IAAI;AAClC,QAAQ,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,QAAQ,CAAC,aAAa,CAAC,aAAa,EAAE;AACzE;AACA,YAAY,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,6BAA6B,CAAC;AACzE,gBAAgB,IAAI,CAAC,OAAO,CAAC,sBAAsB,CAAC;AACpD,gBAAgB,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,aAAa;AACpD,YAAY,IAAI,eAAe,EAAE;AACjC,gBAAgB,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,eAAe,EAAE,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,aAAa,CAAC;AACvG;AACA,iBAAiB;AACjB;AACA,gBAAgB,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,aAAa,CAAC;AACrG,gBAAgB,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,aAAa,EAAE,UAAU,EAAE,OAAO,CAAC;AACxG;AACA;AACA,aAAa;AACb,YAAY,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,aAAa,CAAC,aAAa;AACvF;AACA,QAAQ,MAAM,QAAQ,GAAG,IAAI,CAAC,qBAAqB,EAAE;AACrD,QAAQ,MAAM,aAAa,GAAG,eAAe,EAAE,qBAAqB,EAAE;AACtE,QAAQ,IAAI,CAAC,eAAe,EAAE,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AACpE;AACA,QAAQ,IAAI,CAAC,mBAAmB,EAAE;AAClC;AACA,IAAI,UAAU,GAAG;AACjB,QAAQ,IAAI,CAAC,WAAW,GAAG,IAAI;AAC/B,QAAQ,IAAI,CAAC,eAAe,GAAG,IAAI;AACnC,QAAQ,IAAI,CAAC,eAAe,EAAE,QAAQ,CAAC,IAAI,EAAE;AAC7C;AACA,IAAI,eAAe,CAAC,QAAQ,EAAE;AAC9B,QAAQ,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC;AACpC;AACA,IAAI,mBAAmB,GAAG;AAC1B,QAAQ,IAAI,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,IAAI,KAAK,eAAe,CAAC,EAAE;AAC3E,YAAY,OAAO;AACnB;AACA,QAAQ,MAAM,aAAa,GAAG,MAAM;AACpC,YAAY,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,eAAe,EAAE;AAC1D,gBAAgB,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,qBAAqB,EAAE;AACzE,gBAAgB,MAAM,gBAAgB,GAAG,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,aAAa,CAAC,aAAa;AAClG,gBAAgB,MAAM,aAAa,GAAG,gBAAgB,EAAE,qBAAqB,EAAE;AAC/E,gBAAgB,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC3E;AACA,SAAS;AACT;AACA,QAAQ,MAAM,eAAe,GAAG,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,6BAA6B,CAAC;AACxF,YAAY,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,sBAAsB,CAAC;AAC7D,QAAQ,IAAI,eAAe,EAAE;AAC7B,YAAY,eAAe,CAAC,gBAAgB,CAAC,QAAQ,EAAE,aAAa,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AACxF,YAAY,MAAM,OAAO,GAAG,MAAM,eAAe,CAAC,mBAAmB,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC9F,YAAY,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,eAAe,EAAE,CAAC;AAC9E,YAAY,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC;AAC/C;AACA;AACA,QAAQ,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,aAAa,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAC3E,QAAQ,MAAM,aAAa,GAAG,MAAM,MAAM,CAAC,mBAAmB,CAAC,QAAQ,EAAE,aAAa,CAAC;AACvF,QAAQ,MAAM,CAAC,cAAc,CAAC,aAAa,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,eAAe,EAAE,CAAC;AAChF,QAAQ,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,aAAa,CAAC;AACjD;AACA;AACA,IAAI,aAAa,CAAC,QAAQ,EAAE;AAC5B,QAAQ,IAAI,CAAC,qBAAqB,GAAG,QAAQ;AAC7C,QAAQ,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC;AAChD;AACA,QAAQ,IAAI,CAAC,OAAO,EAAE;AACtB;AACA,QAAQ,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;AACvD,QAAQ,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;AACnD,QAAQ,QAAQ,CAAC,gBAAgB,CAAC,WAAW,EAAE,WAAW,CAAC;AAC3D,QAAQ,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,SAAS,CAAC;AACvD,QAAQ,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM;AACzC,YAAY,QAAQ,CAAC,mBAAmB,CAAC,WAAW,EAAE,WAAW,CAAC;AAClE,YAAY,QAAQ,CAAC,mBAAmB,CAAC,SAAS,EAAE,SAAS,CAAC;AAC9D,SAAS,CAAC;AACV;AACA,IAAI,WAAW,CAAC,KAAK,EAAE;AACvB,QAAQ,IAAI,CAAC,IAAI,CAAC,qBAAqB;AACvC,YAAY;AACZ;AACA,QAAQ,MAAM,OAAO,GAAG,QAAQ,CAAC,gBAAgB,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC;AAC/E,QAAQ,MAAM,IAAI,GAAG,OAAO,EAAE,OAAO,CAAC,cAAc,CAAC;AACrD,QAAQ,IAAI,IAAI,EAAE;AAClB,YAAY,MAAM,SAAS,GAAG,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,IAAI,GAAG,CAAC;AAC5E,YAAY,MAAM,SAAS,GAAG,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,IAAI,GAAG,CAAC;AAC5E,YAAY,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC;AACpF;AACA;AACA,IAAI,SAAS,GAAG;AAChB,QAAQ,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,EAAE;AAC9C,QAAQ,IAAI,MAAM,EAAE;AACpB,YAAY,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC;AAC9C;AACA,QAAQ,IAAI,CAAC,qBAAqB,GAAG,IAAI;AACzC,QAAQ,IAAI,CAAC,OAAO,EAAE;AACtB;AACA,IAAI,gBAAgB,GAAG;AACvB,QAAQ,MAAM,cAAc,GAAG,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,iBAAiB,EAAE;AACnE,QAAQ,MAAM,WAAW,GAAG,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,cAAc,EAAE;AAC7D,QAAQ,IAAI,CAAC,cAAc,IAAI,CAAC,WAAW,EAAE;AAC7C,YAAY,OAAO,IAAI;AACvB;AACA;AACA,QAAQ,MAAM,QAAQ,GAAG,EAAE;AAC3B,QAAQ,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,WAAW;AAC1C;AACA,QAAQ,MAAM,aAAa,GAAG,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC;AACrE,QAAQ,IAAI,CAAC,aAAa,EAAE;AAC5B,YAAY,OAAO,CAAC,IAAI,CAAC,0BAA0B,CAAC;AACpD,YAAY,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,cAAc,EAAE;AAC7C,YAAY,OAAO,IAAI;AACvB;AACA;AACA,QAAQ,KAAK,IAAI,GAAG,GAAG,KAAK,CAAC,GAAG,GAAG,CAAC,EAAE,GAAG,IAAI,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;AAC7D,YAAY,MAAM,aAAa,GAAG,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC;AAClF,YAAY,IAAI,aAAa,EAAE;AAC/B,gBAAgB,QAAQ,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC;AAC5F;AACA;AACA;AACA,QAAQ,IAAI,CAAC,oBAAoB,GAAG,EAAE,aAAa,EAAE,cAAc,EAAE,QAAQ,EAAE;AAC/E;AACA,QAAQ,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,cAAc,EAAE;AACzC,QAAQ,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;AACjC,YAAY,OAAO;AACnB,gBAAgB,cAAc;AAC9B,gBAAgB,WAAW;AAC3B,gBAAgB,QAAQ,EAAE,IAAI,CAAC;AAC/B,aAAa;AACb;AACA,QAAQ,OAAO,IAAI;AACnB;AACA,IAAI,uBAAuB,GAAG;AAC9B,QAAQ,OAAO,IAAI,CAAC,oBAAoB;AACxC;AACA,IAAI,OAAO,GAAG;AACd,QAAQ,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC;AACjD,QAAQ,IAAI,CAAC,gBAAgB,GAAG,EAAE;AAClC;AACA,IAAI,WAAW,GAAG;AAClB,QAAQ,IAAI,CAAC,OAAO,EAAE;AACtB,QAAQ,IAAI,IAAI,CAAC,eAAe,EAAE;AAClC,YAAY,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE;AAC1C;AACA;AACA,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,qBAAqB,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,SAAS,EAAE,CAAC,CAAC;AACvL,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,oBAAoB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,qBAAqB,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,yBAAyB,EAAE,OAAO,EAAE,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC;AACrP;AACA,EAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,qBAAqB,EAAE,UAAU,EAAE,CAAC;AAC/H,YAAY,IAAI,EAAE,SAAS;AAC3B,YAAY,IAAI,EAAE,CAAC;AACnB,oBAAoB,UAAU,EAAE,IAAI;AACpC,oBAAoB,QAAQ,EAAE;AAC9B,iBAAiB;AACjB,SAAS,CAAC,EAAE,cAAc,EAAE,MAAM,EAAE,EAAE,CAAC;;AC9NhC,MAAM,uBAAuB,CAAC;AACrC,IAAI,WAAW,GAAG;AAClB,QAAQ,IAAI,CAAC,EAAE,GAAG,MAAM,CAAC,kBAAkB,CAAC;AAC5C,QAAQ,IAAI,CAAC,EAAE,GAAG,MAAM,CAAC,UAAU,CAAC;AACpC,QAAQ,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,qBAAqB,CAAC;AAClD,QAAQ,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,sBAAsB,EAAE,CAAC;AACpF,QAAQ,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,6BAA6B,EAAE,CAAC;AAC5E,QAAQ,IAAI,CAAC,UAAU,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE;AACvD,YAAY,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;AAC/D,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;AACtD,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,cAAc,EAAE,CAAC;AAC/C;AACA,QAAQ,MAAM,CAAC,MAAM;AACrB,YAAY,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE;AACnC,gBAAgB,qBAAqB,CAAC,MAAM;AAC5C,oBAAoB,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;AACjF,iBAAiB,CAAC;AAClB;AACA,iBAAiB,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,EAAE;AAChG;AACA,gBAAgB,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE;AACvC;AACA,SAAS,CAAC;AACV;AACA,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,uBAAuB,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,SAAS,EAAE,CAAC,CAAC;AACzL,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,oBAAoB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,uBAAuB,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,wBAAwB,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,EAAE,iBAAiB,EAAE,UAAU,EAAE,UAAU,EAAE,sBAAsB,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,EAAE,iBAAiB,EAAE,SAAS,EAAE,UAAU,EAAE,6BAA6B,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC;AAC9e;AACA,EAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,uBAAuB,EAAE,UAAU,EAAE,CAAC;AACjI,YAAY,IAAI,EAAE,SAAS;AAC3B,YAAY,IAAI,EAAE,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,wBAAwB,EAAE;AAC3E,SAAS,CAAC,EAAE,cAAc,EAAE,MAAM,EAAE,EAAE,CAAC;;AC9BvC;;ACJA;AACA;AACA;;;;"}
|
|
1
|
+
{"version":3,"file":"ng-atomic-common-services-spreadsheet.mjs","sources":["../tmp-esm2022/services/spreadsheet/features/data.service.js","../tmp-esm2022/services/spreadsheet/features/grid.service.js","../tmp-esm2022/services/spreadsheet/features/navigation.service.js","../tmp-esm2022/services/spreadsheet/features/selection.service.js","../tmp-esm2022/services/spreadsheet/features/clipboard.service.js","../tmp-esm2022/services/spreadsheet/features/protection.service.js","../tmp-esm2022/services/spreadsheet/features/editor.service.js","../tmp-esm2022/services/spreadsheet/features/autofill.service.js","../tmp-esm2022/services/spreadsheet/spreadsheet.service.js","../tmp-esm2022/services/spreadsheet/directives/grid-cell.directive.js","../tmp-esm2022/services/spreadsheet/directives/grid-table-autofill.directive.js","../tmp-esm2022/services/spreadsheet/directives/grid-cell-autofill.directive.js","../tmp-esm2022/services/spreadsheet/index.js","../tmp-esm2022/services/spreadsheet/ng-atomic-common-services-spreadsheet.js"],"sourcesContent":["import { Injectable, signal } from \"@angular/core\";\nimport * as i0 from \"@angular/core\";\nexport class SpreadSheetDataService {\n constructor() {\n this.displayedColumns = signal([]);\n this.items = signal([]);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SpreadSheetDataService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SpreadSheetDataService }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SpreadSheetDataService, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvQG5nLWF0b21pYy9jb21tb24vc3JjL2xpYi9zZXJ2aWNlcy9zcHJlYWRzaGVldC9mZWF0dXJlcy9kYXRhLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBSW5ELE1BQU0sT0FBTyxzQkFBc0I7SUFEbkM7UUFFVyxxQkFBZ0IsR0FBRyxNQUFNLENBQVcsRUFBRSxDQUFDLENBQUM7UUFDeEMsVUFBSyxHQUFHLE1BQU0sQ0FBUSxFQUFFLENBQUMsQ0FBQztLQUNwQzs4R0FIWSxzQkFBc0I7a0hBQXRCLHNCQUFzQjs7MkZBQXRCLHNCQUFzQjtrQkFEbEMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIHNpZ25hbCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5cblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFNwcmVhZFNoZWV0RGF0YVNlcnZpY2Uge1xuICByZWFkb25seSBkaXNwbGF5ZWRDb2x1bW5zID0gc2lnbmFsPHN0cmluZ1tdPihbXSk7XG4gIHJlYWRvbmx5IGl0ZW1zID0gc2lnbmFsPGFueVtdPihbXSk7XG59XG4iXX0=","import { computed, inject, Injectable } from '@angular/core';\nimport { SpreadSheetDataService } from './data.service';\nimport * as i0 from \"@angular/core\";\nexport class GridService {\n constructor() {\n this.contextMap = new Map();\n this.data = inject(SpreadSheetDataService);\n this.maxCol = computed(() => this.data.displayedColumns().length - 1);\n this.maxRow = computed(() => this.data.items().length);\n }\n setContext(context) {\n this.contextMap.set(this.buildKey(context.position), context);\n }\n getContext(position) {\n return this.contextMap.get(this.buildKey(position)) ?? null;\n }\n buildKey(position) {\n return `(${position.row}, ${position.col})`;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: GridService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: GridService }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: GridService, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvQG5nLWF0b21pYy9jb21tb24vc3JjL2xpYi9zZXJ2aWNlcy9zcHJlYWRzaGVldC9mZWF0dXJlcy9ncmlkLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTdELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDOztBQUd4RCxNQUFNLE9BQU8sV0FBVztJQUR4QjtRQUVxQixlQUFVLEdBQUcsSUFBSSxHQUFHLEVBQXVCLENBQUM7UUFDNUMsU0FBSSxHQUFHLE1BQU0sQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO1FBRWhELFdBQU0sR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztRQUNqRSxXQUFNLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUM7S0FhNUQ7SUFYQyxVQUFVLENBQUMsT0FBb0I7UUFDN0IsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDaEUsQ0FBQztJQUVELFVBQVUsQ0FBQyxRQUFrQjtRQUMzQixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUM7SUFDOUQsQ0FBQztJQUVTLFFBQVEsQ0FBQyxRQUFrQjtRQUNuQyxPQUFPLElBQUksUUFBUSxDQUFDLEdBQUcsS0FBSyxRQUFRLENBQUMsR0FBRyxHQUFHLENBQUM7SUFDOUMsQ0FBQzs4R0FqQlUsV0FBVztrSEFBWCxXQUFXOzsyRkFBWCxXQUFXO2tCQUR2QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY29tcHV0ZWQsIGluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ2VsbENvbnRleHQsIFBvc2l0aW9uIH0gZnJvbSAnLi4vbW9kZWxzL2NlbGwubW9kZWwnO1xuaW1wb3J0IHsgU3ByZWFkU2hlZXREYXRhU2VydmljZSB9IGZyb20gJy4vZGF0YS5zZXJ2aWNlJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEdyaWRTZXJ2aWNlIHtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGNvbnRleHRNYXAgPSBuZXcgTWFwPHN0cmluZywgQ2VsbENvbnRleHQ+KCk7XG4gIHByb3RlY3RlZCByZWFkb25seSBkYXRhID0gaW5qZWN0KFNwcmVhZFNoZWV0RGF0YVNlcnZpY2UpO1xuXG4gIHJlYWRvbmx5IG1heENvbCA9IGNvbXB1dGVkKCgpID0+IHRoaXMuZGF0YS5kaXNwbGF5ZWRDb2x1bW5zKCkubGVuZ3RoIC0gMSk7XG4gIHJlYWRvbmx5IG1heFJvdyA9IGNvbXB1dGVkKCgpID0+IHRoaXMuZGF0YS5pdGVtcygpLmxlbmd0aCk7XG5cbiAgc2V0Q29udGV4dChjb250ZXh0OiBDZWxsQ29udGV4dCk6IHZvaWQge1xuICAgIHRoaXMuY29udGV4dE1hcC5zZXQodGhpcy5idWlsZEtleShjb250ZXh0LnBvc2l0aW9uKSwgY29udGV4dCk7XG4gIH1cblxuICBnZXRDb250ZXh0KHBvc2l0aW9uOiBQb3NpdGlvbik6IENlbGxDb250ZXh0IHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuY29udGV4dE1hcC5nZXQodGhpcy5idWlsZEtleShwb3NpdGlvbikpID8/IG51bGw7XG4gIH1cblxuICBwcm90ZWN0ZWQgYnVpbGRLZXkocG9zaXRpb246IFBvc2l0aW9uKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCgke3Bvc2l0aW9uLnJvd30sICR7cG9zaXRpb24uY29sfSlgO1xuICB9XG59Il19","import { inject, Injectable } from '@angular/core';\nimport { GridService } from './grid.service';\nimport * as i0 from \"@angular/core\";\nexport class NavigationService {\n constructor() {\n this.gridService = inject(GridService);\n }\n moveToNextCell({ row, col }) {\n if (col < this.gridService.maxCol()) {\n return { row, col: col + 1 };\n }\n else if (row < this.gridService.maxRow()) {\n return { row: row + 1, col: 0 };\n }\n return { row, col };\n }\n moveToPreviousCell({ row, col }) {\n if (col > 0) {\n return { row, col: col - 1 };\n }\n else if (row > 0) {\n return { row: row - 1, col: this.gridService.maxCol() };\n }\n return { row, col };\n }\n moveToNextRow({ row, col }) {\n if (row < this.gridService.maxRow()) {\n return { row: row + 1, col };\n }\n return { row, col };\n }\n moveToPreviousRow({ row, col }) {\n if (row > 0) {\n return { row: row - 1, col };\n }\n return { row, col };\n }\n moveRight(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 moveLeft({ row, col }) {\n if (col > 0) {\n return { row, col: col - 1 };\n }\n return { row, col };\n }\n moveUp({ row, col }) {\n if (row > 0) {\n return { row: row - 1, col };\n }\n return { row, col };\n }\n moveDown({ row, col }) {\n if (row < this.gridService.maxRow()) {\n return { row: row + 1, col };\n }\n return { row, col };\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: NavigationService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: NavigationService }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: NavigationService, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2aWdhdGlvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvQG5nLWF0b21pYy9jb21tb24vc3JjL2xpYi9zZXJ2aWNlcy9zcHJlYWRzaGVldC9mZWF0dXJlcy9uYXZpZ2F0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFbkQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDOztBQUc3QyxNQUFNLE9BQU8saUJBQWlCO0lBRDlCO1FBRVUsZ0JBQVcsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUE7S0E4RDFDO0lBNURDLGNBQWMsQ0FBQyxFQUFDLEdBQUcsRUFBRSxHQUFHLEVBQVc7UUFDakMsSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDO1lBQ3BDLE9BQU8sRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUMvQixDQUFDO2FBQU0sSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDO1lBQzNDLE9BQU8sRUFBRSxHQUFHLEVBQUUsR0FBRyxHQUFHLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUM7UUFDbEMsQ0FBQztRQUNELE9BQU8sRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUM7SUFDdEIsQ0FBQztJQUVELGtCQUFrQixDQUFDLEVBQUMsR0FBRyxFQUFFLEdBQUcsRUFBVztRQUNyQyxJQUFJLEdBQUcsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUNaLE9BQU8sRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUMvQixDQUFDO2FBQU0sSUFBSSxHQUFHLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDbkIsT0FBTyxFQUFFLEdBQUcsRUFBRSxHQUFHLEdBQUcsQ0FBQyxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUM7UUFDMUQsQ0FBQztRQUNELE9BQU8sRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUM7SUFDdEIsQ0FBQztJQUVELGFBQWEsQ0FBQyxFQUFDLEdBQUcsRUFBRSxHQUFHLEVBQVc7UUFDaEMsSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDO1lBQ3BDLE9BQU8sRUFBRSxHQUFHLEVBQUUsR0FBRyxHQUFHLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQztRQUMvQixDQUFDO1FBQ0QsT0FBTyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBRUQsaUJBQWlCLENBQUMsRUFBQyxHQUFHLEVBQUUsR0FBRyxFQUFXO1FBQ3BDLElBQUksR0FBRyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ1osT0FBTyxFQUFFLEdBQUcsRUFBRSxHQUFHLEdBQUcsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDO1FBQy9CLENBQUM7UUFDRCxPQUFPLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDO0lBQ3RCLENBQUM7SUFFRCxTQUFTLENBQUMsUUFBa0I7UUFDMUIsTUFBTSxFQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUMsR0FBRyxRQUFRLENBQUM7UUFDNUIsSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDO1lBQ3BDLE9BQU8sRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUMvQixDQUFDO1FBQ0QsT0FBTyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBRUQsUUFBUSxDQUFDLEVBQUMsR0FBRyxFQUFFLEdBQUcsRUFBVztRQUMzQixJQUFJLEdBQUcsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUNaLE9BQU8sRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUMvQixDQUFDO1FBQ0QsT0FBTyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBRUQsTUFBTSxDQUFDLEVBQUMsR0FBRyxFQUFFLEdBQUcsRUFBVztRQUN6QixJQUFJLEdBQUcsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUNaLE9BQU8sRUFBRSxHQUFHLEVBQUUsR0FBRyxHQUFHLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQztRQUMvQixDQUFDO1FBQ0QsT0FBTyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBRUQsUUFBUSxDQUFDLEVBQUMsR0FBRyxFQUFFLEdBQUcsRUFBVztRQUMzQixJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUM7WUFDcEMsT0FBTyxFQUFFLEdBQUcsRUFBRSxHQUFHLEdBQUcsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDO1FBQy9CLENBQUM7UUFDRCxPQUFPLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDO0lBQ3RCLENBQUM7OEdBOURVLGlCQUFpQjtrSEFBakIsaUJBQWlCOzsyRkFBakIsaUJBQWlCO2tCQUQ3QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBQb3NpdGlvbiB9IGZyb20gJy4uL21vZGVscy9jZWxsLm1vZGVsJztcbmltcG9ydCB7IEdyaWRTZXJ2aWNlIH0gZnJvbSAnLi9ncmlkLnNlcnZpY2UnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgTmF2aWdhdGlvblNlcnZpY2Uge1xuICBwcml2YXRlIGdyaWRTZXJ2aWNlID0gaW5qZWN0KEdyaWRTZXJ2aWNlKVxuXG4gIG1vdmVUb05leHRDZWxsKHtyb3csIGNvbH06IFBvc2l0aW9uKTogUG9zaXRpb24ge1xuICAgIGlmIChjb2wgPCB0aGlzLmdyaWRTZXJ2aWNlLm1heENvbCgpKSB7XG4gICAgICByZXR1cm4geyByb3csIGNvbDogY29sICsgMSB9O1xuICAgIH0gZWxzZSBpZiAocm93IDwgdGhpcy5ncmlkU2VydmljZS5tYXhSb3coKSkge1xuICAgICAgcmV0dXJuIHsgcm93OiByb3cgKyAxLCBjb2w6IDAgfTtcbiAgICB9XG4gICAgcmV0dXJuIHsgcm93LCBjb2wgfTtcbiAgfVxuXG4gIG1vdmVUb1ByZXZpb3VzQ2VsbCh7cm93LCBjb2x9OiBQb3NpdGlvbik6IFBvc2l0aW9uIHtcbiAgICBpZiAoY29sID4gMCkge1xuICAgICAgcmV0dXJuIHsgcm93LCBjb2w6IGNvbCAtIDEgfTtcbiAgICB9IGVsc2UgaWYgKHJvdyA+IDApIHtcbiAgICAgIHJldHVybiB7IHJvdzogcm93IC0gMSwgY29sOiB0aGlzLmdyaWRTZXJ2aWNlLm1heENvbCgpIH07XG4gICAgfVxuICAgIHJldHVybiB7IHJvdywgY29sIH07XG4gIH1cblxuICBtb3ZlVG9OZXh0Um93KHtyb3csIGNvbH06IFBvc2l0aW9uKTogUG9zaXRpb24ge1xuICAgIGlmIChyb3cgPCB0aGlzLmdyaWRTZXJ2aWNlLm1heFJvdygpKSB7XG4gICAgICByZXR1cm4geyByb3c6IHJvdyArIDEsIGNvbCB9O1xuICAgIH1cbiAgICByZXR1cm4geyByb3csIGNvbCB9O1xuICB9XG5cbiAgbW92ZVRvUHJldmlvdXNSb3coe3JvdywgY29sfTogUG9zaXRpb24pOiBQb3NpdGlvbiB7XG4gICAgaWYgKHJvdyA+IDApIHtcbiAgICAgIHJldHVybiB7IHJvdzogcm93IC0gMSwgY29sIH07XG4gICAgfVxuICAgIHJldHVybiB7IHJvdywgY29sIH07XG4gIH1cblxuICBtb3ZlUmlnaHQocG9zaXRpb246IFBvc2l0aW9uKTogUG9zaXRpb24ge1xuICAgIGNvbnN0IHtyb3csIGNvbH0gPSBwb3NpdGlvbjtcbiAgICBpZiAoY29sIDwgdGhpcy5ncmlkU2VydmljZS5tYXhDb2woKSkge1xuICAgICAgcmV0dXJuIHsgcm93LCBjb2w6IGNvbCArIDEgfTtcbiAgICB9XG4gICAgcmV0dXJuIHsgcm93LCBjb2wgfTtcbiAgfVxuXG4gIG1vdmVMZWZ0KHtyb3csIGNvbH06IFBvc2l0aW9uKTogUG9zaXRpb24ge1xuICAgIGlmIChjb2wgPiAwKSB7XG4gICAgICByZXR1cm4geyByb3csIGNvbDogY29sIC0gMSB9O1xuICAgIH1cbiAgICByZXR1cm4geyByb3csIGNvbCB9O1xuICB9XG5cbiAgbW92ZVVwKHtyb3csIGNvbH06IFBvc2l0aW9uKTogUG9zaXRpb24ge1xuICAgIGlmIChyb3cgPiAwKSB7XG4gICAgICByZXR1cm4geyByb3c6IHJvdyAtIDEsIGNvbCB9O1xuICAgIH1cbiAgICByZXR1cm4geyByb3csIGNvbCB9O1xuICB9XG5cbiAgbW92ZURvd24oe3JvdywgY29sfTogUG9zaXRpb24pOiBQb3NpdGlvbiB7XG4gICAgaWYgKHJvdyA8IHRoaXMuZ3JpZFNlcnZpY2UubWF4Um93KCkpIHtcbiAgICAgIHJldHVybiB7IHJvdzogcm93ICsgMSwgY29sIH07XG4gICAgfVxuICAgIHJldHVybiB7IHJvdywgY29sIH07XG4gIH1cbn0iXX0=","import { computed, effect, inject, Injectable, signal } from '@angular/core';\nimport { GridService } from './grid.service';\nimport { isEqual } from 'lodash-es';\nimport { SpreadSheetDataService } from './data.service';\nimport * as i0 from \"@angular/core\";\nexport class SelectionService {\n constructor() {\n this.data = inject(SpreadSheetDataService);\n this.selection = signal({ start: { row: 1, col: 0 }, end: null });\n this.selectionStart = computed(() => this.selection().start, { equal: isEqual });\n this.isMouseDown = signal(false);\n this.grid = inject(GridService);\n this.cellElMap = new Map();\n effect(() => {\n const position = this.selectionStart();\n if (position)\n this.focus(position);\n });\n }\n isSelected(position) {\n // selectionの範囲に含まれているかどうかを返す\n const selection = this.selection();\n if (!selection)\n return false;\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 isCursorPosition(position) {\n return isEqual(this.selection().start, position);\n }\n handleMouseDown(position, event) {\n this.isMouseDown.set(true);\n if (!event?.shiftKey) {\n this.startSelection(position);\n }\n }\n handleMouseUp() {\n this.isMouseDown.set(false);\n }\n handleMouseEnter(position) {\n if (this.isMouseDown()) {\n this.updateSelection(position);\n }\n }\n handleClick(position, event) {\n if (!this.isMouseDown()) {\n if (event?.shiftKey) {\n this.updateSelectionEnd(position);\n }\n else {\n this.startSelection(position);\n }\n }\n }\n clearSelection() {\n this.selection.update((selection) => ({ ...selection, start: selection.start, end: null }));\n }\n setStartPosition(position) {\n this.selection.update((selection) => ({ ...selection, start: position, end: null }));\n }\n getSelection() {\n return this.selection();\n }\n getSelectionEndOrStart() {\n return this.selection()?.end || this.selection()?.start;\n }\n updateSelectionEnd(position) {\n this.selection.update((selection) => ({ ...selection, end: position }));\n }\n startSelection(position) {\n this.selection.set({ start: position, end: null });\n }\n updateSelection(position) {\n if (this.selection()) {\n this.selection.update((selection) => ({ ...selection, end: position }));\n }\n }\n clearSelectedRange(selection) {\n }\n setCell(position, el) {\n this.cellElMap.set(`${this.buildKey(position)}`, el);\n }\n getCell(position) {\n return this.cellElMap.get(this.buildKey(position)) ?? null;\n }\n focus(position) {\n setTimeout(() => {\n const el = this.getCell(position);\n if (el && el !== document.activeElement) {\n el.focus();\n }\n });\n }\n buildKey(position) {\n return `(${position.row}, ${position.col})`;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SelectionService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SelectionService }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SelectionService, decorators: [{\n type: Injectable\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9AbmctYXRvbWljL2NvbW1vbi9zcmMvbGliL3NlcnZpY2VzL3NwcmVhZHNoZWV0L2ZlYXR1cmVzL3NlbGVjdGlvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTdFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDOztBQUd4RCxNQUFNLE9BQU8sZ0JBQWdCO0lBUTNCO1FBUG1CLFNBQUksR0FBRyxNQUFNLENBQUMsc0JBQXNCLENBQUMsQ0FBQztRQUN4QyxjQUFTLEdBQUcsTUFBTSxDQUFZLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFDLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFDdkUsbUJBQWMsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBQzVFLGdCQUFXLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzVCLFNBQUksR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDM0IsY0FBUyxHQUFHLElBQUksR0FBRyxFQUFnQyxDQUFDO1FBR25FLE1BQU0sQ0FBQyxHQUFHLEVBQUU7WUFDVixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsY0FB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QUFDLFFBQVEsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDdkQsQ0FBQztJQUVELE9BQU8sQ0FBQyxRQUFrQjtRQUN4QixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUM7SUFDN0QsQ0FBQztJQUVELEtBQUssQ0FBQyxRQUFrQjtRQUN0QixVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ2QsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUNsQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEtBQUssUUFBUSxDQUFDLGFBQWEsRUFBRSxDQUFDO2dCQUN4QyxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDYixDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRVMsUUFBUSxDQUFDLFFBQWtCO1FBQ25DLE9BQU8sSUFBSSxRQUFRLENBQUMsR0FBRyxLQUFLLFFBQVEsQ0FBQyxHQUFHLEdBQUcsQ0FBQztJQUM5QyxDQUFDOzhHQWpIVSxnQkFBZ0I7a0hBQWhCLGdCQUFnQjs7MkZBQWhCLGdCQUFnQjtrQkFENUIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNvbXB1dGVkLCBlZmZlY3QsIGluamVjdCwgSW5qZWN0YWJsZSwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTZWxlY3Rpb24sIFBvc2l0aW9uIH0gZnJvbSAnLi4vbW9kZWxzL2NlbGwubW9kZWwnO1xuaW1wb3J0IHsgR3JpZFNlcnZpY2UgfSBmcm9tICcuL2dyaWQuc2VydmljZSc7XG5pbXBvcnQgeyBpc0VxdWFsIH0gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCB7IFNwcmVhZFNoZWV0RGF0YVNlcnZpY2UgfSBmcm9tICcuL2RhdGEuc2VydmljZSc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBTZWxlY3Rpb25TZXJ2aWNlIHtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGRhdGEgPSBpbmplY3QoU3ByZWFkU2hlZXREYXRhU2VydmljZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgc2VsZWN0aW9uID0gc2lnbmFsPFNlbGVjdGlvbj4oeyBzdGFydDogeyByb3c6IDEsIGNvbDogMH0sIGVuZDogbnVsbCB9KTtcbiAgcHJpdmF0ZSByZWFkb25seSBzZWxlY3Rpb25TdGFydCA9IGNvbXB1dGVkKCgpID0+IHRoaXMuc2VsZWN0aW9uKCkuc3RhcnQsIHsgZXF1YWw6IGlzRXF1YWwgfSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgaXNNb3VzZURvd24gPSBzaWduYWwoZmFsc2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IGdyaWQgPSBpbmplY3QoR3JpZFNlcnZpY2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IGNlbGxFbE1hcCA9IG5ldyBNYXA8c3RyaW5nLCBIVE1MVGFibGVDZWxsRWxlbWVudD4oKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgY29uc3QgcG9zaXRpb24gPSB0aGlzLnNlbGVjdGlvblN0YXJ0KCk7XG4gICAgICBpZiAocG9zaXRpb24pIHRoaXMuZm9jdXMocG9zaXRpb24pO1xuICAgIH0pO1xuICB9XG5cbiAgaXNTZWxlY3RlZChwb3NpdGlvbjogUG9zaXRpb24pOiBib29sZWFuIHtcbiAgICAvLyBzZWxlY3Rpb27jga7nr4Tlm7LjgavlkKvjgb7jgozjgabjgYTjgovjgYvjganjgYbjgYvjgpLov5TjgZlcbiAgICBjb25zdCBzZWxlY3Rpb24gPSB0aGlzLnNlbGVjdGlvbigpO1xuICAgIGlmICghc2VsZWN0aW9uKSByZXR1cm4gZmFsc2U7XG5cbiAgICBjb25zdCB7IHN0YXJ0LCBlbmQgfSA9IHNlbGVjdGlvbjtcbiAgICBjb25zdCBtaW5Sb3cgPSBNYXRoLm1pbihzdGFydC5yb3csIGVuZD8ucm93ID8/IHN0YXJ0LnJvdyk7XG4gICAgY29uc3QgbWF4Um93ID0gTWF0aC5tYXgoc3RhcnQucm93LCBlbmQ/LnJvdyA/PyBzdGFydC5yb3cpO1xuICAgIGNvbnN0IG1pbkNvbCA9IE1hdGgubWluKHN0YXJ0LmNvbCwgZW5kPy5jb2wgPz8gc3RhcnQuY29sKTtcbiAgICBjb25zdCBtYXhDb2wgPSBNYXRoLm1heChzdGFydC5jb2wsIGVuZD8uY29sID8/IHN0YXJ0LmNvbCk7XG4gICAgY29uc3QgeyByb3csIGNvbCB9ID0gcG9zaXRpb247XG4gICAgcmV0dXJuIHJvdyA+PSBtaW5Sb3cgJiYgcm93IDw9IG1heFJvdyAmJiBjb2wgPj0gbWluQ29sICYmIGNvbCA8PSBtYXhDb2w7XG4gIH1cblxuICBpc0N1cnNvclBvc2l0aW9uKHBvc2l0aW9uOiBQb3NpdGlvbik6IGJvb2xlYW4ge1xuICAgIHJldHVybiBpc0VxdWFsKHRoaXMuc2VsZWN0aW9uKCkuc3RhcnQsIHBvc2l0aW9uKTtcbiAgfVxuXG4gIGhhbmRsZU1vdXNlRG93bihwb3NpdGlvbjogUG9zaXRpb24sIGV2ZW50PzogTW91c2VFdmVudCk6IHZvaWQge1xuICAgIHRoaXMuaXNNb3VzZURvd24uc2V0KHRydWUpO1xuICAgIGlmICghZXZlbnQ/LnNoaWZ0S2V5KSB7XG4gICAgICB0aGlzLnN0YXJ0U2VsZWN0aW9uKHBvc2l0aW9uKTtcbiAgICB9XG4gIH1cblxuICBoYW5kbGVNb3VzZVVwKCk6IHZvaWQge1xuICAgIHRoaXMuaXNNb3VzZURvd24uc2V0KGZhbHNlKTtcbiAgfVxuXG4gIGhhbmRsZU1vdXNlRW50ZXIocG9zaXRpb246IFBvc2l0aW9uKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaXNNb3VzZURvd24oKSkge1xuICAgICAgdGhpcy51cGRhdGVTZWxlY3Rpb24ocG9zaXRpb24pO1xuICAgIH1cbiAgfVxuXG4gIGhhbmRsZUNsaWNrKHBvc2l0aW9uOiBQb3NpdGlvbiwgZXZlbnQ/OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmlzTW91c2VEb3duKCkpIHtcbiAgICAgIGlmIChldmVudD8uc2hpZnRLZXkpIHtcbiAgICAgICAgdGhpcy51cGRhdGVTZWxlY3Rpb25FbmQocG9zaXRpb24pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5zdGFydFNlbGVjdGlvbihwb3NpdGlvbik7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgY2xlYXJTZWxlY3Rpb24oKTogdm9pZCB7XG4gICAgdGhpcy5zZWxlY3Rpb24udXBkYXRlKChzZWxlY3Rpb24pID0+ICh7Li4uc2VsZWN0aW9uLCBzdGFydDogc2VsZWN0aW9uLnN0YXJ0LCBlbmQ6IG51bGx9KSk7XG4gIH1cblxuICBzZXRTdGFydFBvc2l0aW9uKHBvc2l0aW9uOiBQb3NpdGlvbik6IHZvaWQge1xuICAgIHRoaXMuc2VsZWN0aW9uLnVwZGF0ZSgoc2VsZWN0aW9uKSA9PiAoey4uLnNlbGVjdGlvbiwgc3RhcnQ6IHBvc2l0aW9uLCBlbmQ6IG51bGx9KSk7XG4gIH1cblxuICBnZXRTZWxlY3Rpb24oKTogU2VsZWN0aW9uIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0aW9uKCk7XG4gIH1cblxuICBnZXRTZWxlY3Rpb25FbmRPclN0YXJ0KCk6IFBvc2l0aW9uIHtcbiAgICByZXR1cm4gdGhpcy5zZWxlY3Rpb24oKT8uZW5kIHx8IHRoaXMuc2VsZWN0aW9uKCk/LnN0YXJ0O1xuICB9XG5cbiAgdXBkYXRlU2VsZWN0aW9uRW5kKHBvc2l0aW9uOiBQb3NpdGlvbik6IHZvaWQge1xuICAgIHRoaXMuc2VsZWN0aW9uLnVwZGF0ZSgoc2VsZWN0aW9uKSA9PiAoey4uLnNlbGVjdGlvbiwgZW5kOiBwb3NpdGlvbn0pKTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhcnRTZWxlY3Rpb24ocG9zaXRpb246IFBvc2l0aW9uKTogdm9pZCB7XG4gICAgdGhpcy5zZWxlY3Rpb24uc2V0KHsgc3RhcnQ6IHBvc2l0aW9uLCBlbmQ6IG51bGwgfSk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZVNlbGVjdGlvbihwb3NpdGlvbjogUG9zaXRpb24pOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zZWxlY3Rpb24oKSkge1xuICAgICAgdGhpcy5zZWxlY3Rpb24udXBkYXRlKChzZWxlY3Rpb24pID0+ICh7Li4uc2VsZWN0aW9uLCBlbmQ6IHBvc2l0aW9ufSkpO1xuICAgIH1cbiAgfVxuXG4gIGNsZWFyU2VsZWN0ZWRSYW5nZShzZWxlY3Rpb246IHsgc3RhcnQ6IHsgcm93OiBudW1iZXI7IGNvbDogbnVtYmVyIH07IGVuZDogeyByb3c6IG51bWJlcjsgY29sOiBudW1iZXIgfSB9KTogdm9pZCB7XG5cbiAgfVxuXG4gIHNldENlbGwocG9zaXRpb246IFBvc2l0aW9uLCBlbDogSFRNTFRhYmxlQ2VsbEVsZW1lbnQpOiB2b2lkIHtcbiAgICB0aGlzLmNlbGxFbE1hcC5zZXQoYCR7dGhpcy5idWlsZEtleShwb3NpdGlvbil9YCwgZWwpO1xuICB9XG5cbiAgZ2V0Q2VsbChwb3NpdGlvbjogUG9zaXRpb24pOiBIVE1MVGFibGVDZWxsRWxlbWVudCB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLmNlbGxFbE1hcC5nZXQodGhpcy5idWlsZEtleShwb3NpdGlvbikpID8/IG51bGw7XG4gIH1cblxuICBmb2N1cyhwb3NpdGlvbjogUG9zaXRpb24pOiB2b2lkIHtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGNvbnN0IGVsID0gdGhpcy5nZXRDZWxsKHBvc2l0aW9uKTtcbiAgICAgIGlmIChlbCAmJiBlbCAhPT0gZG9jdW1lbnQuYWN0aXZlRWxlbWVudCkge1xuICAgICAgICBlbC5mb2N1cygpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIGJ1aWxkS2V5KHBvc2l0aW9uOiBQb3NpdGlvbik6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAoJHtwb3NpdGlvbi5yb3d9LCAke3Bvc2l0aW9uLmNvbH0pYDtcbiAgfVxufSJdfQ==","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 { SelectionService } from './selection.service';\nimport { SpreadSheetDataService } from './data.service';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"./selection.service\";\nexport class ClipboardService {\n constructor(selectionService) {\n this.selectionService = selectionService;\n this.clipboard = inject(Clipboard);\n this.snackBar = inject(SnackBarService);\n this.data = inject(SpreadSheetDataService);\n this.dataAccessor = injectDataAccessor();\n this.expression = inject(EXPRESSION_TRANSFORMER);\n this.language = inject(LanguageService);\n }\n buildGridData(range) {\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 async copy() {\n const selection = this.selectionService.getSelection();\n if (!selection)\n 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)), { delimiter: \"\\t\", newline: \"\\n\", header: false });\n this.copyText(tsv);\n }\n setData(items, displayedColumns) {\n this.data.displayedColumns.set(displayedColumns);\n this.data.items.set(items);\n }\n copyText(text) {\n this.clipboard.copy(text);\n this.snackBar.open('クリップボードにコピーしました。');\n }\n async paste(targetRow, targetCol) {\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: ClipboardService, deps: [{ token: i1.SelectionService }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: ClipboardService }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: ClipboardService, decorators: [{\n type: Injectable\n }], ctorParameters: () => [{ type: i1.SelectionService }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpcGJvYXJkLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9AbmctYXRvbWljL2NvbW1vbi9zcmMvbGliL3NlcnZpY2VzL3NwcmVhZHNoZWV0L2ZlYXR1cmVzL2NsaXBib2FyZC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNuRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDdkUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDM0UsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDakUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3RFLE9BQU8sU0FBUyxNQUFNLFdBQVcsQ0FBQztBQUVsQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7O0FBR3hELE1BQU0sT0FBTyxnQkFBZ0I7SUFRM0IsWUFDVSxnQkFBa0M7UUFBbEMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQVJwQyxjQUFTLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzlCLGFBQVEsR0FBRyxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDakMsU0FBSSxHQUFHLE1BQU0sQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO1FBQ3ZDLGlCQUFZLEdBQUcsa0JBQWtCLEVBQUUsQ0FBQztRQUNwQyxlQUFVLEdBQUcsTUFBTSxDQUFDLHNCQUFzQixDQUFDLENBQUM7UUFDNUMsYUFBUSxHQUFHLE1BQU0sQ0FBQyxl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QyxHQUFHLENBQUMsQ0FBQztJQUNyQixDQUFDO0lBRUQsT0FBTyxDQUFDLEtBQVksRUFBRSxnQkFBMEI7UUFDOUMsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUNqRCxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQUVTLFFBQVEsQ0FBQyxJQUFZO1FBQzdCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzFCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUM7SUFDekMsQ0FBQztJQUVELEtBQUssQ0FBQyxLQUFLLENBQUMsU0FBaUIsRUFBRSxTQUFpQjtJQUNoRCxDQUFDOzhHQXBEVSxnQkFBZ0I7a0hBQWhCLGdCQUFnQjs7MkZBQWhCLGdCQUFnQjtrQkFENUIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ2xpcGJvYXJkIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NsaXBib2FyZCc7XG5pbXBvcnQgeyBTbmFja0JhclNlcnZpY2UgfSBmcm9tICdAbmctYXRvbWljL2NvbW1vbi9zZXJ2aWNlcy9zbmFjay1iYXInO1xuaW1wb3J0IHsgaW5qZWN0RGF0YUFjY2Vzc29yIH0gZnJvbSAnQG5nLWF0b21pYy9jb21tb24vcGlwZXMvZGF0YS1hY2Nlc3Nvcic7XG5pbXBvcnQgeyBFWFBSRVNTSU9OX1RSQU5TRk9STUVSIH0gZnJvbSAnQG5nLWF0b21pYy9jb21tb24vdXRpbHMnO1xuaW1wb3J0IHsgTGFuZ3VhZ2VTZXJ2aWNlIH0gZnJvbSAnQG5nLWF0b21pYy9jb21tb24vc2VydmljZXMvbGFuZ3VhZ2UnO1xuaW1wb3J0IHBhcGFwYXJzZSBmcm9tICdwYXBhcGFyc2UnO1xuaW1wb3J0IHsgQ2VsbCB9IGZyb20gJy4uL21vZGVscyc7XG5pbXBvcnQgeyBTZWxlY3Rpb25TZXJ2aWNlIH0gZnJvbSAnLi9zZWxlY3Rpb24uc2VydmljZSc7XG5pbXBvcnQgeyBTcHJlYWRTaGVldERhdGFTZXJ2aWNlIH0gZnJvbSAnLi9kYXRhLnNlcnZpY2UnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQ2xpcGJvYXJkU2VydmljZSB7XG4gIHByaXZhdGUgY2xpcGJvYXJkID0gaW5qZWN0KENsaXBib2FyZCk7XG4gIHByaXZhdGUgc25hY2tCYXIgPSBpbmplY3QoU25hY2tCYXJTZXJ2aWNlKTtcbiAgcHJvdGVjdGVkIGRhdGEgPSBpbmplY3QoU3ByZWFkU2hlZXREYXRhU2VydmljZSk7XG4gIHJlYWRvbmx5IGRhdGFBY2Nlc3NvciA9IGluamVjdERhdGFBY2Nlc3NvcigpO1xuICByZWFkb25seSBleHByZXNzaW9uID0gaW5qZWN0KEVYUFJFU1NJT05fVFJBTlNGT1JNRVIpO1xuICByZWFkb25seSBsYW5ndWFnZSA9IGluamVjdChMYW5ndWFnZVNlcnZpY2UpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgc2VsZWN0aW9uU2VydmljZTogU2VsZWN0aW9uU2VydmljZSxcbiAgKSB7IH1cblxuICBwcml2YXRlIGJ1aWxkR3JpZERhdGEocmFuZ2U6IHttaW5Sb3c6IG51bWJlcjsgbWF4Um93OiBudW1iZXI7IG1pbkNvbDogbnVtYmVyOyBtYXhDb2w6IG51bWJlcn0pOiBDZWxsW11bXSB7XG4gICAgY29uc3QgaGVhZGVyID0gdGhpcy5kYXRhLmRpc3BsYXllZENvbHVtbnMoKS5tYXAoY29sdW1uID0+ICh7XG4gICAgICBkYXRhVmFsdWU6IHRoaXMubGFuZ3VhZ2UudHJhbnNmb3JtKGNvbHVtbiksXG4gICAgICBleHByZXNzaW9uVmFsdWU6IHRoaXMubGFuZ3VhZ2UudHJhbnNmb3JtKGNvbHVtbiksXG4gICAgICBpc0hlYWRlcjogdHJ1ZVxuICAgIH0pKTtcbiAgICBjb25zdCByb3dzID0gdGhpcy5kYXRhLml0ZW1zKCkubWFwKGl0ZW0gPT4gdGhpcy5kYXRhLmRpc3BsYXllZENvbHVtbnMoKS5tYXAoY29sdW1uID0+ICh7XG4gICAgICBkYXRhVmFsdWU6IHRoaXMuZGF0YUFjY2Vzc29yKGl0ZW0sIGNvbHVtbiksXG4gICAgICBleHByZXNzaW9uVmFsdWU6IHRoaXMuZXhwcmVzc2lvbih0aGlzLmRhdGFBY2Nlc3NvcihpdGVtLCBjb2x1bW4pLCB7aXRlbSwgbmFtZTogY29sdW1ufSksXG4gICAgfSkpKTtcbiAgICBjb25zdCBmdWxsRGF0YSA9IFtoZWFkZXIsIC4uLnJvd3NdO1xuICAgIHJldHVybiBmdWxsRGF0YS5zbGljZShyYW5nZS5taW5Sb3csIHJhbmdlLm1heFJvdyArIDEpLm1hcChyb3cgPT4gcm93LnNsaWNlKHJhbmdlLm1pbkNvbCwgcmFuZ2UubWF4Q29sICsgMSkpO1xuICB9XG5cbiAgYXN5bmMgY29weSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBzZWxlY3Rpb24gPSB0aGlzLnNlbGVjdGlvblNlcnZpY2UuZ2V0U2VsZWN0aW9uKCk7XG4gICAgaWYgKCFzZWxlY3Rpb24pIHJldHVybjtcbiAgICBsZXQgeyBzdGFydCwgZW5kIH0gPSBzZWxlY3Rpb247XG4gICAgZW5kID0gZW5kID8/IHN0YXJ0O1xuICAgIGNvbnN0IG1pblJvdyA9IE1hdGgubWluKHN0YXJ0LnJvdywgZW5kLnJvdyk7XG4gICAgY29uc3QgbWF4Um93ID0gTWF0aC5tYXgoc3RhcnQucm93LCBlbmQucm93KTtcbiAgICBjb25zdCBtaW5Db2wgPSBNYXRoLm1pbihzdGFydC5jb2wsIGVuZC5jb2wpO1xuICAgIGNvbnN0IG1heENvbCA9IE1hdGgubWF4KHN0YXJ0LmNvbCwgZW5kLmNvbCk7XG4gICAgY29uc3Qgc2VsZWN0ZWREYXRhID0gdGhpcy5idWlsZEdyaWREYXRhKHttaW5Sb3csIG1heFJvdywgbWluQ29sLCBtYXhDb2x9KTtcbiAgICBjb25zdCB0c3YgPSBwYXBhcGFyc2UudW5wYXJzZShzZWxlY3RlZERhdGEubWFwKHJvdyA9PiByb3cubWFwKGNlbGwgPT4gY2VsbC5kYXRhVmFsdWUpKSxcbiAgICAgIHsgZGVsaW1pdGVyOiBcIlxcdFwiLCBuZXdsaW5lOiBcIlxcblwiLCBoZWFkZXI6IGZhbHNlIH0pO1xuICAgIHRoaXMuY29weVRleHQodHN2KTtcbiAgfVxuXG4gIHNldERhdGEoaXRlbXM6IGFueVtdLCBkaXNwbGF5ZWRDb2x1bW5zOiBzdHJpbmdbXSk6IHZvaWQge1xuICAgIHRoaXMuZGF0YS5kaXNwbGF5ZWRDb2x1bW5zLnNldChkaXNwbGF5ZWRDb2x1bW5zKTtcbiAgICB0aGlzLmRhdGEuaXRlbXMuc2V0KGl0ZW1zKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBjb3B5VGV4dCh0ZXh0OiBzdHJpbmcpIHtcbiAgICB0aGlzLmNsaXBib2FyZC5jb3B5KHRleHQpO1xuICAgIHRoaXMuc25hY2tCYXIub3Blbign44Kv44Oq44OD44OX44Oc44O844OJ44Gr44Kz44OU44O844GX44G+44GX44Gf44CCJyk7XG4gIH1cblxuICBhc3luYyBwYXN0ZSh0YXJnZXRSb3c6IG51bWJlciwgdGFyZ2V0Q29sOiBudW1iZXIpOiBQcm9taXNlPHZvaWQ+IHtcbiAgfVxufSJdfQ==","import { inject, Injectable, InjectionToken } from \"@angular/core\";\nimport * as i0 from \"@angular/core\";\nexport const COLUMN_PROTECTOR = new InjectionToken('COLUMN_PROTECTOR', {\n providedIn: 'root',\n factory: () => [],\n});\nexport function provideCellProtector(useFactory) {\n return { provide: COLUMN_PROTECTOR, useFactory, multi: true };\n}\nexport class ProtectionService {\n constructor() {\n this.protectors = inject(COLUMN_PROTECTOR, { optional: true });\n }\n isEditable(value, context) {\n if (!this.protectors)\n return true;\n return this.protectors.every((protector) => protector(value, context));\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: ProtectionService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: ProtectionService }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: ProtectionService, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdGVjdGlvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvQG5nLWF0b21pYy9jb21tb24vc3JjL2xpYi9zZXJ2aWNlcy9zcHJlYWRzaGVldC9mZWF0dXJlcy9wcm90ZWN0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQVluRSxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLGNBQWMsQ0FBa0Isa0JBQWtCLEVBQUU7SUFDdEYsVUFBVSxFQUFFLE1BQU07SUFDbEIsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUU7Q0FDbEIsQ0FBQyxDQUFDO0FBQ0gsTUFBTSxVQUFVLG9CQUFvQixDQUFDLFVBQStCO0lBQ2xFLE9BQU8sRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQztBQUNoRSxDQUFDO0FBR0QsTUFBTSxPQUFPLGlCQUFpQjtJQUQ5QjtRQUVXLGVBQVUsR0FBRyxNQUFNLENBQUMsZ0JBQWdCLEVBQUUsRUFBQyxRQUFRLEVBQUUsSUFBSSxFQUFDLENBQUMsQ0FBQztLQU1sRTtJQUpDLFVBQVUsQ0FBQyxLQUFVLEVBQUUsT0FBeUI7UUFDOUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVO1lBQUUsT0FBTyxJQUFJLENBQUM7UUFDbEMsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQ3pFLENBQUM7OEdBTlUsaUJBQWlCO2tIQUFqQixpQkFBaUI7OzJGQUFqQixpQkFBaUI7a0JBRDdCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3QsIEluamVjdGFibGUsIEluamVjdGlvblRva2VuIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcblxuaW50ZXJmYWNlIENlbGxDb250ZXh0PFQ+IHtcbiAgaXRlbTogVDtcbiAgbmFtZTogc3RyaW5nO1xuICBwb3NpdGlvbjoge1xuICAgIHJvdzogbnVtYmVyO1xuICAgIGNvbDogbnVtYmVyO1xuICB9XG59XG5cbmV4cG9ydCB0eXBlIENlbGxQcm90ZWN0b3IgPSAodmFsdWU6IGFueSwgY29udGV4dDogQ2VsbENvbnRleHQ8YW55PikgPT4gYm9vbGVhbjtcbmV4cG9ydCBjb25zdCBDT0xVTU5fUFJPVEVDVE9SID0gbmV3IEluamVjdGlvblRva2VuPENlbGxQcm90ZWN0b3JbXT4oJ0NPTFVNTl9QUk9URUNUT1InLCB7XG4gIHByb3ZpZGVkSW46ICdyb290JyxcbiAgZmFjdG9yeTogKCkgPT4gW10sXG59KTtcbmV4cG9ydCBmdW5jdGlvbiBwcm92aWRlQ2VsbFByb3RlY3Rvcih1c2VGYWN0b3J5OiAoKSA9PiBDZWxsUHJvdGVjdG9yKSB7XG4gIHJldHVybiB7IHByb3ZpZGU6IENPTFVNTl9QUk9URUNUT1IsIHVzZUZhY3RvcnksIG11bHRpOiB0cnVlIH07XG59XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBQcm90ZWN0aW9uU2VydmljZSB7XG4gIHJlYWRvbmx5IHByb3RlY3RvcnMgPSBpbmplY3QoQ09MVU1OX1BST1RFQ1RPUiwge29wdGlvbmFsOiB0cnVlfSk7XG5cbiAgaXNFZGl0YWJsZSh2YWx1ZTogYW55LCBjb250ZXh0OiBDZWxsQ29udGV4dDxhbnk+KTogYm9vbGVhbiB7XG4gICAgaWYgKCF0aGlzLnByb3RlY3RvcnMpIHJldHVybiB0cnVlO1xuICAgIHJldHVybiB0aGlzLnByb3RlY3RvcnMuZXZlcnkoKHByb3RlY3RvcikgPT4gcHJvdGVjdG9yKHZhbHVlLCBjb250ZXh0KSk7XG4gIH1cbn1cbiJdfQ==","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 { SpreadSheetDataService } from './data.service';\nimport * as i0 from \"@angular/core\";\nexport class EditorService {\n constructor() {\n this.data = inject(SpreadSheetDataService);\n this.grid = inject(GridService);\n this.selection = inject(SelectionService);\n this.protection = inject(ProtectionService);\n this.editingStateManager = inject(EditingStateManager);\n this.editinngCell = signal(null);\n this.inputMap = new Map();\n }\n isEditing(position) {\n return this.editinngCell()?.row === position.row && this.editinngCell()?.col === position.col;\n }\n startEditing(position) {\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 // Notify EditingStateManager about editing start\n const columnId = this.data.displayedColumns()[position.col];\n this.editingStateManager.startEditing(position.row, columnId);\n this.focus(position);\n }\n stopEditing() {\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 focus(position) {\n setTimeout(() => {\n const input = this.getInput(position);\n if (input && input !== document.activeElement) {\n input.focus();\n input.select();\n }\n });\n }\n getEditingCell() {\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 setInput(input, position) {\n this.inputMap.set(`${this.buildKey(position)}`, input);\n }\n getInput(position) {\n return this.inputMap.get(this.buildKey(position)) ?? null;\n }\n buildKey(position) {\n return `(${position.row}, ${position.col})`;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: EditorService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: EditorService }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: EditorService, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdG9yLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9AbmctYXRvbWljL2NvbW1vbi9zcmMvbGliL3NlcnZpY2VzL3NwcmVhZHNoZWV0L2ZlYXR1cmVzL2VkaXRvci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUN6RSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFekQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7O0FBR3hELE1BQU0sT0FBTyxhQUFhO0lBRDFCO1FBRXFCLFNBQUksR0FBRyxNQUFNLENBQUMsc0JBQXNCLENBQUMsQ0FBQztRQUNqRCxTQUFJLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQzNCLGNBQVMsR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUNyQyxlQUFVLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDdkMsd0JBQW1CLEdBQUcsTUFBTSxDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFDakQsaUJBQVksR0FBRyxNQUFNLENBQXNDLElBQUksQ0FBQyxDQUFDO1FBQ3ZELGFBQVEsR0FBRyxJQUFJLEdBQUcsRUFBNEIsQ0FBQztLQWdFbkU7SUE5REMsU0FBUyxDQUFDLFFBQWtCO1FBQzFCLE9BQU8sSUFBSSxDQUFDLFlBQVksRUFBRSxFQUFFLEdBQUcsS0FBSyxRQUFRLENBQUMsR0FBRyxJQUFJ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LFFBQWtCO1FBQ3pCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQztJQUM1RCxDQUFDO0lBRVMsUUFBUSxDQUFDLFFBQWtCO1FBQ25DLE9BQU8sSUFBSSxRQUFRLENBQUMsR0FBRyxLQUFLLFFBQVEsQ0FBQyxHQUFHLEdBQUcsQ0FBQztJQUM5QyxDQUFDOzhHQXRFVSxhQUFhO2tIQUFiLGFBQWE7OzJGQUFiLGFBQWE7a0JBRHpCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3QsIEluamVjdGFibGUsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRWRpdGluZ1N0YXRlTWFuYWdlciB9IGZyb20gJ0BuZy1hdG9taWMvY29tbW9uL3NlcnZpY2VzL2VkaXRpbmcnO1xuaW1wb3J0IHsgR3JpZFNlcnZpY2UgfSBmcm9tICcuL2dyaWQuc2VydmljZSc7XG5pbXBvcnQgeyBTZWxlY3Rpb25TZXJ2aWNlIH0gZnJvbSAnLi9zZWxlY3Rpb24uc2VydmljZSc7XG5pbXBvcnQgeyBQcm90ZWN0aW9uU2VydmljZSB9IGZyb20gJy4vcHJvdGVjdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IFBvc2l0aW9uIH0gZnJvbSAnLi4vbW9kZWxzL2NlbGwubW9kZWwnO1xuaW1wb3J0IHsgU3ByZWFkU2hlZXREYXRhU2VydmljZSB9IGZyb20gJy4vZGF0YS5zZXJ2aWNlJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEVkaXRvclNlcnZpY2Uge1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZGF0YSA9IGluamVjdChTcHJlYWRTaGVldERhdGFTZXJ2aWNlKTtcbiAgcHJpdmF0ZSBncmlkID0gaW5qZWN0KEdyaWRTZXJ2aWNlKTtcbiAgcHJpdmF0ZSBzZWxlY3Rpb24gPSBpbmplY3QoU2VsZWN0aW9uU2VydmljZSk7XG4gIHByaXZhdGUgcHJvdGVjdGlvbiA9IGluamVjdChQcm90ZWN0aW9uU2VydmljZSk7XG4gIHByaXZhdGUgZWRpdGluZ1N0YXRlTWFuYWdlciA9IGluamVjdChFZGl0aW5nU3RhdGVNYW5hZ2VyKTtcbiAgcmVhZG9ubHkgZWRpdGlubmdDZWxsID0gc2lnbmFsPHsgcm93OiBudW1iZXIsIGNvbDogbnVtYmVyIH0gfCBudWxsPihudWxsKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGlucHV0TWFwID0gbmV3IE1hcDxzdHJpbmcsIEhUTUxJbnB1dEVsZW1lbnQ+KCk7XG5cbiAgaXNFZGl0aW5nKHBvc2l0aW9uOiBQb3NpdGlvbik6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmVkaXRpbm5nQ2VsbCgpPy5yb3cgPT09IHBvc2l0aW9uLnJvdyAmJiB0aGlzLmVkaXRpbm5nQ2VsbCgpPy5jb2wgPT09IHBvc2l0aW9uLmNvbDtcbiAgfVxuXG4gIHN0YXJ0RWRpdGluZyhwb3NpdGlvbjogUG9zaXRpb24pOiB2b2lkIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5ncmlkLmdldENvbnRleHQocG9zaXRpb24pO1xuICAgIGNvbnNvbGUuZGVidWcoJ2NvbnRleHQ6JywgY29udGV4dCk7XG4gICAgaWYgKCF0aGlzLnByb3RlY3Rpb24uaXNFZGl0YWJsZShudWxsLCBjb250ZXh0KSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLnNlbGVjdGlvbi5jbGVhclNlbGVjdGlvbigpO1xuICAgIHRoaXMuZWRpdGlubmdDZWxsLnNldChwb3NpdGlvbik7XG4gICAgXG4gICAgLy8gTm90aWZ5IEVkaXRpbmdTdGF0ZU1hbmFnZXIgYWJvdXQgZWRpdGluZyBzdGFydFxuICAgIGNvbnN0IGNvbHVtbklkID0gdGhpcy5kYXRhLmRpc3BsYXllZENvbHVtbnMoKVtwb3NpdGlvbi5jb2xdO1xuICAgIHRoaXMuZWRpdGluZ1N0YXRlTWFuYWdlci5zdGFydEVkaXRpbmcocG9zaXRpb24ucm93LCBjb2x1bW5JZCk7XG4gICAgXG4gICAgdGhpcy5mb2N1cyhwb3NpdGlvbik7XG4gIH1cblxuICBzdG9wRWRpdGluZygpOiB2b2lkIHtcbiAgICBjb25zdCBlZGl0aW5nQ2VsbCA9IHRoaXMuZWRpdGlubmdDZWxsKCk7XG4gICAgaWYgKGVkaXRpbmdDZWxsKSB7XG4gICAgICAvLyBOb3RpZnkgRWRpdGluZ1N0YXRlTWFuYWdlciBhYm91dCBlZGl0aW5nIHN0b3BcbiAgICAgIGNvbnN0IGNvbHVtbklkID0gdGhpcy5kYXRhLmRpc3BsYXllZENvbHVtbnMoKVtlZGl0aW5nQ2VsbC5jb2xdO1xuICAgICAgdGhpcy5lZGl0aW5nU3RhdGVNYW5hZ2VyLnN0b3BFZGl0aW5nKGVkaXRpbmdDZWxsLnJvdywgY29sdW1uSWQpO1xuICAgIH1cbiAgICB0aGlzLmVkaXRpbm5nQ2VsbC5zZXQobnVsbCk7XG4gIH1cblxuICBmb2N1cyhwb3NpdGlvbjogUG9zaXRpb24pOiB2b2lkIHtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGNvbnN0IGlucHV0ID0gdGhpcy5nZXRJbnB1dChwb3NpdGlvbik7XG4gICAgICBpZiAoaW5wdXQgJiYgaW5wdXQgIT09IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQpIHtcbiAgICAgICAgaW5wdXQuZm9jdXMoKTtcbiAgICAgICAgaW5wdXQuc2VsZWN0KCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBnZXRFZGl0aW5nQ2VsbCgpOiBQb3NpdGlvbiB8IG51bGwge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5kYXRhLml0ZW1zKCkubGVuZ3RoOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5kYXRhLmRpc3BsYXllZENvbHVtbnMoKS5sZW5ndGg7IGorKykge1xuICAgICAgICBpZiAodGhpcy5pc0VkaXRpbmcoe3JvdzogaSwgY29sOiBqfSkpIHtcbiAgICAgICAgICByZXR1cm4geyByb3c6IGksIGNvbDogaiB9O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgc2V0SW5wdXQoaW5wdXQ6IEhUTUxJbnB1dEVsZW1lbnQsIHBvc2l0aW9uOiBQb3NpdGlvbik6IHZvaWQge1xuICAgIHRoaXMuaW5wdXRNYXAuc2V0KGAke3RoaXMuYnVpbGRLZXkocG9zaXRpb24pfWAsIGlucHV0KTtcbiAgfVxuXG4gIGdldElucHV0KHBvc2l0aW9uOiBQb3NpdGlvbik6IEhUTUxJbnB1dEVsZW1lbnQgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5pbnB1dE1hcC5nZXQodGhpcy5idWlsZEtleShwb3NpdGlvbikpID8/IG51bGw7XG4gIH1cblxuICBwcm90ZWN0ZWQgYnVpbGRLZXkocG9zaXRpb246IFBvc2l0aW9uKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCgke3Bvc2l0aW9uLnJvd30sICR7cG9zaXRpb24uY29sfSlgO1xuICB9XG59Il19","import { Injectable, signal } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nexport class AutoFillService {\n constructor() {\n this.autofillMode = signal(false);\n this.sourcePosition = signal(null);\n this.targetRange = signal(null);\n this.previewElements = new Set();\n this.isAutofillMode = this.autofillMode.asReadonly();\n this.getSourcePosition = this.sourcePosition.asReadonly();\n this.getTargetRange = this.targetRange.asReadonly();\n }\n startAutofill(position) {\n this.autofillMode.set(true);\n this.sourcePosition.set(position);\n this.targetRange.set({ start: position, end: position });\n }\n updateAutofillRange(endPosition) {\n const sourcePos = this.sourcePosition();\n if (sourcePos) {\n this.targetRange.set({ start: sourcePos, end: endPosition });\n this.updatePreview();\n }\n }\n cancelAutofill() {\n this.resetAutofill();\n }\n updatePreview() {\n // 既存のプレビューをクリア\n this.clearPreview();\n const range = this.targetRange();\n if (!range)\n return;\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 clearPreview() {\n this.previewElements.forEach(element => {\n element.classList.remove('autofill-preview');\n });\n this.previewElements.clear();\n }\n getCellElement(position) {\n return document.querySelector(`[data-row=\"${position.row}\"][data-col=\"${position.col}\"]`);\n }\n resetAutofill() {\n this.clearPreview();\n this.autofillMode.set(false);\n this.sourcePosition.set(null);\n this.targetRange.set(null);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: AutoFillService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: AutoFillService }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: AutoFillService, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b2ZpbGwuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BuZy1hdG9taWMvY29tbW9uL3NyYy9saWIvc2VydmljZXMvc3ByZWFkc2hlZXQvZmVhdHVyZXMvYXV0b2ZpbGwuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFTbkQsTUFBTSxPQUFPLGVBQWU7SUFENUI7UUFFVSxpQkFBWSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM3QixtQkFBYyxHQUFHLE1BQU0sQ0FBa0IsSUFBSSxDQUFDLENBQUM7UUFDL0MsZ0JBQVcsR0FBRyxNQUFNLENBQWUsSUFBSSxDQUFDLENBQUM7UUFDekMsb0JBQWUsR0FBRyxJQUFJLEdBQUcsRUFBZSxDQUFDO1FBRXhDLG1CQUFjLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNoRCxzQkFBaUIsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ3JELG1CQUFjLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLEVBQUUsQ0FBQztLQTREekQ7SUExREMsYUFBYSxDQUFDLFFBQWtCO1FBQzlCLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzVCLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ2xDLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQztJQUMzRCxDQUFDO0lBRUQsbUJBQW1CLENBQUMsV0FBcUI7UUFDdkMsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3hDLElBQUksU0FBUyxFQUFFLENBQUM7WUFDZCxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLFdBQVcsRUFBRSxDQUFDLENBQUM7WUFDN0QsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3ZCLENBQUM7SUFDSCxDQUFDO0lBR0QsY0FBYztRQUNaLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUN2QixDQUFDO0lBR08sYUFBYTtRQUNuQixlQUFlO1FBQ2YsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBRXBCLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNqQyxJQUFJLENBQUMsS0FBSztZQUFFLE9BQU87UUFFbkIsdUJBQXVCO1FBQ3ZCLEtBQUssSUFBSSxHQUFHLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLEdBQUcsQ0FBQyxFQUFFLEdBQUcsSUFBSSxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDO1lBQ2hFLE1BQU0sUUFBUSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQy9DLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDbEQsSUFBSSxXQUFXLEVBQUUsQ0FBQztnQkFDaEIsV0FBVyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsa0JBQWtCLENBQUMsQ0FBQztnQkFDOUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDeEMsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBRU8sWUFBWTtRQUNsQixJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRTtZQUNyQyxPQUFPLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBQy9DLENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUMvQixDQUFDO0lBRU8sY0FBYyxDQUFDLFFBQWtCO1FBQ3ZDLE9BQU8sUUFBUSxDQUFDLGFBQWEsQ0FDM0IsY0FBYyxRQUFRLENBQUMsR0FBRyxnQkFBZ0IsUUFBUSxDQUFDLEdBQUcsSUFBSSxDQUM1QyxDQUFDO0lBQ25CLENBQUM7SUFHTyxhQUFhO1FBQ25CLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUNwQixJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM3QixJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM5QixJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM3QixDQUFDOzhHQW5FVSxlQUFlO2tIQUFmLGVBQWU7OzJGQUFmLGVBQWU7a0JBRDNCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFBvc2l0aW9uIH0gZnJvbSAnLi4vbW9kZWxzJztcblxuZXhwb3J0IGludGVyZmFjZSBSYW5nZSB7XG4gIHN0YXJ0OiBQb3NpdGlvbjtcbiAgZW5kOiBQb3NpdGlvbjtcbn1cblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEF1dG9GaWxsU2VydmljZSB7XG4gIHByaXZhdGUgYXV0b2ZpbGxNb2RlID0gc2lnbmFsKGZhbHNlKTtcbiAgcHJpdmF0ZSBzb3VyY2VQb3NpdGlvbiA9IHNpZ25hbDxQb3NpdGlvbiB8IG51bGw+KG51bGwpO1xuICBwcml2YXRlIHRhcmdldFJhbmdlID0gc2lnbmFsPFJhbmdlIHwgbnVsbD4obnVsbCk7XG4gIHByaXZhdGUgcHJldmlld0VsZW1lbnRzID0gbmV3IFNldDxIVE1MRWxlbWVudD4oKTtcbiAgXG4gIHJlYWRvbmx5IGlzQXV0b2ZpbGxNb2RlID0gdGhpcy5hdXRvZmlsbE1vZGUuYXNSZWFkb25seSgpO1xuICByZWFkb25seSBnZXRTb3VyY2VQb3NpdGlvbiA9IHRoaXMuc291cmNlUG9zaXRpb24uYXNSZWFkb25seSgpO1xuICByZWFkb25seSBnZXRUYXJnZXRSYW5nZSA9IHRoaXMudGFyZ2V0UmFuZ2UuYXNSZWFkb25seSgpO1xuICBcbiAgc3RhcnRBdXRvZmlsbChwb3NpdGlvbjogUG9zaXRpb24pOiB2b2lkIHtcbiAgICB0aGlzLmF1dG9maWxsTW9kZS5zZXQodHJ1ZSk7XG4gICAgdGhpcy5zb3VyY2VQb3NpdGlvbi5zZXQocG9zaXRpb24pO1xuICAgIHRoaXMudGFyZ2V0UmFuZ2Uuc2V0KHsgc3RhcnQ6IHBvc2l0aW9uLCBlbmQ6IHBvc2l0aW9uIH0pO1xuICB9XG4gIFxuICB1cGRhdGVBdXRvZmlsbFJhbmdlKGVuZFBvc2l0aW9uOiBQb3NpdGlvbik6IHZvaWQge1xuICAgIGNvbnN0IHNvdXJjZVBvcyA9IHRoaXMuc291cmNlUG9zaXRpb24oKTtcbiAgICBpZiAoc291cmNlUG9zKSB7XG4gICAgICB0aGlzLnRhcmdldFJhbmdlLnNldCh7IHN0YXJ0OiBzb3VyY2VQb3MsIGVuZDogZW5kUG9zaXRpb24gfSk7XG4gICAgICB0aGlzLnVwZGF0ZVByZXZpZXcoKTtcbiAgICB9XG4gIH1cbiAgXG4gIFxuICBjYW5jZWxBdXRvZmlsbCgpOiB2b2lkIHtcbiAgICB0aGlzLnJlc2V0QXV0b2ZpbGwoKTtcbiAgfVxuICBcbiAgXG4gIHByaXZhdGUgdXBkYXRlUHJldmlldygpOiB2b2lkIHtcbiAgICAvLyDml6LlrZjjga7jg5fjg6zjg5Pjg6Xjg7zjgpLjgq/jg6rjgqJcbiAgICB0aGlzLmNsZWFyUHJldmlldygpO1xuICAgIFxuICAgIGNvbnN0IHJhbmdlID0gdGhpcy50YXJnZXRSYW5nZSgpO1xuICAgIGlmICghcmFuZ2UpIHJldHVybjtcbiAgICBcbiAgICAvLyDlvbHpn7/jgpLlj5fjgZHjgovjgrvjg6vjgavjg5fjg6zjg5Pjg6Xjg7zjgq/jg6njgrnjgpLov73liqBcbiAgICBmb3IgKGxldCByb3cgPSByYW5nZS5zdGFydC5yb3cgKyAxOyByb3cgPD0gcmFuZ2UuZW5kLnJvdzsgcm93KyspIHtcbiAgICAgIGNvbnN0IHBvc2l0aW9uID0geyByb3csIGNvbDogcmFuZ2Uuc3RhcnQuY29sIH07XG4gICAgICBjb25zdCBjZWxsRWxlbWVudCA9IHRoaXMuZ2V0Q2VsbEVsZW1lbnQocG9zaXRpb24pO1xuICAgICAgaWYgKGNlbGxFbGVtZW50KSB7XG4gICAgICAgIGNlbGxFbGVtZW50LmNsYXNzTGlzdC5hZGQoJ2F1dG9maWxsLXByZXZpZXcnKTtcbiAgICAgICAgdGhpcy5wcmV2aWV3RWxlbWVudHMuYWRkKGNlbGxFbGVtZW50KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgXG4gIHByaXZhdGUgY2xlYXJQcmV2aWV3KCk6IHZvaWQge1xuICAgIHRoaXMucHJldmlld0VsZW1lbnRzLmZvckVhY2goZWxlbWVudCA9PiB7XG4gICAgICBlbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoJ2F1dG9maWxsLXByZXZpZXcnKTtcbiAgICB9KTtcbiAgICB0aGlzLnByZXZpZXdFbGVtZW50cy5jbGVhcigpO1xuICB9XG4gIFxuICBwcml2YXRlIGdldENlbGxFbGVtZW50KHBvc2l0aW9uOiBQb3NpdGlvbik6IEhUTUxFbGVtZW50IHwgbnVsbCB7XG4gICAgcmV0dXJuIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXG4gICAgICBgW2RhdGEtcm93PVwiJHtwb3NpdGlvbi5yb3d9XCJdW2RhdGEtY29sPVwiJHtwb3NpdGlvbi5jb2x9XCJdYFxuICAgICkgYXMgSFRNTEVsZW1lbnQ7XG4gIH1cbiAgXG4gIFxuICBwcml2YXRlIHJlc2V0QXV0b2ZpbGwoKTogdm9pZCB7XG4gICAgdGhpcy5jbGVhclByZXZpZXcoKTtcbiAgICB0aGlzLmF1dG9maWxsTW9kZS5zZXQoZmFsc2UpO1xuICAgIHRoaXMuc291cmNlUG9zaXRpb24uc2V0KG51bGwpO1xuICAgIHRoaXMudGFyZ2V0UmFuZ2Uuc2V0KG51bGwpO1xuICB9XG59Il19","import { inject, Injectable } from '@angular/core';\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';\nimport * as i0 from \"@angular/core\";\nexport class SpreadSheetService {\n constructor() {\n this.config = { paste: false };\n this.grid = inject(GridService);\n // readonly data = inject(SpreadSheetDataService);\n this.navigation = inject(NavigationService);\n this.selection = inject(SelectionService);\n this.clipboard = inject(ClipboardService);\n this.editor = inject(EditorService);\n this.protection = inject(ProtectionService);\n this.autofill = inject(AutoFillService);\n }\n handleKeyDown(event) {\n if (this.editor.editinngCell()) {\n this.handleKeyDownOnEditing(event);\n }\n else {\n this.handleKeyDownOnSelecting(event);\n }\n }\n handleKeyDownOnEditing(event) {\n const cell = this.editor.editinngCell();\n // stopPropagation()が呼ばれている場合は処理しない\n // IME入力中やユーザーの意図的な入力中断の場合にValueCellAtomから制御される\n if (event.cancelBubble) {\n return;\n }\n if (event.key === 'Tab') {\n event.preventDefault();\n if (event.shiftKey) {\n this.move(cell, 'left', 'select');\n }\n else {\n this.move(cell, 'right', 'select');\n }\n }\n else if (event.key === 'Enter') {\n event.preventDefault();\n if (event.shiftKey) {\n this.move(cell, 'top', 'select');\n }\n else {\n this.move(cell, 'bottom', 'select');\n }\n }\n }\n handleKeyDownOnSelecting(event) {\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 }\n else {\n this.move(selectedCell, 'right', 'select');\n }\n return;\n }\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 }\n else if (event.ctrlKey || event.metaKey) {\n if (event.key === 'c') {\n this.clipboard.copy();\n event.preventDefault();\n }\n else if (event.key === 'v') {\n if (!this.config.paste)\n 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 }\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 }\n else {\n const selection = this.selection.getSelection().start;\n let newPosition;\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 }\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 move(_position, dest, mode) {\n this.editor.stopEditing();\n let position;\n if (dest === 'top') {\n position = this.navigation.moveToPreviousRow(_position);\n }\n else if (dest === 'bottom') {\n position = this.navigation.moveToNextRow(_position);\n }\n else if (dest === 'left') {\n position = this.navigation.moveToPreviousCell(_position);\n }\n else if (dest === 'right') {\n position = this.navigation.moveToNextCell(_position);\n }\n this.selection.setStartPosition(position);\n if (mode === 'edit') {\n this.editor.startEditing(position);\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SpreadSheetService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SpreadSheetService }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SpreadSheetService, decorators: [{\n type: Injectable\n }] });\nexport function provideSpreadSheetService() {\n return [\n ClipboardService,\n SpreadSheetDataService,\n EditorService,\n SpreadSheetService,\n GridService,\n NavigationService,\n SelectionService,\n ProtectionService,\n AutoFillService\n ];\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3ByZWFkc2hlZXQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BuZy1hdG9taWMvY29tbW9uL3NyYy9saWIvc2VydmljZXMvc3ByZWFkc2hlZXQvc3ByZWFkc2hlZXQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBWSxNQUFNLGVBQWUsQ0FBQztBQUU3RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDaEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDaEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzFELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQzs7QUFHOUQsTUFBTSxPQUFPLGtCQUFrQjtJQUQvQjtRQUVXLFdBQU0sR0FBRyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsQ0FBQztRQUMxQixTQUFJLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3BDLGtEQUFrRDtRQUN6QyxlQUFVLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDdkMsY0FBUyxHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ3JDLGNBQVMsR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUNyQyxXQUFNLEdBQUcsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFD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LENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3JDLENBQUM7SUFDSCxDQUFDOzhHQXZKVSxrQkFBa0I7a0hBQWxCLGtCQUFrQjs7MkZBQWxCLGtCQUFrQjtrQkFEOUIsVUFBVTs7QUEySlgsTUFBTSxVQUFVLHlCQUF5QjtJQUN2QyxPQUFPO1FBQ0wsZ0JBQWdCO1FBQ2hCLHNCQUFzQjtRQUN0QixhQUFhO1FBQ2Isa0JBQWtCO1FBQ2xCLFdBQVc7UUFDWCxpQkFBaUI7UUFDakIsZ0JBQWdCO1FBQ2hCLGlCQUFpQjtRQUNqQixlQUFlO0tBQ2hCLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5qZWN0LCBJbmplY3RhYmxlLCBQcm92aWRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUG9zaXRpb24gfSBmcm9tICcuL21vZGVscy9jZWxsLm1vZGVsJztcbmltcG9ydCB7IEdyaWRTZXJ2aWNlIH0gZnJvbSAnLi9mZWF0dXJlcy9ncmlkLnNlcnZpY2UnO1xuaW1wb3J0IHsgTmF2aWdhdGlvblNlcnZpY2UgfSBmcm9tICcuL2ZlYXR1cmVzL25hdmlnYXRpb24uc2VydmljZSc7XG5pbXBvcnQgeyBTZWxlY3Rpb25TZXJ2aWNlIH0gZnJvbSAnLi9mZWF0dXJlcy9zZWxlY3Rpb24uc2VydmljZSc7XG5pbXBvcnQgeyBDbGlwYm9hcmRTZXJ2aWNlIH0gZnJvbSAnLi9mZWF0dXJlcy9jbGlwYm9hcmQuc2VydmljZSc7XG5pbXBvcnQgeyBFZGl0b3JTZXJ2aWNlIH0gZnJvbSAnLi9mZWF0dXJlcy9lZGl0b3Iuc2VydmljZSc7XG5pbXBvcnQgeyBQcm90ZWN0aW9uU2VydmljZSB9IGZyb20gJy4vZmVhdHVyZXMvcHJvdGVjdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IFNwcmVhZFNoZWV0RGF0YVNlcnZpY2UgfSBmcm9tICcuL2ZlYXR1cmVzL2RhdGEuc2VydmljZSc7XG5pbXBvcnQgeyBBdXRvRmlsbFNlcnZpY2UgfSBmcm9tICcuL2ZlYXR1cmVzL2F1dG9maWxsLnNlcnZpY2UnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgU3ByZWFkU2hlZXRTZXJ2aWNlIHtcbiAgcmVhZG9ubHkgY29uZmlnID0geyBwYXN0ZTogZmFsc2UgfTtcbiAgcmVhZG9ubHkgZ3JpZCA9IGluamVjdChHcmlkU2VydmljZSk7XG4gIC8vIHJlYWRvbmx5IGRhdGEgPSBpbmplY3QoU3ByZWFkU2hlZXREYXRhU2VydmljZSk7XG4gIHJlYWRvbmx5IG5hdmlnYXRpb24gPSBpbmplY3QoTmF2aWdhdGlvblNlcnZpY2UpO1xuICByZWFkb25seSBzZWxlY3Rpb24gPSBpbmplY3QoU2VsZWN0aW9uU2VydmljZSk7XG4gIHJlYWRvbmx5IGNsaXBib2FyZCA9IGluamVjdChDbGlwYm9hcmRTZXJ2aWNlKTtcbiAgcmVhZG9ubHkgZWRpdG9yID0gaW5qZWN0KEVkaXRvclNlcnZpY2UpO1xuICByZWFkb25seSBwcm90ZWN0aW9uID0gaW5qZWN0KFByb3RlY3Rpb25TZXJ2aWNlKTtcbiAgcmVhZG9ubHkgYXV0b2ZpbGwgPSBpbmplY3QoQXV0b0ZpbGxTZXJ2aWNlKTtcblxuICBoYW5kbGVLZXlEb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZWRpdG9yLmVkaXRpbm5nQ2VsbCgpKSB7XG4gICAgICB0aGlzLmhhbmRsZUtleURvd25PbkVkaXRpbmcoZXZlbnQpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmhhbmRsZUtleURvd25PblNlbGVjdGluZyhldmVudCk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGhhbmRsZUtleURvd25PbkVkaXRpbmcoZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICBjb25zdCBjZWxsID0gdGhpcy5lZGl0b3IuZWRpdGlubmdDZWxsKCk7XG4gICAgXG4gICAgLy8gc3RvcFByb3BhZ2F0aW9uKCnjgYzlkbzjgbDjgozjgabjgYTjgovloLTlkIjjga/lh6bnkIbjgZfjgarjgYRcbiAgICAvLyBJTUXlhaXlipvkuK3jgoTjg6bjg7zjgrbjg7zjga7mhI/lm7PnmoTjgarlhaXlipvkuK3mlq3jga7loLTlkIjjgatWYWx1ZUNlbGxBdG9t44GL44KJ5Yi25b6h44GV44KM44KLXG4gICAgaWYgKGV2ZW50LmNhbmNlbEJ1YmJsZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBcbiAgICBpZiAoZXZlbnQua2V5ID09PSAnVGFiJykge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIGlmIChldmVudC5zaGlmdEtleSkge1xuICAgICAgICB0aGlzLm1vdmUoY2VsbCwgJ2xlZnQnLCAnc2VsZWN0Jyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLm1vdmUoY2VsbCwgJ3JpZ2h0JywgJ3NlbGVjdCcpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoZXZlbnQua2V5ID09PSAnRW50ZXInKSB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgaWYgKGV2ZW50LnNoaWZ0S2V5KSB7XG4gICAgICAgIHRoaXMubW92ZShjZWxsLCAndG9wJywgJ3NlbGVjdCcpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5tb3ZlKGNlbGwsICdib3R0b20nLCAnc2VsZWN0Jyk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGhhbmRsZUtleURvd25PblNlbGVjdGluZyhldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgIGlmIChldmVudC5rZXkgPT09ICdUYWInKSB7XG4gICAgICBjb25zdCBzZWxlY3RlZENlbGwgPSB0aGlzLnNlbGVjdGlvbi5nZXRTZWxlY3Rpb24oKS5zdGFydDtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgIGlmIChldmVudC5zaGlmdEtleSkge1xuICAgICAgICB0aGlzLm1vdmUoc2VsZWN0ZWRDZWxsLCAnbGVmdCcsICdzZWxlY3QnKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMubW92ZShzZWxlY3RlZENlbGwsICdyaWdodCcsICdzZWxlY3QnKTtcbiAgICAgIH1cbiAgICAgIHJldHVybjtcbiAgICB9IGVsc2UgaWYgKGV2ZW50LmtleSA9PT0gJ0VudGVyJykge1xuICAgICAgY29uc3Qgc2VsZWN0ZWRDZWxsID0gdGhpcy5zZWxlY3Rpb24uZ2V0U2VsZWN0aW9uKCkuc3RhcnQ7XG4gICAgICBpZiAoc2VsZWN0ZWRDZWxsKSB7XG4gICAgICAgIHRoaXMuZWRpdG9yLnN0YXJ0RWRpdGluZyhzZWxlY3RlZENlbGwpO1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoZXZlbnQuY3RybEtleSB8fCBldmVudC5tZXRhS2V5KSB7XG4gICAgICBpZiAoZXZlbnQua2V5ID09PSAnYycpIHtcbiAgICAgICAgdGhpcy5jbGlwYm9hcmQuY29weSgpO1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgfSBlbHNlIGlmIChldmVudC5rZXkgPT09ICd2Jykge1xuICAgICAgICBpZiAoIXRoaXMuY29uZmlnLnBhc3RlKSByZXR1cm47XG4gICAgICAgIGNvbnN0IHRhcmdldCA9IHRoaXMuc2VsZWN0aW9uLmdldFNlbGVjdGlvbigpLnN0YXJ0O1xuICAgICAgICBpZiAodGFyZ2V0KSB7XG4gICAgICAgICAgdGhpcy5jbGlwYm9hcmQucGFzdGUodGFyZ2V0LnJvdywgdGFyZ2V0LmNvbCk7XG4gICAgICAgIH1cbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIH1cbiAgICAgIHJldHVybjtcbiAgICB9IGVsc2UgaWYgKGV2ZW50LmtleSA9PT0gJ0RlbGV0ZScgfHwgZXZlbnQua2V5ID09PSAnQmFja3NwYWNlJykge1xuICAgICAgY29uc3Qgc2VsZWN0aW9uID0gdGhpcy5zZWxlY3Rpb24uZ2V0U2VsZWN0aW9uKCk7XG4gICAgICBpZiAoc2VsZWN0aW9uKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0aW9uLmNsZWFyU2VsZWN0ZWRSYW5nZShzZWxlY3Rpb24pO1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHNlbGVjdGlvbiA9IHRoaXMuc2VsZWN0aW9uLmdldFNlbGVjdGlvbigpLnN0YXJ0O1xuICAgICAgbGV0IG5ld1Bvc2l0aW9uOiBQb3NpdGlvbjtcbiAgICAgIGlmIChldmVudC5zaGlmdEtleSkge1xuICAgICAgICBjb25zdCBzZWxlY3Rpb25FbmQgPSB0aGlzLnNlbGVjdGlvbi5nZXRTZWxlY3Rpb25FbmRPclN0YXJ0KCk7XG4gICAgICAgIHN3aXRjaCAoZXZlbnQua2V5KSB7XG4gICAgICAgICAgY2FzZSAnQXJyb3dSaWdodCc6XG4gICAgICAgICAgICBuZXdQb3NpdGlvbiA9IHRoaXMubmF2aWdhdGlvbi5tb3ZlUmlnaHQoc2VsZWN0aW9uRW5kKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgJ0Fycm93TGVmdCc6XG4gICAgICAgICAgICBuZXdQb3NpdGlvbiA9IHRoaXMubmF2aWdhdGlvbi5tb3ZlTGVmdChzZWxlY3Rpb25FbmQpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAnQXJyb3dVcCc6XG4gICAgICAgICAgICBuZXdQb3NpdGlvbiA9IHRoaXMubmF2aWdhdGlvbi5tb3ZlVXAoc2VsZWN0aW9uRW5kKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgJ0Fycm93RG93bic6XG4gICAgICAgICAgICBuZXdQb3NpdGlvbiA9IHRoaXMubmF2aWdhdGlvbi5tb3ZlRG93bihzZWxlY3Rpb25FbmQpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAobmV3UG9zaXRpb24pIHtcbiAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgIHRoaXMuc2VsZWN0aW9uLnVwZGF0ZVNlbGVjdGlvbkVuZChuZXdQb3NpdGlvbik7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHN3aXRjaCAoZXZlbnQua2V5KSB7XG4gICAgICAgICAgY2FzZSAnQXJyb3dSaWdodCc6XG4gICAgICAgICAgICBuZXdQb3NpdGlvbiA9IHRoaXMubmF2aWdhdGlvbi5tb3ZlUmlnaHQoc2VsZWN0aW9uKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgJ0Fycm93TGVmdCc6XG4gICAgICAgICAgICBuZXdQb3NpdGlvbiA9IHRoaXMubmF2aWdhdGlvbi5tb3ZlTGVmdChzZWxlY3Rpb24pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAnQXJyb3dVcCc6XG4gICAgICAgICAgICBuZXdQb3NpdGlvbiA9IHRoaXMubmF2aWdhdGlvbi5tb3ZlVXAoc2VsZWN0aW9uKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgJ0Fycm93RG93bic6XG4gICAgICAgICAgICBuZXdQb3NpdGlvbiA9IHRoaXMubmF2aWdhdGlvbi5tb3ZlRG93bihzZWxlY3Rpb24pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAobmV3UG9zaXRpb24pIHtcbiAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgIHRoaXMuc2VsZWN0aW9uLmNsZWFyU2VsZWN0aW9uKCk7XG4gICAgICAgICAgdGhpcy5zZWxlY3Rpb24uaGFuZGxlQ2xpY2sobmV3UG9zaXRpb24pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIG1vdmUoX3Bvc2l0aW9uOiBQb3NpdGlvbiwgZGVzdDogJ3RvcCcgfCAnYm90dG9tJyB8ICdsZWZ0JyB8ICdyaWdodCcsIG1vZGU6ICdlZGl0JyB8ICdzZWxlY3QnKSB7XG4gICAgdGhpcy5lZGl0b3Iuc3RvcEVkaXRpbmcoKTtcbiAgICBsZXQgcG9zaXRpb246IFBvc2l0aW9uO1xuICAgIGlmIChkZXN0ID09PSAndG9wJykge1xuICAgICAgcG9zaXRpb24gPSB0aGlzLm5hdmlnYXRpb24ubW92ZVRvUHJldmlvdXNSb3coX3Bvc2l0aW9uKTtcbiAgICB9IGVsc2UgaWYgKGRlc3QgPT09ICdib3R0b20nKSB7XG4gICAgICBwb3NpdGlvbiA9IHRoaXMubmF2aWdhdGlvbi5tb3ZlVG9OZXh0Um93KF9wb3NpdGlvbik7XG4gICAgfSBlbHNlIGlmIChkZXN0ID09PSAnbGVmdCcpIHtcbiAgICAgIHBvc2l0aW9uID0gdGhpcy5uYXZpZ2F0aW9uLm1vdmVUb1ByZXZpb3VzQ2VsbChfcG9zaXRpb24pO1xuICAgIH0gZWxzZSBpZiAoZGVzdCA9PT0gJ3JpZ2h0Jykge1xuICAgICAgcG9zaXRpb24gPSB0aGlzLm5hdmlnYXRpb24ubW92ZVRvTmV4dENlbGwoX3Bvc2l0aW9uKTtcbiAgICB9XG5cbiAgICB0aGlzLnNlbGVjdGlvbi5zZXRTdGFydFBvc2l0aW9uKHBvc2l0aW9uKTtcblxuICAgIGlmIChtb2RlID09PSAnZWRpdCcpIHtcbiAgICAgIHRoaXMuZWRpdG9yLnN0YXJ0RWRpdGluZyhwb3NpdGlvbik7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm92aWRlU3ByZWFkU2hlZXRTZXJ2aWNlKCk6IFByb3ZpZGVyW10ge1xuICByZXR1cm4gW1xuICAgIENsaXBib2FyZFNlcnZpY2UsXG4gICAgU3ByZWFkU2hlZXREYXRhU2VydmljZSxcbiAgICBFZGl0b3JTZXJ2aWNlLFxuICAgIFNwcmVhZFNoZWV0U2VydmljZSxcbiAgICBHcmlkU2VydmljZSxcbiAgICBOYXZpZ2F0aW9uU2VydmljZSxcbiAgICBTZWxlY3Rpb25TZXJ2aWNlLFxuICAgIFByb3RlY3Rpb25TZXJ2aWNlLFxuICAgIEF1dG9GaWxsU2VydmljZVxuICBdO1xufVxuIl19","import { computed, Directive, effect, ElementRef, inject, input, signal } from \"@angular/core\";\nimport { SpreadSheetService } from \"../spreadsheet.service\";\nimport * as i0 from \"@angular/core\";\nexport class SpreadSheetCell {\n constructor() {\n this.ss = inject(SpreadSheetService);\n this.el = inject(ElementRef);\n this.position = input({ row: 0, col: 0 }, { alias: 'ssCell' });\n this.editable = input(false, { alias: 'ssCellEditable' });\n this.context = input(null, { alias: 'ssCellContext' });\n this.isSelected = computed(() => this.ss.selection.isSelected(this.position()));\n this.isEditing = computed(() => this.ss.editor.isEditing(this.position()));\n this.frameEl = signal(null);\n effect(() => {\n if (!this.context())\n return;\n this.ss.grid.setContext(this.context());\n });\n effect(() => {\n const isCursor = this.ss.selection.isCursorPosition(this.position());\n let frame = this.frameEl();\n if (isCursor) {\n if (!frame) {\n frame = this.buildOutlineFrame();\n this.el.nativeElement.appendChild(frame);\n this.frameEl.set(frame);\n }\n }\n else {\n frame?.remove();\n this.frameEl.set(null);\n }\n });\n }\n onDbClick() {\n if (!this.editable())\n return;\n this.ss.editor.startEditing(this.position());\n }\n ngAfterViewInit() {\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 buildOutlineFrame() {\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 createLabelElement(options) {\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 static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SpreadSheetCell, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"17.1.0\", version: \"20.0.5\", type: SpreadSheetCell, isStandalone: true, selector: \"[ssCell]\", inputs: { position: { classPropertyName: \"position\", publicName: \"ssCell\", isSignal: true, isRequired: false, transformFunction: null }, editable: { classPropertyName: \"editable\", publicName: \"ssCellEditable\", isSignal: true, isRequired: false, transformFunction: null }, context: { classPropertyName: \"context\", publicName: \"ssCellContext\", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { \"mousedown\": \"ss.selection.handleMouseDown(position(), $event)\", \"mouseup\": \"ss.selection.handleMouseUp()\", \"mouseenter\": \"ss.selection.handleMouseEnter(position())\", \"click\": \"ss.selection.handleClick(position(), $event)\", \"dblclick\": \"onDbClick()\" }, properties: { \"class.selected\": \"ss.selection.isSelected(position())\", \"class.editing\": \"ss.editor.isEditing(position())\", \"attr.data-row\": \"position().row\", \"attr.data-col\": \"position().col\" } }, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SpreadSheetCell, decorators: [{\n type: Directive,\n args: [{\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 }]\n }], ctorParameters: () => [] });\nexport class SpreadSheetCellInput {\n constructor() {\n this.ss = inject(SpreadSheetService);\n this.position = input({ row: 0, col: 0 }, { alias: 'ssCellInput' });\n this.el = inject(ElementRef);\n this.isSelected = computed(() => this.ss.selection.isSelected(this.position()));\n this.isEditing = computed(() => this.ss.editor.isEditing(this.position()));\n }\n ngAfterViewInit() {\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 stopEditing() {\n this.ss.editor.stopEditing();\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SpreadSheetCellInput, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"17.1.0\", version: \"20.0.5\", type: SpreadSheetCellInput, isStandalone: true, selector: \"[ssCellInput]\", inputs: { position: { classPropertyName: \"position\", publicName: \"ssCellInput\", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { \"blur\": \"stopEditing()\" } }, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SpreadSheetCellInput, decorators: [{\n type: Directive,\n args: [{\n standalone: true,\n selector: '[ssCellInput]',\n host: {\n '(blur)': 'stopEditing()',\n }\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC1jZWxsLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BuZy1hdG9taWMvY29tbW9uL3NyYy9saWIvc2VydmljZXMvc3ByZWFkc2hlZXQvZGlyZWN0aXZlcy9ncmlkLWNlbGwuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBQzlHLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDOztBQWtCNUQsTUFBTSxPQUFPLGVBQWU7SUFXMUI7UUFWVSxPQUFFLEdBQUcsTUFBTSxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFDakMsT0FBRSxHQUFHLE1BQU0sQ0FBbUMsVUFBVSxDQUFDLENBQUM7UUFFMUQsYUFBUSxHQUFHLEtBQUssQ0FBNkIsRUFBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLEtBQUssRUFBRSxRQUFRLEVBQUMsQ0FBQyxDQUFDO1FBQ2xGLGFBQVEsR0FBRyxLQUFLLENBQVUsS0FBSyxFQUFFLEVBQUMsS0FBSyxFQUFFLGdCQUFnQixFQUFDLENBQUMsQ0FBQztRQUM1RCxZQUFPLEdBQUcsS0FBSyxDQUFjLElBQUksRUFBRSxFQUFDLEtBQUssRUFBRSxlQUFlLEVBQUMsQ0FBQyxDQUFDO1FBQzdELGVBQVUsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDM0UsY0FBUyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUN0RSxZQUFPLEdBQUcsTUFBTSxDQUF3QixJQUFJLENBQUMsQ0FBQztRQUdyRCxNQUFNLENBQUMsR0FBRyxFQUFFO1lBQ1YsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUU7Z0JBQUUsT0FBTztZQUM1QixJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7UUFDMUMsQ0FBQyxDQUFDLENBQUM7UUFFSCxNQUFNLENBQUMsR0FBRyxFQUFFO1lBQ1YsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7WUFDckUsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBRTNCLElBQUksUUFBUSxFQUFFLENBQUM7Z0JBQ2IsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO29CQUNYLEtBQUssR0FBRyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztvQkFDakMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO29CQUN6QyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDMUIsQ0FBQztZQUNILENBQUM7aUJBQU0sQ0FBQztnQkFDTixLQUFLLEVBQUUsTUFBTSxFQUFFLENBQUM7Z0JBQ2hCLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3pCLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxTQUFTO1FBQ1AsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFBRSxPQUFPO1FBQzdCLElBQUksQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBRUQsZUFBZTtRQUNiLElBQUksQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUNsRSxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDO1lBQzNDLElBQUksQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztRQUMzQyxDQUFDO0lBQ0gsQ0FBQztJQUVTLGlCQUFpQjtRQUN6QixNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzVDLEtBQUssQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDdkMsS0FBSyxDQUFDLEtBQUssQ0FBQyxRQUFRLEdBQUcsVUFBVSxDQUFDO1FBQ2xDLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQztRQUN0QixLQUFLLENBQUMsS0FBSyxDQUFDLElBQUksR0FBRyxHQUFHLENBQUM7UUFDdkIsS0FBSyxDQUFDLEtBQUssQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFDO1FBQzNCLEtBQUssQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUM1QixLQUFLLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxtQkFBbUIsQ0FBQztRQUN6QyxLQUFLLENBQUMsS0FBSyxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUM7UUFDakMsS0FBSyxDQUFDLEtBQUssQ0FBQyxhQUFhLEdBQUcsTUFBTSxDQUFDO1FBQ25DLEtBQUssQ0FBQyxLQUFLLENBQUMsU0FBUyxHQUFHLFlBQVksQ0FBQztRQUNyQyxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFUyxrQkFBa0IsQ0FBQyxPQUc1QjtRQUNDLE1BQU0sRUFBRSxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDMUMsRUFBRSxDQUFDLFdBQVcsR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDO1FBQy9CLEVBQUUsQ0FBQyxLQUFLLENBQUMsZUFBZSxHQUFHLEdBQUcsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQzlDLEVBQUUsQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHLE1BQU0sQ0FBQztRQUN4QixFQUFFLENBQUMsS0FBSyxDQUFDLE9BQU8sR0FBRyxTQUFTLENBQUM7UUFDN0IsRUFBRSxDQUFDLEtBQUssQ0FBQyxRQUFRLEdBQUcsVUFBVSxDQUFDO1FBQy9CLEVBQUUsQ0FBQyxLQUFLLENBQUMsUUFBUSxHQUFHLE1BQU0sQ0FBQztRQUMzQixFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUM7UUFDbkIsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDO1FBQ3BCLEVBQUUsQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUN6QixFQUFFLENBQUMsS0FBSyxDQUFDLFVBQVUsR0FBRyxPQUFPLENBQUM7UUFDOUIsRUFBRSxDQUFDLEtBQUssQ0FBQyxVQUFVLEdBQUcsUUFBUSxDQUFDO1FBQy9CLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUN4QyxDQUFDOzhHQTlFVSxlQUFlO2tHQUFmLGVBQWU7OzJGQUFmLGVBQWU7a0JBZjNCLFNBQVM7bUJBQUM7b0JBQ1QsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFFBQVEsRUFBRSxVQUFVO29CQUNwQixJQUFJLEVBQUU7d0JBQ0osa0JBQWtCLEVBQUUscUNBQXFDO3dCQUN6RCxpQkFBaUIsRUFBRSxpQ0FBaUM7d0JBQ3BELGFBQWEsRUFBRSxrREFBa0Q7d0JBQ2pFLFdBQVcsRUFBRSw4QkFBOEI7d0JBQzNDLGNBQWMsRUFBRSwyQ0FBMkM7d0JBQzNELFNBQVMsRUFBRSw4Q0FBOEM7d0JBQ3pELFlBQVksRUFBRSxhQUFhO3dCQUMzQixpQkFBaUIsRUFBRSxnQkFBZ0I7d0JBQ25DLGlCQUFpQixFQUFFLGdCQUFnQjtxQkFDcEM7aUJBQ0Y7O0FBMEZELE1BQU0sT0FBTyxvQkFBb0I7SUFQakM7UUFRWSxPQUFFLEdBQUcsTUFBTSxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFDakMsYUFBUSxHQUFHLEtBQUssQ0FBNkIsRUFBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLEtBQUssRUFBRSxhQUFhLEVBQUMsQ0FBQyxDQUFDO1FBQ3ZGLE9BQUUsR0FBRyxNQUFNLENBQStCLFVBQVUsQ0FBQyxDQUFDO1FBQ3RELGVBQVUsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDM0UsY0FBUyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQztLQVloRjtJQVZDLGVBQWU7UUFDYixJQUFJLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFDaEUsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUM7WUFDMUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBQ3hDLENBQUM7SUFDSCxDQUFDO0lBRVMsV0FBVztRQUNuQixJQUFJLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUMvQixDQUFDOzhHQWhCVSxvQkFBb0I7a0dBQXBCLG9CQUFvQjs7MkZBQXBCLG9CQUFvQjtrQkFQaEMsU0FBUzttQkFBQztvQkFDVCxVQUFVLEVBQUUsSUFBSTtvQkFDaEIsUUFBUSxFQUFFLGVBQWU7b0JBQ3pCLElBQUksRUFBRTt3QkFDSixRQUFRLEVBQUUsZUFBZTtxQkFDMUI7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjb21wdXRlZCwgRGlyZWN0aXZlLCBlZmZlY3QsIEVsZW1lbnRSZWYsIGluamVjdCwgaW5wdXQsIHNpZ25hbCwgQWZ0ZXJWaWV3SW5pdCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBTcHJlYWRTaGVldFNlcnZpY2UgfSBmcm9tIFwiLi4vc3ByZWFkc2hlZXQuc2VydmljZVwiO1xuaW1wb3J0IHsgQ2VsbENvbnRleHQgfSBmcm9tIFwiLi4vbW9kZWxzL2NlbGwubW9kZWxcIjtcblxuQERpcmVjdGl2ZSh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHNlbGVjdG9yOiAnW3NzQ2VsbF0nLFxuICBob3N0OiB7XG4gICAgJ1tjbGFzcy5zZWxlY3RlZF0nOiAnc3Muc2VsZWN0aW9uLmlzU2VsZWN0ZWQocG9zaXRpb24oKSknLFxuICAgICdbY2xhc3MuZWRpdGluZ10nOiAnc3MuZWRpdG9yLmlzRWRpdGluZyhwb3NpdGlvbigpKScsXG4gICAgJyhtb3VzZWRvd24pJzogJ3NzLnNlbGVjdGlvbi5oYW5kbGVNb3VzZURvd24ocG9zaXRpb24oKSwgJGV2ZW50KScsXG4gICAgJyhtb3VzZXVwKSc6ICdzcy5zZWxlY3Rpb24uaGFuZGxlTW91c2VVcCgpJyxcbiAgICAnKG1vdXNlZW50ZXIpJzogJ3NzLnNlbGVjdGlvbi5oYW5kbGVNb3VzZUVudGVyKHBvc2l0aW9uKCkpJyxcbiAgICAnKGNsaWNrKSc6ICdzcy5zZWxlY3Rpb24uaGFuZGxlQ2xpY2socG9zaXRpb24oKSwgJGV2ZW50KScsXG4gICAgJyhkYmxjbGljayknOiAnb25EYkNsaWNrKCknLFxuICAgICdbYXR0ci5kYXRhLXJvd10nOiAncG9zaXRpb24oKS5yb3cnLFxuICAgICdbYXR0ci5kYXRhLWNvbF0nOiAncG9zaXRpb24oKS5jb2wnLFxuICB9XG59KVxuZXhwb3J0IGNsYXNzIFNwcmVhZFNoZWV0Q2VsbCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQge1xuICBwcm90ZWN0ZWQgc3MgPSBpbmplY3QoU3ByZWFkU2hlZXRTZXJ2aWNlKTtcbiAgcmVhZG9ubHkgZWwgPSBpbmplY3Q8RWxlbWVudFJlZjxIVE1MVGFibGVDZWxsRWxlbWVudD4+KEVsZW1lbnRSZWYpO1xuXG4gIHJlYWRvbmx5IHBvc2l0aW9uID0gaW5wdXQ8e3JvdzogbnVtYmVyLCBjb2w6IG51bWJlcn0+KHtyb3c6IDAsIGNvbDogMH0sIHthbGlhczogJ3NzQ2VsbCd9KTtcbiAgcmVhZG9ubHkgZWRpdGFibGUgPSBpbnB1dDxib29sZWFuPihmYWxzZSwge2FsaWFzOiAnc3NDZWxsRWRpdGFibGUnfSk7XG4gIHJlYWRvbmx5IGNvbnRleHQgPSBpbnB1dDxDZWxsQ29udGV4dD4obnVsbCwge2FsaWFzOiAnc3NDZWxsQ29udGV4dCd9KTtcbiAgcmVhZG9ubHkgaXNTZWxlY3RlZCA9IGNvbXB1dGVkKCgpID0+IHRoaXMuc3Muc2VsZWN0aW9uLmlzU2VsZWN0ZWQodGhpcy5wb3NpdGlvbigpKSk7XG4gIHJlYWRvbmx5IGlzRWRpdGluZyA9IGNvbXB1dGVkKCgpID0+IHRoaXMuc3MuZWRpdG9yLmlzRWRpdGluZyh0aGlzLnBvc2l0aW9uKCkpKTtcbiAgcmVhZG9ubHkgZnJhbWVFbCA9IHNpZ25hbDxIVE1MRGl2RWxlbWVudCB8IG51bGw+KG51bGwpO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICBpZiAoIXRoaXMuY29udGV4dCgpKSByZXR1cm47XG4gICAgICB0aGlzLnNzLmdyaWQuc2V0Q29udGV4dCh0aGlzLmNvbnRleHQoKSk7XG4gICAgfSk7XG5cbiAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgY29uc3QgaXNDdXJzb3IgPSB0aGlzLnNzLnNlbGVjdGlvbi5pc0N1cnNvclBvc2l0aW9uKHRoaXMucG9zaXRpb24oKSk7XG4gICAgICBsZXQgZnJhbWUgPSB0aGlzLmZyYW1lRWwoKTtcblxuICAgICAgaWYgKGlzQ3Vyc29yKSB7XG4gICAgICAgIGlmICghZnJhbWUpIHtcbiAgICAgICAgICBmcmFtZSA9IHRoaXMuYnVpbGRPdXRsaW5lRnJhbWUoKTtcbiAgICAgICAgICB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuYXBwZW5kQ2hpbGQoZnJhbWUpO1xuICAgICAgICAgIHRoaXMuZnJhbWVFbC5zZXQoZnJhbWUpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBmcmFtZT8ucmVtb3ZlKCk7XG4gICAgICAgIHRoaXMuZnJhbWVFbC5zZXQobnVsbCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBvbkRiQ2xpY2soKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmVkaXRhYmxlKCkpIHJldHVybjtcbiAgICB0aGlzLnNzLmVkaXRvci5zdGFydEVkaXRpbmcodGhpcy5wb3NpdGlvbigpKTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnNzLnNlbGVjdGlvbi5zZXRDZWxsKHRoaXMucG9zaXRpb24oKSwgdGhpcy5lbC5uYXRpdmVFbGVtZW50KTtcbiAgICBpZiAodGhpcy5pc1NlbGVjdGVkKCkgJiYgIXRoaXMuaXNFZGl0aW5nKCkpIHtcbiAgICAgIHRoaXMuc3Muc2VsZWN0aW9uLmZvY3VzKHRoaXMucG9zaXRpb24oKSk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGJ1aWxkT3V0bGluZUZyYW1lKCk6IEhUTUxEaXZFbGVtZW50IHtcbiAgICBjb25zdCBmcmFtZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgIGZyYW1lLmNsYXNzTGlzdC5hZGQoJ3NlbGVjdGlvbi1mcmFtZScpO1xuICAgIGZyYW1lLnN0eWxlLnBvc2l0aW9uID0gJ2Fic29sdXRlJztcbiAgICBmcmFtZS5zdHlsZS50b3AgPSAnMCc7XG4gICAgZnJhbWUuc3R5bGUubGVmdCA9ICcwJztcbiAgICBmcmFtZS5zdHlsZS53aWR0aCA9ICcxMDAlJztcbiAgICBmcmFtZS5zdHlsZS5oZWlnaHQgPSAnMTAwJSc7XG4gICAgZnJhbWUuc3R5bGUuYm9yZGVyID0gJzJweCBzb2xpZCAjMjE5NmYzJztcbiAgICBmcmFtZS5zdHlsZS5ib3JkZXJSYWRpdXMgPSAnNHB4JztcbiAgICBmcmFtZS5zdHlsZS5wb2ludGVyRXZlbnRzID0gJ25vbmUnO1xuICAgIGZyYW1lLnN0eWxlLmJveFNpemluZyA9ICdib3JkZXItYm94JztcbiAgICByZXR1cm4gZnJhbWU7XG4gIH1cblxuICBwcm90ZWN0ZWQgY3JlYXRlTGFiZWxFbGVtZW50KG9wdGlvbnM6IHtcbiAgICBsYWJlbDogc3RyaW5nXG4gICAgY29sb3I6IHN0cmluZ1xuICB9KSB7XG4gICAgY29uc3QgZWwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJyk7XG4gICAgZWwudGV4dENvbnRlbnQgPSBvcHRpb25zLmxhYmVsO1xuICAgIGVsLnN0eWxlLmJhY2tncm91bmRDb2xvciA9IGAke29wdGlvbnMuY29sb3J9YDtcbiAgICBlbC5zdHlsZS5jb2xvciA9ICcjZmZmJztcbiAgICBlbC5zdHlsZS5wYWRkaW5nID0gJzJweCA0cHgnO1xuICAgIGVsLnN0eWxlLnBvc2l0aW9uID0gJ2Fic29sdXRlJztcbiAgICBlbC5zdHlsZS5mb250U2l6ZSA9ICcxMHB4JztcbiAgICBlbC5zdHlsZS50b3AgPSAnMCc7XG4gICAgZWwuc3R5bGUubGVmdCA9ICcwJztcbiAgICBlbC5zdHlsZS56SW5kZXggPSAnOTk5OSc7XG4gICAgZWwuc3R5bGUubGluZUhlaWdodCA9ICcxLjVlbSc7XG4gICAgZWwuc3R5bGUud2hpdGVTcGFjZSA9ICdub3dyYXAnO1xuICAgIHRoaXMuZWwubmF0aXZlRWxlbWVudC5hcHBlbmRDaGlsZChlbCk7XG4gIH1cbn1cblxuXG5ARGlyZWN0aXZlKHtcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgc2VsZWN0b3I6ICdbc3NDZWxsSW5wdXRdJyxcbiAgaG9zdDoge1xuICAgICcoYmx1ciknOiAnc3RvcEVkaXRpbmcoKScsXG4gIH1cbn0pXG5leHBvcnQgY2xhc3MgU3ByZWFkU2hlZXRDZWxsSW5wdXQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0IHtcbiAgcHJvdGVjdGVkIHNzID0gaW5qZWN0KFNwcmVhZFNoZWV0U2VydmljZSk7XG4gIHJlYWRvbmx5IHBvc2l0aW9uID0gaW5wdXQ8e3JvdzogbnVtYmVyLCBjb2w6IG51bWJlcn0+KHtyb3c6IDAsIGNvbDogMH0sIHthbGlhczogJ3NzQ2VsbElucHV0J30pO1xuICByZWFkb25seSBlbCA9IGluamVjdDxFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQ+PihFbGVtZW50UmVmKTtcbiAgcmVhZG9ubHkgaXNTZWxlY3RlZCA9IGNvbXB1dGVkKCgpID0+IHRoaXMuc3Muc2VsZWN0aW9uLmlzU2VsZWN0ZWQodGhpcy5wb3NpdGlvbigpKSk7XG4gIHJlYWRvbmx5IGlzRWRpdGluZyA9IGNvbXB1dGVkKCgpID0+IHRoaXMuc3MuZWRpdG9yLmlzRWRpdGluZyh0aGlzLnBvc2l0aW9uKCkpKTtcblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgdGhpcy5zcy5lZGl0b3Iuc2V0SW5wdXQodGhpcy5lbC5uYXRpdmVFbGVtZW50LCB0aGlzLnBvc2l0aW9uKCkpO1xuICAgIGlmICh0aGlzLmlzU2VsZWN0ZWQoKSAmJiB0aGlzLmlzRWRpdGluZygpKSB7XG4gICAgICB0aGlzLnNzLmVkaXRvci5mb2N1cyh0aGlzLnBvc2l0aW9uKCkpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBzdG9wRWRpdGluZygpOiB2b2lkIHtcbiAgICB0aGlzLnNzLmVkaXRvci5zdG9wRWRpdGluZygpO1xuICB9XG59XG4iXX0=","import { Component, Directive, inject, output, ViewContainerRef, ElementRef, Renderer2, HostListener } from '@angular/core';\nimport { SpreadSheetService } from '../spreadsheet.service';\nimport * as i0 from \"@angular/core\";\nclass AutofillHandleComponent {\n constructor() {\n this.elementRef = inject((ElementRef));\n this.renderer = inject(Renderer2);\n this.handleMouseDown = output();\n }\n onMouseDown(e) {\n e.preventDefault();\n e.stopPropagation();\n this.handleMouseDown.emit(e);\n }\n show(rect, containerRect) {\n const el = this.elementRef.nativeElement;\n // ハンドルをセルの右下角に配置\n const handleSize = 14; // 8px + 2px*2 (border)\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 }\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 this.renderer.addClass(el, 'visible');\n }\n hide() {\n this.renderer.removeClass(this.elementRef.nativeElement, 'visible');\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: AutofillHandleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"20.0.5\", type: AutofillHandleComponent, isStandalone: true, selector: \"autofill-handle\", outputs: { handleMouseDown: \"handleMouseDown\" }, host: { listeners: { \"mousedown\": \"onMouseDown($event)\" } }, ngImport: i0, template: '', isInline: true, styles: [\":host{position:absolute;width:8px;height:8px;background-color:#2196f3;border:2px solid #ffffff;border-radius:50%;cursor:crosshair;z-index:10000;box-shadow:0 1px 3px #0000004d;transition:background-color .2s,opacity .2s;opacity:0;pointer-events:none}:host:hover{background-color:#1976d2}:host.visible{opacity:1;pointer-events:auto}\\n\"] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: AutofillHandleComponent, decorators: [{\n type: Component,\n args: [{ selector: 'autofill-handle', standalone: true, template: '', styles: [\":host{position:absolute;width:8px;height:8px;background-color:#2196f3;border:2px solid #ffffff;border-radius:50%;cursor:crosshair;z-index:10000;box-shadow:0 1px 3px #0000004d;transition:background-color .2s,opacity .2s;opacity:0;pointer-events:none}:host:hover{background-color:#1976d2}:host.visible{opacity:1;pointer-events:auto}\\n\"] }]\n }], propDecorators: { onMouseDown: [{\n type: HostListener,\n args: ['mousedown', ['$event']]\n }] } });\n/**\n * テーブル全体のオートフィル機能を管理するディレクティブ\n * セルディレクティブから直接呼び出される\n */\nexport class GridDataTableAutofill {\n constructor() {\n this.ss = inject(SpreadSheetService);\n this.viewContainerRef = inject(ViewContainerRef);\n this.renderer = inject(Renderer2);\n this.autofillStartPosition = null;\n this.lastAutofillContexts = null;\n this.cleanupFunctions = [];\n this.handleComponent = null;\n this.currentCell = null;\n // オートフィル完了イベント\n this.autofillComplete = output();\n this.currentPosition = null;\n // ハンドルコンポーネントを作成\n this.handleComponent = this.viewContainerRef.createComponent(AutofillHandleComponent);\n // ハンドルのmousedownイベントを設定\n this.handleComponent.instance.handleMouseDown.subscribe(() => {\n if (this.currentPosition) {\n this.startAutofill(this.currentPosition);\n }\n });\n }\n showHandle(cell, position) {\n this.currentCell = cell;\n this.currentPosition = position;\n // ハンドルを適切な親要素に配置(初回のみ)\n let scrollContainer = 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 if (scrollContainer) {\n this.renderer.appendChild(scrollContainer, this.handleComponent.location.nativeElement);\n }\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 }\n else {\n scrollContainer = this.handleComponent.location.nativeElement.parentElement;\n }\n const cellRect = cell.getBoundingClientRect();\n const containerRect = scrollContainer?.getBoundingClientRect();\n this.handleComponent?.instance.show(cellRect, containerRect);\n // スクロールイベントのリスナーを設定\n this.setupScrollListener();\n }\n hideHandle() {\n this.currentCell = null;\n this.currentPosition = null;\n this.handleComponent?.instance.hide();\n }\n onAutofillStart(position) {\n this.startAutofill(position);\n }\n setupScrollListener() {\n if (this.cleanupFunctions.some(fn => fn.name === 'scrollCleanup')) {\n return; // 既にリスナーが設定されている\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 const scrollContainer = this.currentCell?.closest('cdk-virtual-scroll-viewport') ||\n this.currentCell?.closest('.mat-table-container');\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 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 startAutofill(position) {\n this.autofillStartPosition = position;\n this.ss.autofill.startAutofill(position);\n // 既存のリスナーをクリーンアップ\n this.cleanup();\n // マウスイベントの設定\n const onMouseMove = this.onMouseMove.bind(this);\n const onMouseUp = this.onMouseUp.bind(this);\n document.addEventListener('mousemove', onMouseMove);\n document.addEventListener('mouseup', onMouseUp);\n this.cleanupFunctions.push(() => {\n document.removeEventListener('mousemove', onMouseMove);\n document.removeEventListener('mouseup', onMouseUp);\n });\n }\n onMouseMove(event) {\n if (!this.autofillStartPosition)\n return;\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 this.ss.autofill.updateAutofillRange({ row: targetRow, col: targetCol });\n }\n }\n onMouseUp() {\n const result = this.completeAutofill();\n if (result) {\n this.autofillComplete.emit(result);\n }\n this.autofillStartPosition = null;\n this.cleanup();\n }\n completeAutofill() {\n const sourcePosition = this.ss.autofill.getSourcePosition();\n const targetRange = this.ss.autofill.getTargetRange();\n if (!sourcePosition || !targetRange) {\n return null;\n }\n // GridServiceから実際のコンテキストを収集\n const contexts = [];\n const { start, end } = targetRange;\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 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 this.lastAutofillContexts = { sourceContext, targetContexts: contexts };\n // オートフィルモードをリセット\n this.ss.autofill.cancelAutofill();\n if (contexts.length > 0) {\n return {\n sourcePosition,\n targetRange,\n contexts: this.lastAutofillContexts\n };\n }\n return null;\n }\n getLastAutofillContexts() {\n return this.lastAutofillContexts;\n }\n cleanup() {\n this.cleanupFunctions.forEach(fn => fn());\n this.cleanupFunctions = [];\n }\n ngOnDestroy() {\n this.cleanup();\n if (this.handleComponent) {\n this.handleComponent.destroy();\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: GridDataTableAutofill, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.0.5\", type: GridDataTableAutofill, isStandalone: true, selector: \"[gridDataTableAutofill]\", outputs: { autofillComplete: \"autofillComplete\" }, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: GridDataTableAutofill, decorators: [{\n type: Directive,\n args: [{\n standalone: true,\n selector: '[gridDataTableAutofill]'\n }]\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC10YWJsZS1hdXRvZmlsbC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9AbmctYXRvbWljL2NvbW1vbi9zcmMvbGliL3NlcnZpY2VzL3NwcmVhZHNoZWV0L2RpcmVjdGl2ZXMvZ3JpZC10YWJsZS1hdXRvZmlsbC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFhLE1BQU0sRUFBRSxnQkFBZ0IsRUFBZ0IsVUFBVSxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckosT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7O0FBVTVELE1BOEJNLHVCQUF1QjtJQTlCN0I7UUErQlcsZUFBVSxHQUFHLE1BQU0sQ0FBQyxDQUFBLFVBQXVCLENBQUEsQ0FBQyxDQUFDO1FBQzlDLGFBQVEsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7UUFFckMsb0JBQWUsR0FBRyxNQUFNLEVBQWMsQ0FBQztLQThCeEM7SUEzQkMsV0FBVyxDQUFDLENBQWE7UUFDdkIsQ0FBQyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ25CLENBQUMsQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUNwQixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBRUQsSUFBSSxDQUFDLElBQWEsRUFBRSxhQUF1QjtRQUN6QyxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQztRQUN6QyxpQkFBaUI7UUFDakIsTUFBTSxVQUFVLEdBQUcsRUFBRSxDQUFDLENBQUMsdUJBQXVCO1FBRTlDLElBQUksYUFBYSxFQUFFLENBQUM7WUFDbEIsaUJBQWlCO1lBQ2pCLElBQUksQ0FBQyxRQUFRLENBQUMsUUFB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ZWN0LCBPbkRlc3Ryb3ksIG91dHB1dCwgVmlld0NvbnRhaW5lclJlZiwgQ29tcG9uZW50UmVmLCBFbGVtZW50UmVmLCBSZW5kZXJlcjIsIEhvc3RMaXN0ZW5lciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3ByZWFkU2hlZXRTZXJ2aWNlIH0gZnJvbSAnLi4vc3ByZWFkc2hlZXQuc2VydmljZSc7XG5cbnR5cGUgUG9zaXRpb24gPSB7IHJvdzogbnVtYmVyOyBjb2w6IG51bWJlciB9O1xudHlwZSBSYW5nZSA9IHsgc3RhcnQ6IFBvc2l0aW9uOyBlbmQ6IFBvc2l0aW9uIH07XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXV0b2ZpbGxDb250ZXh0IHtcbiAgc291cmNlQ29udGV4dDogYW55O1xuICB0YXJnZXRDb250ZXh0czogQXJyYXk8eyBwb3NpdGlvbjogUG9zaXRpb247IGNvbnRleHQ6IGFueSB9Pjtcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXV0b2ZpbGwtaGFuZGxlJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgdGVtcGxhdGU6ICcnLFxuICBzdHlsZXM6IFtgXG4gICAgOmhvc3Qge1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgd2lkdGg6IDhweDtcbiAgICAgIGhlaWdodDogOHB4O1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzIxOTZGMztcbiAgICAgIGJvcmRlcjogMnB4IHNvbGlkICNmZmZmZmY7XG4gICAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgICBjdXJzb3I6IGNyb3NzaGFpcjtcbiAgICAgIHotaW5kZXg6IDEwMDAwO1xuICAgICAgYm94LXNoYWRvdzogMCAxcHggM3B4IHJnYmEoMCwgMCwgMCwgMC4zKTtcbiAgICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMC4ycywgb3BhY2l0eSAwLjJzO1xuICAgICAgb3BhY2l0eTogMDtcbiAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgICAgXG4gICAgICAmOmhvdmVyIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzE5NzZEMjtcbiAgICAgIH1cbiAgICAgIFxuICAgICAgJi52aXNpYmxlIHtcbiAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgICAgcG9pbnRlci1ldmVudHM6IGF1dG87XG4gICAgICB9XG4gICAgfVxuICBgXVxufSlcbmNsYXNzIEF1dG9maWxsSGFuZGxlQ29tcG9uZW50IHtcbiAgcmVhZG9ubHkgZWxlbWVudFJlZiA9IGluamVjdChFbGVtZW50UmVmPEhUTUxFbGVtZW50Pik7XG4gIHByaXZhdGUgcmVuZGVyZXIgPSBpbmplY3QoUmVuZGVyZXIyKTtcbiAgXG4gIGhhbmRsZU1vdXNlRG93biA9IG91dHB1dDxNb3VzZUV2ZW50PigpO1xuICBcbiAgQEhvc3RMaXN0ZW5lcignbW91c2Vkb3duJywgWyckZXZlbnQnXSlcbiAgb25Nb3VzZURvd24oZTogTW91c2VFdmVudCk6IHZvaWQge1xuICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIHRoaXMuaGFuZGxlTW91c2VEb3duLmVtaXQoZSk7XG4gIH1cblxuICBzaG93KHJlY3Q6IERPTVJlY3QsIGNvbnRhaW5lclJlY3Q/OiBET01SZWN0KSB7XG4gICAgY29uc3QgZWwgPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcbiAgICAvLyDjg4/jg7Pjg4njg6vjgpLjgrvjg6vjga7lj7PkuIvop5LjgavphY3nva5cbiAgICBjb25zdCBoYW5kbGVTaXplID0gMTQ7IC8vIDhweCArIDJweCoyIChib3JkZXIpXG4gICAgXG4gICAgaWYgKGNvbnRhaW5lclJlY3QpIHtcbiAgICAgIC8vIOOCs+ODs+ODhuODiuOBi+OCieOBruebuOWvvuS9jee9ruOCkuioiOeul1xuICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShlbCwgJ2xlZnQnLCBgJHtyZWN0LnJpZ2h0IC0gY29udGFpbmVyUmVjdC5sZWZ0IC0gaGFuZGxlU2l6ZSAvIDJ9cHhgKTtcbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoZWwsICd0b3AnLCBgJHtyZWN0LmJvdHRvbSAtIGNvbnRhaW5lclJlY3QudG9wIC0gaGFuZGxlU2l6ZSAvIDJ9cHhgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gcG9zaXRpb246IGZpeGVk44Gu5aC05ZCI77yI44OV44Kp44O844Or44OQ44OD44Kv77yJXG4gICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKGVsLCAnbGVmdCcsIGAke3JlY3QucmlnaHQgLSBoYW5kbGVTaXplfXB4YCk7XG4gICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKGVsLCAndG9wJywgYCR7cmVjdC5ib3R0b20gLSBoYW5kbGVTaXplfXB4YCk7XG4gICAgfVxuICAgIFxuICAgIHRoaXMucmVuZGVyZXIuYWRkQ2xhc3MoZWwsICd2aXNpYmxlJyk7XG4gIH1cbiAgXG4gIGhpZGUoKSB7XG4gICAgdGhpcy5yZW5kZXJlci5yZW1vdmVDbGFzcyh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgJ3Zpc2libGUnKTtcbiAgfVxufVxuXG4vKipcbiAqIOODhuODvOODluODq+WFqOS9k+OBruOCquODvOODiOODleOCo+ODq+apn+iDveOCkueuoeeQhuOBmeOCi+ODh+OCo+ODrOOCr+ODhuOCo+ODllxuICog44K744Or44OH44Kj44Os44Kv44OG44Kj44OW44GL44KJ55u05o6l5ZG844Gz5Ye644GV44KM44KLXG4gKi9cbkBEaXJlY3RpdmUoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICBzZWxlY3RvcjogJ1tncmlkRGF0YVRhYmxlQXV0b2ZpbGxdJ1xufSlcbmV4cG9ydCBjbGFzcyBHcmlkRGF0YVRhYmxlQXV0b2ZpbGwgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICBwcml2YXRlIHNzID0gaW5qZWN0KFNwcmVhZFNoZWV0U2VydmljZSk7XG4gIHByaXZhdGUgdmlld0NvbnRhaW5lclJlZiA9IGluamVjdChWaWV3Q29udGFpbmVyUmVmKTtcbiAgcHJpdmF0ZSByZW5kZXJlciA9IGluamVjdChSZW5kZXJlcjIpO1xuICBwcml2YXRlIGF1dG9maWxsU3RhcnRQb3NpdGlvbjogUG9zaXRpb24gfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBsYXN0QXV0b2ZpbGxDb250ZXh0czogQXV0b2ZpbGxDb250ZXh0IHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgY2xlYW51cEZ1bmN0aW9uczogKCgpID0+IHZvaWQpW10gPSBbXTtcbiAgcHJpdmF0ZSBoYW5kbGVDb21wb25lbnQ6IENvbXBvbmVudFJlZjxBdXRvZmlsbEhhbmRsZUNvbXBvbmVudD4gfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBjdXJyZW50Q2VsbDogSFRNTEVsZW1lbnQgfCBudWxsID0gbnVsbDtcbiAgXG4gIC8vIOOCquODvOODiOODleOCo+ODq+WujOS6huOCpOODmeODs+ODiFxuICByZWFkb25seSBhdXRvZmlsbENvbXBsZXRlID0gb3V0cHV0PHtcbiAgICBzb3VyY2VQb3NpdGlvbjogUG9zaXRpb247XG4gICAgdGFyZ2V0UmFuZ2U6IFJhbmdlO1xuICAgIGNvbnRleHRzOiBBdXRvZmlsbENvbnRleHQ7XG4gIH0+KCk7XG5cbiAgcHJpdmF0ZSBjdXJyZW50UG9zaXRpb246IFBvc2l0aW9uIHwgbnVsbCA9IG51bGw7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgLy8g44OP44Oz44OJ44Or44Kz44Oz44Od44O844ON44Oz44OI44KS5L2c5oiQXG4gICAgdGhpcy5oYW5kbGVDb21wb25lbnQgPSB0aGlzLnZpZXdDb250YWluZXJSZWYuY3JlYXRlQ29tcG9uZW50KEF1dG9maWxsSGFuZGxlQ29tcG9uZW50KTtcbiAgICBcbiAgICAvLyDjg4/jg7Pjg4njg6vjga5tb3VzZWRvd27jgqTjg5njg7Pjg4jjgpLoqK3lrppcbiAgICB0aGlzLmhhbmRsZUNvbXBvbmVudC5pbnN0YW5jZS5oYW5kbGVNb3VzZURvd24uc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIGlmICh0aGlzLmN1cnJlbnRQb3NpdGlvbikge1xuICAgICAgICB0aGlzLnN0YXJ0QXV0b2ZpbGwodGhpcy5jdXJyZW50UG9zaXRpb24pO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgc2hvd0hhbmRsZShjZWxsOiBIVE1MRWxlbWVudCwgcG9zaXRpb246IFBvc2l0aW9uKTogdm9pZCB7XG4gICAgdGhpcy5jdXJyZW50Q2VsbCA9IGNlbGw7XG4gICAgdGhpcy5jdXJyZW50UG9zaXRpb24gPSBwb3NpdGlvbjtcbiAgICBcbiAgICAvLyDjg4/jg7Pjg4njg6vjgpLpganliIfjgaropqropoHntKDjgavphY3nva7vvIjliJ3lm57jga7jgb/vvIlcbiAgICBsZXQgc2Nyb2xsQ29udGFpbmVyOiBIVE1MRWxlbWVudCB8IG51bGwgPSBudWxsO1xuICAgIGlmICghdGhpcy5oYW5kbGVDb21wb25lbnQ/LmxvY2F0aW9uLm5hdGl2ZUVsZW1lbnQucGFyZW50RWxlbWVudCkge1xuICAgICAgLy8g44K544Kv44Ot44O844Or44OT44Ol44O844Od44O844OI44GL44CB44OG44O844OW44Or44Kz44Oz44OG44OK44KS5o6i44GZXG4gICAgICBzY3JvbGxDb250YWluZXIgPSBjZWxsLmNsb3Nlc3QoJ2Nkay12aXJ0dWFsLXNjcm9sbC12aWV3cG9ydCcpIHx8IFxuICAgICAgICAgICAgICAgICAgICAgICBjZWxsLmNsb3Nlc3QoJy5tYXQtdGFibGUtY29udGFpbmVyJykgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgY2VsbC5jbG9zZXN0KCd0YWJsZScpPy5wYXJlbnRFbGVtZW50O1xuICAgICAgXG4gICAgICBpZiAoc2Nyb2xsQ29udGFpbmVyKSB7XG4gICAgICAgIHRoaXMucmVuZGVyZXIuYXBwZW5kQ2hpbGQoc2Nyb2xsQ29udGFpbmVyLCB0aGlzLmhhbmRsZUNvbXBvbmVudC5sb2NhdGlvbi5uYXRpdmVFbGVtZW50KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIOODleOCqeODvOODq+ODkOODg+OCrzogZG9jdW1lbnQuYm9keeOBq+i/veWKoO+8iHBvc2l0aW9uOiBmaXhlZOODouODvOODie+8iVxuICAgICAgICB0aGlzLnJlbmRlcmVyLmFwcGVuZENoaWxkKGRvY3VtZW50LmJvZHksIHRoaXMuaGFuZGxlQ29tcG9uZW50LmxvY2F0aW9uLm5hdGl2ZUVsZW1lbnQpO1xuICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuaGFuZGxlQ29tcG9uZW50LmxvY2F0aW9uLm5hdGl2ZUVsZW1lbnQsICdwb3NpdGlvbicsICdmaXhlZCcpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBzY3JvbGxDb250YWluZXIgPSB0aGlzLmhhbmRsZUNvbXBvbmVudC5sb2NhdGlvbi5uYXRpdmVFbGVtZW50LnBhcmVudEVsZW1lbnQgYXMgSFRNTEVsZW1lbnQ7XG4gICAgfVxuICAgIFxuICAgIGNvbnN0IGNlbGxSZWN0ID0gY2VsbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICBjb25zdCBjb250YWluZXJSZWN0ID0gc2Nyb2xsQ29udGFpbmVyPy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICBcbiAgICB0aGlzLmhhbmRsZUNvbXBvbmVudD8uaW5zdGFuY2Uuc2hvdyhjZWxsUmVjdCwgY29udGFpbmVyUmVjdCk7XG4gICAgXG4gICAgLy8g44K544Kv44Ot44O844Or44Kk44OZ44Oz44OI44Gu44Oq44K544OK44O844KS6Kit5a6aXG4gICAgdGhpcy5zZXR1cFNjcm9sbExpc3RlbmVyKCk7XG4gIH1cblxuICBoaWRlSGFuZGxlKCk6IHZvaWQge1xuICAgIHRoaXMuY3VycmVudENlbGwgPSBudWxsO1xuICAgIHRoaXMuY3VycmVudFBvc2l0aW9uID0gbnVsbDtcbiAgICB0aGlzLmhhbmRsZUNvbXBvbmVudD8uaW5zdGFuY2UuaGlkZSgpO1xuICB9XG5cbiAgb25BdXRvZmlsbFN0YXJ0KHBvc2l0aW9uOiBQb3NpdGlvbik6IHZvaWQge1xuICAgIHRoaXMuc3RhcnRBdXRvZmlsbChwb3NpdGlvbik7XG4gIH1cbiAgXG4gIHByaXZhdGUgc2V0dXBTY3JvbGxMaXN0ZW5lcigpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5jbGVhbnVwRnVuY3Rpb25zLnNvbWUoZm4gPT4gZm4ubmFtZSA9PT0gJ3Njcm9sbENsZWFudXAnKSkge1xuICAgICAgcmV0dXJuOyAvLyDml6Ljgavjg6rjgrnjg4rjg7zjgYzoqK3lrprjgZXjgozjgabjgYTjgotcbiAgICB9XG4gICAgXG4gICAgY29uc3Qgc2Nyb2xsSGFuZGxlciA9ICgpID0+IHtcbiAgICAgIGlmICh0aGlzLmN1cnJlbnRDZWxsICYmIHRoaXMuaGFuZGxlQ29tcG9uZW50KSB7XG4gICAgICAgIGNvbnN0IGNlbGxSZWN0ID0gdGhpcy5jdXJyZW50Q2VsbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgY29uc3QgY29udGFpbmVyRWxlbWVudCA9IHRoaXMuaGFuZGxlQ29tcG9uZW50LmxvY2F0aW9uLm5hdGl2ZUVsZW1lbnQucGFyZW50RWxlbWVudDtcbiAgICAgICAgY29uc3QgY29udGFpbmVyUmVjdCA9IGNvbnRhaW5lckVsZW1lbnQ/LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICB0aGlzLmhhbmRsZUNvbXBvbmVudC5pbnN0YW5jZS5zaG93KGNlbGxSZWN0LCBjb250YWluZXJSZWN0KTtcbiAgICAgIH1cbiAgICB9O1xuICAgIFxuICAgIC8vIOOCueOCr+ODreODvOODq+WPr+iDveOBquimquimgee0oOOCkuimi+OBpOOBkeOCi1xuICAgIGNvbnN0IHNjcm9sbENvbnRhaW5lciA9IHRoaXMuY3VycmVudENlbGw/LmNsb3Nlc3QoJ2Nkay12aXJ0dWFsLXNjcm9sbC12aWV3cG9ydCcpIHx8IFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50Q2VsbD8uY2xvc2VzdCgnLm1hdC10YWJsZS1jb250YWluZXInKTtcbiAgICBcbiAgICBpZiAoc2Nyb2xsQ29udGFpbmVyKSB7XG4gICAgICBzY3JvbGxDb250YWluZXIuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgc2Nyb2xsSGFuZGxlciwgeyBwYXNzaXZlOiB0cnVlIH0pO1xuICAgICAgY29uc3QgY2xlYW51cCA9ICgpID0+IHNjcm9sbENvbnRhaW5lci5yZW1vdmVFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBzY3JvbGxIYW5kbGVyKTtcbiAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShjbGVhbnVwLCAnbmFtZScsIHsgdmFsdWU6ICdzY3JvbGxDbGVhbnVwJyB9KTtcbiAgICAgIHRoaXMuY2xlYW51cEZ1bmN0aW9ucy5wdXNoKGNsZWFudXApO1xuICAgIH1cbiAgICBcbiAgICAvLyDjgqbjgqPjg7Pjg4njgqbjgrnjgq/jg63jg7zjg6vjgoLnm6PoppZcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgc2Nyb2xsSGFuZGxlciwgeyBwYXNzaXZlOiB0cnVlIH0pO1xuICAgIGNvbnN0IHdpbmRvd0NsZWFudXAgPSAoKSA9PiB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgc2Nyb2xsSGFuZGxlcik7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHdpbmRvd0NsZWFudXAsICduYW1lJywgeyB2YWx1ZTogJ3Njcm9sbENsZWFudXAnIH0pO1xuICAgIHRoaXMuY2xlYW51cEZ1bmN0aW9ucy5wdXNoKHdpbmRvd0NsZWFudXApO1xuICB9XG4gIFxuICAvLyDjgrvjg6vjg4fjgqPjg6zjgq/jg4bjgqPjg5bjgYvjgonlkbzjgbPlh7rjgZXjgozjgovjg6Hjgr3jg4Pjg4lcbiAgcHJpdmF0ZSBzdGFydEF1dG9maWxsKHBvc2l0aW9uOiBQb3NpdGlvbik6IHZvaWQge1xuICAgIHRoaXMuYXV0b2ZpbGxTdGFydFBvc2l0aW9uID0gcG9zaXRpb247XG4gICAgdGhpcy5zcy5hdXRvZmlsbC5zdGFydEF1dG9maWxsKHBvc2l0aW9uKTtcbiAgICBcbiAgICAvLyDml6LlrZjjga7jg6rjgrnjg4rjg7zjgpLjgq/jg6rjg7zjg7PjgqLjg4Pjg5dcbiAgICB0aGlzLmNsZWFudXAoKTtcbiAgICBcbiAgICAvLyDjg57jgqbjgrnjgqTjg5njg7Pjg4jjga7oqK3lrppcbiAgICBjb25zdCBvbk1vdXNlTW92ZSA9IHRoaXMub25Nb3VzZU1vdmUuYmluZCh0aGlzKTtcbiAgICBjb25zdCBvbk1vdXNlVXAgPSB0aGlzLm9uTW91c2VVcC5iaW5kKHRoaXMpO1xuICAgIFxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIG9uTW91c2VNb3ZlKTtcbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgb25Nb3VzZVVwKTtcbiAgICBcbiAgICB0aGlzLmNsZWFudXBGdW5jdGlvbnMucHVzaCgoKSA9PiB7XG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZW1vdmUnLCBvbk1vdXNlTW92ZSk7XG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgb25Nb3VzZVVwKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgb25Nb3VzZU1vdmUoZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuYXV0b2ZpbGxTdGFydFBvc2l0aW9uKSByZXR1cm47XG4gICAgXG4gICAgLy8g44OJ44Op44OD44Kw5Lit44Gu44OX44Os44OT44Ol44O85Yem55CGXG4gICAgY29uc3QgZWxlbWVudCA9IGRvY3VtZW50LmVsZW1lbnRGcm9tUG9pbnQoZXZlbnQuY2xpZW50WCwgZXZlbnQuY2xpZW50WSk7XG4gICAgY29uc3QgY2VsbCA9IGVsZW1lbnQ/LmNsb3Nlc3QoJ3RkW21hdC1jZWxsXScpO1xuICAgIGlmIChjZWxsKSB7XG4gICAgICBjb25zdCB0YXJnZXRSb3cgPSBwYXJzZUludChjZWxsLmdldEF0dHJpYnV0ZSgnZGF0YS1yb3cnKSB8fCAnMCcpO1xuICAgICAgY29uc3QgdGFyZ2V0Q29sID0gcGFyc2VJbnQoY2VsbC5nZXRBdHRyaWJ1dGUoJ2RhdGEtY29sJykgfHwgJzAnKTtcbiAgICAgIFxuICAgICAgdGhpcy5zcy5hdXRvZmlsbC51cGRhdGVBdXRvZmlsbFJhbmdlKHsgcm93OiB0YXJnZXRSb3csIGNvbDogdGFyZ2V0Q29sIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgb25Nb3VzZVVwKCk6IHZvaWQge1xuICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMuY29tcGxldGVBdXRvZmlsbCgpO1xuICAgIGlmIChyZXN1bHQpIHtcbiAgICAgIHRoaXMuYXV0b2ZpbGxDb21wbGV0ZS5lbWl0KHJlc3VsdCk7XG4gICAgfVxuICAgIFxuICAgIHRoaXMuYXV0b2ZpbGxTdGFydFBvc2l0aW9uID0gbnVsbDtcbiAgICB0aGlzLmNsZWFudXAoKTtcbiAgfVxuXG4gIHByaXZhdGUgY29tcGxldGVBdXRvZmlsbCgpOiB7IHNvdXJjZVBvc2l0aW9uOiBQb3NpdGlvbjsgdGFyZ2V0UmFuZ2U6IFJhbmdlOyBjb250ZXh0czogQXV0b2ZpbGxDb250ZXh0IH0gfCBudWxsIHtcbiAgICBjb25zdCBzb3VyY2VQb3NpdGlvbiA9IHRoaXMuc3MuYXV0b2ZpbGwuZ2V0U291cmNlUG9zaXRpb24oKTtcbiAgICBjb25zdCB0YXJnZXRSYW5nZSA9IHRoaXMuc3MuYXV0b2ZpbGwuZ2V0VGFyZ2V0UmFuZ2UoKTtcbiAgICBcbiAgICBpZiAoIXNvdXJjZVBvc2l0aW9uIHx8ICF0YXJnZXRSYW5nZSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgLy8gR3JpZFNlcnZpY2XjgYvjgonlrp/pmpvjga7jgrPjg7Pjg4bjgq3jgrnjg4jjgpLlj47pm4ZcbiAgICBjb25zdCBjb250ZXh0czogQXJyYXk8eyBwb3NpdGlvbjogUG9zaXRpb247IGNvbnRleHQ6IGFueSB9PiA9IFtdO1xuICAgIGNvbnN0IHsgc3RhcnQsIGVuZCB9ID0gdGFyZ2V0UmFuZ2U7XG4gICAgXG4gICAgLy8g44K944O844K544Kz44Oz44OG44Kt44K544OI44KS5Y+W5b6XXG4gICAgY29uc3Qgc291cmNlQ29udGV4dCA9IHRoaXMuc3MuZ3JpZC5nZXRDb250ZXh0KHNvdXJjZVBvc2l0aW9uKTtcbiAgICBpZiAoIXNvdXJjZUNvbnRleHQpIHtcbiAgICAgIGNvbnNvbGUud2FybignU291cmNlIGNvbnRleHQgbm90IGZvdW5kJyk7XG4gICAgICB0aGlzLnNzLmF1dG9maWxsLmNhbmNlbEF1dG9maWxsKCk7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgXG4gICAgLy8g5b2x6Z+/44KS5Y+X44GR44KL44K744Or44Gu44Kz44Oz44OG44Kt44K544OI44KS5Y+O6ZuG77yI6KGo56S644GV44KM44Gm44GE44KL44K744Or44Gu44G/77yJXG4gICAgZm9yIChsZXQgcm93ID0gc3RhcnQucm93ICsgMTsgcm93IDw9IGVuZC5yb3c7IHJvdysrKSB7XG4gICAgICBjb25zdCB0YXJnZXRDb250ZXh0ID0gdGhpcy5zcy5ncmlkLmdldENvbnRleHQoeyByb3csIGNvbDogc3RhcnQuY29sIH0pO1xuICAgICAgaWYgKHRhcmdldENvbnRleHQpIHtcbiAgICAgICAgY29udGV4dHMucHVzaCh7IHBvc2l0aW9uOiB7IHJvdywgY29sOiBzdGFydC5jb2wgfSwgY29udGV4dDogdGFyZ2V0Q29udGV4dCB9KTtcbiAgICAgIH1cbiAgICB9XG4gICAgXG4gICAgLy8g44Kz44Oz44OG44Kt44K544OI5oOF5aCx44KS5L+d5a2YXG4gICAgdGhpcy5sYXN0QXV0b2ZpbGxDb250ZXh0cyA9IHsgc291cmNlQ29udGV4dCwgdGFyZ2V0Q29udGV4dHM6IGNvbnRleHRzIH07XG4gICAgXG4gICAgLy8g44Kq44O844OI44OV44Kj44Or44Oi44O844OJ44KS44Oq44K744OD44OIXG4gICAgdGhpcy5zcy5hdXRvZmlsbC5jYW5jZWxBdXRvZmlsbCgpO1xuICAgIFxuICAgIGlmIChjb250ZXh0cy5sZW5ndGggPiAwKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBzb3VyY2VQb3NpdGlvbixcbiAgICAgICAgdGFyZ2V0UmFuZ2UsXG4gICAgICAgIGNvbnRleHRzOiB0aGlzLmxhc3RBdXRvZmlsbENvbnRleHRzXG4gICAgICB9O1xuICAgIH1cbiAgICBcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGdldExhc3RBdXRvZmlsbENvbnRleHRzKCk6IEF1dG9maWxsQ29udGV4dCB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLmxhc3RBdXRvZmlsbENvbnRleHRzO1xuICB9XG5cbiAgcHJpdmF0ZSBjbGVhbnVwKCk6IHZvaWQge1xuICAgIHRoaXMuY2xlYW51cEZ1bmN0aW9ucy5mb3JFYWNoKGZuID0+IGZuKCkpO1xuICAgIHRoaXMuY2xlYW51cEZ1bmN0aW9ucyA9IFtdO1xuICB9XG4gIFxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmNsZWFudXAoKTtcbiAgICBpZiAodGhpcy5oYW5kbGVDb21wb25lbnQpIHtcbiAgICAgIHRoaXMuaGFuZGxlQ29tcG9uZW50LmRlc3Ryb3koKTtcbiAgICB9XG4gIH1cbn0iXX0=","import { Directive, effect, ElementRef, inject, input, computed } from \"@angular/core\";\nimport { SpreadSheetService } from \"../spreadsheet.service\";\nimport { GridDataTableAutofill } from \"./grid-table-autofill.directive\";\nimport * as i0 from \"@angular/core\";\nexport class SpreadSheetCellAutofill {\n constructor() {\n this.ss = inject(SpreadSheetService);\n this.el = inject(ElementRef);\n this.table = inject(GridDataTableAutofill);\n this.position = input({ row: 0, col: 0 }, { alias: 'gridDataCellAutofill' });\n this.enabled = input(true, { alias: 'gridDataCellAutofillEnabled' });\n this.shouldShow = computed(() => this.enabled() &&\n this.ss.selection.isCursorPosition(this.position()) &&\n !this.ss.editor.isEditing(this.position()) &&\n !this.ss.autofill.isAutofillMode());\n // requestAnimationFrameを使用して、DOMの更新後に実行\n effect(() => {\n if (this.shouldShow()) {\n requestAnimationFrame(() => {\n this.table.showHandle(this.el.nativeElement, this.position());\n });\n }\n else if (!this.shouldShow() && this.ss.selection.isCursorPosition(this.position())) {\n // 現在のセルがカーソル位置だが表示条件を満たさない場合のみ非表示\n this.table.hideHandle();\n }\n });\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SpreadSheetCellAutofill, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"17.1.0\", version: \"20.0.5\", type: SpreadSheetCellAutofill, isStandalone: true, selector: \"[gridDataCellAutofill]\", inputs: { position: { classPropertyName: \"position\", publicName: \"gridDataCellAutofill\", isSignal: true, isRequired: false, transformFunction: null }, enabled: { classPropertyName: \"enabled\", publicName: \"gridDataCellAutofillEnabled\", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SpreadSheetCellAutofill, decorators: [{\n type: Directive,\n args: [{ standalone: true, selector: '[gridDataCellAutofill]' }]\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC1jZWxsLWF1dG9maWxsLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BuZy1hdG9taWMvY29tbW9uL3NyYy9saWIvc2VydmljZXMvc3ByZWFkc2hlZXQvZGlyZWN0aXZlcy9ncmlkLWNlbGwtYXV0b2ZpbGwuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2RixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUM1RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQzs7QUFHeEUsTUFBTSxPQUFPLHVCQUF1QjtJQWFsQztRQVpVLE9BQUUsR0FBRyxNQUFNLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUNqQyxPQUFFLEdBQUcsTUFBTSxDQUFtQyxVQUFVLENBQUMsQ0FBQztRQUMxRCxVQUFLLEdBQUcsTUFBTSxDQUFDLHFCQUFxQixDQUFDLENBQUM7UUFFdEMsYUFBUSxHQUFHLEtBQUssQ0FBNkIsRUFBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLEtBQUssRUFBRSxzQkFBc0IsRUFBQyxDQUFDLENBQUM7UUFDaEcsWUFBTyxHQUFHLEtBQUssQ0FBVSxJQUFJLEVBQUUsRUFBQyxLQUFLLEVBQUUsNkJBQTZCLEVBQUMsQ0FBQyxDQUFDO1FBRXZFLGVBQVUsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNqRCxJQUFJLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDbkQsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQzFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQztRQUdwQyx3Q0FBd0M7UUFDeEMsTUFBTSxDQUFDLEdBQUcsRUFBRTtZQUNWLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUM7Z0JBQ3RCLHFCQUFxQixDQUFDLEdBQUcsRUFBRTtvQkFDekIsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7Z0JBQ2hFLENBQUMsQ0FBQyxDQUFDO1lBQ0wsQ0FBQztpQkFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJLElBQUksQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxFQUFFLENBQUM7Z0JBQ3JGLGtDQUFrQztnQkFDbEMsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUMxQixDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOzhHQXpCVSx1QkFBdUI7a0dBQXZCLHVCQUF1Qjs7MkZBQXZCLHVCQUF1QjtrQkFEbkMsU0FBUzttQkFBQyxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLHdCQUF3QixFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBlZmZlY3QsIEVsZW1lbnRSZWYsIGluamVjdCwgaW5wdXQsIGNvbXB1dGVkIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IFNwcmVhZFNoZWV0U2VydmljZSB9IGZyb20gXCIuLi9zcHJlYWRzaGVldC5zZXJ2aWNlXCI7XG5pbXBvcnQgeyBHcmlkRGF0YVRhYmxlQXV0b2ZpbGwgfSBmcm9tIFwiLi9ncmlkLXRhYmxlLWF1dG9maWxsLmRpcmVjdGl2ZVwiO1xuXG5ARGlyZWN0aXZlKHsgc3RhbmRhbG9uZTogdHJ1ZSwgc2VsZWN0b3I6ICdbZ3JpZERhdGFDZWxsQXV0b2ZpbGxdJyB9KVxuZXhwb3J0IGNsYXNzIFNwcmVhZFNoZWV0Q2VsbEF1dG9maWxsIHtcbiAgcHJvdGVjdGVkIHNzID0gaW5qZWN0KFNwcmVhZFNoZWV0U2VydmljZSk7XG4gIHJlYWRvbmx5IGVsID0gaW5qZWN0PEVsZW1lbnRSZWY8SFRNTFRhYmxlQ2VsbEVsZW1lbnQ+PihFbGVtZW50UmVmKTtcbiAgcmVhZG9ubHkgdGFibGUgPSBpbmplY3QoR3JpZERhdGFUYWJsZUF1dG9maWxsKTtcbiAgXG4gIHJlYWRvbmx5IHBvc2l0aW9uID0gaW5wdXQ8e3JvdzogbnVtYmVyLCBjb2w6IG51bWJlcn0+KHtyb3c6IDAsIGNvbDogMH0sIHthbGlhczogJ2dyaWREYXRhQ2VsbEF1dG9maWxsJ30pO1xuICByZWFkb25seSBlbmFibGVkID0gaW5wdXQ8Ym9vbGVhbj4odHJ1ZSwge2FsaWFzOiAnZ3JpZERhdGFDZWxsQXV0b2ZpbGxFbmFibGVkJ30pO1xuICBcbiAgcmVhZG9ubHkgc2hvdWxkU2hvdyA9IGNvbXB1dGVkKCgpID0+IHRoaXMuZW5hYmxlZCgpICYmIFxuICAgIHRoaXMuc3Muc2VsZWN0aW9uLmlzQ3Vyc29yUG9zaXRpb24odGhpcy5wb3NpdGlvbigpKSAmJiBcbiAgICAhdGhpcy5zcy5lZGl0b3IuaXNFZGl0aW5nKHRoaXMucG9zaXRpb24oKSkgJiZcbiAgICAhdGhpcy5zcy5hdXRvZmlsbC5pc0F1dG9maWxsTW9kZSgpKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICAvLyByZXF1ZXN0QW5pbWF0aW9uRnJhbWXjgpLkvb/nlKjjgZfjgabjgIFET03jga7mm7TmlrDlvozjgavlrp/ooYxcbiAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuc2hvdWxkU2hvdygpKSB7XG4gICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICAgICAgdGhpcy50YWJsZS5zaG93SGFuZGxlKHRoaXMuZWwubmF0aXZlRWxlbWVudCwgdGhpcy5wb3NpdGlvbigpKTtcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2UgaWYgKCF0aGlzLnNob3VsZFNob3coKSAmJiB0aGlzLnNzLnNlbGVjdGlvbi5pc0N1cnNvclBvc2l0aW9uKHRoaXMucG9zaXRpb24oKSkpIHtcbiAgICAgICAgLy8g54++5Zyo44Gu44K744Or44GM44Kr44O844K944Or5L2N572u44Gg44GM6KGo56S65p2h5Lu244KS5rqA44Gf44GV44Gq44GE5aC05ZCI44Gu44G/6Z2e6KGo56S6XG4gICAgICAgIHRoaXMudGFibGUuaGlkZUhhbmRsZSgpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59Il19","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//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9AbmctYXRvbWljL2NvbW1vbi9zcmMvbGliL3NlcnZpY2VzL3NwcmVhZHNoZWV0L2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsWUFBWSxDQUFDO0FBQzNCLGNBQWMsVUFBVSxDQUFDO0FBQ3pCLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsZ0ZBQWdGIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9kaXJlY3RpdmVzJztcbmV4cG9ydCAqIGZyb20gJy4vZmVhdHVyZXMnO1xuZXhwb3J0ICogZnJvbSAnLi9tb2RlbHMnO1xuZXhwb3J0ICogZnJvbSAnLi9zcHJlYWRzaGVldC5zZXJ2aWNlJztcbi8vIENvbXBvbmVudHMgYXJlIGltcG9ydGVkIGRpcmVjdGx5IGJ5IGRpcmVjdGl2ZXMgdG8gYXZvaWQgY2lyY3VsYXIgZGVwZW5kZW5jaWVzXG4iXX0=","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctYXRvbWljLWNvbW1vbi1zZXJ2aWNlcy1zcHJlYWRzaGVldC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BuZy1hdG9taWMvY29tbW9uL3NyYy9saWIvc2VydmljZXMvc3ByZWFkc2hlZXQvbmctYXRvbWljLWNvbW1vbi1zZXJ2aWNlcy1zcHJlYWRzaGVldC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ=="],"names":["i1.SelectionService"],"mappings":"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"}
|