taon 18.0.17 → 18.0.19
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/README.md +6 -3
- package/assets/shared/shared_folder_info.txt +1 -1
- package/browser/esm2022/lib/base-classes/base-injector.mjs +8 -1
- package/browser/esm2022/lib/base-classes/base-subscriber-for-entity.mjs +39 -20
- package/browser/esm2022/lib/base-classes/base.mjs +1 -3
- package/browser/esm2022/lib/create-context.mjs +24 -3
- package/browser/esm2022/lib/decorators/classes/subscriber-decorator.mjs +3 -29
- package/browser/esm2022/lib/decorators/http/http-decorators.mjs +3 -1
- package/browser/esm2022/lib/endpoint-context.mjs +36 -136
- package/browser/esm2022/lib/entity-process.mjs +3 -3
- package/browser/esm2022/lib/helpers/class-helpers.mjs +2 -2
- package/browser/esm2022/lib/index.mjs +2 -14
- package/browser/esm2022/lib/inject.mjs +4 -38
- package/browser/esm2022/lib/models.mjs +1 -1
- package/browser/esm2022/lib/realtime/realtime-client.mjs +32 -20
- package/browser/esm2022/lib/realtime/realtime-core.mjs +15 -7
- package/browser/esm2022/lib/realtime/realtime-server.mjs +34 -16
- package/browser/esm2022/lib/realtime/realtime-strategy/realtime-strategy-ipc.mjs +198 -29
- package/browser/esm2022/lib/realtime/realtime-strategy/realtime-strategy-mock.mjs +206 -10
- package/browser/esm2022/lib/realtime/realtime-strategy/realtime-strategy-socket-io.mjs +3 -7
- package/browser/esm2022/lib/realtime/realtime-strategy/realtime-strategy.mjs +6 -2
- package/browser/esm2022/lib/realtime/realtime-subs-manager.mjs +10 -8
- package/browser/esm2022/lib/realtime/realtime.models.mjs +1 -1
- package/browser/esm2022/lib/symbols.mjs +45 -38
- package/browser/esm2022/lib/ui/directives/index.mjs +6 -0
- package/browser/esm2022/lib/ui/directives/safe.pipe.mjs +43 -0
- package/browser/esm2022/lib/ui/directives/taon-inject-html.directive.mjs +24 -0
- package/browser/esm2022/lib/ui/directives/taon-long-press.directive.mjs +120 -0
- package/browser/esm2022/lib/ui/index.mjs +12 -0
- package/browser/esm2022/lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/index.mjs +5 -0
- package/browser/esm2022/lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/taon-admin-edit-mode.component.mjs +115 -0
- package/browser/esm2022/lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/taon-admin-edit-mode.module.mjs +50 -0
- package/browser/esm2022/lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/index.mjs +5 -0
- package/browser/esm2022/lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/taon-file-general-opt.component.mjs +61 -0
- package/browser/esm2022/lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/taon-file-general-opt.module.mjs +21 -0
- package/browser/esm2022/lib/ui/taon-admin-mode-configuration/index.mjs +6 -0
- package/browser/esm2022/lib/ui/taon-admin-mode-configuration/taon-admin-mode-configuration.component.mjs +14 -3
- package/browser/esm2022/lib/ui/taon-admin-mode-configuration/taon-admin-mode-configuration.module.mjs +54 -0
- package/browser/esm2022/lib/ui/taon-full-material.module.mjs +179 -0
- package/browser/esm2022/lib/ui/taon-github-fork-me-corner/index.mjs +5 -0
- package/browser/esm2022/lib/ui/taon-github-fork-me-corner/taon-github-fork-me-corner.component.mjs +18 -0
- package/browser/esm2022/lib/ui/taon-github-fork-me-corner/taon-github-fork-me-corner.module.mjs +21 -0
- package/browser/esm2022/lib/ui/taon-notifications/index.mjs +7 -0
- package/browser/esm2022/lib/ui/taon-notifications/taon-notifications.component.mjs +25 -0
- package/browser/esm2022/lib/ui/taon-notifications/taon-notifications.models.mjs +5 -0
- package/browser/esm2022/lib/ui/taon-notifications/taon-notifications.module.mjs +21 -0
- package/browser/esm2022/lib/ui/taon-notifications/taon-notifications.service.mjs +48 -0
- package/browser/esm2022/lib/ui/taon-progress-bar/index.mjs +5 -0
- package/browser/esm2022/lib/ui/taon-progress-bar/taon-progress-bar.component.mjs +98 -0
- package/browser/esm2022/lib/ui/taon-progress-bar/taon-progress-bar.module.mjs +22 -0
- package/browser/esm2022/lib/ui/taon-session-passcode/index.mjs +4 -0
- package/browser/esm2022/lib/ui/taon-session-passcode/taon-session-passcode.component.mjs +120 -0
- package/browser/esm2022/lib/ui/taon-table/index.mjs +5 -0
- package/browser/esm2022/lib/ui/taon-table/taon-table.component.mjs +161 -0
- package/browser/esm2022/lib/ui/taon-table/taon-table.module.mjs +57 -0
- package/browser/fesm2022/taon.mjs +2004 -636
- package/browser/fesm2022/taon.mjs.map +1 -1
- package/browser/lib/base-classes/base-context.d.ts +8 -1
- package/browser/lib/base-classes/base-injector.d.ts +5 -0
- package/browser/lib/base-classes/base.d.ts +8 -3
- package/browser/lib/create-context.d.ts +17 -1
- package/browser/lib/decorators/classes/subscriber-decorator.d.ts +2 -2
- package/browser/lib/decorators/http/http-decorators.d.ts +2 -0
- package/browser/lib/endpoint-context.d.ts +3 -2
- package/browser/lib/helpers/class-helpers.d.ts +1 -1
- package/browser/lib/index.d.ts +25 -16
- package/browser/lib/inject.d.ts +1 -8
- package/browser/lib/models.d.ts +17 -9
- package/browser/lib/realtime/realtime-client.d.ts +8 -2
- package/browser/lib/realtime/realtime-core.d.ts +6 -6
- package/browser/lib/realtime/realtime-server.d.ts +9 -4
- package/browser/lib/realtime/realtime-strategy/realtime-strategy-ipc.d.ts +71 -12
- package/browser/lib/realtime/realtime-strategy/realtime-strategy-mock.d.ts +4 -4
- package/browser/lib/realtime/realtime-strategy/realtime-strategy-socket-io.d.ts +2 -3
- package/browser/lib/realtime/realtime-strategy/realtime-strategy.d.ts +4 -5
- package/browser/lib/realtime/realtime.models.d.ts +1 -0
- package/browser/lib/symbols.d.ts +30 -36
- package/browser/lib/ui/directives/index.d.ts +4 -0
- package/browser/lib/ui/directives/safe.pipe.d.ts +11 -0
- package/browser/lib/ui/directives/taon-inject-html.directive.d.ts +10 -0
- package/browser/lib/ui/directives/taon-long-press.directive.d.ts +26 -0
- package/browser/lib/ui/index.d.ts +10 -0
- package/browser/lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/index.d.ts +3 -0
- package/browser/lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/taon-admin-edit-mode.component.d.ts +33 -0
- package/browser/lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/taon-admin-edit-mode.module.d.ts +16 -0
- package/browser/lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/index.d.ts +3 -0
- package/browser/lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/taon-file-general-opt.component.d.ts +17 -0
- package/browser/lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/taon-file-general-opt.module.d.ts +10 -0
- package/browser/lib/ui/taon-admin-mode-configuration/index.d.ts +4 -0
- package/browser/lib/ui/taon-admin-mode-configuration/taon-admin-mode-configuration.module.d.ts +17 -0
- package/browser/lib/ui/taon-full-material.module.d.ts +47 -0
- package/browser/lib/ui/taon-github-fork-me-corner/index.d.ts +3 -0
- package/browser/lib/ui/taon-github-fork-me-corner/taon-github-fork-me-corner.component.d.ts +7 -0
- package/browser/lib/ui/taon-github-fork-me-corner/taon-github-fork-me-corner.module.d.ts +9 -0
- package/browser/lib/ui/taon-notifications/index.d.ts +5 -0
- package/browser/lib/ui/taon-notifications/taon-notifications.component.d.ts +13 -0
- package/browser/lib/ui/taon-notifications/taon-notifications.models.d.ts +7 -0
- package/browser/lib/ui/taon-notifications/taon-notifications.module.d.ts +8 -0
- package/browser/lib/ui/taon-notifications/taon-notifications.service.d.ts +15 -0
- package/browser/lib/ui/taon-progress-bar/index.d.ts +3 -0
- package/browser/lib/ui/taon-progress-bar/taon-progress-bar.component.d.ts +19 -0
- package/browser/lib/ui/taon-progress-bar/taon-progress-bar.module.d.ts +10 -0
- package/browser/lib/ui/taon-session-passcode/index.d.ts +2 -0
- package/browser/lib/ui/taon-session-passcode/taon-session-passcode.component.d.ts +39 -0
- package/browser/lib/ui/taon-table/index.d.ts +3 -0
- package/browser/lib/ui/taon-table/taon-table.component.d.ts +37 -0
- package/browser/lib/ui/taon-table/taon-table.module.d.ts +17 -0
- package/client/esm2022/lib/base-classes/base-injector.mjs +8 -1
- package/client/esm2022/lib/base-classes/base-subscriber-for-entity.mjs +39 -20
- package/client/esm2022/lib/base-classes/base.mjs +1 -3
- package/client/esm2022/lib/create-context.mjs +24 -3
- package/client/esm2022/lib/decorators/classes/subscriber-decorator.mjs +3 -29
- package/client/esm2022/lib/decorators/http/http-decorators.mjs +3 -1
- package/client/esm2022/lib/endpoint-context.mjs +36 -136
- package/client/esm2022/lib/entity-process.mjs +3 -3
- package/client/esm2022/lib/helpers/class-helpers.mjs +2 -2
- package/client/esm2022/lib/index.mjs +2 -14
- package/client/esm2022/lib/inject.mjs +4 -38
- package/client/esm2022/lib/models.mjs +1 -1
- package/client/esm2022/lib/realtime/realtime-client.mjs +32 -20
- package/client/esm2022/lib/realtime/realtime-core.mjs +15 -7
- package/client/esm2022/lib/realtime/realtime-server.mjs +34 -16
- package/client/esm2022/lib/realtime/realtime-strategy/realtime-strategy-ipc.mjs +198 -29
- package/client/esm2022/lib/realtime/realtime-strategy/realtime-strategy-mock.mjs +206 -10
- package/client/esm2022/lib/realtime/realtime-strategy/realtime-strategy-socket-io.mjs +3 -7
- package/client/esm2022/lib/realtime/realtime-strategy/realtime-strategy.mjs +6 -2
- package/client/esm2022/lib/realtime/realtime-subs-manager.mjs +10 -8
- package/client/esm2022/lib/realtime/realtime.models.mjs +1 -1
- package/client/esm2022/lib/symbols.mjs +45 -38
- package/client/esm2022/lib/ui/directives/index.mjs +6 -0
- package/client/esm2022/lib/ui/directives/safe.pipe.mjs +43 -0
- package/client/esm2022/lib/ui/directives/taon-inject-html.directive.mjs +24 -0
- package/client/esm2022/lib/ui/directives/taon-long-press.directive.mjs +120 -0
- package/client/esm2022/lib/ui/index.mjs +12 -0
- package/client/esm2022/lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/index.mjs +5 -0
- package/client/esm2022/lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/taon-admin-edit-mode.component.mjs +115 -0
- package/client/esm2022/lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/taon-admin-edit-mode.module.mjs +50 -0
- package/client/esm2022/lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/index.mjs +5 -0
- package/client/esm2022/lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/taon-file-general-opt.component.mjs +61 -0
- package/client/esm2022/lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/taon-file-general-opt.module.mjs +21 -0
- package/client/esm2022/lib/ui/taon-admin-mode-configuration/index.mjs +6 -0
- package/client/esm2022/lib/ui/taon-admin-mode-configuration/taon-admin-mode-configuration.component.mjs +14 -3
- package/client/esm2022/lib/ui/taon-admin-mode-configuration/taon-admin-mode-configuration.module.mjs +54 -0
- package/client/esm2022/lib/ui/taon-full-material.module.mjs +179 -0
- package/client/esm2022/lib/ui/taon-github-fork-me-corner/index.mjs +5 -0
- package/client/esm2022/lib/ui/taon-github-fork-me-corner/taon-github-fork-me-corner.component.mjs +18 -0
- package/client/esm2022/lib/ui/taon-github-fork-me-corner/taon-github-fork-me-corner.module.mjs +21 -0
- package/client/esm2022/lib/ui/taon-notifications/index.mjs +7 -0
- package/client/esm2022/lib/ui/taon-notifications/taon-notifications.component.mjs +25 -0
- package/client/esm2022/lib/ui/taon-notifications/taon-notifications.models.mjs +5 -0
- package/client/esm2022/lib/ui/taon-notifications/taon-notifications.module.mjs +21 -0
- package/client/esm2022/lib/ui/taon-notifications/taon-notifications.service.mjs +48 -0
- package/client/esm2022/lib/ui/taon-progress-bar/index.mjs +5 -0
- package/client/esm2022/lib/ui/taon-progress-bar/taon-progress-bar.component.mjs +98 -0
- package/client/esm2022/lib/ui/taon-progress-bar/taon-progress-bar.module.mjs +22 -0
- package/client/esm2022/lib/ui/taon-session-passcode/index.mjs +4 -0
- package/client/esm2022/lib/ui/taon-session-passcode/taon-session-passcode.component.mjs +120 -0
- package/client/esm2022/lib/ui/taon-table/index.mjs +5 -0
- package/client/esm2022/lib/ui/taon-table/taon-table.component.mjs +161 -0
- package/client/esm2022/lib/ui/taon-table/taon-table.module.mjs +57 -0
- package/client/fesm2022/taon.mjs +2004 -636
- package/client/fesm2022/taon.mjs.map +1 -1
- package/client/lib/base-classes/base-context.d.ts +8 -1
- package/client/lib/base-classes/base-injector.d.ts +5 -0
- package/client/lib/base-classes/base.d.ts +8 -3
- package/client/lib/create-context.d.ts +17 -1
- package/client/lib/decorators/classes/subscriber-decorator.d.ts +2 -2
- package/client/lib/decorators/http/http-decorators.d.ts +2 -0
- package/client/lib/endpoint-context.d.ts +3 -2
- package/client/lib/helpers/class-helpers.d.ts +1 -1
- package/client/lib/index.d.ts +25 -16
- package/client/lib/inject.d.ts +1 -8
- package/client/lib/models.d.ts +17 -9
- package/client/lib/realtime/realtime-client.d.ts +8 -2
- package/client/lib/realtime/realtime-core.d.ts +6 -6
- package/client/lib/realtime/realtime-server.d.ts +9 -4
- package/client/lib/realtime/realtime-strategy/realtime-strategy-ipc.d.ts +71 -12
- package/client/lib/realtime/realtime-strategy/realtime-strategy-mock.d.ts +4 -4
- package/client/lib/realtime/realtime-strategy/realtime-strategy-socket-io.d.ts +2 -3
- package/client/lib/realtime/realtime-strategy/realtime-strategy.d.ts +4 -5
- package/client/lib/realtime/realtime.models.d.ts +1 -0
- package/client/lib/symbols.d.ts +30 -36
- package/client/lib/ui/directives/index.d.ts +4 -0
- package/client/lib/ui/directives/safe.pipe.d.ts +11 -0
- package/client/lib/ui/directives/taon-inject-html.directive.d.ts +10 -0
- package/client/lib/ui/directives/taon-long-press.directive.d.ts +26 -0
- package/client/lib/ui/index.d.ts +10 -0
- package/client/lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/index.d.ts +3 -0
- package/client/lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/taon-admin-edit-mode.component.d.ts +33 -0
- package/client/lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/taon-admin-edit-mode.module.d.ts +16 -0
- package/client/lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/index.d.ts +3 -0
- package/client/lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/taon-file-general-opt.component.d.ts +17 -0
- package/client/lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/taon-file-general-opt.module.d.ts +10 -0
- package/client/lib/ui/taon-admin-mode-configuration/index.d.ts +4 -0
- package/client/lib/ui/taon-admin-mode-configuration/taon-admin-mode-configuration.module.d.ts +17 -0
- package/client/lib/ui/taon-full-material.module.d.ts +47 -0
- package/client/lib/ui/taon-github-fork-me-corner/index.d.ts +3 -0
- package/client/lib/ui/taon-github-fork-me-corner/taon-github-fork-me-corner.component.d.ts +7 -0
- package/client/lib/ui/taon-github-fork-me-corner/taon-github-fork-me-corner.module.d.ts +9 -0
- package/client/lib/ui/taon-notifications/index.d.ts +5 -0
- package/client/lib/ui/taon-notifications/taon-notifications.component.d.ts +13 -0
- package/client/lib/ui/taon-notifications/taon-notifications.models.d.ts +7 -0
- package/client/lib/ui/taon-notifications/taon-notifications.module.d.ts +8 -0
- package/client/lib/ui/taon-notifications/taon-notifications.service.d.ts +15 -0
- package/client/lib/ui/taon-progress-bar/index.d.ts +3 -0
- package/client/lib/ui/taon-progress-bar/taon-progress-bar.component.d.ts +19 -0
- package/client/lib/ui/taon-progress-bar/taon-progress-bar.module.d.ts +10 -0
- package/client/lib/ui/taon-session-passcode/index.d.ts +2 -0
- package/client/lib/ui/taon-session-passcode/taon-session-passcode.component.d.ts +39 -0
- package/client/lib/ui/taon-table/index.d.ts +3 -0
- package/client/lib/ui/taon-table/taon-table.component.d.ts +37 -0
- package/client/lib/ui/taon-table/taon-table.module.d.ts +17 -0
- package/lib/base-classes/base-context.d.ts +8 -1
- package/lib/base-classes/base-injector.d.ts +5 -0
- package/lib/base-classes/base-injector.js +11 -0
- package/lib/base-classes/base-injector.js.map +1 -1
- package/lib/base-classes/base-subscriber-for-entity.js +38 -19
- package/lib/base-classes/base-subscriber-for-entity.js.map +1 -1
- package/lib/base-classes/base.d.ts +8 -3
- package/lib/base-classes/base.js +0 -2
- package/lib/base-classes/base.js.map +1 -1
- package/lib/create-context.d.ts +17 -1
- package/lib/create-context.js +21 -10
- package/lib/create-context.js.map +1 -1
- package/lib/decorators/classes/subscriber-decorator.d.ts +1 -1
- package/lib/decorators/classes/subscriber-decorator.js +7 -58
- package/lib/decorators/classes/subscriber-decorator.js.map +1 -1
- package/lib/decorators/http/http-decorators.d.ts +3 -1
- package/lib/decorators/http/http-decorators.js +2 -0
- package/lib/decorators/http/http-decorators.js.map +1 -1
- package/lib/endpoint-context.d.ts +3 -2
- package/lib/endpoint-context.js +169 -106
- package/lib/endpoint-context.js.map +1 -1
- package/lib/entity-process.js +2 -2
- package/lib/entity-process.js.map +1 -1
- package/lib/formly/formly-repeat-component.js +1 -1
- package/lib/formly/formly-repeat-component.js.map +1 -1
- package/lib/helpers/class-helpers.d.ts +1 -1
- package/lib/helpers/class-helpers.js +2 -2
- package/lib/helpers/class-helpers.js.map +1 -1
- package/lib/index.d.ts +25 -16
- package/lib/index.js +1 -17
- package/lib/index.js.map +1 -1
- package/lib/inject.d.ts +3 -7
- package/lib/inject.js +57 -42
- package/lib/inject.js.map +1 -1
- package/lib/models.d.ts +17 -9
- package/lib/models.js.map +1 -1
- package/lib/realtime/realtime-client.d.ts +8 -2
- package/lib/realtime/realtime-client.js +36 -21
- package/lib/realtime/realtime-client.js.map +1 -1
- package/lib/realtime/realtime-core.d.ts +6 -6
- package/lib/realtime/realtime-core.js +17 -6
- package/lib/realtime/realtime-core.js.map +1 -1
- package/lib/realtime/realtime-server.d.ts +9 -4
- package/lib/realtime/realtime-server.js +98 -76
- package/lib/realtime/realtime-server.js.map +1 -1
- package/lib/realtime/realtime-strategy/realtime-strategy-ipc.d.ts +71 -11
- package/lib/realtime/realtime-strategy/realtime-strategy-ipc.js +301 -40
- package/lib/realtime/realtime-strategy/realtime-strategy-ipc.js.map +1 -1
- package/lib/realtime/realtime-strategy/realtime-strategy-mock.d.ts +4 -4
- package/lib/realtime/realtime-strategy/realtime-strategy-mock.js +358 -14
- package/lib/realtime/realtime-strategy/realtime-strategy-mock.js.map +1 -1
- package/lib/realtime/realtime-strategy/realtime-strategy-socket-io.d.ts +3 -3
- package/lib/realtime/realtime-strategy/realtime-strategy-socket-io.js +10 -14
- package/lib/realtime/realtime-strategy/realtime-strategy-socket-io.js.map +1 -1
- package/lib/realtime/realtime-strategy/realtime-strategy.d.ts +4 -5
- package/lib/realtime/realtime-strategy/realtime-strategy.js +9 -2
- package/lib/realtime/realtime-strategy/realtime-strategy.js.map +1 -1
- package/lib/realtime/realtime-subs-manager.js +10 -8
- package/lib/realtime/realtime-subs-manager.js.map +1 -1
- package/lib/realtime/realtime.models.d.ts +1 -0
- package/lib/symbols.d.ts +30 -36
- package/lib/symbols.js +63 -39
- package/lib/symbols.js.map +1 -1
- package/lib/ui/directives/index.d.ts +3 -4
- package/lib/ui/directives/index.js +2 -2
- package/lib/ui/index.d.ts +9 -0
- package/lib/ui/index.js +5 -0
- package/lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/index.js +2 -2
- package/lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/taon-admin-edit-mode.component.d.ts +3 -5
- package/lib/ui/taon-admin-mode-configuration/components/taon-db-admin/index.js +2 -2
- package/lib/ui/taon-admin-mode-configuration/components/taon-db-admin/taon-db-admin.component.d.ts +2 -3
- package/lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/index.js +2 -2
- package/lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/taon-file-general-opt.component.d.ts +1 -2
- package/lib/ui/taon-admin-mode-configuration/index.d.ts +0 -1
- package/lib/ui/taon-admin-mode-configuration/index.js +2 -2
- package/lib/ui/taon-github-fork-me-corner/index.js +2 -2
- package/lib/ui/taon-github-fork-me-ribbon/index.js +2 -2
- package/lib/ui/taon-notifications/taon-notifications.models.js +2 -2
- package/lib/ui/taon-progress-bar/index.js +2 -2
- package/lib/ui/taon-progress-bar/taon-progress-bar.component.d.ts +1 -0
- package/lib/ui/taon-session-passcode/index.js +2 -2
- package/lib/ui/taon-table/index.d.ts +2 -0
- package/lib/ui/taon-table/index.js +5 -0
- package/lib/ui/taon-table/index.js.map +1 -0
- package/lib/ui/taon-table/taon-table.component.d.ts +33 -0
- package/lib/ui/taon-table/taon-table.module.d.ts +2 -0
- package/package.json +10 -8
- package/tmp-environment.json +34 -30
- package/websql/esm2022/lib/base-classes/base-injector.mjs +8 -1
- package/websql/esm2022/lib/base-classes/base-subscriber-for-entity.mjs +39 -20
- package/websql/esm2022/lib/base-classes/base.mjs +1 -3
- package/websql/esm2022/lib/create-context.mjs +24 -3
- package/websql/esm2022/lib/decorators/classes/subscriber-decorator.mjs +3 -29
- package/websql/esm2022/lib/decorators/http/http-decorators.mjs +3 -1
- package/websql/esm2022/lib/endpoint-context.mjs +48 -24
- package/websql/esm2022/lib/entity-process.mjs +3 -3
- package/websql/esm2022/lib/helpers/class-helpers.mjs +2 -2
- package/websql/esm2022/lib/index.mjs +2 -14
- package/websql/esm2022/lib/inject.mjs +4 -38
- package/websql/esm2022/lib/models.mjs +1 -1
- package/websql/esm2022/lib/realtime/realtime-client.mjs +32 -20
- package/websql/esm2022/lib/realtime/realtime-core.mjs +15 -7
- package/websql/esm2022/lib/realtime/realtime-server.mjs +90 -72
- package/websql/esm2022/lib/realtime/realtime-strategy/realtime-strategy-ipc.mjs +200 -30
- package/websql/esm2022/lib/realtime/realtime-strategy/realtime-strategy-mock.mjs +206 -10
- package/websql/esm2022/lib/realtime/realtime-strategy/realtime-strategy-socket-io.mjs +3 -7
- package/websql/esm2022/lib/realtime/realtime-strategy/realtime-strategy.mjs +6 -2
- package/websql/esm2022/lib/realtime/realtime-subs-manager.mjs +10 -8
- package/websql/esm2022/lib/realtime/realtime.models.mjs +1 -1
- package/websql/esm2022/lib/symbols.mjs +45 -38
- package/websql/esm2022/lib/ui/directives/index.mjs +6 -0
- package/websql/esm2022/lib/ui/directives/safe.pipe.mjs +43 -0
- package/websql/esm2022/lib/ui/directives/taon-inject-html.directive.mjs +24 -0
- package/websql/esm2022/lib/ui/directives/taon-long-press.directive.mjs +120 -0
- package/websql/esm2022/lib/ui/index.mjs +12 -0
- package/websql/esm2022/lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/index.mjs +5 -0
- package/websql/esm2022/lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/taon-admin-edit-mode.component.mjs +115 -0
- package/websql/esm2022/lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/taon-admin-edit-mode.module.mjs +50 -0
- package/websql/esm2022/lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/index.mjs +5 -0
- package/websql/esm2022/lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/taon-file-general-opt.component.mjs +61 -0
- package/websql/esm2022/lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/taon-file-general-opt.module.mjs +21 -0
- package/websql/esm2022/lib/ui/taon-admin-mode-configuration/index.mjs +6 -0
- package/websql/esm2022/lib/ui/taon-admin-mode-configuration/taon-admin-mode-configuration.component.mjs +14 -3
- package/websql/esm2022/lib/ui/taon-admin-mode-configuration/taon-admin-mode-configuration.module.mjs +54 -0
- package/websql/esm2022/lib/ui/taon-full-material.module.mjs +179 -0
- package/websql/esm2022/lib/ui/taon-github-fork-me-corner/index.mjs +5 -0
- package/websql/esm2022/lib/ui/taon-github-fork-me-corner/taon-github-fork-me-corner.component.mjs +18 -0
- package/websql/esm2022/lib/ui/taon-github-fork-me-corner/taon-github-fork-me-corner.module.mjs +21 -0
- package/websql/esm2022/lib/ui/taon-notifications/index.mjs +7 -0
- package/websql/esm2022/lib/ui/taon-notifications/taon-notifications.component.mjs +25 -0
- package/websql/esm2022/lib/ui/taon-notifications/taon-notifications.models.mjs +5 -0
- package/websql/esm2022/lib/ui/taon-notifications/taon-notifications.module.mjs +21 -0
- package/websql/esm2022/lib/ui/taon-notifications/taon-notifications.service.mjs +48 -0
- package/websql/esm2022/lib/ui/taon-progress-bar/index.mjs +5 -0
- package/websql/esm2022/lib/ui/taon-progress-bar/taon-progress-bar.component.mjs +50 -0
- package/websql/esm2022/lib/ui/taon-progress-bar/taon-progress-bar.module.mjs +22 -0
- package/websql/esm2022/lib/ui/taon-session-passcode/index.mjs +4 -0
- package/websql/esm2022/lib/ui/taon-session-passcode/taon-session-passcode.component.mjs +120 -0
- package/websql/esm2022/lib/ui/taon-table/index.mjs +5 -0
- package/websql/esm2022/lib/ui/taon-table/taon-table.component.mjs +161 -0
- package/websql/esm2022/lib/ui/taon-table/taon-table.module.mjs +57 -0
- package/websql/fesm2022/taon.mjs +2140 -836
- package/websql/fesm2022/taon.mjs.map +1 -1
- package/websql/lib/base-classes/base-context.d.ts +8 -1
- package/websql/lib/base-classes/base-injector.d.ts +5 -0
- package/websql/lib/base-classes/base.d.ts +8 -3
- package/websql/lib/create-context.d.ts +17 -1
- package/websql/lib/decorators/classes/subscriber-decorator.d.ts +2 -2
- package/websql/lib/decorators/http/http-decorators.d.ts +2 -0
- package/websql/lib/endpoint-context.d.ts +3 -2
- package/websql/lib/helpers/class-helpers.d.ts +1 -1
- package/websql/lib/index.d.ts +25 -16
- package/websql/lib/inject.d.ts +1 -8
- package/websql/lib/models.d.ts +17 -9
- package/websql/lib/realtime/realtime-client.d.ts +8 -2
- package/websql/lib/realtime/realtime-core.d.ts +6 -6
- package/websql/lib/realtime/realtime-server.d.ts +9 -4
- package/websql/lib/realtime/realtime-strategy/realtime-strategy-ipc.d.ts +71 -12
- package/websql/lib/realtime/realtime-strategy/realtime-strategy-mock.d.ts +4 -4
- package/websql/lib/realtime/realtime-strategy/realtime-strategy-socket-io.d.ts +2 -3
- package/websql/lib/realtime/realtime-strategy/realtime-strategy.d.ts +4 -5
- package/websql/lib/realtime/realtime.models.d.ts +1 -0
- package/websql/lib/symbols.d.ts +30 -36
- package/websql/lib/ui/directives/index.d.ts +4 -0
- package/websql/lib/ui/directives/safe.pipe.d.ts +11 -0
- package/websql/lib/ui/directives/taon-inject-html.directive.d.ts +10 -0
- package/websql/lib/ui/directives/taon-long-press.directive.d.ts +26 -0
- package/websql/lib/ui/index.d.ts +10 -0
- package/websql/lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/index.d.ts +3 -0
- package/websql/lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/taon-admin-edit-mode.component.d.ts +33 -0
- package/websql/lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/taon-admin-edit-mode.module.d.ts +16 -0
- package/websql/lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/index.d.ts +3 -0
- package/websql/lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/taon-file-general-opt.component.d.ts +17 -0
- package/websql/lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/taon-file-general-opt.module.d.ts +10 -0
- package/websql/lib/ui/taon-admin-mode-configuration/index.d.ts +4 -0
- package/websql/lib/ui/taon-admin-mode-configuration/taon-admin-mode-configuration.module.d.ts +17 -0
- package/websql/lib/ui/taon-full-material.module.d.ts +47 -0
- package/websql/lib/ui/taon-github-fork-me-corner/index.d.ts +3 -0
- package/websql/lib/ui/taon-github-fork-me-corner/taon-github-fork-me-corner.component.d.ts +7 -0
- package/websql/lib/ui/taon-github-fork-me-corner/taon-github-fork-me-corner.module.d.ts +9 -0
- package/websql/lib/ui/taon-notifications/index.d.ts +5 -0
- package/websql/lib/ui/taon-notifications/taon-notifications.component.d.ts +13 -0
- package/websql/lib/ui/taon-notifications/taon-notifications.models.d.ts +7 -0
- package/websql/lib/ui/taon-notifications/taon-notifications.module.d.ts +8 -0
- package/websql/lib/ui/taon-notifications/taon-notifications.service.d.ts +15 -0
- package/websql/lib/ui/taon-progress-bar/index.d.ts +3 -0
- package/websql/lib/ui/taon-progress-bar/taon-progress-bar.component.d.ts +19 -0
- package/websql/lib/ui/taon-progress-bar/taon-progress-bar.module.d.ts +10 -0
- package/websql/lib/ui/taon-session-passcode/index.d.ts +2 -0
- package/websql/lib/ui/taon-session-passcode/taon-session-passcode.component.d.ts +39 -0
- package/websql/lib/ui/taon-table/index.d.ts +3 -0
- package/websql/lib/ui/taon-table/taon-table.component.d.ts +37 -0
- package/websql/lib/ui/taon-table/taon-table.module.d.ts +17 -0
- package/browser/esm2022/lib/base-classes/base-subscriber.mjs +0 -27
- package/browser/esm2022/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc-main-namespace.mjs +0 -98
- package/browser/esm2022/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc-main-wrapper.mjs +0 -45
- package/browser/esm2022/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc-renderer-namespace.mjs +0 -40
- package/browser/esm2022/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc-renderer-wrapper.mjs +0 -25
- package/browser/esm2022/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc.models.mjs +0 -4
- package/browser/esm2022/lib/realtime/realtime-strategy/realtime-strategy-mock-models/index.mjs +0 -5
- package/browser/esm2022/lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock-client.mjs +0 -50
- package/browser/esm2022/lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock-namespaces.mjs +0 -48
- package/browser/esm2022/lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock-server.mjs +0 -35
- package/browser/esm2022/lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock-socket.mjs +0 -43
- package/browser/esm2022/lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock.models.mjs +0 -4
- package/browser/lib/base-classes/base-subscriber.d.ts +0 -5
- package/browser/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc-main-namespace.d.ts +0 -22
- package/browser/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc-main-wrapper.d.ts +0 -17
- package/browser/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc-renderer-namespace.d.ts +0 -11
- package/browser/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc-renderer-wrapper.d.ts +0 -11
- package/browser/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc.models.d.ts +0 -14
- package/browser/lib/realtime/realtime-strategy/realtime-strategy-mock-models/index.d.ts +0 -3
- package/browser/lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock-client.d.ts +0 -17
- package/browser/lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock-namespaces.d.ts +0 -18
- package/browser/lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock-server.d.ts +0 -12
- package/browser/lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock-socket.d.ts +0 -14
- package/browser/lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock.models.d.ts +0 -12
- package/client/esm2022/lib/base-classes/base-subscriber.mjs +0 -27
- package/client/esm2022/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc-main-namespace.mjs +0 -98
- package/client/esm2022/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc-main-wrapper.mjs +0 -45
- package/client/esm2022/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc-renderer-namespace.mjs +0 -40
- package/client/esm2022/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc-renderer-wrapper.mjs +0 -25
- package/client/esm2022/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc.models.mjs +0 -4
- package/client/esm2022/lib/realtime/realtime-strategy/realtime-strategy-mock-models/index.mjs +0 -5
- package/client/esm2022/lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock-client.mjs +0 -50
- package/client/esm2022/lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock-namespaces.mjs +0 -48
- package/client/esm2022/lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock-server.mjs +0 -35
- package/client/esm2022/lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock-socket.mjs +0 -43
- package/client/esm2022/lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock.models.mjs +0 -4
- package/client/lib/base-classes/base-subscriber.d.ts +0 -5
- package/client/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc-main-namespace.d.ts +0 -22
- package/client/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc-main-wrapper.d.ts +0 -17
- package/client/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc-renderer-namespace.d.ts +0 -11
- package/client/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc-renderer-wrapper.d.ts +0 -11
- package/client/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc.models.d.ts +0 -14
- package/client/lib/realtime/realtime-strategy/realtime-strategy-mock-models/index.d.ts +0 -3
- package/client/lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock-client.d.ts +0 -17
- package/client/lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock-namespaces.d.ts +0 -18
- package/client/lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock-server.d.ts +0 -12
- package/client/lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock-socket.d.ts +0 -14
- package/client/lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock.models.d.ts +0 -12
- package/lib/base-classes/base-subscriber.d.ts +0 -4
- package/lib/base-classes/base-subscriber.js +0 -25
- package/lib/base-classes/base-subscriber.js.map +0 -1
- package/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/index.d.ts +0 -0
- package/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/index.js +0 -5
- package/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc-main-namespace.d.ts +0 -22
- package/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc-main-namespace.js +0 -139
- package/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc-main-namespace.js.map +0 -1
- package/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc-main-wrapper.d.ts +0 -16
- package/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc-main-wrapper.js +0 -68
- package/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc-main-wrapper.js.map +0 -1
- package/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc-renderer-namespace.d.ts +0 -10
- package/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc-renderer-namespace.js +0 -56
- package/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc-renderer-namespace.js.map +0 -1
- package/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc-renderer-wrapper.d.ts +0 -10
- package/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc-renderer-wrapper.js +0 -50
- package/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc-renderer-wrapper.js.map +0 -1
- package/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc.models.d.ts +0 -13
- package/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc.models.js +0 -3
- package/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc.models.js.map +0 -1
- package/lib/realtime/realtime-strategy/realtime-strategy-mock-models/index.d.ts +0 -2
- package/lib/realtime/realtime-strategy/realtime-strategy-mock-models/index.js +0 -6
- package/lib/realtime/realtime-strategy/realtime-strategy-mock-models/index.js.map +0 -1
- package/lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock-client.d.ts +0 -16
- package/lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock-client.js +0 -54
- package/lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock-client.js.map +0 -1
- package/lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock-namespaces.d.ts +0 -17
- package/lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock-namespaces.js +0 -52
- package/lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock-namespaces.js.map +0 -1
- package/lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock-server.d.ts +0 -11
- package/lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock-server.js +0 -39
- package/lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock-server.js.map +0 -1
- package/lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock-socket.d.ts +0 -13
- package/lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock-socket.js +0 -46
- package/lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock-socket.js.map +0 -1
- package/lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock.models.d.ts +0 -11
- package/lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock.models.js +0 -3
- package/lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock.models.js.map +0 -1
- package/websql/esm2022/lib/base-classes/base-subscriber.mjs +0 -27
- package/websql/esm2022/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc-main-namespace.mjs +0 -98
- package/websql/esm2022/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc-main-wrapper.mjs +0 -45
- package/websql/esm2022/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc-renderer-namespace.mjs +0 -40
- package/websql/esm2022/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc-renderer-wrapper.mjs +0 -25
- package/websql/esm2022/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc.models.mjs +0 -4
- package/websql/esm2022/lib/realtime/realtime-strategy/realtime-strategy-mock-models/index.mjs +0 -5
- package/websql/esm2022/lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock-client.mjs +0 -50
- package/websql/esm2022/lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock-namespaces.mjs +0 -48
- package/websql/esm2022/lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock-server.mjs +0 -35
- package/websql/esm2022/lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock-socket.mjs +0 -43
- package/websql/esm2022/lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock.models.mjs +0 -4
- package/websql/lib/base-classes/base-subscriber.d.ts +0 -5
- package/websql/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc-main-namespace.d.ts +0 -22
- package/websql/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc-main-wrapper.d.ts +0 -17
- package/websql/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc-renderer-namespace.d.ts +0 -11
- package/websql/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc-renderer-wrapper.d.ts +0 -11
- package/websql/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc.models.d.ts +0 -14
- package/websql/lib/realtime/realtime-strategy/realtime-strategy-mock-models/index.d.ts +0 -3
- package/websql/lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock-client.d.ts +0 -17
- package/websql/lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock-namespaces.d.ts +0 -18
- package/websql/lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock-server.d.ts +0 -12
- package/websql/lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock-socket.d.ts +0 -14
- package/websql/lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock.models.d.ts +0 -12
- /package/lib/ui/directives/{firedev-inject-html.directive.d.ts → taon-inject-html.directive.d.ts} +0 -0
- /package/lib/ui/directives/{firedev-long-press.directive.d.ts → taon-long-press.directive.d.ts} +0 -0
- /package/lib/{realtime/realtime-strategy/realtime-strategy-ipc-models → ui}/index.js.map +0 -0
- /package/lib/ui/{toan-full-material.module.d.ts → taon-full-material.module.d.ts} +0 -0
package/websql/fesm2022/taon.mjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import 'reflect-metadata';
|
|
2
2
|
import * as coreHelpers from 'tnp-core/websql';
|
|
3
|
-
import { _, Helpers, path } from 'tnp-core/websql';
|
|
3
|
+
import { _ as _$1, Helpers, path } from 'tnp-core/websql';
|
|
4
4
|
import { Models as Models$1, RestHeaders, Resource, Mapping } from 'ng2-rest/websql';
|
|
5
5
|
import * as tsorm from 'taon-typeorm/websql';
|
|
6
6
|
import { OrignalClassKey, Entity, EventSubscriber, DataSource } from 'taon-typeorm/websql';
|
|
@@ -9,13 +9,89 @@ import * as JSON5 from 'json5';
|
|
|
9
9
|
import { __decorate, __param, __metadata } from 'tslib';
|
|
10
10
|
import { MySqlQuerySource } from 'taon-type-sql/websql';
|
|
11
11
|
import { Stor } from 'taon-storage/websql';
|
|
12
|
-
import { Subject, Observable, from } from 'rxjs';
|
|
12
|
+
import { Subject, Observable, from, interval, tap, defer, fromEvent, map, debounceTime, distinctUntilChanged, share, Subscription, takeUntil, of } from 'rxjs';
|
|
13
13
|
import { config } from 'tnp-config/websql';
|
|
14
14
|
import * as i0 from '@angular/core';
|
|
15
|
-
import { Injectable, inject as inject$1 } from '@angular/core';
|
|
15
|
+
import { Injectable, inject as inject$1, EventEmitter, Directive, Input, Output, HostBinding, HostListener, Pipe, NgModule, Component, DestroyRef, Self, ViewChild, ChangeDetectorRef } from '@angular/core';
|
|
16
16
|
import { JSON10 } from 'json10/websql';
|
|
17
17
|
import axios from 'axios';
|
|
18
18
|
import { io } from 'socket.io-client';
|
|
19
|
+
import { Log, Level } from 'ng2-logger/websql';
|
|
20
|
+
import * as i1 from '@angular/platform-browser';
|
|
21
|
+
import { A11yModule } from '@angular/cdk/a11y';
|
|
22
|
+
import * as i5 from '@angular/cdk/drag-drop';
|
|
23
|
+
import { DragDropModule } from '@angular/cdk/drag-drop';
|
|
24
|
+
import { ScrollingModule } from '@angular/cdk/scrolling';
|
|
25
|
+
import { CdkStepperModule } from '@angular/cdk/stepper';
|
|
26
|
+
import { CdkTableModule } from '@angular/cdk/table';
|
|
27
|
+
import { CdkTreeModule } from '@angular/cdk/tree';
|
|
28
|
+
import { MatAutocompleteModule } from '@angular/material/autocomplete';
|
|
29
|
+
import { MatBadgeModule } from '@angular/material/badge';
|
|
30
|
+
import { MatBottomSheetModule } from '@angular/material/bottom-sheet';
|
|
31
|
+
import * as i6$1 from '@angular/material/button';
|
|
32
|
+
import { MatButtonModule } from '@angular/material/button';
|
|
33
|
+
import * as i7 from '@angular/material/card';
|
|
34
|
+
import { MatCardModule } from '@angular/material/card';
|
|
35
|
+
import * as i8 from '@angular/material/checkbox';
|
|
36
|
+
import { MatCheckboxModule } from '@angular/material/checkbox';
|
|
37
|
+
import { MatButtonToggleModule } from '@angular/material/button-toggle';
|
|
38
|
+
import { MatStepperModule } from '@angular/material/stepper';
|
|
39
|
+
import { MatDialogModule } from '@angular/material/dialog';
|
|
40
|
+
import { MatExpansionModule } from '@angular/material/expansion';
|
|
41
|
+
import { MatGridListModule } from '@angular/material/grid-list';
|
|
42
|
+
import * as i6 from '@angular/material/icon';
|
|
43
|
+
import { MatIconModule } from '@angular/material/icon';
|
|
44
|
+
import * as i11$1 from '@angular/material/list';
|
|
45
|
+
import { MatListModule } from '@angular/material/list';
|
|
46
|
+
import { MatDatepickerModule } from '@angular/material/datepicker';
|
|
47
|
+
import { MatPaginatorModule } from '@angular/material/paginator';
|
|
48
|
+
import { MatProgressBarModule } from '@angular/material/progress-bar';
|
|
49
|
+
import { MatChipsModule } from '@angular/material/chips';
|
|
50
|
+
import { MatDividerModule } from '@angular/material/divider';
|
|
51
|
+
import * as i4 from '@angular/material/input';
|
|
52
|
+
import { MatInputModule } from '@angular/material/input';
|
|
53
|
+
import { MatMenuModule } from '@angular/material/menu';
|
|
54
|
+
import { MatNativeDateModule, MatRippleModule } from '@angular/material/core';
|
|
55
|
+
import { MatProgressSpinnerModule } from '@angular/material/progress-spinner';
|
|
56
|
+
import { MatRadioModule } from '@angular/material/radio';
|
|
57
|
+
import { MatSelectModule } from '@angular/material/select';
|
|
58
|
+
import * as i10 from '@angular/material/sidenav';
|
|
59
|
+
import { MatSidenavModule } from '@angular/material/sidenav';
|
|
60
|
+
import { MatSliderModule } from '@angular/material/slider';
|
|
61
|
+
import { MatSlideToggleModule } from '@angular/material/slide-toggle';
|
|
62
|
+
import { MatSnackBarModule } from '@angular/material/snack-bar';
|
|
63
|
+
import { MatSortModule } from '@angular/material/sort';
|
|
64
|
+
import { MatTableModule } from '@angular/material/table';
|
|
65
|
+
import * as i11 from '@angular/material/tabs';
|
|
66
|
+
import { MatTabsModule } from '@angular/material/tabs';
|
|
67
|
+
import { MatToolbarModule } from '@angular/material/toolbar';
|
|
68
|
+
import { MatTooltipModule } from '@angular/material/tooltip';
|
|
69
|
+
import { MatTreeModule } from '@angular/material/tree';
|
|
70
|
+
import * as i2$1 from '@angular/common';
|
|
71
|
+
import { CommonModule } from '@angular/common';
|
|
72
|
+
import * as i1$1 from '@ngneat/hot-toast';
|
|
73
|
+
import * as i2 from '@angular/forms';
|
|
74
|
+
import { FormGroup, FormControl, ReactiveFormsModule, FormsModule } from '@angular/forms';
|
|
75
|
+
import { PasswordModule } from 'primeng/password';
|
|
76
|
+
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
77
|
+
import * as i1$2 from 'ngx-progressbar';
|
|
78
|
+
import { NgProgressModule } from 'ngx-progressbar';
|
|
79
|
+
import * as _ from 'lodash';
|
|
80
|
+
import * as i2$2 from '@angular/material/form-field';
|
|
81
|
+
import { MatFormFieldModule } from '@angular/material/form-field';
|
|
82
|
+
import * as i3 from '@ng-matero/extensions/grid';
|
|
83
|
+
import { MtxGridModule } from '@ng-matero/extensions/grid';
|
|
84
|
+
import * as i1$3 from 'static-columns/websql';
|
|
85
|
+
import { StaticColumnsModule } from 'static-columns/websql';
|
|
86
|
+
import * as i4$1 from 'ngx-scrollbar';
|
|
87
|
+
import { NgScrollbarModule } from 'ngx-scrollbar';
|
|
88
|
+
import * as i1$4 from '@angular/router';
|
|
89
|
+
import 'brace';
|
|
90
|
+
import 'brace/mode/css';
|
|
91
|
+
import 'brace/mode/typescript';
|
|
92
|
+
import 'brace/theme/github';
|
|
93
|
+
import * as i13 from 'ngx-pipes';
|
|
94
|
+
import { NgArrayPipesModule } from 'ngx-pipes';
|
|
19
95
|
|
|
20
96
|
var Symbols;
|
|
21
97
|
(function (Symbols) {
|
|
@@ -25,45 +101,52 @@ var Symbols;
|
|
|
25
101
|
Symbols.orignalClass = OrignalClassKey;
|
|
26
102
|
Symbols.orignalClassClonesObj = `$$originalClassClonesObj$$`;
|
|
27
103
|
Symbols.classMethodsNames = `$$classMethodsNames$$`;
|
|
28
|
-
|
|
29
|
-
|
|
104
|
+
/**
|
|
105
|
+
* for backendSocket.in(ROOM_NAME).emit(EVENT)
|
|
106
|
+
*
|
|
107
|
+
* Room names are uniqe..
|
|
108
|
+
* here I am limiting number of event for clients.
|
|
109
|
+
*/
|
|
110
|
+
class Realtime {
|
|
111
|
+
constructor() {
|
|
112
|
+
this.KEYroomSubscribe = `roomSubscribe`;
|
|
113
|
+
this.KEYroomUnsubscribe = `roomUnsubscribe`;
|
|
114
|
+
}
|
|
115
|
+
NAMESPACE(contextName) {
|
|
116
|
+
return `${contextName}-taonRealtimeNsp`;
|
|
117
|
+
}
|
|
30
118
|
TABLE_CHANGE(contextName, tableName) {
|
|
31
119
|
return `${contextName}:listentablename${tableName}`;
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
ENTITY_UPDATE_EVENTS: (contextName) => `${contextName}:roomUnsubscribeEntityEvents`,
|
|
63
|
-
ENTITY_PROPERTY_UPDATE_EVENTS: (contextName) => `${contextName}:roomUnsubscribeEntityPropertyEvents`,
|
|
64
|
-
},
|
|
65
|
-
},
|
|
66
|
-
};
|
|
120
|
+
}
|
|
121
|
+
ROOM_NAME_CUSTOM(contextName, customEvent) {
|
|
122
|
+
return `${contextName}:CustomRoomEvent${customEvent}`;
|
|
123
|
+
}
|
|
124
|
+
ROOM_SUBSCRIBE_CUSTOM(contextName) {
|
|
125
|
+
return `${contextName}:${this.KEYroomSubscribe}CustomRoomEvent`;
|
|
126
|
+
}
|
|
127
|
+
ROOM_UNSUBSCRIBE_CUSTOM(contextName) {
|
|
128
|
+
return `${contextName}:${this.KEYroomUnsubscribe}CustomRoomEvent`;
|
|
129
|
+
}
|
|
130
|
+
ROOM_NAME_UPDATE_ENTITY(contextName, className, entityId) {
|
|
131
|
+
return `${contextName}:room${_$1.camelCase(className)}${entityId}`.toLowerCase();
|
|
132
|
+
}
|
|
133
|
+
ROOM_SUBSCRIBE_ENTITY_UPDATE_EVENTS(contextName) {
|
|
134
|
+
return `${contextName}:${this.KEYroomSubscribe}EntityEvents`;
|
|
135
|
+
}
|
|
136
|
+
ROOM_UNSUBSCRIBE_ENTITY_UPDATE_EVENTS(contextName) {
|
|
137
|
+
return `${contextName}:${this.KEYroomUnsubscribe}EntityEvents`;
|
|
138
|
+
}
|
|
139
|
+
ROOM_NAME_UPDATE_ENTITY_PROPERTY(contextName, className, property, entityId) {
|
|
140
|
+
return `${contextName}:room${_$1.camelCase(className)}${_$1.camelCase(property)}${entityId}`.toLowerCase();
|
|
141
|
+
}
|
|
142
|
+
ROOM_SUBSCRIBE_ENTITY_PROPERTY_UPDATE_EVENTS(contextName) {
|
|
143
|
+
return `${contextName}:${this.KEYroomSubscribe}EntityPropertyEvents`;
|
|
144
|
+
}
|
|
145
|
+
ROOM_UNSUBSCRIBE_ENTITY_PROPERTY_UPDATE_EVENTS(contextName) {
|
|
146
|
+
return `${contextName}:${this.KEYroomUnsubscribe}EntityPropertyEvents`;
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
Symbols.REALTIME = new Realtime();
|
|
67
150
|
Symbols.metadata = {
|
|
68
151
|
className: `class:realname`,
|
|
69
152
|
options: {
|
|
@@ -107,7 +190,7 @@ var Validators;
|
|
|
107
190
|
(function (Validators) {
|
|
108
191
|
Validators.classNameVlidation = (className, target) => {
|
|
109
192
|
setTimeout(() => {
|
|
110
|
-
if (_.isUndefined(className)) {
|
|
193
|
+
if (_$1.isUndefined(className)) {
|
|
111
194
|
throw `[Taon]
|
|
112
195
|
Please provide "className" property for each Controller and Entity:
|
|
113
196
|
|
|
@@ -127,7 +210,7 @@ var Validators;
|
|
|
127
210
|
`;
|
|
128
211
|
}
|
|
129
212
|
});
|
|
130
|
-
return _.isUndefined(className) ? target.name : className;
|
|
213
|
+
return _$1.isUndefined(className) ? target.name : className;
|
|
131
214
|
};
|
|
132
215
|
Validators.checkIfMethodsWithReponseTYpeAlowed = (methods, current) => {
|
|
133
216
|
const defaultResponseType = 'text or JSON';
|
|
@@ -150,8 +233,8 @@ var Validators;
|
|
|
150
233
|
}
|
|
151
234
|
};
|
|
152
235
|
Validators.validateClassFunctions = (controllers, entities, proviers, repositories) => {
|
|
153
|
-
if (_.isArray(controllers) &&
|
|
154
|
-
controllers.filter(f => !_.isFunction(f)).length > 0) {
|
|
236
|
+
if (_$1.isArray(controllers) &&
|
|
237
|
+
controllers.filter(f => !_$1.isFunction(f)).length > 0) {
|
|
155
238
|
console.error('controllers', controllers);
|
|
156
239
|
throw `
|
|
157
240
|
|
|
@@ -159,8 +242,8 @@ var Validators;
|
|
|
159
242
|
|
|
160
243
|
`;
|
|
161
244
|
}
|
|
162
|
-
if (_.isArray(entities) &&
|
|
163
|
-
entities.filter(f => !_.isFunction(f)).length > 0) {
|
|
245
|
+
if (_$1.isArray(entities) &&
|
|
246
|
+
entities.filter(f => !_$1.isFunction(f)).length > 0) {
|
|
164
247
|
console.error('entites', entities);
|
|
165
248
|
throw `
|
|
166
249
|
|
|
@@ -170,7 +253,7 @@ var Validators;
|
|
|
170
253
|
}
|
|
171
254
|
};
|
|
172
255
|
Validators.preventUndefinedModel = (model, id) => {
|
|
173
|
-
if (_.isUndefined(model)) {
|
|
256
|
+
if (_$1.isUndefined(model)) {
|
|
174
257
|
throw `Bad update by id, config, id: ${id}`;
|
|
175
258
|
}
|
|
176
259
|
};
|
|
@@ -181,7 +264,7 @@ var Validators;
|
|
|
181
264
|
var TaonHelpers;
|
|
182
265
|
(function (TaonHelpers) {
|
|
183
266
|
TaonHelpers.fillUpTo = (s, nCharacters) => {
|
|
184
|
-
return _.times(nCharacters, n => {
|
|
267
|
+
return _$1.times(nCharacters, n => {
|
|
185
268
|
if (s.charAt(n)) {
|
|
186
269
|
return s.charAt(n);
|
|
187
270
|
}
|
|
@@ -229,7 +312,7 @@ var TaonHelpers;
|
|
|
229
312
|
return {};
|
|
230
313
|
};
|
|
231
314
|
TaonHelpers.parseJSONwithStringJSONs = (object, waring = false) => {
|
|
232
|
-
if (!_.isObject(object)) {
|
|
315
|
+
if (!_$1.isObject(object)) {
|
|
233
316
|
if (waring) {
|
|
234
317
|
console.error(`
|
|
235
318
|
parseJSONwithStringJSONs(...)
|
|
@@ -238,7 +321,7 @@ var TaonHelpers;
|
|
|
238
321
|
}
|
|
239
322
|
return object;
|
|
240
323
|
}
|
|
241
|
-
let res = _.cloneDeep(object);
|
|
324
|
+
let res = _$1.cloneDeep(object);
|
|
242
325
|
Object.keys(res).forEach(key => {
|
|
243
326
|
let isJson = false;
|
|
244
327
|
try {
|
|
@@ -303,7 +386,7 @@ var ClassHelpers;
|
|
|
303
386
|
* TODO - repalce in every place when getting class fn from object
|
|
304
387
|
*/
|
|
305
388
|
ClassHelpers.getClassFnFromObject = (json) => {
|
|
306
|
-
if (_.isUndefined(json) || _.isNull(json)) {
|
|
389
|
+
if (_$1.isUndefined(json) || _$1.isNull(json)) {
|
|
307
390
|
return;
|
|
308
391
|
}
|
|
309
392
|
if (json.constructor) {
|
|
@@ -343,26 +426,26 @@ var ClassHelpers;
|
|
|
343
426
|
: classFnOrObject?.constructor[Symbols.fullClassNameStaticProperty]) ||
|
|
344
427
|
void 0);
|
|
345
428
|
};
|
|
346
|
-
ClassHelpers.
|
|
347
|
-
const classFn = _.isFunction(classFnOrObject)
|
|
429
|
+
ClassHelpers.getUniqueKey = (classFnOrObject) => {
|
|
430
|
+
const classFn = _$1.isFunction(classFnOrObject)
|
|
348
431
|
? classFnOrObject
|
|
349
432
|
: classFnOrObject.constructor;
|
|
350
433
|
const config = Reflect.getMetadata(Symbols.metadata.options.controller, classFn);
|
|
351
434
|
return config.uniqueKeyProp;
|
|
352
435
|
};
|
|
353
436
|
ClassHelpers.isContextClassObject = (obj) => {
|
|
354
|
-
if (!_.isObject(obj) ||
|
|
355
|
-
_.isArray(obj) ||
|
|
356
|
-
_.isRegExp(obj) ||
|
|
357
|
-
_.isBuffer(obj) ||
|
|
358
|
-
_.isArrayBuffer(obj)) {
|
|
437
|
+
if (!_$1.isObject(obj) ||
|
|
438
|
+
_$1.isArray(obj) ||
|
|
439
|
+
_$1.isRegExp(obj) ||
|
|
440
|
+
_$1.isBuffer(obj) ||
|
|
441
|
+
_$1.isArrayBuffer(obj)) {
|
|
359
442
|
return false;
|
|
360
443
|
}
|
|
361
|
-
if (_.isDate(obj)) {
|
|
444
|
+
if (_$1.isDate(obj)) {
|
|
362
445
|
return true;
|
|
363
446
|
}
|
|
364
447
|
const className = ClassHelpers.getName(obj);
|
|
365
|
-
return _.isString(className) && className !== 'Object';
|
|
448
|
+
return _$1.isString(className) && className !== 'Object';
|
|
366
449
|
};
|
|
367
450
|
ClassHelpers.setName = (target, className) => {
|
|
368
451
|
Validators.classNameVlidation(className, target);
|
|
@@ -374,7 +457,7 @@ var ClassHelpers;
|
|
|
374
457
|
}
|
|
375
458
|
targets.push(target);
|
|
376
459
|
let targetProto = Object.getPrototypeOf(target);
|
|
377
|
-
if (_.isFunction(targetProto) &&
|
|
460
|
+
if (_$1.isFunction(targetProto) &&
|
|
378
461
|
ClassHelpers.getName(targetProto) === className) {
|
|
379
462
|
return true;
|
|
380
463
|
}
|
|
@@ -382,7 +465,7 @@ var ClassHelpers;
|
|
|
382
465
|
};
|
|
383
466
|
ClassHelpers.getControllerConfig = (target) => {
|
|
384
467
|
const classMetadataOptions = Reflect.getMetadata(Symbols.metadata.options.controller, target);
|
|
385
|
-
const classMetadata = _.merge(new Models.ControllerConfig(), classMetadataOptions);
|
|
468
|
+
const classMetadata = _$1.merge(new Models.ControllerConfig(), classMetadataOptions);
|
|
386
469
|
const methodNames = ClassHelpers.getMethodsNames(target); // Object.getOwnPropertyNames(target.prototype);
|
|
387
470
|
for (const methodName of methodNames) {
|
|
388
471
|
const methodMetadata = Reflect.getMetadata(Symbols.metadata.options.controllerMethod, target, methodName);
|
|
@@ -417,7 +500,7 @@ var ClassHelpers;
|
|
|
417
500
|
if (!classOrClassInstance) {
|
|
418
501
|
return allMethodsNames;
|
|
419
502
|
}
|
|
420
|
-
const isClassFunction = _.isFunction(classOrClassInstance);
|
|
503
|
+
const isClassFunction = _$1.isFunction(classOrClassInstance);
|
|
421
504
|
const classFun = isClassFunction
|
|
422
505
|
? classOrClassInstance
|
|
423
506
|
: Object.getPrototypeOf(classOrClassInstance);
|
|
@@ -425,7 +508,7 @@ var ClassHelpers;
|
|
|
425
508
|
? classOrClassInstance?.prototype
|
|
426
509
|
: classOrClassInstance;
|
|
427
510
|
const prototypeObj = Object.getPrototypeOf(objectToCheck || {});
|
|
428
|
-
const properties = _.uniq([
|
|
511
|
+
const properties = _$1.uniq([
|
|
429
512
|
...Object.getOwnPropertyNames(objectToCheck || {}),
|
|
430
513
|
...Object.getOwnPropertyNames(prototypeObj || {}),
|
|
431
514
|
...Object.keys(objectToCheck || {}),
|
|
@@ -442,13 +525,13 @@ var ClassHelpers;
|
|
|
442
525
|
return ClassHelpers.getMethodsNames(Object.getPrototypeOf(classFun), allMethodsNames);
|
|
443
526
|
};
|
|
444
527
|
ClassHelpers.getControllerConfigs = (target, configs = [], callerTarget) => {
|
|
445
|
-
if (!_.isFunction(target)) {
|
|
528
|
+
if (!_$1.isFunction(target)) {
|
|
446
529
|
throw `[typescript-class-helper][getClassConfig] Cannot get class config from: ${target}`;
|
|
447
530
|
}
|
|
448
531
|
let config;
|
|
449
532
|
const parentClass = Object.getPrototypeOf(target);
|
|
450
533
|
const parentName = parentClass ? ClassHelpers.getName(parentClass) : void 0;
|
|
451
|
-
const isValidParent = _.isFunction(parentClass) && parentName !== '';
|
|
534
|
+
const isValidParent = _$1.isFunction(parentClass) && parentName !== '';
|
|
452
535
|
config = ClassHelpers.getControllerConfig(target);
|
|
453
536
|
configs.push(config);
|
|
454
537
|
return isValidParent
|
|
@@ -457,7 +540,7 @@ var ClassHelpers;
|
|
|
457
540
|
};
|
|
458
541
|
ClassHelpers.getCalculatedPathFor = (target) => {
|
|
459
542
|
const configs = ClassHelpers.getControllerConfigs(target);
|
|
460
|
-
const parentscalculatedPath = _.slice(configs, 1)
|
|
543
|
+
const parentscalculatedPath = _$1.slice(configs, 1)
|
|
461
544
|
.reverse()
|
|
462
545
|
.map(bc => {
|
|
463
546
|
if (TaonHelpers.isGoodPath(bc.path)) {
|
|
@@ -565,7 +648,7 @@ const metaReq = (method, path, target, propertyKey, descriptor, pathOrOptions, p
|
|
|
565
648
|
if (methodConfig.parameters.hasOwnProperty(key)) {
|
|
566
649
|
const element = methodConfig.parameters[key];
|
|
567
650
|
if (element.paramType === 'Path' &&
|
|
568
|
-
_.isString(element.paramName) &&
|
|
651
|
+
_$1.isString(element.paramName) &&
|
|
569
652
|
element.paramName.trim().length > 0) {
|
|
570
653
|
paramsPathConcatedPath += `/${element.paramName}/:${element.paramName}`;
|
|
571
654
|
}
|
|
@@ -668,6 +751,7 @@ var Http;
|
|
|
668
751
|
Http.DELETE = DELETE;
|
|
669
752
|
Http.PATCH = PATCH;
|
|
670
753
|
Http.HEAD = HEAD;
|
|
754
|
+
Http.Response = Models$1.HttpResponse;
|
|
671
755
|
let Param;
|
|
672
756
|
(function (Param) {
|
|
673
757
|
Param.Query = Query;
|
|
@@ -710,11 +794,18 @@ class BaseInjector {
|
|
|
710
794
|
}
|
|
711
795
|
}
|
|
712
796
|
/**
|
|
797
|
+
* @deprecated use ctx instead
|
|
713
798
|
* Current endpoint context
|
|
714
799
|
*/
|
|
715
800
|
get __endpoint_context__() {
|
|
716
801
|
return this[Symbols.ctxInClassOrClassObj];
|
|
717
802
|
}
|
|
803
|
+
/**
|
|
804
|
+
* get current endpoint context
|
|
805
|
+
*/
|
|
806
|
+
get ctx() {
|
|
807
|
+
return this.__endpoint_context__;
|
|
808
|
+
}
|
|
718
809
|
/**
|
|
719
810
|
* inject crud repo for entity
|
|
720
811
|
*/
|
|
@@ -842,7 +933,7 @@ class BaseInjector {
|
|
|
842
933
|
}
|
|
843
934
|
clone(override) {
|
|
844
935
|
const classFn = ClassHelpers.getClassFnFromObject(this);
|
|
845
|
-
const result = _.merge(new classFn(), _.merge(_.cloneDeep(this), override));
|
|
936
|
+
const result = _$1.merge(new classFn(), _$1.merge(_$1.cloneDeep(this), override));
|
|
846
937
|
return result;
|
|
847
938
|
}
|
|
848
939
|
}
|
|
@@ -868,7 +959,7 @@ BaseController = __decorate([
|
|
|
868
959
|
*/
|
|
869
960
|
let BaseCrudController = class BaseCrudController extends BaseController {
|
|
870
961
|
async _() {
|
|
871
|
-
if (!_.isFunction(this.entityClassResolveFn)) {
|
|
962
|
+
if (!_$1.isFunction(this.entityClassResolveFn)) {
|
|
872
963
|
Helpers.warn(`Skipping initing CRUD controller ${ClassHelpers.getName(this)} because entityClassResolveFn is not provided.`);
|
|
873
964
|
return;
|
|
874
965
|
}
|
|
@@ -904,7 +995,7 @@ let BaseCrudController = class BaseCrudController extends BaseController {
|
|
|
904
995
|
Validators.preventUndefinedModel(model, id);
|
|
905
996
|
let value = model[property];
|
|
906
997
|
let result;
|
|
907
|
-
if (_.isString(value) || _.isArray(value)) {
|
|
998
|
+
if (_$1.isString(value) || _$1.isArray(value)) {
|
|
908
999
|
result = value.slice(alreadyLength);
|
|
909
1000
|
}
|
|
910
1001
|
return result;
|
|
@@ -1090,7 +1181,7 @@ class BaseClass {
|
|
|
1090
1181
|
async _() { }
|
|
1091
1182
|
clone(override) {
|
|
1092
1183
|
const classFn = ClassHelpers.getClassFnFromObject(this);
|
|
1093
|
-
const result = _.merge(new classFn(), _.merge(_.cloneDeep(this), override));
|
|
1184
|
+
const result = _$1.merge(new classFn(), _$1.merge(_$1.cloneDeep(this), override));
|
|
1094
1185
|
return result;
|
|
1095
1186
|
}
|
|
1096
1187
|
}
|
|
@@ -1351,7 +1442,7 @@ let BaseRepository = class BaseRepository extends BaseInjector {
|
|
|
1351
1442
|
* Removes a given entities from the database.
|
|
1352
1443
|
*/
|
|
1353
1444
|
async remove(idOrEntity) {
|
|
1354
|
-
if (_.isObject(idOrEntity)) {
|
|
1445
|
+
if (_$1.isObject(idOrEntity)) {
|
|
1355
1446
|
idOrEntity = idOrEntity.id;
|
|
1356
1447
|
}
|
|
1357
1448
|
const deletedEntity = await this.repo.findOne({
|
|
@@ -1376,7 +1467,7 @@ let BaseRepository = class BaseRepository extends BaseInjector {
|
|
|
1376
1467
|
}
|
|
1377
1468
|
async bulkRemove(idsOrEntities) {
|
|
1378
1469
|
idsOrEntities = idsOrEntities.map(id => {
|
|
1379
|
-
return _.isObject(id) ? id.id : id;
|
|
1470
|
+
return _$1.isObject(id) ? id.id : id;
|
|
1380
1471
|
});
|
|
1381
1472
|
const models = [];
|
|
1382
1473
|
for (let index = 0; index < idsOrEntities.length; index++) {
|
|
@@ -1417,10 +1508,10 @@ let BaseRepository = class BaseRepository extends BaseInjector {
|
|
|
1417
1508
|
async updateById(id, item) {
|
|
1418
1509
|
const allowedPropsToUpdate = [];
|
|
1419
1510
|
for (const key in item) {
|
|
1420
|
-
if (_.isObject(item) &&
|
|
1511
|
+
if (_$1.isObject(item) &&
|
|
1421
1512
|
item.hasOwnProperty(key) &&
|
|
1422
1513
|
typeof item[key] !== 'object' &&
|
|
1423
|
-
!_.isUndefined(this.repo.metadata.ownColumns.find(c => c.propertyName === key))) {
|
|
1514
|
+
!_$1.isUndefined(this.repo.metadata.ownColumns.find(c => c.propertyName === key))) {
|
|
1424
1515
|
allowedPropsToUpdate.push(key);
|
|
1425
1516
|
}
|
|
1426
1517
|
}
|
|
@@ -1632,14 +1723,14 @@ const globalPublicStorage = Helpers.isBrowser ? window : global;
|
|
|
1632
1723
|
;
|
|
1633
1724
|
({}); // @--end-of-file-for-module=taon lib/storage.ts
|
|
1634
1725
|
|
|
1635
|
-
const ENV$
|
|
1726
|
+
const ENV$2 = Helpers.isBrowser ? window['ENV'] : global['ENV'];
|
|
1636
1727
|
class TaonAdmin {
|
|
1637
1728
|
constructor() {
|
|
1638
1729
|
this.scrollableEnabled = false; // TOOD false by default
|
|
1639
1730
|
this.onEditMode = new Subject();
|
|
1640
1731
|
this.onEditMode$ = this.onEditMode.asObservable();
|
|
1641
1732
|
this.enabledTabs = [];
|
|
1642
|
-
this.scrollableEnabled = !!ENV$
|
|
1733
|
+
this.scrollableEnabled = !!ENV$2?.useGlobalNgxScrollbar;
|
|
1643
1734
|
}
|
|
1644
1735
|
static get Instance() {
|
|
1645
1736
|
if (!globalPublicStorage[config.frameworkNames.productionFrameworkName]) {
|
|
@@ -1764,7 +1855,7 @@ const getResponseValue = (response, options) => {
|
|
|
1764
1855
|
;
|
|
1765
1856
|
({}); // @--end-of-file-for-module=taon lib/get-response-value.ts
|
|
1766
1857
|
|
|
1767
|
-
const ENV = Helpers.isBrowser ? window['ENV'] : global['ENV'];
|
|
1858
|
+
const ENV$1 = Helpers.isBrowser ? window['ENV'] : global['ENV'];
|
|
1768
1859
|
;
|
|
1769
1860
|
({}); // @--end-of-file-for-module=taon lib/env.ts
|
|
1770
1861
|
|
|
@@ -1786,17 +1877,19 @@ class RealtimeSubsManager {
|
|
|
1786
1877
|
return;
|
|
1787
1878
|
}
|
|
1788
1879
|
if (!this.isListening) {
|
|
1789
|
-
const subscribeEvent = Symbols.REALTIME.ROOM_NAME.SUBSCRIBE.CUSTOM(this.options.core.ctx.contextName);
|
|
1790
1880
|
this.isListening = true;
|
|
1791
1881
|
if (this.options.customEvent) {
|
|
1882
|
+
const subscribeEvent = Symbols.REALTIME.ROOM_SUBSCRIBE_CUSTOM(this.options.core.ctx.contextName);
|
|
1792
1883
|
realtime.emit(subscribeEvent, this.options.roomName);
|
|
1793
1884
|
}
|
|
1794
1885
|
else {
|
|
1795
|
-
if (_.isString(this.options.property)) {
|
|
1796
|
-
|
|
1886
|
+
if (_$1.isString(this.options.property)) {
|
|
1887
|
+
const subscribeEvent = Symbols.REALTIME.ROOM_SUBSCRIBE_ENTITY_PROPERTY_UPDATE_EVENTS(this.options.core.ctx.contextName);
|
|
1888
|
+
realtime.emit(subscribeEvent, this.options.roomName);
|
|
1797
1889
|
}
|
|
1798
1890
|
else {
|
|
1799
|
-
|
|
1891
|
+
const subscribeEvent = Symbols.REALTIME.ROOM_SUBSCRIBE_ENTITY_UPDATE_EVENTS(this.options.core.ctx.contextName);
|
|
1892
|
+
realtime.emit(subscribeEvent, this.options.roomName);
|
|
1800
1893
|
}
|
|
1801
1894
|
}
|
|
1802
1895
|
realtime.on(this.options.roomName, data => {
|
|
@@ -1812,16 +1905,16 @@ class RealtimeSubsManager {
|
|
|
1812
1905
|
if (this.observers.length === 0) {
|
|
1813
1906
|
this.isListening = false;
|
|
1814
1907
|
const { core, customEvent, roomName, property } = this.options;
|
|
1815
|
-
const realtime = core.
|
|
1908
|
+
const realtime = core.socketFE;
|
|
1816
1909
|
if (customEvent) {
|
|
1817
|
-
realtime.emit(Symbols.REALTIME.
|
|
1910
|
+
realtime.emit(Symbols.REALTIME.ROOM_UNSUBSCRIBE_CUSTOM(this.options.core.ctx.contextName), roomName);
|
|
1818
1911
|
}
|
|
1819
1912
|
else {
|
|
1820
|
-
if (_.isString(property)) {
|
|
1821
|
-
realtime.emit(Symbols.REALTIME.
|
|
1913
|
+
if (_$1.isString(property)) {
|
|
1914
|
+
realtime.emit(Symbols.REALTIME.ROOM_UNSUBSCRIBE_ENTITY_PROPERTY_UPDATE_EVENTS(this.options.core.ctx.contextName), roomName);
|
|
1822
1915
|
}
|
|
1823
1916
|
else {
|
|
1824
|
-
realtime.emit(Symbols.REALTIME.
|
|
1917
|
+
realtime.emit(Symbols.REALTIME.ROOM_UNSUBSCRIBE_ENTITY_UPDATE_EVENTS(this.options.core.ctx.contextName), roomName);
|
|
1825
1918
|
}
|
|
1826
1919
|
}
|
|
1827
1920
|
}
|
|
@@ -1848,7 +1941,7 @@ class RealtimeSubsManager {
|
|
|
1848
1941
|
class RealtimeClient {
|
|
1849
1942
|
constructor(core) {
|
|
1850
1943
|
this.core = core;
|
|
1851
|
-
this.
|
|
1944
|
+
this.subsManagers = {};
|
|
1852
1945
|
this.core = core;
|
|
1853
1946
|
if (!core.ctx.disabledRealtime) {
|
|
1854
1947
|
this.init();
|
|
@@ -1863,20 +1956,24 @@ class RealtimeClient {
|
|
|
1863
1956
|
console.info('[CLIENT] NAMESPACE GLOBAL ', nspPath.global.href + ` host: ${this.core.ctx.host}`);
|
|
1864
1957
|
this.core.ctx.logRealtime &&
|
|
1865
1958
|
console.info('[CLIENT] NAMESPACE REALTIME', nspPath.realtime.href + ` host: ${this.core.ctx.host}`);
|
|
1866
|
-
this.core.
|
|
1959
|
+
this.core.conectSocketFE = this.core.strategy.ioClient(nspPath.global.origin, {
|
|
1867
1960
|
path: nspPath.global.pathname,
|
|
1868
1961
|
});
|
|
1869
|
-
if (this.core.
|
|
1870
|
-
this.core.
|
|
1871
|
-
|
|
1962
|
+
if (this.core.conectSocketFE.on) {
|
|
1963
|
+
this.core.conectSocketFE.on('connect', () => {
|
|
1964
|
+
this.core.ctx.logRealtime &&
|
|
1965
|
+
console.info(`[CLIENT] connected to GLOBAL namespace ${nspPath.global.pathname}` +
|
|
1966
|
+
` of host: ${this.core.ctx.host}`);
|
|
1872
1967
|
});
|
|
1873
1968
|
}
|
|
1874
|
-
this.core.
|
|
1969
|
+
this.core.socketFE = this.core.strategy.ioClient(nspPath.realtime.origin, {
|
|
1875
1970
|
path: nspPath.realtime.pathname,
|
|
1876
1971
|
});
|
|
1877
|
-
if (this.core.
|
|
1878
|
-
this.core.
|
|
1879
|
-
|
|
1972
|
+
if (this.core.socketFE.on) {
|
|
1973
|
+
this.core.socketFE.on('connect', () => {
|
|
1974
|
+
this.core.ctx.logRealtime &&
|
|
1975
|
+
console.info(`[CLIENT] connected to REALTIME namespace ${nspPath.realtime.pathname}` +
|
|
1976
|
+
` host: ${this.core.ctx.host}`);
|
|
1880
1977
|
});
|
|
1881
1978
|
}
|
|
1882
1979
|
}
|
|
@@ -1891,7 +1988,7 @@ class RealtimeClient {
|
|
|
1891
1988
|
options = options || {};
|
|
1892
1989
|
const { property, customEvent } = options;
|
|
1893
1990
|
const className = !customEvent && ClassHelpers.getName(entityClassFn);
|
|
1894
|
-
if (_.isString(property)) {
|
|
1991
|
+
if (_$1.isString(property)) {
|
|
1895
1992
|
if (property.trim() === '') {
|
|
1896
1993
|
throw new Error(`[Taon][listenChangesEntity.. incorect property '' for ${className}`);
|
|
1897
1994
|
}
|
|
@@ -1911,12 +2008,12 @@ to use socket realtime connection;
|
|
|
1911
2008
|
}
|
|
1912
2009
|
let roomName;
|
|
1913
2010
|
if (customEvent) {
|
|
1914
|
-
roomName = Symbols.REALTIME.
|
|
2011
|
+
roomName = Symbols.REALTIME.ROOM_NAME_CUSTOM(this.core.ctx.contextName, customEvent);
|
|
1915
2012
|
}
|
|
1916
2013
|
else {
|
|
1917
|
-
roomName = _.isString(property)
|
|
1918
|
-
? Symbols.REALTIME.
|
|
1919
|
-
: Symbols.REALTIME.
|
|
2014
|
+
roomName = _$1.isString(property)
|
|
2015
|
+
? Symbols.REALTIME.ROOM_NAME_UPDATE_ENTITY_PROPERTY(this.core.ctx.contextName, className, property, idOrUniqValue)
|
|
2016
|
+
: Symbols.REALTIME.ROOM_NAME_UPDATE_ENTITY(this.core.ctx.contextName, className, idOrUniqValue);
|
|
1920
2017
|
}
|
|
1921
2018
|
const roomSubOptions = {
|
|
1922
2019
|
core: this.core,
|
|
@@ -1924,13 +2021,13 @@ to use socket realtime connection;
|
|
|
1924
2021
|
roomName,
|
|
1925
2022
|
customEvent,
|
|
1926
2023
|
};
|
|
1927
|
-
const subManagerId = this.
|
|
1928
|
-
if (!this.
|
|
1929
|
-
this.
|
|
2024
|
+
const subManagerId = this.getUniqueIdentifierForConnection(roomSubOptions);
|
|
2025
|
+
if (!this.subsManagers[subManagerId]) {
|
|
2026
|
+
this.subsManagers[subManagerId] = new RealtimeSubsManager(roomSubOptions);
|
|
1930
2027
|
}
|
|
1931
|
-
const inst = this.
|
|
2028
|
+
const inst = this.subsManagers[subManagerId];
|
|
1932
2029
|
inst.add(observer);
|
|
1933
|
-
inst.startListenIfNotStarted(this.core.
|
|
2030
|
+
inst.startListenIfNotStarted(this.core.socketFE);
|
|
1934
2031
|
return () => {
|
|
1935
2032
|
inst.remove(observer);
|
|
1936
2033
|
};
|
|
@@ -1953,7 +2050,7 @@ to use socket realtime connection;
|
|
|
1953
2050
|
*/
|
|
1954
2051
|
listenChangesEntityObj(entity, options) {
|
|
1955
2052
|
const classFn = ClassHelpers.getClassFnFromObject(entity);
|
|
1956
|
-
const uniqueKey = ClassHelpers.
|
|
2053
|
+
const uniqueKey = ClassHelpers.getUniqueKey(classFn);
|
|
1957
2054
|
return this.listenChangesEntity(classFn, entity[uniqueKey], options);
|
|
1958
2055
|
}
|
|
1959
2056
|
listenChangesCustomEvent(customEvent) {
|
|
@@ -1961,7 +2058,15 @@ to use socket realtime connection;
|
|
|
1961
2058
|
customEvent,
|
|
1962
2059
|
});
|
|
1963
2060
|
}
|
|
1964
|
-
|
|
2061
|
+
/**
|
|
2062
|
+
* Trigger custom event on backend
|
|
2063
|
+
* @param customEvent global event name
|
|
2064
|
+
* @param dataToPush
|
|
2065
|
+
*/
|
|
2066
|
+
triggerCustomEvent(customEvent, dataToPush) {
|
|
2067
|
+
this.core.socketFE.emit(customEvent, dataToPush);
|
|
2068
|
+
}
|
|
2069
|
+
getUniqueIdentifierForConnection(options) {
|
|
1965
2070
|
const url = new URL(options.core.ctx.host);
|
|
1966
2071
|
return `${this.core.ctx.contextName}:${url.origin}|${options.roomName}|${options.property}|${options.customEvent}`;
|
|
1967
2072
|
}
|
|
@@ -1969,138 +2074,142 @@ to use socket realtime connection;
|
|
|
1969
2074
|
;
|
|
1970
2075
|
({}); // @--end-of-file-for-module=taon lib/realtime/realtime-client.ts
|
|
1971
2076
|
|
|
1972
|
-
const SOCKET_EVENT_DEBOUNCE = 500;
|
|
1973
2077
|
class RealtimeServer {
|
|
1974
2078
|
constructor(core) {
|
|
1975
2079
|
this.core = core;
|
|
1976
|
-
this.jobs = {};
|
|
1977
2080
|
this.core = core;
|
|
1978
2081
|
if (!core.ctx.disabledRealtime) {
|
|
1979
2082
|
this.init();
|
|
1980
2083
|
}
|
|
1981
2084
|
}
|
|
1982
2085
|
init() {
|
|
2086
|
+
if (!this.core.ctx.config.frontendHost) {
|
|
2087
|
+
console.warn(`[Taon][Realtime]
|
|
2088
|
+
|
|
2089
|
+
Frontend host is not defined
|
|
2090
|
+
REALTIME COMMUNICATION WILL NOT WORK
|
|
2091
|
+
|
|
2092
|
+
provide "frontendHost" property in your taon config
|
|
2093
|
+
|
|
2094
|
+
`);
|
|
2095
|
+
}
|
|
1983
2096
|
const nspPath = {
|
|
1984
2097
|
global: this.core.pathFor(),
|
|
1985
2098
|
realtime: this.core.pathFor(Symbols.REALTIME.NAMESPACE(this.core.ctx.contextName)),
|
|
1986
2099
|
};
|
|
1987
|
-
this.core.
|
|
2100
|
+
this.core.connectSocketBE = this.core.strategy.ioServer(Helpers.isWebSQL ? this.core.ctx.uri.origin : this.core.ctx.serverTcpUdp, {
|
|
1988
2101
|
path: nspPath.global.pathname,
|
|
1989
2102
|
cors: {
|
|
1990
2103
|
origin: this.core.ctx.config.frontendHost,
|
|
1991
2104
|
methods: this.core.allHttpMethods,
|
|
1992
2105
|
},
|
|
1993
|
-
}
|
|
2106
|
+
}, // @ts-ignore
|
|
2107
|
+
this.core.ctx);
|
|
1994
2108
|
this.core.ctx.logRealtime &&
|
|
1995
|
-
console.info(`CREATE GLOBAL NAMESPACE: '${this.core.
|
|
1996
|
-
|
|
1997
|
-
|
|
1998
|
-
|
|
1999
|
-
this.core.
|
|
2000
|
-
}
|
|
2001
|
-
console.info(`client conected to namespace "${clientSocket.nsp?.name}", host: ${this.core.ctx.host}`);
|
|
2109
|
+
console.info(`[backend] CREATE GLOBAL NAMESPACE: '${this.core.connectSocketBE.path()}'` +
|
|
2110
|
+
` , path: '${nspPath.global.pathname}'`);
|
|
2111
|
+
this.core.connectSocketBE.on('connection', clientSocket => {
|
|
2112
|
+
console.info(`[backend] client connected to namespace "${nspPath.global.pathname}", ` +
|
|
2113
|
+
` host: ${this.core.ctx.host}`);
|
|
2002
2114
|
});
|
|
2003
|
-
this.core.
|
|
2115
|
+
this.core.socketBE = this.core.strategy.ioServer(Helpers.isWebSQL || Helpers.isElectron
|
|
2116
|
+
? this.core.ctx.uri.origin
|
|
2117
|
+
: this.core.ctx.serverTcpUdp, {
|
|
2004
2118
|
path: nspPath.realtime.pathname,
|
|
2005
2119
|
cors: {
|
|
2006
2120
|
origin: this.core.ctx.config.frontendHost,
|
|
2007
2121
|
methods: this.core.allHttpMethods,
|
|
2008
2122
|
},
|
|
2009
|
-
}
|
|
2123
|
+
}, // @ts-ignore
|
|
2124
|
+
this.core.ctx);
|
|
2010
2125
|
this.core.ctx.logRealtime &&
|
|
2011
|
-
console.info(`CREATE REALTIME NAMESPACE: '${this.core.
|
|
2012
|
-
|
|
2013
|
-
|
|
2014
|
-
|
|
2015
|
-
|
|
2016
|
-
|
|
2017
|
-
this.core.
|
|
2018
|
-
|
|
2019
|
-
|
|
2020
|
-
console.info(`Joining room ${roomName} in namespace REALTIME` +
|
|
2021
|
-
` host: ${this.core.ctx.contextName}/${this.core.ctx.host}`);
|
|
2126
|
+
console.info(`[backend] CREATE REALTIME NAMESPACE: '${this.core.socketBE.path()}'` +
|
|
2127
|
+
` , path: '${nspPath.realtime.pathname}' `);
|
|
2128
|
+
this.core.socketBE.on('connection', backendSocketForClient => {
|
|
2129
|
+
console.info(`[backend] client connected to namespace "${nspPath.realtime.pathname}", ` +
|
|
2130
|
+
` host: ${this.core.ctx.host}`);
|
|
2131
|
+
backendSocketForClient.on(Symbols.REALTIME.ROOM_SUBSCRIBE_CUSTOM(this.core.ctx.contextName), roomName => {
|
|
2132
|
+
this.core.ctx.logRealtime &&
|
|
2133
|
+
console.info(`Joining room ${roomName} in namespace REALTIME` +
|
|
2134
|
+
` host: ${this.core.ctx.contextName}/${this.core.ctx.host}`);
|
|
2022
2135
|
backendSocketForClient.join(roomName);
|
|
2023
2136
|
});
|
|
2024
|
-
backendSocketForClient.on(Symbols.REALTIME.
|
|
2025
|
-
|
|
2026
|
-
`
|
|
2137
|
+
backendSocketForClient.on(Symbols.REALTIME.ROOM_SUBSCRIBE_ENTITY_UPDATE_EVENTS(this.core.ctx.contextName), roomName => {
|
|
2138
|
+
this.core.ctx.logRealtime &&
|
|
2139
|
+
console.info(`[backend] Joining room ${roomName} in namespace REALTIME` +
|
|
2140
|
+
` host: ${this.core.ctx.contextName}/${this.core.ctx.host}`);
|
|
2027
2141
|
backendSocketForClient.join(roomName);
|
|
2028
2142
|
});
|
|
2029
|
-
backendSocketForClient.on(Symbols.REALTIME.
|
|
2030
|
-
|
|
2031
|
-
`
|
|
2143
|
+
backendSocketForClient.on(Symbols.REALTIME.ROOM_SUBSCRIBE_ENTITY_PROPERTY_UPDATE_EVENTS(this.core.ctx.contextName), roomName => {
|
|
2144
|
+
this.core.ctx.logRealtime &&
|
|
2145
|
+
console.info(`[backend] Joining room ${roomName} in namespace REALTIME ` +
|
|
2146
|
+
` host: ${this.core.ctx.contextName}/${this.core.ctx.host}`);
|
|
2032
2147
|
backendSocketForClient.join(roomName);
|
|
2033
2148
|
});
|
|
2034
|
-
backendSocketForClient.on(Symbols.REALTIME.
|
|
2035
|
-
|
|
2036
|
-
`
|
|
2149
|
+
backendSocketForClient.on(Symbols.REALTIME.ROOM_UNSUBSCRIBE_CUSTOM(this.core.ctx.contextName), roomName => {
|
|
2150
|
+
this.core.ctx.logRealtime &&
|
|
2151
|
+
console.info(`[backend] Leaving room ${roomName} in namespace REALTIME` +
|
|
2152
|
+
` host: ${this.core.ctx.contextName}/${this.core.ctx.host}`);
|
|
2037
2153
|
backendSocketForClient.leave(roomName);
|
|
2038
2154
|
});
|
|
2039
|
-
backendSocketForClient.on(Symbols.REALTIME.
|
|
2040
|
-
|
|
2041
|
-
`
|
|
2155
|
+
backendSocketForClient.on(Symbols.REALTIME.ROOM_UNSUBSCRIBE_ENTITY_UPDATE_EVENTS(this.core.ctx.contextName), roomName => {
|
|
2156
|
+
this.core.ctx.logRealtime &&
|
|
2157
|
+
console.info(`[backend] Leaving room ${roomName} in namespace REALTIME ` +
|
|
2158
|
+
` host: ${this.core.ctx.contextName}/${this.core.ctx.host}`);
|
|
2042
2159
|
backendSocketForClient.leave(roomName);
|
|
2043
2160
|
});
|
|
2044
|
-
backendSocketForClient.on(Symbols.REALTIME.
|
|
2045
|
-
|
|
2046
|
-
`
|
|
2161
|
+
backendSocketForClient.on(Symbols.REALTIME.ROOM_UNSUBSCRIBE_ENTITY_PROPERTY_UPDATE_EVENTS(this.core.ctx.contextName), roomName => {
|
|
2162
|
+
this.core.ctx.logRealtime &&
|
|
2163
|
+
console.info(`[backend] Leaving room ${roomName} in namespace REALTIME ` +
|
|
2164
|
+
` host: ${this.core.ctx.contextName}/${this.core.ctx.host}`);
|
|
2047
2165
|
backendSocketForClient.leave(roomName);
|
|
2048
2166
|
});
|
|
2049
2167
|
});
|
|
2050
2168
|
}
|
|
2051
|
-
triggerChanges(entityObjOrClass, property,
|
|
2169
|
+
triggerChanges(entityObjOrClass, property, valueOfUniqueProperty, customEvent, customEventData) {
|
|
2052
2170
|
let roomName;
|
|
2053
2171
|
if (this.core.ctx.disabledRealtime) {
|
|
2054
2172
|
return;
|
|
2055
2173
|
}
|
|
2056
2174
|
if (customEvent) {
|
|
2057
|
-
roomName = Symbols.REALTIME.
|
|
2175
|
+
roomName = Symbols.REALTIME.ROOM_NAME_CUSTOM(this.core.ctx.contextName, customEvent);
|
|
2058
2176
|
}
|
|
2059
2177
|
else {
|
|
2060
2178
|
let entityFn = entityObjOrClass;
|
|
2061
|
-
const
|
|
2062
|
-
if (
|
|
2179
|
+
const entityIsObject = !_$1.isFunction(entityObjOrClass) && _$1.isObject(entityObjOrClass);
|
|
2180
|
+
if (entityIsObject) {
|
|
2063
2181
|
entityFn = ClassHelpers.getClassFnFromObject(entityObjOrClass);
|
|
2064
2182
|
}
|
|
2065
|
-
const uniqueKey = ClassHelpers.
|
|
2066
|
-
if (
|
|
2067
|
-
|
|
2183
|
+
const uniqueKey = ClassHelpers.getUniqueKey(entityFn);
|
|
2184
|
+
if (entityIsObject) {
|
|
2185
|
+
valueOfUniqueProperty = entityObjOrClass[uniqueKey];
|
|
2068
2186
|
}
|
|
2069
|
-
if (!
|
|
2187
|
+
if (!valueOfUniqueProperty) {
|
|
2070
2188
|
Helpers.error(`[Taon][Realtime] Entity without iD ! ${ClassHelpers.getName(entityFn)} `, true, true);
|
|
2071
2189
|
return;
|
|
2072
2190
|
}
|
|
2073
|
-
roomName = _.isString(property)
|
|
2074
|
-
? Symbols.REALTIME.
|
|
2075
|
-
: Symbols.REALTIME.
|
|
2076
|
-
}
|
|
2077
|
-
const job = () => {
|
|
2078
|
-
console.log(`Trigger realtime: ${this.core.ctx.contextName}/${roomName}`);
|
|
2079
|
-
this.core.BE_REALTIME.in(roomName).emit(roomName, // roomName == eventName in room na
|
|
2080
|
-
customEventData ? customEventData : '');
|
|
2081
|
-
};
|
|
2082
|
-
if (!_.isFunction(this.jobs[roomName])) {
|
|
2083
|
-
this.jobs[roomName] = _.debounce(() => {
|
|
2084
|
-
job();
|
|
2085
|
-
}, SOCKET_EVENT_DEBOUNCE);
|
|
2191
|
+
roomName = _$1.isString(property)
|
|
2192
|
+
? Symbols.REALTIME.ROOM_NAME_UPDATE_ENTITY_PROPERTY(this.core.ctx.contextName, ClassHelpers.getName(entityFn), property, valueOfUniqueProperty)
|
|
2193
|
+
: Symbols.REALTIME.ROOM_NAME_UPDATE_ENTITY(this.core.ctx.contextName, ClassHelpers.getName(entityFn), valueOfUniqueProperty);
|
|
2086
2194
|
}
|
|
2087
|
-
this.
|
|
2195
|
+
this.core.socketBE.in(roomName).emit(roomName, // roomName == eventName in room na
|
|
2196
|
+
customEvent ? customEventData : '');
|
|
2088
2197
|
}
|
|
2089
|
-
|
|
2198
|
+
triggerEntityChanges(entityObjOrClass, idToTrigger) {
|
|
2090
2199
|
if (this.core.ctx.disabledRealtime) {
|
|
2091
2200
|
const className = ClassHelpers.getName(entityObjOrClass);
|
|
2092
|
-
console.warn(`[Taon][
|
|
2201
|
+
console.warn(`[Taon][TriggerEntityChanges] Entity "${className}' is not realtime`);
|
|
2093
2202
|
return;
|
|
2094
2203
|
}
|
|
2095
2204
|
this.triggerChanges(entityObjOrClass, void 0, idToTrigger);
|
|
2096
2205
|
}
|
|
2097
|
-
|
|
2206
|
+
triggerEntityPropertyChanges(entityObjOrClass, property, idToTrigger) {
|
|
2098
2207
|
if (this.core.ctx.disabledRealtime) {
|
|
2099
2208
|
const className = ClassHelpers.getName(entityObjOrClass);
|
|
2100
|
-
console.warn(`[Taon][
|
|
2209
|
+
console.warn(`[Taon][TriggerEntityPropertyChanges][property=${property}] Entity "${className}' is not realtime`);
|
|
2101
2210
|
return;
|
|
2102
2211
|
}
|
|
2103
|
-
if (_.isArray(property)) {
|
|
2212
|
+
if (_$1.isArray(property)) {
|
|
2104
2213
|
property.forEach(propertyFromArr => {
|
|
2105
2214
|
this.triggerChanges(entityObjOrClass, propertyFromArr, idToTrigger);
|
|
2106
2215
|
});
|
|
@@ -2109,16 +2218,29 @@ class RealtimeServer {
|
|
|
2109
2218
|
this.triggerChanges(entityObjOrClass, property, idToTrigger);
|
|
2110
2219
|
}
|
|
2111
2220
|
}
|
|
2112
|
-
|
|
2113
|
-
|
|
2114
|
-
}
|
|
2115
|
-
trigggerEntityTableChanges(entityClass) {
|
|
2116
|
-
const className = ClassHelpers.getName(entityClass);
|
|
2221
|
+
triggerEntityTableChanges(entityClassOrInstance) {
|
|
2222
|
+
const className = ClassHelpers.getName(entityClassOrInstance);
|
|
2117
2223
|
if (this.core.ctx.disabledRealtime) {
|
|
2118
|
-
console.warn(`[Taon][
|
|
2224
|
+
console.warn(`[Taon][TriggerEntityTableChanges] Entity "${className}' is not realtime`);
|
|
2119
2225
|
return;
|
|
2120
2226
|
}
|
|
2121
|
-
this.triggerChanges(
|
|
2227
|
+
this.triggerChanges(entityClassOrInstance, void 0, void 0, Symbols.REALTIME.TABLE_CHANGE(this.core.ctx.contextName, className));
|
|
2228
|
+
}
|
|
2229
|
+
triggerCustomEvent(customEvent, dataToPush) {
|
|
2230
|
+
this.triggerChanges(void 0, void 0, void 0, customEvent, dataToPush);
|
|
2231
|
+
}
|
|
2232
|
+
/**
|
|
2233
|
+
* Listen to custom events from users
|
|
2234
|
+
* @param customEvent global event name
|
|
2235
|
+
*/
|
|
2236
|
+
listenChangesCustomEvent(customEvent) {
|
|
2237
|
+
const sub = new Subject();
|
|
2238
|
+
this.core.socketBE.on('connection', backendSocketForClient => {
|
|
2239
|
+
backendSocketForClient.on(customEvent, (data, ...args) => {
|
|
2240
|
+
sub.next(data);
|
|
2241
|
+
});
|
|
2242
|
+
});
|
|
2243
|
+
return sub.asObservable();
|
|
2122
2244
|
}
|
|
2123
2245
|
}
|
|
2124
2246
|
;
|
|
@@ -2128,22 +2250,69 @@ class RealtimeStrategy {
|
|
|
2128
2250
|
constructor(ctx) {
|
|
2129
2251
|
this.ctx = ctx;
|
|
2130
2252
|
}
|
|
2131
|
-
|
|
2253
|
+
get ioClient() {
|
|
2254
|
+
throw new Error('Not implemented');
|
|
2255
|
+
}
|
|
2256
|
+
ioServer(url, opt) {
|
|
2257
|
+
throw new Error('Not implemented');
|
|
2132
2258
|
}
|
|
2133
2259
|
}
|
|
2134
2260
|
;
|
|
2135
2261
|
({}); // @--end-of-file-for-module=taon lib/realtime/realtime-strategy/realtime-strategy.ts
|
|
2136
2262
|
|
|
2137
|
-
|
|
2138
|
-
|
|
2139
|
-
|
|
2140
|
-
|
|
2141
|
-
|
|
2263
|
+
class MockServerIpc {
|
|
2264
|
+
static { this.serverByContextName = new Map(); }
|
|
2265
|
+
static from(contextName) {
|
|
2266
|
+
if (!MockServerIpc.serverByContextName.has(contextName)) {
|
|
2267
|
+
MockServerIpc.serverByContextName.set(contextName, new MockServerIpc(contextName));
|
|
2268
|
+
}
|
|
2269
|
+
return MockServerIpc.serverByContextName.get(contextName);
|
|
2270
|
+
}
|
|
2271
|
+
constructor(contextName) {
|
|
2272
|
+
this.contextName = contextName;
|
|
2273
|
+
this.namespacesByName = new Map();
|
|
2274
|
+
MockServerIpc.serverByContextName.set(contextName, this);
|
|
2275
|
+
}
|
|
2276
|
+
of(namespace) {
|
|
2277
|
+
if (!this.namespacesByName.has(namespace)) {
|
|
2278
|
+
this.namespacesByName.set(namespace, new MockNamespaceIpc(namespace, this));
|
|
2279
|
+
}
|
|
2280
|
+
return this.namespacesByName.get(namespace);
|
|
2281
|
+
}
|
|
2282
|
+
}
|
|
2283
|
+
class MockNamespaceIpc {
|
|
2284
|
+
constructor(
|
|
2285
|
+
/**
|
|
2286
|
+
* Namespace name
|
|
2287
|
+
*/
|
|
2288
|
+
name, server) {
|
|
2142
2289
|
this.name = name;
|
|
2143
|
-
this.
|
|
2144
|
-
this.
|
|
2290
|
+
this.server = server;
|
|
2291
|
+
this.electronClients = new Set();
|
|
2292
|
+
this.roomsByRoomName = {};
|
|
2293
|
+
this.namespaceEventHandlers = {};
|
|
2145
2294
|
}
|
|
2146
|
-
on(
|
|
2295
|
+
on(eventName, callback) {
|
|
2296
|
+
/* */
|
|
2297
|
+
/* */
|
|
2298
|
+
/* */
|
|
2299
|
+
/* */
|
|
2300
|
+
/* */
|
|
2301
|
+
/* */
|
|
2302
|
+
/* */
|
|
2303
|
+
/* */
|
|
2304
|
+
/* */
|
|
2305
|
+
/* */
|
|
2306
|
+
/* */
|
|
2307
|
+
/* */
|
|
2308
|
+
/* */
|
|
2309
|
+
/* */
|
|
2310
|
+
/* */
|
|
2311
|
+
/* */
|
|
2312
|
+
/* */
|
|
2313
|
+
/* */
|
|
2314
|
+
/* */
|
|
2315
|
+
/* */
|
|
2147
2316
|
/* */
|
|
2148
2317
|
/* */
|
|
2149
2318
|
/* */
|
|
@@ -2168,10 +2337,11 @@ class IpcMainNamespace {
|
|
|
2168
2337
|
/* */
|
|
2169
2338
|
/* */
|
|
2170
2339
|
/* */
|
|
2171
|
-
/* */
|
|
2172
2340
|
return (void 0);
|
|
2173
2341
|
}
|
|
2174
|
-
emit(
|
|
2342
|
+
emit(eventName, ...args) {
|
|
2343
|
+
/* */
|
|
2344
|
+
/* */
|
|
2175
2345
|
/* */
|
|
2176
2346
|
/* */
|
|
2177
2347
|
/* */
|
|
@@ -2181,39 +2351,25 @@ class IpcMainNamespace {
|
|
|
2181
2351
|
/* */
|
|
2182
2352
|
return (void 0);
|
|
2183
2353
|
}
|
|
2184
|
-
to(
|
|
2185
|
-
|
|
2186
|
-
|
|
2187
|
-
const emitEvent = `(${this.name}) "${event}"`;
|
|
2188
|
-
const allWindows = Electron.BrowserWindow.getAllWindows();
|
|
2189
|
-
allWindows.forEach((win, index) => {
|
|
2190
|
-
win.webContents.send(emitEvent, ...args);
|
|
2191
|
-
});
|
|
2192
|
-
},
|
|
2193
|
-
};
|
|
2354
|
+
to(roomName) {
|
|
2355
|
+
const electronClientsInroom = this.roomsByRoomName[roomName];
|
|
2356
|
+
return new RoomEmitterIpc(electronClientsInroom, this.name, true);
|
|
2194
2357
|
}
|
|
2195
|
-
in(
|
|
2196
|
-
|
|
2197
|
-
|
|
2198
|
-
const sendEventKey = `(${this.name}) "${event}"`;
|
|
2199
|
-
const allWindows = Electron.BrowserWindow.getAllWindows();
|
|
2200
|
-
allWindows.forEach((win, index) => {
|
|
2201
|
-
win.webContents.send(sendEventKey, ...args);
|
|
2202
|
-
});
|
|
2203
|
-
},
|
|
2204
|
-
};
|
|
2358
|
+
in(roomName) {
|
|
2359
|
+
const electronClientsInroom = this.roomsByRoomName[roomName];
|
|
2360
|
+
return new RoomEmitterIpc(electronClientsInroom, this.name, false);
|
|
2205
2361
|
}
|
|
2206
|
-
join(webContents,
|
|
2207
|
-
if (!this.
|
|
2208
|
-
this.
|
|
2362
|
+
join(webContents, roomName) {
|
|
2363
|
+
if (!this.roomsByRoomName[roomName]) {
|
|
2364
|
+
this.roomsByRoomName[roomName] = new Set();
|
|
2209
2365
|
}
|
|
2210
|
-
this.
|
|
2366
|
+
this.roomsByRoomName[roomName].add(webContents);
|
|
2211
2367
|
}
|
|
2212
|
-
leave(webContents,
|
|
2213
|
-
if (this.
|
|
2214
|
-
this.
|
|
2215
|
-
if (this.
|
|
2216
|
-
delete this.
|
|
2368
|
+
leave(webContents, roomName) {
|
|
2369
|
+
if (this.roomsByRoomName[roomName]) {
|
|
2370
|
+
this.roomsByRoomName[roomName].delete(webContents);
|
|
2371
|
+
if (this.roomsByRoomName[roomName].size === 0) {
|
|
2372
|
+
delete this.roomsByRoomName[roomName];
|
|
2217
2373
|
}
|
|
2218
2374
|
}
|
|
2219
2375
|
}
|
|
@@ -2229,117 +2385,70 @@ class IpcMainNamespace {
|
|
|
2229
2385
|
};
|
|
2230
2386
|
}
|
|
2231
2387
|
}
|
|
2232
|
-
|
|
2233
|
-
(
|
|
2234
|
-
|
|
2235
|
-
|
|
2236
|
-
|
|
2237
|
-
|
|
2238
|
-
this.
|
|
2239
|
-
|
|
2240
|
-
|
|
2241
|
-
|
|
2242
|
-
of(namespace) {
|
|
2243
|
-
if (!this.namespaces[namespace]) {
|
|
2244
|
-
this.namespaces[namespace] = new IpcMainNamespace(namespace);
|
|
2245
|
-
}
|
|
2246
|
-
return this.namespaces[namespace];
|
|
2247
|
-
}
|
|
2248
|
-
on(event, callback) {
|
|
2249
|
-
const eventKey = `(${this.contextName}) "${event}"`;
|
|
2250
|
-
this.namespaces['/'].on(eventKey, callback);
|
|
2251
|
-
}
|
|
2252
|
-
emit(event, ...args) {
|
|
2253
|
-
const eventKey = `(${this.contextName}) "${event}"`;
|
|
2254
|
-
this.namespaces['/'].emit(eventKey, ...args);
|
|
2255
|
-
}
|
|
2256
|
-
path() {
|
|
2257
|
-
return '/';
|
|
2258
|
-
}
|
|
2259
|
-
get nsp() {
|
|
2260
|
-
return {
|
|
2261
|
-
get name() {
|
|
2262
|
-
return '/';
|
|
2263
|
-
},
|
|
2264
|
-
};
|
|
2388
|
+
class RoomEmitterIpc {
|
|
2389
|
+
constructor(electronClients,
|
|
2390
|
+
/**
|
|
2391
|
+
* namespace name
|
|
2392
|
+
*/
|
|
2393
|
+
name, includeSender = false, sender = null) {
|
|
2394
|
+
this.electronClients = electronClients;
|
|
2395
|
+
this.name = name;
|
|
2396
|
+
this.includeSender = includeSender;
|
|
2397
|
+
this.sender = sender;
|
|
2265
2398
|
}
|
|
2266
|
-
|
|
2267
|
-
|
|
2268
|
-
|
|
2269
|
-
|
|
2270
|
-
|
|
2271
|
-
});
|
|
2272
|
-
},
|
|
2273
|
-
};
|
|
2399
|
+
emit(eventName, ...args) {
|
|
2400
|
+
const emitEvent = `(${this.name}) "${eventName}"`;
|
|
2401
|
+
this.electronClients?.forEach(webContents => {
|
|
2402
|
+
webContents.send(emitEvent, ...args);
|
|
2403
|
+
});
|
|
2274
2404
|
}
|
|
2275
2405
|
}
|
|
2276
|
-
|
|
2277
|
-
(
|
|
2278
|
-
|
|
2279
|
-
|
|
2280
|
-
|
|
2281
|
-
|
|
2282
|
-
|
|
2406
|
+
class MockSocketIpc {
|
|
2407
|
+
get name() {
|
|
2408
|
+
return this.namespaceName;
|
|
2409
|
+
}
|
|
2410
|
+
/**
|
|
2411
|
+
* @param namespaceName instead url for ipc
|
|
2412
|
+
*/
|
|
2413
|
+
constructor(namespaceName) {
|
|
2414
|
+
this.namespaceName = namespaceName;
|
|
2415
|
+
this.socketEventHandlers = {};
|
|
2283
2416
|
this.ipcRenderer = window.require('electron').ipcRenderer;
|
|
2284
2417
|
}
|
|
2285
2418
|
on(eventName, callback) {
|
|
2286
|
-
if (!this.
|
|
2287
|
-
this.
|
|
2419
|
+
if (!this.socketEventHandlers[eventName]) {
|
|
2420
|
+
this.socketEventHandlers[eventName] = new Set();
|
|
2288
2421
|
}
|
|
2289
|
-
this.
|
|
2422
|
+
this.socketEventHandlers[eventName].add(callback);
|
|
2290
2423
|
const listenToEvent = `(${this.name}) "${eventName}"`;
|
|
2291
|
-
this.ipcRenderer.on(listenToEvent,
|
|
2424
|
+
this.ipcRenderer.on(listenToEvent, (rendereEvent, data) => {
|
|
2425
|
+
callback(data);
|
|
2426
|
+
});
|
|
2292
2427
|
if (eventName === 'connect') {
|
|
2293
|
-
this.
|
|
2294
|
-
|
|
2295
|
-
else {
|
|
2296
|
-
this.emit(eventName);
|
|
2428
|
+
const connectionEventKey = `(${this.name}) "connection"`;
|
|
2429
|
+
this.ipcRenderer.send(connectionEventKey, this.name);
|
|
2297
2430
|
}
|
|
2298
2431
|
}
|
|
2299
2432
|
off(event, callback) {
|
|
2300
|
-
if (!this.
|
|
2433
|
+
if (!this.socketEventHandlers[event]) {
|
|
2301
2434
|
return;
|
|
2435
|
+
}
|
|
2302
2436
|
if (callback) {
|
|
2303
|
-
this.
|
|
2437
|
+
this.socketEventHandlers[event].delete(callback);
|
|
2304
2438
|
}
|
|
2305
2439
|
else {
|
|
2306
|
-
delete this.
|
|
2440
|
+
delete this.socketEventHandlers[event];
|
|
2307
2441
|
}
|
|
2308
2442
|
const removeListener = `(${this.name}) "${event}"`;
|
|
2309
|
-
this.ipcRenderer.removeListener(removeListener,
|
|
2443
|
+
this.ipcRenderer.removeListener(removeListener, data => {
|
|
2444
|
+
callback(data);
|
|
2445
|
+
});
|
|
2310
2446
|
}
|
|
2311
2447
|
emit(event, ...args) {
|
|
2312
2448
|
const emitEvent = `(${this.name}) "${event}"`;
|
|
2313
2449
|
this.ipcRenderer.send(emitEvent, ...args);
|
|
2314
2450
|
}
|
|
2315
2451
|
}
|
|
2316
|
-
;
|
|
2317
|
-
({}); // @--end-of-file-for-module=taon lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc-renderer-namespace.ts
|
|
2318
|
-
|
|
2319
|
-
class IpcRendererWrapper {
|
|
2320
|
-
constructor(contextName) {
|
|
2321
|
-
this.contextName = contextName;
|
|
2322
|
-
this.namespaces = {
|
|
2323
|
-
'/': new IpcRendererNamespace('/'),
|
|
2324
|
-
};
|
|
2325
|
-
this.connected = false;
|
|
2326
|
-
}
|
|
2327
|
-
of(namespace) {
|
|
2328
|
-
if (!this.namespaces[namespace]) {
|
|
2329
|
-
this.namespaces[namespace] = new IpcRendererNamespace(namespace);
|
|
2330
|
-
}
|
|
2331
|
-
return this.namespaces[namespace];
|
|
2332
|
-
}
|
|
2333
|
-
on(event, callback) {
|
|
2334
|
-
this.namespaces['/'].on(event, callback);
|
|
2335
|
-
}
|
|
2336
|
-
emit(event, ...args) {
|
|
2337
|
-
this.namespaces['/'].emit(event, ...args);
|
|
2338
|
-
}
|
|
2339
|
-
}
|
|
2340
|
-
;
|
|
2341
|
-
({}); // @--end-of-file-for-module=taon lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc-renderer-wrapper.ts
|
|
2342
|
-
|
|
2343
2452
|
/**
|
|
2344
2453
|
* Purpose:
|
|
2345
2454
|
* - backend-browser communication between 2 processes in electron mode
|
|
@@ -2348,220 +2457,222 @@ class RealtimeStrategyIpc extends RealtimeStrategy {
|
|
|
2348
2457
|
toString() {
|
|
2349
2458
|
return 'ipc';
|
|
2350
2459
|
}
|
|
2351
|
-
establishConnection() {
|
|
2352
|
-
throw new Error('Method not implemented.');
|
|
2353
|
-
}
|
|
2354
2460
|
constructor(ctx) {
|
|
2355
2461
|
super(ctx);
|
|
2356
2462
|
this.ctx = ctx;
|
|
2357
|
-
this.contextsServers = {};
|
|
2358
|
-
this.contextsIO = {};
|
|
2359
2463
|
}
|
|
2360
|
-
|
|
2361
|
-
|
|
2362
|
-
|
|
2363
|
-
|
|
2364
|
-
}
|
|
2365
|
-
const wrap = new IpcRendererWrapper(this.ctx.contextName);
|
|
2366
|
-
const nsp = wrap.of(namespacePath);
|
|
2367
|
-
this.contextsIO[namespacePath] = nsp;
|
|
2368
|
-
return nsp;
|
|
2369
|
-
});
|
|
2370
|
-
return void 0;
|
|
2464
|
+
ioServer(__, opt) {
|
|
2465
|
+
const namespace = opt?.path || '/';
|
|
2466
|
+
const server = MockServerIpc.from(this.ctx.contextName);
|
|
2467
|
+
return server.of(namespace);
|
|
2371
2468
|
}
|
|
2372
|
-
get
|
|
2373
|
-
|
|
2374
|
-
|
|
2375
|
-
|
|
2376
|
-
|
|
2377
|
-
|
|
2378
|
-
const nsp = wrap.of(namespacePath);
|
|
2379
|
-
this.contextsServers[namespacePath] = nsp;
|
|
2380
|
-
return nsp;
|
|
2381
|
-
});
|
|
2382
|
-
return void 0;
|
|
2469
|
+
get ioClient() {
|
|
2470
|
+
const clientIo = (__, opt) => {
|
|
2471
|
+
const namespace = opt?.path || '/';
|
|
2472
|
+
return new MockSocketIpc(namespace);
|
|
2473
|
+
};
|
|
2474
|
+
return clientIo;
|
|
2383
2475
|
}
|
|
2384
2476
|
}
|
|
2385
2477
|
;
|
|
2386
2478
|
({}); // @--end-of-file-for-module=taon lib/realtime/realtime-strategy/realtime-strategy-ipc.ts
|
|
2387
2479
|
|
|
2388
|
-
class
|
|
2389
|
-
|
|
2390
|
-
|
|
2391
|
-
|
|
2392
|
-
|
|
2393
|
-
this.sockets = new Set();
|
|
2394
|
-
}
|
|
2395
|
-
on(event, callback) {
|
|
2396
|
-
if (event === 'connection') {
|
|
2397
|
-
this.sockets.forEach(socket => callback(socket));
|
|
2480
|
+
class MockServer {
|
|
2481
|
+
static { this.serverByUrl = new Map(); }
|
|
2482
|
+
static from(url) {
|
|
2483
|
+
if (!MockServer.serverByUrl.has(url)) {
|
|
2484
|
+
MockServer.serverByUrl.set(url, new MockServer(url));
|
|
2398
2485
|
}
|
|
2486
|
+
return MockServer.serverByUrl.get(url);
|
|
2399
2487
|
}
|
|
2400
|
-
|
|
2401
|
-
|
|
2402
|
-
}
|
|
2403
|
-
to(room) {
|
|
2404
|
-
return {
|
|
2405
|
-
emit: (event, data) => {
|
|
2406
|
-
if (this.rooms[room]) {
|
|
2407
|
-
this.rooms[room].forEach(socket => socket.emit(event, data));
|
|
2408
|
-
}
|
|
2409
|
-
}
|
|
2410
|
-
};
|
|
2488
|
+
get allServers() {
|
|
2489
|
+
return Array.from(MockServer.serverByUrl.values());
|
|
2411
2490
|
}
|
|
2412
|
-
|
|
2413
|
-
|
|
2414
|
-
|
|
2415
|
-
|
|
2416
|
-
this.rooms[room].add(socket);
|
|
2491
|
+
constructor(url) {
|
|
2492
|
+
this.url = url;
|
|
2493
|
+
this.namespacesByName = new Map();
|
|
2494
|
+
MockServer.serverByUrl.set(url, this);
|
|
2417
2495
|
}
|
|
2418
|
-
|
|
2419
|
-
if (this.
|
|
2420
|
-
this.
|
|
2421
|
-
if (this.rooms[room].size === 0) {
|
|
2422
|
-
delete this.rooms[room];
|
|
2423
|
-
}
|
|
2496
|
+
of(namespace) {
|
|
2497
|
+
if (!this.namespacesByName.has(namespace)) {
|
|
2498
|
+
this.namespacesByName.set(namespace, new MockNamespace(namespace, this));
|
|
2424
2499
|
}
|
|
2500
|
+
return this.namespacesByName.get(namespace);
|
|
2425
2501
|
}
|
|
2426
|
-
|
|
2427
|
-
this.
|
|
2428
|
-
}
|
|
2429
|
-
removeSocket(socket) {
|
|
2430
|
-
this.sockets.delete(socket);
|
|
2502
|
+
path() {
|
|
2503
|
+
return this.url;
|
|
2431
2504
|
}
|
|
2432
2505
|
}
|
|
2433
|
-
|
|
2434
|
-
(
|
|
2435
|
-
|
|
2436
|
-
|
|
2437
|
-
|
|
2438
|
-
|
|
2439
|
-
this.
|
|
2440
|
-
this.
|
|
2441
|
-
|
|
2442
|
-
|
|
2443
|
-
|
|
2444
|
-
|
|
2445
|
-
|
|
2446
|
-
|
|
2447
|
-
|
|
2506
|
+
class MockNamespace {
|
|
2507
|
+
constructor(
|
|
2508
|
+
/**
|
|
2509
|
+
* unique namespace name
|
|
2510
|
+
*/
|
|
2511
|
+
name, server) {
|
|
2512
|
+
this.name = name;
|
|
2513
|
+
this.server = server;
|
|
2514
|
+
/**
|
|
2515
|
+
* All sockets connected to this namespace
|
|
2516
|
+
*/
|
|
2517
|
+
this.allSocketsForNamespace = new Set();
|
|
2518
|
+
/**
|
|
2519
|
+
* Rooms and their sockets
|
|
2520
|
+
*/
|
|
2521
|
+
this.socketByRoomName = {};
|
|
2522
|
+
/**
|
|
2523
|
+
* Event handlers for this namespace
|
|
2524
|
+
*/
|
|
2525
|
+
this.namespaceEventHandlers = {};
|
|
2448
2526
|
}
|
|
2449
|
-
|
|
2450
|
-
if (!this.
|
|
2451
|
-
|
|
2452
|
-
|
|
2453
|
-
this.listeners[event] = this.listeners[event].filter(listener => listener !== callback);
|
|
2527
|
+
on(eventName, handler) {
|
|
2528
|
+
if (!this.namespaceEventHandlers[eventName]) {
|
|
2529
|
+
this.namespaceEventHandlers[eventName] =
|
|
2530
|
+
new Set();
|
|
2454
2531
|
}
|
|
2455
|
-
|
|
2456
|
-
|
|
2532
|
+
if (!this.namespaceEventHandlers[eventName].has(handler)) {
|
|
2533
|
+
this.namespaceEventHandlers[eventName].add(handler);
|
|
2457
2534
|
}
|
|
2458
|
-
|
|
2459
|
-
|
|
2460
|
-
|
|
2461
|
-
|
|
2535
|
+
if (eventName === 'connection') {
|
|
2536
|
+
setTimeout(() => {
|
|
2537
|
+
this.emit('connection', this);
|
|
2538
|
+
});
|
|
2462
2539
|
}
|
|
2463
2540
|
}
|
|
2464
|
-
|
|
2465
|
-
this.
|
|
2541
|
+
emit(event, ...args) {
|
|
2542
|
+
this.allSocketsForNamespace?.forEach(socket => {
|
|
2543
|
+
socket.emit(event, ...args);
|
|
2544
|
+
});
|
|
2466
2545
|
}
|
|
2467
|
-
|
|
2468
|
-
this.
|
|
2546
|
+
connect(socket) {
|
|
2547
|
+
this.allSocketsForNamespace.add(socket);
|
|
2548
|
+
socket.namespaceInstance = this;
|
|
2469
2549
|
}
|
|
2470
|
-
|
|
2471
|
-
this.
|
|
2472
|
-
|
|
2473
|
-
this.listeners = {};
|
|
2550
|
+
to(roomName) {
|
|
2551
|
+
const socketsInRoom = this.socketByRoomName[roomName];
|
|
2552
|
+
return new RoomEmitter(socketsInRoom, true);
|
|
2474
2553
|
}
|
|
2475
|
-
|
|
2476
|
-
;
|
|
2477
|
-
(
|
|
2478
|
-
|
|
2479
|
-
class MockServer {
|
|
2480
|
-
constructor(contextName) {
|
|
2481
|
-
this.contextName = contextName;
|
|
2482
|
-
this.namespaces = {
|
|
2483
|
-
'/': new MockNamespace('/', this.contextName)
|
|
2484
|
-
};
|
|
2554
|
+
in(roomName) {
|
|
2555
|
+
const socketsInRoom = this.socketByRoomName[roomName];
|
|
2556
|
+
return new RoomEmitter(socketsInRoom, false);
|
|
2485
2557
|
}
|
|
2486
|
-
|
|
2487
|
-
if (!this.
|
|
2488
|
-
this.
|
|
2558
|
+
joinRoom(roomName, socket) {
|
|
2559
|
+
if (!this.socketByRoomName[roomName]) {
|
|
2560
|
+
this.socketByRoomName[roomName] = new Set();
|
|
2489
2561
|
}
|
|
2490
|
-
|
|
2562
|
+
this.socketByRoomName[roomName].add(socket);
|
|
2491
2563
|
}
|
|
2492
|
-
|
|
2493
|
-
|
|
2494
|
-
|
|
2564
|
+
leaveRoom(roomName, socket) {
|
|
2565
|
+
const roomSockets = this.socketByRoomName[roomName];
|
|
2566
|
+
if (roomSockets) {
|
|
2567
|
+
this.socketByRoomName[roomName].delete(socket);
|
|
2495
2568
|
}
|
|
2496
2569
|
}
|
|
2497
|
-
|
|
2498
|
-
this
|
|
2570
|
+
get nsp() {
|
|
2571
|
+
const self = this;
|
|
2572
|
+
return {
|
|
2573
|
+
get name() {
|
|
2574
|
+
return self.name;
|
|
2575
|
+
},
|
|
2576
|
+
};
|
|
2499
2577
|
}
|
|
2500
|
-
|
|
2501
|
-
|
|
2502
|
-
const socket = new MockSocket(id, ns);
|
|
2503
|
-
ns.on('connection', (socket) => {
|
|
2504
|
-
socket.emit('connect');
|
|
2505
|
-
});
|
|
2506
|
-
return socket;
|
|
2578
|
+
path() {
|
|
2579
|
+
return this.name;
|
|
2507
2580
|
}
|
|
2508
2581
|
}
|
|
2509
|
-
|
|
2510
|
-
(
|
|
2511
|
-
|
|
2512
|
-
|
|
2513
|
-
|
|
2514
|
-
this.serverSocket = serverSocket;
|
|
2515
|
-
this.contextName = contextName;
|
|
2516
|
-
this.listeners = {};
|
|
2517
|
-
serverSocket.on('message', (data) => this.emit('message', data));
|
|
2582
|
+
class RoomEmitter {
|
|
2583
|
+
constructor(sockets, includeSender = false, sender = null) {
|
|
2584
|
+
this.sockets = sockets;
|
|
2585
|
+
this.includeSender = includeSender;
|
|
2586
|
+
this.sender = sender;
|
|
2518
2587
|
}
|
|
2519
|
-
|
|
2520
|
-
|
|
2521
|
-
this.
|
|
2522
|
-
|
|
2523
|
-
|
|
2588
|
+
emit(event, ...args) {
|
|
2589
|
+
this.sockets?.forEach(socket => {
|
|
2590
|
+
if (this.includeSender || socket !== this.sender) {
|
|
2591
|
+
socket.emit(event, ...args);
|
|
2592
|
+
}
|
|
2593
|
+
});
|
|
2524
2594
|
}
|
|
2525
|
-
|
|
2526
|
-
|
|
2527
|
-
|
|
2528
|
-
|
|
2529
|
-
this.listeners[event] = this.listeners[event].filter(listener => listener !== callback);
|
|
2530
|
-
}
|
|
2531
|
-
else {
|
|
2532
|
-
delete this.listeners[event];
|
|
2533
|
-
}
|
|
2595
|
+
}
|
|
2596
|
+
class MockSocket {
|
|
2597
|
+
get id() {
|
|
2598
|
+
return this.nsp.name;
|
|
2534
2599
|
}
|
|
2535
|
-
|
|
2536
|
-
this.
|
|
2537
|
-
|
|
2538
|
-
|
|
2539
|
-
|
|
2600
|
+
constructor(url, opts) {
|
|
2601
|
+
this.url = url;
|
|
2602
|
+
this.socketEventHandlers = {};
|
|
2603
|
+
// @ts-ignore
|
|
2604
|
+
const [baseUrl, namespace] = [url, opts.path || '/'];
|
|
2605
|
+
const namespaceName = namespace || '/';
|
|
2606
|
+
const server = MockServer.from(url);
|
|
2607
|
+
const ns = server.of(namespaceName);
|
|
2608
|
+
ns.connect(this);
|
|
2540
2609
|
}
|
|
2541
|
-
|
|
2542
|
-
this
|
|
2543
|
-
|
|
2610
|
+
get nsp() {
|
|
2611
|
+
const self = this;
|
|
2612
|
+
return {
|
|
2613
|
+
get name() {
|
|
2614
|
+
return self.namespaceInstance?.name;
|
|
2615
|
+
},
|
|
2616
|
+
};
|
|
2544
2617
|
}
|
|
2545
|
-
|
|
2546
|
-
this.
|
|
2618
|
+
path() {
|
|
2619
|
+
return this.namespaceInstance?.name;
|
|
2547
2620
|
}
|
|
2548
|
-
|
|
2549
|
-
this.
|
|
2621
|
+
on(eventName, handler) {
|
|
2622
|
+
if (!this.socketEventHandlers[eventName]) {
|
|
2623
|
+
this.socketEventHandlers[eventName] =
|
|
2624
|
+
new Set();
|
|
2625
|
+
}
|
|
2626
|
+
this.socketEventHandlers[eventName].add(handler);
|
|
2627
|
+
if (eventName === 'connect') {
|
|
2628
|
+
setTimeout(() => {
|
|
2629
|
+
this.emit('connect');
|
|
2630
|
+
});
|
|
2631
|
+
}
|
|
2632
|
+
}
|
|
2633
|
+
emit(eventName, ...args) {
|
|
2634
|
+
eventName = eventName || '';
|
|
2635
|
+
if (eventName.includes(`:${Symbols.REALTIME.KEYroomSubscribe}`)) {
|
|
2636
|
+
const room = args[0];
|
|
2637
|
+
this.join(room);
|
|
2638
|
+
}
|
|
2639
|
+
else if (eventName.includes(`:${Symbols.REALTIME.KEYroomUnsubscribe}`)) {
|
|
2640
|
+
const room = args[0];
|
|
2641
|
+
this.leave(room);
|
|
2642
|
+
}
|
|
2643
|
+
else {
|
|
2644
|
+
if (this.namespaceInstance) {
|
|
2645
|
+
const namespaceEventHandlers = this.namespaceInstance.namespaceEventHandlers[eventName] || [];
|
|
2646
|
+
for (const namespaceEventHandler of namespaceEventHandlers) {
|
|
2647
|
+
if (namespaceEventHandler) {
|
|
2648
|
+
namespaceEventHandler(...args);
|
|
2649
|
+
}
|
|
2650
|
+
}
|
|
2651
|
+
const allSocketsForNamespaceExceptCurrent = Array.from(this.namespaceInstance.allSocketsForNamespace.values()).filter(socket => socket !== this);
|
|
2652
|
+
for (const socket of allSocketsForNamespaceExceptCurrent) {
|
|
2653
|
+
const socketEventHandlers = socket.socketEventHandlers[eventName];
|
|
2654
|
+
for (const socketEventHandler of socketEventHandlers) {
|
|
2655
|
+
if (socketEventHandler) {
|
|
2656
|
+
socketEventHandler(...args);
|
|
2657
|
+
}
|
|
2658
|
+
}
|
|
2659
|
+
}
|
|
2660
|
+
const socketEventHandlers = this.socketEventHandlers[eventName] || [];
|
|
2661
|
+
for (const clientHandler of socketEventHandlers) {
|
|
2662
|
+
if (clientHandler) {
|
|
2663
|
+
clientHandler(...args);
|
|
2664
|
+
}
|
|
2665
|
+
}
|
|
2666
|
+
}
|
|
2667
|
+
}
|
|
2668
|
+
}
|
|
2669
|
+
join(roomName) {
|
|
2670
|
+
this.namespaceInstance.joinRoom(roomName, this);
|
|
2671
|
+
}
|
|
2672
|
+
leave(roomName) {
|
|
2673
|
+
this.namespaceInstance.leaveRoom(roomName, this);
|
|
2550
2674
|
}
|
|
2551
2675
|
}
|
|
2552
|
-
function mockIo(server) {
|
|
2553
|
-
return (namespace = '/') => {
|
|
2554
|
-
const socketId = Math.random().toString(36).substring(2);
|
|
2555
|
-
const serverSocket = server.connect(socketId, namespace);
|
|
2556
|
-
return new MockClientSocket(serverSocket, server.contextName);
|
|
2557
|
-
};
|
|
2558
|
-
}
|
|
2559
|
-
;
|
|
2560
|
-
({}); // @--end-of-file-for-module=taon lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock-client.ts
|
|
2561
|
-
|
|
2562
|
-
;
|
|
2563
|
-
({}); // @--end-of-file-for-module=taon lib/realtime/realtime-strategy/realtime-strategy-mock-models/index.ts
|
|
2564
|
-
|
|
2565
2676
|
/**
|
|
2566
2677
|
* Purpose:
|
|
2567
2678
|
* - browser-browser communication mock (in websql mode)
|
|
@@ -2574,15 +2685,15 @@ class RealtimeStrategyMock extends RealtimeStrategy {
|
|
|
2574
2685
|
super(ctx);
|
|
2575
2686
|
this.ctx = ctx;
|
|
2576
2687
|
}
|
|
2577
|
-
|
|
2578
|
-
|
|
2579
|
-
|
|
2580
|
-
;
|
|
2581
|
-
get io() {
|
|
2582
|
-
return mockIo;
|
|
2688
|
+
ioServer(url, opt) {
|
|
2689
|
+
const server = MockServer.from(url || this.ctx.uri.origin);
|
|
2690
|
+
return server.of(opt?.path || '/');
|
|
2583
2691
|
}
|
|
2584
|
-
|
|
2585
|
-
|
|
2692
|
+
get ioClient() {
|
|
2693
|
+
const clientIo = (uri, opts) => {
|
|
2694
|
+
return new MockSocket(uri || this.ctx.uri.origin, opts);
|
|
2695
|
+
};
|
|
2696
|
+
return clientIo;
|
|
2586
2697
|
}
|
|
2587
2698
|
}
|
|
2588
2699
|
;
|
|
@@ -2601,18 +2712,14 @@ class RealtimeStrategySocketIO extends RealtimeStrategy {
|
|
|
2601
2712
|
super(ctx);
|
|
2602
2713
|
this.ctx = ctx;
|
|
2603
2714
|
}
|
|
2604
|
-
|
|
2715
|
+
ioServer(...args) {
|
|
2605
2716
|
/* */
|
|
2606
2717
|
/* */
|
|
2607
2718
|
return (void 0);
|
|
2608
2719
|
}
|
|
2609
|
-
|
|
2610
|
-
get io() {
|
|
2720
|
+
get ioClient() {
|
|
2611
2721
|
return io;
|
|
2612
2722
|
}
|
|
2613
|
-
establishConnection() {
|
|
2614
|
-
throw new Error('Method not implemented.');
|
|
2615
|
-
}
|
|
2616
2723
|
}
|
|
2617
2724
|
;
|
|
2618
2725
|
({}); // @--end-of-file-for-module=taon lib/realtime/realtime-strategy/realtime-strategy-socket-io.ts
|
|
@@ -2639,14 +2746,22 @@ class RealtimeCore {
|
|
|
2639
2746
|
'OPTIONS',
|
|
2640
2747
|
'HEAD',
|
|
2641
2748
|
];
|
|
2749
|
+
this.ctx = ctx;
|
|
2642
2750
|
this.strategy = this.resolveStrategy();
|
|
2643
|
-
ctx.
|
|
2751
|
+
this.ctx.logRealtime &&
|
|
2644
2752
|
console.log(`[taon] realtime strategy: ${this.strategy}`);
|
|
2645
|
-
|
|
2646
|
-
|
|
2753
|
+
if (Helpers.isWebSQL) {
|
|
2754
|
+
this.server = new RealtimeServer(this);
|
|
2755
|
+
this.client = new RealtimeClient(this);
|
|
2756
|
+
}
|
|
2757
|
+
else {
|
|
2758
|
+
this.client = new RealtimeClient(this);
|
|
2759
|
+
this.server = new RealtimeServer(this);
|
|
2760
|
+
}
|
|
2647
2761
|
}
|
|
2648
2762
|
resolveStrategy() {
|
|
2649
|
-
if (this.ctx.mode === 'backend-frontend(websql)'
|
|
2763
|
+
if (this.ctx.mode === 'backend-frontend(websql)' ||
|
|
2764
|
+
this.ctx.mode === 'backend-frontend(websql-electron)') {
|
|
2650
2765
|
return new RealtimeStrategyMock(this.ctx);
|
|
2651
2766
|
}
|
|
2652
2767
|
if (this.ctx.mode === 'backend-frontend(ipc-electron)') {
|
|
@@ -2659,189 +2774,22 @@ class RealtimeCore {
|
|
|
2659
2774
|
let nsp = namespace ? namespace : '';
|
|
2660
2775
|
nsp = nsp === '/' ? '' : nsp;
|
|
2661
2776
|
const pathname = uri.pathname !== '/' ? uri.pathname : '';
|
|
2662
|
-
let prefix = `taonContext
|
|
2777
|
+
let prefix = `taonContext`;
|
|
2663
2778
|
if (Helpers.isElectron) {
|
|
2664
2779
|
prefix = ``;
|
|
2665
2780
|
}
|
|
2666
|
-
const href = `${uri.origin}${pathname}/${prefix}${nsp}`;
|
|
2781
|
+
const href = `${uri.origin}${pathname}/${prefix}${prefix && nsp ? '-' + nsp : nsp}`;
|
|
2667
2782
|
return new URL(href);
|
|
2668
2783
|
}
|
|
2669
2784
|
}
|
|
2670
2785
|
;
|
|
2671
2786
|
({}); // @--end-of-file-for-module=taon lib/realtime/realtime-core.ts
|
|
2672
2787
|
|
|
2673
|
-
class TaonSubscriberOptions extends Models.DecoratorAbstractOpt {
|
|
2674
|
-
}
|
|
2675
|
-
function TaonSubscriber(options) {
|
|
2676
|
-
return function (constructor) {
|
|
2677
|
-
Reflect.defineMetadata(Symbols.metadata.options.repository, options, constructor);
|
|
2678
|
-
Reflect.defineMetadata(Symbols.metadata.className, options?.className || constructor.name, constructor);
|
|
2679
|
-
ClassHelpers.setName(constructor, options?.className);
|
|
2680
|
-
return class extends constructor {
|
|
2681
|
-
constructor(...args) {
|
|
2682
|
-
super(...args);
|
|
2683
|
-
const methodNamesAll = ClassHelpers.getMethodsNames(constructor.prototype);
|
|
2684
|
-
const methodNames = methodNamesAll.filter(m => {
|
|
2685
|
-
return (!['__trigger_event__', 'clone'].includes(m) &&
|
|
2686
|
-
!m.startsWith('_') &&
|
|
2687
|
-
!m.startsWith('inject'));
|
|
2688
|
-
});
|
|
2689
|
-
methodNames.forEach(methodName => {
|
|
2690
|
-
const originalMethod = this[methodName];
|
|
2691
|
-
this[methodName] = async (...methodArgs) => {
|
|
2692
|
-
const result = originalMethod.apply(this, methodArgs);
|
|
2693
|
-
if (result instanceof Promise) {
|
|
2694
|
-
await result;
|
|
2695
|
-
}
|
|
2696
|
-
if (options.allowedEvents === undefined ||
|
|
2697
|
-
options.allowedEvents.includes(methodName)) {
|
|
2698
|
-
// @ts-ignore
|
|
2699
|
-
this.__trigger_event__(methodName);
|
|
2700
|
-
}
|
|
2701
|
-
return result;
|
|
2702
|
-
};
|
|
2703
|
-
});
|
|
2704
|
-
}
|
|
2705
|
-
};
|
|
2706
|
-
};
|
|
2707
|
-
}
|
|
2708
|
-
;
|
|
2709
|
-
({}); // @--end-of-file-for-module=taon lib/decorators/classes/subscriber-decorator.ts
|
|
2710
|
-
|
|
2711
|
-
let BaseSubscriberForEntity = class BaseSubscriberForEntity extends BaseInjector {
|
|
2712
|
-
/**
|
|
2713
|
-
* Called after entity is loaded.
|
|
2714
|
-
*/
|
|
2715
|
-
afterLoad(entity) {
|
|
2716
|
-
console.log(`AFTER ENTITY LOADED: `, entity);
|
|
2717
|
-
}
|
|
2718
|
-
/**
|
|
2719
|
-
* Called before query execution.
|
|
2720
|
-
*/
|
|
2721
|
-
beforeQuery(event) {
|
|
2722
|
-
console.log(`BEFORE QUERY: `, event.query);
|
|
2723
|
-
}
|
|
2724
|
-
/**
|
|
2725
|
-
* Called after query execution.
|
|
2726
|
-
*/
|
|
2727
|
-
afterQuery(event) {
|
|
2728
|
-
console.log(`AFTER QUERY: `, event.query);
|
|
2729
|
-
}
|
|
2730
|
-
/**
|
|
2731
|
-
* Called before entity insertion.
|
|
2732
|
-
*/
|
|
2733
|
-
beforeInsert(event) {
|
|
2734
|
-
console.log(`BEFORE ENTITY INSERTED: `, event.entity);
|
|
2735
|
-
}
|
|
2736
|
-
/**
|
|
2737
|
-
* Called after entity insertion.
|
|
2738
|
-
*/
|
|
2739
|
-
afterInsert(event) {
|
|
2740
|
-
console.log(`AFTER ENTITY INSERTED: `, event.entity);
|
|
2741
|
-
}
|
|
2742
|
-
/**
|
|
2743
|
-
* Called before entity update.
|
|
2744
|
-
*/
|
|
2745
|
-
beforeUpdate(event) {
|
|
2746
|
-
console.log(`BEFORE ENTITY UPDATED: `, event.entity);
|
|
2747
|
-
}
|
|
2748
|
-
/**
|
|
2749
|
-
* Called after entity update.
|
|
2750
|
-
*/
|
|
2751
|
-
afterUpdate(event) {
|
|
2752
|
-
console.log(`AFTER ENTITY UPDATED: `, event.entity);
|
|
2753
|
-
}
|
|
2754
|
-
/**
|
|
2755
|
-
* Called before entity removal.
|
|
2756
|
-
*/
|
|
2757
|
-
beforeRemove(event) {
|
|
2758
|
-
console.log(`BEFORE ENTITY WITH ID ${event.entityId} REMOVED: `, event.entity);
|
|
2759
|
-
}
|
|
2760
|
-
/**
|
|
2761
|
-
* Called after entity removal.
|
|
2762
|
-
*/
|
|
2763
|
-
afterRemove(event) {
|
|
2764
|
-
console.log(`AFTER ENTITY WITH ID ${event.entityId} REMOVED: `, event.entity);
|
|
2765
|
-
}
|
|
2766
|
-
/**
|
|
2767
|
-
* Called before entity removal.
|
|
2768
|
-
*/
|
|
2769
|
-
beforeSoftRemove(event) {
|
|
2770
|
-
console.log(`BEFORE ENTITY WITH ID ${event.entityId} SOFT REMOVED: `, event.entity);
|
|
2771
|
-
}
|
|
2772
|
-
/**
|
|
2773
|
-
* Called after entity removal.
|
|
2774
|
-
*/
|
|
2775
|
-
afterSoftRemove(event) {
|
|
2776
|
-
console.log(`AFTER ENTITY WITH ID ${event.entityId} SOFT REMOVED: `, event.entity);
|
|
2777
|
-
}
|
|
2778
|
-
/**
|
|
2779
|
-
* Called before entity recovery.
|
|
2780
|
-
*/
|
|
2781
|
-
beforeRecover(event) {
|
|
2782
|
-
console.log(`BEFORE ENTITY WITH ID ${event.entityId} RECOVERED: `, event.entity);
|
|
2783
|
-
}
|
|
2784
|
-
/**
|
|
2785
|
-
* Called after entity recovery.
|
|
2786
|
-
*/
|
|
2787
|
-
afterRecover(event) {
|
|
2788
|
-
console.log(`AFTER ENTITY WITH ID ${event.entityId} RECOVERED: `, event.entity);
|
|
2789
|
-
}
|
|
2790
|
-
/**
|
|
2791
|
-
* Called before transaction start.
|
|
2792
|
-
*/
|
|
2793
|
-
beforeTransactionStart(event) {
|
|
2794
|
-
console.log(`BEFORE TRANSACTION STARTED: `, event);
|
|
2795
|
-
}
|
|
2796
|
-
/**
|
|
2797
|
-
* Called after transaction start.
|
|
2798
|
-
*/
|
|
2799
|
-
afterTransactionStart(event) {
|
|
2800
|
-
console.log(`AFTER TRANSACTION STARTED: `, event);
|
|
2801
|
-
}
|
|
2802
|
-
/**
|
|
2803
|
-
* Called before transaction commit.
|
|
2804
|
-
*/
|
|
2805
|
-
beforeTransactionCommit(event) {
|
|
2806
|
-
console.log(`BEFORE TRANSACTION COMMITTED: `, event);
|
|
2807
|
-
}
|
|
2808
|
-
/**
|
|
2809
|
-
* Called after transaction commit.
|
|
2810
|
-
*/
|
|
2811
|
-
afterTransactionCommit(event) {
|
|
2812
|
-
console.log(`AFTER TRANSACTION COMMITTED: `, event);
|
|
2813
|
-
}
|
|
2814
|
-
/**
|
|
2815
|
-
* Called before transaction rollback.
|
|
2816
|
-
*/
|
|
2817
|
-
beforeTransactionRollback(event) {
|
|
2818
|
-
console.log(`BEFORE TRANSACTION ROLLBACK: `, event);
|
|
2819
|
-
}
|
|
2820
|
-
/**
|
|
2821
|
-
* Called after transaction rollback.
|
|
2822
|
-
*/
|
|
2823
|
-
afterTransactionRollback(event) {
|
|
2824
|
-
console.log(`AFTER TRANSACTION ROLLBACK: `, event);
|
|
2825
|
-
}
|
|
2826
|
-
};
|
|
2827
|
-
BaseSubscriberForEntity = __decorate([
|
|
2828
|
-
TaonSubscriber({
|
|
2829
|
-
className: 'BaseSubscriberForEntity',
|
|
2830
|
-
})
|
|
2831
|
-
], BaseSubscriberForEntity);
|
|
2832
|
-
;
|
|
2833
|
-
({}); // @--end-of-file-for-module=taon lib/base-classes/base-subscriber-for-entity.ts
|
|
2834
|
-
|
|
2835
2788
|
/* eslint-disable @typescript-eslint/typedef */
|
|
2836
2789
|
class EndpointContext {
|
|
2837
2790
|
static initNgZone(ngZone) {
|
|
2838
2791
|
this.ngZone = ngZone;
|
|
2839
2792
|
}
|
|
2840
|
-
static findForTraget(classFnOrObject) {
|
|
2841
|
-
const obj = ClassHelpers.getClassFnFromObject(classFnOrObject) || {};
|
|
2842
|
-
return (classFnOrObject[Symbols.ctxInClassOrClassObj] ||
|
|
2843
|
-
obj[Symbols.ctxInClassOrClassObj]);
|
|
2844
|
-
}
|
|
2845
2793
|
get realtimeClient() {
|
|
2846
2794
|
return this.realtime.client;
|
|
2847
2795
|
}
|
|
@@ -2849,25 +2797,25 @@ class EndpointContext {
|
|
|
2849
2797
|
return this.realtime.server;
|
|
2850
2798
|
}
|
|
2851
2799
|
get logHttp() {
|
|
2852
|
-
if (_.isObject(this.config?.logs)) {
|
|
2800
|
+
if (_$1.isObject(this.config?.logs)) {
|
|
2853
2801
|
return !!this.config.logs.http;
|
|
2854
2802
|
}
|
|
2855
2803
|
return this.config?.logs === true;
|
|
2856
2804
|
}
|
|
2857
2805
|
get logRealtime() {
|
|
2858
|
-
if (_.isObject(this.config?.logs)) {
|
|
2806
|
+
if (_$1.isObject(this.config?.logs)) {
|
|
2859
2807
|
return !!this.config.logs.realtime;
|
|
2860
2808
|
}
|
|
2861
2809
|
return this.config?.logs === true;
|
|
2862
2810
|
}
|
|
2863
2811
|
get logFramework() {
|
|
2864
|
-
if (_.isObject(this.config?.logs)) {
|
|
2812
|
+
if (_$1.isObject(this.config?.logs)) {
|
|
2865
2813
|
return !!this.config.logs.framework;
|
|
2866
2814
|
}
|
|
2867
2815
|
return this.config?.logs === true;
|
|
2868
2816
|
}
|
|
2869
2817
|
get logDb() {
|
|
2870
|
-
if (_.isObject(this.config?.logs)) {
|
|
2818
|
+
if (_$1.isObject(this.config?.logs)) {
|
|
2871
2819
|
return !!this.config.logs.db;
|
|
2872
2820
|
}
|
|
2873
2821
|
return this.config?.logs === true;
|
|
@@ -2968,9 +2916,19 @@ class EndpointContext {
|
|
|
2968
2916
|
};
|
|
2969
2917
|
}
|
|
2970
2918
|
async init(options) {
|
|
2971
|
-
const { initFromRecrusiveContextResovle } = options || {}; // TODO use it ?
|
|
2919
|
+
const { initFromRecrusiveContextResovle, overrideHost, overrideRemoteHost } = options || {}; // TODO use it ?
|
|
2972
2920
|
this.inited = true;
|
|
2973
|
-
this.config = this.configFn(ENV);
|
|
2921
|
+
this.config = this.configFn(ENV$1);
|
|
2922
|
+
if (overrideHost && overrideRemoteHost) {
|
|
2923
|
+
if (Helpers.isWebSQL) {
|
|
2924
|
+
throw new Error(`You can't have overrideHost and overrideRemoteHost at the same time`);
|
|
2925
|
+
}
|
|
2926
|
+
Helpers.error(`You can't have overrideHost and overrideRemoteHost at the same time`, false, true);
|
|
2927
|
+
/* */
|
|
2928
|
+
/* */
|
|
2929
|
+
}
|
|
2930
|
+
this.config.host = overrideHost ? overrideHost : this.config.host;
|
|
2931
|
+
this.config.remoteHost = overrideRemoteHost ? overrideRemoteHost : this.config.remoteHost;
|
|
2974
2932
|
if (this.config.host) {
|
|
2975
2933
|
this.mode = 'backend-frontend(tcp+udp)';
|
|
2976
2934
|
this.mode = 'backend-frontend(websql)';
|
|
@@ -2982,7 +2940,12 @@ class EndpointContext {
|
|
|
2982
2940
|
this.mode = 'remote-backend(tcp+udp)';
|
|
2983
2941
|
}
|
|
2984
2942
|
if (this.config.useIpcWhenElectron && Helpers.isElectron) {
|
|
2985
|
-
|
|
2943
|
+
if (Helpers.isWebSQL) {
|
|
2944
|
+
this.mode = 'backend-frontend(websql-electron)';
|
|
2945
|
+
}
|
|
2946
|
+
else {
|
|
2947
|
+
this.mode = 'backend-frontend(ipc-electron)';
|
|
2948
|
+
}
|
|
2986
2949
|
}
|
|
2987
2950
|
if (!this.mode && !this.config.abstract) {
|
|
2988
2951
|
Helpers.error(`[taon] Context "${this.contextName}": You need to provide host or remoteHost or useIpcWhenElectron`, false, true);
|
|
@@ -2992,11 +2955,11 @@ class EndpointContext {
|
|
|
2992
2955
|
if (this.config.database === true) {
|
|
2993
2956
|
this.databaseConfig = this.getAutoGeneratedConfig();
|
|
2994
2957
|
}
|
|
2995
|
-
else if (_.isObject(this.config.database)) {
|
|
2996
|
-
this.databaseConfig = _.cloneDeep(this.config.database);
|
|
2958
|
+
else if (_$1.isObject(this.config.database)) {
|
|
2959
|
+
this.databaseConfig = _$1.cloneDeep(this.config.database);
|
|
2997
2960
|
}
|
|
2998
2961
|
if (this.config.session) {
|
|
2999
|
-
this.session = _.cloneDeep(this.config.session);
|
|
2962
|
+
this.session = _$1.cloneDeep(this.config.session);
|
|
3000
2963
|
const oneHour = 1000 * 60 * 60 * 1; // 24;
|
|
3001
2964
|
if (!this.session.cookieMaxAge) {
|
|
3002
2965
|
this.session.cookieMaxAge = oneHour;
|
|
@@ -3113,7 +3076,7 @@ class EndpointContext {
|
|
|
3113
3076
|
if (Helpers.isRunningInDocker()) {
|
|
3114
3077
|
Helpers.info('Running in docker, using in mysql database');
|
|
3115
3078
|
databaseConfig = {
|
|
3116
|
-
database: `tmp-db-${_.kebabCase(this.contextName)}.sqljs.db`,
|
|
3079
|
+
database: `tmp-db-${_$1.kebabCase(this.contextName)}.sqljs.db`,
|
|
3117
3080
|
type: 'mysql',
|
|
3118
3081
|
autoSave: true,
|
|
3119
3082
|
synchronize: true,
|
|
@@ -3131,7 +3094,7 @@ class EndpointContext {
|
|
|
3131
3094
|
switch (this.mode) {
|
|
3132
3095
|
case 'backend-frontend(ipc-electron)':
|
|
3133
3096
|
return {
|
|
3134
|
-
location: `tmp-db-${_.kebabCase(this.contextName)}.sqljs`,
|
|
3097
|
+
location: `tmp-db-${_$1.kebabCase(this.contextName)}.sqljs`,
|
|
3135
3098
|
type: 'sqljs',
|
|
3136
3099
|
autoSave: true,
|
|
3137
3100
|
synchronize: true,
|
|
@@ -3139,9 +3102,10 @@ class EndpointContext {
|
|
|
3139
3102
|
logging: this.logDb,
|
|
3140
3103
|
};
|
|
3141
3104
|
break;
|
|
3105
|
+
case 'backend-frontend(websql-electron)':
|
|
3142
3106
|
case 'backend-frontend(websql)':
|
|
3143
3107
|
databaseConfig = {
|
|
3144
|
-
location: `tmp-db-${_.kebabCase(this.contextName)}.sqljs`,
|
|
3108
|
+
location: `tmp-db-${_$1.kebabCase(this.contextName)}.sqljs`,
|
|
3145
3109
|
type: 'sqljs',
|
|
3146
3110
|
useLocalForage: true, // !!window['localforage'], // TODO this need to be checked in runtime
|
|
3147
3111
|
autoSave: true,
|
|
@@ -3163,8 +3127,8 @@ class EndpointContext {
|
|
|
3163
3127
|
break;
|
|
3164
3128
|
case 'backend-frontend(tcp+udp)':
|
|
3165
3129
|
databaseConfig = {
|
|
3166
|
-
database: `context-db-${_.kebabCase(this.contextName)}`,
|
|
3167
|
-
location: `tmp-db-${_.kebabCase(this.contextName)}.sqlite`,
|
|
3130
|
+
database: `context-db-${_$1.kebabCase(this.contextName)}`,
|
|
3131
|
+
location: `tmp-db-${_$1.kebabCase(this.contextName)}.sqlite`,
|
|
3168
3132
|
type: 'sqljs',
|
|
3169
3133
|
autoSave: true,
|
|
3170
3134
|
synchronize: true,
|
|
@@ -3194,6 +3158,9 @@ class EndpointContext {
|
|
|
3194
3158
|
/* */
|
|
3195
3159
|
/* */
|
|
3196
3160
|
/* */
|
|
3161
|
+
/* */
|
|
3162
|
+
/* */
|
|
3163
|
+
/* */
|
|
3197
3164
|
return (void 0);
|
|
3198
3165
|
}
|
|
3199
3166
|
displayRoutes(app) {
|
|
@@ -3307,8 +3274,8 @@ class EndpointContext {
|
|
|
3307
3274
|
return this.inject(ctor, { localInstance: false });
|
|
3308
3275
|
}
|
|
3309
3276
|
checkIfContextInitialized() {
|
|
3310
|
-
if (_.isUndefined(this.config)) {
|
|
3311
|
-
throw new Error(`Please check if your context has been
|
|
3277
|
+
if (_$1.isUndefined(this.config)) {
|
|
3278
|
+
throw new Error(`Please check if your context has been initialized.
|
|
3312
3279
|
|
|
3313
3280
|
|
|
3314
3281
|
await Context.initialize();
|
|
@@ -3369,9 +3336,12 @@ class EndpointContext {
|
|
|
3369
3336
|
}
|
|
3370
3337
|
}
|
|
3371
3338
|
async reinitControllers() {
|
|
3339
|
+
if (this.remoteHost) {
|
|
3340
|
+
return;
|
|
3341
|
+
}
|
|
3372
3342
|
const controllers = this.getClassesInstancesArrBy(Models.ClassType.CONTROLLER);
|
|
3373
3343
|
for (const ctrl of controllers) {
|
|
3374
|
-
if (_.isFunction(ctrl.initExampleDbData)) {
|
|
3344
|
+
if (_$1.isFunction(ctrl.initExampleDbData)) {
|
|
3375
3345
|
await Helpers.runSyncOrAsync({
|
|
3376
3346
|
functionFn: ctrl.initExampleDbData,
|
|
3377
3347
|
context: ctrl,
|
|
@@ -3380,6 +3350,9 @@ class EndpointContext {
|
|
|
3380
3350
|
}
|
|
3381
3351
|
}
|
|
3382
3352
|
async initClasses() {
|
|
3353
|
+
if (this.remoteHost) {
|
|
3354
|
+
return;
|
|
3355
|
+
}
|
|
3383
3356
|
for (const classTypeName of [
|
|
3384
3357
|
Models.ClassType.PROVIDER,
|
|
3385
3358
|
Models.ClassType.REPOSITORY,
|
|
@@ -3387,7 +3360,7 @@ class EndpointContext {
|
|
|
3387
3360
|
Models.ClassType.ENTITY,
|
|
3388
3361
|
]) {
|
|
3389
3362
|
for (const classFun of this.getClassFunByArr(classTypeName)) {
|
|
3390
|
-
if (_.isFunction(classFun._)) {
|
|
3363
|
+
if (_$1.isFunction(classFun._)) {
|
|
3391
3364
|
await Helpers.runSyncOrAsync({
|
|
3392
3365
|
functionFn: classFun._,
|
|
3393
3366
|
context: classFun,
|
|
@@ -3401,7 +3374,7 @@ class EndpointContext {
|
|
|
3401
3374
|
Models.ClassType.CONTROLLER,
|
|
3402
3375
|
]) {
|
|
3403
3376
|
for (const ctrl of this.getClassesInstancesArrBy(classTypeName)) {
|
|
3404
|
-
if (_.isFunction(ctrl._)) {
|
|
3377
|
+
if (_$1.isFunction(ctrl._)) {
|
|
3405
3378
|
await Helpers.runSyncOrAsync({
|
|
3406
3379
|
functionFn: ctrl._,
|
|
3407
3380
|
context: ctrl,
|
|
@@ -3447,30 +3420,27 @@ class EndpointContext {
|
|
|
3447
3420
|
return this.uri?.origin;
|
|
3448
3421
|
}
|
|
3449
3422
|
async initSubscribers() {
|
|
3450
|
-
|
|
3451
|
-
if (!this.connection?.initialize) {
|
|
3423
|
+
if (this.remoteHost) {
|
|
3452
3424
|
return;
|
|
3453
3425
|
}
|
|
3454
|
-
const
|
|
3455
|
-
for (const
|
|
3456
|
-
const options = Reflect.getMetadata(Symbols.metadata.options.subscriber,
|
|
3457
|
-
EventSubscriber()(
|
|
3458
|
-
}
|
|
3459
|
-
console.log(this.config.subscribers);
|
|
3460
|
-
return;
|
|
3461
|
-
const entities = this.getClassFunByArr(Models.ClassType.ENTITY);
|
|
3462
|
-
for (let index = 0; index < entities.length; index++) {
|
|
3426
|
+
const subscriberClasses = this.getClassFunByArr(Models.ClassType.SUBSCRIBER);
|
|
3427
|
+
for (const subscriberClassFn of subscriberClasses) {
|
|
3428
|
+
const options = Reflect.getMetadata(Symbols.metadata.options.subscriber, subscriberClassFn);
|
|
3429
|
+
EventSubscriber()(subscriberClassFn);
|
|
3463
3430
|
}
|
|
3464
3431
|
}
|
|
3465
3432
|
async initEntities() {
|
|
3433
|
+
if (this.remoteHost) {
|
|
3434
|
+
return;
|
|
3435
|
+
}
|
|
3466
3436
|
const entities = this.getClassFunByArr(Models.ClassType.ENTITY);
|
|
3467
3437
|
for (const entity of entities) {
|
|
3468
3438
|
const options = Reflect.getMetadata(Symbols.metadata.options.entity, entity);
|
|
3469
|
-
const createTable = _.isUndefined(options.createTable)
|
|
3439
|
+
const createTable = _$1.isUndefined(options.createTable)
|
|
3470
3440
|
? true
|
|
3471
3441
|
: options.createTable;
|
|
3472
3442
|
const nameForEntity = ClassHelpers.getName(entity);
|
|
3473
|
-
if (_.isUndefined(options.createTable) ? true : options.createTable) {
|
|
3443
|
+
if (_$1.isUndefined(options.createTable) ? true : options.createTable) {
|
|
3474
3444
|
this.logDb &&
|
|
3475
3445
|
console.info(`[taon][typeorm] create table for entity "${nameForEntity}" ? '${createTable}'`);
|
|
3476
3446
|
Entity(nameForEntity)(entity);
|
|
@@ -3482,15 +3452,18 @@ class EndpointContext {
|
|
|
3482
3452
|
}
|
|
3483
3453
|
}
|
|
3484
3454
|
async initDatabaseConnection() {
|
|
3455
|
+
if (this.remoteHost) {
|
|
3456
|
+
return;
|
|
3457
|
+
}
|
|
3485
3458
|
const entities = (this.config.override?.entities
|
|
3486
3459
|
? this.config.override.entities
|
|
3487
3460
|
: this.getClassFunByArr(Models.ClassType.ENTITY)).map(entityFn => {
|
|
3488
3461
|
return ClassHelpers.getOrginalClass(entityFn);
|
|
3489
3462
|
});
|
|
3490
|
-
const subscribers =
|
|
3463
|
+
const subscribers = this.config.override?.subscribers
|
|
3491
3464
|
? this.config.override.subscribers
|
|
3492
|
-
: this.getClassFunByArr(Models.ClassType.SUBSCRIBER)
|
|
3493
|
-
const dataSourceDbConfig = _.isObject(this.databaseConfig)
|
|
3465
|
+
: this.getClassFunByArr(Models.ClassType.SUBSCRIBER);
|
|
3466
|
+
const dataSourceDbConfig = _$1.isObject(this.databaseConfig)
|
|
3494
3467
|
? {
|
|
3495
3468
|
type: this.databaseConfig.type,
|
|
3496
3469
|
port: this.databaseConfig.databasePort,
|
|
@@ -3508,6 +3481,8 @@ class EndpointContext {
|
|
|
3508
3481
|
location: this.databaseConfig.location,
|
|
3509
3482
|
}
|
|
3510
3483
|
: {};
|
|
3484
|
+
this.logFramework &&
|
|
3485
|
+
console.log(`[Context: "${this.contextName}"] dataSourceDbConfig`, dataSourceDbConfig);
|
|
3511
3486
|
if (this.modeAllowsDatabaseCreation && this.databaseConfig) {
|
|
3512
3487
|
this.logDb &&
|
|
3513
3488
|
this.logFramework &&
|
|
@@ -3547,7 +3522,7 @@ class EndpointContext {
|
|
|
3547
3522
|
ClassHelpers.getMethodsNames(controllerClassFn);
|
|
3548
3523
|
const configs = ClassHelpers.getControllerConfigs(controllerClassFn);
|
|
3549
3524
|
const classConfig = configs[0];
|
|
3550
|
-
const parentscalculatedPath = _.slice(configs, 1)
|
|
3525
|
+
const parentscalculatedPath = _$1.slice(configs, 1)
|
|
3551
3526
|
.reverse()
|
|
3552
3527
|
.map(bc => {
|
|
3553
3528
|
if (TaonHelpers.isGoodPath(bc.path)) {
|
|
@@ -3565,13 +3540,13 @@ class EndpointContext {
|
|
|
3565
3540
|
.replace(/\/\//g, '/')
|
|
3566
3541
|
.split('/')
|
|
3567
3542
|
.reduce((acc, bc) => {
|
|
3568
|
-
return _.last(acc) === bc ? acc : [...acc, bc];
|
|
3543
|
+
return _$1.last(acc) === bc ? acc : [...acc, bc];
|
|
3569
3544
|
}, [])
|
|
3570
3545
|
.join('/');
|
|
3571
3546
|
}
|
|
3572
|
-
_.slice(configs, 1).forEach(bc => {
|
|
3547
|
+
_$1.slice(configs, 1).forEach(bc => {
|
|
3573
3548
|
const alreadyIs = classConfig.methods;
|
|
3574
|
-
const toMerge = _.cloneDeep(bc.methods);
|
|
3549
|
+
const toMerge = _$1.cloneDeep(bc.methods);
|
|
3575
3550
|
for (const key in toMerge) {
|
|
3576
3551
|
if (toMerge.hasOwnProperty(key) && !alreadyIs[key]) {
|
|
3577
3552
|
const element = toMerge[key];
|
|
@@ -3611,6 +3586,9 @@ class EndpointContext {
|
|
|
3611
3586
|
}
|
|
3612
3587
|
}
|
|
3613
3588
|
writeActiveRoutes() {
|
|
3589
|
+
if (this.remoteHost) {
|
|
3590
|
+
return;
|
|
3591
|
+
}
|
|
3614
3592
|
const contexts = [this];
|
|
3615
3593
|
const troutes = this.activeRoutes.map(({ method, routePath }) => {
|
|
3616
3594
|
return (TaonHelpers.fillUpTo(method.toUpperCase() + ':', 10) +
|
|
@@ -3624,7 +3602,7 @@ class EndpointContext {
|
|
|
3624
3602
|
const fileName = path.join(
|
|
3625
3603
|
/* */
|
|
3626
3604
|
/* */
|
|
3627
|
-
`tmp-routes-${_.kebabCase(this.config.contextName)}.json`);
|
|
3605
|
+
`tmp-routes-${_$1.kebabCase(this.config.contextName)}.json`);
|
|
3628
3606
|
this.logFramework && console.log(`[taon] routes file: ${fileName} `);
|
|
3629
3607
|
/* */
|
|
3630
3608
|
/* */
|
|
@@ -3637,7 +3615,7 @@ class EndpointContext {
|
|
|
3637
3615
|
/* */
|
|
3638
3616
|
return (void 0);
|
|
3639
3617
|
}
|
|
3640
|
-
|
|
3618
|
+
initMiddlewares() {
|
|
3641
3619
|
/* */
|
|
3642
3620
|
/* */
|
|
3643
3621
|
/* */
|
|
@@ -4047,7 +4025,7 @@ class EndpointContext {
|
|
|
4047
4025
|
method: methodConfig.type,
|
|
4048
4026
|
url: `${ctx.uri.origin}${'' // TODO express path
|
|
4049
4027
|
}${methodConfig.path} `,
|
|
4050
|
-
}, Helpers.isBlob(body) || _.isString(body)
|
|
4028
|
+
}, Helpers.isBlob(body) || _$1.isString(body)
|
|
4051
4029
|
? body
|
|
4052
4030
|
: JSON.stringify(body), RestHeaders.from(headers), void 0, () => body);
|
|
4053
4031
|
resolve(res);
|
|
@@ -4139,7 +4117,7 @@ class EndpointContext {
|
|
|
4139
4117
|
method: methodConfig.type,
|
|
4140
4118
|
url: `${ctx.uri.origin}${'' // TODO express path
|
|
4141
4119
|
}${methodConfig.path} `,
|
|
4142
|
-
}, Helpers.isBlob(body) || _.isString(body)
|
|
4120
|
+
}, Helpers.isBlob(body) || _$1.isString(body)
|
|
4143
4121
|
? body
|
|
4144
4122
|
: JSON.stringify(body), RestHeaders.from(headers), void 0, () => body);
|
|
4145
4123
|
await periods();
|
|
@@ -4226,7 +4204,7 @@ class EndpointContext {
|
|
|
4226
4204
|
if (mapping) {
|
|
4227
4205
|
rest.headers.set(Symbols.old.MAPPING_CONFIG_HEADER_QUERY_PARAMS, JSON.stringify(mapping));
|
|
4228
4206
|
}
|
|
4229
|
-
queryParams = _.cloneDeep(param);
|
|
4207
|
+
queryParams = _$1.cloneDeep(param);
|
|
4230
4208
|
}
|
|
4231
4209
|
}
|
|
4232
4210
|
if (currentParam.paramType === 'Header') {
|
|
@@ -4305,7 +4283,7 @@ instead
|
|
|
4305
4283
|
({}); // @--end-of-file-for-module=taon lib/endpoint-context.ts
|
|
4306
4284
|
|
|
4307
4285
|
const createContext = (configFn) => {
|
|
4308
|
-
let config = configFn(ENV);
|
|
4286
|
+
let config = configFn(ENV$1);
|
|
4309
4287
|
const endpointContextRef = new EndpointContext(config, configFn);
|
|
4310
4288
|
const res = {
|
|
4311
4289
|
types: {
|
|
@@ -4329,6 +4307,7 @@ const createContext = (configFn) => {
|
|
|
4329
4307
|
return config.contextName;
|
|
4330
4308
|
},
|
|
4331
4309
|
/**
|
|
4310
|
+
* @deprecated
|
|
4332
4311
|
* - get reference to internal context
|
|
4333
4312
|
*/
|
|
4334
4313
|
async __ref() {
|
|
@@ -4339,6 +4318,10 @@ const createContext = (configFn) => {
|
|
|
4339
4318
|
}
|
|
4340
4319
|
return endpointContextRef;
|
|
4341
4320
|
},
|
|
4321
|
+
/**
|
|
4322
|
+
* only for internal use
|
|
4323
|
+
* @deprecated
|
|
4324
|
+
*/
|
|
4342
4325
|
get __refSync() {
|
|
4343
4326
|
return endpointContextRef;
|
|
4344
4327
|
},
|
|
@@ -4353,10 +4336,12 @@ const createContext = (configFn) => {
|
|
|
4353
4336
|
* - create controller instances for context
|
|
4354
4337
|
* - init database (if enable) + migation scripts
|
|
4355
4338
|
*/
|
|
4356
|
-
initialize: async () => {
|
|
4339
|
+
initialize: async (overrideOptions) => {
|
|
4357
4340
|
return await new Promise(async (resolve, reject) => {
|
|
4358
4341
|
setTimeout(async () => {
|
|
4359
|
-
await endpointContextRef.init(
|
|
4342
|
+
await endpointContextRef.init({
|
|
4343
|
+
...overrideOptions,
|
|
4344
|
+
});
|
|
4360
4345
|
if (config.abstract) {
|
|
4361
4346
|
throw new Error(`Abstract context can not be initialized`);
|
|
4362
4347
|
}
|
|
@@ -4380,6 +4365,20 @@ const createContext = (configFn) => {
|
|
|
4380
4365
|
});
|
|
4381
4366
|
});
|
|
4382
4367
|
},
|
|
4368
|
+
/**
|
|
4369
|
+
* realtime communication with server
|
|
4370
|
+
* Udp socket.io (or ipc) based.
|
|
4371
|
+
*/
|
|
4372
|
+
get realtime() {
|
|
4373
|
+
return {
|
|
4374
|
+
get client() {
|
|
4375
|
+
return endpointContextRef.realtimeClient;
|
|
4376
|
+
},
|
|
4377
|
+
get server() {
|
|
4378
|
+
return endpointContextRef.realtimeServer;
|
|
4379
|
+
}
|
|
4380
|
+
};
|
|
4381
|
+
},
|
|
4383
4382
|
};
|
|
4384
4383
|
return res;
|
|
4385
4384
|
};
|
|
@@ -4402,86 +4401,226 @@ var baseContext = /*#__PURE__*/Object.freeze({
|
|
|
4402
4401
|
BaseContext: BaseContext
|
|
4403
4402
|
});
|
|
4404
4403
|
|
|
4405
|
-
|
|
4406
|
-
__trigger_event__(eventName) {
|
|
4407
|
-
const ctx = this.__endpoint_context__;
|
|
4408
|
-
console.log('Trigger event', eventName, ctx);
|
|
4409
|
-
}
|
|
4410
|
-
};
|
|
4411
|
-
BaseSubscriber = __decorate([
|
|
4412
|
-
TaonSubscriber({
|
|
4413
|
-
className: 'BaseSubscriber',
|
|
4414
|
-
})
|
|
4415
|
-
], BaseSubscriber);
|
|
4416
|
-
;
|
|
4417
|
-
({}); // @--end-of-file-for-module=taon lib/base-classes/base-subscriber.ts
|
|
4418
|
-
|
|
4419
|
-
var Base;
|
|
4420
|
-
(function (Base) {
|
|
4421
|
-
Base.Controller = BaseController;
|
|
4422
|
-
Base.CrudController = BaseCrudController;
|
|
4423
|
-
Base.Entity = BaseEntity;
|
|
4424
|
-
Base.AbstractEntity = BaseAbstractEntity;
|
|
4425
|
-
Base.Provider = BaseProvider;
|
|
4426
|
-
Base.Class = BaseClass;
|
|
4427
|
-
Base.Repository = BaseRepository;
|
|
4428
|
-
Base.Subscriber = BaseSubscriber;
|
|
4429
|
-
Base.SubscriberForEntity = BaseSubscriberForEntity;
|
|
4430
|
-
Base.Context = BaseContext;
|
|
4431
|
-
})(Base || (Base = {}));
|
|
4432
|
-
;
|
|
4433
|
-
({}); // @--end-of-file-for-module=taon lib/base-classes/base.ts
|
|
4434
|
-
|
|
4435
|
-
function TaonEntity(options) {
|
|
4436
|
-
return function (constructor) {
|
|
4437
|
-
options = options || {};
|
|
4438
|
-
options.uniqueKeyProp = options.uniqueKeyProp || 'id';
|
|
4439
|
-
ClassHelpers.setName(constructor, options?.className);
|
|
4440
|
-
Mapping.DefaultModelWithMapping(options?.defaultModelValues || {}, _.merge(options?.defaultModelMapping || {}, (options?.defaultModelMappingDeep || {})))(constructor);
|
|
4441
|
-
Mapping.DefaultModelWithMapping(void 0, {})(constructor);
|
|
4442
|
-
Reflect.defineMetadata(Symbols.metadata.options.entity, options, constructor);
|
|
4443
|
-
Reflect.defineMetadata(Symbols.metadata.className, options?.className || constructor.name, constructor);
|
|
4444
|
-
Entity(options?.className)(constructor);
|
|
4445
|
-
CLASS.setName(constructor, options?.className); // TODO QUICK_FIX for ng2-rest
|
|
4446
|
-
};
|
|
4447
|
-
}
|
|
4448
|
-
class TaonEntityOptions extends Models.DecoratorAbstractOpt {
|
|
4449
|
-
}
|
|
4450
|
-
;
|
|
4451
|
-
({}); // @--end-of-file-for-module=taon lib/decorators/classes/entity-decorator.ts
|
|
4452
|
-
|
|
4453
|
-
function TaonProvider(options) {
|
|
4404
|
+
function TaonSubscriber(options) {
|
|
4454
4405
|
return function (constructor) {
|
|
4455
|
-
Reflect.defineMetadata(Symbols.metadata.options.
|
|
4406
|
+
Reflect.defineMetadata(Symbols.metadata.options.repository, options, constructor);
|
|
4456
4407
|
Reflect.defineMetadata(Symbols.metadata.className, options?.className || constructor.name, constructor);
|
|
4457
|
-
ClassHelpers.setName(constructor, options?.className
|
|
4408
|
+
ClassHelpers.setName(constructor, options?.className);
|
|
4458
4409
|
};
|
|
4459
4410
|
}
|
|
4460
|
-
class
|
|
4411
|
+
class TaonSubscriberOptions extends Models.DecoratorAbstractOpt {
|
|
4461
4412
|
}
|
|
4462
4413
|
;
|
|
4463
|
-
({}); // @--end-of-file-for-module=taon lib/decorators/classes/
|
|
4414
|
+
({}); // @--end-of-file-for-module=taon lib/decorators/classes/subscriber-decorator.ts
|
|
4464
4415
|
|
|
4465
|
-
|
|
4466
|
-
|
|
4467
|
-
|
|
4468
|
-
|
|
4469
|
-
|
|
4470
|
-
|
|
4471
|
-
|
|
4472
|
-
|
|
4473
|
-
|
|
4474
|
-
|
|
4475
|
-
|
|
4476
|
-
|
|
4477
|
-
|
|
4478
|
-
|
|
4479
|
-
|
|
4480
|
-
|
|
4481
|
-
|
|
4482
|
-
|
|
4483
|
-
|
|
4484
|
-
|
|
4416
|
+
let BaseSubscriberForEntity = class BaseSubscriberForEntity extends BaseInjector {
|
|
4417
|
+
/**
|
|
4418
|
+
* Called after entity is loaded.
|
|
4419
|
+
*/
|
|
4420
|
+
afterLoad(entity) {
|
|
4421
|
+
this.__endpoint_context__.logDb &&
|
|
4422
|
+
console.log(`AFTER ENTITY LOADED: `, entity);
|
|
4423
|
+
}
|
|
4424
|
+
/**
|
|
4425
|
+
* Called before query execution.
|
|
4426
|
+
*/
|
|
4427
|
+
beforeQuery(event) {
|
|
4428
|
+
this.__endpoint_context__.logDb &&
|
|
4429
|
+
console.log(`BEFORE QUERY: `, event.query);
|
|
4430
|
+
}
|
|
4431
|
+
/**
|
|
4432
|
+
* Called after query execution.
|
|
4433
|
+
*/
|
|
4434
|
+
afterQuery(event) {
|
|
4435
|
+
this.__endpoint_context__.logDb &&
|
|
4436
|
+
console.log(`AFTER QUERY: `, event.query);
|
|
4437
|
+
}
|
|
4438
|
+
/**
|
|
4439
|
+
* Called before entity insertion.
|
|
4440
|
+
*/
|
|
4441
|
+
beforeInsert(event) {
|
|
4442
|
+
this.__endpoint_context__.logDb &&
|
|
4443
|
+
console.log(`BEFORE ENTITY INSERTED: `, event.entity);
|
|
4444
|
+
}
|
|
4445
|
+
/**
|
|
4446
|
+
* Called after entity insertion.
|
|
4447
|
+
*/
|
|
4448
|
+
afterInsert(event) {
|
|
4449
|
+
this.__endpoint_context__.logDb &&
|
|
4450
|
+
console.log(`AFTER ENTITY INSERTED: `, event.entity);
|
|
4451
|
+
}
|
|
4452
|
+
/**
|
|
4453
|
+
* Called before entity update.
|
|
4454
|
+
*/
|
|
4455
|
+
beforeUpdate(event) {
|
|
4456
|
+
this.__endpoint_context__.logDb &&
|
|
4457
|
+
console.log(`BEFORE ENTITY UPDATED: `, event.entity);
|
|
4458
|
+
}
|
|
4459
|
+
/**
|
|
4460
|
+
* Called after entity update.
|
|
4461
|
+
*/
|
|
4462
|
+
afterUpdate(event) {
|
|
4463
|
+
this.__endpoint_context__.logDb &&
|
|
4464
|
+
console.log(`AFTER ENTITY UPDATED: `, event.entity);
|
|
4465
|
+
}
|
|
4466
|
+
/**
|
|
4467
|
+
* Called before entity removal.
|
|
4468
|
+
*/
|
|
4469
|
+
beforeRemove(event) {
|
|
4470
|
+
this.__endpoint_context__.logDb &&
|
|
4471
|
+
console.log(`BEFORE ENTITY WITH ID ${event.entityId} REMOVED: `, event.entity);
|
|
4472
|
+
}
|
|
4473
|
+
/**
|
|
4474
|
+
* Called after entity removal.
|
|
4475
|
+
*/
|
|
4476
|
+
afterRemove(event) {
|
|
4477
|
+
this.__endpoint_context__.logDb &&
|
|
4478
|
+
console.log(`AFTER ENTITY WITH ID ${event.entityId} REMOVED: `, event.entity);
|
|
4479
|
+
}
|
|
4480
|
+
/**
|
|
4481
|
+
* Called before entity removal.
|
|
4482
|
+
*/
|
|
4483
|
+
beforeSoftRemove(event) {
|
|
4484
|
+
this.__endpoint_context__.logDb &&
|
|
4485
|
+
console.log(`BEFORE ENTITY WITH ID ${event.entityId} SOFT REMOVED: `, event.entity);
|
|
4486
|
+
}
|
|
4487
|
+
/**
|
|
4488
|
+
* Called after entity removal.
|
|
4489
|
+
*/
|
|
4490
|
+
afterSoftRemove(event) {
|
|
4491
|
+
this.__endpoint_context__.logDb &&
|
|
4492
|
+
console.log(`AFTER ENTITY WITH ID ${event.entityId} SOFT REMOVED: `, event.entity);
|
|
4493
|
+
}
|
|
4494
|
+
/**
|
|
4495
|
+
* Called before entity recovery.
|
|
4496
|
+
*/
|
|
4497
|
+
beforeRecover(event) {
|
|
4498
|
+
this.__endpoint_context__.logDb &&
|
|
4499
|
+
console.log(`BEFORE ENTITY WITH ID ${event.entityId} RECOVERED: `, event.entity);
|
|
4500
|
+
}
|
|
4501
|
+
/**
|
|
4502
|
+
* Called after entity recovery.
|
|
4503
|
+
*/
|
|
4504
|
+
afterRecover(event) {
|
|
4505
|
+
this.__endpoint_context__.logDb &&
|
|
4506
|
+
console.log(`AFTER ENTITY WITH ID ${event.entityId} RECOVERED: `, event.entity);
|
|
4507
|
+
}
|
|
4508
|
+
/**
|
|
4509
|
+
* Called before transaction start.
|
|
4510
|
+
*/
|
|
4511
|
+
beforeTransactionStart(event) {
|
|
4512
|
+
this.__endpoint_context__.logDb &&
|
|
4513
|
+
console.log(`BEFORE TRANSACTION STARTED: `, event);
|
|
4514
|
+
}
|
|
4515
|
+
/**
|
|
4516
|
+
* Called after transaction start.
|
|
4517
|
+
*/
|
|
4518
|
+
afterTransactionStart(event) {
|
|
4519
|
+
this.__endpoint_context__.logDb &&
|
|
4520
|
+
console.log(`AFTER TRANSACTION STARTED: `, event);
|
|
4521
|
+
}
|
|
4522
|
+
/**
|
|
4523
|
+
* Called before transaction commit.
|
|
4524
|
+
*/
|
|
4525
|
+
beforeTransactionCommit(event) {
|
|
4526
|
+
this.__endpoint_context__.logDb &&
|
|
4527
|
+
console.log(`BEFORE TRANSACTION COMMITTED: `, event);
|
|
4528
|
+
}
|
|
4529
|
+
/**
|
|
4530
|
+
* Called after transaction commit.
|
|
4531
|
+
*/
|
|
4532
|
+
afterTransactionCommit(event) {
|
|
4533
|
+
this.__endpoint_context__.logDb &&
|
|
4534
|
+
console.log(`AFTER TRANSACTION COMMITTED: `, event);
|
|
4535
|
+
}
|
|
4536
|
+
/**
|
|
4537
|
+
* Called before transaction rollback.
|
|
4538
|
+
*/
|
|
4539
|
+
beforeTransactionRollback(event) {
|
|
4540
|
+
this.__endpoint_context__.logDb &&
|
|
4541
|
+
console.log(`BEFORE TRANSACTION ROLLBACK: `, event);
|
|
4542
|
+
}
|
|
4543
|
+
/**
|
|
4544
|
+
* Called after transaction rollback.
|
|
4545
|
+
*/
|
|
4546
|
+
afterTransactionRollback(event) {
|
|
4547
|
+
this.__endpoint_context__.logDb &&
|
|
4548
|
+
console.log(`AFTER TRANSACTION ROLLBACK: `, event);
|
|
4549
|
+
}
|
|
4550
|
+
};
|
|
4551
|
+
BaseSubscriberForEntity = __decorate([
|
|
4552
|
+
TaonSubscriber({
|
|
4553
|
+
className: 'BaseSubscriberForEntity',
|
|
4554
|
+
})
|
|
4555
|
+
], BaseSubscriberForEntity);
|
|
4556
|
+
;
|
|
4557
|
+
({}); // @--end-of-file-for-module=taon lib/base-classes/base-subscriber-for-entity.ts
|
|
4558
|
+
|
|
4559
|
+
var Base;
|
|
4560
|
+
(function (Base) {
|
|
4561
|
+
Base.Controller = BaseController;
|
|
4562
|
+
Base.CrudController = BaseCrudController;
|
|
4563
|
+
Base.Entity = BaseEntity;
|
|
4564
|
+
Base.AbstractEntity = BaseAbstractEntity;
|
|
4565
|
+
Base.Provider = BaseProvider;
|
|
4566
|
+
Base.Class = BaseClass;
|
|
4567
|
+
Base.Repository = BaseRepository;
|
|
4568
|
+
Base.SubscriberForEntity = BaseSubscriberForEntity;
|
|
4569
|
+
Base.Context = BaseContext;
|
|
4570
|
+
})(Base || (Base = {}));
|
|
4571
|
+
;
|
|
4572
|
+
({}); // @--end-of-file-for-module=taon lib/base-classes/base.ts
|
|
4573
|
+
|
|
4574
|
+
function TaonEntity(options) {
|
|
4575
|
+
return function (constructor) {
|
|
4576
|
+
options = options || {};
|
|
4577
|
+
options.uniqueKeyProp = options.uniqueKeyProp || 'id';
|
|
4578
|
+
ClassHelpers.setName(constructor, options?.className);
|
|
4579
|
+
Mapping.DefaultModelWithMapping(options?.defaultModelValues || {}, _$1.merge(options?.defaultModelMapping || {}, (options?.defaultModelMappingDeep || {})))(constructor);
|
|
4580
|
+
Mapping.DefaultModelWithMapping(void 0, {})(constructor);
|
|
4581
|
+
Reflect.defineMetadata(Symbols.metadata.options.entity, options, constructor);
|
|
4582
|
+
Reflect.defineMetadata(Symbols.metadata.className, options?.className || constructor.name, constructor);
|
|
4583
|
+
Entity(options?.className)(constructor);
|
|
4584
|
+
CLASS.setName(constructor, options?.className); // TODO QUICK_FIX for ng2-rest
|
|
4585
|
+
};
|
|
4586
|
+
}
|
|
4587
|
+
class TaonEntityOptions extends Models.DecoratorAbstractOpt {
|
|
4588
|
+
}
|
|
4589
|
+
;
|
|
4590
|
+
({}); // @--end-of-file-for-module=taon lib/decorators/classes/entity-decorator.ts
|
|
4591
|
+
|
|
4592
|
+
function TaonProvider(options) {
|
|
4593
|
+
return function (constructor) {
|
|
4594
|
+
Reflect.defineMetadata(Symbols.metadata.options.provider, options, constructor);
|
|
4595
|
+
Reflect.defineMetadata(Symbols.metadata.className, options?.className || constructor.name, constructor);
|
|
4596
|
+
ClassHelpers.setName(constructor, options?.className || constructor.name);
|
|
4597
|
+
};
|
|
4598
|
+
}
|
|
4599
|
+
class TaonProviderOptions extends Models.DecoratorAbstractOpt {
|
|
4600
|
+
}
|
|
4601
|
+
;
|
|
4602
|
+
({}); // @--end-of-file-for-module=taon lib/decorators/classes/provider-decorator.ts
|
|
4603
|
+
|
|
4604
|
+
const inject = (entity) => {
|
|
4605
|
+
return new Proxy({}, {
|
|
4606
|
+
get: (_, propName) => {
|
|
4607
|
+
if (propName === 'hasOwnProperty') {
|
|
4608
|
+
return () => false;
|
|
4609
|
+
}
|
|
4610
|
+
const ctor = entity();
|
|
4611
|
+
const contextFromClass = ctor[Symbols.ctxInClassOrClassObj];
|
|
4612
|
+
const resultContext = contextFromClass;
|
|
4613
|
+
if (resultContext) {
|
|
4614
|
+
let instance = resultContext.inject(ctor);
|
|
4615
|
+
if (propName === 'getOriginalPrototype') {
|
|
4616
|
+
return () => Object.getPrototypeOf(instance);
|
|
4617
|
+
}
|
|
4618
|
+
if (propName === 'getOriginalConstructor') {
|
|
4619
|
+
return () => instance.constructor;
|
|
4620
|
+
}
|
|
4621
|
+
const methods = ctor[Symbols.classMethodsNames] || [];
|
|
4622
|
+
const isMethods = methods.includes(propName);
|
|
4623
|
+
const methodOrProperty = isMethods
|
|
4485
4624
|
? instance[propName].bind(instance)
|
|
4486
4625
|
: instance[propName];
|
|
4487
4626
|
return methodOrProperty;
|
|
@@ -4490,44 +4629,1221 @@ const inject = (entity) => {
|
|
|
4490
4629
|
},
|
|
4491
4630
|
});
|
|
4492
4631
|
};
|
|
4493
|
-
|
|
4494
|
-
|
|
4495
|
-
|
|
4496
|
-
|
|
4497
|
-
|
|
4498
|
-
const proxiedObservable = new Proxy(obs, {
|
|
4499
|
-
get(target, prop, receiver) {
|
|
4500
|
-
if (prop === 'subscribe') {
|
|
4501
|
-
return (...args) => {
|
|
4502
|
-
if (isFirstSubscription) {
|
|
4503
|
-
isFirstSubscription = false;
|
|
4504
|
-
const subscriberClassFN = subscriberClassResolveFn();
|
|
4505
|
-
const ctx = subscriberClassFN[Symbols.ctxInClassOrClassObj];
|
|
4506
|
-
if (!ctx) {
|
|
4507
|
-
throw new Error(`You are trying to inject class without context. Use context like this;
|
|
4508
|
-
|
|
4509
|
-
Taon.injectSubscriberEvents( ()=> ` +
|
|
4510
|
-
`MyContext.getInstance(${subscriberClassFN?.name}), '${eventName}' )
|
|
4632
|
+
/**
|
|
4633
|
+
* TODO
|
|
4634
|
+
*/
|
|
4635
|
+
;
|
|
4636
|
+
({}); // @--end-of-file-for-module=taon lib/inject.ts
|
|
4511
4637
|
|
|
4638
|
+
const log$1 = Log.create(`[taon-helpers] long-press`, Level.__NOTHING);
|
|
4639
|
+
class TaonLongPress {
|
|
4640
|
+
constructor() {
|
|
4641
|
+
this.pressDuration = 1000;
|
|
4642
|
+
this.onLongPress = new EventEmitter();
|
|
4643
|
+
this.onLongPressing = new EventEmitter();
|
|
4644
|
+
this.onLongPressEnd = new EventEmitter();
|
|
4645
|
+
this.mouseX = 0;
|
|
4646
|
+
this.mouseY = 0;
|
|
4647
|
+
this.allowTrigger = false;
|
|
4648
|
+
this.triggerEnd = _$1.debounce(() => {
|
|
4649
|
+
this.endPress();
|
|
4650
|
+
}, 500);
|
|
4651
|
+
}
|
|
4652
|
+
get press() {
|
|
4653
|
+
return this.pressing;
|
|
4654
|
+
}
|
|
4655
|
+
get longPress() {
|
|
4656
|
+
return this.longPressing;
|
|
4657
|
+
}
|
|
4658
|
+
onMouseDown(event) {
|
|
4659
|
+
log$1.d(`MOUSE DOWN `);
|
|
4660
|
+
if (event.which !== 1)
|
|
4661
|
+
return;
|
|
4662
|
+
this.allowTrigger = true;
|
|
4663
|
+
this.mouseX = event.clientX;
|
|
4664
|
+
this.mouseY = event.clientY;
|
|
4665
|
+
this.pressing = true;
|
|
4666
|
+
this.longPressing = false;
|
|
4667
|
+
this.timeout = setTimeout(() => {
|
|
4668
|
+
if (this.allowTrigger) {
|
|
4669
|
+
this.longPressing = true;
|
|
4670
|
+
log$1.d(`long pressing start pressDuration:${this.pressDuration} `);
|
|
4671
|
+
this.onLongPress.emit(event);
|
|
4672
|
+
this.loop(event);
|
|
4673
|
+
}
|
|
4674
|
+
}, this.pressDuration);
|
|
4675
|
+
this.loop(event);
|
|
4676
|
+
}
|
|
4677
|
+
onMouseMove(event) {
|
|
4678
|
+
if (this.pressing && !this.longPressing) {
|
|
4679
|
+
const xThres = event.clientX - this.mouseX > 10;
|
|
4680
|
+
const yThres = event.clientY - this.mouseY > 10;
|
|
4681
|
+
if (xThres || yThres) {
|
|
4682
|
+
this.endPress();
|
|
4683
|
+
}
|
|
4684
|
+
}
|
|
4685
|
+
}
|
|
4686
|
+
loop(event) {
|
|
4687
|
+
if (this.longPressing) {
|
|
4688
|
+
this.timeout = setTimeout(() => {
|
|
4689
|
+
log$1.d(`emil longpressing`);
|
|
4690
|
+
this.triggerEnd();
|
|
4691
|
+
this.onLongPressing.emit(event);
|
|
4692
|
+
this.loop(event);
|
|
4693
|
+
}, 50);
|
|
4694
|
+
}
|
|
4695
|
+
}
|
|
4696
|
+
endPress(emit = true) {
|
|
4697
|
+
this.allowTrigger = false;
|
|
4698
|
+
clearTimeout(this.timeout);
|
|
4699
|
+
this.longPressing = false;
|
|
4700
|
+
this.pressing = false;
|
|
4701
|
+
if (emit) {
|
|
4702
|
+
log$1.d(`EMIT END`);
|
|
4703
|
+
this.onLongPressEnd.emit(true);
|
|
4704
|
+
}
|
|
4705
|
+
else {
|
|
4706
|
+
log$1.d(`NOT EMIT END`);
|
|
4707
|
+
}
|
|
4708
|
+
}
|
|
4709
|
+
onMouseUp() {
|
|
4710
|
+
this.endPress(false);
|
|
4711
|
+
}
|
|
4712
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: TaonLongPress, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
4713
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.1.5", type: TaonLongPress, isStandalone: true, selector: "[taonLongPress]", inputs: { pressDuration: "pressDuration" }, outputs: { onLongPress: "onLongPress", onLongPressing: "onLongPressing", onLongPressEnd: "onLongPressEnd" }, host: { listeners: { "mousedown": "onMouseDown($event)", "mousemove": "onMouseMove($event)", "mouseup": "onMouseUp()" }, properties: { "class.press": "this.press", "class.longpress": "this.longPress" } }, ngImport: i0 }); }
|
|
4714
|
+
}
|
|
4715
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: TaonLongPress, decorators: [{
|
|
4716
|
+
type: Directive,
|
|
4717
|
+
args: [{
|
|
4718
|
+
selector: '[taonLongPress]',
|
|
4719
|
+
standalone: true,
|
|
4720
|
+
}]
|
|
4721
|
+
}], propDecorators: { pressDuration: [{
|
|
4722
|
+
type: Input
|
|
4723
|
+
}], onLongPress: [{
|
|
4724
|
+
type: Output
|
|
4725
|
+
}], onLongPressing: [{
|
|
4726
|
+
type: Output
|
|
4727
|
+
}], onLongPressEnd: [{
|
|
4728
|
+
type: Output
|
|
4729
|
+
}], press: [{
|
|
4730
|
+
type: HostBinding,
|
|
4731
|
+
args: ['class.press']
|
|
4732
|
+
}], longPress: [{
|
|
4733
|
+
type: HostBinding,
|
|
4734
|
+
args: ['class.longpress']
|
|
4735
|
+
}], onMouseDown: [{
|
|
4736
|
+
type: HostListener,
|
|
4737
|
+
args: ['mousedown', ['$event']]
|
|
4738
|
+
}], onMouseMove: [{
|
|
4739
|
+
type: HostListener,
|
|
4740
|
+
args: ['mousemove', ['$event']]
|
|
4741
|
+
}], onMouseUp: [{
|
|
4742
|
+
type: HostListener,
|
|
4743
|
+
args: ['mouseup']
|
|
4744
|
+
}] } });
|
|
4745
|
+
;
|
|
4746
|
+
({}); // @--end-of-file-for-module=taon lib/ui/directives/taon-long-press.directive.ts
|
|
4512
4747
|
|
|
4513
|
-
|
|
4514
|
-
|
|
4515
|
-
|
|
4516
|
-
|
|
4517
|
-
|
|
4518
|
-
|
|
4519
|
-
|
|
4748
|
+
class TaonInjectHTMLDirective {
|
|
4749
|
+
set taonInjectHTML(content) {
|
|
4750
|
+
this.host.nativeElement.innerHTML = content;
|
|
4751
|
+
}
|
|
4752
|
+
constructor(host) {
|
|
4753
|
+
this.host = host;
|
|
4754
|
+
}
|
|
4755
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: TaonInjectHTMLDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
4756
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.1.5", type: TaonInjectHTMLDirective, isStandalone: true, selector: "[taonInjectHTML]", inputs: { taonInjectHTML: "taonInjectHTML" }, ngImport: i0 }); }
|
|
4757
|
+
}
|
|
4758
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: TaonInjectHTMLDirective, decorators: [{
|
|
4759
|
+
type: Directive,
|
|
4760
|
+
args: [{
|
|
4761
|
+
selector: '[taonInjectHTML]',
|
|
4762
|
+
standalone: true,
|
|
4763
|
+
}]
|
|
4764
|
+
}], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { taonInjectHTML: [{
|
|
4765
|
+
type: Input
|
|
4766
|
+
}] } });
|
|
4767
|
+
;
|
|
4768
|
+
({}); // @--end-of-file-for-module=taon lib/ui/directives/taon-inject-html.directive.ts
|
|
4769
|
+
|
|
4770
|
+
/* */
|
|
4771
|
+
/* */
|
|
4772
|
+
/* */
|
|
4773
|
+
/* */
|
|
4774
|
+
/* */
|
|
4775
|
+
/* */
|
|
4776
|
+
class SafePipe {
|
|
4777
|
+
constructor(sanitizer) {
|
|
4778
|
+
this.sanitizer = sanitizer;
|
|
4779
|
+
}
|
|
4780
|
+
transform(value, type) {
|
|
4781
|
+
switch (type) {
|
|
4782
|
+
case 'html':
|
|
4783
|
+
return this.sanitizer.bypassSecurityTrustHtml(value);
|
|
4784
|
+
case 'style':
|
|
4785
|
+
return this.sanitizer.bypassSecurityTrustStyle(value);
|
|
4786
|
+
case 'script':
|
|
4787
|
+
return this.sanitizer.bypassSecurityTrustScript(value);
|
|
4788
|
+
case 'url':
|
|
4789
|
+
return this.sanitizer.bypassSecurityTrustUrl(value);
|
|
4790
|
+
case 'resourceUrl':
|
|
4791
|
+
return this.sanitizer.bypassSecurityTrustResourceUrl(value);
|
|
4792
|
+
default:
|
|
4793
|
+
throw new Error(`Invalid safe type specified: ${type}`);
|
|
4794
|
+
}
|
|
4795
|
+
}
|
|
4796
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: SafePipe, deps: [{ token: i1.DomSanitizer }], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
4797
|
+
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.1.5", ngImport: i0, type: SafePipe, isStandalone: true, name: "safe" }); }
|
|
4798
|
+
}
|
|
4799
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: SafePipe, decorators: [{
|
|
4800
|
+
type: Pipe,
|
|
4801
|
+
args: [{
|
|
4802
|
+
name: 'safe',
|
|
4803
|
+
standalone: true,
|
|
4804
|
+
}]
|
|
4805
|
+
}], ctorParameters: () => [{ type: i1.DomSanitizer }] });
|
|
4806
|
+
;
|
|
4807
|
+
({}); // @--end-of-file-for-module=taon lib/ui/directives/safe.pipe.ts
|
|
4808
|
+
|
|
4809
|
+
;
|
|
4810
|
+
({}); // @--end-of-file-for-module=taon lib/ui/directives/index.ts
|
|
4811
|
+
|
|
4812
|
+
class TaonFullMaterialModule {
|
|
4813
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: TaonFullMaterialModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
4814
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.1.5", ngImport: i0, type: TaonFullMaterialModule, exports: [A11yModule,
|
|
4815
|
+
CdkStepperModule,
|
|
4816
|
+
CdkTableModule,
|
|
4817
|
+
CdkTreeModule,
|
|
4818
|
+
DragDropModule,
|
|
4819
|
+
MatAutocompleteModule,
|
|
4820
|
+
MatBadgeModule,
|
|
4821
|
+
MatBottomSheetModule,
|
|
4822
|
+
MatButtonModule,
|
|
4823
|
+
MatButtonToggleModule,
|
|
4824
|
+
MatCardModule,
|
|
4825
|
+
MatCheckboxModule,
|
|
4826
|
+
MatChipsModule,
|
|
4827
|
+
MatStepperModule,
|
|
4828
|
+
MatDatepickerModule,
|
|
4829
|
+
MatDialogModule,
|
|
4830
|
+
MatDividerModule,
|
|
4831
|
+
MatExpansionModule,
|
|
4832
|
+
MatGridListModule,
|
|
4833
|
+
MatIconModule,
|
|
4834
|
+
MatInputModule,
|
|
4835
|
+
MatListModule,
|
|
4836
|
+
MatMenuModule,
|
|
4837
|
+
MatNativeDateModule,
|
|
4838
|
+
MatPaginatorModule,
|
|
4839
|
+
MatProgressBarModule,
|
|
4840
|
+
MatProgressSpinnerModule,
|
|
4841
|
+
MatRadioModule,
|
|
4842
|
+
MatRippleModule,
|
|
4843
|
+
MatSelectModule,
|
|
4844
|
+
MatSidenavModule,
|
|
4845
|
+
MatSliderModule,
|
|
4846
|
+
MatSlideToggleModule,
|
|
4847
|
+
MatSnackBarModule,
|
|
4848
|
+
MatSortModule,
|
|
4849
|
+
MatTableModule,
|
|
4850
|
+
MatTabsModule,
|
|
4851
|
+
MatToolbarModule,
|
|
4852
|
+
MatTooltipModule,
|
|
4853
|
+
MatTreeModule,
|
|
4854
|
+
ScrollingModule] }); }
|
|
4855
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: TaonFullMaterialModule, imports: [A11yModule,
|
|
4856
|
+
CdkStepperModule,
|
|
4857
|
+
CdkTableModule,
|
|
4858
|
+
CdkTreeModule,
|
|
4859
|
+
DragDropModule,
|
|
4860
|
+
MatAutocompleteModule,
|
|
4861
|
+
MatBadgeModule,
|
|
4862
|
+
MatBottomSheetModule,
|
|
4863
|
+
MatButtonModule,
|
|
4864
|
+
MatButtonToggleModule,
|
|
4865
|
+
MatCardModule,
|
|
4866
|
+
MatCheckboxModule,
|
|
4867
|
+
MatChipsModule,
|
|
4868
|
+
MatStepperModule,
|
|
4869
|
+
MatDatepickerModule,
|
|
4870
|
+
MatDialogModule,
|
|
4871
|
+
MatDividerModule,
|
|
4872
|
+
MatExpansionModule,
|
|
4873
|
+
MatGridListModule,
|
|
4874
|
+
MatIconModule,
|
|
4875
|
+
MatInputModule,
|
|
4876
|
+
MatListModule,
|
|
4877
|
+
MatMenuModule,
|
|
4878
|
+
MatNativeDateModule,
|
|
4879
|
+
MatPaginatorModule,
|
|
4880
|
+
MatProgressBarModule,
|
|
4881
|
+
MatProgressSpinnerModule,
|
|
4882
|
+
MatRadioModule,
|
|
4883
|
+
MatRippleModule,
|
|
4884
|
+
MatSelectModule,
|
|
4885
|
+
MatSidenavModule,
|
|
4886
|
+
MatSliderModule,
|
|
4887
|
+
MatSlideToggleModule,
|
|
4888
|
+
MatSnackBarModule,
|
|
4889
|
+
MatSortModule,
|
|
4890
|
+
MatTableModule,
|
|
4891
|
+
MatTabsModule,
|
|
4892
|
+
MatToolbarModule,
|
|
4893
|
+
MatTooltipModule,
|
|
4894
|
+
MatTreeModule,
|
|
4895
|
+
ScrollingModule] }); }
|
|
4896
|
+
}
|
|
4897
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: TaonFullMaterialModule, decorators: [{
|
|
4898
|
+
type: NgModule,
|
|
4899
|
+
args: [{
|
|
4900
|
+
exports: [
|
|
4901
|
+
A11yModule,
|
|
4902
|
+
CdkStepperModule,
|
|
4903
|
+
CdkTableModule,
|
|
4904
|
+
CdkTreeModule,
|
|
4905
|
+
DragDropModule,
|
|
4906
|
+
MatAutocompleteModule,
|
|
4907
|
+
MatBadgeModule,
|
|
4908
|
+
MatBottomSheetModule,
|
|
4909
|
+
MatButtonModule,
|
|
4910
|
+
MatButtonToggleModule,
|
|
4911
|
+
MatCardModule,
|
|
4912
|
+
MatCheckboxModule,
|
|
4913
|
+
MatChipsModule,
|
|
4914
|
+
MatStepperModule,
|
|
4915
|
+
MatDatepickerModule,
|
|
4916
|
+
MatDialogModule,
|
|
4917
|
+
MatDividerModule,
|
|
4918
|
+
MatExpansionModule,
|
|
4919
|
+
MatGridListModule,
|
|
4920
|
+
MatIconModule,
|
|
4921
|
+
MatInputModule,
|
|
4922
|
+
MatListModule,
|
|
4923
|
+
MatMenuModule,
|
|
4924
|
+
MatNativeDateModule,
|
|
4925
|
+
MatPaginatorModule,
|
|
4926
|
+
MatProgressBarModule,
|
|
4927
|
+
MatProgressSpinnerModule,
|
|
4928
|
+
MatRadioModule,
|
|
4929
|
+
MatRippleModule,
|
|
4930
|
+
MatSelectModule,
|
|
4931
|
+
MatSidenavModule,
|
|
4932
|
+
MatSliderModule,
|
|
4933
|
+
MatSlideToggleModule,
|
|
4934
|
+
MatSnackBarModule,
|
|
4935
|
+
MatSortModule,
|
|
4936
|
+
MatTableModule,
|
|
4937
|
+
MatTabsModule,
|
|
4938
|
+
MatToolbarModule,
|
|
4939
|
+
MatTooltipModule,
|
|
4940
|
+
MatTreeModule,
|
|
4941
|
+
ScrollingModule,
|
|
4942
|
+
],
|
|
4943
|
+
}]
|
|
4944
|
+
}] });
|
|
4945
|
+
;
|
|
4946
|
+
({}); // @--end-of-file-for-module=taon lib/ui/taon-full-material.module.ts
|
|
4947
|
+
|
|
4948
|
+
class TaonGithubForkMeCornerComponent {
|
|
4949
|
+
constructor() {
|
|
4950
|
+
this.url = 'https://github.com';
|
|
4951
|
+
}
|
|
4952
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: TaonGithubForkMeCornerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
4953
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.5", type: TaonGithubForkMeCornerComponent, selector: "taon-github-fork-me-corner", inputs: { url: "url" }, ngImport: i0, template: "<a href=\"{{ url }}\" class=\"github-corner\" aria-label=\"View source on GitHub\"\n ><svg\n width=\"80\"\n height=\"80\"\n viewBox=\"0 0 250 250\"\n style=\"\n fill: #151513;\n color: #fff;\n position: absolute;\n top: 0;\n border: 0;\n right: 0;\n \"\n aria-hidden=\"true\">\n <path d=\"M0,0 L115,115 L130,115 L142,142 L250,250 L250,0 Z\"></path>\n <path\n d=\"M128.3,109.0 C113.8,99.7 119.0,89.6 119.0,89.6 C122.0,82.7 120.5,78.6 120.5,78.6 C119.2,72.0 123.4,76.3 123.4,76.3 C127.3,80.9 125.5,87.3 125.5,87.3 C122.9,97.6 130.6,101.9 134.4,103.2\"\n fill=\"currentColor\"\n style=\"transform-origin: 130px 106px\"\n class=\"octo-arm\"></path>\n <path\n d=\"M115.0,115.0 C114.9,115.1 118.7,116.5 119.8,115.4 L133.7,101.6 C136.9,99.2 139.9,98.4 142.2,98.6 C133.8,88.0 127.5,74.4 143.8,58.0 C148.5,53.4 154.0,51.2 159.7,51.0 C160.3,49.4 163.2,43.6 171.4,40.1 C171.4,40.1 176.1,42.5 178.8,56.2 C183.1,58.6 187.2,61.8 190.9,65.4 C194.5,69.0 197.7,73.2 200.1,77.6 C213.8,80.2 216.3,84.9 216.3,84.9 C212.7,93.1 206.9,96.0 205.4,96.6 C205.1,102.4 203.0,107.8 198.3,112.5 C181.9,128.9 168.3,122.5 157.7,114.1 C157.9,116.9 156.7,120.9 152.7,124.9 L141.0,136.5 C139.8,137.7 141.6,141.9 141.8,141.8 Z\"\n fill=\"currentColor\"\n class=\"octo-body\"></path>\n </svg>\n</a>\n", styles: ["a{opacity:.7}a:hover{opacity:1}.github-corner:hover .octo-arm{opacity:1;animation:octocat-wave .56s ease-in-out}@keyframes octocat-wave{0%,to{transform:rotate(0)}20%,60%{transform:rotate(-25deg)}40%,80%{transform:rotate(10deg)}}@media (max-width: 500px){.github-corner:hover .octo-arm{animation:none}.github-corner .octo-arm{animation:octocat-wave .56s ease-in-out}}\n"] }); }
|
|
4954
|
+
}
|
|
4955
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: TaonGithubForkMeCornerComponent, decorators: [{
|
|
4956
|
+
type: Component,
|
|
4957
|
+
args: [{ selector: 'taon-github-fork-me-corner', template: "<a href=\"{{ url }}\" class=\"github-corner\" aria-label=\"View source on GitHub\"\n ><svg\n width=\"80\"\n height=\"80\"\n viewBox=\"0 0 250 250\"\n style=\"\n fill: #151513;\n color: #fff;\n position: absolute;\n top: 0;\n border: 0;\n right: 0;\n \"\n aria-hidden=\"true\">\n <path d=\"M0,0 L115,115 L130,115 L142,142 L250,250 L250,0 Z\"></path>\n <path\n d=\"M128.3,109.0 C113.8,99.7 119.0,89.6 119.0,89.6 C122.0,82.7 120.5,78.6 120.5,78.6 C119.2,72.0 123.4,76.3 123.4,76.3 C127.3,80.9 125.5,87.3 125.5,87.3 C122.9,97.6 130.6,101.9 134.4,103.2\"\n fill=\"currentColor\"\n style=\"transform-origin: 130px 106px\"\n class=\"octo-arm\"></path>\n <path\n d=\"M115.0,115.0 C114.9,115.1 118.7,116.5 119.8,115.4 L133.7,101.6 C136.9,99.2 139.9,98.4 142.2,98.6 C133.8,88.0 127.5,74.4 143.8,58.0 C148.5,53.4 154.0,51.2 159.7,51.0 C160.3,49.4 163.2,43.6 171.4,40.1 C171.4,40.1 176.1,42.5 178.8,56.2 C183.1,58.6 187.2,61.8 190.9,65.4 C194.5,69.0 197.7,73.2 200.1,77.6 C213.8,80.2 216.3,84.9 216.3,84.9 C212.7,93.1 206.9,96.0 205.4,96.6 C205.1,102.4 203.0,107.8 198.3,112.5 C181.9,128.9 168.3,122.5 157.7,114.1 C157.9,116.9 156.7,120.9 152.7,124.9 L141.0,136.5 C139.8,137.7 141.6,141.9 141.8,141.8 Z\"\n fill=\"currentColor\"\n class=\"octo-body\"></path>\n </svg>\n</a>\n", styles: ["a{opacity:.7}a:hover{opacity:1}.github-corner:hover .octo-arm{opacity:1;animation:octocat-wave .56s ease-in-out}@keyframes octocat-wave{0%,to{transform:rotate(0)}20%,60%{transform:rotate(-25deg)}40%,80%{transform:rotate(10deg)}}@media (max-width: 500px){.github-corner:hover .octo-arm{animation:none}.github-corner .octo-arm{animation:octocat-wave .56s ease-in-out}}\n"] }]
|
|
4958
|
+
}], propDecorators: { url: [{
|
|
4959
|
+
type: Input
|
|
4960
|
+
}] } });
|
|
4961
|
+
;
|
|
4962
|
+
({}); // @--end-of-file-for-module=taon lib/ui/taon-github-fork-me-corner/taon-github-fork-me-corner.component.ts
|
|
4963
|
+
|
|
4964
|
+
class TaonGithubForkMeCornerModule {
|
|
4965
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: TaonGithubForkMeCornerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
4966
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.1.5", ngImport: i0, type: TaonGithubForkMeCornerModule, declarations: [TaonGithubForkMeCornerComponent], imports: [CommonModule], exports: [TaonGithubForkMeCornerComponent] }); }
|
|
4967
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: TaonGithubForkMeCornerModule, imports: [CommonModule] }); }
|
|
4968
|
+
}
|
|
4969
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: TaonGithubForkMeCornerModule, decorators: [{
|
|
4970
|
+
type: NgModule,
|
|
4971
|
+
args: [{
|
|
4972
|
+
imports: [CommonModule],
|
|
4973
|
+
exports: [TaonGithubForkMeCornerComponent],
|
|
4974
|
+
declarations: [TaonGithubForkMeCornerComponent],
|
|
4975
|
+
providers: [],
|
|
4976
|
+
}]
|
|
4977
|
+
}] });
|
|
4978
|
+
;
|
|
4979
|
+
({}); // @--end-of-file-for-module=taon lib/ui/taon-github-fork-me-corner/taon-github-fork-me-corner.module.ts
|
|
4980
|
+
|
|
4981
|
+
;
|
|
4982
|
+
({}); // @--end-of-file-for-module=taon lib/ui/taon-github-fork-me-corner/index.ts
|
|
4983
|
+
|
|
4984
|
+
/* */
|
|
4985
|
+
/* */
|
|
4986
|
+
class TaonNotificationsService {
|
|
4987
|
+
constructor(toast) {
|
|
4988
|
+
this.toast = toast;
|
|
4989
|
+
}
|
|
4990
|
+
options(type, options) {
|
|
4991
|
+
if (_$1.isString(options)) {
|
|
4992
|
+
options = {
|
|
4993
|
+
// @ts-ignore
|
|
4994
|
+
title: options,
|
|
4995
|
+
};
|
|
4996
|
+
}
|
|
4997
|
+
return options;
|
|
4998
|
+
}
|
|
4999
|
+
success(options) {
|
|
5000
|
+
const opt = this.options('success', options);
|
|
5001
|
+
return this.toast.success(opt.title);
|
|
5002
|
+
}
|
|
5003
|
+
error(options) {
|
|
5004
|
+
const opt = this.options('error', options);
|
|
5005
|
+
return this.toast.error(opt.title);
|
|
5006
|
+
}
|
|
5007
|
+
warn(options) {
|
|
5008
|
+
const opt = this.options('warning', options);
|
|
5009
|
+
return this.toast.warning(opt.title);
|
|
5010
|
+
}
|
|
5011
|
+
info(options) {
|
|
5012
|
+
const opt = this.options('info', options);
|
|
5013
|
+
return this.toast.info(opt.title);
|
|
5014
|
+
}
|
|
5015
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: TaonNotificationsService, deps: [{ token: i1$1.HotToastService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
5016
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: TaonNotificationsService, providedIn: 'root' }); }
|
|
5017
|
+
}
|
|
5018
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: TaonNotificationsService, decorators: [{
|
|
5019
|
+
type: Injectable,
|
|
5020
|
+
args: [{
|
|
5021
|
+
providedIn: 'root',
|
|
5022
|
+
}]
|
|
5023
|
+
}], ctorParameters: () => [{ type: i1$1.HotToastService }] });
|
|
5024
|
+
;
|
|
5025
|
+
({}); // @--end-of-file-for-module=taon lib/ui/taon-notifications/taon-notifications.service.ts
|
|
5026
|
+
|
|
5027
|
+
class TaonNotificationsComponent {
|
|
5028
|
+
constructor(notification) {
|
|
5029
|
+
this.notification = notification;
|
|
5030
|
+
}
|
|
5031
|
+
ngOnInit() { }
|
|
5032
|
+
init(subscribtionsArray, template, callback) {
|
|
5033
|
+
subscribtionsArray.push(Resource.listenErrors.subscribe(err => {
|
|
5034
|
+
this.notification.error(err.msg);
|
|
5035
|
+
}));
|
|
5036
|
+
}
|
|
5037
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: TaonNotificationsComponent, deps: [{ token: TaonNotificationsService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
5038
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.5", type: TaonNotificationsComponent, selector: "taon-notifications", ngImport: i0, template: "<!-- <p>\n notyfications works!\n</p> -->\n", styles: [":host{position:absolute;width:0px;height:0px}\n"] }); }
|
|
5039
|
+
}
|
|
5040
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: TaonNotificationsComponent, decorators: [{
|
|
5041
|
+
type: Component,
|
|
5042
|
+
args: [{ selector: 'taon-notifications', template: "<!-- <p>\n notyfications works!\n</p> -->\n", styles: [":host{position:absolute;width:0px;height:0px}\n"] }]
|
|
5043
|
+
}], ctorParameters: () => [{ type: TaonNotificationsService }] });
|
|
5044
|
+
;
|
|
5045
|
+
({}); // @--end-of-file-for-module=taon lib/ui/taon-notifications/taon-notifications.component.ts
|
|
5046
|
+
|
|
5047
|
+
class TaonNotificationOptions {
|
|
5048
|
+
}
|
|
5049
|
+
;
|
|
5050
|
+
({}); // @--end-of-file-for-module=taon lib/ui/taon-notifications/taon-notifications.models.ts
|
|
5051
|
+
|
|
5052
|
+
class TaonNotificationsModule {
|
|
5053
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: TaonNotificationsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
5054
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.1.5", ngImport: i0, type: TaonNotificationsModule, declarations: [TaonNotificationsComponent], exports: [TaonNotificationsComponent] }); }
|
|
5055
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: TaonNotificationsModule, providers: [TaonNotificationsService] }); }
|
|
5056
|
+
}
|
|
5057
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: TaonNotificationsModule, decorators: [{
|
|
5058
|
+
type: NgModule,
|
|
5059
|
+
args: [{
|
|
5060
|
+
imports: [],
|
|
5061
|
+
exports: [TaonNotificationsComponent],
|
|
5062
|
+
declarations: [TaonNotificationsComponent],
|
|
5063
|
+
providers: [TaonNotificationsService],
|
|
5064
|
+
}]
|
|
5065
|
+
}] });
|
|
5066
|
+
;
|
|
5067
|
+
({}); // @--end-of-file-for-module=taon lib/ui/taon-notifications/taon-notifications.module.ts
|
|
5068
|
+
|
|
5069
|
+
;
|
|
5070
|
+
({}); // @--end-of-file-for-module=taon lib/ui/taon-notifications/index.ts
|
|
5071
|
+
|
|
5072
|
+
class TaonSessionPasscodeComponent {
|
|
5073
|
+
constructor(element, domSanitizer, cdr) {
|
|
5074
|
+
this.element = element;
|
|
5075
|
+
this.domSanitizer = domSanitizer;
|
|
5076
|
+
this.cdr = cdr;
|
|
5077
|
+
this.destroyRef = inject$1(DestroyRef);
|
|
5078
|
+
this.display = 'none';
|
|
5079
|
+
this.form = new FormGroup({
|
|
5080
|
+
passcode: new FormControl(),
|
|
5081
|
+
});
|
|
5082
|
+
}
|
|
5083
|
+
ngOnInit() {
|
|
5084
|
+
if (!this.passcode) {
|
|
5085
|
+
this.passcode = '123456';
|
|
5086
|
+
}
|
|
5087
|
+
if (!this.message) {
|
|
5088
|
+
this.message = `
|
|
5089
|
+
This website is only for testing purpose. Please type passcode bellow to see content.
|
|
5090
|
+
|
|
5091
|
+
`;
|
|
5092
|
+
}
|
|
5093
|
+
this.safeMessage = this.domSanitizer.bypassSecurityTrustHtml(this.message);
|
|
5094
|
+
if (this.lastPasscode?.toString() === this.passcode?.toString()) {
|
|
5095
|
+
this.hide();
|
|
5096
|
+
}
|
|
5097
|
+
else {
|
|
5098
|
+
this.show();
|
|
5099
|
+
this.focus();
|
|
5100
|
+
}
|
|
5101
|
+
interval(1000)
|
|
5102
|
+
.pipe(takeUntilDestroyed(this.destroyRef), tap(() => {
|
|
5103
|
+
this.focus();
|
|
5104
|
+
}))
|
|
5105
|
+
.subscribe();
|
|
5106
|
+
}
|
|
5107
|
+
submit({ passcode }) {
|
|
5108
|
+
if (this.isPasscodeOK(passcode || '')) {
|
|
5109
|
+
this.hide();
|
|
5110
|
+
}
|
|
5111
|
+
else {
|
|
5112
|
+
this.clear();
|
|
5113
|
+
}
|
|
5114
|
+
}
|
|
5115
|
+
isPasscodeOK(passcode) {
|
|
5116
|
+
this.lastPasscode = passcode.toString();
|
|
5117
|
+
return this.passcode.toString() === passcode;
|
|
5118
|
+
}
|
|
5119
|
+
ngAfterViewInit() { }
|
|
5120
|
+
focus() {
|
|
5121
|
+
this.element.nativeElement.querySelector('input')?.focus();
|
|
5122
|
+
}
|
|
5123
|
+
hide() {
|
|
5124
|
+
this.display = 'none';
|
|
5125
|
+
}
|
|
5126
|
+
show() {
|
|
5127
|
+
this.display = 'block';
|
|
5128
|
+
}
|
|
5129
|
+
clear() {
|
|
5130
|
+
this.form.controls.passcode.setValue('');
|
|
5131
|
+
}
|
|
5132
|
+
onKeyup(event) {
|
|
5133
|
+
if (this.isPasscodeOK(event.target.value || '')) {
|
|
5134
|
+
this.hide();
|
|
5135
|
+
return;
|
|
5136
|
+
}
|
|
5137
|
+
const key = event.keyCode || event.charCode;
|
|
5138
|
+
if (key === 8 || key === 46 || this.lastPasscode?.length > 5) {
|
|
5139
|
+
this.clear();
|
|
5140
|
+
}
|
|
5141
|
+
}
|
|
5142
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: TaonSessionPasscodeComponent, deps: [{ token: i0.ElementRef, self: true }, { token: i1.DomSanitizer }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
5143
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.5", type: TaonSessionPasscodeComponent, isStandalone: true, selector: "taon-session-passcode", inputs: { passcode: "passcode", message: "message" }, host: { properties: { "style.display": "this.display" } }, ngImport: i0, template: "<form\n [formGroup]=\"form\"\n content=\"notranslate\"\n autocomplete=\"off\"\n (click)=\"focus()\"\n (ngSubmit)=\"submit(form.value)\"\n class=\"flex flex-column align-items-center w-full h-full\">\n <div class=\"flex align-content-center w-full justify-content-center mt-8\">\n <p\n class=\"p-3\"\n style=\"max-width: 400px; min-height: 100px\"\n [innerHtml]=\"safeMessage\"></p>\n </div>\n <input\n type=\"password\"\n class=\"text-5xl md:text-8xl pointer-events-none\"\n #taonpasscode\n (keyup)=\"onKeyup($event)\"\n formControlName=\"passcode\" />\n <!-- placeholder=\"Enter passcode\" -->\n</form>\n", styles: [":host{position:fixed;background-color:#9f9f9f57;z-index:99999;-webkit-backdrop-filter:blur(50px);backdrop-filter:blur(50px);width:100%;height:100%;display:none}input{background:#fff;border-radius:6px;outline:0px;border:0px;color:gray;text-align:center;width:500px}\n"], dependencies: [{ kind: "ngmodule", type: PasswordModule }, { kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.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: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: FormsModule }] }); }
|
|
5144
|
+
}
|
|
5145
|
+
__decorate([
|
|
5146
|
+
(Stor.property.in.localstorage
|
|
5147
|
+
.for(TaonSessionPasscodeComponent)
|
|
5148
|
+
.withDefaultValue('')),
|
|
5149
|
+
__metadata("design:type", String)
|
|
5150
|
+
], TaonSessionPasscodeComponent.prototype, "lastPasscode", void 0);
|
|
5151
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: TaonSessionPasscodeComponent, decorators: [{
|
|
5152
|
+
type: Component,
|
|
5153
|
+
args: [{ selector: 'taon-session-passcode', standalone: true, imports: [PasswordModule, CommonModule, ReactiveFormsModule, FormsModule], template: "<form\n [formGroup]=\"form\"\n content=\"notranslate\"\n autocomplete=\"off\"\n (click)=\"focus()\"\n (ngSubmit)=\"submit(form.value)\"\n class=\"flex flex-column align-items-center w-full h-full\">\n <div class=\"flex align-content-center w-full justify-content-center mt-8\">\n <p\n class=\"p-3\"\n style=\"max-width: 400px; min-height: 100px\"\n [innerHtml]=\"safeMessage\"></p>\n </div>\n <input\n type=\"password\"\n class=\"text-5xl md:text-8xl pointer-events-none\"\n #taonpasscode\n (keyup)=\"onKeyup($event)\"\n formControlName=\"passcode\" />\n <!-- placeholder=\"Enter passcode\" -->\n</form>\n", styles: [":host{position:fixed;background-color:#9f9f9f57;z-index:99999;-webkit-backdrop-filter:blur(50px);backdrop-filter:blur(50px);width:100%;height:100%;display:none}input{background:#fff;border-radius:6px;outline:0px;border:0px;color:gray;text-align:center;width:500px}\n"] }]
|
|
5154
|
+
}], ctorParameters: () => [{ type: i0.ElementRef, decorators: [{
|
|
5155
|
+
type: Self
|
|
5156
|
+
}] }, { type: i1.DomSanitizer }, { type: i0.ChangeDetectorRef }], propDecorators: { passcode: [{
|
|
5157
|
+
type: Input
|
|
5158
|
+
}], message: [{
|
|
5159
|
+
type: Input
|
|
5160
|
+
}], display: [{
|
|
5161
|
+
type: HostBinding,
|
|
5162
|
+
args: ['style.display']
|
|
5163
|
+
}] } });
|
|
5164
|
+
;
|
|
5165
|
+
({}); // @--end-of-file-for-module=taon lib/ui/taon-session-passcode/taon-session-passcode.component.ts
|
|
5166
|
+
|
|
5167
|
+
;
|
|
5168
|
+
({}); // @--end-of-file-for-module=taon lib/ui/taon-session-passcode/index.ts
|
|
5169
|
+
|
|
5170
|
+
const calculatePercentage = (loaded, total) => Math.floor(loaded * 1.0) / total;
|
|
5171
|
+
class TaonProgressBarComponent {
|
|
5172
|
+
constructor() {
|
|
5173
|
+
this.handlers = [];
|
|
5174
|
+
this.options = _$1.merge({
|
|
5175
|
+
min: 8,
|
|
5176
|
+
max: 100,
|
|
5177
|
+
speed: 200,
|
|
5178
|
+
trickleSpeed: 300,
|
|
5179
|
+
debounceTime: 0,
|
|
5180
|
+
ease: 'linear',
|
|
5181
|
+
spinnerPosition: 'right',
|
|
5182
|
+
direction: 'ltr+',
|
|
5183
|
+
color: 'gray',
|
|
5184
|
+
fixed: true,
|
|
5185
|
+
meteor: true,
|
|
5186
|
+
spinner: true,
|
|
5187
|
+
thick: false,
|
|
5188
|
+
}, _$1.get(ENV, `plugins['ngx-progressbar']`));
|
|
5189
|
+
}
|
|
5190
|
+
ngOnInit() { }
|
|
5191
|
+
ngOnDestroy() {
|
|
5192
|
+
this.handlers.forEach(h => h.unsubscribe());
|
|
5193
|
+
}
|
|
5194
|
+
ngAfterViewInit() {
|
|
5195
|
+
this.loadProgressBar(void 0, axios);
|
|
5196
|
+
}
|
|
5197
|
+
loadProgressBar(config, instance = axios) {
|
|
5198
|
+
}
|
|
5199
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: TaonProgressBarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
5200
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.5", type: TaonProgressBarComponent, selector: "taon-progress-bar", inputs: { isDesktop: "isDesktop" }, viewQueries: [{ propertyName: "labProgress", first: true, predicate: ["labProgress"], descendants: true }], ngImport: i0, template: "<ng-progress\n #labProgress\n id=\"lab\"\n [meteor]=\"options.meteor\"\n [color]=\"options.color\"\n [min]=\"options.min\"\n [max]=\"options.max\"\n [speed]=\"options.speed\"\n [spinner]=\"\n options.spinner &&\n (!admin.adminPanelIsOpen ||\n (admin.adminPanelIsOpen && (admin.draggablePopupMode || !isDesktop)))\n \"\n [spinnerPosition]=\"options.spinnerPosition\"\n [direction]=\"options.direction\"\n [trickleSpeed]=\"options.trickleSpeed\"\n [debounceTime]=\"options.debounceTime\"\n [ease]=\"options.ease\"\n [thick]=\"options.thick\"\n [fixed]=\"options.fixed\">\n</ng-progress>\n<!-- (started)=\"onProgressStarted()\"\n (completed)=\"onProgressCompleted()\" -->\n", styles: [":host{display:block}\n"], dependencies: [{ kind: "component", type: i1$2.NgProgressComponent, selector: "ng-progress", inputs: ["id", "min", "max", "ease", "color", "speed", "thick", "fixed", "meteor", "spinner", "trickleSpeed", "debounceTime", "trickleFunc", "spinnerPosition", "direction"], outputs: ["started", "completed"] }] }); }
|
|
5201
|
+
}
|
|
5202
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: TaonProgressBarComponent, decorators: [{
|
|
5203
|
+
type: Component,
|
|
5204
|
+
args: [{ selector: 'taon-progress-bar', template: "<ng-progress\n #labProgress\n id=\"lab\"\n [meteor]=\"options.meteor\"\n [color]=\"options.color\"\n [min]=\"options.min\"\n [max]=\"options.max\"\n [speed]=\"options.speed\"\n [spinner]=\"\n options.spinner &&\n (!admin.adminPanelIsOpen ||\n (admin.adminPanelIsOpen && (admin.draggablePopupMode || !isDesktop)))\n \"\n [spinnerPosition]=\"options.spinnerPosition\"\n [direction]=\"options.direction\"\n [trickleSpeed]=\"options.trickleSpeed\"\n [debounceTime]=\"options.debounceTime\"\n [ease]=\"options.ease\"\n [thick]=\"options.thick\"\n [fixed]=\"options.fixed\">\n</ng-progress>\n<!-- (started)=\"onProgressStarted()\"\n (completed)=\"onProgressCompleted()\" -->\n", styles: [":host{display:block}\n"] }]
|
|
5205
|
+
}], ctorParameters: () => [], propDecorators: { labProgress: [{
|
|
5206
|
+
type: ViewChild,
|
|
5207
|
+
args: ['labProgress']
|
|
5208
|
+
}], isDesktop: [{
|
|
5209
|
+
type: Input
|
|
5210
|
+
}] } });
|
|
5211
|
+
;
|
|
5212
|
+
({}); // @--end-of-file-for-module=taon lib/ui/taon-progress-bar/taon-progress-bar.component.ts
|
|
5213
|
+
|
|
5214
|
+
class TaonProgressBarModule {
|
|
5215
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: TaonProgressBarModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
5216
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.1.5", ngImport: i0, type: TaonProgressBarModule, declarations: [TaonProgressBarComponent], imports: [CommonModule, i1$2.NgProgressModule], exports: [TaonProgressBarComponent] }); }
|
|
5217
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: TaonProgressBarModule, imports: [CommonModule, NgProgressModule.withConfig({})] }); }
|
|
5218
|
+
}
|
|
5219
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: TaonProgressBarModule, decorators: [{
|
|
5220
|
+
type: NgModule,
|
|
5221
|
+
args: [{
|
|
5222
|
+
imports: [CommonModule, NgProgressModule.withConfig({})],
|
|
5223
|
+
declarations: [TaonProgressBarComponent],
|
|
5224
|
+
exports: [TaonProgressBarComponent],
|
|
5225
|
+
}]
|
|
5226
|
+
}] });
|
|
5227
|
+
;
|
|
5228
|
+
({}); // @--end-of-file-for-module=taon lib/ui/taon-progress-bar/taon-progress-bar.module.ts
|
|
5229
|
+
|
|
5230
|
+
;
|
|
5231
|
+
({}); // @--end-of-file-for-module=taon lib/ui/taon-progress-bar/index.ts
|
|
5232
|
+
|
|
5233
|
+
const log = Log.create('Table wrapper', Level.__NOTHING);
|
|
5234
|
+
const defaultColumns = [
|
|
5235
|
+
{
|
|
5236
|
+
header: 'ID',
|
|
5237
|
+
field: 'id',
|
|
5238
|
+
},
|
|
5239
|
+
{
|
|
5240
|
+
header: 'NAME',
|
|
5241
|
+
field: 'name',
|
|
5242
|
+
},
|
|
5243
|
+
];
|
|
5244
|
+
class TaonTableComponent {
|
|
5245
|
+
constructor() {
|
|
5246
|
+
this.pageNumber = 1;
|
|
5247
|
+
this.pageSize = 5;
|
|
5248
|
+
this.allowedColumns = [];
|
|
5249
|
+
this.rows = _.times(20, id => {
|
|
5250
|
+
return {
|
|
5251
|
+
id,
|
|
5252
|
+
name: `Amazing ${id} row `,
|
|
5253
|
+
};
|
|
5254
|
+
});
|
|
5255
|
+
this.columns = defaultColumns;
|
|
5256
|
+
this.pageSizeOptions = [5, 10, 20];
|
|
5257
|
+
this.expansionChange = new EventEmitter();
|
|
5258
|
+
this.addingItem = new EventEmitter();
|
|
5259
|
+
this.searchInputChange$ = defer(() => fromEvent(this.search?.nativeElement, 'keyup')).pipe(map(c => c.target['value']), debounceTime(500), distinctUntilChanged(), share(), tap(data => {
|
|
5260
|
+
console.log({ data });
|
|
5261
|
+
}));
|
|
5262
|
+
this.expandable = false;
|
|
5263
|
+
this.showPaginator = true;
|
|
5264
|
+
this.isLoading = false;
|
|
5265
|
+
this.totalElements = 100;
|
|
5266
|
+
this.sub = new Subscription();
|
|
5267
|
+
}
|
|
5268
|
+
async ngOnInit() {
|
|
5269
|
+
if (_.isString(this.entity)) {
|
|
5270
|
+
this.entity = CLASS.getBy(this.entity);
|
|
5271
|
+
}
|
|
5272
|
+
this.sub.add(this.searchInputChange$.subscribe());
|
|
5273
|
+
if (!!this.entity) {
|
|
5274
|
+
this.rows = [];
|
|
5275
|
+
}
|
|
5276
|
+
this.expandable = !!this.expansionTemplate;
|
|
5277
|
+
log.i('this.columns,', this.columns);
|
|
5278
|
+
const columnsConfigSameAsDefault = _.isEqual(this.columns, defaultColumns);
|
|
5279
|
+
const entityClass = this.entity;
|
|
5280
|
+
if (entityClass && columnsConfigSameAsDefault) {
|
|
5281
|
+
log.i('this.crud.entity', CLASS.describeProperites(entityClass));
|
|
5282
|
+
try {
|
|
5283
|
+
const props = CLASS.describeProperites(entityClass);
|
|
5284
|
+
let columns = props
|
|
5285
|
+
.filter(prop => this.allowedColumns.length > 0
|
|
5286
|
+
? this.allowedColumns.includes(prop)
|
|
5287
|
+
: true)
|
|
5288
|
+
.map(prop => {
|
|
5289
|
+
return {
|
|
5290
|
+
header: _.upperCase(prop),
|
|
5291
|
+
field: prop,
|
|
5292
|
+
};
|
|
5293
|
+
});
|
|
5294
|
+
const extra = this.allowedColumns.filter(f => !props.includes(f));
|
|
5295
|
+
columns = [
|
|
5296
|
+
...columns,
|
|
5297
|
+
...extra.map(prop => {
|
|
5298
|
+
return {
|
|
5299
|
+
header: _.upperCase(prop),
|
|
5300
|
+
field: prop,
|
|
5301
|
+
};
|
|
5302
|
+
}),
|
|
5303
|
+
];
|
|
5304
|
+
if (!this.expandable) {
|
|
5305
|
+
for (let index = 0; index < columns.length; index++) {
|
|
5306
|
+
const col = columns[index];
|
|
5307
|
+
delete col.showExpand;
|
|
4520
5308
|
}
|
|
4521
|
-
|
|
4522
|
-
|
|
5309
|
+
}
|
|
5310
|
+
this.columns = columns;
|
|
4523
5311
|
}
|
|
4524
|
-
|
|
4525
|
-
|
|
4526
|
-
|
|
4527
|
-
|
|
4528
|
-
|
|
5312
|
+
catch (error) {
|
|
5313
|
+
console.error(error);
|
|
5314
|
+
}
|
|
5315
|
+
}
|
|
5316
|
+
else {
|
|
5317
|
+
}
|
|
5318
|
+
if (!this.entity) {
|
|
5319
|
+
this.showPaginator = false;
|
|
5320
|
+
}
|
|
5321
|
+
await this.retriveData();
|
|
5322
|
+
}
|
|
5323
|
+
ngOnDestroy() {
|
|
5324
|
+
this.sub.unsubscribe();
|
|
5325
|
+
}
|
|
5326
|
+
async getNextPage(e) {
|
|
5327
|
+
this.pageNumber = e.pageIndex + 1;
|
|
5328
|
+
this.pageSize = e.pageSize;
|
|
5329
|
+
await this.retriveData();
|
|
5330
|
+
}
|
|
5331
|
+
async retriveData() {
|
|
5332
|
+
// @ts-ignore
|
|
5333
|
+
}
|
|
5334
|
+
expansionRow(e) {
|
|
5335
|
+
this.expansionChange.next(e);
|
|
5336
|
+
}
|
|
5337
|
+
onTableContextMenu(e) {
|
|
5338
|
+
log.i('context menu event', e);
|
|
5339
|
+
}
|
|
5340
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: TaonTableComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
5341
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.5", type: TaonTableComponent, selector: "taon-table", inputs: { pageNumber: "pageNumber", pageSize: "pageSize", allowedColumns: "allowedColumns", entity: "entity", expansionTemplate: "expansionTemplate", rows: "rows", columns: "columns", pageSizeOptions: "pageSizeOptions" }, outputs: { expansionChange: "expansionChange", addingItem: "addingItem" }, viewQueries: [{ propertyName: "search", first: true, predicate: ["search"], descendants: true, static: true }], ngImport: i0, template: "<br />\n<columns-container>\n <column grow>\n <mat-form-field class=\"search-input\">\n <input matInput placeholder=\"Type to search table...\" #search />\n </mat-form-field>\n </column>\n <column [width]=\"80\">\n <button\n mat-fab\n [ngClass]=\"{ 'half-opacity': !search.value }\"\n class=\"undo-button\"\n color=\"secondary\"\n (click)=\"search.value = ''\">\n <mat-icon>close </mat-icon>\n </button>\n </column>\n\n <column [width]=\"80\">\n <button\n mat-fab\n (click)=\"addingItem.next()\"\n class=\"undo-button\"\n color=\"primary\">\n <mat-icon>add</mat-icon>\n </button>\n </column>\n</columns-container>\n\n<mtx-grid\n *ngIf=\"rows && columns\"\n [data]=\"rows\"\n [columns]=\"columns\"\n [expandable]=\"expandable\"\n [expansionTemplate]=\"expansionTemplate\"\n (expansionChange)=\"expansionRow($event)\"\n [length]=\"totalElements\"\n [loading]=\"isLoading\"\n [pageOnFront]=\"false\"\n [pageIndex]=\"pageNumber - 1\"\n [pageSize]=\"pageSize\"\n [pageSizeOptions]=\"pageSizeOptions\"\n [showPaginator]=\"showPaginator\"\n (page)=\"getNextPage($event)\">\n</mtx-grid>\n", styles: [":host{min-height:250px}.search-input{width:100%}.undo-button{margin-left:10px}.half-opacity{opacity:.2}\n"], dependencies: [{ kind: "directive", type: i2$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2$2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "component", type: i3.MtxGrid, selector: "mtx-grid", inputs: ["displayedColumns", "columns", "data", "length", "loading", "trackBy", "columnResizable", "emptyValuePlaceholder", "pageOnFront", "showPaginator", "pageDisabled", "showFirstLastButtons", "pageIndex", "pageSize", "pageSizeOptions", "hidePageSize", "paginationTemplate", "sortOnFront", "sortActive", "sortDirection", "sortDisableClear", "sortDisabled", "sortStart", "rowHover", "rowStriped", "expandable", "expansionTemplate", "multiSelectable", "multiSelectionWithClick", "rowSelectable", "hideRowSelectionCheckbox", "disableRowClickSelection", "rowSelectionFormatter", "rowClassFormatter", "rowSelected", "cellSelectable", "showToolbar", "toolbarTitle", "toolbarTemplate", "columnHideable", "columnHideableChecked", "columnSortable", "columnPinnable", "columnPinOptions", "showColumnMenuButton", "columnMenuButtonText", "columnMenuButtonType", "columnMenuButtonColor", "columnMenuButtonClass", "columnMenuButtonIcon", "showColumnMenuHeader", "columnMenuHeaderText", "columnMenuHeaderTemplate", "showColumnMenuFooter", "columnMenuFooterText", "columnMenuFooterTemplate", "noResultText", "noResultTemplate", "headerTemplate", "headerExtraTemplate", "cellTemplate", "useContentRowTemplate", "useContentHeaderRowTemplate", "useContentFooterRowTemplate", "showSummary", "summaryTemplate", "showSidebar", "sidebarTemplate", "showStatusbar", "statusbarTemplate"], outputs: ["page", "sortChange", "rowClick", "rowContextMenu", "expansionChange", "rowSelectedChange", "cellSelectedChange", "columnChange"], exportAs: ["mtxGrid"] }, { kind: "directive", type: i4.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i1$3.ColumnsComponent, selector: "columns-container" }, { kind: "component", type: i1$3.ColumnComponent, selector: "column", inputs: ["width"] }, { kind: "directive", type: i1$3.DirectiveGrow, selector: "[grow]" }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i6$1.MatFabButton, selector: "button[mat-fab]", inputs: ["extended"], exportAs: ["matButton"] }] }); }
|
|
5342
|
+
}
|
|
5343
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: TaonTableComponent, decorators: [{
|
|
5344
|
+
type: Component,
|
|
5345
|
+
args: [{ selector: 'taon-table', template: "<br />\n<columns-container>\n <column grow>\n <mat-form-field class=\"search-input\">\n <input matInput placeholder=\"Type to search table...\" #search />\n </mat-form-field>\n </column>\n <column [width]=\"80\">\n <button\n mat-fab\n [ngClass]=\"{ 'half-opacity': !search.value }\"\n class=\"undo-button\"\n color=\"secondary\"\n (click)=\"search.value = ''\">\n <mat-icon>close </mat-icon>\n </button>\n </column>\n\n <column [width]=\"80\">\n <button\n mat-fab\n (click)=\"addingItem.next()\"\n class=\"undo-button\"\n color=\"primary\">\n <mat-icon>add</mat-icon>\n </button>\n </column>\n</columns-container>\n\n<mtx-grid\n *ngIf=\"rows && columns\"\n [data]=\"rows\"\n [columns]=\"columns\"\n [expandable]=\"expandable\"\n [expansionTemplate]=\"expansionTemplate\"\n (expansionChange)=\"expansionRow($event)\"\n [length]=\"totalElements\"\n [loading]=\"isLoading\"\n [pageOnFront]=\"false\"\n [pageIndex]=\"pageNumber - 1\"\n [pageSize]=\"pageSize\"\n [pageSizeOptions]=\"pageSizeOptions\"\n [showPaginator]=\"showPaginator\"\n (page)=\"getNextPage($event)\">\n</mtx-grid>\n", styles: [":host{min-height:250px}.search-input{width:100%}.undo-button{margin-left:10px}.half-opacity{opacity:.2}\n"] }]
|
|
5346
|
+
}], ctorParameters: () => [], propDecorators: { pageNumber: [{
|
|
5347
|
+
type: Input
|
|
5348
|
+
}], pageSize: [{
|
|
5349
|
+
type: Input
|
|
5350
|
+
}], allowedColumns: [{
|
|
5351
|
+
type: Input
|
|
5352
|
+
}], entity: [{
|
|
5353
|
+
type: Input
|
|
5354
|
+
}], expansionTemplate: [{
|
|
5355
|
+
type: Input
|
|
5356
|
+
}], rows: [{
|
|
5357
|
+
type: Input
|
|
5358
|
+
}], columns: [{
|
|
5359
|
+
type: Input
|
|
5360
|
+
}], pageSizeOptions: [{
|
|
5361
|
+
type: Input
|
|
5362
|
+
}], expansionChange: [{
|
|
5363
|
+
type: Output
|
|
5364
|
+
}], addingItem: [{
|
|
5365
|
+
type: Output
|
|
5366
|
+
}], search: [{
|
|
5367
|
+
type: ViewChild,
|
|
5368
|
+
args: ['search', { static: true }]
|
|
5369
|
+
}] } });
|
|
4529
5370
|
;
|
|
4530
|
-
({}); // @--end-of-file-for-module=taon lib/
|
|
5371
|
+
({}); // @--end-of-file-for-module=taon lib/ui/taon-table/taon-table.component.ts
|
|
5372
|
+
|
|
5373
|
+
class TaonTableModule {
|
|
5374
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: TaonTableModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
5375
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.1.5", ngImport: i0, type: TaonTableModule, declarations: [TaonTableComponent], imports: [CommonModule,
|
|
5376
|
+
MatSelectModule,
|
|
5377
|
+
MtxGridModule,
|
|
5378
|
+
MatFormFieldModule,
|
|
5379
|
+
MatInputModule,
|
|
5380
|
+
StaticColumnsModule,
|
|
5381
|
+
MatIconModule,
|
|
5382
|
+
MatButtonModule,
|
|
5383
|
+
FormsModule,
|
|
5384
|
+
ReactiveFormsModule], exports: [TaonTableComponent] }); }
|
|
5385
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: TaonTableModule, imports: [CommonModule,
|
|
5386
|
+
MatSelectModule,
|
|
5387
|
+
MtxGridModule,
|
|
5388
|
+
MatFormFieldModule,
|
|
5389
|
+
MatInputModule,
|
|
5390
|
+
StaticColumnsModule,
|
|
5391
|
+
MatIconModule,
|
|
5392
|
+
MatButtonModule,
|
|
5393
|
+
FormsModule,
|
|
5394
|
+
ReactiveFormsModule] }); }
|
|
5395
|
+
}
|
|
5396
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: TaonTableModule, decorators: [{
|
|
5397
|
+
type: NgModule,
|
|
5398
|
+
args: [{
|
|
5399
|
+
imports: [
|
|
5400
|
+
CommonModule,
|
|
5401
|
+
MatSelectModule,
|
|
5402
|
+
MtxGridModule,
|
|
5403
|
+
MatFormFieldModule,
|
|
5404
|
+
MatInputModule,
|
|
5405
|
+
StaticColumnsModule,
|
|
5406
|
+
MatIconModule,
|
|
5407
|
+
MatButtonModule,
|
|
5408
|
+
FormsModule,
|
|
5409
|
+
ReactiveFormsModule,
|
|
5410
|
+
],
|
|
5411
|
+
exports: [TaonTableComponent],
|
|
5412
|
+
declarations: [TaonTableComponent],
|
|
5413
|
+
}]
|
|
5414
|
+
}] });
|
|
5415
|
+
;
|
|
5416
|
+
({}); // @--end-of-file-for-module=taon lib/ui/taon-table/taon-table.module.ts
|
|
5417
|
+
|
|
5418
|
+
;
|
|
5419
|
+
({}); // @--end-of-file-for-module=taon lib/ui/taon-table/index.ts
|
|
5420
|
+
|
|
5421
|
+
class TaonAdminService {
|
|
5422
|
+
/**
|
|
5423
|
+
* @deprecated
|
|
5424
|
+
*/
|
|
5425
|
+
disableScroll() {
|
|
5426
|
+
}
|
|
5427
|
+
constructor(cdr) {
|
|
5428
|
+
this.cdr = cdr;
|
|
5429
|
+
this.admin = window['taon'];
|
|
5430
|
+
}
|
|
5431
|
+
addTab(name, template) {
|
|
5432
|
+
this.admin.cmp.tabs.push({
|
|
5433
|
+
name,
|
|
5434
|
+
template,
|
|
5435
|
+
});
|
|
5436
|
+
}
|
|
5437
|
+
init(taonAdminModeConfigurationComponent) {
|
|
5438
|
+
this.taonAdminModeConfigurationComponent =
|
|
5439
|
+
taonAdminModeConfigurationComponent;
|
|
5440
|
+
}
|
|
5441
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: TaonAdminService, deps: [{ token: i0.ApplicationRef }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
5442
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: TaonAdminService, providedIn: 'root' }); }
|
|
5443
|
+
}
|
|
5444
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: TaonAdminService, decorators: [{
|
|
5445
|
+
type: Injectable,
|
|
5446
|
+
args: [{ providedIn: 'root' }]
|
|
5447
|
+
}], ctorParameters: () => [{ type: i0.ApplicationRef }] });
|
|
5448
|
+
;
|
|
5449
|
+
({}); // @--end-of-file-for-module=taon lib/ui/taon-admin-mode-configuration/taon-admin-control.service.ts
|
|
5450
|
+
|
|
5451
|
+
class TaonAdminModeConfigurationComponent {
|
|
5452
|
+
get opened() {
|
|
5453
|
+
return !this.isIframe && this.admin.adminPanelIsOpen;
|
|
5454
|
+
}
|
|
5455
|
+
set opened(v) {
|
|
5456
|
+
if (v && !this.openedOnce) {
|
|
5457
|
+
this.openedOnce = true;
|
|
5458
|
+
}
|
|
5459
|
+
if (this.wasOpenDraggablePopup) {
|
|
5460
|
+
this.wasOpenDraggablePopup = false;
|
|
5461
|
+
this.admin.draggablePopupMode = true;
|
|
5462
|
+
}
|
|
5463
|
+
this.admin.adminPanelIsOpen = v;
|
|
5464
|
+
}
|
|
5465
|
+
constructor(breakpointsService) {
|
|
5466
|
+
this.breakpointsService = breakpointsService;
|
|
5467
|
+
this.$destroy = new Subject();
|
|
5468
|
+
this.cdr = inject$1(ChangeDetectorRef);
|
|
5469
|
+
this.taonAdminService = inject$1(TaonAdminService);
|
|
5470
|
+
this.tabs = [];
|
|
5471
|
+
this.admin = window['taon'];
|
|
5472
|
+
this.isWebSQLMode = Helpers.isWebSQL;
|
|
5473
|
+
this.hideTaonToolsInProduction = ENV.hideTaonToolsInProduction && ENV.angularProd;
|
|
5474
|
+
this.isIframe = window.location !== window.parent.location;
|
|
5475
|
+
this.height = 100;
|
|
5476
|
+
this.openedOnce = false;
|
|
5477
|
+
this.reloading = false;
|
|
5478
|
+
this.showPasscode = _$1.isString(ENV.passcode) || _$1.isObject(ENV.passcode);
|
|
5479
|
+
this.passcode = _$1.isString(ENV.passcode)
|
|
5480
|
+
? ENV.passcode
|
|
5481
|
+
: _$1.isObject(ENV.passcode)
|
|
5482
|
+
? ENV.passcode.code
|
|
5483
|
+
: '';
|
|
5484
|
+
this.message = _$1.isObject(ENV.passcode)
|
|
5485
|
+
? ENV.passcode.message
|
|
5486
|
+
: void 0;
|
|
5487
|
+
this.dragPositionZero = { x: 0, y: 0 };
|
|
5488
|
+
this.taonAdminModeConfigurationDataChanged = new EventEmitter();
|
|
5489
|
+
this.taonAdminModeConfigurationData = {};
|
|
5490
|
+
this.admin.cmp = this;
|
|
5491
|
+
this.breakpointsService
|
|
5492
|
+
.listenTo()
|
|
5493
|
+
.pipe(takeUntil(this.$destroy))
|
|
5494
|
+
.subscribe(breakpoint => {
|
|
5495
|
+
// @ts-ignore
|
|
5496
|
+
this.isDesktop = breakpoint === 'desktop';
|
|
5497
|
+
});
|
|
5498
|
+
this.taonAdminService.init(this);
|
|
5499
|
+
}
|
|
5500
|
+
reloadTabs() {
|
|
5501
|
+
this.reloading = true;
|
|
5502
|
+
setTimeout(() => {
|
|
5503
|
+
this.reloading = false;
|
|
5504
|
+
console.log('reloading done');
|
|
5505
|
+
});
|
|
5506
|
+
}
|
|
5507
|
+
async ngOnInit() {
|
|
5508
|
+
await Stor.awaitPendingOperatios();
|
|
5509
|
+
this.dragPosition = { x: this.dragPositionX, y: this.dragPositionY };
|
|
5510
|
+
this.openedOnce = this.opened;
|
|
5511
|
+
}
|
|
5512
|
+
ngAfterViewInit() {
|
|
5513
|
+
//Called after ngAfterContentInit when the component's view has been initialized. Applies to components only.
|
|
5514
|
+
//Add 'implements AfterViewInit' to the class.
|
|
5515
|
+
setTimeout(() => {
|
|
5516
|
+
this.height = window.innerHeight;
|
|
5517
|
+
if (this.admin.draggablePopupMode) {
|
|
5518
|
+
this.reloadTabs();
|
|
5519
|
+
}
|
|
5520
|
+
});
|
|
5521
|
+
}
|
|
5522
|
+
ngOnDestroy() {
|
|
5523
|
+
this.$destroy.next(void 0);
|
|
5524
|
+
this.$destroy.complete();
|
|
5525
|
+
}
|
|
5526
|
+
onResize(event) {
|
|
5527
|
+
this.height = window.innerHeight;
|
|
5528
|
+
}
|
|
5529
|
+
async toogle() {
|
|
5530
|
+
this.opened = !this.opened;
|
|
5531
|
+
}
|
|
5532
|
+
async toogleFullScreen() {
|
|
5533
|
+
this.admin.draggablePopupMode = true;
|
|
5534
|
+
this.admin.draggablePopupModeFullScreen =
|
|
5535
|
+
!this.admin.draggablePopupModeFullScreen;
|
|
5536
|
+
this.resetDrag();
|
|
5537
|
+
}
|
|
5538
|
+
resetDrag() {
|
|
5539
|
+
this.dragPositionX = 0;
|
|
5540
|
+
this.dragPositionY = 0;
|
|
5541
|
+
this.dragPosition = { x: this.dragPositionX, y: this.dragPositionY };
|
|
5542
|
+
}
|
|
5543
|
+
moved(c) {
|
|
5544
|
+
this.dragPositionX += c.distance.x;
|
|
5545
|
+
this.dragPositionY += c.distance.y;
|
|
5546
|
+
}
|
|
5547
|
+
scrollTabs(event) {
|
|
5548
|
+
return;
|
|
5549
|
+
}
|
|
5550
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: TaonAdminModeConfigurationComponent, deps: [{ token: i1$3.BreakpointsService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
5551
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.5", type: TaonAdminModeConfigurationComponent, selector: "app-taon-admin-mode-configuration", inputs: { taonAdminModeConfigurationData: "taonAdminModeConfigurationData" }, outputs: { taonAdminModeConfigurationDataChanged: "taonAdminModeConfigurationDataChanged" }, host: { listeners: { "window:resize": "onResize($event)" } }, viewQueries: [{ propertyName: "tabGroup", first: true, predicate: ["tabGroup"], descendants: true }], ngImport: i0, template: "<!-- #region basic global components -->\n<taon-session-passcode\n *ngIf=\"showPasscode\"\n [passcode]=\"passcode\"\n [message]=\"message\" />\n<!-- <taon-progress-bar [isDesktop]=\"isDesktop\"></taon-progress-bar> -->\n<!-- <taon-notifications></taon-notifications> -->\n<button\n mat-fab\n class=\"fab-button\"\n color=\"accent\"\n aria-label=\"Taon Admin Mode\"\n *ngIf=\"\n !admin.draggablePopupMode &&\n isDesktop &&\n !isIframe &&\n !hideTaonToolsInProduction\n \"\n (click)=\"toogle()\">\n <mat-icon>build</mat-icon>\n</button>\n<!-- #endregion -->\n\n<!-- #region small hidden button -->\n<!-- <button class=\"admin-show-button\"\n *ngIf=\"!admin.draggablePopupMode && isDesktop\"\n (click)=\"toogle()\"> Admin </button> -->\n<!-- #endregion -->\n\n<ng-template #contentNoScroll>\n <ng-content> </ng-content>\n</ng-template>\n\n<ng-template #content>\n <ng-scrollbar>\n <ng-container [ngTemplateOutlet]=\"contentNoScroll\"></ng-container>\n </ng-scrollbar>\n</ng-template>\n\n<!-- #region admin tabs -->\n<ng-template #adminTabs>\n <div class=\"taon-header-admin-wrapper\">\n <columns-container\n class=\"taon-header-admin\"\n [ngClass]=\"{ 'draggable-column': admin.draggablePopupMode }\">\n <column width=\"200\" class=\"logo-header\">\n <img\n *ngIf=\"openedOnce\"\n src=\"assets/assets-for/taon/shared/logo-header-admin-mode.png\" />\n </column>\n\n <column grow>\n <!-- <span>Super Admin Mode</span> -->\n </column>\n\n <column\n width=\"40\"\n *ngIf=\"\n !admin.draggablePopupModeFullScreen && !admin.draggablePopupMode\n \">\n <button\n mat-icon-button\n *ngIf=\"admin.draggablePopupMode\"\n (click)=\"\n admin.draggablePopupMode = false;\n opened = false;\n wasOpenDraggablePopup = true\n \"\n class=\"admin-close-button\">\n <mat-icon>close </mat-icon>\n </button>\n\n <button\n mat-icon-button\n *ngIf=\"!admin.draggablePopupMode\"\n (click)=\"toogle()\"\n class=\"admin-close-button\">\n <mat-icon>close</mat-icon>\n </button>\n </column>\n\n <column width=\"40\">\n <button\n mat-icon-button\n *ngIf=\"!admin.draggablePopupModeFullScreen\"\n class=\"admin-close-button\"\n (click)=\"toogleFullScreen()\">\n <mat-icon>fullscreen</mat-icon>\n </button>\n <button\n mat-icon-button\n *ngIf=\"admin.draggablePopupModeFullScreen\"\n class=\"admin-close-button\"\n (click)=\"toogleFullScreen()\">\n <mat-icon>close_fullscreen</mat-icon>\n </button>\n </column>\n\n <column width=\"40\" *ngIf=\"!admin.draggablePopupModeFullScreen\">\n <button\n mat-icon-button\n *ngIf=\"!admin.draggablePopupMode\"\n (click)=\"admin.draggablePopupMode = true\"\n class=\"admin-close-button\">\n <mat-icon>launch</mat-icon>\n </button>\n\n <button\n mat-icon-button\n *ngIf=\"admin.draggablePopupMode\"\n (click)=\"admin.draggablePopupMode = false; resetDrag()\"\n class=\"admin-close-button\">\n <mat-icon style=\"transform: rotate(180deg)\">login</mat-icon>\n </button>\n </column>\n </columns-container>\n </div>\n\n <columns-container\n [ngClass]=\"{ 'draggable-column': admin.draggablePopupMode }\">\n <column grow>\n <mat-tab-group\n dynamicHeight\n (wheel)=\"scrollTabs($event)\"\n #tabGroup\n [selectedIndex]=\"selectedIndex\"\n (selectedIndexChange)=\"selectedIndex = $event\">\n <mat-tab label=\"DB/Cache\">\n <section>\n <mat-card>\n <mat-card-header>\n <mat-card-subtitle>WEBSQL MODE</mat-card-subtitle>\n </mat-card-header>\n <mat-card-content>\n <mat-checkbox\n [disabled]=\"!isWebSQLMode\"\n [ngModel]=\"admin.keepWebsqlDbDataAfterReload\"\n (change)=\"\n admin.setKeepWebsqlDbDataAfterReload($event.checked)\n \">\n Don't remove data when reloading\n </mat-checkbox>\n </mat-card-content>\n </mat-card>\n </section>\n <br />\n <taon-db-admin />\n </mat-tab>\n\n <mat-tab label=\"Files\" *ngIf=\"admin.enabledTabs.includes('files')\">\n <section>\n <mat-checkbox\n [ngModel]=\"admin.filesEditMode\"\n (change)=\"admin.setEditMode($event.checked)\"\n >Edit mode</mat-checkbox\n >\n </section>\n <!-- admin.filesEditMode: {{ admin.filesEditMode }} -->\n <!-- <taon-admin-edit-mode *ngIf=\"admin.filesEditMode\">\n </taon-admin-edit-mode> -->\n <br />\n <hr *ngIf=\"admin.filesEditMode\" />\n <!-- <section>\n <button mat-raised-button>[TODO] Clear Files from browser cache </button> <br>\n <button mat-raised-button>[TODO] Start files export (as zip) </button> <br>\n <button mat-raised-button>[TODO] Import whole database (from zip) </button><br>\n </section> -->\n </mat-tab>\n <mat-tab *ngFor=\"let tab of tabs\" label=\"{{ tab.name }}\">\n <div\n class=\"full-tabs\"\n [style.height.px]=\"height - 150\"\n *ngIf=\"!isIframe\">\n <ng-container *ngTemplateOutlet=\"tab.template\"></ng-container>\n </div>\n <ng-container *ngIf=\"isIframe\">\n <ng-container *ngTemplateOutlet=\"tab.template\"></ng-container>\n </ng-container>\n </mat-tab>\n\n <!-- <mat-tab label=\"Portal\">\n <section>\n <mat-checkbox>[TODO] Maintenance Mode for whole portal</mat-checkbox>\n\n <mat-expansion-panel>\n\n <mat-expansion-panel-header>\n [TODO] Active User: 80432\n </mat-expansion-panel-header>\n <section>\n <button mat-raised-button>[TODO] Send notification to users </button><br>\n <button mat-raised-button>[TODO] Send email to users </button><br>\n </section>\n </mat-expansion-panel>\n <mat-expansion-panel>\n <mat-expansion-panel-header>\n [TODO] Enable features\n </mat-expansion-panel-header>\n <mat-checkbox>[TODO] AB testing</mat-checkbox> <br>\n <mat-checkbox>\n [TODO] Newsletter email question popup\n </mat-checkbox> <br>\n <mat-checkbox>\n [TODO] Promotion popup\n </mat-checkbox> <br>\n </mat-expansion-panel>\n </section>\n </mat-tab>\n <mat-tab label=\"User\">\n Welcome in user managements\n </mat-tab>\n <mat-tab label=\"Translations\">\n Welcome in user managements\n </mat-tab> -->\n </mat-tab-group>\n </column>\n </columns-container>\n</ng-template>\n<!-- #endregion -->\n\n<!-- #region small/mobile draggable popup windows -->\n<div\n class=\"draggable-popup-mode-window\"\n *ngIf=\"\n admin.draggablePopupMode && !admin.draggablePopupModeFullScreen && !isIframe\n \"\n cdkDrag\n [cdkDragFreeDragPosition]=\"dragPosition\"\n (cdkDragEnded)=\"moved($event)\">\n <ng-scrollbar>\n <ng-container [ngTemplateOutlet]=\"adminTabs\"></ng-container>\n </ng-scrollbar>\n</div>\n<!-- #endregion -->\n\n<!-- #region fullscreen draggable popup window -->\n<div\n class=\"draggable-popup-mode-window-full\"\n *ngIf=\"\n admin.draggablePopupMode &&\n admin.draggablePopupModeFullScreen &&\n !isIframe &&\n !reloading\n \"\n cdkDrag\n [cdkDragFreeDragPosition]=\"dragPositionZero\">\n <ng-container [ngTemplateOutlet]=\"adminTabs\"></ng-container>\n</div>\n<!-- #endregion -->\n\n<!-- #region content when not in draggable (or fullscreen draggable) popup -->\n<div\n [style.height.px]=\"height\"\n *ngIf=\"\n (isIframe ||\n !isDesktop ||\n admin.draggablePopupMode ||\n admin.draggablePopupModeFullScreen) &&\n !reloading\n \"\n style=\"width: 100%; display: block\"\n class=\"content\">\n <ng-container\n [ngTemplateOutlet]=\"\n admin.scrollableEnabled ? content : contentNoScroll\n \"></ng-container>\n</div>\n<!-- #endregion -->\n\n<!-- #region draggable popup window -->\n<mat-drawer-container\n *ngIf=\"!admin.draggablePopupMode && isDesktop && !isIframe\"\n class=\"example-container\"\n [style.height.px]=\"height\"\n style=\"background-color: transparent\"\n (backdropClick)=\"opened = false\"\n [hasBackdrop]=\"false\">\n <mat-drawer #drawer style=\"width: 580px\" [opened]=\"opened\" [mode]=\"'side'\">\n <ng-container [ngTemplateOutlet]=\"adminTabs\"></ng-container>\n </mat-drawer>\n <mat-drawer-content style=\"overflow: hidden\">\n <ng-container\n *ngIf=\"!admin.draggablePopupMode && !reloading\"\n [ngTemplateOutlet]=\"\n admin.scrollableEnabled ? content : contentNoScroll\n \"></ng-container>\n </mat-drawer-content>\n</mat-drawer-container>\n<!-- #endregion -->\n", styles: ["section{display:block;padding:10px}section>*{margin-top:0!important;margin-bottom:10px!important}section>*:last-child{margin-bottom:0!important}:host{display:block}.draggable-column{display:block!important;width:100%!important}.admin-show-button{position:fixed;bottom:100px;left:-15px;z-index:2147483647;transform:rotate(90deg);border:0px;color:#fff;background:gray;opacity:.1;cursor:pointer}.admin-show-button:hover{opacity:1}.taon-ui-super-admin-mode{font-family:JosefinSans-Bold;text-align:right;margin-right:10px}mat-drawer{margin:0;background-color:#dcdcdc!important}.taon-header-admin-wrapper{overflow:hidden;width:100%;display:block}.taon-header-admin{background:#fff;box-shadow:0 -9px 6px 6px #000;height:47px}.taon-header-admin .logo-header img{height:18px;padding:8px;position:relative;float:left;top:7px;box-sizing:content-box;transform:scale(1.5);left:49px}.draggable-popup-mode-window{width:600px;height:500px;border:solid 1px #ccc;color:#000000de;cursor:move;justify-content:center;align-items:center;background:#fff;border-radius:4px;position:fixed;z-index:105;background-color:#dcdcdc!important;transition:box-shadow .2s cubic-bezier(0,0,.2,1);box-shadow:0 3px 1px -2px #0003,0 2px 2px #00000024,0 1px 5px #0000001f}.draggable-popup-mode-window:active{box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f}.draggable-popup-mode-window-full{width:100%;height:100%;overflow:scroll;color:#000000de;justify-content:center;align-items:center;background:#fff;border-radius:4px;position:fixed;z-index:105;background-color:#dcdcdc!important}.admin-close-button{float:right}.fab-button{position:fixed;right:110px;bottom:100px;z-index:10;background-color:#dcdcdc;color:#8f8f8f}.full-tabs{padding:10px}.mat-drawer-container-full-screen{background-color:red}\n"], dependencies: [{ kind: "directive", type: i2$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i1$3.ColumnsComponent, selector: "columns-container" }, { kind: "component", type: i1$3.ColumnComponent, selector: "column", inputs: ["width"] }, { kind: "directive", type: i1$3.DirectiveGrow, selector: "[grow]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i4$1.NgScrollbar, selector: "ng-scrollbar:not([externalViewport])", exportAs: ["ngScrollbar"] }, { kind: "directive", type: i5.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "component", type: i6$1.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: i6$1.MatFabButton, selector: "button[mat-fab]", inputs: ["extended"], exportAs: ["matButton"] }, { kind: "component", type: i7.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i7.MatCardContent, selector: "mat-card-content" }, { kind: "component", type: i7.MatCardHeader, selector: "mat-card-header" }, { kind: "directive", type: i7.MatCardSubtitle, selector: "mat-card-subtitle, [mat-card-subtitle], [matCardSubtitle]" }, { kind: "component", type: i8.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i10.MatDrawer, selector: "mat-drawer", inputs: ["position", "mode", "disableClose", "autoFocus", "opened"], outputs: ["openedChange", "opened", "openedStart", "closed", "closedStart", "positionChanged"], exportAs: ["matDrawer"] }, { kind: "component", type: i10.MatDrawerContainer, selector: "mat-drawer-container", inputs: ["autosize", "hasBackdrop"], outputs: ["backdropClick"], exportAs: ["matDrawerContainer"] }, { kind: "component", type: i10.MatDrawerContent, selector: "mat-drawer-content" }, { kind: "component", type: i11.MatTab, selector: "mat-tab", inputs: ["disabled", "label", "aria-label", "aria-labelledby", "labelClass", "bodyClass"], exportAs: ["matTab"] }, { kind: "component", type: i11.MatTabGroup, selector: "mat-tab-group", inputs: ["color", "fitInkBarToContent", "mat-stretch-tabs", "dynamicHeight", "selectedIndex", "headerPosition", "animationDuration", "contentTabIndex", "disablePagination", "disableRipple", "preserveContent", "backgroundColor", "aria-label", "aria-labelledby"], outputs: ["selectedIndexChange", "focusChange", "animationDone", "selectedTabChange"], exportAs: ["matTabGroup"] }, { kind: "component", type: TaonSessionPasscodeComponent, selector: "taon-session-passcode", inputs: ["passcode", "message"] }] }); }
|
|
5552
|
+
}
|
|
5553
|
+
__decorate([
|
|
5554
|
+
Stor.property.in.localstorage
|
|
5555
|
+
.for(TaonAdminModeConfigurationComponent)
|
|
5556
|
+
.withDefaultValue(0),
|
|
5557
|
+
__metadata("design:type", Number)
|
|
5558
|
+
], TaonAdminModeConfigurationComponent.prototype, "dragPositionX", void 0);
|
|
5559
|
+
__decorate([
|
|
5560
|
+
Stor.property.in.localstorage
|
|
5561
|
+
.for(TaonAdminModeConfigurationComponent)
|
|
5562
|
+
.withDefaultValue(0),
|
|
5563
|
+
__metadata("design:type", Number)
|
|
5564
|
+
], TaonAdminModeConfigurationComponent.prototype, "dragPositionY", void 0);
|
|
5565
|
+
__decorate([
|
|
5566
|
+
Stor.property.in.localstorage
|
|
5567
|
+
.for(TaonAdminModeConfigurationComponent)
|
|
5568
|
+
.withDefaultValue(0),
|
|
5569
|
+
__metadata("design:type", Number)
|
|
5570
|
+
], TaonAdminModeConfigurationComponent.prototype, "selectedIndex", void 0);
|
|
5571
|
+
__decorate([
|
|
5572
|
+
Stor.property.in.localstorage
|
|
5573
|
+
.for(TaonAdminModeConfigurationComponent)
|
|
5574
|
+
.withDefaultValue(false),
|
|
5575
|
+
__metadata("design:type", Boolean)
|
|
5576
|
+
], TaonAdminModeConfigurationComponent.prototype, "wasOpenDraggablePopup", void 0);
|
|
5577
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: TaonAdminModeConfigurationComponent, decorators: [{
|
|
5578
|
+
type: Component,
|
|
5579
|
+
args: [{ selector: 'app-taon-admin-mode-configuration', template: "<!-- #region basic global components -->\n<taon-session-passcode\n *ngIf=\"showPasscode\"\n [passcode]=\"passcode\"\n [message]=\"message\" />\n<!-- <taon-progress-bar [isDesktop]=\"isDesktop\"></taon-progress-bar> -->\n<!-- <taon-notifications></taon-notifications> -->\n<button\n mat-fab\n class=\"fab-button\"\n color=\"accent\"\n aria-label=\"Taon Admin Mode\"\n *ngIf=\"\n !admin.draggablePopupMode &&\n isDesktop &&\n !isIframe &&\n !hideTaonToolsInProduction\n \"\n (click)=\"toogle()\">\n <mat-icon>build</mat-icon>\n</button>\n<!-- #endregion -->\n\n<!-- #region small hidden button -->\n<!-- <button class=\"admin-show-button\"\n *ngIf=\"!admin.draggablePopupMode && isDesktop\"\n (click)=\"toogle()\"> Admin </button> -->\n<!-- #endregion -->\n\n<ng-template #contentNoScroll>\n <ng-content> </ng-content>\n</ng-template>\n\n<ng-template #content>\n <ng-scrollbar>\n <ng-container [ngTemplateOutlet]=\"contentNoScroll\"></ng-container>\n </ng-scrollbar>\n</ng-template>\n\n<!-- #region admin tabs -->\n<ng-template #adminTabs>\n <div class=\"taon-header-admin-wrapper\">\n <columns-container\n class=\"taon-header-admin\"\n [ngClass]=\"{ 'draggable-column': admin.draggablePopupMode }\">\n <column width=\"200\" class=\"logo-header\">\n <img\n *ngIf=\"openedOnce\"\n src=\"assets/assets-for/taon/shared/logo-header-admin-mode.png\" />\n </column>\n\n <column grow>\n <!-- <span>Super Admin Mode</span> -->\n </column>\n\n <column\n width=\"40\"\n *ngIf=\"\n !admin.draggablePopupModeFullScreen && !admin.draggablePopupMode\n \">\n <button\n mat-icon-button\n *ngIf=\"admin.draggablePopupMode\"\n (click)=\"\n admin.draggablePopupMode = false;\n opened = false;\n wasOpenDraggablePopup = true\n \"\n class=\"admin-close-button\">\n <mat-icon>close </mat-icon>\n </button>\n\n <button\n mat-icon-button\n *ngIf=\"!admin.draggablePopupMode\"\n (click)=\"toogle()\"\n class=\"admin-close-button\">\n <mat-icon>close</mat-icon>\n </button>\n </column>\n\n <column width=\"40\">\n <button\n mat-icon-button\n *ngIf=\"!admin.draggablePopupModeFullScreen\"\n class=\"admin-close-button\"\n (click)=\"toogleFullScreen()\">\n <mat-icon>fullscreen</mat-icon>\n </button>\n <button\n mat-icon-button\n *ngIf=\"admin.draggablePopupModeFullScreen\"\n class=\"admin-close-button\"\n (click)=\"toogleFullScreen()\">\n <mat-icon>close_fullscreen</mat-icon>\n </button>\n </column>\n\n <column width=\"40\" *ngIf=\"!admin.draggablePopupModeFullScreen\">\n <button\n mat-icon-button\n *ngIf=\"!admin.draggablePopupMode\"\n (click)=\"admin.draggablePopupMode = true\"\n class=\"admin-close-button\">\n <mat-icon>launch</mat-icon>\n </button>\n\n <button\n mat-icon-button\n *ngIf=\"admin.draggablePopupMode\"\n (click)=\"admin.draggablePopupMode = false; resetDrag()\"\n class=\"admin-close-button\">\n <mat-icon style=\"transform: rotate(180deg)\">login</mat-icon>\n </button>\n </column>\n </columns-container>\n </div>\n\n <columns-container\n [ngClass]=\"{ 'draggable-column': admin.draggablePopupMode }\">\n <column grow>\n <mat-tab-group\n dynamicHeight\n (wheel)=\"scrollTabs($event)\"\n #tabGroup\n [selectedIndex]=\"selectedIndex\"\n (selectedIndexChange)=\"selectedIndex = $event\">\n <mat-tab label=\"DB/Cache\">\n <section>\n <mat-card>\n <mat-card-header>\n <mat-card-subtitle>WEBSQL MODE</mat-card-subtitle>\n </mat-card-header>\n <mat-card-content>\n <mat-checkbox\n [disabled]=\"!isWebSQLMode\"\n [ngModel]=\"admin.keepWebsqlDbDataAfterReload\"\n (change)=\"\n admin.setKeepWebsqlDbDataAfterReload($event.checked)\n \">\n Don't remove data when reloading\n </mat-checkbox>\n </mat-card-content>\n </mat-card>\n </section>\n <br />\n <taon-db-admin />\n </mat-tab>\n\n <mat-tab label=\"Files\" *ngIf=\"admin.enabledTabs.includes('files')\">\n <section>\n <mat-checkbox\n [ngModel]=\"admin.filesEditMode\"\n (change)=\"admin.setEditMode($event.checked)\"\n >Edit mode</mat-checkbox\n >\n </section>\n <!-- admin.filesEditMode: {{ admin.filesEditMode }} -->\n <!-- <taon-admin-edit-mode *ngIf=\"admin.filesEditMode\">\n </taon-admin-edit-mode> -->\n <br />\n <hr *ngIf=\"admin.filesEditMode\" />\n <!-- <section>\n <button mat-raised-button>[TODO] Clear Files from browser cache </button> <br>\n <button mat-raised-button>[TODO] Start files export (as zip) </button> <br>\n <button mat-raised-button>[TODO] Import whole database (from zip) </button><br>\n </section> -->\n </mat-tab>\n <mat-tab *ngFor=\"let tab of tabs\" label=\"{{ tab.name }}\">\n <div\n class=\"full-tabs\"\n [style.height.px]=\"height - 150\"\n *ngIf=\"!isIframe\">\n <ng-container *ngTemplateOutlet=\"tab.template\"></ng-container>\n </div>\n <ng-container *ngIf=\"isIframe\">\n <ng-container *ngTemplateOutlet=\"tab.template\"></ng-container>\n </ng-container>\n </mat-tab>\n\n <!-- <mat-tab label=\"Portal\">\n <section>\n <mat-checkbox>[TODO] Maintenance Mode for whole portal</mat-checkbox>\n\n <mat-expansion-panel>\n\n <mat-expansion-panel-header>\n [TODO] Active User: 80432\n </mat-expansion-panel-header>\n <section>\n <button mat-raised-button>[TODO] Send notification to users </button><br>\n <button mat-raised-button>[TODO] Send email to users </button><br>\n </section>\n </mat-expansion-panel>\n <mat-expansion-panel>\n <mat-expansion-panel-header>\n [TODO] Enable features\n </mat-expansion-panel-header>\n <mat-checkbox>[TODO] AB testing</mat-checkbox> <br>\n <mat-checkbox>\n [TODO] Newsletter email question popup\n </mat-checkbox> <br>\n <mat-checkbox>\n [TODO] Promotion popup\n </mat-checkbox> <br>\n </mat-expansion-panel>\n </section>\n </mat-tab>\n <mat-tab label=\"User\">\n Welcome in user managements\n </mat-tab>\n <mat-tab label=\"Translations\">\n Welcome in user managements\n </mat-tab> -->\n </mat-tab-group>\n </column>\n </columns-container>\n</ng-template>\n<!-- #endregion -->\n\n<!-- #region small/mobile draggable popup windows -->\n<div\n class=\"draggable-popup-mode-window\"\n *ngIf=\"\n admin.draggablePopupMode && !admin.draggablePopupModeFullScreen && !isIframe\n \"\n cdkDrag\n [cdkDragFreeDragPosition]=\"dragPosition\"\n (cdkDragEnded)=\"moved($event)\">\n <ng-scrollbar>\n <ng-container [ngTemplateOutlet]=\"adminTabs\"></ng-container>\n </ng-scrollbar>\n</div>\n<!-- #endregion -->\n\n<!-- #region fullscreen draggable popup window -->\n<div\n class=\"draggable-popup-mode-window-full\"\n *ngIf=\"\n admin.draggablePopupMode &&\n admin.draggablePopupModeFullScreen &&\n !isIframe &&\n !reloading\n \"\n cdkDrag\n [cdkDragFreeDragPosition]=\"dragPositionZero\">\n <ng-container [ngTemplateOutlet]=\"adminTabs\"></ng-container>\n</div>\n<!-- #endregion -->\n\n<!-- #region content when not in draggable (or fullscreen draggable) popup -->\n<div\n [style.height.px]=\"height\"\n *ngIf=\"\n (isIframe ||\n !isDesktop ||\n admin.draggablePopupMode ||\n admin.draggablePopupModeFullScreen) &&\n !reloading\n \"\n style=\"width: 100%; display: block\"\n class=\"content\">\n <ng-container\n [ngTemplateOutlet]=\"\n admin.scrollableEnabled ? content : contentNoScroll\n \"></ng-container>\n</div>\n<!-- #endregion -->\n\n<!-- #region draggable popup window -->\n<mat-drawer-container\n *ngIf=\"!admin.draggablePopupMode && isDesktop && !isIframe\"\n class=\"example-container\"\n [style.height.px]=\"height\"\n style=\"background-color: transparent\"\n (backdropClick)=\"opened = false\"\n [hasBackdrop]=\"false\">\n <mat-drawer #drawer style=\"width: 580px\" [opened]=\"opened\" [mode]=\"'side'\">\n <ng-container [ngTemplateOutlet]=\"adminTabs\"></ng-container>\n </mat-drawer>\n <mat-drawer-content style=\"overflow: hidden\">\n <ng-container\n *ngIf=\"!admin.draggablePopupMode && !reloading\"\n [ngTemplateOutlet]=\"\n admin.scrollableEnabled ? content : contentNoScroll\n \"></ng-container>\n </mat-drawer-content>\n</mat-drawer-container>\n<!-- #endregion -->\n", styles: ["section{display:block;padding:10px}section>*{margin-top:0!important;margin-bottom:10px!important}section>*:last-child{margin-bottom:0!important}:host{display:block}.draggable-column{display:block!important;width:100%!important}.admin-show-button{position:fixed;bottom:100px;left:-15px;z-index:2147483647;transform:rotate(90deg);border:0px;color:#fff;background:gray;opacity:.1;cursor:pointer}.admin-show-button:hover{opacity:1}.taon-ui-super-admin-mode{font-family:JosefinSans-Bold;text-align:right;margin-right:10px}mat-drawer{margin:0;background-color:#dcdcdc!important}.taon-header-admin-wrapper{overflow:hidden;width:100%;display:block}.taon-header-admin{background:#fff;box-shadow:0 -9px 6px 6px #000;height:47px}.taon-header-admin .logo-header img{height:18px;padding:8px;position:relative;float:left;top:7px;box-sizing:content-box;transform:scale(1.5);left:49px}.draggable-popup-mode-window{width:600px;height:500px;border:solid 1px #ccc;color:#000000de;cursor:move;justify-content:center;align-items:center;background:#fff;border-radius:4px;position:fixed;z-index:105;background-color:#dcdcdc!important;transition:box-shadow .2s cubic-bezier(0,0,.2,1);box-shadow:0 3px 1px -2px #0003,0 2px 2px #00000024,0 1px 5px #0000001f}.draggable-popup-mode-window:active{box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f}.draggable-popup-mode-window-full{width:100%;height:100%;overflow:scroll;color:#000000de;justify-content:center;align-items:center;background:#fff;border-radius:4px;position:fixed;z-index:105;background-color:#dcdcdc!important}.admin-close-button{float:right}.fab-button{position:fixed;right:110px;bottom:100px;z-index:10;background-color:#dcdcdc;color:#8f8f8f}.full-tabs{padding:10px}.mat-drawer-container-full-screen{background-color:red}\n"] }]
|
|
5580
|
+
}], ctorParameters: () => [{ type: i1$3.BreakpointsService }], propDecorators: { tabGroup: [{
|
|
5581
|
+
type: ViewChild,
|
|
5582
|
+
args: ['tabGroup']
|
|
5583
|
+
}], taonAdminModeConfigurationDataChanged: [{
|
|
5584
|
+
type: Output
|
|
5585
|
+
}], taonAdminModeConfigurationData: [{
|
|
5586
|
+
type: Input
|
|
5587
|
+
}], onResize: [{
|
|
5588
|
+
type: HostListener,
|
|
5589
|
+
args: ['window:resize', ['$event']]
|
|
5590
|
+
}] } });
|
|
5591
|
+
;
|
|
5592
|
+
({}); // @--end-of-file-for-module=taon lib/ui/taon-admin-mode-configuration/taon-admin-mode-configuration.component.ts
|
|
5593
|
+
|
|
5594
|
+
class TaonAdminEditModeComponent {
|
|
5595
|
+
constructor(router) {
|
|
5596
|
+
this.router = router;
|
|
5597
|
+
this.inited$ = of(true);
|
|
5598
|
+
this.destroyed$ = new Subject();
|
|
5599
|
+
this.handlers = [];
|
|
5600
|
+
this.columns = [
|
|
5601
|
+
{
|
|
5602
|
+
header: 'ID',
|
|
5603
|
+
field: 'id',
|
|
5604
|
+
maxWidth: 100,
|
|
5605
|
+
showExpand: true,
|
|
5606
|
+
},
|
|
5607
|
+
{
|
|
5608
|
+
header: 'src',
|
|
5609
|
+
field: 'src',
|
|
5610
|
+
maxWidth: 250,
|
|
5611
|
+
},
|
|
5612
|
+
{
|
|
5613
|
+
header: 'Content Type',
|
|
5614
|
+
field: 'contentType',
|
|
5615
|
+
maxWidth: 120,
|
|
5616
|
+
},
|
|
5617
|
+
];
|
|
5618
|
+
this.taonAdminEditModeDataChanged = new EventEmitter();
|
|
5619
|
+
this.taonAdminEditModeData = {};
|
|
5620
|
+
}
|
|
5621
|
+
ngOnInit() {
|
|
5622
|
+
this.files = this.admin.currentFiles;
|
|
5623
|
+
this.handlers.push(this.admin.onEditMode$.subscribe(() => {
|
|
5624
|
+
this.refresFilesList();
|
|
5625
|
+
}));
|
|
5626
|
+
this.admin.onRegisterFile().pipe(takeUntil(this.destroyed$), tap(() => {
|
|
5627
|
+
this.refresFilesList();
|
|
5628
|
+
}));
|
|
5629
|
+
}
|
|
5630
|
+
ngOnDestroy() {
|
|
5631
|
+
this.handlers.forEach(h => h.unsubscribe());
|
|
5632
|
+
this.destroyed$.next(void 0);
|
|
5633
|
+
this.destroyed$.unsubscribe();
|
|
5634
|
+
}
|
|
5635
|
+
ngAfterViewInit() {
|
|
5636
|
+
//Called after ngAfterContentInit when the component's view has been initialized. Applies to components only.
|
|
5637
|
+
//Add 'implements AfterViewInit' to the class.
|
|
5638
|
+
setTimeout(() => {
|
|
5639
|
+
this.refresFilesList();
|
|
5640
|
+
}, 500);
|
|
5641
|
+
}
|
|
5642
|
+
expansionRow(e) {
|
|
5643
|
+
console.log(e);
|
|
5644
|
+
}
|
|
5645
|
+
refresFilesList() {
|
|
5646
|
+
this.files = this.admin.currentFiles;
|
|
5647
|
+
}
|
|
5648
|
+
searchFind(file) {
|
|
5649
|
+
if (!!this?.fileToSearch) {
|
|
5650
|
+
return file?.src?.search(this?.fileToSearch) !== -1;
|
|
5651
|
+
}
|
|
5652
|
+
return true;
|
|
5653
|
+
}
|
|
5654
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: TaonAdminEditModeComponent, deps: [{ token: i1$4.Router }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
5655
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.5", type: TaonAdminEditModeComponent, selector: "taon-admin-edit-mode", inputs: { taonAdminEditModeData: "taonAdminEditModeData" }, outputs: { taonAdminEditModeDataChanged: "taonAdminEditModeDataChanged" }, ngImport: i0, template: "<ng-template #expansionTpl let-row>\n hello from expansion {{ row.src }}\n</ng-template>\n\n<mat-card *ngIf=\"inited$ | async\">\n <div *ngIf=\"!admin.selectedFile\">Please select file from portal to edit</div>\n <taon-file\n *ngIf=\"admin.selectedFile\"\n class=\"file-inside-admin\"\n [insideAdmin]=\"true\"\n [file]=\"admin.selectedFile\"></taon-file>\n\n <hr />\n\n <mat-tab-group\n dynamicHeight\n [selectedIndex]=\"selectedTabIndex\"\n (selectedIndexChange)=\"selectedTabIndex = $event; refresFilesList()\">\n <mat-tab label=\"General\">\n <!-- <taon-file-general-opt\n [file]=\"admin.selectedFile\"></taon-file-general-opt> -->\n </mat-tab>\n <!-- <mat-tab label=\"CSS Editing\">\n <ace [mode]=\"'css'\"\n *ngIf=\"admin.selectedFile\"\n [(value)]=\"admin.selectedFile.css\"\n [theme]=\"'github'\"\n style=\"width: 100%; height: 300px;\"></ace>\n </mat-tab> -->\n\n <mat-tab label=\"Files Picker\">\n <!-- <taon-table\n [entity]=\"entity\"\n [allowedColumns]=\"['src', 'contentType']\"\n [columns]=\"columns\"\n [expansionTemplate]=\"expansionTpl\"\n (expansionChange)=\"expansionRow($event)\">\n </taon-table> -->\n </mat-tab>\n <mat-tab label=\"File Version History\">\n <!-- <taon-table\n [entity]=\"entity\"\n [allowedColumns]=\"['src', 'contentType']\"\n [columns]=\"columns\"\n [expansionTemplate]=\"expansionTpl\"\n (expansionChange)=\"expansionRow($event)\">\n </taon-table> -->\n </mat-tab>\n <mat-tab label=\"Current File\">\n <columns-container *ngIf=\"files.length > 0\">\n <column grow>\n <mat-form-field style=\"width: 100%\">\n <input\n matInput\n [(ngModel)]=\"fileToSearch\"\n (focus)=\"refresFilesList()\"\n placeholder=\"Search by name\" />\n </mat-form-field>\n </column>\n <column [width]=\"40\">\n <button\n mat-icon-button\n (click)=\"fileToSearch = ''; refresFilesList()\"\n *ngIf=\"fileToSearch && fileToSearch?.trim() !== ''\">\n <mat-icon>backspace</mat-icon>\n </button>\n </column>\n <!-- <column [width]=\"40\">\n <button mat-icon-button (click)=\"refresFilesList();\" >\n <mat-icon >refresh</mat-icon>\n </button>\n </column> -->\n </columns-container>\n <columns-container *ngIf=\"files.length == 0\">\n <section>\n <code\n >No <taon-file/> - s components detected on this page</code\n >\n </section>\n </columns-container>\n\n <div class=\"scrollable-files-list\" *ngIf=\"files.length > 0\">\n <ng-scrollbar>\n <!-- selected: \"{{ selectedFile?.src }}\" -->\n <!-- {{ filesSelection.selectedOptions | json }} -->\n <mat-selection-list\n [multiple]=\"false\"\n #filesToSelect\n (selectionChange)=\"\n admin.selectedFile = filesToSelect.selectedOptions.hasValue()\n ? filesToSelect.selectedOptions.selected[0].value\n : null\n \">\n <mat-list-option\n *ngFor=\"let file of files | filterBy: ['src'] : fileToSearch\"\n [value]=\"file\">\n <strong *ngIf=\"file?.src === admin.selectedFile?.src\">\n {{ file.src }}\n </strong>\n <span *ngIf=\"file?.src !== admin.selectedFile?.src\">\n {{ file.src }}\n </span>\n </mat-list-option>\n </mat-selection-list>\n </ng-scrollbar>\n </div>\n </mat-tab>\n </mat-tab-group>\n</mat-card>\n", styles: [":host{display:block}.scrollable-files-list{height:150px;background:#8080801c;display:block}\n"], dependencies: [{ kind: "directive", type: i2$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i1$3.ColumnsComponent, selector: "columns-container" }, { kind: "component", type: i1$3.ColumnComponent, selector: "column", inputs: ["width"] }, { kind: "directive", type: i1$3.DirectiveGrow, selector: "[grow]" }, { kind: "component", type: i4$1.NgScrollbar, selector: "ng-scrollbar:not([externalViewport])", exportAs: ["ngScrollbar"] }, { kind: "directive", type: i2.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: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i6$1.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: i7.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i4.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i2$2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "component", type: i11$1.MatSelectionList, selector: "mat-selection-list", inputs: ["color", "compareWith", "multiple", "hideSingleSelectionIndicator", "disabled"], outputs: ["selectionChange"], exportAs: ["matSelectionList"] }, { kind: "component", type: i11$1.MatListOption, selector: "mat-list-option", inputs: ["togglePosition", "checkboxPosition", "color", "value", "selected"], outputs: ["selectedChange"], exportAs: ["matListOption"] }, { kind: "component", type: i11.MatTab, selector: "mat-tab", inputs: ["disabled", "label", "aria-label", "aria-labelledby", "labelClass", "bodyClass"], exportAs: ["matTab"] }, { kind: "component", type: i11.MatTabGroup, selector: "mat-tab-group", inputs: ["color", "fitInkBarToContent", "mat-stretch-tabs", "dynamicHeight", "selectedIndex", "headerPosition", "animationDuration", "contentTabIndex", "disablePagination", "disableRipple", "preserveContent", "backgroundColor", "aria-label", "aria-labelledby"], outputs: ["selectedIndexChange", "focusChange", "animationDone", "selectedTabChange"], exportAs: ["matTabGroup"] }, { kind: "pipe", type: i2$1.AsyncPipe, name: "async" }, { kind: "pipe", type: i13.FilterByPipe, name: "filterBy" }] }); }
|
|
5656
|
+
}
|
|
5657
|
+
__decorate([
|
|
5658
|
+
(Stor.property.in.localstorage
|
|
5659
|
+
.for(TaonAdminEditModeComponent)
|
|
5660
|
+
.withDefaultValue(0)),
|
|
5661
|
+
__metadata("design:type", Number)
|
|
5662
|
+
], TaonAdminEditModeComponent.prototype, "selectedTabIndex", void 0);
|
|
5663
|
+
__decorate([
|
|
5664
|
+
(Stor.property.in.localstorage
|
|
5665
|
+
.for(TaonAdminEditModeComponent)
|
|
5666
|
+
.withDefaultValue('')),
|
|
5667
|
+
__metadata("design:type", String)
|
|
5668
|
+
], TaonAdminEditModeComponent.prototype, "fileToSearch", void 0);
|
|
5669
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: TaonAdminEditModeComponent, decorators: [{
|
|
5670
|
+
type: Component,
|
|
5671
|
+
args: [{ selector: 'taon-admin-edit-mode', template: "<ng-template #expansionTpl let-row>\n hello from expansion {{ row.src }}\n</ng-template>\n\n<mat-card *ngIf=\"inited$ | async\">\n <div *ngIf=\"!admin.selectedFile\">Please select file from portal to edit</div>\n <taon-file\n *ngIf=\"admin.selectedFile\"\n class=\"file-inside-admin\"\n [insideAdmin]=\"true\"\n [file]=\"admin.selectedFile\"></taon-file>\n\n <hr />\n\n <mat-tab-group\n dynamicHeight\n [selectedIndex]=\"selectedTabIndex\"\n (selectedIndexChange)=\"selectedTabIndex = $event; refresFilesList()\">\n <mat-tab label=\"General\">\n <!-- <taon-file-general-opt\n [file]=\"admin.selectedFile\"></taon-file-general-opt> -->\n </mat-tab>\n <!-- <mat-tab label=\"CSS Editing\">\n <ace [mode]=\"'css'\"\n *ngIf=\"admin.selectedFile\"\n [(value)]=\"admin.selectedFile.css\"\n [theme]=\"'github'\"\n style=\"width: 100%; height: 300px;\"></ace>\n </mat-tab> -->\n\n <mat-tab label=\"Files Picker\">\n <!-- <taon-table\n [entity]=\"entity\"\n [allowedColumns]=\"['src', 'contentType']\"\n [columns]=\"columns\"\n [expansionTemplate]=\"expansionTpl\"\n (expansionChange)=\"expansionRow($event)\">\n </taon-table> -->\n </mat-tab>\n <mat-tab label=\"File Version History\">\n <!-- <taon-table\n [entity]=\"entity\"\n [allowedColumns]=\"['src', 'contentType']\"\n [columns]=\"columns\"\n [expansionTemplate]=\"expansionTpl\"\n (expansionChange)=\"expansionRow($event)\">\n </taon-table> -->\n </mat-tab>\n <mat-tab label=\"Current File\">\n <columns-container *ngIf=\"files.length > 0\">\n <column grow>\n <mat-form-field style=\"width: 100%\">\n <input\n matInput\n [(ngModel)]=\"fileToSearch\"\n (focus)=\"refresFilesList()\"\n placeholder=\"Search by name\" />\n </mat-form-field>\n </column>\n <column [width]=\"40\">\n <button\n mat-icon-button\n (click)=\"fileToSearch = ''; refresFilesList()\"\n *ngIf=\"fileToSearch && fileToSearch?.trim() !== ''\">\n <mat-icon>backspace</mat-icon>\n </button>\n </column>\n <!-- <column [width]=\"40\">\n <button mat-icon-button (click)=\"refresFilesList();\" >\n <mat-icon >refresh</mat-icon>\n </button>\n </column> -->\n </columns-container>\n <columns-container *ngIf=\"files.length == 0\">\n <section>\n <code\n >No <taon-file/> - s components detected on this page</code\n >\n </section>\n </columns-container>\n\n <div class=\"scrollable-files-list\" *ngIf=\"files.length > 0\">\n <ng-scrollbar>\n <!-- selected: \"{{ selectedFile?.src }}\" -->\n <!-- {{ filesSelection.selectedOptions | json }} -->\n <mat-selection-list\n [multiple]=\"false\"\n #filesToSelect\n (selectionChange)=\"\n admin.selectedFile = filesToSelect.selectedOptions.hasValue()\n ? filesToSelect.selectedOptions.selected[0].value\n : null\n \">\n <mat-list-option\n *ngFor=\"let file of files | filterBy: ['src'] : fileToSearch\"\n [value]=\"file\">\n <strong *ngIf=\"file?.src === admin.selectedFile?.src\">\n {{ file.src }}\n </strong>\n <span *ngIf=\"file?.src !== admin.selectedFile?.src\">\n {{ file.src }}\n </span>\n </mat-list-option>\n </mat-selection-list>\n </ng-scrollbar>\n </div>\n </mat-tab>\n </mat-tab-group>\n</mat-card>\n", styles: [":host{display:block}.scrollable-files-list{height:150px;background:#8080801c;display:block}\n"] }]
|
|
5672
|
+
}], ctorParameters: () => [{ type: i1$4.Router }], propDecorators: { taonAdminEditModeDataChanged: [{
|
|
5673
|
+
type: Output
|
|
5674
|
+
}], taonAdminEditModeData: [{
|
|
5675
|
+
type: Input
|
|
5676
|
+
}] } });
|
|
5677
|
+
;
|
|
5678
|
+
({}); // @--end-of-file-for-module=taon lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/taon-admin-edit-mode.component.ts
|
|
5679
|
+
|
|
5680
|
+
class TaonFileGeneralOptComponent {
|
|
5681
|
+
constructor() {
|
|
5682
|
+
this.height = 100;
|
|
5683
|
+
this.handlers = [];
|
|
5684
|
+
this.fieldsOrder = [];
|
|
5685
|
+
this.fields = [
|
|
5686
|
+
{
|
|
5687
|
+
key: 'width',
|
|
5688
|
+
},
|
|
5689
|
+
{
|
|
5690
|
+
key: 'height',
|
|
5691
|
+
},
|
|
5692
|
+
{
|
|
5693
|
+
key: 'display',
|
|
5694
|
+
},
|
|
5695
|
+
{
|
|
5696
|
+
key: 'widthUnit',
|
|
5697
|
+
},
|
|
5698
|
+
{
|
|
5699
|
+
key: 'heightUnit', // @ts-ignore
|
|
5700
|
+
},
|
|
5701
|
+
{
|
|
5702
|
+
key: 'action',
|
|
5703
|
+
type: 'action',
|
|
5704
|
+
templateOptions: {
|
|
5705
|
+
label: 'Reset',
|
|
5706
|
+
icon: 'cancel',
|
|
5707
|
+
raised: true,
|
|
5708
|
+
action: () => {
|
|
5709
|
+
console.log('reset');
|
|
5710
|
+
},
|
|
5711
|
+
},
|
|
5712
|
+
},
|
|
5713
|
+
].map(f => {
|
|
5714
|
+
f.className = 'formly-field-half-size';
|
|
5715
|
+
return f;
|
|
5716
|
+
});
|
|
5717
|
+
}
|
|
5718
|
+
ngOnInit() { }
|
|
5719
|
+
ngOnDestroy() {
|
|
5720
|
+
this.handlers.forEach(h => h.unsubscribe());
|
|
5721
|
+
}
|
|
5722
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: TaonFileGeneralOptComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
5723
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.5", type: TaonFileGeneralOptComponent, selector: "taon-file-general-opt", inputs: { height: "height", file: "file" }, host: { properties: { "style.minHeight.px": "this.height" } }, ngImport: i0, template: "<!-- <taon-formly-form\n *ngIf=\"file\"\n [fields]=\"fields\"\n [fieldsOrder]=\"fieldsOrder\"\n [exclude]=\"['id']\"\n [(model)]=\"file.css\">\n</taon-formly-form> -->\n", styles: [":host{display:block}\n"] }); }
|
|
5724
|
+
}
|
|
5725
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: TaonFileGeneralOptComponent, decorators: [{
|
|
5726
|
+
type: Component,
|
|
5727
|
+
args: [{ selector: 'taon-file-general-opt', template: "<!-- <taon-formly-form\n *ngIf=\"file\"\n [fields]=\"fields\"\n [fieldsOrder]=\"fieldsOrder\"\n [exclude]=\"['id']\"\n [(model)]=\"file.css\">\n</taon-formly-form> -->\n", styles: [":host{display:block}\n"] }]
|
|
5728
|
+
}], ctorParameters: () => [], propDecorators: { height: [{
|
|
5729
|
+
type: HostBinding,
|
|
5730
|
+
args: ['style.minHeight.px']
|
|
5731
|
+
}, {
|
|
5732
|
+
type: Input
|
|
5733
|
+
}], file: [{
|
|
5734
|
+
type: Input
|
|
5735
|
+
}] } });
|
|
5736
|
+
;
|
|
5737
|
+
({}); // @--end-of-file-for-module=taon lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/taon-file-general-opt.component.ts
|
|
5738
|
+
|
|
5739
|
+
class TaonFileGeneralOptModule {
|
|
5740
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: TaonFileGeneralOptModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
5741
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.1.5", ngImport: i0, type: TaonFileGeneralOptModule, declarations: [TaonFileGeneralOptComponent], imports: [CommonModule, TaonFullMaterialModule], exports: [TaonFileGeneralOptComponent] }); }
|
|
5742
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: TaonFileGeneralOptModule, imports: [CommonModule, TaonFullMaterialModule] }); }
|
|
5743
|
+
}
|
|
5744
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: TaonFileGeneralOptModule, decorators: [{
|
|
5745
|
+
type: NgModule,
|
|
5746
|
+
args: [{
|
|
5747
|
+
imports: [CommonModule, TaonFullMaterialModule],
|
|
5748
|
+
declarations: [TaonFileGeneralOptComponent],
|
|
5749
|
+
exports: [TaonFileGeneralOptComponent],
|
|
5750
|
+
}]
|
|
5751
|
+
}] });
|
|
5752
|
+
;
|
|
5753
|
+
({}); // @--end-of-file-for-module=taon lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/taon-file-general-opt.module.ts
|
|
5754
|
+
|
|
5755
|
+
;
|
|
5756
|
+
({}); // @--end-of-file-for-module=taon lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/index.ts
|
|
5757
|
+
|
|
5758
|
+
class TaonAdminEditModeModule {
|
|
5759
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: TaonAdminEditModeModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
5760
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.1.5", ngImport: i0, type: TaonAdminEditModeModule, declarations: [TaonAdminEditModeComponent], imports: [CommonModule,
|
|
5761
|
+
StaticColumnsModule,
|
|
5762
|
+
NgScrollbarModule,
|
|
5763
|
+
TaonFileGeneralOptModule,
|
|
5764
|
+
FormsModule,
|
|
5765
|
+
NgArrayPipesModule,
|
|
5766
|
+
TaonTableModule,
|
|
5767
|
+
TaonFullMaterialModule], exports: [TaonAdminEditModeComponent] }); }
|
|
5768
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: TaonAdminEditModeModule, imports: [CommonModule,
|
|
5769
|
+
StaticColumnsModule,
|
|
5770
|
+
NgScrollbarModule,
|
|
5771
|
+
TaonFileGeneralOptModule,
|
|
5772
|
+
FormsModule,
|
|
5773
|
+
NgArrayPipesModule,
|
|
5774
|
+
TaonTableModule,
|
|
5775
|
+
TaonFullMaterialModule] }); }
|
|
5776
|
+
}
|
|
5777
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: TaonAdminEditModeModule, decorators: [{
|
|
5778
|
+
type: NgModule,
|
|
5779
|
+
args: [{
|
|
5780
|
+
imports: [
|
|
5781
|
+
CommonModule,
|
|
5782
|
+
StaticColumnsModule,
|
|
5783
|
+
NgScrollbarModule,
|
|
5784
|
+
TaonFileGeneralOptModule,
|
|
5785
|
+
FormsModule,
|
|
5786
|
+
NgArrayPipesModule,
|
|
5787
|
+
TaonTableModule,
|
|
5788
|
+
TaonFullMaterialModule, // TODO import only partial things
|
|
5789
|
+
],
|
|
5790
|
+
declarations: [TaonAdminEditModeComponent],
|
|
5791
|
+
exports: [TaonAdminEditModeComponent],
|
|
5792
|
+
}]
|
|
5793
|
+
}] });
|
|
5794
|
+
;
|
|
5795
|
+
({}); // @--end-of-file-for-module=taon lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/taon-admin-edit-mode.module.ts
|
|
5796
|
+
|
|
5797
|
+
;
|
|
5798
|
+
({}); // @--end-of-file-for-module=taon lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/index.ts
|
|
5799
|
+
|
|
5800
|
+
class TaonAdminModeConfigurationModule {
|
|
5801
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: TaonAdminModeConfigurationModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
5802
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.1.5", ngImport: i0, type: TaonAdminModeConfigurationModule, declarations: [TaonAdminModeConfigurationComponent], imports: [CommonModule,
|
|
5803
|
+
StaticColumnsModule,
|
|
5804
|
+
FormsModule,
|
|
5805
|
+
NgScrollbarModule,
|
|
5806
|
+
TaonAdminEditModeModule,
|
|
5807
|
+
TaonProgressBarModule,
|
|
5808
|
+
TaonNotificationsModule,
|
|
5809
|
+
TaonFullMaterialModule, // TODO import only partial things
|
|
5810
|
+
TaonSessionPasscodeComponent], exports: [TaonAdminModeConfigurationComponent] }); }
|
|
5811
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: TaonAdminModeConfigurationModule, imports: [CommonModule,
|
|
5812
|
+
StaticColumnsModule,
|
|
5813
|
+
FormsModule,
|
|
5814
|
+
NgScrollbarModule,
|
|
5815
|
+
TaonAdminEditModeModule,
|
|
5816
|
+
TaonProgressBarModule,
|
|
5817
|
+
TaonNotificationsModule,
|
|
5818
|
+
TaonFullMaterialModule, // TODO import only partial things
|
|
5819
|
+
TaonSessionPasscodeComponent] }); }
|
|
5820
|
+
}
|
|
5821
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: TaonAdminModeConfigurationModule, decorators: [{
|
|
5822
|
+
type: NgModule,
|
|
5823
|
+
args: [{
|
|
5824
|
+
imports: [
|
|
5825
|
+
CommonModule,
|
|
5826
|
+
StaticColumnsModule,
|
|
5827
|
+
FormsModule,
|
|
5828
|
+
NgScrollbarModule,
|
|
5829
|
+
TaonAdminEditModeModule,
|
|
5830
|
+
TaonProgressBarModule,
|
|
5831
|
+
TaonNotificationsModule,
|
|
5832
|
+
TaonFullMaterialModule, // TODO import only partial things
|
|
5833
|
+
TaonSessionPasscodeComponent,
|
|
5834
|
+
],
|
|
5835
|
+
declarations: [TaonAdminModeConfigurationComponent],
|
|
5836
|
+
exports: [TaonAdminModeConfigurationComponent],
|
|
5837
|
+
}]
|
|
5838
|
+
}] });
|
|
5839
|
+
;
|
|
5840
|
+
({}); // @--end-of-file-for-module=taon lib/ui/taon-admin-mode-configuration/taon-admin-mode-configuration.module.ts
|
|
5841
|
+
|
|
5842
|
+
;
|
|
5843
|
+
({}); // @--end-of-file-for-module=taon lib/ui/taon-admin-mode-configuration/index.ts
|
|
5844
|
+
|
|
5845
|
+
;
|
|
5846
|
+
({}); // @--end-of-file-for-module=taon lib/ui/index.ts
|
|
4531
5847
|
|
|
4532
5848
|
;
|
|
4533
5849
|
({}); // @--end-of-file-for-module=taon lib/constants.ts
|
|
@@ -4543,21 +5859,9 @@ var Taon;
|
|
|
4543
5859
|
Taon.Provider = TaonProvider;
|
|
4544
5860
|
Taon.Repository = TaonRepository;
|
|
4545
5861
|
Taon.Subscriber = TaonSubscriber;
|
|
4546
|
-
/**
|
|
4547
|
-
* @deprecated
|
|
4548
|
-
*/
|
|
4549
5862
|
Taon.isBrowser = coreHelpers.Helpers.isBrowser;
|
|
4550
|
-
/**
|
|
4551
|
-
* @deprecated
|
|
4552
|
-
*/
|
|
4553
5863
|
Taon.isNode = coreHelpers.Helpers.isNode;
|
|
4554
|
-
/**
|
|
4555
|
-
* @deprecated
|
|
4556
|
-
*/
|
|
4557
5864
|
Taon.isWebSQL = coreHelpers.Helpers.isWebSQL;
|
|
4558
|
-
/**
|
|
4559
|
-
* @deprecated
|
|
4560
|
-
*/
|
|
4561
5865
|
Taon.isElectron = coreHelpers.Helpers.isElectron;
|
|
4562
5866
|
Taon.createContext = createContext;
|
|
4563
5867
|
Taon.inject = inject;
|
|
@@ -4591,5 +5895,5 @@ var Taon;
|
|
|
4591
5895
|
* Generated bundle index. Do not edit.
|
|
4592
5896
|
*/
|
|
4593
5897
|
|
|
4594
|
-
export { BaseContext, BaseController, BaseEntity, BaseProvider, BaseRepository,
|
|
4595
|
-
//# sourceMappingURL=taon.mjs.map
|
|
5898
|
+
export { BaseContext, BaseController, BaseEntity, BaseProvider, BaseRepository, ClassHelpers, Models, SafePipe, Taon, TaonAdminModeConfigurationComponent, TaonAdminModeConfigurationModule, TaonAdminService, TaonFullMaterialModule, TaonGithubForkMeCornerComponent, TaonGithubForkMeCornerModule, TaonInjectHTMLDirective, TaonLongPress, TaonNotificationOptions, TaonNotificationsComponent, TaonNotificationsModule, TaonNotificationsService, TaonProgressBarComponent, TaonProgressBarModule, TaonSessionPasscodeComponent, TaonTableComponent, TaonTableModule, createContext, inject };
|
|
5899
|
+
//# sourceMappingURL=taon.mjs.map
|