@en-solutions/tgm-client-sdk 1.6.21
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/LICENSE +19 -0
- package/README.md +788 -0
- package/esm2022/en-solutions-tgm-client-sdk.mjs +5 -0
- package/esm2022/lib/components/database-manager/database-manager/database-manager.component.mjs +308 -0
- package/esm2022/lib/components/database-manager/database-manager.module.mjs +66 -0
- package/esm2022/lib/components/database-manager/object-browser/object-browser.component.mjs +98 -0
- package/esm2022/lib/components/database-manager/query-editor/query-editor.component.mjs +196 -0
- package/esm2022/lib/components/database-manager/query-toolbar/query-toolbar.component.mjs +70 -0
- package/esm2022/lib/components/database-manager/record-detail/record-detail.component.mjs +112 -0
- package/esm2022/lib/components/database-manager/registry/entity-registry.mjs +512 -0
- package/esm2022/lib/components/database-manager/results-grid/results-grid.component.mjs +165 -0
- package/esm2022/lib/components/database-manager/services/entity-schema.service.mjs +91 -0
- package/esm2022/lib/components/database-manager/services/query-executor.service.mjs +204 -0
- package/esm2022/lib/components/database-manager/table-data-viewer/table-data-viewer.component.mjs +166 -0
- package/esm2022/lib/components/database-manager/table-structure/table-structure.component.mjs +42 -0
- package/esm2022/lib/components/database-manager/types/database-manager.types.mjs +6 -0
- package/esm2022/lib/components/reporting/export-button/export-button.component.mjs +203 -0
- package/esm2022/lib/components/reporting/generated-report-list/generated-report-list.component.mjs +285 -0
- package/esm2022/lib/components/reporting/report-definition-form/report-definition-form.component.mjs +206 -0
- package/esm2022/lib/components/reporting/report-definition-list/report-definition-list.component.mjs +252 -0
- package/esm2022/lib/components/reporting/report-generate-dialog/report-generate-dialog.component.mjs +122 -0
- package/esm2022/lib/components/reporting/report-stats/report-stats.component.mjs +164 -0
- package/esm2022/lib/components/reporting/report-template-list/report-template-list.component.mjs +114 -0
- package/esm2022/lib/components/reporting/reporting.module.mjs +60 -0
- package/esm2022/lib/components/video-call/incoming-call/incoming-call.component.mjs +80 -0
- package/esm2022/lib/components/video-call/services/livekit-room.service.mjs +142 -0
- package/esm2022/lib/components/video-call/services/video-call-signaling.service.mjs +42 -0
- package/esm2022/lib/components/video-call/services/video-call-state.service.mjs +52 -0
- package/esm2022/lib/components/video-call/types/video-call.types.mjs +2 -0
- package/esm2022/lib/components/video-call/video-call.module.mjs +42 -0
- package/esm2022/lib/components/video-call/video-controls/video-controls.component.mjs +33 -0
- package/esm2022/lib/components/video-call/video-participant/video-participant.component.mjs +68 -0
- package/esm2022/lib/components/video-call/video-room/video-room.component.mjs +89 -0
- package/esm2022/lib/core/auth-interceptor.mjs +33 -0
- package/esm2022/lib/core/client-interceptor.mjs +34 -0
- package/esm2022/lib/core/error-handler.mjs +32 -0
- package/esm2022/lib/core/http-client.service.mjs +254 -0
- package/esm2022/lib/core/websocket.service.mjs +185 -0
- package/esm2022/lib/models/admin/audit.models.mjs +2 -0
- package/esm2022/lib/models/admin/backup.models.mjs +2 -0
- package/esm2022/lib/models/admin/client.models.mjs +2 -0
- package/esm2022/lib/models/admin/email-provider.models.mjs +2 -0
- package/esm2022/lib/models/admin/erp.models.mjs +2 -0
- package/esm2022/lib/models/admin/identity-provider.models.mjs +2 -0
- package/esm2022/lib/models/admin/index.mjs +14 -0
- package/esm2022/lib/models/admin/messaging-provider.models.mjs +2 -0
- package/esm2022/lib/models/admin/platform-admin.models.mjs +2 -0
- package/esm2022/lib/models/admin/queue.models.mjs +2 -0
- package/esm2022/lib/models/admin/role.models.mjs +2 -0
- package/esm2022/lib/models/admin/sandbox.models.mjs +2 -0
- package/esm2022/lib/models/admin/ticket.models.mjs +2 -0
- package/esm2022/lib/models/admin/webhook.models.mjs +2 -0
- package/esm2022/lib/models/api/ai.models.mjs +2 -0
- package/esm2022/lib/models/api/aip.models.mjs +2 -0
- package/esm2022/lib/models/api/cat.models.mjs +2 -0
- package/esm2022/lib/models/api/company.models.mjs +2 -0
- package/esm2022/lib/models/api/compliance.models.mjs +2 -0
- package/esm2022/lib/models/api/component.models.mjs +2 -0
- package/esm2022/lib/models/api/cortex-edge.models.mjs +2 -0
- package/esm2022/lib/models/api/cortex-event.models.mjs +2 -0
- package/esm2022/lib/models/api/cortex-insight.models.mjs +2 -0
- package/esm2022/lib/models/api/cortex-node.models.mjs +2 -0
- package/esm2022/lib/models/api/custom-field.models.mjs +2 -0
- package/esm2022/lib/models/api/deferral.models.mjs +2 -0
- package/esm2022/lib/models/api/diagnostic-report.models.mjs +2 -0
- package/esm2022/lib/models/api/document.models.mjs +2 -0
- package/esm2022/lib/models/api/energy.models.mjs +2 -0
- package/esm2022/lib/models/api/failure.models.mjs +2 -0
- package/esm2022/lib/models/api/fleet.models.mjs +2 -0
- package/esm2022/lib/models/api/inspection.models.mjs +2 -0
- package/esm2022/lib/models/api/intervention.models.mjs +2 -0
- package/esm2022/lib/models/api/iot.models.mjs +2 -0
- package/esm2022/lib/models/api/knowledge.models.mjs +2 -0
- package/esm2022/lib/models/api/loto.models.mjs +2 -0
- package/esm2022/lib/models/api/maintenance-record.models.mjs +2 -0
- package/esm2022/lib/models/api/maintenance.models.mjs +2 -0
- package/esm2022/lib/models/api/material.models.mjs +2 -0
- package/esm2022/lib/models/api/media.models.mjs +2 -0
- package/esm2022/lib/models/api/misc.models.mjs +2 -0
- package/esm2022/lib/models/api/project.models.mjs +2 -0
- package/esm2022/lib/models/api/quality.models.mjs +2 -0
- package/esm2022/lib/models/api/reporting.models.mjs +3 -0
- package/esm2022/lib/models/api/reservoir-websocket.models.mjs +17 -0
- package/esm2022/lib/models/api/reservoir.models.mjs +2 -0
- package/esm2022/lib/models/api/search.models.mjs +2 -0
- package/esm2022/lib/models/api/sensor.models.mjs +2 -0
- package/esm2022/lib/models/api/unit.models.mjs +2 -0
- package/esm2022/lib/models/api/user.models.mjs +2 -0
- package/esm2022/lib/models/api/warranty.models.mjs +2 -0
- package/esm2022/lib/models/api/work-permit.models.mjs +2 -0
- package/esm2022/lib/models/api/workflow.models.mjs +2 -0
- package/esm2022/lib/models/auth/index.mjs +4 -0
- package/esm2022/lib/models/auth/login.models.mjs +2 -0
- package/esm2022/lib/models/auth/sso.models.mjs +2 -0
- package/esm2022/lib/models/auth/totp.models.mjs +2 -0
- package/esm2022/lib/models/base.models.mjs +99 -0
- package/esm2022/lib/models/chat/chat.models.mjs +2 -0
- package/esm2022/lib/models/enums/cat.enums.mjs +17 -0
- package/esm2022/lib/models/enums/energy.enums.mjs +8 -0
- package/esm2022/lib/models/enums/erp.enums.mjs +5 -0
- package/esm2022/lib/models/enums/index.mjs +15 -0
- package/esm2022/lib/models/enums/inspection.enums.mjs +7 -0
- package/esm2022/lib/models/enums/loto.enums.mjs +25 -0
- package/esm2022/lib/models/enums/misc.enums.mjs +19 -0
- package/esm2022/lib/models/enums/quality.enums.mjs +22 -0
- package/esm2022/lib/models/enums/reservoir.enums.mjs +13 -0
- package/esm2022/lib/models/enums/sso.enums.mjs +3 -0
- package/esm2022/lib/models/enums/status.enums.mjs +41 -0
- package/esm2022/lib/models/enums/time.enums.mjs +5 -0
- package/esm2022/lib/models/enums/type.enums.mjs +45 -0
- package/esm2022/lib/models/enums/user.enums.mjs +6 -0
- package/esm2022/lib/models/enums/work-permit.enums.mjs +33 -0
- package/esm2022/lib/models/index.mjs +42 -0
- package/esm2022/lib/models/realtime/realtime-event.models.mjs +9 -0
- package/esm2022/lib/models/video/video-call.models.mjs +2 -0
- package/esm2022/lib/services/admin/activity-log.service.mjs +28 -0
- package/esm2022/lib/services/admin/announcement.service.mjs +37 -0
- package/esm2022/lib/services/admin/article-admin.service.mjs +37 -0
- package/esm2022/lib/services/admin/audit-log.service.mjs +53 -0
- package/esm2022/lib/services/admin/backup.service.mjs +28 -0
- package/esm2022/lib/services/admin/cache-admin.service.mjs +64 -0
- package/esm2022/lib/services/admin/client-admin.service.mjs +101 -0
- package/esm2022/lib/services/admin/client-api-key.service.mjs +31 -0
- package/esm2022/lib/services/admin/client-ocr.service.mjs +28 -0
- package/esm2022/lib/services/admin/client-usage.service.mjs +31 -0
- package/esm2022/lib/services/admin/data-export.service.mjs +19 -0
- package/esm2022/lib/services/admin/document-admin.service.mjs +40 -0
- package/esm2022/lib/services/admin/email-admin.service.mjs +28 -0
- package/esm2022/lib/services/admin/email-provider.service.mjs +58 -0
- package/esm2022/lib/services/admin/erp-admin.service.mjs +111 -0
- package/esm2022/lib/services/admin/identity-provider.service.mjs +46 -0
- package/esm2022/lib/services/admin/impersonation.service.mjs +19 -0
- package/esm2022/lib/services/admin/index.mjs +31 -0
- package/esm2022/lib/services/admin/messaging-provider.service.mjs +55 -0
- package/esm2022/lib/services/admin/notification.service.mjs +31 -0
- package/esm2022/lib/services/admin/platform-admin.service.mjs +34 -0
- package/esm2022/lib/services/admin/platform-webhook.service.mjs +34 -0
- package/esm2022/lib/services/admin/queue-admin.service.mjs +55 -0
- package/esm2022/lib/services/admin/role-admin.service.mjs +81 -0
- package/esm2022/lib/services/admin/sandbox-admin.service.mjs +34 -0
- package/esm2022/lib/services/admin/scheduler-admin.service.mjs +34 -0
- package/esm2022/lib/services/admin/subscription.service.mjs +28 -0
- package/esm2022/lib/services/admin/system-health.service.mjs +22 -0
- package/esm2022/lib/services/admin/user-admin.service.mjs +67 -0
- package/esm2022/lib/services/admin/user-permission.service.mjs +40 -0
- package/esm2022/lib/services/admin/webhook-admin.service.mjs +61 -0
- package/esm2022/lib/services/api/agent.service.mjs +29 -0
- package/esm2022/lib/services/api/ai-feedback.service.mjs +17 -0
- package/esm2022/lib/services/api/ai.service.mjs +66 -0
- package/esm2022/lib/services/api/aip-analysis.service.mjs +20 -0
- package/esm2022/lib/services/api/aip-financial.service.mjs +29 -0
- package/esm2022/lib/services/api/aip-geographic.service.mjs +30 -0
- package/esm2022/lib/services/api/aip-network.service.mjs +29 -0
- package/esm2022/lib/services/api/aip-performance.service.mjs +29 -0
- package/esm2022/lib/services/api/aip-resource.service.mjs +23 -0
- package/esm2022/lib/services/api/aip-workflow.service.mjs +32 -0
- package/esm2022/lib/services/api/aip.service.mjs +158 -0
- package/esm2022/lib/services/api/alert.service.mjs +26 -0
- package/esm2022/lib/services/api/anomaly-detection.service.mjs +40 -0
- package/esm2022/lib/services/api/asset-lifecycle.service.mjs +78 -0
- package/esm2022/lib/services/api/audit-entry.service.mjs +22 -0
- package/esm2022/lib/services/api/base-crud.service.mjs +37 -0
- package/esm2022/lib/services/api/bid.service.mjs +17 -0
- package/esm2022/lib/services/api/budget.service.mjs +17 -0
- package/esm2022/lib/services/api/bulk-operation.service.mjs +65 -0
- package/esm2022/lib/services/api/capex-project.service.mjs +17 -0
- package/esm2022/lib/services/api/cat.service.mjs +77 -0
- package/esm2022/lib/services/api/client-article.service.mjs +23 -0
- package/esm2022/lib/services/api/community.service.mjs +41 -0
- package/esm2022/lib/services/api/company-material-type.service.mjs +17 -0
- package/esm2022/lib/services/api/company-material.service.mjs +17 -0
- package/esm2022/lib/services/api/company.service.mjs +30 -0
- package/esm2022/lib/services/api/compliance.service.mjs +74 -0
- package/esm2022/lib/services/api/component-info.service.mjs +17 -0
- package/esm2022/lib/services/api/component-location.service.mjs +17 -0
- package/esm2022/lib/services/api/component.service.mjs +53 -0
- package/esm2022/lib/services/api/cortex-event.service.mjs +17 -0
- package/esm2022/lib/services/api/cortex-insight.service.mjs +23 -0
- package/esm2022/lib/services/api/cortex-node.service.mjs +17 -0
- package/esm2022/lib/services/api/cortex.service.mjs +29 -0
- package/esm2022/lib/services/api/custom-field.service.mjs +70 -0
- package/esm2022/lib/services/api/custom.service.mjs +43 -0
- package/esm2022/lib/services/api/dashboard.service.mjs +44 -0
- package/esm2022/lib/services/api/deferral.service.mjs +54 -0
- package/esm2022/lib/services/api/department.service.mjs +17 -0
- package/esm2022/lib/services/api/device-gateway.service.mjs +33 -0
- package/esm2022/lib/services/api/diagnostic-report.service.mjs +23 -0
- package/esm2022/lib/services/api/digital-twin.service.mjs +56 -0
- package/esm2022/lib/services/api/document.service.mjs +53 -0
- package/esm2022/lib/services/api/dynamic-crud.service.mjs +67 -0
- package/esm2022/lib/services/api/energy-analytics.service.mjs +42 -0
- package/esm2022/lib/services/api/energy-production.service.mjs +17 -0
- package/esm2022/lib/services/api/energy.service.mjs +91 -0
- package/esm2022/lib/services/api/entity-comment.service.mjs +31 -0
- package/esm2022/lib/services/api/event.service.mjs +17 -0
- package/esm2022/lib/services/api/export.service.mjs +216 -0
- package/esm2022/lib/services/api/extension.service.mjs +56 -0
- package/esm2022/lib/services/api/failure.service.mjs +53 -0
- package/esm2022/lib/services/api/fleet.service.mjs +140 -0
- package/esm2022/lib/services/api/inactive-component.service.mjs +17 -0
- package/esm2022/lib/services/api/index.mjs +101 -0
- package/esm2022/lib/services/api/inspection.service.mjs +29 -0
- package/esm2022/lib/services/api/intervention-request.service.mjs +17 -0
- package/esm2022/lib/services/api/intervention.service.mjs +17 -0
- package/esm2022/lib/services/api/knowledge.service.mjs +209 -0
- package/esm2022/lib/services/api/license.service.mjs +25 -0
- package/esm2022/lib/services/api/location.service.mjs +17 -0
- package/esm2022/lib/services/api/log.service.mjs +17 -0
- package/esm2022/lib/services/api/login-history.service.mjs +17 -0
- package/esm2022/lib/services/api/maintenance-plan.service.mjs +17 -0
- package/esm2022/lib/services/api/maintenance-record.service.mjs +17 -0
- package/esm2022/lib/services/api/material-consumable.service.mjs +41 -0
- package/esm2022/lib/services/api/material-instrument.service.mjs +29 -0
- package/esm2022/lib/services/api/material-item.service.mjs +53 -0
- package/esm2022/lib/services/api/material-tooling.service.mjs +41 -0
- package/esm2022/lib/services/api/measurement-unit.service.mjs +17 -0
- package/esm2022/lib/services/api/misc-crud.service.mjs +329 -0
- package/esm2022/lib/services/api/note.service.mjs +37 -0
- package/esm2022/lib/services/api/outage-resource.service.mjs +28 -0
- package/esm2022/lib/services/api/plant-data.service.mjs +31 -0
- package/esm2022/lib/services/api/procurement.service.mjs +53 -0
- package/esm2022/lib/services/api/project.service.mjs +17 -0
- package/esm2022/lib/services/api/property-template.service.mjs +17 -0
- package/esm2022/lib/services/api/quality.service.mjs +29 -0
- package/esm2022/lib/services/api/recurring-event.service.mjs +17 -0
- package/esm2022/lib/services/api/reporting.service.mjs +117 -0
- package/esm2022/lib/services/api/reservoir-data.service.mjs +19 -0
- package/esm2022/lib/services/api/reservoir.service.mjs +209 -0
- package/esm2022/lib/services/api/room.service.mjs +17 -0
- package/esm2022/lib/services/api/sandbox.service.mjs +62 -0
- package/esm2022/lib/services/api/scheduled-report.service.mjs +17 -0
- package/esm2022/lib/services/api/search.service.mjs +77 -0
- package/esm2022/lib/services/api/sensor.service.mjs +36 -0
- package/esm2022/lib/services/api/sla-policy.service.mjs +17 -0
- package/esm2022/lib/services/api/sla.service.mjs +17 -0
- package/esm2022/lib/services/api/threshold-alert-rule.service.mjs +17 -0
- package/esm2022/lib/services/api/ticket.service.mjs +73 -0
- package/esm2022/lib/services/api/time-entry.service.mjs +17 -0
- package/esm2022/lib/services/api/todo.service.mjs +17 -0
- package/esm2022/lib/services/api/unit.service.mjs +17 -0
- package/esm2022/lib/services/api/upload.service.mjs +84 -0
- package/esm2022/lib/services/api/user.service.mjs +107 -0
- package/esm2022/lib/services/api/warehouse.service.mjs +29 -0
- package/esm2022/lib/services/api/warranty.service.mjs +29 -0
- package/esm2022/lib/services/api/work-order.service.mjs +28 -0
- package/esm2022/lib/services/api/work-permit.service.mjs +17 -0
- package/esm2022/lib/services/api/workflow.service.mjs +86 -0
- package/esm2022/lib/services/auth/auth.service.mjs +97 -0
- package/esm2022/lib/services/auth/index.mjs +5 -0
- package/esm2022/lib/services/auth/platform-auth.service.mjs +39 -0
- package/esm2022/lib/services/auth/sso-auth.service.mjs +46 -0
- package/esm2022/lib/services/auth/totp.service.mjs +34 -0
- package/esm2022/lib/services/chat/chat-rest.service.mjs +104 -0
- package/esm2022/lib/services/chat/chat-websocket.service.mjs +70 -0
- package/esm2022/lib/services/chat/index.mjs +3 -0
- package/esm2022/lib/services/index.mjs +8 -0
- package/esm2022/lib/services/realtime/index.mjs +2 -0
- package/esm2022/lib/services/realtime/realtime-event.service.mjs +187 -0
- package/esm2022/lib/services/reservoir/index.mjs +2 -0
- package/esm2022/lib/services/reservoir/reservoir-websocket.service.mjs +105 -0
- package/esm2022/lib/services/video/index.mjs +3 -0
- package/esm2022/lib/services/video/video-call-rest.service.mjs +42 -0
- package/esm2022/lib/services/video/video-call-websocket.service.mjs +55 -0
- package/esm2022/lib/tgm-sdk.config.mjs +32 -0
- package/esm2022/lib/tgm-sdk.module.mjs +38 -0
- package/esm2022/public-api.mjs +52 -0
- package/fesm2022/en-solutions-tgm-client-sdk.mjs +11029 -0
- package/fesm2022/en-solutions-tgm-client-sdk.mjs.map +1 -0
- package/index.d.ts +5 -0
- package/lib/components/database-manager/database-manager/database-manager.component.d.ts +70 -0
- package/lib/components/database-manager/database-manager.module.d.ts +15 -0
- package/lib/components/database-manager/object-browser/object-browser.component.d.ts +35 -0
- package/lib/components/database-manager/query-editor/query-editor.component.d.ts +31 -0
- package/lib/components/database-manager/query-toolbar/query-toolbar.component.d.ts +23 -0
- package/lib/components/database-manager/record-detail/record-detail.component.d.ts +35 -0
- package/lib/components/database-manager/registry/entity-registry.d.ts +16 -0
- package/lib/components/database-manager/results-grid/results-grid.component.d.ts +62 -0
- package/lib/components/database-manager/services/entity-schema.service.d.ts +37 -0
- package/lib/components/database-manager/services/query-executor.service.d.ts +57 -0
- package/lib/components/database-manager/table-data-viewer/table-data-viewer.component.d.ts +54 -0
- package/lib/components/database-manager/table-structure/table-structure.component.d.ts +16 -0
- package/lib/components/database-manager/types/database-manager.types.d.ts +71 -0
- package/lib/components/reporting/export-button/export-button.component.d.ts +50 -0
- package/lib/components/reporting/generated-report-list/generated-report-list.component.d.ts +93 -0
- package/lib/components/reporting/report-definition-form/report-definition-form.component.d.ts +65 -0
- package/lib/components/reporting/report-definition-list/report-definition-list.component.d.ts +90 -0
- package/lib/components/reporting/report-generate-dialog/report-generate-dialog.component.d.ts +46 -0
- package/lib/components/reporting/report-stats/report-stats.component.d.ts +47 -0
- package/lib/components/reporting/report-template-list/report-template-list.component.d.ts +39 -0
- package/lib/components/reporting/reporting.module.d.ts +14 -0
- package/lib/components/video-call/incoming-call/incoming-call.component.d.ts +20 -0
- package/lib/components/video-call/services/livekit-room.service.d.ts +28 -0
- package/lib/components/video-call/services/video-call-signaling.service.d.ts +21 -0
- package/lib/components/video-call/services/video-call-state.service.d.ts +25 -0
- package/lib/components/video-call/types/video-call.types.d.ts +49 -0
- package/lib/components/video-call/video-call.module.d.ts +11 -0
- package/lib/components/video-call/video-controls/video-controls.component.d.ts +13 -0
- package/lib/components/video-call/video-participant/video-participant.component.d.ts +17 -0
- package/lib/components/video-call/video-room/video-room.component.d.ts +30 -0
- package/lib/core/auth-interceptor.d.ts +13 -0
- package/lib/core/client-interceptor.d.ts +14 -0
- package/lib/core/error-handler.d.ts +13 -0
- package/lib/core/http-client.service.d.ts +61 -0
- package/lib/core/websocket.service.d.ts +37 -0
- package/lib/models/admin/audit.models.d.ts +73 -0
- package/lib/models/admin/backup.models.d.ts +101 -0
- package/lib/models/admin/client.models.d.ts +99 -0
- package/lib/models/admin/email-provider.models.d.ts +56 -0
- package/lib/models/admin/erp.models.d.ts +188 -0
- package/lib/models/admin/identity-provider.models.d.ts +1 -0
- package/lib/models/admin/index.d.ts +13 -0
- package/lib/models/admin/messaging-provider.models.d.ts +49 -0
- package/lib/models/admin/platform-admin.models.d.ts +33 -0
- package/lib/models/admin/queue.models.d.ts +54 -0
- package/lib/models/admin/role.models.d.ts +50 -0
- package/lib/models/admin/sandbox.models.d.ts +54 -0
- package/lib/models/admin/ticket.models.d.ts +48 -0
- package/lib/models/admin/webhook.models.d.ts +65 -0
- package/lib/models/api/ai.models.d.ts +75 -0
- package/lib/models/api/aip.models.d.ts +545 -0
- package/lib/models/api/cat.models.d.ts +260 -0
- package/lib/models/api/company.models.d.ts +125 -0
- package/lib/models/api/compliance.models.d.ts +74 -0
- package/lib/models/api/component.models.d.ts +294 -0
- package/lib/models/api/cortex-edge.models.d.ts +14 -0
- package/lib/models/api/cortex-event.models.d.ts +12 -0
- package/lib/models/api/cortex-insight.models.d.ts +25 -0
- package/lib/models/api/cortex-node.models.d.ts +10 -0
- package/lib/models/api/custom-field.models.d.ts +37 -0
- package/lib/models/api/deferral.models.d.ts +81 -0
- package/lib/models/api/diagnostic-report.models.d.ts +29 -0
- package/lib/models/api/document.models.d.ts +95 -0
- package/lib/models/api/energy.models.d.ts +210 -0
- package/lib/models/api/failure.models.d.ts +171 -0
- package/lib/models/api/fleet.models.d.ts +193 -0
- package/lib/models/api/inspection.models.d.ts +110 -0
- package/lib/models/api/intervention.models.d.ts +254 -0
- package/lib/models/api/iot.models.d.ts +15 -0
- package/lib/models/api/knowledge.models.d.ts +340 -0
- package/lib/models/api/loto.models.d.ts +51 -0
- package/lib/models/api/maintenance-record.models.d.ts +100 -0
- package/lib/models/api/maintenance.models.d.ts +188 -0
- package/lib/models/api/material.models.d.ts +261 -0
- package/lib/models/api/media.models.d.ts +106 -0
- package/lib/models/api/misc.models.d.ts +929 -0
- package/lib/models/api/project.models.d.ts +118 -0
- package/lib/models/api/quality.models.d.ts +153 -0
- package/lib/models/api/reporting.models.d.ts +76 -0
- package/lib/models/api/reservoir-websocket.models.d.ts +48 -0
- package/lib/models/api/reservoir.models.d.ts +274 -0
- package/lib/models/api/search.models.d.ts +30 -0
- package/lib/models/api/sensor.models.d.ts +117 -0
- package/lib/models/api/unit.models.d.ts +82 -0
- package/lib/models/api/user.models.d.ts +253 -0
- package/lib/models/api/warranty.models.d.ts +51 -0
- package/lib/models/api/work-permit.models.d.ts +70 -0
- package/lib/models/api/workflow.models.d.ts +52 -0
- package/lib/models/auth/index.d.ts +3 -0
- package/lib/models/auth/login.models.d.ts +134 -0
- package/lib/models/auth/sso.models.d.ts +136 -0
- package/lib/models/auth/totp.models.d.ts +19 -0
- package/lib/models/base.models.d.ts +90 -0
- package/lib/models/chat/chat.models.d.ts +171 -0
- package/lib/models/enums/cat.enums.d.ts +114 -0
- package/lib/models/enums/energy.enums.d.ts +50 -0
- package/lib/models/enums/erp.enums.d.ts +49 -0
- package/lib/models/enums/index.d.ts +14 -0
- package/lib/models/enums/inspection.enums.d.ts +61 -0
- package/lib/models/enums/loto.enums.d.ts +41 -0
- package/lib/models/enums/misc.enums.d.ts +151 -0
- package/lib/models/enums/quality.enums.d.ts +25 -0
- package/lib/models/enums/reservoir.enums.d.ts +80 -0
- package/lib/models/enums/sso.enums.d.ts +15 -0
- package/lib/models/enums/status.enums.d.ts +296 -0
- package/lib/models/enums/time.enums.d.ts +51 -0
- package/lib/models/enums/type.enums.d.ts +324 -0
- package/lib/models/enums/user.enums.d.ts +31 -0
- package/lib/models/enums/work-permit.enums.d.ts +56 -0
- package/lib/models/index.d.ts +41 -0
- package/lib/models/realtime/realtime-event.models.d.ts +95 -0
- package/lib/models/video/video-call.models.d.ts +65 -0
- package/lib/services/admin/activity-log.service.d.ts +13 -0
- package/lib/services/admin/announcement.service.d.ts +17 -0
- package/lib/services/admin/article-admin.service.d.ts +17 -0
- package/lib/services/admin/audit-log.service.d.ts +22 -0
- package/lib/services/admin/backup.service.d.ts +15 -0
- package/lib/services/admin/cache-admin.service.d.ts +26 -0
- package/lib/services/admin/client-admin.service.d.ts +38 -0
- package/lib/services/admin/client-api-key.service.d.ts +15 -0
- package/lib/services/admin/client-ocr.service.d.ts +14 -0
- package/lib/services/admin/client-usage.service.d.ts +15 -0
- package/lib/services/admin/data-export.service.d.ts +10 -0
- package/lib/services/admin/document-admin.service.d.ts +18 -0
- package/lib/services/admin/email-admin.service.d.ts +14 -0
- package/lib/services/admin/email-provider.service.d.ts +25 -0
- package/lib/services/admin/erp-admin.service.d.ts +41 -0
- package/lib/services/admin/identity-provider.service.d.ts +21 -0
- package/lib/services/admin/impersonation.service.d.ts +11 -0
- package/lib/services/admin/index.d.ts +30 -0
- package/lib/services/admin/messaging-provider.service.d.ts +24 -0
- package/lib/services/admin/notification.service.d.ts +15 -0
- package/lib/services/admin/platform-admin.service.d.ts +17 -0
- package/lib/services/admin/platform-webhook.service.d.ts +16 -0
- package/lib/services/admin/queue-admin.service.d.ts +24 -0
- package/lib/services/admin/role-admin.service.d.ts +37 -0
- package/lib/services/admin/sandbox-admin.service.d.ts +17 -0
- package/lib/services/admin/scheduler-admin.service.d.ts +61 -0
- package/lib/services/admin/subscription.service.d.ts +15 -0
- package/lib/services/admin/system-health.service.d.ts +11 -0
- package/lib/services/admin/user-admin.service.d.ts +27 -0
- package/lib/services/admin/user-permission.service.d.ts +18 -0
- package/lib/services/admin/webhook-admin.service.d.ts +26 -0
- package/lib/services/api/agent.service.d.ts +16 -0
- package/lib/services/api/ai-feedback.service.d.ts +9 -0
- package/lib/services/api/ai.service.d.ts +36 -0
- package/lib/services/api/aip-analysis.service.d.ts +13 -0
- package/lib/services/api/aip-financial.service.d.ts +16 -0
- package/lib/services/api/aip-geographic.service.d.ts +16 -0
- package/lib/services/api/aip-network.service.d.ts +16 -0
- package/lib/services/api/aip-performance.service.d.ts +16 -0
- package/lib/services/api/aip-resource.service.d.ts +14 -0
- package/lib/services/api/aip-workflow.service.d.ts +24 -0
- package/lib/services/api/aip.service.d.ts +73 -0
- package/lib/services/api/alert.service.d.ts +15 -0
- package/lib/services/api/anomaly-detection.service.d.ts +26 -0
- package/lib/services/api/asset-lifecycle.service.d.ts +29 -0
- package/lib/services/api/audit-entry.service.d.ts +13 -0
- package/lib/services/api/base-crud.service.d.ts +18 -0
- package/lib/services/api/bid.service.d.ts +10 -0
- package/lib/services/api/budget.service.d.ts +10 -0
- package/lib/services/api/bulk-operation.service.d.ts +26 -0
- package/lib/services/api/capex-project.service.d.ts +10 -0
- package/lib/services/api/cat.service.d.ts +40 -0
- package/lib/services/api/client-article.service.d.ts +14 -0
- package/lib/services/api/community.service.d.ts +21 -0
- package/lib/services/api/company-material-type.service.d.ts +10 -0
- package/lib/services/api/company-material.service.d.ts +9 -0
- package/lib/services/api/company.service.d.ts +15 -0
- package/lib/services/api/compliance.service.d.ts +35 -0
- package/lib/services/api/component-info.service.d.ts +10 -0
- package/lib/services/api/component-location.service.d.ts +10 -0
- package/lib/services/api/component.service.d.ts +32 -0
- package/lib/services/api/cortex-event.service.d.ts +10 -0
- package/lib/services/api/cortex-insight.service.d.ts +14 -0
- package/lib/services/api/cortex-node.service.d.ts +10 -0
- package/lib/services/api/cortex.service.d.ts +15 -0
- package/lib/services/api/custom-field.service.d.ts +33 -0
- package/lib/services/api/custom.service.d.ts +23 -0
- package/lib/services/api/dashboard.service.d.ts +18 -0
- package/lib/services/api/deferral.service.d.ts +29 -0
- package/lib/services/api/department.service.d.ts +9 -0
- package/lib/services/api/device-gateway.service.d.ts +16 -0
- package/lib/services/api/diagnostic-report.service.d.ts +14 -0
- package/lib/services/api/digital-twin.service.d.ts +29 -0
- package/lib/services/api/document.service.d.ts +28 -0
- package/lib/services/api/dynamic-crud.service.d.ts +41 -0
- package/lib/services/api/energy-analytics.service.d.ts +16 -0
- package/lib/services/api/energy-production.service.d.ts +10 -0
- package/lib/services/api/energy.service.d.ts +46 -0
- package/lib/services/api/entity-comment.service.d.ts +16 -0
- package/lib/services/api/event.service.d.ts +10 -0
- package/lib/services/api/export.service.d.ts +48 -0
- package/lib/services/api/extension.service.d.ts +24 -0
- package/lib/services/api/failure.service.d.ts +28 -0
- package/lib/services/api/fleet.service.d.ts +71 -0
- package/lib/services/api/inactive-component.service.d.ts +10 -0
- package/lib/services/api/index.d.ts +101 -0
- package/lib/services/api/inspection.service.d.ts +16 -0
- package/lib/services/api/intervention-request.service.d.ts +10 -0
- package/lib/services/api/intervention.service.d.ts +10 -0
- package/lib/services/api/knowledge.service.d.ts +106 -0
- package/lib/services/api/license.service.d.ts +14 -0
- package/lib/services/api/location.service.d.ts +9 -0
- package/lib/services/api/log.service.d.ts +9 -0
- package/lib/services/api/login-history.service.d.ts +10 -0
- package/lib/services/api/maintenance-plan.service.d.ts +10 -0
- package/lib/services/api/maintenance-record.service.d.ts +10 -0
- package/lib/services/api/material-consumable.service.d.ts +22 -0
- package/lib/services/api/material-instrument.service.d.ts +16 -0
- package/lib/services/api/material-item.service.d.ts +28 -0
- package/lib/services/api/material-tooling.service.d.ts +22 -0
- package/lib/services/api/measurement-unit.service.d.ts +10 -0
- package/lib/services/api/misc-crud.service.d.ts +167 -0
- package/lib/services/api/note.service.d.ts +14 -0
- package/lib/services/api/outage-resource.service.d.ts +15 -0
- package/lib/services/api/plant-data.service.d.ts +14 -0
- package/lib/services/api/procurement.service.d.ts +27 -0
- package/lib/services/api/project.service.d.ts +10 -0
- package/lib/services/api/property-template.service.d.ts +10 -0
- package/lib/services/api/quality.service.d.ts +16 -0
- package/lib/services/api/recurring-event.service.d.ts +10 -0
- package/lib/services/api/reporting.service.d.ts +38 -0
- package/lib/services/api/reservoir-data.service.d.ts +10 -0
- package/lib/services/api/reservoir.service.d.ts +109 -0
- package/lib/services/api/room.service.d.ts +10 -0
- package/lib/services/api/sandbox.service.d.ts +26 -0
- package/lib/services/api/scheduled-report.service.d.ts +10 -0
- package/lib/services/api/search.service.d.ts +54 -0
- package/lib/services/api/sensor.service.d.ts +17 -0
- package/lib/services/api/sla-policy.service.d.ts +10 -0
- package/lib/services/api/sla.service.d.ts +10 -0
- package/lib/services/api/threshold-alert-rule.service.d.ts +10 -0
- package/lib/services/api/ticket.service.d.ts +60 -0
- package/lib/services/api/time-entry.service.d.ts +10 -0
- package/lib/services/api/todo.service.d.ts +10 -0
- package/lib/services/api/unit.service.d.ts +10 -0
- package/lib/services/api/upload.service.d.ts +50 -0
- package/lib/services/api/user.service.d.ts +59 -0
- package/lib/services/api/warehouse.service.d.ts +15 -0
- package/lib/services/api/warranty.service.d.ts +16 -0
- package/lib/services/api/work-order.service.d.ts +17 -0
- package/lib/services/api/work-permit.service.d.ts +10 -0
- package/lib/services/api/workflow.service.d.ts +33 -0
- package/lib/services/auth/auth.service.d.ts +33 -0
- package/lib/services/auth/index.d.ts +4 -0
- package/lib/services/auth/platform-auth.service.d.ts +16 -0
- package/lib/services/auth/sso-auth.service.d.ts +21 -0
- package/lib/services/auth/totp.service.d.ts +18 -0
- package/lib/services/chat/chat-rest.service.d.ts +40 -0
- package/lib/services/chat/chat-websocket.service.d.ts +34 -0
- package/lib/services/chat/index.d.ts +2 -0
- package/lib/services/index.d.ts +7 -0
- package/lib/services/realtime/index.d.ts +1 -0
- package/lib/services/realtime/realtime-event.service.d.ts +137 -0
- package/lib/services/reservoir/index.d.ts +1 -0
- package/lib/services/reservoir/reservoir-websocket.service.d.ts +47 -0
- package/lib/services/video/index.d.ts +2 -0
- package/lib/services/video/video-call-rest.service.d.ts +19 -0
- package/lib/services/video/video-call-websocket.service.d.ts +31 -0
- package/lib/tgm-sdk.config.d.ts +36 -0
- package/lib/tgm-sdk.module.d.ts +13 -0
- package/package.json +40 -0
- package/public-api.d.ts +42 -0
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
import { Component, EventEmitter, Input, Output, } from '@angular/core';
|
|
2
|
+
import { CommonModule } from '@angular/common';
|
|
3
|
+
import { FormsModule } from '@angular/forms';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "../services/entity-schema.service";
|
|
6
|
+
import * as i2 from "@angular/common";
|
|
7
|
+
import * as i3 from "@angular/forms";
|
|
8
|
+
export class ObjectBrowserComponent {
|
|
9
|
+
entitySchema;
|
|
10
|
+
// ── Data ──
|
|
11
|
+
config;
|
|
12
|
+
selectedEntity;
|
|
13
|
+
// ── Labels ──
|
|
14
|
+
searchPlaceholder = 'Search entities...';
|
|
15
|
+
groupLabels;
|
|
16
|
+
// ── Custom templates ──
|
|
17
|
+
entityTemplate;
|
|
18
|
+
groupTemplate;
|
|
19
|
+
// ── Events ──
|
|
20
|
+
selectEntity = new EventEmitter();
|
|
21
|
+
doubleClickEntity = new EventEmitter();
|
|
22
|
+
searchTerm = '';
|
|
23
|
+
groups = [];
|
|
24
|
+
filteredGroups = [];
|
|
25
|
+
constructor(entitySchema) {
|
|
26
|
+
this.entitySchema = entitySchema;
|
|
27
|
+
}
|
|
28
|
+
ngOnChanges(changes) {
|
|
29
|
+
if (changes['config'] || changes['groupLabels']) {
|
|
30
|
+
this.loadGroups();
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
onSearch() {
|
|
34
|
+
this.filterGroups();
|
|
35
|
+
}
|
|
36
|
+
toggleGroup(group) {
|
|
37
|
+
group.expanded = !group.expanded;
|
|
38
|
+
}
|
|
39
|
+
onSelectEntity(entity) {
|
|
40
|
+
this.selectEntity.emit(entity);
|
|
41
|
+
}
|
|
42
|
+
onDoubleClick(entity) {
|
|
43
|
+
this.doubleClickEntity.emit(entity);
|
|
44
|
+
}
|
|
45
|
+
isSelected(entity) {
|
|
46
|
+
return this.selectedEntity?.key === entity.key;
|
|
47
|
+
}
|
|
48
|
+
trackByCode(_index, group) {
|
|
49
|
+
return group.code;
|
|
50
|
+
}
|
|
51
|
+
trackByKey(_index, entity) {
|
|
52
|
+
return entity.key;
|
|
53
|
+
}
|
|
54
|
+
loadGroups() {
|
|
55
|
+
this.groups = this.entitySchema.getEntityGroups(this.config, this.groupLabels).map(g => ({
|
|
56
|
+
...g,
|
|
57
|
+
expanded: true,
|
|
58
|
+
}));
|
|
59
|
+
this.filterGroups();
|
|
60
|
+
}
|
|
61
|
+
filterGroups() {
|
|
62
|
+
const term = this.searchTerm.toLowerCase().trim();
|
|
63
|
+
if (!term) {
|
|
64
|
+
this.filteredGroups = this.groups;
|
|
65
|
+
return;
|
|
66
|
+
}
|
|
67
|
+
this.filteredGroups = this.groups
|
|
68
|
+
.map(group => ({
|
|
69
|
+
...group,
|
|
70
|
+
expanded: true,
|
|
71
|
+
entities: group.entities.filter(e => e.name.toLowerCase().includes(term) || e.key.toLowerCase().includes(term)),
|
|
72
|
+
}))
|
|
73
|
+
.filter(g => g.entities.length > 0);
|
|
74
|
+
}
|
|
75
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ObjectBrowserComponent, deps: [{ token: i1.EntitySchemaService }], target: i0.ɵɵFactoryTarget.Component });
|
|
76
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: ObjectBrowserComponent, isStandalone: true, selector: "tgm-object-browser", inputs: { config: "config", selectedEntity: "selectedEntity", searchPlaceholder: "searchPlaceholder", groupLabels: "groupLabels", entityTemplate: "entityTemplate", groupTemplate: "groupTemplate" }, outputs: { selectEntity: "selectEntity", doubleClickEntity: "doubleClickEntity" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"tgm-object-browser\">\n <!-- Search -->\n <div class=\"tgm-object-browser__search\">\n <input\n type=\"text\"\n class=\"tgm-object-browser__input\"\n [placeholder]=\"searchPlaceholder\"\n [(ngModel)]=\"searchTerm\"\n (ngModelChange)=\"onSearch()\"\n />\n </div>\n\n <!-- Tree -->\n <div class=\"tgm-object-browser__tree\">\n <ng-container *ngFor=\"let group of filteredGroups; trackBy: trackByCode\">\n <!-- Custom group template -->\n <ng-container *ngIf=\"groupTemplate; else defaultGroup\">\n <ng-container *ngTemplateOutlet=\"groupTemplate; context: { $implicit: group }\"></ng-container>\n </ng-container>\n\n <ng-template #defaultGroup>\n <div class=\"tgm-object-browser__group\">\n <div\n class=\"tgm-object-browser__group-header\"\n (click)=\"toggleGroup(group)\"\n >\n <span class=\"tgm-object-browser__arrow\" [class.tgm-object-browser__arrow--expanded]=\"group.expanded\">\n ▶\n </span>\n <span class=\"tgm-object-browser__group-label\">{{ group.label }}</span>\n <span class=\"tgm-object-browser__group-count\">{{ group.entities.length }}</span>\n </div>\n\n <div class=\"tgm-object-browser__entities\" *ngIf=\"group.expanded\">\n <ng-container *ngFor=\"let entity of group.entities; trackBy: trackByKey\">\n <!-- Custom entity template -->\n <ng-container *ngIf=\"entityTemplate; else defaultEntity\">\n <ng-container *ngTemplateOutlet=\"entityTemplate; context: { $implicit: entity }\"></ng-container>\n </ng-container>\n\n <ng-template #defaultEntity>\n <div\n class=\"tgm-object-browser__entity\"\n [class.tgm-object-browser__entity--selected]=\"isSelected(entity)\"\n (click)=\"onSelectEntity(entity)\"\n (dblclick)=\"onDoubleClick(entity)\"\n [title]=\"entity.description || entity.name\"\n >\n <span class=\"tgm-object-browser__entity-icon\">▣</span>\n <span class=\"tgm-object-browser__entity-name\">{{ entity.name }}</span>\n </div>\n </ng-template>\n </ng-container>\n </div>\n </div>\n </ng-template>\n </ng-container>\n\n <!-- Empty state -->\n <div class=\"tgm-object-browser__empty\" *ngIf=\"filteredGroups.length === 0\">\n <p>No entities found.</p>\n </div>\n </div>\n</div>\n", styles: [":host{display:block;height:100%;overflow:hidden}.tgm-object-browser{display:flex;flex-direction:column;height:100%}.tgm-object-browser__search{padding:var(--tgm-db-spacing-sm, 8px);border-bottom:1px solid var(--tgm-db-border, rgba(255, 255, 255, .1))}.tgm-object-browser__input{width:100%;padding:6px 10px;background:var(--tgm-db-bg-secondary, rgba(255, 255, 255, .05));border:1px solid var(--tgm-db-border, rgba(255, 255, 255, .1));border-radius:var(--tgm-db-radius-sm, 4px);color:var(--tgm-db-text, #e5e7eb);font-size:13px;font-family:var(--tgm-db-font-family, inherit);outline:none;box-sizing:border-box}.tgm-object-browser__input::placeholder{color:var(--tgm-db-text-muted, #6b7280)}.tgm-object-browser__input:focus{border-color:var(--tgm-db-primary, #3b82f6)}.tgm-object-browser__tree{flex:1;overflow-y:auto;padding:var(--tgm-db-spacing-sm, 8px) 0}.tgm-object-browser__group{margin-bottom:2px}.tgm-object-browser__group-header{display:flex;align-items:center;gap:6px;padding:4px var(--tgm-db-spacing-sm, 8px);cursor:pointer;-webkit-user-select:none;user-select:none;font-size:12px;font-weight:600;color:var(--tgm-db-text-secondary, #9ca3af);text-transform:uppercase;letter-spacing:.5px}.tgm-object-browser__group-header:hover{color:var(--tgm-db-text, #e5e7eb)}.tgm-object-browser__arrow{font-size:8px;transition:transform .15s;display:inline-block}.tgm-object-browser__arrow--expanded{transform:rotate(90deg)}.tgm-object-browser__group-label{flex:1}.tgm-object-browser__group-count{font-size:11px;color:var(--tgm-db-text-muted, #6b7280);font-weight:400}.tgm-object-browser__entities{padding-left:8px}.tgm-object-browser__entity{display:flex;align-items:center;gap:6px;padding:4px 8px 4px 16px;cursor:pointer;font-size:13px;color:var(--tgm-db-text, #e5e7eb);border-radius:var(--tgm-db-radius-sm, 4px);transition:background .1s}.tgm-object-browser__entity:hover{background:var(--tgm-db-bg-hover, rgba(255, 255, 255, .08))}.tgm-object-browser__entity--selected{background:var(--tgm-db-bg-active, rgba(59, 130, 246, .15));color:var(--tgm-db-primary, #3b82f6)}.tgm-object-browser__entity-icon{font-size:12px;opacity:.6}.tgm-object-browser__entity-name{flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tgm-object-browser__empty{display:flex;align-items:center;justify-content:center;padding:24px;color:var(--tgm-db-text-muted, #6b7280);font-size:13px}.tgm-object-browser__empty p{margin:0}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] });
|
|
77
|
+
}
|
|
78
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ObjectBrowserComponent, decorators: [{
|
|
79
|
+
type: Component,
|
|
80
|
+
args: [{ selector: 'tgm-object-browser', standalone: true, imports: [CommonModule, FormsModule], template: "<div class=\"tgm-object-browser\">\n <!-- Search -->\n <div class=\"tgm-object-browser__search\">\n <input\n type=\"text\"\n class=\"tgm-object-browser__input\"\n [placeholder]=\"searchPlaceholder\"\n [(ngModel)]=\"searchTerm\"\n (ngModelChange)=\"onSearch()\"\n />\n </div>\n\n <!-- Tree -->\n <div class=\"tgm-object-browser__tree\">\n <ng-container *ngFor=\"let group of filteredGroups; trackBy: trackByCode\">\n <!-- Custom group template -->\n <ng-container *ngIf=\"groupTemplate; else defaultGroup\">\n <ng-container *ngTemplateOutlet=\"groupTemplate; context: { $implicit: group }\"></ng-container>\n </ng-container>\n\n <ng-template #defaultGroup>\n <div class=\"tgm-object-browser__group\">\n <div\n class=\"tgm-object-browser__group-header\"\n (click)=\"toggleGroup(group)\"\n >\n <span class=\"tgm-object-browser__arrow\" [class.tgm-object-browser__arrow--expanded]=\"group.expanded\">\n ▶\n </span>\n <span class=\"tgm-object-browser__group-label\">{{ group.label }}</span>\n <span class=\"tgm-object-browser__group-count\">{{ group.entities.length }}</span>\n </div>\n\n <div class=\"tgm-object-browser__entities\" *ngIf=\"group.expanded\">\n <ng-container *ngFor=\"let entity of group.entities; trackBy: trackByKey\">\n <!-- Custom entity template -->\n <ng-container *ngIf=\"entityTemplate; else defaultEntity\">\n <ng-container *ngTemplateOutlet=\"entityTemplate; context: { $implicit: entity }\"></ng-container>\n </ng-container>\n\n <ng-template #defaultEntity>\n <div\n class=\"tgm-object-browser__entity\"\n [class.tgm-object-browser__entity--selected]=\"isSelected(entity)\"\n (click)=\"onSelectEntity(entity)\"\n (dblclick)=\"onDoubleClick(entity)\"\n [title]=\"entity.description || entity.name\"\n >\n <span class=\"tgm-object-browser__entity-icon\">▣</span>\n <span class=\"tgm-object-browser__entity-name\">{{ entity.name }}</span>\n </div>\n </ng-template>\n </ng-container>\n </div>\n </div>\n </ng-template>\n </ng-container>\n\n <!-- Empty state -->\n <div class=\"tgm-object-browser__empty\" *ngIf=\"filteredGroups.length === 0\">\n <p>No entities found.</p>\n </div>\n </div>\n</div>\n", styles: [":host{display:block;height:100%;overflow:hidden}.tgm-object-browser{display:flex;flex-direction:column;height:100%}.tgm-object-browser__search{padding:var(--tgm-db-spacing-sm, 8px);border-bottom:1px solid var(--tgm-db-border, rgba(255, 255, 255, .1))}.tgm-object-browser__input{width:100%;padding:6px 10px;background:var(--tgm-db-bg-secondary, rgba(255, 255, 255, .05));border:1px solid var(--tgm-db-border, rgba(255, 255, 255, .1));border-radius:var(--tgm-db-radius-sm, 4px);color:var(--tgm-db-text, #e5e7eb);font-size:13px;font-family:var(--tgm-db-font-family, inherit);outline:none;box-sizing:border-box}.tgm-object-browser__input::placeholder{color:var(--tgm-db-text-muted, #6b7280)}.tgm-object-browser__input:focus{border-color:var(--tgm-db-primary, #3b82f6)}.tgm-object-browser__tree{flex:1;overflow-y:auto;padding:var(--tgm-db-spacing-sm, 8px) 0}.tgm-object-browser__group{margin-bottom:2px}.tgm-object-browser__group-header{display:flex;align-items:center;gap:6px;padding:4px var(--tgm-db-spacing-sm, 8px);cursor:pointer;-webkit-user-select:none;user-select:none;font-size:12px;font-weight:600;color:var(--tgm-db-text-secondary, #9ca3af);text-transform:uppercase;letter-spacing:.5px}.tgm-object-browser__group-header:hover{color:var(--tgm-db-text, #e5e7eb)}.tgm-object-browser__arrow{font-size:8px;transition:transform .15s;display:inline-block}.tgm-object-browser__arrow--expanded{transform:rotate(90deg)}.tgm-object-browser__group-label{flex:1}.tgm-object-browser__group-count{font-size:11px;color:var(--tgm-db-text-muted, #6b7280);font-weight:400}.tgm-object-browser__entities{padding-left:8px}.tgm-object-browser__entity{display:flex;align-items:center;gap:6px;padding:4px 8px 4px 16px;cursor:pointer;font-size:13px;color:var(--tgm-db-text, #e5e7eb);border-radius:var(--tgm-db-radius-sm, 4px);transition:background .1s}.tgm-object-browser__entity:hover{background:var(--tgm-db-bg-hover, rgba(255, 255, 255, .08))}.tgm-object-browser__entity--selected{background:var(--tgm-db-bg-active, rgba(59, 130, 246, .15));color:var(--tgm-db-primary, #3b82f6)}.tgm-object-browser__entity-icon{font-size:12px;opacity:.6}.tgm-object-browser__entity-name{flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tgm-object-browser__empty{display:flex;align-items:center;justify-content:center;padding:24px;color:var(--tgm-db-text-muted, #6b7280);font-size:13px}.tgm-object-browser__empty p{margin:0}\n"] }]
|
|
81
|
+
}], ctorParameters: () => [{ type: i1.EntitySchemaService }], propDecorators: { config: [{
|
|
82
|
+
type: Input
|
|
83
|
+
}], selectedEntity: [{
|
|
84
|
+
type: Input
|
|
85
|
+
}], searchPlaceholder: [{
|
|
86
|
+
type: Input
|
|
87
|
+
}], groupLabels: [{
|
|
88
|
+
type: Input
|
|
89
|
+
}], entityTemplate: [{
|
|
90
|
+
type: Input
|
|
91
|
+
}], groupTemplate: [{
|
|
92
|
+
type: Input
|
|
93
|
+
}], selectEntity: [{
|
|
94
|
+
type: Output
|
|
95
|
+
}], doubleClickEntity: [{
|
|
96
|
+
type: Output
|
|
97
|
+
}] } });
|
|
98
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JqZWN0LWJyb3dzZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL2RhdGFiYXNlLW1hbmFnZXIvb2JqZWN0LWJyb3dzZXIvb2JqZWN0LWJyb3dzZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL2RhdGFiYXNlLW1hbmFnZXIvb2JqZWN0LWJyb3dzZXIvb2JqZWN0LWJyb3dzZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUVMLE1BQU0sR0FHUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7OztBQVc3QyxNQUFNLE9BQU8sc0JBQXNCO0lBcUJiO0lBcEJwQixhQUFhO0lBQ0osTUFBTSxDQUF5QjtJQUMvQixjQUFjLENBQXVCO0lBRTlDLGVBQWU7SUFDTixpQkFBaUIsR0FBRyxvQkFBb0IsQ0FBQztJQUN6QyxXQUFXLENBQTBCO0lBRTlDLHlCQUF5QjtJQUNoQixjQUFjLENBQW1EO0lBQ2pFLGFBQWEsQ0FBaUQ7SUFFdkUsZUFBZTtJQUNMLFlBQVksR0FBRyxJQUFJLFlBQVksRUFBdUIsQ0FBQztJQUN2RCxpQkFBaUIsR0FBRyxJQUFJLFlBQVksRUFBdUIsQ0FBQztJQUV0RSxVQUFVLEdBQUcsRUFBRSxDQUFDO0lBQ2hCLE1BQU0sR0FBd0IsRUFBRSxDQUFDO0lBQ2pDLGNBQWMsR0FBd0IsRUFBRSxDQUFDO0lBRXpDLFlBQW9CLFlBQWlDO1FBQWpDLGlCQUFZLEdBQVosWUFBWSxDQUFxQjtJQUFHLENBQUM7SUFFekQsV0FBVyxDQUFDLE9BQXNCO1FBQ2hDLElBQUksT0FBTyxD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QTFCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT3V0cHV0LFxuICBTaW1wbGVDaGFuZ2VzLFxuICBUZW1wbGF0ZVJlZixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBFbnRpdHlSZWdpc3RyeUVudHJ5LCBFbnRpdHlNb2R1bGVHcm91cCwgRGF0YWJhc2VNYW5hZ2VyQ29uZmlnIH0gZnJvbSAnLi4vdHlwZXMvZGF0YWJhc2UtbWFuYWdlci50eXBlcyc7XG5pbXBvcnQgeyBFbnRpdHlTY2hlbWFTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvZW50aXR5LXNjaGVtYS5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndGdtLW9iamVjdC1icm93c2VyJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgRm9ybXNNb2R1bGVdLFxuICB0ZW1wbGF0ZVVybDogJy4vb2JqZWN0LWJyb3dzZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9vYmplY3QtYnJvd3Nlci5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBPYmplY3RCcm93c2VyQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzIHtcbiAgLy8g4pSA4pSAIERhdGEg4pSA4pSAXG4gIEBJbnB1dCgpIGNvbmZpZz86IERhdGFiYXNlTWFuYWdlckNvbmZpZztcbiAgQElucHV0KCkgc2VsZWN0ZWRFbnRpdHk/OiBFbnRpdHlSZWdpc3RyeUVudHJ5O1xuXG4gIC8vIOKUgOKUgCBMYWJlbHMg4pSA4pSAXG4gIEBJbnB1dCgpIHNlYXJjaFBsYWNlaG9sZGVyID0gJ1NlYXJjaCBlbnRpdGllcy4uLic7XG4gIEBJbnB1dCgpIGdyb3VwTGFiZWxzPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcblxuICAvLyDilIDilIAgQ3VzdG9tIHRlbXBsYXRlcyDilIDilIBcbiAgQElucHV0KCkgZW50aXR5VGVtcGxhdGU/OiBUZW1wbGF0ZVJlZjx7ICRpbXBsaWNpdDogRW50aXR5UmVnaXN0cnlFbnRyeSB9PjtcbiAgQElucHV0KCkgZ3JvdXBUZW1wbGF0ZT86IFRlbXBsYXRlUmVmPHsgJGltcGxpY2l0OiBFbnRpdHlNb2R1bGVHcm91cCB9PjtcblxuICAvLyDilIDilIAgRXZlbnRzIOKUgOKUgFxuICBAT3V0cHV0KCkgc2VsZWN0RW50aXR5ID0gbmV3IEV2ZW50RW1pdHRlcjxFbnRpdHlSZWdpc3RyeUVudHJ5PigpO1xuICBAT3V0cHV0KCkgZG91YmxlQ2xpY2tFbnRpdHkgPSBuZXcgRXZlbnRFbWl0dGVyPEVudGl0eVJlZ2lzdHJ5RW50cnk+KCk7XG5cbiAgc2VhcmNoVGVybSA9ICcnO1xuICBncm91cHM6IEVudGl0eU1vZHVsZUdyb3VwW10gPSBbXTtcbiAgZmlsdGVyZWRHcm91cHM6IEVudGl0eU1vZHVsZUdyb3VwW10gPSBbXTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGVudGl0eVNjaGVtYTogRW50aXR5U2NoZW1hU2VydmljZSkge31cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKGNoYW5nZXNbJ2NvbmZpZyddIHx8IGNoYW5nZXNbJ2dyb3VwTGFiZWxzJ10pIHtcbiAgICAgIHRoaXMubG9hZEdyb3VwcygpO1xuICAgIH1cbiAgfVxuXG4gIG9uU2VhcmNoKCk6IHZvaWQge1xuICAgIHRoaXMuZmlsdGVyR3JvdXBzKCk7XG4gIH1cblxuICB0b2dnbGVHcm91cChncm91cDogRW50aXR5TW9kdWxlR3JvdXApOiB2b2lkIHtcbiAgICBncm91cC5leHBhbmRlZCA9ICFncm91cC5leHBhbmRlZDtcbiAgfVxuXG4gIG9uU2VsZWN0RW50aXR5KGVudGl0eTogRW50aXR5UmVnaXN0cnlFbnRyeSk6IHZvaWQge1xuICAgIHRoaXMuc2VsZWN0RW50aXR5LmVtaXQoZW50aXR5KTtcbiAgfVxuXG4gIG9uRG91YmxlQ2xpY2soZW50aXR5OiBFbnRpdHlSZWdpc3RyeUVudHJ5KTogdm9pZCB7XG4gICAgdGhpcy5kb3VibGVDbGlja0VudGl0eS5lbWl0KGVudGl0eSk7XG4gIH1cblxuICBpc1NlbGVjdGVkKGVudGl0eTogRW50aXR5UmVnaXN0cnlFbnRyeSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnNlbGVjdGVkRW50aXR5Py5rZXkgPT09IGVudGl0eS5rZXk7XG4gIH1cblxuICB0cmFja0J5Q29kZShfaW5kZXg6IG51bWJlciwgZ3JvdXA6IEVudGl0eU1vZHVsZUdyb3VwKTogc3RyaW5nIHtcbiAgICByZXR1cm4gZ3JvdXAuY29kZTtcbiAgfVxuXG4gIHRyYWNrQnlLZXkoX2luZGV4OiBudW1iZXIsIGVudGl0eTogRW50aXR5UmVnaXN0cnlFbnRyeSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGVudGl0eS5rZXk7XG4gIH1cblxuICBwcml2YXRlIGxvYWRHcm91cHMoKTogdm9pZCB7XG4gICAgdGhpcy5ncm91cHMgPSB0aGlzLmVudGl0eVNjaGVtYS5nZXRFbnRpdHlHcm91cHModGhpcy5jb25maWcsIHRoaXMuZ3JvdXBMYWJlbHMpLm1hcChnID0+ICh7XG4gICAgICAuLi5nLFxuICAgICAgZXhwYW5kZWQ6IHRydWUsXG4gICAgfSkpO1xuICAgIHRoaXMuZmlsdGVyR3JvdXBzKCk7XG4gIH1cblxuICBwcml2YXRlIGZpbHRlckdyb3VwcygpOiB2b2lkIHtcbiAgICBjb25zdCB0ZXJtID0gdGhpcy5zZWFyY2hUZXJtLnRvTG93ZXJDYXNlKCkudHJpbSgpO1xuICAgIGlmICghdGVybSkge1xuICAgICAgdGhpcy5maWx0ZXJlZEdyb3VwcyA9IHRoaXMuZ3JvdXBzO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuZmlsdGVyZWRHcm91cHMgPSB0aGlzLmdyb3Vwc1xuICAgICAgLm1hcChncm91cCA9PiAoe1xuICAgICAgICAuLi5ncm91cCxcbiAgICAgICAgZXhwYW5kZWQ6IHRydWUsXG4gICAgICAgIGVudGl0aWVzOiBncm91cC5lbnRpdGllcy5maWx0ZXIoXG4gICAgICAgICAgZSA9PiBlLm5hbWUudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyh0ZXJtKSB8fCBlLmtleS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHRlcm0pLFxuICAgICAgICApLFxuICAgICAgfSkpXG4gICAgICAuZmlsdGVyKGcgPT4gZy5lbnRpdGllcy5sZW5ndGggPiAwKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cInRnbS1vYmplY3QtYnJvd3NlclwiPlxuICA8IS0tIFNlYXJjaCAtLT5cbiAgPGRpdiBjbGFzcz1cInRnbS1vYmplY3QtYnJvd3Nlcl9fc2VhcmNoXCI+XG4gICAgPGlucHV0XG4gICAgICB0eXBlPVwidGV4dFwiXG4gICAgICBjbGFzcz1cInRnbS1vYmplY3QtYnJvd3Nlcl9faW5wdXRcIlxuICAgICAgW3BsYWNlaG9sZGVyXT1cInNlYXJjaFBsYWNlaG9sZGVyXCJcbiAgICAgIFsobmdNb2RlbCldPVwic2VhcmNoVGVybVwiXG4gICAgICAobmdNb2RlbENoYW5nZSk9XCJvblNlYXJjaCgpXCJcbiAgICAvPlxuICA8L2Rpdj5cblxuICA8IS0tIFRyZWUgLS0+XG4gIDxkaXYgY2xhc3M9XCJ0Z20tb2JqZWN0LWJyb3dzZXJfX3RyZWVcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBncm91cCBvZiBmaWx0ZXJlZEdyb3VwczsgdHJhY2tCeTogdHJhY2tCeUNvZGVcIj5cbiAgICAgIDwhLS0gQ3VzdG9tIGdyb3VwIHRlbXBsYXRlIC0tPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImdyb3VwVGVtcGxhdGU7IGVsc2UgZGVmYXVsdEdyb3VwXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJncm91cFRlbXBsYXRlOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogZ3JvdXAgfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdEdyb3VwPlxuICAgICAgICA8ZGl2IGNsYXNzPVwidGdtLW9iamVjdC1icm93c2VyX19ncm91cFwiPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwidGdtLW9iamVjdC1icm93c2VyX19ncm91cC1oZWFkZXJcIlxuICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZUdyb3VwKGdyb3VwKVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0Z20tb2JqZWN0LWJyb3dzZXJfX2Fycm93XCIgW2NsYXNzLnRnbS1vYmplY3QtYnJvd3Nlcl9fYXJyb3ctLWV4cGFuZGVkXT1cImdyb3VwLmV4cGFuZGVkXCI+XG4gICAgICAgICAgICAgICYjOTY1NDtcbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGdtLW9iamVjdC1icm93c2VyX19ncm91cC1sYWJlbFwiPnt7IGdyb3VwLmxhYmVsIH19PC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0Z20tb2JqZWN0LWJyb3dzZXJfX2dyb3VwLWNvdW50XCI+e3sgZ3JvdXAuZW50aXRpZXMubGVuZ3RoIH19PC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInRnbS1vYmplY3QtYnJvd3Nlcl9fZW50aXRpZXNcIiAqbmdJZj1cImdyb3VwLmV4cGFuZGVkXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBlbnRpdHkgb2YgZ3JvdXAuZW50aXRpZXM7IHRyYWNrQnk6IHRyYWNrQnlLZXlcIj5cbiAgICAgICAgICAgICAgPCEtLSBDdXN0b20gZW50aXR5IHRlbXBsYXRlIC0tPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZW50aXR5VGVtcGxhdGU7IGVsc2UgZGVmYXVsdEVudGl0eVwiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJlbnRpdHlUZW1wbGF0ZTsgY29udGV4dDogeyAkaW1wbGljaXQ6IGVudGl0eSB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdEVudGl0eT5cbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICBjbGFzcz1cInRnbS1vYmplY3QtYnJvd3Nlcl9fZW50aXR5XCJcbiAgICAgICAgICAgICAgICAgIFtjbGFzcy50Z20tb2JqZWN0LWJyb3dzZXJfX2VudGl0eS0tc2VsZWN0ZWRdPVwiaXNTZWxlY3RlZChlbnRpdHkpXCJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvblNlbGVjdEVudGl0eShlbnRpdHkpXCJcbiAgICAgICAgICAgICAgICAgIChkYmxjbGljayk9XCJvbkRvdWJsZUNsaWNrKGVudGl0eSlcIlxuICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cImVudGl0eS5kZXNjcmlwdGlvbiB8fCBlbnRpdHkubmFtZVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0Z20tb2JqZWN0LWJyb3dzZXJfX2VudGl0eS1pY29uXCI+JiM5NjM1Ozwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGdtLW9iamVjdC1icm93c2VyX19lbnRpdHktbmFtZVwiPnt7IGVudGl0eS5uYW1lIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgIDwhLS0gRW1wdHkgc3RhdGUgLS0+XG4gICAgPGRpdiBjbGFzcz1cInRnbS1vYmplY3QtYnJvd3Nlcl9fZW1wdHlcIiAqbmdJZj1cImZpbHRlcmVkR3JvdXBzLmxlbmd0aCA9PT0gMFwiPlxuICAgICAgPHA+Tm8gZW50aXRpZXMgZm91bmQuPC9wPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
|
|
@@ -0,0 +1,196 @@
|
|
|
1
|
+
import { Component, EventEmitter, Input, Output, ViewChild, } from '@angular/core';
|
|
2
|
+
import { CommonModule } from '@angular/common';
|
|
3
|
+
import { FormsModule } from '@angular/forms';
|
|
4
|
+
import { ENTITY_REGISTRY } from '../registry/entity-registry';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "@angular/common";
|
|
7
|
+
export class QueryEditorComponent {
|
|
8
|
+
// ── Data ──
|
|
9
|
+
value = '';
|
|
10
|
+
entitySchema;
|
|
11
|
+
enableMonaco = true;
|
|
12
|
+
monacoOptions;
|
|
13
|
+
// ── Labels ──
|
|
14
|
+
placeholder = '{ "entity": "inspections", "filters": { "status": "PENDING" }, "sort": "createdAt", "order": "DESC" }';
|
|
15
|
+
editorClass = '';
|
|
16
|
+
// ── Events ──
|
|
17
|
+
valueChange = new EventEmitter();
|
|
18
|
+
execute = new EventEmitter();
|
|
19
|
+
monacoContainer;
|
|
20
|
+
textareaEl;
|
|
21
|
+
monacoAvailable = false;
|
|
22
|
+
monacoEditor = null;
|
|
23
|
+
completionDisposable = null;
|
|
24
|
+
ngOnInit() {
|
|
25
|
+
this.monacoAvailable = this.enableMonaco && typeof monaco !== 'undefined';
|
|
26
|
+
}
|
|
27
|
+
ngOnChanges(changes) {
|
|
28
|
+
if (changes['value'] && this.monacoEditor) {
|
|
29
|
+
const currentVal = this.monacoEditor.getValue();
|
|
30
|
+
if (currentVal !== this.value) {
|
|
31
|
+
this.monacoEditor.setValue(this.value);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
ngOnDestroy() {
|
|
36
|
+
this.completionDisposable?.dispose();
|
|
37
|
+
this.monacoEditor?.dispose();
|
|
38
|
+
}
|
|
39
|
+
onMonacoInit() {
|
|
40
|
+
if (!this.monacoAvailable || !this.monacoContainer)
|
|
41
|
+
return;
|
|
42
|
+
const defaultOptions = {
|
|
43
|
+
value: this.value,
|
|
44
|
+
language: 'json',
|
|
45
|
+
theme: 'vs-dark',
|
|
46
|
+
minimap: { enabled: false },
|
|
47
|
+
lineNumbers: 'on',
|
|
48
|
+
scrollBeyondLastLine: false,
|
|
49
|
+
automaticLayout: true,
|
|
50
|
+
fontSize: 14,
|
|
51
|
+
fontFamily: 'var(--tgm-db-font-mono)',
|
|
52
|
+
tabSize: 2,
|
|
53
|
+
wordWrap: 'on',
|
|
54
|
+
padding: { top: 8 },
|
|
55
|
+
};
|
|
56
|
+
const opts = { ...defaultOptions, ...this.monacoOptions };
|
|
57
|
+
try {
|
|
58
|
+
this.monacoEditor = monaco.editor.create(this.monacoContainer.nativeElement, opts);
|
|
59
|
+
// Listen for changes
|
|
60
|
+
this.monacoEditor.onDidChangeModelContent(() => {
|
|
61
|
+
const val = this.monacoEditor.getValue();
|
|
62
|
+
this.value = val;
|
|
63
|
+
this.valueChange.emit(val);
|
|
64
|
+
});
|
|
65
|
+
// Ctrl+Enter → execute
|
|
66
|
+
this.monacoEditor.addCommand(monaco.KeyMod.CtrlCmd | monaco.KeyCode.Enter, () => this.execute.emit(this.monacoEditor.getValue()));
|
|
67
|
+
// Register auto-completion
|
|
68
|
+
this.registerCompletionProvider();
|
|
69
|
+
}
|
|
70
|
+
catch {
|
|
71
|
+
this.monacoAvailable = false;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
onTextareaInput(event) {
|
|
75
|
+
const val = event.target.value;
|
|
76
|
+
this.value = val;
|
|
77
|
+
this.valueChange.emit(val);
|
|
78
|
+
}
|
|
79
|
+
onTextareaKeydown(event) {
|
|
80
|
+
if ((event.ctrlKey || event.metaKey) && event.key === 'Enter') {
|
|
81
|
+
event.preventDefault();
|
|
82
|
+
this.execute.emit(this.value);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Called after view init if Monaco is available.
|
|
87
|
+
*/
|
|
88
|
+
ngAfterViewInit() {
|
|
89
|
+
if (this.monacoAvailable) {
|
|
90
|
+
// Small delay to ensure the container is rendered
|
|
91
|
+
setTimeout(() => this.onMonacoInit(), 50);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
registerCompletionProvider() {
|
|
95
|
+
if (!monaco?.languages)
|
|
96
|
+
return;
|
|
97
|
+
this.completionDisposable = monaco.languages.registerCompletionItemProvider('json', {
|
|
98
|
+
provideCompletionItems: (model, position) => {
|
|
99
|
+
const textUntilPosition = model.getValueInRange({
|
|
100
|
+
startLineNumber: 1,
|
|
101
|
+
startColumn: 1,
|
|
102
|
+
endLineNumber: position.lineNumber,
|
|
103
|
+
endColumn: position.column,
|
|
104
|
+
});
|
|
105
|
+
const suggestions = [];
|
|
106
|
+
const word = model.getWordUntilPosition(position);
|
|
107
|
+
const range = {
|
|
108
|
+
startLineNumber: position.lineNumber,
|
|
109
|
+
endLineNumber: position.lineNumber,
|
|
110
|
+
startColumn: word.startColumn,
|
|
111
|
+
endColumn: word.endColumn,
|
|
112
|
+
};
|
|
113
|
+
// Suggest entity names after "entity":
|
|
114
|
+
if (/"entity"\s*:\s*"[^"]*$/.test(textUntilPosition)) {
|
|
115
|
+
for (const entry of ENTITY_REGISTRY) {
|
|
116
|
+
suggestions.push({
|
|
117
|
+
label: entry.key,
|
|
118
|
+
kind: monaco.languages.CompletionItemKind.Value,
|
|
119
|
+
insertText: entry.key,
|
|
120
|
+
detail: entry.name,
|
|
121
|
+
documentation: entry.description,
|
|
122
|
+
range,
|
|
123
|
+
});
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
// Suggest top-level keys
|
|
127
|
+
else if (/{\s*("[^"]*"\s*:\s*[^,]*,\s*)*"?[^"]*$/.test(textUntilPosition) && !/"filters"\s*:\s*\{/.test(textUntilPosition.slice(-100))) {
|
|
128
|
+
const keys = ['entity', 'select', 'filters', 'sort', 'order', 'page', 'pageSize'];
|
|
129
|
+
for (const key of keys) {
|
|
130
|
+
suggestions.push({
|
|
131
|
+
label: key,
|
|
132
|
+
kind: monaco.languages.CompletionItemKind.Property,
|
|
133
|
+
insertText: `"${key}"`,
|
|
134
|
+
range,
|
|
135
|
+
});
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
// Suggest sort order values
|
|
139
|
+
else if (/"order"\s*:\s*"[^"]*$/.test(textUntilPosition)) {
|
|
140
|
+
for (const val of ['ASC', 'DESC']) {
|
|
141
|
+
suggestions.push({
|
|
142
|
+
label: val,
|
|
143
|
+
kind: monaco.languages.CompletionItemKind.Value,
|
|
144
|
+
insertText: val,
|
|
145
|
+
range,
|
|
146
|
+
});
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
// Suggest field names for filters/sort
|
|
150
|
+
else if (this.entitySchema) {
|
|
151
|
+
const fields = this.entitySchema.fields;
|
|
152
|
+
for (const field of fields) {
|
|
153
|
+
suggestions.push({
|
|
154
|
+
label: field.name,
|
|
155
|
+
kind: monaco.languages.CompletionItemKind.Field,
|
|
156
|
+
insertText: field.type === 'enum' || field.type === 'string' ? `"${field.name}"` : `"${field.name}"`,
|
|
157
|
+
detail: `${field.type}${field.enumValues ? ` (${field.enumValues.length} values)` : ''}`,
|
|
158
|
+
documentation: field.description || field.label,
|
|
159
|
+
range,
|
|
160
|
+
});
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
return { suggestions };
|
|
164
|
+
},
|
|
165
|
+
});
|
|
166
|
+
}
|
|
167
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: QueryEditorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
168
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: QueryEditorComponent, isStandalone: true, selector: "tgm-query-editor", inputs: { value: "value", entitySchema: "entitySchema", enableMonaco: "enableMonaco", monacoOptions: "monacoOptions", placeholder: "placeholder", editorClass: "editorClass" }, outputs: { valueChange: "valueChange", execute: "execute" }, viewQueries: [{ propertyName: "monacoContainer", first: true, predicate: ["monacoContainer"], descendants: true }, { propertyName: "textareaEl", first: true, predicate: ["textareaEl"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"tgm-query-editor\" [ngClass]=\"editorClass\">\n <!-- Monaco Editor -->\n <div\n *ngIf=\"monacoAvailable\"\n #monacoContainer\n class=\"tgm-query-editor__monaco\"\n ></div>\n\n <!-- Textarea Fallback -->\n <textarea\n *ngIf=\"!monacoAvailable\"\n #textareaEl\n class=\"tgm-query-editor__textarea\"\n [value]=\"value\"\n [placeholder]=\"placeholder\"\n (input)=\"onTextareaInput($event)\"\n (keydown)=\"onTextareaKeydown($event)\"\n spellcheck=\"false\"\n autocomplete=\"off\"\n ></textarea>\n\n <div class=\"tgm-query-editor__hint\">\n Press <kbd>Ctrl</kbd>+<kbd>Enter</kbd> to execute\n </div>\n</div>\n", styles: [":host{display:block}.tgm-query-editor{position:relative;display:flex;flex-direction:column;height:var(--tgm-db-editor-height, 200px);background:var(--tgm-db-bg, #1e1e2e);border-bottom:1px solid var(--tgm-db-border, rgba(255, 255, 255, .1))}.tgm-query-editor__monaco{flex:1;min-height:0}.tgm-query-editor__textarea{flex:1;width:100%;padding:12px;background:var(--tgm-db-bg, #1e1e2e);border:none;color:var(--tgm-db-text, #e5e7eb);font-family:var(--tgm-db-font-mono, monospace);font-size:var(--tgm-db-font-size, 14px);line-height:1.6;resize:none;outline:none;box-sizing:border-box;overflow-y:auto}.tgm-query-editor__textarea::placeholder{color:var(--tgm-db-text-muted, #6b7280)}.tgm-query-editor__hint{position:absolute;bottom:4px;right:8px;font-size:11px;color:var(--tgm-db-text-muted, #6b7280);pointer-events:none}.tgm-query-editor__hint kbd{display:inline-block;padding:1px 4px;font-size:10px;font-family:var(--tgm-db-font-mono, monospace);background:#ffffff14;border:1px solid rgba(255,255,255,.15);border-radius:3px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: FormsModule }] });
|
|
169
|
+
}
|
|
170
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: QueryEditorComponent, decorators: [{
|
|
171
|
+
type: Component,
|
|
172
|
+
args: [{ selector: 'tgm-query-editor', standalone: true, imports: [CommonModule, FormsModule], template: "<div class=\"tgm-query-editor\" [ngClass]=\"editorClass\">\n <!-- Monaco Editor -->\n <div\n *ngIf=\"monacoAvailable\"\n #monacoContainer\n class=\"tgm-query-editor__monaco\"\n ></div>\n\n <!-- Textarea Fallback -->\n <textarea\n *ngIf=\"!monacoAvailable\"\n #textareaEl\n class=\"tgm-query-editor__textarea\"\n [value]=\"value\"\n [placeholder]=\"placeholder\"\n (input)=\"onTextareaInput($event)\"\n (keydown)=\"onTextareaKeydown($event)\"\n spellcheck=\"false\"\n autocomplete=\"off\"\n ></textarea>\n\n <div class=\"tgm-query-editor__hint\">\n Press <kbd>Ctrl</kbd>+<kbd>Enter</kbd> to execute\n </div>\n</div>\n", styles: [":host{display:block}.tgm-query-editor{position:relative;display:flex;flex-direction:column;height:var(--tgm-db-editor-height, 200px);background:var(--tgm-db-bg, #1e1e2e);border-bottom:1px solid var(--tgm-db-border, rgba(255, 255, 255, .1))}.tgm-query-editor__monaco{flex:1;min-height:0}.tgm-query-editor__textarea{flex:1;width:100%;padding:12px;background:var(--tgm-db-bg, #1e1e2e);border:none;color:var(--tgm-db-text, #e5e7eb);font-family:var(--tgm-db-font-mono, monospace);font-size:var(--tgm-db-font-size, 14px);line-height:1.6;resize:none;outline:none;box-sizing:border-box;overflow-y:auto}.tgm-query-editor__textarea::placeholder{color:var(--tgm-db-text-muted, #6b7280)}.tgm-query-editor__hint{position:absolute;bottom:4px;right:8px;font-size:11px;color:var(--tgm-db-text-muted, #6b7280);pointer-events:none}.tgm-query-editor__hint kbd{display:inline-block;padding:1px 4px;font-size:10px;font-family:var(--tgm-db-font-mono, monospace);background:#ffffff14;border:1px solid rgba(255,255,255,.15);border-radius:3px}\n"] }]
|
|
173
|
+
}], propDecorators: { value: [{
|
|
174
|
+
type: Input
|
|
175
|
+
}], entitySchema: [{
|
|
176
|
+
type: Input
|
|
177
|
+
}], enableMonaco: [{
|
|
178
|
+
type: Input
|
|
179
|
+
}], monacoOptions: [{
|
|
180
|
+
type: Input
|
|
181
|
+
}], placeholder: [{
|
|
182
|
+
type: Input
|
|
183
|
+
}], editorClass: [{
|
|
184
|
+
type: Input
|
|
185
|
+
}], valueChange: [{
|
|
186
|
+
type: Output
|
|
187
|
+
}], execute: [{
|
|
188
|
+
type: Output
|
|
189
|
+
}], monacoContainer: [{
|
|
190
|
+
type: ViewChild,
|
|
191
|
+
args: ['monacoContainer', { static: false }]
|
|
192
|
+
}], textareaEl: [{
|
|
193
|
+
type: ViewChild,
|
|
194
|
+
args: ['textareaEl', { static: false }]
|
|
195
|
+
}] } });
|
|
196
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnktZWRpdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9kYXRhYmFzZS1tYW5hZ2VyL3F1ZXJ5LWVkaXRvci9xdWVyeS1lZGl0b3IuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL2RhdGFiYXNlLW1hbmFnZXIvcXVlcnktZWRpdG9yL3F1ZXJ5LWVkaXRvci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsU0FBUyxFQUVULFlBQVksRUFDWixLQUFLLEVBSUwsTUFBTSxFQUVOLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTdDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQzs7O0FBVzlELE1BQU0sT0FBTyxvQkFBb0I7SUFDL0IsYUFBYTtJQUNKLEtBQUssR0FBRyxFQUFFLENBQUM7SUFDWCxZQUFZLENBQXVCO0lBQ25DLFlBQVksR0FBRyxJQUFJLENBQUM7SUFDcEIsYUFBYSxDQUFPO0lBRTdCLGVBQWU7SUFDTixXQUFXLEdBQUcsdUdBQXVHLENBQUM7SUFDdEgsV0FBVyxHQUFHLEVBQUUsQ0FBQztJQUUxQixlQUFlO0lBQ0wsV0FBVyxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7SUFDekMsT0FBTyxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7SUFFRSxlQUFlLENBQWM7SUFDbEMsVUFBVSxDQUFjO0lBRXBFLGVBQWUsR0FBRyxLQUFLLENBQUM7SUFDaEIsWUFBWSxHQUFRLElBQUksQ0FBQztJQUN6QixvQkFBb0IsR0FBUSxJQUFJLENBQUM7SUFFekMsUUFBUTtRQUNOLElBQUksQ0FB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O3lCQUNOLENBQUMsQ0FBQztvQkFDTCxDQUFDO2dCQUNILENBQUM7Z0JBRUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxDQUFDO1lBQ3pCLENBQUM7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDO3dHQXJMVSxvQkFBb0I7NEZBQXBCLG9CQUFvQiw2aEJDM0JqQyx5cEJBeUJBLHFqQ0RGWSxZQUFZLGdPQUFFLFdBQVc7OzRGQUl4QixvQkFBb0I7a0JBUGhDLFNBQVM7K0JBQ0Usa0JBQWtCLGNBQ2hCLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxXQUFXLENBQUM7OEJBTTNCLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFHRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBR0ksV0FBVztzQkFBcEIsTUFBTTtnQkFDRyxPQUFPO3NCQUFoQixNQUFNO2dCQUUwQyxlQUFlO3NCQUEvRCxTQUFTO3VCQUFDLGlCQUFpQixFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFDSCxVQUFVO3NCQUFyRCxTQUFTO3VCQUFDLFlBQVksRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEVudGl0eVJlZ2lzdHJ5RW50cnkgfSBmcm9tICcuLi90eXBlcy9kYXRhYmFzZS1tYW5hZ2VyLnR5cGVzJztcbmltcG9ydCB7IEVOVElUWV9SRUdJU1RSWSB9IGZyb20gJy4uL3JlZ2lzdHJ5L2VudGl0eS1yZWdpc3RyeSc7XG5cbmRlY2xhcmUgY29uc3QgbW9uYWNvOiBhbnk7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3RnbS1xdWVyeS1lZGl0b3InLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBGb3Jtc01vZHVsZV0sXG4gIHRlbXBsYXRlVXJsOiAnLi9xdWVyeS1lZGl0b3IuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9xdWVyeS1lZGl0b3IuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgUXVlcnlFZGl0b3JDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95LCBBZnRlclZpZXdJbml0IHtcbiAgLy8g4pSA4pSAIERhdGEg4pSA4pSAXG4gIEBJbnB1dCgpIHZhbHVlID0gJyc7XG4gIEBJbnB1dCgpIGVudGl0eVNjaGVtYT86IEVudGl0eVJlZ2lzdHJ5RW50cnk7XG4gIEBJbnB1dCgpIGVuYWJsZU1vbmFjbyA9IHRydWU7XG4gIEBJbnB1dCgpIG1vbmFjb09wdGlvbnM/OiBhbnk7XG5cbiAgLy8g4pSA4pSAIExhYmVscyDilIDilIBcbiAgQElucHV0KCkgcGxhY2Vob2xkZXIgPSAneyBcImVudGl0eVwiOiBcImluc3BlY3Rpb25zXCIsIFwiZmlsdGVyc1wiOiB7IFwic3RhdHVzXCI6IFwiUEVORElOR1wiIH0sIFwic29ydFwiOiBcImNyZWF0ZWRBdFwiLCBcIm9yZGVyXCI6IFwiREVTQ1wiIH0nO1xuICBASW5wdXQoKSBlZGl0b3JDbGFzcyA9ICcnO1xuXG4gIC8vIOKUgOKUgCBFdmVudHMg4pSA4pSAXG4gIEBPdXRwdXQoKSB2YWx1ZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuICBAT3V0cHV0KCkgZXhlY3V0ZSA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuXG4gIEBWaWV3Q2hpbGQoJ21vbmFjb0NvbnRhaW5lcicsIHsgc3RhdGljOiBmYWxzZSB9KSBtb25hY29Db250YWluZXI/OiBFbGVtZW50UmVmO1xuICBAVmlld0NoaWxkKCd0ZXh0YXJlYUVsJywgeyBzdGF0aWM6IGZhbHNlIH0pIHRleHRhcmVhRWw/OiBFbGVtZW50UmVmO1xuXG4gIG1vbmFjb0F2YWlsYWJsZSA9IGZhbHNlO1xuICBwcml2YXRlIG1vbmFjb0VkaXRvcjogYW55ID0gbnVsbDtcbiAgcHJpdmF0ZSBjb21wbGV0aW9uRGlzcG9zYWJsZTogYW55ID0gbnVsbDtcblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLm1vbmFjb0F2YWlsYWJsZSA9IHRoaXMuZW5hYmxlTW9uYWNvICYmIHR5cGVvZiBtb25hY28gIT09ICd1bmRlZmluZWQnO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzWyd2YWx1ZSddICYmIHRoaXMubW9uYWNvRWRpdG9yKSB7XG4gICAgICBjb25zdCBjdXJyZW50VmFsID0gdGhpcy5tb25hY29FZGl0b3IuZ2V0VmFsdWUoKTtcbiAgICAgIGlmIChjdXJyZW50VmFsICE9PSB0aGlzLnZhbHVlKSB7XG4gICAgICAgIHRoaXMubW9uYWNvRWRpdG9yLnNldFZhbHVlKHRoaXMudmFsdWUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuY29tcGxldGlvbkRpc3Bvc2FibGU/LmRpc3Bvc2UoKTtcbiAgICB0aGlzLm1vbmFjb0VkaXRvcj8uZGlzcG9zZSgpO1xuICB9XG5cbiAgb25Nb25hY29Jbml0KCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5tb25hY29BdmFpbGFibGUgfHwgIXRoaXMubW9uYWNvQ29udGFpbmVyKSByZXR1cm47XG5cbiAgICBjb25zdCBkZWZhdWx0T3B0aW9ucyA9IHtcbiAgICAgIHZhbHVlOiB0aGlzLnZhbHVlLFxuICAgICAgbGFuZ3VhZ2U6ICdqc29uJyxcbiAgICAgIHRoZW1lOiAndnMtZGFyaycsXG4gICAgICBtaW5pbWFwOiB7IGVuYWJsZWQ6IGZhbHNlIH0sXG4gICAgICBsaW5lTnVtYmVyczogJ29uJyBhcyBjb25zdCxcbiAgICAgIHNjcm9sbEJleW9uZExhc3RMaW5lOiBmYWxzZSxcbiAgICAgIGF1dG9tYXRpY0xheW91dDogdHJ1ZSxcbiAgICAgIGZvbnRTaXplOiAxNCxcbiAgICAgIGZvbnRGYW1pbHk6ICd2YXIoLS10Z20tZGItZm9udC1tb25vKScsXG4gICAgICB0YWJTaXplOiAyLFxuICAgICAgd29yZFdyYXA6ICdvbicgYXMgY29uc3QsXG4gICAgICBwYWRkaW5nOiB7IHRvcDogOCB9LFxuICAgIH07XG5cbiAgICBjb25zdCBvcHRzID0geyAuLi5kZWZhdWx0T3B0aW9ucywgLi4udGhpcy5tb25hY29PcHRpb25zIH07XG5cbiAgICB0cnkge1xuICAgICAgdGhpcy5tb25hY29FZGl0b3IgPSBtb25hY28uZWRpdG9yLmNyZWF0ZSh0aGlzLm1vbmFjb0NvbnRhaW5lci5uYXRpdmVFbGVtZW50LCBvcHRzKTtcblxuICAgICAgLy8gTGlzdGVuIGZvciBjaGFuZ2VzXG4gICAgICB0aGlzLm1vbmFjb0VkaXRvci5vbkRpZENoYW5nZU1vZGVsQ29udGVudCgoKSA9PiB7XG4gICAgICAgIGNvbnN0IHZhbCA9IHRoaXMubW9uYWNvRWRpdG9yLmdldFZhbHVlKCk7XG4gICAgICAgIHRoaXMudmFsdWUgPSB2YWw7XG4gICAgICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdCh2YWwpO1xuICAgICAgfSk7XG5cbiAgICAgIC8vIEN0cmwrRW50ZXIg4oaSIGV4ZWN1dGVcbiAgICAgIHRoaXMubW9uYWNvRWRpdG9yLmFkZENvbW1hbmQoXG4gICAgICAgIG1vbmFjby5LZXlNb2QuQ3RybENtZCB8IG1vbmFjby5LZXlDb2RlLkVudGVyLFxuICAgICAgICAoKSA9PiB0aGlzLmV4ZWN1dGUuZW1pdCh0aGlzLm1vbmFjb0VkaXRvci5nZXRWYWx1ZSgpKSxcbiAgICAgICk7XG5cbiAgICAgIC8vIFJlZ2lzdGVyIGF1dG8tY29tcGxldGlvblxuICAgICAgdGhpcy5yZWdpc3RlckNvbXBsZXRpb25Qcm92aWRlcigpO1xuICAgIH0gY2F0Y2gge1xuICAgICAgdGhpcy5tb25hY29BdmFpbGFibGUgPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBvblRleHRhcmVhSW5wdXQoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgY29uc3QgdmFsID0gKGV2ZW50LnRhcmdldCBhcyBIVE1MVGV4dEFyZWFFbGVtZW50KS52YWx1ZTtcbiAgICB0aGlzLnZhbHVlID0gdmFsO1xuICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdCh2YWwpO1xuICB9XG5cbiAgb25UZXh0YXJlYUtleWRvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoKGV2ZW50LmN0cmxLZXkgfHwgZXZlbnQubWV0YUtleSkgJiYgZXZlbnQua2V5ID09PSAnRW50ZXInKSB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgdGhpcy5leGVjdXRlLmVtaXQodGhpcy52YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENhbGxlZCBhZnRlciB2aWV3IGluaXQgaWYgTW9uYWNvIGlzIGF2YWlsYWJsZS5cbiAgICovXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5tb25hY29BdmFpbGFibGUpIHtcbiAgICAgIC8vIFNtYWxsIGRlbGF5IHRvIGVuc3VyZSB0aGUgY29udGFpbmVyIGlzIHJlbmRlcmVkXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMub25Nb25hY29Jbml0KCksIDUwKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHJlZ2lzdGVyQ29tcGxldGlvblByb3ZpZGVyKCk6IHZvaWQge1xuICAgIGlmICghbW9uYWNvPy5sYW5ndWFnZXMpIHJldHVybjtcblxuICAgIHRoaXMuY29tcGxldGlvbkRpc3Bvc2FibGUgPSBtb25hY28ubGFuZ3VhZ2VzLnJlZ2lzdGVyQ29tcGxldGlvbkl0ZW1Qcm92aWRlcignanNvbicsIHtcbiAgICAgIHByb3ZpZGVDb21wbGV0aW9uSXRlbXM6IChtb2RlbDogYW55LCBwb3NpdGlvbjogYW55KSA9PiB7XG4gICAgICAgIGNvbnN0IHRleHRVbnRpbFBvc2l0aW9uID0gbW9kZWwuZ2V0VmFsdWVJblJhbmdlKHtcbiAgICAgICAgICBzdGFydExpbmVOdW1iZXI6IDEsXG4gICAgICAgICAgc3RhcnRDb2x1bW46IDEsXG4gICAgICAgICAgZW5kTGluZU51bWJlcjogcG9zaXRpb24ubGluZU51bWJlcixcbiAgICAgICAgICBlbmRDb2x1bW46IHBvc2l0aW9uLmNvbHVtbixcbiAgICAgICAgfSk7XG5cbiAgICAgICAgY29uc3Qgc3VnZ2VzdGlvbnM6IGFueVtdID0gW107XG4gICAgICAgIGNvbnN0IHdvcmQgPSBtb2RlbC5nZXRXb3JkVW50aWxQb3NpdGlvbihwb3NpdGlvbik7XG4gICAgICAgIGNvbnN0IHJhbmdlID0ge1xuICAgICAgICAgIHN0YXJ0TGluZU51bWJlcjogcG9zaXRpb24ubGluZU51bWJlcixcbiAgICAgICAgICBlbmRMaW5lTnVtYmVyOiBwb3NpdGlvbi5saW5lTnVtYmVyLFxuICAgICAgICAgIHN0YXJ0Q29sdW1uOiB3b3JkLnN0YXJ0Q29sdW1uLFxuICAgICAgICAgIGVuZENvbHVtbjogd29yZC5lbmRDb2x1bW4sXG4gICAgICAgIH07XG5cbiAgICAgICAgLy8gU3VnZ2VzdCBlbnRpdHkgbmFtZXMgYWZ0ZXIgXCJlbnRpdHlcIjpcbiAgICAgICAgaWYgKC9cImVudGl0eVwiXFxzKjpcXHMqXCJbXlwiXSokLy50ZXN0KHRleHRVbnRpbFBvc2l0aW9uKSkge1xuICAgICAgICAgIGZvciAoY29uc3QgZW50cnkgb2YgRU5USVRZX1JFR0lTVFJZKSB7XG4gICAgICAgICAgICBzdWdnZXN0aW9ucy5wdXNoKHtcbiAgICAgICAgICAgICAgbGFiZWw6IGVudHJ5LmtleSxcbiAgICAgICAgICAgICAga2luZDogbW9uYWNvLmxhbmd1YWdlcy5Db21wbGV0aW9uSXRlbUtpbmQuVmFsdWUsXG4gICAgICAgICAgICAgIGluc2VydFRleHQ6IGVudHJ5LmtleSxcbiAgICAgICAgICAgICAgZGV0YWlsOiBlbnRyeS5uYW1lLFxuICAgICAgICAgICAgICBkb2N1bWVudGF0aW9uOiBlbnRyeS5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgcmFuZ2UsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8gU3VnZ2VzdCB0b3AtbGV2ZWwga2V5c1xuICAgICAgICBlbHNlIGlmICgve1xccyooXCJbXlwiXSpcIlxccyo6XFxzKlteLF0qLFxccyopKlwiP1teXCJdKiQvLnRlc3QodGV4dFVudGlsUG9zaXRpb24pICYmICEvXCJmaWx0ZXJzXCJcXHMqOlxccypcXHsvLnRlc3QodGV4dFVudGlsUG9zaXRpb24uc2xpY2UoLTEwMCkpKSB7XG4gICAgICAgICAgY29uc3Qga2V5cyA9IFsnZW50aXR5JywgJ3NlbGVjdCcsICdmaWx0ZXJzJywgJ3NvcnQnLCAnb3JkZXInLCAncGFnZScsICdwYWdlU2l6ZSddO1xuICAgICAgICAgIGZvciAoY29uc3Qga2V5IG9mIGtleXMpIHtcbiAgICAgICAgICAgIHN1Z2dlc3Rpb25zLnB1c2goe1xuICAgICAgICAgICAgICBsYWJlbDoga2V5LFxuICAgICAgICAgICAgICBraW5kOiBtb25hY28ubGFuZ3VhZ2VzLkNvbXBsZXRpb25JdGVtS2luZC5Qcm9wZXJ0eSxcbiAgICAgICAgICAgICAgaW5zZXJ0VGV4dDogYFwiJHtrZXl9XCJgLFxuICAgICAgICAgICAgICByYW5nZSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyBTdWdnZXN0IHNvcnQgb3JkZXIgdmFsdWVzXG4gICAgICAgIGVsc2UgaWYgKC9cIm9yZGVyXCJcXHMqOlxccypcIlteXCJdKiQvLnRlc3QodGV4dFVudGlsUG9zaXRpb24pKSB7XG4gICAgICAgICAgZm9yIChjb25zdCB2YWwgb2YgWydBU0MnLCAnREVTQyddKSB7XG4gICAgICAgICAgICBzdWdnZXN0aW9ucy5wdXNoKHtcbiAgICAgICAgICAgICAgbGFiZWw6IHZhbCxcbiAgICAgICAgICAgICAga2luZDogbW9uYWNvLmxhbmd1YWdlcy5Db21wbGV0aW9uSXRlbUtpbmQuVmFsdWUsXG4gICAgICAgICAgICAgIGluc2VydFRleHQ6IHZhbCxcbiAgICAgICAgICAgICAgcmFuZ2UsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8gU3VnZ2VzdCBmaWVsZCBuYW1lcyBmb3IgZmlsdGVycy9zb3J0XG4gICAgICAgIGVsc2UgaWYgKHRoaXMuZW50aXR5U2NoZW1hKSB7XG4gICAgICAgICAgY29uc3QgZmllbGRzID0gdGhpcy5lbnRpdHlTY2hlbWEuZmllbGRzO1xuICAgICAgICAgIGZvciAoY29uc3QgZmllbGQgb2YgZmllbGRzKSB7XG4gICAgICAgICAgICBzdWdnZXN0aW9ucy5wdXNoKHtcbiAgICAgICAgICAgICAgbGFiZWw6IGZpZWxkLm5hbWUsXG4gICAgICAgICAgICAgIGtpbmQ6IG1vbmFjby5sYW5ndWFnZXMuQ29tcGxldGlvbkl0ZW1LaW5kLkZpZWxkLFxuICAgICAgICAgICAgICBpbnNlcnRUZXh0OiBmaWVsZC50eXBlID09PSAnZW51bScgfHwgZmllbGQudHlwZSA9PT0gJ3N0cmluZycgPyBgXCIke2ZpZWxkLm5hbWV9XCJgIDogYFwiJHtmaWVsZC5uYW1lfVwiYCxcbiAgICAgICAgICAgICAgZGV0YWlsOiBgJHtmaWVsZC50eXBlfSR7ZmllbGQuZW51bVZhbHVlcyA/IGAgKCR7ZmllbGQuZW51bVZhbHVlcy5sZW5ndGh9IHZhbHVlcylgIDogJyd9YCxcbiAgICAgICAgICAgICAgZG9jdW1lbnRhdGlvbjogZmllbGQuZGVzY3JpcHRpb24gfHwgZmllbGQubGFiZWwsXG4gICAgICAgICAgICAgIHJhbmdlLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHsgc3VnZ2VzdGlvbnMgfTtcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJ0Z20tcXVlcnktZWRpdG9yXCIgW25nQ2xhc3NdPVwiZWRpdG9yQ2xhc3NcIj5cbiAgPCEtLSBNb25hY28gRWRpdG9yIC0tPlxuICA8ZGl2XG4gICAgKm5nSWY9XCJtb25hY29BdmFpbGFibGVcIlxuICAgICNtb25hY29Db250YWluZXJcbiAgICBjbGFzcz1cInRnbS1xdWVyeS1lZGl0b3JfX21vbmFjb1wiXG4gID48L2Rpdj5cblxuICA8IS0tIFRleHRhcmVhIEZhbGxiYWNrIC0tPlxuICA8dGV4dGFyZWFcbiAgICAqbmdJZj1cIiFtb25hY29BdmFpbGFibGVcIlxuICAgICN0ZXh0YXJlYUVsXG4gICAgY2xhc3M9XCJ0Z20tcXVlcnktZWRpdG9yX190ZXh0YXJlYVwiXG4gICAgW3ZhbHVlXT1cInZhbHVlXCJcbiAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIlxuICAgIChpbnB1dCk9XCJvblRleHRhcmVhSW5wdXQoJGV2ZW50KVwiXG4gICAgKGtleWRvd24pPVwib25UZXh0YXJlYUtleWRvd24oJGV2ZW50KVwiXG4gICAgc3BlbGxjaGVjaz1cImZhbHNlXCJcbiAgICBhdXRvY29tcGxldGU9XCJvZmZcIlxuICA+PC90ZXh0YXJlYT5cblxuICA8ZGl2IGNsYXNzPVwidGdtLXF1ZXJ5LWVkaXRvcl9faGludFwiPlxuICAgIFByZXNzIDxrYmQ+Q3RybDwva2JkPis8a2JkPkVudGVyPC9rYmQ+IHRvIGV4ZWN1dGVcbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { Component, EventEmitter, Input, Output, } from '@angular/core';
|
|
2
|
+
import { CommonModule } from '@angular/common';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "@angular/common";
|
|
5
|
+
export class QueryToolbarComponent {
|
|
6
|
+
// ── State ──
|
|
7
|
+
executing = false;
|
|
8
|
+
disabled = false;
|
|
9
|
+
showHistory = true;
|
|
10
|
+
showFormat = true;
|
|
11
|
+
// ── Labels ──
|
|
12
|
+
executeLabel = 'Execute';
|
|
13
|
+
formatLabel = 'Format';
|
|
14
|
+
clearLabel = 'Clear';
|
|
15
|
+
historyLabel = 'History';
|
|
16
|
+
// ── Custom templates ──
|
|
17
|
+
toolbarTemplate;
|
|
18
|
+
// ── Events ──
|
|
19
|
+
execute = new EventEmitter();
|
|
20
|
+
format = new EventEmitter();
|
|
21
|
+
clear = new EventEmitter();
|
|
22
|
+
toggleHistory = new EventEmitter();
|
|
23
|
+
onExecute() {
|
|
24
|
+
if (!this.executing && !this.disabled) {
|
|
25
|
+
this.execute.emit();
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
onFormat() {
|
|
29
|
+
this.format.emit();
|
|
30
|
+
}
|
|
31
|
+
onClear() {
|
|
32
|
+
this.clear.emit();
|
|
33
|
+
}
|
|
34
|
+
onToggleHistory() {
|
|
35
|
+
this.toggleHistory.emit();
|
|
36
|
+
}
|
|
37
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: QueryToolbarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
38
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: QueryToolbarComponent, isStandalone: true, selector: "tgm-query-toolbar", inputs: { executing: "executing", disabled: "disabled", showHistory: "showHistory", showFormat: "showFormat", executeLabel: "executeLabel", formatLabel: "formatLabel", clearLabel: "clearLabel", historyLabel: "historyLabel", toolbarTemplate: "toolbarTemplate" }, outputs: { execute: "execute", format: "format", clear: "clear", toggleHistory: "toggleHistory" }, ngImport: i0, template: "<div class=\"tgm-query-toolbar\">\n <ng-container *ngIf=\"toolbarTemplate; else defaultToolbar\">\n <ng-container *ngTemplateOutlet=\"toolbarTemplate\"></ng-container>\n </ng-container>\n\n <ng-template #defaultToolbar>\n <div class=\"tgm-query-toolbar__left\">\n <button\n class=\"tgm-db-btn tgm-db-btn--primary\"\n [disabled]=\"executing || disabled\"\n (click)=\"onExecute()\"\n >\n <span class=\"tgm-db-btn__icon\" *ngIf=\"!executing\">▶</span>\n <span class=\"tgm-db-spinner--sm\" *ngIf=\"executing\"></span>\n {{ executeLabel }}\n </button>\n\n <button\n *ngIf=\"showFormat\"\n class=\"tgm-db-btn tgm-db-btn--ghost\"\n [disabled]=\"disabled\"\n (click)=\"onFormat()\"\n >\n {{ formatLabel }}\n </button>\n\n <button\n class=\"tgm-db-btn tgm-db-btn--ghost\"\n [disabled]=\"disabled\"\n (click)=\"onClear()\"\n >\n {{ clearLabel }}\n </button>\n </div>\n\n <div class=\"tgm-query-toolbar__right\">\n <button\n *ngIf=\"showHistory\"\n class=\"tgm-db-btn tgm-db-btn--ghost\"\n (click)=\"onToggleHistory()\"\n >\n {{ historyLabel }}\n </button>\n </div>\n </ng-template>\n</div>\n", styles: [":host{display:block}.tgm-query-toolbar{display:flex;align-items:center;justify-content:space-between;padding:var(--tgm-db-spacing-sm, 8px);background:var(--tgm-db-bg-secondary, rgba(255, 255, 255, .05));border-bottom:1px solid var(--tgm-db-border, rgba(255, 255, 255, .1))}.tgm-query-toolbar__left,.tgm-query-toolbar__right{display:flex;align-items:center;gap:6px}.tgm-db-btn{display:inline-flex;align-items:center;justify-content:center;gap:4px;padding:5px 12px;font-size:13px;font-weight:500;border:none;border-radius:var(--tgm-db-radius-sm, 4px);cursor:pointer;transition:background .15s,opacity .15s;font-family:var(--tgm-db-font-family, inherit);white-space:nowrap}.tgm-db-btn--primary{background:var(--tgm-db-primary, #3b82f6);color:#fff}.tgm-db-btn--primary:hover:not(:disabled){background:var(--tgm-db-primary-hover, #2563eb)}.tgm-db-btn--ghost{background:transparent;color:var(--tgm-db-text-secondary, #9ca3af)}.tgm-db-btn--ghost:hover:not(:disabled){background:var(--tgm-db-bg-hover, rgba(255, 255, 255, .08));color:var(--tgm-db-text, #e5e7eb)}.tgm-db-btn:disabled{opacity:.5;cursor:not-allowed}.tgm-db-btn__icon{font-size:10px}.tgm-db-spinner--sm{display:inline-block;width:14px;height:14px;border:2px solid rgba(255,255,255,.3);border-top-color:#fff;border-radius:50%;animation:tgm-db-spin .6s linear infinite}@keyframes tgm-db-spin{to{transform:rotate(360deg)}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] });
|
|
39
|
+
}
|
|
40
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: QueryToolbarComponent, decorators: [{
|
|
41
|
+
type: Component,
|
|
42
|
+
args: [{ selector: 'tgm-query-toolbar', standalone: true, imports: [CommonModule], template: "<div class=\"tgm-query-toolbar\">\n <ng-container *ngIf=\"toolbarTemplate; else defaultToolbar\">\n <ng-container *ngTemplateOutlet=\"toolbarTemplate\"></ng-container>\n </ng-container>\n\n <ng-template #defaultToolbar>\n <div class=\"tgm-query-toolbar__left\">\n <button\n class=\"tgm-db-btn tgm-db-btn--primary\"\n [disabled]=\"executing || disabled\"\n (click)=\"onExecute()\"\n >\n <span class=\"tgm-db-btn__icon\" *ngIf=\"!executing\">▶</span>\n <span class=\"tgm-db-spinner--sm\" *ngIf=\"executing\"></span>\n {{ executeLabel }}\n </button>\n\n <button\n *ngIf=\"showFormat\"\n class=\"tgm-db-btn tgm-db-btn--ghost\"\n [disabled]=\"disabled\"\n (click)=\"onFormat()\"\n >\n {{ formatLabel }}\n </button>\n\n <button\n class=\"tgm-db-btn tgm-db-btn--ghost\"\n [disabled]=\"disabled\"\n (click)=\"onClear()\"\n >\n {{ clearLabel }}\n </button>\n </div>\n\n <div class=\"tgm-query-toolbar__right\">\n <button\n *ngIf=\"showHistory\"\n class=\"tgm-db-btn tgm-db-btn--ghost\"\n (click)=\"onToggleHistory()\"\n >\n {{ historyLabel }}\n </button>\n </div>\n </ng-template>\n</div>\n", styles: [":host{display:block}.tgm-query-toolbar{display:flex;align-items:center;justify-content:space-between;padding:var(--tgm-db-spacing-sm, 8px);background:var(--tgm-db-bg-secondary, rgba(255, 255, 255, .05));border-bottom:1px solid var(--tgm-db-border, rgba(255, 255, 255, .1))}.tgm-query-toolbar__left,.tgm-query-toolbar__right{display:flex;align-items:center;gap:6px}.tgm-db-btn{display:inline-flex;align-items:center;justify-content:center;gap:4px;padding:5px 12px;font-size:13px;font-weight:500;border:none;border-radius:var(--tgm-db-radius-sm, 4px);cursor:pointer;transition:background .15s,opacity .15s;font-family:var(--tgm-db-font-family, inherit);white-space:nowrap}.tgm-db-btn--primary{background:var(--tgm-db-primary, #3b82f6);color:#fff}.tgm-db-btn--primary:hover:not(:disabled){background:var(--tgm-db-primary-hover, #2563eb)}.tgm-db-btn--ghost{background:transparent;color:var(--tgm-db-text-secondary, #9ca3af)}.tgm-db-btn--ghost:hover:not(:disabled){background:var(--tgm-db-bg-hover, rgba(255, 255, 255, .08));color:var(--tgm-db-text, #e5e7eb)}.tgm-db-btn:disabled{opacity:.5;cursor:not-allowed}.tgm-db-btn__icon{font-size:10px}.tgm-db-spinner--sm{display:inline-block;width:14px;height:14px;border:2px solid rgba(255,255,255,.3);border-top-color:#fff;border-radius:50%;animation:tgm-db-spin .6s linear infinite}@keyframes tgm-db-spin{to{transform:rotate(360deg)}}\n"] }]
|
|
43
|
+
}], propDecorators: { executing: [{
|
|
44
|
+
type: Input
|
|
45
|
+
}], disabled: [{
|
|
46
|
+
type: Input
|
|
47
|
+
}], showHistory: [{
|
|
48
|
+
type: Input
|
|
49
|
+
}], showFormat: [{
|
|
50
|
+
type: Input
|
|
51
|
+
}], executeLabel: [{
|
|
52
|
+
type: Input
|
|
53
|
+
}], formatLabel: [{
|
|
54
|
+
type: Input
|
|
55
|
+
}], clearLabel: [{
|
|
56
|
+
type: Input
|
|
57
|
+
}], historyLabel: [{
|
|
58
|
+
type: Input
|
|
59
|
+
}], toolbarTemplate: [{
|
|
60
|
+
type: Input
|
|
61
|
+
}], execute: [{
|
|
62
|
+
type: Output
|
|
63
|
+
}], format: [{
|
|
64
|
+
type: Output
|
|
65
|
+
}], clear: [{
|
|
66
|
+
type: Output
|
|
67
|
+
}], toggleHistory: [{
|
|
68
|
+
type: Output
|
|
69
|
+
}] } });
|
|
70
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnktdG9vbGJhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvZGF0YWJhc2UtbWFuYWdlci9xdWVyeS10b29sYmFyL3F1ZXJ5LXRvb2xiYXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL2RhdGFiYXNlLW1hbmFnZXIvcXVlcnktdG9vbGJhci9xdWVyeS10b29sYmFyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFDTCxNQUFNLEdBRVAsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDOzs7QUFTL0MsTUFBTSxPQUFPLHFCQUFxQjtJQUNoQyxjQUFjO0lBQ0wsU0FBUyxHQUFHLEtBQUssQ0FBQztJQUNsQixRQUFRLEdBQUcsS0FBSyxDQUFDO0lBQ2pCLFdBQVcsR0FBRyxJQUFJLENBQUM7SUFDbkIsVUFBVSxHQUFHLElBQUksQ0FBQztJQUUzQixlQUFlO0lBQ04sWUFBWSxHQUFHLFNBQVMsQ0FBQztJQUN6QixXQUFXLEdBQUcsUUFBUSxDQUFDO0lBQ3ZCLFVBQVUsR0FBRyxPQUFPLENBQUM7SUFDckIsWUFBWSxHQUFHLFNBQVMsQ0FBQztJQUVsQyx5QkFBeUI7SUFDaEIsZUFBZSxDQUFxQjtJQUU3QyxlQUFlO0lBQ0wsT0FBTyxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7SUFDbkMsTUFBTSxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7SUFDbEMsS0FBSyxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7SUFDakMsYUFBYSxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7SUFFbkQsU0FBUztRQUNQLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ3RDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDdEIsQ0FBQztJQUNILENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNyQixDQUFDO0lBRUQsT0FBTztRQUNMLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDcEIsQ0FBQztJQUVELGVBQWU7UUFDYixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQzVCLENBQUM7d0dBdENVLHFCQUFxQjs0RkFBckIscUJBQXFCLHNiQ2hCbEMscXhDQThDQSx5NUNEbENZLFlBQVk7OzRGQUlYLHFCQUFxQjtrQkFQakMsU0FBUzsrQkFDRSxtQkFBbUIsY0FDakIsSUFBSSxXQUNQLENBQUMsWUFBWSxDQUFDOzhCQU1kLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBR0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFHRyxlQUFlO3NCQUF2QixLQUFLO2dCQUdJLE9BQU87c0JBQWhCLE1BQU07Z0JBQ0csTUFBTTtzQkFBZixNQUFNO2dCQUNHLEtBQUs7c0JBQWQsTUFBTTtnQkFDRyxhQUFhO3NCQUF0QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPdXRwdXQsXG4gIFRlbXBsYXRlUmVmLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3RnbS1xdWVyeS10b29sYmFyJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZV0sXG4gIHRlbXBsYXRlVXJsOiAnLi9xdWVyeS10b29sYmFyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vcXVlcnktdG9vbGJhci5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBRdWVyeVRvb2xiYXJDb21wb25lbnQge1xuICAvLyDilIDilIAgU3RhdGUg4pSA4pSAXG4gIEBJbnB1dCgpIGV4ZWN1dGluZyA9IGZhbHNlO1xuICBASW5wdXQoKSBkaXNhYmxlZCA9IGZhbHNlO1xuICBASW5wdXQoKSBzaG93SGlzdG9yeSA9IHRydWU7XG4gIEBJbnB1dCgpIHNob3dGb3JtYXQgPSB0cnVlO1xuXG4gIC8vIOKUgOKUgCBMYWJlbHMg4pSA4pSAXG4gIEBJbnB1dCgpIGV4ZWN1dGVMYWJlbCA9ICdFeGVjdXRlJztcbiAgQElucHV0KCkgZm9ybWF0TGFiZWwgPSAnRm9ybWF0JztcbiAgQElucHV0KCkgY2xlYXJMYWJlbCA9ICdDbGVhcic7XG4gIEBJbnB1dCgpIGhpc3RvcnlMYWJlbCA9ICdIaXN0b3J5JztcblxuICAvLyDilIDilIAgQ3VzdG9tIHRlbXBsYXRlcyDilIDilIBcbiAgQElucHV0KCkgdG9vbGJhclRlbXBsYXRlPzogVGVtcGxhdGVSZWY8dm9pZD47XG5cbiAgLy8g4pSA4pSAIEV2ZW50cyDilIDilIBcbiAgQE91dHB1dCgpIGV4ZWN1dGUgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gIEBPdXRwdXQoKSBmb3JtYXQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gIEBPdXRwdXQoKSBjbGVhciA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgQE91dHB1dCgpIHRvZ2dsZUhpc3RvcnkgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgb25FeGVjdXRlKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5leGVjdXRpbmcgJiYgIXRoaXMuZGlzYWJsZWQpIHtcbiAgICAgIHRoaXMuZXhlY3V0ZS5lbWl0KCk7XG4gICAgfVxuICB9XG5cbiAgb25Gb3JtYXQoKTogdm9pZCB7XG4gICAgdGhpcy5mb3JtYXQuZW1pdCgpO1xuICB9XG5cbiAgb25DbGVhcigpOiB2b2lkIHtcbiAgICB0aGlzLmNsZWFyLmVtaXQoKTtcbiAgfVxuXG4gIG9uVG9nZ2xlSGlzdG9yeSgpOiB2b2lkIHtcbiAgICB0aGlzLnRvZ2dsZUhpc3RvcnkuZW1pdCgpO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwidGdtLXF1ZXJ5LXRvb2xiYXJcIj5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInRvb2xiYXJUZW1wbGF0ZTsgZWxzZSBkZWZhdWx0VG9vbGJhclwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0b29sYmFyVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgPC9uZy1jb250YWluZXI+XG5cbiAgPG5nLXRlbXBsYXRlICNkZWZhdWx0VG9vbGJhcj5cbiAgICA8ZGl2IGNsYXNzPVwidGdtLXF1ZXJ5LXRvb2xiYXJfX2xlZnRcIj5cbiAgICAgIDxidXR0b25cbiAgICAgICAgY2xhc3M9XCJ0Z20tZGItYnRuIHRnbS1kYi1idG4tLXByaW1hcnlcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiZXhlY3V0aW5nIHx8IGRpc2FibGVkXCJcbiAgICAgICAgKGNsaWNrKT1cIm9uRXhlY3V0ZSgpXCJcbiAgICAgID5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJ0Z20tZGItYnRuX19pY29uXCIgKm5nSWY9XCIhZXhlY3V0aW5nXCI+JiM5NjU0Ozwvc3Bhbj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJ0Z20tZGItc3Bpbm5lci0tc21cIiAqbmdJZj1cImV4ZWN1dGluZ1wiPjwvc3Bhbj5cbiAgICAgICAge3sgZXhlY3V0ZUxhYmVsIH19XG4gICAgICA8L2J1dHRvbj5cblxuICAgICAgPGJ1dHRvblxuICAgICAgICAqbmdJZj1cInNob3dGb3JtYXRcIlxuICAgICAgICBjbGFzcz1cInRnbS1kYi1idG4gdGdtLWRiLWJ0bi0tZ2hvc3RcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICAoY2xpY2spPVwib25Gb3JtYXQoKVwiXG4gICAgICA+XG4gICAgICAgIHt7IGZvcm1hdExhYmVsIH19XG4gICAgICA8L2J1dHRvbj5cblxuICAgICAgPGJ1dHRvblxuICAgICAgICBjbGFzcz1cInRnbS1kYi1idG4gdGdtLWRiLWJ0bi0tZ2hvc3RcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICAoY2xpY2spPVwib25DbGVhcigpXCJcbiAgICAgID5cbiAgICAgICAge3sgY2xlYXJMYWJlbCB9fVxuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwidGdtLXF1ZXJ5LXRvb2xiYXJfX3JpZ2h0XCI+XG4gICAgICA8YnV0dG9uXG4gICAgICAgICpuZ0lmPVwic2hvd0hpc3RvcnlcIlxuICAgICAgICBjbGFzcz1cInRnbS1kYi1idG4gdGdtLWRiLWJ0bi0tZ2hvc3RcIlxuICAgICAgICAoY2xpY2spPVwib25Ub2dnbGVIaXN0b3J5KClcIlxuICAgICAgPlxuICAgICAgICB7eyBoaXN0b3J5TGFiZWwgfX1cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICA8L25nLXRlbXBsYXRlPlxuPC9kaXY+XG4iXX0=
|