{"version":3,"file":"fararu-common-lib.mjs","sources":["../../../projects/fararu-common-lib/src/lib/api/odata/odata.adapter.ts","../../../projects/fararu-common-lib/src/lib/api/odata/accyear-odata.service.ts","../../../projects/fararu-common-lib/src/lib/api/odata/center-odata.service.ts","../../../projects/fararu-common-lib/src/lib/constants/access-node-ids/b2b-access-node-ids.ts","../../../projects/fararu-common-lib/src/lib/constants/access-node-ids/base-info1-access-node-ids.ts","../../../projects/fararu-common-lib/src/lib/constants/access-node-ids/base-info2-access-node-ids.ts","../../../projects/fararu-common-lib/src/lib/constants/access-node-ids/ngt-access-node-ids.ts","../../../projects/fararu-common-lib/src/lib/constants/access-node-ids/review-access-node-ids.ts","../../../projects/fararu-common-lib/src/lib/constants/access-node-ids/tracer-access-node-ids.ts","../../../projects/fararu-common-lib/src/lib/constants/access-node-ids/customer-club-access-node-ids.ts","../../../projects/fararu-common-lib/src/lib/constants/access-node-ids/stock-access-node-ids.ts","../../../projects/fararu-common-lib/src/lib/constants/access-node-ids/sale-access-node-ids.ts","../../../projects/fararu-common-lib/src/lib/constants/access-node-ids/index.ts","../../../projects/fararu-common-lib/src/lib/constants/api-url-flags.ts","../../../projects/fararu-common-lib/src/lib/constants/elmenet-ids.ts","../../../projects/fararu-common-lib/src/lib/constants/session-names.ts","../../../projects/fararu-common-lib/src/lib/constants/http-header-names.ts","../../../projects/fararu-common-lib/src/lib/constants/general-odata-table-name.ts","../../../projects/fararu-common-lib/src/lib/api/general-odata.service.ts","../../../projects/fararu-common-lib/src/lib/api/odata/statusbar-info-odata.service.ts","../../../projects/fararu-common-lib/src/lib/api/user-right/user-right.adapter.ts","../../../projects/fararu-common-lib/src/lib/api/user-right/user-right-api.service.ts","../../../projects/fararu-common-lib/src/lib/utils/paths/uri.ts","../../../projects/fararu-common-lib/src/lib/utils/paths/ngt-paths.ts","../../../projects/fararu-common-lib/src/lib/utils/paths/index.ts","../../../projects/fararu-common-lib/src/lib/utils/cache-route-reuse-strategy.ts","../../../projects/fararu-common-lib/src/lib/utils/calendar.ts","../../../projects/fararu-common-lib/src/lib/utils/check-action-type.ts","../../../projects/fararu-common-lib/src/lib/utils/convert-enum-to-array.ts","../../../projects/fararu-common-lib/src/lib/utils/create-param-http-header-value.ts","../../../projects/fararu-common-lib/src/lib/utils/get-menu-link.ts","../../../projects/fararu-common-lib/src/lib/utils/helpers.ts","../../../projects/fararu-common-lib/src/lib/utils/is-nil.ts","../../../projects/fararu-common-lib/src/lib/utils/lang-utils.ts","../../../projects/fararu-common-lib/src/lib/utils/property-of.ts","../../../projects/fararu-common-lib/src/lib/utils/app-menu.adapter.ts","../../../projects/fararu-common-lib/src/lib/utils/flatten-tree.ts","../../../projects/fararu-common-lib/src/lib/utils/generate-uuid.ts","../../../projects/fararu-common-lib/src/lib/enums/grid-column-data-types.ts","../../../projects/fararu-common-lib/src/lib/utils/utility.ts","../../../projects/fararu-common-lib/src/lib/models/injection-tokens.ts","../../../projects/fararu-common-lib/src/lib/services/cache-storage.service.ts","../../../projects/fararu-common-lib/src/lib/utils/cacheable.decorator.ts","../../../projects/fararu-common-lib/src/lib/utils/get-version-query-string-of-remote-module.ts","../../../projects/fararu-common-lib/src/lib/store/actions/config.actions.ts","../../../projects/fararu-common-lib/src/lib/store/selectors/auth.selectors.ts","../../../projects/fararu-common-lib/src/lib/store/selectors/config.selectors.ts","../../../projects/fararu-common-lib/src/lib/store/sandboxes/base.sandbox.ts","../../../projects/fararu-common-lib/src/lib/store/sandboxes/config.sandbox.ts","../../../projects/fararu-common-lib/src/lib/services/app-config.service.ts","../../../projects/fararu-common-lib/src/lib/design-systems/toast/toast-config.ts","../../../projects/fararu-common-lib/src/lib/design-systems/toast/toast-ref.ts","../../../projects/fararu-common-lib/src/lib/design-systems/toast/toast-animations.ts","../../../projects/fararu-common-lib/src/lib/design-systems/toast/toast.component.ts","../../../projects/fararu-common-lib/src/lib/design-systems/toast/toast.component.html","../../../projects/fararu-common-lib/src/lib/design-systems/toast/fararu-toast.service.ts","../../../projects/fararu-common-lib/src/lib/services/user-access.service.ts","../../../projects/fararu-common-lib/src/lib/services/app-menu-api.service.ts","../../../projects/fararu-common-lib/src/lib/utils/menu-items.resolver.ts","../../../projects/fararu-common-lib/src/lib/api/print/fararu-print-service.ts","../../../projects/fararu-common-lib/src/lib/models/general-save-result.interface.ts","../../../projects/fararu-common-lib/src/lib/enums/button-colors.ts","../../../projects/fararu-common-lib/src/lib/enums/button-varients.ts","../../../projects/fararu-common-lib/src/lib/design-systems/ui/dropdown/dropdown.component.ts","../../../projects/fararu-common-lib/src/lib/design-systems/ui/dropdown/dropdown.component.html","../../../projects/fararu-common-lib/src/lib/design-systems/ui/dropdown/dropdown-trigger-for.directive.ts","../../../projects/fararu-common-lib/src/lib/design-systems/components/atoms/fararu-icon/fararu-icon.component.ts","../../../projects/fararu-common-lib/src/lib/design-systems/components/atoms/fararu-icon/fararu-icon.component.html","../../../projects/fararu-common-lib/src/lib/design-systems/components/atoms/tooltip/ui-tooltip.component.ts","../../../projects/fararu-common-lib/src/lib/design-systems/components/atoms/tooltip/ui-tooltip.component.html","../../../projects/fararu-common-lib/src/lib/design-systems/components/atoms/tooltip/tooltip.directive.ts","../../../projects/fararu-common-lib/src/lib/design-systems/components/atoms/loading/loading.component.ts","../../../projects/fararu-common-lib/src/lib/design-systems/components/atoms/loading/loading.component.html","../../../projects/fararu-common-lib/src/lib/design-systems/ui/button/button.component.ts","../../../projects/fararu-common-lib/src/lib/design-systems/ui/button/button.component.html","../../../projects/fararu-common-lib/src/lib/design-systems/components/molecules/note-icon/note-icon.component.ts","../../../projects/fararu-common-lib/src/lib/design-systems/components/molecules/note-icon/note-icon.component.html","../../../projects/fararu-common-lib/src/lib/design-systems/components/organisms/note/note.component.ts","../../../projects/fararu-common-lib/src/lib/design-systems/components/organisms/note/note.component.html","../../../projects/fararu-common-lib/src/lib/design-systems/modal/pipes/dialog-icon-name.pipe.ts","../../../projects/fararu-common-lib/src/lib/design-systems/modal/alert/alert.component.ts","../../../projects/fararu-common-lib/src/lib/design-systems/modal/alert/alert.component.html","../../../projects/fararu-common-lib/src/lib/directives/shortcut.directive.ts","../../../projects/fararu-common-lib/src/lib/design-systems/modal/confirm/confirm.component.ts","../../../projects/fararu-common-lib/src/lib/design-systems/modal/confirm/confirm.component.html","../../../projects/fararu-common-lib/src/lib/design-systems/modal/modal.service.ts","../../../projects/fararu-common-lib/src/lib/api/general-save-api.ts","../../../projects/fararu-common-lib/src/lib/design-systems/components/atoms/key-value/key-value.component.ts","../../../projects/fararu-common-lib/src/lib/design-systems/components/atoms/key-value/key-value.component.html","../../../projects/fararu-common-lib/src/lib/design-systems/components/atoms/switch/switch.component.ts","../../../projects/fararu-common-lib/src/lib/design-systems/components/atoms/switch/switch.component.html","../../../projects/fararu-common-lib/src/lib/design-systems/components/atoms/tooltip/tooltip.component.ts","../../../projects/fararu-common-lib/src/lib/design-systems/components/atoms/tooltip/tooltip.component.html","../../../projects/fararu-common-lib/src/lib/design-systems/components/atoms/label/label.component.ts","../../../projects/fararu-common-lib/src/lib/design-systems/components/atoms/label/label.component.html","../../../projects/fararu-common-lib/src/lib/design-systems/components/atoms/no-data/no-data.component.ts","../../../projects/fararu-common-lib/src/lib/design-systems/components/atoms/no-data/no-data.component.html","../../../projects/fararu-common-lib/src/lib/models/base-form-element.component.ts","../../../projects/fararu-common-lib/src/lib/design-systems/ui/icon/icons-dictionary.ts","../../../projects/fararu-common-lib/src/lib/design-systems/ui/icon/icon.component.ts","../../../projects/fararu-common-lib/src/lib/design-systems/ui/icon/icon.component.html","../../../projects/fararu-common-lib/src/lib/design-systems/ui/checkbox/checkbox.component.ts","../../../projects/fararu-common-lib/src/lib/design-systems/ui/checkbox/checkbox.component.html","../../../projects/fararu-common-lib/src/lib/design-systems/ui/spinner/spinner.component.ts","../../../projects/fararu-common-lib/src/lib/design-systems/ui/spinner/spinner.component.html","../../../projects/fararu-common-lib/src/lib/design-systems/ui/select/select-menu-item-is-selected.pipe.ts","../../../projects/fararu-common-lib/src/lib/design-systems/ui/select/select.component.ts","../../../projects/fararu-common-lib/src/lib/design-systems/ui/select/select.component.html","../../../projects/fararu-common-lib/src/lib/design-systems/components/molecules/date-picker/date-picker.component.ts","../../../projects/fararu-common-lib/src/lib/design-systems/components/molecules/date-picker/date-picker.component.html","../../../projects/fararu-common-lib/src/lib/design-systems/ui/textbox/textbox.component.ts","../../../projects/fararu-common-lib/src/lib/design-systems/ui/textbox/textbox.component.html","../../../projects/fararu-common-lib/src/lib/design-systems/components/molecules/sub-menu/sub-menu.component.ts","../../../projects/fararu-common-lib/src/lib/design-systems/components/molecules/sub-menu/sub-menu.component.html","../../../projects/fararu-common-lib/src/lib/design-systems/components/molecules/dropdown-text-input/dropdown-text-input.component.ts","../../../projects/fararu-common-lib/src/lib/design-systems/components/molecules/dropdown-text-input/dropdown-text-input.component.html","../../../projects/fararu-common-lib/src/lib/design-systems/components/molecules/message/message.component.ts","../../../projects/fararu-common-lib/src/lib/design-systems/components/molecules/message/message.component.html","../../../projects/fararu-common-lib/src/lib/pipes/access-node.pipe.ts","../../../projects/fararu-common-lib/src/lib/design-systems/components/molecules/toolbar/toolbar.component.ts","../../../projects/fararu-common-lib/src/lib/design-systems/components/molecules/toolbar/toolbar.component.html","../../../projects/fararu-common-lib/src/lib/design-systems/components/molecules/message/message.service.ts","../../../projects/fararu-common-lib/src/lib/design-systems/components/molecules/section-title/section-title.component.ts","../../../projects/fararu-common-lib/src/lib/design-systems/components/molecules/section-title/section-title.component.html","../../../projects/fararu-common-lib/src/lib/pipes/highlight-keyword.pipe.ts","../../../projects/fararu-common-lib/src/lib/design-systems/components/molecules/tree/tree.component.ts","../../../projects/fararu-common-lib/src/lib/design-systems/components/molecules/tree/tree.component.html","../../../projects/fararu-common-lib/src/lib/enums/grid-column-aggregation-types.ts","../../../projects/fararu-common-lib/src/lib/utils/find-tree-item-path.ts","../../../projects/fararu-common-lib/src/lib/design-systems/components/organisms/data-grid/data-grid.component.helpers.ts","../../../projects/fararu-common-lib/src/lib/design-systems/ui/tree-select/tree-select.component.ts","../../../projects/fararu-common-lib/src/lib/design-systems/ui/tree-select/tree-select.component.html","../../../projects/fararu-common-lib/src/lib/enums/grid-column-filter-condition-types.ts","../../../projects/fararu-common-lib/src/lib/enums/fullscreen-types.ts","../../../projects/fararu-common-lib/src/lib/enums/review-toolbar-action-types.ts","../../../projects/fararu-common-lib/src/lib/enums/toolbar-calculate-date-types.ts","../../../projects/fararu-common-lib/src/lib/enums/toolbar-extract-type.ts","../../../projects/fararu-common-lib/src/lib/enums/toolbar-fetch-reason.ts","../../../projects/fararu-common-lib/src/lib/enums/toolbar-report-types.ts","../../../projects/fararu-common-lib/src/lib/enums/toolbar-stock-cardex-report-types.ts","../../../projects/fararu-common-lib/src/lib/enums/toolbar-treasury-report-types.ts","../../../projects/fararu-common-lib/src/lib/design-systems/modal/modal-size-enum.ts","../../../projects/fararu-common-lib/src/lib/services/route-caching.service.ts","../../../projects/fararu-common-lib/src/lib/design-systems/layouts/fararu-layout.service.ts","../../../projects/fararu-common-lib/src/lib/services/load-remote-asset.service.ts","../../../projects/fararu-common-lib/src/lib/design-systems/ui/grid/grid.component.helpers.ts","../../../projects/fararu-common-lib/src/lib/design-systems/ui/grid/wijmo-rest-collcetion-view.ts","../../../projects/fararu-common-lib/src/lib/design-systems/ui/grid/grid-custom-filter/grid-custom-filter.component.ts","../../../projects/fararu-common-lib/src/lib/design-systems/ui/grid/grid-custom-filter/grid-custom-filter.component.html","../../../projects/fararu-common-lib/src/lib/design-systems/ui/grid/grid-action-column-width.pipe.ts","../../../projects/fararu-common-lib/src/lib/design-systems/ui/grid/grid.component.ts","../../../projects/fararu-common-lib/src/lib/design-systems/ui/grid/grid.component.html","../../../projects/fararu-common-lib/src/lib/design-systems/ui/indentity-selector/identity-selector.component.ts","../../../projects/fararu-common-lib/src/lib/design-systems/ui/indentity-selector/identity-selector.component.html","../../../projects/fararu-common-lib/src/lib/design-systems/components/organisms/data-grid/data-grid-btn/data-grid-btn.component.ts","../../../projects/fararu-common-lib/src/lib/design-systems/components/organisms/data-grid/data-grid-btn/data-grid-btn.component.html","../../../projects/fararu-common-lib/src/lib/design-systems/components/organisms/data-grid/data-grid-cell-display-value.pipe.ts","../../../projects/fararu-common-lib/src/lib/design-systems/components/organisms/data-grid/data-grid-cell-display-object.pipe.ts","../../../projects/fararu-common-lib/src/lib/pipes/is-boolean.pipe.ts","../../../projects/fararu-common-lib/src/lib/design-systems/components/organisms/data-grid/data-grid-cell-aggregate-type-title.pipe.ts","../../../projects/fararu-common-lib/src/lib/design-systems/components/organisms/data-grid/data-grid-row-class-name.pipe.ts","../../../projects/fararu-common-lib/src/lib/design-systems/components/organisms/data-grid/data-grid-column-class-name.pipe.ts","../../../projects/fararu-common-lib/src/lib/design-systems/components/organisms/data-grid/data-grid-column-width.pipe.ts","../../../projects/fararu-common-lib/src/lib/design-systems/components/organisms/data-grid/data-grid.component.ts","../../../projects/fararu-common-lib/src/lib/design-systems/components/organisms/data-grid/data-grid.component.html","../../../projects/fararu-common-lib/src/lib/services/outlet-closer.service.ts","../../../projects/fararu-common-lib/src/lib/design-systems/modal/modal-wrapper/modal-wrapper.component.ts","../../../projects/fararu-common-lib/src/lib/design-systems/modal/modal-wrapper/modal-wrapper.component.html","../../../projects/fararu-common-lib/src/lib/design-systems/general-templates/modals/product-series-modal/product-series-modal.component.ts","../../../projects/fararu-common-lib/src/lib/design-systems/general-templates/modals/product-series-modal/product-series-modal.component.html","../../../projects/fararu-common-lib/src/lib/design-systems/components/organisms/product-data-grid/product-data-grid.component.helpers.ts","../../../projects/fararu-common-lib/src/lib/design-systems/toast/toast-icon-color.pipe.ts","../../../projects/fararu-common-lib/src/lib/design-systems/toast/toast-icon-name.pipe.ts","../../../projects/fararu-common-lib/src/lib/design-systems/toast/fararu-toast.module.ts","../../../projects/fararu-common-lib/src/lib/api/batch-model-odata.service.ts","../../../projects/fararu-common-lib/src/lib/api/package-model-odata.service.ts","../../../projects/fararu-common-lib/src/lib/design-systems/components/organisms/product-data-grid/product-data-grid.component.ts","../../../projects/fararu-common-lib/src/lib/design-systems/components/organisms/product-data-grid/product-data-grid.component.html","../../../projects/fararu-common-lib/src/lib/design-systems/components/organisms/fararu-data-grid/fararu-data-grid.validations.ts","../../../projects/fararu-common-lib/src/lib/design-systems/components/organisms/fararu-data-grid/fararu-grid-column.helpers.ts","../../../projects/fararu-common-lib/src/lib/store/actions/auth.actions.ts","../../../projects/fararu-common-lib/src/lib/store/sandboxes/auth.sandbox.ts","../../../projects/fararu-common-lib/src/lib/design-systems/components/organisms/fararu-data-grid/fararu-data-grid.component.ts","../../../projects/fararu-common-lib/src/lib/design-systems/components/organisms/fararu-data-grid/fararu-data-grid.component.html","../../../projects/fararu-common-lib/src/lib/design-systems/components/templates/general-panel/general-panel.component.ts","../../../projects/fararu-common-lib/src/lib/design-systems/components/templates/general-panel/general-panel.component.html","../../../projects/fararu-common-lib/src/lib/design-systems/ui/screen-vertical-separator/screen-vertical-separator.component.ts","../../../projects/fararu-common-lib/src/lib/design-systems/ui/screen-vertical-separator/screen-vertical-separator.component.html","../../../projects/fararu-common-lib/src/lib/models/general-save-reasons.enum.ts","../../../projects/fararu-common-lib/src/lib/services/report-form.service.ts","../../../projects/fararu-common-lib/src/lib/services/excel.service.ts","../../../projects/fararu-common-lib/src/lib/design-systems/general-templates/general-simple-list/general-list-deps.service.ts","../../../projects/fararu-common-lib/src/lib/design-systems/ui/access-node/access-node.component.ts","../../../projects/fararu-common-lib/src/lib/design-systems/ui/access-node/access-node.component.html","../../../projects/fararu-common-lib/src/lib/design-systems/general-templates/general-simple-list/general-simple-list.component.ts","../../../projects/fararu-common-lib/src/lib/design-systems/general-templates/general-simple-list/general-simple-list.component.html","../../../projects/fararu-common-lib/src/lib/services/fararu-log-service.ts","../../../projects/fararu-common-lib/src/lib/design-systems/general-templates/general-worksheet-picker-modal/general-worksheet-picker-modal.component.ts","../../../projects/fararu-common-lib/src/lib/design-systems/general-templates/general-worksheet-picker-modal/general-worksheet-picker-modal.component.html","../../../projects/fararu-common-lib/src/lib/design-systems/ui/pull-down/pull-down.component.ts","../../../projects/fararu-common-lib/src/lib/design-systems/ui/pull-down/pull-down.component.html","../../../projects/fararu-common-lib/src/lib/design-systems/ui/screen-separator/screen-separator.component.ts","../../../projects/fararu-common-lib/src/lib/design-systems/ui/screen-separator/screen-separator.component.html","../../../projects/fararu-common-lib/src/lib/design-systems/ui/tabs/tab/tab.component.ts","../../../projects/fararu-common-lib/src/lib/design-systems/ui/tabs/tab/tab.component.html","../../../projects/fararu-common-lib/src/lib/design-systems/ui/tabs/tabs.component.ts","../../../projects/fararu-common-lib/src/lib/design-systems/ui/tabs/tabs.component.html","../../../projects/fararu-common-lib/src/lib/api/grid-layout-api.service.ts","../../../projects/fararu-common-lib/src/lib/design-systems/general-templates/simple-list-show-plan/simple-list-show-plan.component.ts","../../../projects/fararu-common-lib/src/lib/design-systems/general-templates/simple-list-show-plan/simple-list-show-plan.component.html","../../../projects/fararu-common-lib/src/lib/design-systems/general-templates/general-list-management/general-list-management.component.ts","../../../projects/fararu-common-lib/src/lib/design-systems/general-templates/general-list-management/general-list-management.component.html","../../../projects/fararu-common-lib/src/lib/design-systems/general-templates/general-list-data-entry/list-data-entry-functions.ts","../../../projects/fararu-common-lib/src/lib/utils/search-tree.ts","../../../projects/fararu-common-lib/src/lib/design-systems/ui/validation/validation.component.ts","../../../projects/fararu-common-lib/src/lib/design-systems/ui/validation/validation.component.html","../../../projects/fararu-common-lib/src/lib/design-systems/ui/fieldset/fieldset.component.ts","../../../projects/fararu-common-lib/src/lib/design-systems/ui/fieldset/fieldset.component.html","../../../projects/fararu-common-lib/src/lib/design-systems/general-templates/general-simple-data-entry/general-simple-data-entry.component.ts","../../../projects/fararu-common-lib/src/lib/design-systems/general-templates/general-simple-data-entry/general-simple-data-entry.component.html","../../../projects/fararu-common-lib/src/lib/design-systems/general-templates/general-list-data-entry/general-list-modal-data-entry/general-list-modal-data-entry.component.ts","../../../projects/fararu-common-lib/src/lib/design-systems/general-templates/general-list-data-entry/general-list-modal-data-entry/general-list-modal-data-entry.component.html","../../../projects/fararu-common-lib/src/lib/models/review/review-grid.model.ts","../../../projects/fararu-common-lib/src/lib/models/review/review-tab.model.ts","../../../projects/fararu-common-lib/src/lib/models/users/user.model.ts","../../../projects/fararu-common-lib/src/lib/models/general-post-request.interface.ts","../../../projects/fararu-common-lib/src/lib/models/grid-column.interface.ts","../../../projects/fararu-common-lib/src/lib/models/form-state.enum.ts","../../../projects/fararu-common-lib/src/lib/design-systems/general-templates/general-list-data-entry/general-list-data-entry.component.ts","../../../projects/fararu-common-lib/src/lib/design-systems/general-templates/general-list-data-entry/general-list-data-entry.component.html","../../../projects/fararu-common-lib/src/lib/design-systems/general-templates/general-dual-list-data-entry/general-dual-list-data-entry.component.ts","../../../projects/fararu-common-lib/src/lib/design-systems/general-templates/general-dual-list-data-entry/general-dual-list-data-entry.component.html","../../../projects/fararu-common-lib/src/lib/design-systems/general-templates/modals/attachments-modal/attachments-modal.component.ts","../../../projects/fararu-common-lib/src/lib/design-systems/general-templates/modals/attachments-modal/attachments-modal.component.html","../../../projects/fararu-common-lib/src/lib/design-systems/general-templates/modals/notes-modal/notes-modal.component.ts","../../../projects/fararu-common-lib/src/lib/design-systems/general-templates/modals/notes-modal/notes-modal.component.html","../../../projects/fararu-common-lib/src/lib/design-systems/general-templates/general-dual-list/general-dual-list.component.ts","../../../projects/fararu-common-lib/src/lib/design-systems/general-templates/general-dual-list/general-dual-list.component.html","../../../projects/fararu-common-lib/src/lib/design-systems/general-templates/general-header-content-aside-footer/general-header-content-aside-footer.component.ts","../../../projects/fararu-common-lib/src/lib/design-systems/general-templates/general-header-content-aside-footer/general-header-content-aside-footer.component.html","../../../projects/fararu-common-lib/src/lib/api/app-user/app-user-api.service.ts","../../../projects/fararu-common-lib/src/lib/store/effects/auth.effects.ts","../../../projects/fararu-common-lib/src/lib/store/effects/config.effects.ts","../../../projects/fararu-common-lib/src/lib/store/actions/history.actions.ts","../../../projects/fararu-common-lib/src/lib/store/effects/history.effects.ts","../../../projects/fararu-common-lib/src/lib/store/effects/index.ts","../../../projects/fararu-common-lib/src/lib/store/reducers/auth.reducer.ts","../../../projects/fararu-common-lib/src/lib/store/reducers/config.reducer.ts","../../../projects/fararu-common-lib/src/lib/store/reducers/history.reducer.ts","../../../projects/fararu-common-lib/src/lib/store/reducers/index.ts","../../../projects/fararu-common-lib/src/lib/store/sandboxes/history.sandbox.ts","../../../projects/fararu-common-lib/src/lib/design-systems/general-templates/general-custom-form/general-custom-form.component.ts","../../../projects/fararu-common-lib/src/lib/design-systems/general-templates/general-custom-form/general-custom-form.component.html","../../../projects/fararu-common-lib/src/lib/design-systems/general-templates/modals/general-select-list-modal/general-select-list-modal.component.ts","../../../projects/fararu-common-lib/src/lib/design-systems/general-templates/modals/general-select-list-modal/general-select-list-modal.component.html","../../../projects/fararu-common-lib/src/lib/design-systems/general-templates/general-list-assignment/general-list-assignment.component.ts","../../../projects/fararu-common-lib/src/lib/design-systems/general-templates/general-list-assignment/general-list-assignment.component.html","../../../projects/fararu-common-lib/src/lib/design-systems/general-templates/general-list-data-entry-assignment/general-list-data-entry-assignment.component.ts","../../../projects/fararu-common-lib/src/lib/design-systems/general-templates/general-list-data-entry-assignment/general-list-data-entry-assignment.component.html","../../../projects/fararu-common-lib/src/lib/design-systems/general-templates/general-standard-modal-form/general-standard-modal-form.component.ts","../../../projects/fararu-common-lib/src/lib/design-systems/general-templates/general-standard-modal-form/general-standard-modal-form.component.html","../../../projects/fararu-common-lib/src/lib/directives/click-outside.directive.ts","../../../projects/fararu-common-lib/src/lib/directives/check-has-scroll.directive.ts","../../../projects/fararu-common-lib/src/lib/directives/upload-dropzone.directive.ts","../../../projects/fararu-common-lib/src/lib/directives/date-validation.directive.ts","../../../projects/fararu-common-lib/src/lib/directives/escape-mask.directive.ts","../../../projects/fararu-common-lib/src/lib/directives/apply-pattern.directive.ts","../../../projects/fararu-common-lib/src/lib/modules/shortcut.module.ts","../../../projects/fararu-common-lib/src/lib/http-interceptors/api-interceptor.ts","../../../projects/fararu-common-lib/src/lib/http-interceptors/error-interceptor.ts","../../../projects/fararu-common-lib/src/lib/http-interceptors/token-interceptor.ts","../../../projects/fararu-common-lib/src/lib/http-interceptors/index.ts","../../../projects/fararu-common-lib/src/lib/services/log-writer-service.ts","../../../projects/fararu-common-lib/src/lib/modules/global-error-handler.ts","../../../projects/fararu-common-lib/src/lib/services/startup.service.ts","../../../projects/fararu-common-lib/src/lib/modules/fararu-core.module.ts","../../../projects/fararu-common-lib/src/lib/modules/fararu-shared.module.ts","../../../projects/fararu-common-lib/src/lib/design-systems/ui/file-picker/file-picker.component.ts","../../../projects/fararu-common-lib/src/lib/design-systems/ui/file-picker/file-picker.component.html","../../../projects/fararu-common-lib/src/lib/design-systems/ui/form-group/form-group.component.ts","../../../projects/fararu-common-lib/src/lib/design-systems/ui/form-group/form-group.component.html","../../../projects/fararu-common-lib/src/lib/design-systems/ui/grid/grid-active-filters/grid-active-filters.component.ts","../../../projects/fararu-common-lib/src/lib/design-systems/ui/grid/grid-active-filters/grid-active-filters.component.html","../../../projects/fararu-common-lib/src/lib/design-systems/ui/radio-button/radio-button.component.ts","../../../projects/fararu-common-lib/src/lib/design-systems/ui/radio-button/radio-button.component.html","../../../projects/fararu-common-lib/src/lib/design-systems/ui/summary-validation/summary-validation.component.ts","../../../projects/fararu-common-lib/src/lib/design-systems/ui/summary-validation/summary-validation.component.html","../../../projects/fararu-common-lib/src/lib/design-systems/ui/tabs-vertical/tab-vertical/tab-vertical.component.ts","../../../projects/fararu-common-lib/src/lib/design-systems/ui/tabs-vertical/tab-vertical/tab-vertical.component.html","../../../projects/fararu-common-lib/src/lib/design-systems/ui/tabs-vertical/tabs-vertical.component.ts","../../../projects/fararu-common-lib/src/lib/design-systems/ui/tabs-vertical/tabs-vertical.component.html","../../../projects/fararu-common-lib/src/lib/design-systems/ui/upload/upload.component.ts","../../../projects/fararu-common-lib/src/lib/design-systems/ui/upload/upload.component.html","../../../projects/fararu-common-lib/src/lib/design-systems/fararu-design-system-lib.module.ts","../../../projects/fararu-common-lib/src/lib/design-systems/modal/modal.module.ts","../../../projects/fararu-common-lib/src/lib/design-systems/general-templates/general-filter-form/general-filter-form.component.ts","../../../projects/fararu-common-lib/src/lib/design-systems/general-templates/general-filter-form/general-filter-form.component.html","../../../projects/fararu-common-lib/src/lib/design-systems/general-templates/general-master-data-list/general-master-data-list.component.ts","../../../projects/fararu-common-lib/src/lib/design-systems/general-templates/general-master-data-list/general-master-data-list.component.html","../../../projects/fararu-common-lib/src/lib/design-systems/general-templates/general-master-data-tree/general-master-data-tree.component.ts","../../../projects/fararu-common-lib/src/lib/design-systems/general-templates/general-master-data-tree/general-master-data-tree.component.html","../../../projects/fararu-common-lib/src/lib/design-systems/general-templates/general-report-form/general-report-form.component.ts","../../../projects/fararu-common-lib/src/lib/design-systems/general-templates/general-report-form/general-report-form.component.html","../../../projects/fararu-common-lib/src/lib/design-systems/general-templates/general-report-form/general-aditional-report/general-aditional-report.component.ts","../../../projects/fararu-common-lib/src/lib/design-systems/general-templates/general-report-form/general-aditional-report/general-aditional-report.component.html","../../../projects/fararu-common-lib/src/lib/design-systems/general-templates/general-templates.module.ts","../../../projects/fararu-common-lib/src/lib/design-systems/general-templates/general-master-data-list/master-data-save-api.ts","../../../projects/fararu-common-lib/src/lib/design-systems/general-templates/general-master-data-list/master-data-page-input-strategy.ts","../../../projects/fararu-common-lib/src/lib/design-systems/layouts/aside-header-content-layout/aside-header-content-layout.component.ts","../../../projects/fararu-common-lib/src/lib/design-systems/layouts/aside-header-content-layout/aside-header-content-layout.component.html","../../../projects/fararu-common-lib/src/lib/design-systems/layouts/header-content-layout/header-content-layout.component.ts","../../../projects/fararu-common-lib/src/lib/design-systems/layouts/header-content-layout/header-content-layout.component.html","../../../projects/fararu-common-lib/src/lib/design-systems/layouts/main-layout/aside-menu-drawer/aside-menu-drawer.component.ts","../../../projects/fararu-common-lib/src/lib/design-systems/layouts/main-layout/aside-menu-drawer/aside-menu-drawer.component.html","../../../projects/fararu-common-lib/src/lib/design-systems/layouts/main-layout/aside-col/aside-col.component.ts","../../../projects/fararu-common-lib/src/lib/design-systems/layouts/main-layout/aside-col/aside-col.component.html","../../../projects/fararu-common-lib/src/lib/design-systems/layouts/main-layout/main-layout.component.ts","../../../projects/fararu-common-lib/src/lib/design-systems/layouts/main-layout/main-layout.component.html","../../../projects/fararu-common-lib/src/lib/design-systems/layouts/main-layout-v1/sub-menu-button/sub-menu-button.component.ts","../../../projects/fararu-common-lib/src/lib/design-systems/layouts/main-layout-v1/sub-menu-button/sub-menu-button.component.html","../../../projects/fararu-common-lib/src/lib/design-systems/layouts/main-layout-v1/side-bar/side-bar.component.ts","../../../projects/fararu-common-lib/src/lib/design-systems/layouts/main-layout-v1/side-bar/side-bar.component.html","../../../projects/fararu-common-lib/src/lib/design-systems/layouts/main-layout-v1/searchbox/searchbox.component.ts","../../../projects/fararu-common-lib/src/lib/design-systems/layouts/main-layout-v1/searchbox/searchbox.component.html","../../../projects/fararu-common-lib/src/lib/design-systems/layouts/main-layout-v1/header-sub-menu/header-sub-menu.component.ts","../../../projects/fararu-common-lib/src/lib/design-systems/layouts/main-layout-v1/header-sub-menu/header-sub-menu.component.html","../../../projects/fararu-common-lib/src/lib/design-systems/layouts/main-layout-v1/header-sub-menu-item/header-sub-menu-item.component.ts","../../../projects/fararu-common-lib/src/lib/design-systems/layouts/main-layout-v1/header-sub-menu-item/header-sub-menu-item.component.html","../../../projects/fararu-common-lib/src/lib/design-systems/layouts/main-layout-v1/profile-menu/profile-menu.component.ts","../../../projects/fararu-common-lib/src/lib/design-systems/layouts/main-layout-v1/profile-menu/profile-menu.component.html","../../../projects/fararu-common-lib/src/lib/design-systems/layouts/main-layout-v1/help-menu/help-menu.component.ts","../../../projects/fararu-common-lib/src/lib/design-systems/layouts/main-layout-v1/help-menu/help-menu.component.html","../../../projects/fararu-common-lib/src/lib/design-systems/layouts/main-layout-v1/settings-menu/settings-menu.component.ts","../../../projects/fararu-common-lib/src/lib/design-systems/layouts/main-layout-v1/settings-menu/settings-menu.component.html","../../../projects/fararu-common-lib/src/lib/design-systems/layouts/main-layout-v1/header/header.component.ts","../../../projects/fararu-common-lib/src/lib/design-systems/layouts/main-layout-v1/header/header.component.html","../../../projects/fararu-common-lib/src/lib/design-systems/layouts/main-layout-v1/status-bar/status-bar-value.pipe.ts","../../../projects/fararu-common-lib/src/lib/design-systems/layouts/main-layout-v1/status-bar/status-bar.component.ts","../../../projects/fararu-common-lib/src/lib/design-systems/layouts/main-layout-v1/status-bar/status-bar.component.html","../../../projects/fararu-common-lib/src/lib/design-systems/layouts/main-layout-v1/main-layout-v1.component.ts","../../../projects/fararu-common-lib/src/lib/design-systems/layouts/main-layout-v1/main-layout-v1.component.html","../../../projects/fararu-common-lib/src/lib/design-systems/layouts/fararu-layouts.module.ts","../../../projects/fararu-common-lib/src/lib/design-systems/modal/modal-route-wrapper/modal-route-wrapper.component.ts","../../../projects/fararu-common-lib/src/lib/design-systems/modal/modal-route-wrapper/modal-route-wrapper.component.html","../../../projects/fararu-common-lib/src/lib/design-systems/modal/alert.interface.ts","../../../projects/fararu-common-lib/src/lib/design-systems/modal/confirm.interface.ts","../../../projects/fararu-common-lib/src/lib/design-systems/validators/persian-date-validator/index.ts","../../../projects/fararu-common-lib/src/lib/guards/app.guard.ts","../../../projects/fararu-common-lib/src/lib/guards/auth.guard.ts","../../../projects/fararu-common-lib/src/lib/translate/fararu-translate.service.ts","../../../projects/fararu-common-lib/src/lib/translate/fararu-translate.module.ts","../../../projects/fararu-common-lib/src/public-api.ts","../../../projects/fararu-common-lib/src/fararu-common-lib.ts"],"sourcesContent":["import { AccYearItemInterface } from '../../models/general/acc-year-item.interface';\nimport { CenterItemInterface } from '../../models/general/center-item.interface';\nimport { StatusbarInfoInterface } from '../../models/general/statusbar-info.interface';\nimport { ODataResponse } from './responses/odata-response';\n\nexport class ODataAdapter {\n  static getAccYearItemsTransform(input: any): ODataResponse<AccYearItemInterface> {\n    const output: ODataResponse<AccYearItemInterface> = { value: [] };\n    output.value = input?.value?.map((data: any) => ({\n      id: data.id,\n      accYear: data.accYear,\n      endDate: data.endDate,\n      startDate: data.startDate,\n      title: data.title,\n    }));\n    return output;\n  }\n\n  static getCenterItemsTransform(input: any): ODataResponse<CenterItemInterface> {\n    const output: ODataResponse<CenterItemInterface> = { value: [] };\n    output.value = input?.value?.map((data: any) => ({\n      code: data.dcCode,\n      id: data.id,\n      name: data.dcName,\n      dlCode: data.dlCode,\n    }));\n    return output;\n  }\n\n  static getStatusbarInfoTransform(input: any): ODataResponse<StatusbarInfoInterface> {\n    const output: ODataResponse<StatusbarInfoInterface> = { value: input?.value };\n    return output;\n  }\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { map, Observable } from 'rxjs';\nimport { AccYearItemInterface } from '../../models/general/acc-year-item.interface';\nimport { ODataAdapter } from './odata.adapter';\nimport { ODataResponse } from './responses/odata-response';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class AccYearODataService {\n  constructor(private _http: HttpClient) {}\n  get(): Observable<ODataResponse<AccYearItemInterface>> {\n    return this._http\n      .get('/accyearodata')\n      .pipe(map(response => ODataAdapter.getAccYearItemsTransform(response)));\n  }\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { map, Observable } from 'rxjs';\nimport { ODataAdapter } from './odata.adapter';\nimport { ODataResponse } from './responses/odata-response';\nimport { CenterItemInterface } from '../../models/general/center-item.interface';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class CenterODataService {\n  constructor(private _http: HttpClient) {}\n  get(): Observable<ODataResponse<CenterItemInterface>> {\n    return this._http\n      .get('/dcodata')\n      .pipe(map(response => ODataAdapter.getCenterItemsTransform(response)));\n  }\n}\n","/**\n * B2B\n */\nexport class B2BAccessNodeIds {\n  static self = '110000';\n\n  /**\n   * کالا\n   */\n  static product = class {\n    static self = '110001';\n  };\n\n  /**\n   * گروه کالا\n   */\n  static productGroup = class {\n    static self = '110002';\n  };\n\n  /**\n   * بنر\n   */\n  static banner = class {\n    static self = '110003';\n  };\n\n  /**\n   * تگ\n   */\n  static tag = class {\n    static self = '110004';\n  };\n\n  /**\n   * کاربران\n   */\n  static users = class {\n    static self = '110005';\n  };\n\n  /**\n   * تنظيمات\n   */\n  static settings = class {\n    static self = '110006';\n  };\n\n  /**\n   * مشتریان\n   */\n  static customers = class {\n    static self = '110007';\n  };\n\n  /**\n   * ارسال اعلان\n   */\n  static notificationPanel = class {\n    static self = '110008';\n  };\n}\n","export class BaseInfo1 {\n  static self = '500';\n\n  /**\n   * کالاها\n   */\n  static goods = class {\n    static self = '106';\n\n    /**\n     * چاپ باركد كالا\n     */\n    static printBarcode = '10601';\n\n    /**\n     * اقدام ها\n     */\n    static actions = '10602';\n\n    /**\n     * جدید\n     */\n    static add = '10603';\n\n    /**\n     * ویرایش\n     */\n    static edit = '10604';\n\n    /**\n     * حذف\n     */\n    static remove = '10605';\n  };\n\n  /**\n   * تاریخچه کالا\n   */\n  static goodsHistory = class {\n    static self = '401';\n  };\n\n  /**\n   * نرخ های قراردادی\n   */\n  static contrectualRates = class {\n    static self = '402';\n  };\n\n  /**\n   * ابزار قیمت گذاری\n   */\n  static pricingTool = class {\n    static self = '5005';\n  };\n\n  /**\n   * پکیج فروش\n   */\n  static salesPackage = class {\n    static self = '14002';\n  };\n\n  /**\n   * سری ساخت\n   */\n  static constructionSeries = class {\n    static self = '429';\n  };\n\n  /**\n   * گروه سری ساخت\n   */\n  static constructionSeriesGroup = class {\n    static self = '421';\n  };\n\n  /**\n   * تخفیفات، جوائز و اضافات\n   */\n  static discounts = class {\n    static self = '404';\n  };\n\n  /**\n   * تخفیفات دوره ای\n   */\n  static PeriodicDiscounts = class {\n    static self = '520';\n  };\n\n  /**\n   * تخفیفات نقدی فاکتور\n   */\n  static invoiceCashDiscounts = class {\n    static self = '506';\n  };\n\n  /**\n   * اطلاعات پایه در سایر زبانها\n   */\n  static basicInfoInOtherLanguages = class {\n    static self = '129';\n  };\n\n  /**\n   * قوانین محاسبه مهلت پرداخت\n   */\n  static paymentDeadlineCalculationRules = class {\n    static self = '121';\n  };\n\n  /**\n   * گزارشها\n   */\n  static reports = class {\n    static self = '5000';\n  };\n}\n","export class BaseInfo2 {\n  static self = '100';\n\n  /**\n   * تولید کننده ها\n   */\n  static manufacturers = class {\n    static self = '102';\n  };\n\n  /**\n   * واحدها\n   */\n  static units = class {\n    static self = '103';\n  };\n\n  /**\n   * گروه کالا\n   */\n  static productGroups = class {\n    static self = '105';\n  };\n\n  /**\n   * طبقه کالا\n   */\n  static productCategory = class {\n    static self = '107';\n  };\n\n  /**\n   * فعالیت مشتری\n   */\n  static customerActivity = class {\n    static self = '110';\n  };\n\n  /**\n   * مناطق جغرافیایی\n   */\n  static areas = class {\n    static self = '112';\n  };\n\n  /**\n   * حسابهای تخفیفات و جوائز\n   */\n  static discounts = class {\n    static self = '403';\n  };\n\n  /**\n   * مراکز توزیع\n   */\n  static distributionCenters = class {\n    static self = '101';\n  };\n\n  /**\n   * طبقه مشتریان\n   */\n  static customerCatagories = class {\n    static self = '118';\n  };\n\n  /**\n   * انبارهای مراکز\n   */\n  static centerStocks = class {\n    static self = '125';\n  };\n\n  /**\n   * علت برگشت\n   */\n  static returnCause = class {\n    static self = '120';\n  };\n\n  /**\n   * گزارش ها\n   */\n  static reports = class {\n    static self = '1000';\n  };\n\n  /**\n   * نوع و مهلت پرداخت فاکتور\n   */\n  static typeAndDeadlineForInvoicePayment = class {\n    static self = '504';\n  };\n\n  /**\n   * دسته بندی پویا کالا\n   */\n  static dynamicProductCategories = class {\n    static self = '426';\n  };\n\n  /**\n   * دسته بندی کالاها\n   */\n  static productClassification = class {\n    static self = '427';\n  };\n\n  /**\n   * درجه مشتری\n   */\n  static customerDegree = class {\n    static self = '507';\n  };\n\n  /**\n   * نوع مالکیت\n   */\n  static ownerType = class {\n    static self = '508';\n  };\n\n  /**\n   * علت غیر فعال شدن\n   */\n  static disablingCause = class {\n    static self = '509';\n  };\n\n  /**\n   * تیم توزیع\n   */\n  static distributionTeam = class {\n    static self = '514';\n  };\n\n  /**\n   * معرفی بانکها\n   */\n  static banks = class {\n    static self = '127';\n  };\n\n  /**\n   * معرفی وسائل توزیع\n   */\n  static vehicles = class {\n    static self = '113';\n  };\n\n  /**\n   * علت ورودی و خروجی سایر\n   */\n  static exitAndEnterReason = class {\n    static self = '513';\n  };\n\n  /**\n   * علت ضایعاتی\n   */\n  static wasteCause = class {\n    static self = '512';\n  };\n\n  /**\n   * نوع درخواست\n   */\n  static requestType = class {\n    static self = '516';\n  };\n\n  /**\n   * تامین کننده ها\n   */\n  static suppliers = class {\n    static self = '104';\n  };\n\n  /**\n   * نام تجاری کالاها\n   */\n  static brands = class {\n    static self = '5001';\n  };\n\n  /**\n   * نحوه نگهداری\n   */\n  static keepingTypes = class {\n    static self = '5004';\n  };\n\n  /**\n   * نوع پرداخت در تسویه\n   */\n  static payType = class {\n    static self = '517';\n  };\n\n  /**\n   * علت رایگان\n   */\n  static freeReason = class {\n    static self = '132';\n  };\n\n  /**\n   * طبقه فروشنده\n   */\n  static sellerCategorie = class {\n    static self = '115';\n  };\n\n  /**\n   * گروه کالا(دستگاه)\n   */\n  static productGroupVehicle = class {\n    static self = '505';\n  };\n\n  /**\n   * گروه مشتری\n   */\n  static customerGroup = class {\n    static self = '519';\n  };\n\n  /**\n   * علت رزرو\n   */\n  static reserveReason = class {\n    static self = '522';\n  };\n\n  /**\n   * دسته بندی پویا مشتریان\n   */\n  static dynamicCustomerCategorization = class {\n    static self = '133';\n  };\n\n  /**\n   * علت تحویل نشده\n   */\n  static causeNotDelivered = class {\n    static self = '111';\n  };\n\n  /**\n   * فیلدهای هوشمند مشتری\n   */\n  static customerSmartFields = class {\n    static self = '117';\n  };\n\n  /**\n   * نوع یادداشت\n   */\n  static noteType = class {\n    static self = '523';\n  };\n\n  /**\n   * سرپرست فروشندگان\n   */\n  static sellersSupervisor = class {\n    static self = '126';\n  };\n\n  /**\n   * تعیین حداکثر درصد تخفیف و اضافه\n   */\n  static determiningMaximumPercentageOfDiscounts = class {\n    static self = '119';\n  };\n}\n","export class NgtAccessNodeIds {\n  static self = '60000';\n\n  /**\n   * اطلاعات پایه\n   */\n  static baseInfo = class {\n    static self = '6000001';\n\n    /**\n     * گروه های کالا\n     */\n    static producGroups = class {\n      static self = '600000101';\n    };\n\n    /**\n     * کاتالوگ\n     */\n    static catalogs = class {\n      static self = '600000102';\n    };\n\n    /**\n     * الگوی تقویم\n     */\n    static calendarPattern = class {\n      static self = '600000103';\n    };\n\n    /**\n     * الگوی ویزیت\n     */\n    static visitPattern = class {\n      static self = '600000104';\n    };\n\n    /**\n     * برنامه ویزیت\n     */\n    static visitPlan = class {\n      static self = '600000105';\n    };\n\n    /**\n     * مسیر روز فروشنده\n     */\n    static dailyPath = class {\n      static self = '600000106';\n    };\n\n    /**\n     * علت های عدم فروش\n     */\n    static noSalesReason = class {\n      static self = '600000107';\n    };\n  };\n\n  /**\n   * اطلاعات پایه بازاریابی\n   */\n  static marketingBaseInfo = class {\n    static self = '6000002';\n\n    /**\n     * کالای تاکیدی\n     */\n    static confirmedProduct = class {\n      static self = '600000201';\n    };\n\n    /**\n     * برچسب سوال\n     */\n    static questionTag = class {\n      static self = '600000202';\n    };\n\n    /**\n     * پرسشنامه\n     */\n    static questionnaire = class {\n      static self = '600000203';\n    };\n\n    /**\n     * موضوع عکس\n     */\n    static pictureTopic = class {\n      static self = '600000204';\n    };\n\n    /**\n     * الگوی عکس\n     */\n    static picturePattern = class {\n      static self = '600000205';\n    };\n\n    /**\n     * آیین نامه\n     */\n    static regulation = class {\n      static self = '600000206';\n    };\n  };\n\n  /**\n   * فرم پیش ویزیت\n   */\n  static preVisitSale = class {\n    static self = '6000003';\n\n    /**\n     * تورهای پیش ویزیت\n     */\n    static preVisitSaleTours = class {\n      static self = '600000301';\n    };\n\n    /**\n     * درخواست ها\n     */\n    static requests = class {\n      static self = '600000302';\n    };\n\n    /**\n     * الگوهای کالای پیش ویزیت\n     */\n    static preVisitSaleProductPatterns = class {\n      static self = '600000303';\n    };\n  };\n\n  /**\n   * فروش گرم\n   */\n  static hotSale = class {\n    static self = '6000004';\n\n    /**\n     * تورهای فروش گرم\n     */\n    static hotSaleTours = class {\n      static self = '600000401';\n    };\n\n    /**\n     * دریافت های فروش گرم\n     */\n    static hotSaleReceives = class {\n      static self = '600000402';\n    };\n\n    /**\n     * موجودی فروش گرم\n     */\n    static hotSaleInventory = class {\n      static self = '600000403';\n    };\n\n    /**\n     * الگوهای تور\n     */\n    static tourPatterns = class {\n      static self = '600000404';\n    };\n\n    /**\n     * درخواست های کالا\n     */\n    static productsRequests = class {\n      static self = '600000405';\n    };\n\n    /**\n     * الگوهای کالای فروش گرم\n     */\n    static hotSaleProductPatterns = class {\n      static self = '600000406';\n    };\n  };\n\n  /**\n   * توزیع\n   */\n  static distribution = class {\n    static self = '6000005';\n\n    /**\n     * تورهای توزیع\n     */\n    static distributionTours = class {\n      static self = '600000501';\n    };\n\n    /**\n     * مامورین پخش\n     */\n    static distributionPersonnels = class {\n      static self = '600000502';\n    };\n\n    /**\n     * دریافت های توزیع\n     */\n    static distributionToursReceives = class {\n      static self = '600000503';\n    };\n\n    /**\n     * موجودی توزیع\n     */\n    static distributionInventory = class {\n      static self = '600000504';\n    };\n\n    /**\n     * الگوهای کالای توزیع\n     */\n    static distributionProductPatterns = class {\n      static self = '600000505';\n    };\n  };\n\n  /**\n   * گزارشات\n   */\n  static reports = class {\n    static self = '6000006';\n\n    /**\n     * فروش پیش ویزیت\n     */\n    static preVisitSales = class {\n      static self = '600000601';\n    };\n\n    /**\n     * فروش گرم\n     */\n    static hotSale = class {\n      static self = '600000602';\n    };\n\n    /**\n     * توزیع\n     */\n    static distribution = class {\n      static self = '600000603';\n    };\n  };\n\n  /**\n   * تنظیمات\n   */\n  static settings = class {\n    static self = '6000007';\n\n    /**\n     * تنظیمات برنامه\n     */\n    static appSettings = class {\n      static self = '600000701';\n    };\n\n    /**\n     * تنظیمات دستگاه\n     */\n    static vehiclSetting = class {\n      static self = '600000702';\n    };\n  };\n}\n","export class ReviewAccessNodeIds {\n  static exportToExcel = '5000006';\n\n  /**\n   * مرور فروش\n   */\n  static sell = class {\n    static self = '5000001';\n  };\n\n  /**\n   * مرور خزانه\n   */\n  static treasury = class {\n    static self = '5000004';\n  };\n\n  /**\n   * مرور امانی\n   */\n  static loan = class {\n    static self = '5000005';\n  };\n\n  /**\n   * مرور حسابداری خرید\n   */\n  static buy = class {\n    static self = '5000009';\n  };\n\n  /**\n   * مرور حسابداری مالی\n   */\n  static financialAccounting = class {\n    static self = '5000010';\n  };\n\n  /**\n   * مرور فاکتور آزاد\n   */\n  static freeInvoice = class {\n    static self = '5000011';\n  };\n\n  /**\n   * مرور حسابداری مشتریان\n   */\n  static customersAcc = class {\n    static self = '5000003';\n  };\n\n  /**\n   * مرور انبار\n   */\n  static stock = class {\n    static self = '5000002';\n  };\n\n  /**\n   * مرور حسابداری انبار\n   */\n  static stockAcc = class {\n    static self = '5000008';\n  };\n\n  static storeSales = class {\n    static self = '5000013';\n  };\n\n  /**\n   *  مرور تنخواه\n   */\n  static treasuryFund = class {\n    static self = '5000012';\n  };\n\n    /**\n   *  مرور اطلاعات پایه\n   */\n    static baseInformation = class {\n      static self = '5000015';\n    };\n}\n","export class TracerAccessNodeIds {\n  static self = '80000';\n  static routing = class {\n    static self = '80001';\n\n    static defineCustomerLocation = '80278';\n\n    static centerRemoving = '80283';\n    static centerEditing = '80276';\n\n    static teamRemoving = '80009';\n    static teamEditing = '80277';\n\n    static areaRemoving = '80279';\n    static areaEditing = '80274';\n\n    static regionRemoving = '80281';\n    static regionEditing = '80280';\n\n    static routeRemoving = '80275';\n    static routeEditing = '80282';\n  };\n\n  static tracking = class {\n    static self = '80002';\n  };\n\n  static trackingReport = class {\n    static self = '80003';\n  };\n\n  static statusReport = class {\n    static self = '80006';\n  };\n\n  static saleReport = class {\n    static self = '80007';\n  };\n\n  static lastStatus = class {\n    static self = '80004';\n  };\n\n  static publicSettings = class {\n    static self = '80005';\n\n    static disableShowInactiveDealers = '80284';\n  };\n\n  static financeReport = class {\n    static self = '80008';\n  };\n}\n","/**\n * باشگاه مشتریان\n */\nexport class CustomerClubAccessNodeIds {\n  static self = '120000';\n\n  /**\n   * قوانیت مصرف امتیاز\n   */\n  static pointUsageRules = class {\n    static self = '120001';\n  };\n}\n","export class StockAccessNodeIds {\n  static self = '600';\n\n  /**\n   * اقلام انبار\n   */\n  static items = class {\n    static self = '109';\n\n    static createUpdateDelete = '109002';\n\n    static isBatchModification = '109003';\n  };\n\n  /**\n   * سند انبار\n   */\n  static document = class {\n    static self = '407';\n\n    static view = 407001;\n    static create = 407002;\n    static edit = 407003;\n    static delete = 407004;\n    static editAfterPrint = 407005;\n    static deleteAfterPrint = 407006;\n    static confirm = 407007;\n    static excel = 407009;\n    static editAfterConfirm = 407013;\n    static doc15 = 610;\n  };\n\n  /**\n   * فرمول ترکیبات\n   */\n  static formula = class {\n    static self = '608';\n  };\n\n  /**\n   * ترکیبات\n   */\n  static compounds = class {\n    static self = '606';\n  };\n\n  /**\n   * گزارشات\n   */\n  static reports = class {\n    static self = '6000';\n  };\n}\n","export class SaleAccessNodeIds {\n  static self = '400';\n\n  /**\n   * مشتریان\n   */\n  static customers = class {\n    static self = '114';\n    static edit = 114006;\n    static delete = 114007;\n  };\n}\n","import { B2BAccessNodeIds } from './b2b-access-node-ids';\nimport { BaseInfo1 } from './base-info1-access-node-ids';\nimport { BaseInfo2 } from './base-info2-access-node-ids';\nimport { NgtAccessNodeIds } from './ngt-access-node-ids';\nimport { ReviewAccessNodeIds } from './review-access-node-ids';\nimport { TracerAccessNodeIds } from './tracer-access-node-ids';\nimport { CustomerClubAccessNodeIds } from './customer-club-access-node-ids';\nimport { StockAccessNodeIds } from './stock-access-node-ids';\nimport { SaleAccessNodeIds } from './sale-access-node-ids';\n\nexport class AccessNodeIds {\n  static tracer = TracerAccessNodeIds;\n  static review = ReviewAccessNodeIds;\n  static ngt = NgtAccessNodeIds;\n  static baseInfo2 = BaseInfo2;\n  static baseInfo1 = BaseInfo1;\n  static b2b = B2BAccessNodeIds;\n  static customerClub = CustomerClubAccessNodeIds;\n  static stock = StockAccessNodeIds;\n  static sale = SaleAccessNodeIds;\n}\n","export const ApiUrlFlags = {\n  NGT: \"@ngt-api\",\n  NGT_VERSION: \"{version}\",\n  NGT_PROJECT: \"{project}\",\n};\n","export const ElementIds = {\n  MODAL_SAVE_BUTTON: 'modal-save-button',\n  MODAL_ALTERNATIVE_SAVE_BUTTON: 'modal-alternative-submit-button',\n};\n","//import { User } from \"../models/users/user.model\";\n\nexport const SessionNames = {\n  USER: '_u',\n  DIRECTION: '_d',\n  TABS: '_t',\n  ACTIVE_TAB: '_at',\n  ACC_YEAR: '_ay',\n  SALE_OFFICE: '_so',\n  CENTER: '_c',\n  USER_NAME: '_uname',\n  REVIEW_TOOLBARS: '_rt',\n  TRACER_TOKEN: '_tt',\n  MENU_CONFIG: '_mc',\n  LANGUAGE: '_l',\n  CALENDAR_TYPE: '_ct',\n  CALENDAR_HAS_SWITCH: '_chs',\n  CURRENT_ROUTE_ACCESS_NODE_ID: '_CRANI',\n  THEME: '_t',\n  SIDE_BAR_SEARCHED_KEYWORD_HISTORY: '_sbskh',\n  SIDE_BAR_FAVORITED_MENUS: '_sbfm',\n  STATUS_BAR_PIN: '_sbp',\n};\n\n// export const getTabsSessionNameByUser = (user: User) =>\n//   SessionNames.TABS + \"_\" + user.id;\n\n// export const getActiveTabSessionNameByUser = (user: User) =>\n//   SessionNames.ACTIVE_TAB + \"_\" + user.id;\n","export const HttpHeaderNames = {\n  ENTITY: 'Entity',\n  FETCH_REASON: 'FetchReason',\n  PARAM: 'Param',\n  ACCESS_NODE_ID: 'AccessNodeId',\n};\n","export const GeneralODataTableName = 'api/general/OData';\nexport const GeneralTreeUrlName = 'api/tree/get';\n","import { Injectable } from '@angular/core';\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { GeneralODataTableName, HttpHeaderNames } from '../constants';\nimport {\n  GeneralODataServiceInterface,\n  ODataResponse,\n} from '../models/general-odata-service.interface';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class GeneralODataService<T = any> implements GeneralODataServiceInterface<T> {\n  constructor(private http: HttpClient) {}\n  get<ResultType = T>(\n    query?: string,\n    headers?: HttpHeaders\n  ): Observable<ODataResponse<ResultType>> {\n    if (!this.get.prototype) this.get.prototype = {};\n    this.get.prototype.cachingTagName = GeneralODataTableName;\n    return this.http.get<ODataResponse<ResultType>>('/' + GeneralODataTableName + (query || ''), {\n      headers,\n    });\n  }\n\n  getByEntity<ResultType = T>(entity: string, query?: string, headers?: HttpHeaders) {\n    return this.get<ResultType>(\n      query,\n      (headers || new HttpHeaders()).append(HttpHeaderNames.ENTITY, entity)\n    );\n  }\n\n  getByEntityAndFetchReason<ResultType>(\n    entity: string,\n    fetchReason: string | number,\n    query?: string,\n    headers?: HttpHeaders\n  ) {\n    return this.getByEntity<ResultType>(\n      entity,\n      query,\n      (headers || new HttpHeaders()).append(HttpHeaderNames.FETCH_REASON, fetchReason.toString())\n    );\n  }\n}\n","import { HttpClient, HttpHeaders } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { map, Observable } from 'rxjs';\nimport { StatusbarInfoInterface } from '../../models/general/statusbar-info.interface';\nimport { ODataAdapter } from './odata.adapter';\nimport { ODataResponse } from './responses/odata-response';\nimport { GeneralODataService } from '../general-odata.service';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class StatusbarInfoODataService extends GeneralODataService {\n  constructor(private _http: HttpClient) {\n    super(_http);\n  }\n  getStatusbarInfo(): Observable<ODataResponse<StatusbarInfoInterface>> {\n    const headers = new HttpHeaders().append('fetchReason', '1');\n    return this.getByEntity('StatusBarModel', null, headers).pipe(\n      map(response => ODataAdapter.getStatusbarInfoTransform(response))\n    );\n  }\n}\n","import { AccessNodeInterface } from \"../../models/users/access-node.interface\";\nimport { UserRightGetAccessNodeIdsResponse } from \"./responses/user-right-get-access-node-ids-response\";\n\nexport const accessNodeMapper = (input: any): AccessNodeInterface => {\n  let output: AccessNodeInterface = null;\n  if (input) {\n    output = {\n      id: input.id,\n      key: input.key,\n      name: input.name,\n    };\n  }\n  return output;\n};\n\nexport class UserRightAdapter {\n  static getAccessNodeIds(input: any): UserRightGetAccessNodeIdsResponse {\n    let output: UserRightGetAccessNodeIdsResponse = null;\n\n    if (input?.result instanceof Array) {\n      output = { results: input.result.map(accessNodeMapper) };\n    }\n\n    return output;\n  }\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { map, Observable } from 'rxjs';\nimport { UserRightGetAccessNodeIdsResponse } from './responses/user-right-get-access-node-ids-response';\nimport { UserRightAdapter } from './user-right.adapter';\n\n@Injectable({ providedIn: 'root' })\nexport class UserRightApiService {\n  constructor(private _http: HttpClient) {}\n  getAccessNodeIds(): Observable<UserRightGetAccessNodeIdsResponse> {\n    return this._http\n      .get('/api/userright/getaccessnodes')\n      .pipe(map(response => UserRightAdapter.getAccessNodeIds(response)));\n  }\n}\n","import { Paths } from '.';\nimport { FormStateEnum } from '../../models/form-state.enum';\nimport { SubSystemType } from '../../types/sub-system.type';\nexport class Uri {\n  private _url: string;\n  private _path: string;\n  get url(): string {\n    if (this.isModal) {\n      return 'modals-' + this._url;\n    }\n    return this._url;\n  }\n  get path(): string {\n    return this._path;\n  }\n  constructor(url: string, path: string, private isModal?: boolean) {\n    this._url = url;\n    this._path = path;\n  }\n\n  static createRoute(\n    subsystem: SubSystemType,\n    segments: string[],\n    componentType?: 'customForm' | 'modal'\n  ): Uri {\n    let path = segments\n      .map(segment =>\n        (segment.startsWith('/') ? segment.slice(1) : segment).endsWith('/')\n          ? segment.slice(0, -1)\n          : segment\n      )\n      .join('/');\n\n    if (componentType == 'customForm') {\n      path += `/:state`;\n      return new Uri(`/${Paths.app[subsystem].base}/${path}`, path);\n    } else {\n      return new Uri(`/${Paths.app[subsystem].base}/${path}`, path, componentType == 'modal');\n    }\n  }\n\n  static createUrl(\n    uri: Uri,\n    includeSubsystemPath: boolean = true,\n    queryParams?: Object,\n    formState?: FormStateEnum,\n    entityId?: string | number\n  ): string {\n    if (entityId) queryParams = { ...queryParams, id: entityId };\n    const urlEncodedParams = `?${Object.entries(queryParams)\n      .map(([key, value]) => `${key}=${encodeURIComponent(value)}`)\n      .join('&')}`;\n    if (uri.isModal) {\n      return uri.url + urlEncodedParams;\n    } else {\n      let url = includeSubsystemPath ? uri.url : uri.path;\n      url = url.replace(':state', formState);\n\n      return url + urlEncodedParams;\n    }\n  }\n}\n","import { Uri } from './uri';\n\nexport class NgtPaths {\n  static base: string = 'ngt';\n\n  static home(): Uri {\n    return new Uri(`/${NgtPaths.base}`, NgtPaths.base);\n  }\n\n  static calendarPattern(): Uri {\n    return new Uri(`/${NgtPaths.base}/calendar-pattern`, 'calendar-pattern');\n  }\n\n  static productGroup(): Uri {\n    return new Uri(`/${NgtPaths.base}/product-group`, 'product-group');\n  }\n\n  static AddOrEditProductGroup(): Uri {\n    return new Uri(`/${NgtPaths.base}/add-group`, 'add-group');\n  }\n}\n","import { Uri } from './uri';\nimport { NgtPaths } from './ngt-paths';\nexport * from './uri';\n\nexport class Paths {\n  static app = class {\n    static auth = class {\n      static base: string = 'auth';\n      static login(): Uri {\n        return new Uri(`/${Paths.app.auth.base}/login`, 'login');\n      }\n    };\n\n    static tracer = class {\n      static base: string = 'tracer';\n    };\n\n    static ngt = NgtPaths;\n\n    static review = class {\n      static base: string = 'review';\n    };\n\n    static masterData = class {\n      static base: string = 'master-data';\n    };\n\n    static stock = class {\n      static base: string = 'stock';\n    };\n\n    static b2b = class {\n      static base: string = 'b2b';\n    };\n\n    static customers = class {\n      static base: string = 'customers';\n      static home(): Uri {\n        return new Uri(`/${Paths.app.customers.base}`, Paths.app.customers.base);\n      }\n    };\n\n    static sale = class {\n      static base: string = 'sale';\n    };\n\n    static treasury = class {\n      static base: string = 'treasury';\n    };\n\n    static accounting = class {\n      static base: string = 'accounting';\n    };\n\n    static office = class {\n      static base: string = 'office';\n    };\n\n    static unauthorized(): Uri {\n      return new Uri('/unauthorized', 'unauthorized');\n    }\n\n    static cheatsheet(): Uri {\n      return new Uri('/cheatsheet', 'cheatsheet');\n    }\n\n    static designSystem(): Uri {\n      return new Uri('/design-system', 'design-system');\n    }\n\n    static products = class {\n      static list(): Uri {\n        return new Uri('/products', 'products');\n      }\n    };\n\n    static modal = class {\n      static base: string = 'modal';\n    };\n  };\n}\n","import { ActivatedRouteSnapshot, DetachedRouteHandle, RouteReuseStrategy } from '@angular/router';\nimport { RouteCachingService } from '../services/route-caching.service';\n\nexport class CacheRouteReuseStrategy implements RouteReuseStrategy {\n  constructor(private cashingService: RouteCachingService) {}\n\n  private getRouteUrl(route: ActivatedRouteSnapshot) {\n    return (route as any)._routerState?.url;\n  }\n\n  //This method is called everytime we navigate between routes. The future is the route we are leaving (not sure why is called future) and curr is the route we are landing. If it returns TRUE the routing will not happen (which means that routing has not changed). If it returns FALSE then the routing happens and the rest of the methods are called.\n  shouldReuseRoute(before: ActivatedRouteSnapshot, curr: ActivatedRouteSnapshot): boolean {\n    if (\n      before.routeConfig === curr.routeConfig &&\n      curr.routeConfig?.path &&\n      (/^.*\\/\\:.+$/g.test(curr.routeConfig.path) || curr.routeConfig.data?.['hasParams'])\n    ) {\n      return this.getRouteUrl(before) === this.getRouteUrl(curr);\n    }\n    return before.routeConfig === curr.routeConfig;\n  }\n\n  // This method is called for the route just opened when we land on the component of this route. Once component is loaded this method is called. If this method returns TRUE then retrieve method will be called, otherwise the component will be created from scratch.\n  shouldAttach(route: ActivatedRouteSnapshot): boolean {\n    if (!route.routeConfig?.data) return false;\n    return this.cashingService.has(this.getRouteUrl(route));\n  }\n\n  // This method is called if shouldAttach returns TRUE, provides as parameter the current route (we just land), and returns a stored RouteHandle. If returns null has no effects. We can use this method to get any stored RouteHandle manually. This is not managed by the framework automatically\n  retrieve(route: ActivatedRouteSnapshot): DetachedRouteHandle | null {\n    if (!route.routeConfig?.data) return null;\n    return this.cashingService.get(this.getRouteUrl(route)) as DetachedRouteHandle;\n  }\n\n  // It is invoked when we leave the current route. If returns TRUE then the store method will be invoked\n  shouldDetach(route: ActivatedRouteSnapshot): boolean {\n    const isModalOutlet =\n      route.outlet === 'modal' || route.pathFromRoot.some(r => r.outlet === 'modal');\n    return !!route.routeConfig?.data && !route.routeConfig.data['noCache'] && !isModalOutlet;\n  }\n\n  // This method is invoked only if the shouldDetach returns true. We can manage here how to store the RouteHandle. What we store here will be used in the retrieve method. It provides the route we are leaving and the RouteHandle.\n  store(route: ActivatedRouteSnapshot, detachedTree: DetachedRouteHandle): void {\n    this.cashingService.set(this.getRouteUrl(route), detachedTree);\n  }\n}\n","type CalendarDayType = 'prevMonth' | 'currentMonth' | 'nextMonth';\nexport type CalendarType = 'gregorian' | 'jalali';\nexport interface CalendarDay {\n  type: CalendarDayType;\n  number: number;\n  weekDay?: number;\n  year?: number;\n  month?: number;\n}\n// const grgSumOfDays = Array(\n//   Array(0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334, 365),\n//   Array(0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335, 366)\n// );\n// const hshSumOfDays = Array(\n//   Array(0, 31, 62, 93, 124, 155, 186, 216, 246, 276, 306, 336, 365),\n//   Array(0, 31, 62, 93, 124, 155, 186, 216, 246, 276, 306, 336, 366)\n// );\n\nabstract class CalendarBase {\n  abstract getDays(year: number, month: number): CalendarDay[];\n\n  getWeekDays(): string[] {\n    return ['1', '2', '3', '4', '5', '6', '7'];\n  }\n\n  getMonths(): string[] {\n    return ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'];\n  }\n}\n\nclass JalaliCalendar extends CalendarBase {\n  override getDays(year: number, month: number): CalendarDay[] {\n    const output: CalendarDay[] = [];\n    const gDateObject = Calendar.toGregorian(year, month, 1);\n    const date = new Date(gDateObject.year, gDateObject.month - 1, gDateObject.day);\n    const weekDay = (date.getDay() + 1) % 7;\n    const monthDaysCount = this.getMonthDaysCount(year, month);\n    const previousMonthDayCount = this.getPreviousMonthDayCount(year, month);\n\n    for (let i = 1, e = previousMonthDayCount - weekDay; i <= weekDay; i++)\n      output.push({\n        type: 'prevMonth',\n        number: e + i,\n      });\n\n    for (let j = 1; j <= monthDaysCount; j++) {\n      output.push({\n        type: 'currentMonth',\n        number: j,\n        year: year,\n        month: month,\n      });\n    }\n\n    const total = monthDaysCount + weekDay;\n    for (let k = 1; k <= 42 - total; k++) output.push({ type: 'nextMonth', number: k });\n    return output.map((data, index) => ({\n      ...data,\n      weekDay: (index + 1) % 7 == 0 ? 7 : (index + 1) % 7,\n    }));\n  }\n\n  private getMonthDaysCount(year: number, month: number) {\n    return month > 6 ? (month == 12 && !JalaliCalendar.isLeap(year) ? 29 : 30) : 31;\n  }\n\n  private julianDay(year: number, month: number, day: number): number {\n    console.log(year, month);\n\n    const epBase = year - (year >= 0 ? 474 : 473);\n    const epYear = 474 + this.mod(epBase, 2820);\n    const epoch = 1948320.5;\n    return (\n      day +\n      (month <= 7 ? (month - 1) * 31 : (month - 1) * 30 + 6) +\n      Math.floor((epYear * 682 - 110) / 2816) +\n      (epYear - 1) * 365 +\n      Math.floor(epBase / 2820) * 1029983 +\n      (epoch - 1)\n    );\n  }\n\n  private mod(a: number, b: number): number {\n    return a - b * Math.floor(a / b);\n  }\n\n  private weekDay(jDay: number): number {\n    const jWeekDay = this.mod(Math.floor(jDay + 1.5), 7);\n    return jWeekDay == 6 ? 0 : jWeekDay + 1;\n  }\n\n  static isLeap(year: number) {\n    // 1\n    // return (\n    //   ((((year - (year > 0 ? 474 : 473)) % 2820) + 474 + 38) * 682) % 2816 < 682\n    // );\n\n    //2;\n    // year = (year - 474) % 128;\n    // year = (year >= 30 ? 0 : 29) + year;\n    // year = year - Math.floor(year / 33) - 1;\n    // return year % 4 == 0;\n\n    // 3\n    return [1, 5, 9, 13, 17, 22, 26, 30].some(x => x == year % 33);\n  }\n\n  private getPreviousMonthDayCount(year: number, month: number): number {\n    month--;\n    if (month <= 0) {\n      year--;\n      month = 12;\n    }\n    return this.getMonthDaysCount(year, month);\n  }\n}\n\nclass GregorianCalendar extends CalendarBase {\n  override getDays(year: number, month: number): CalendarDay[] {\n    const output: CalendarDay[] = [];\n    const date = new Date(year, month, 0);\n    const weekDay = new Date(year, month - 1, 1).getDay();\n    const daysCount = date.getDate();\n\n    const previousMonthDayCount = this.getPreviousMonthDayCount(year, month);\n\n    for (let i = 1, e = previousMonthDayCount - weekDay; i <= weekDay; i++)\n      output.push({\n        type: 'prevMonth',\n        number: e + i,\n      });\n\n    for (let j = 1; j <= daysCount; j++) {\n      output.push({\n        type: 'currentMonth',\n        number: j,\n        year: year,\n        month: month,\n      });\n    }\n\n    const total = daysCount + weekDay;\n    //for (let k = 1; k <= (total <= 35 ? 35 : 42) - total; k++)\n    for (let k = 1; k <= 42 - total; k++) output.push({ type: 'nextMonth', number: k });\n    return output.map((data, index) => ({\n      ...data,\n      weekDay: (index + 1) % 7 == 0 ? 7 : (index + 1) % 7,\n    }));\n  }\n  private getPreviousMonthDayCount(year: number, month: number): number {\n    month--;\n    if (month <= 0) {\n      year--;\n      month = 12;\n    }\n    return new Date(year, month, 0).getDate();\n  }\n  static isLeap(year: number) {\n    return year % 4 == 0 && (year % 100 != 0 || year % 400 == 0);\n  }\n}\n\nexport class Calendar {\n  private calendar: CalendarBase;\n  type: CalendarType;\n\n  constructor(type: CalendarType) {\n    this.type = type;\n    switch (type) {\n      case 'gregorian':\n        this.calendar = new GregorianCalendar();\n\n        break;\n      case 'jalali':\n        this.calendar = new JalaliCalendar();\n\n        break;\n    }\n  }\n\n  getDays(year: number, month: number): CalendarDay[] {\n    return this.calendar.getDays(year, month);\n  }\n\n  getWeekDays(): string[] {\n    return this.calendar.getWeekDays();\n  }\n\n  getMonths(): string[] {\n    return this.calendar.getMonths();\n  }\n\n  static toGregorian(\n    year: number,\n    month: number,\n    day: number\n  ): { year: number; month: number; day: number } {\n    // let grgYear = year + 621;\n    // let grgMonth, grgDay;\n\n    // let hshLeap = JalaliCalendar.isLeap(year);\n    // let grgLeap = GregorianCalendar.isLeap(grgYear);\n\n    // let hshElapsed = hshSumOfDays[hshLeap ? 1 : 0][month - 1] + day;\n    // let grgElapsed;\n\n    // if (month > 10 || (month == 10 && hshElapsed > 286 + (grgLeap ? 1 : 0))) {\n    //   grgElapsed = hshElapsed - (286 + (grgLeap ? 1 : 0));\n    //   grgLeap = GregorianCalendar.isLeap(++grgYear);\n    // } else {\n    //   hshLeap = JalaliCalendar.isLeap(year - 1);\n    //   grgElapsed =\n    //     hshElapsed + 79 + (hshLeap ? 1 : 0) - (GregorianCalendar.isLeap(grgYear - 1) ? 1 : 0);\n    // }\n\n    // for (var i = 1; i <= 12; i++) {\n    //   if (grgSumOfDays[grgLeap ? 1 : 0][i] >= grgElapsed) {\n    //     grgMonth = i;\n    //     grgDay = grgElapsed - grgSumOfDays[grgLeap ? 1 : 0][i - 1];\n    //     break;\n    //   }\n    // }\n\n    // return { year: grgYear, month: grgMonth, day: grgDay };\n\n    const convertedDay = toGregorian(year, month, day);\n    return { year: convertedDay.gy, month: convertedDay.gm, day: convertedDay.gd };\n  }\n\n  static toJalali(year: number, month: number, day: number) {\n    // var hshYear = year - 621;\n    // var hshMonth, hshDay;\n\n    // var grgLeap = GregorianCalendar.isLeap(year);\n    // var hshLeap = JalaliCalendar.isLeap(hshYear - 1);\n\n    // var hshElapsed;\n    // var grgElapsed = grgSumOfDays[grgLeap ? 1 : 0][month - 1] + day;\n\n    // var XmasToNorooz = hshLeap && grgLeap ? 80 : 79;\n\n    // if (grgElapsed <= XmasToNorooz) {\n    //   hshElapsed = grgElapsed + 286;\n    //   hshYear--;\n    //   if (hshLeap && !grgLeap) hshElapsed++;\n    // } else {\n    //   hshElapsed = grgElapsed - XmasToNorooz;\n    //   hshLeap = JalaliCalendar.isLeap(hshYear);\n    // }\n\n    // for (var i = 1; i <= 12; i++) {\n    //   if (hshSumOfDays[hshLeap ? 1 : 0][i] >= hshElapsed) {\n    //     hshMonth = i;\n    //     hshDay = hshElapsed - hshSumOfDays[hshLeap ? 1 : 0][i - 1];\n    //     break;\n    //   }\n    // }\n\n    // return { year: hshYear, month: hshMonth, day: hshDay };\n\n    const [hshYear, hshMonth, hshDay] = new Date(year, month - 1, day)\n      .toLocaleDateString('fa-IR', {\n        year: 'numeric',\n        month: '2-digit',\n        day: '2-digit',\n      })\n      .replace(/([۰-۹])/g, token => String.fromCharCode(token.charCodeAt(0) - 1728))\n      .split('/')\n      .map(data => +data);\n\n    return { year: hshYear, month: hshMonth, day: hshDay };\n  }\n}\n\nexport function checkShamsi(str: string) {\n  var patt =\n    /(13|14)([0-9][0-9])\\/(((0?[1-6])\\/((0?[1-9])|([12][0-9])|(3[0-1])))|(((0?[7-9])|(1[0-2]))\\/((0?[1-9])|([12][0-9])|(30))))/g;\n  var result = patt.test(str);\n  if (result) {\n    var pos = str.indexOf('/');\n    var year = parseInt(str.substring(0, pos));\n    var nextPos = str.indexOf('/', pos + 1);\n    var month = parseInt(str.substring(pos + 1, nextPos));\n    var day = parseInt(str.substring(nextPos + 1));\n    if (day > 31) result = false;\n    else if (month > 6 && day > 30) result = false;\n    else if (month == 12 && (year + 1) % 4 != 0 && day == 30) {\n      // kabise = 1379, 1383, 1387,... (year +1) divides on 4 remains 0\n      result = false;\n    }\n  }\n  return result;\n}\n\nexport function currentDatePersian(): string {\n  return new Date()\n    .toLocaleDateString('fa-IR', {\n      year: 'numeric',\n      month: '2-digit',\n      day: '2-digit',\n    })\n    .replace(/([۰-۹])/g, token => String.fromCharCode(token.charCodeAt(0) - 1728));\n}\n\n/*\n  Jalaali years starting the 33-year rule.\n*/\nvar breaks = [\n  -61, 9, 38, 199, 426, 686, 756, 818, 1111, 1181, 1210, 1635, 2060, 2097, 2192, 2262, 2324, 2394,\n  2456, 3178,\n];\n\n/*\n  Converts a Gregorian date to Jalaali.\n*/\nfunction toJalaali(gy, gm, gd) {\n  if (Object.prototype.toString.call(gy) === '[object Date]') {\n    gd = gy.getDate();\n    gm = gy.getMonth() + 1;\n    gy = gy.getFullYear();\n  }\n  return d2j(g2d(gy, gm, gd));\n}\n\n/*\n  Converts a Jalaali date to Gregorian.\n*/\nfunction toGregorian(jy, jm, jd) {\n  return d2g(j2d(jy, jm, jd));\n}\n\n/*\n  Checks whether a Jalaali date is valid or not.\n*/\nfunction isValidJalaaliDate(jy, jm, jd) {\n  return (\n    jy >= -61 && jy <= 3177 && jm >= 1 && jm <= 12 && jd >= 1 && jd <= jalaaliMonthLength(jy, jm)\n  );\n}\n\n/*\n  Is this a leap year or not?\n*/\nfunction isLeapJalaaliYear(jy) {\n  return jalCalLeap(jy) === 0;\n}\n\n/*\n  Number of days in a given month in a Jalaali year.\n*/\nfunction jalaaliMonthLength(jy, jm) {\n  if (jm <= 6) return 31;\n  if (jm <= 11) return 30;\n  if (isLeapJalaaliYear(jy)) return 30;\n  return 29;\n}\n\n/*\n    This function determines if the Jalaali (Persian) year is\n    leap (366-day long) or is the common year (365 days)\n\n    @param jy Jalaali calendar year (-61 to 3177)\n    @returns number of years since the last leap year (0 to 4)\n */\nfunction jalCalLeap(jy) {\n  var bl = breaks.length,\n    jp = breaks[0],\n    jm,\n    jump,\n    leap,\n    n,\n    i;\n\n  if (jy < jp || jy >= breaks[bl - 1]) throw new Error('Invalid Jalaali year ' + jy);\n\n  for (i = 1; i < bl; i += 1) {\n    jm = breaks[i];\n    jump = jm - jp;\n    if (jy < jm) break;\n    jp = jm;\n  }\n  n = jy - jp;\n\n  if (jump - n < 6) n = n - jump + div(jump + 4, 33) * 33;\n  leap = mod(mod(n + 1, 33) - 1, 4);\n  if (leap === -1) {\n    leap = 4;\n  }\n\n  return leap;\n}\n\n/*\n  This function determines if the Jalaali (Persian) year is\n  leap (366-day long) or is the common year (365 days), and\n  finds the day in March (Gregorian calendar) of the first\n  day of the Jalaali year (jy).\n\n  @param jy Jalaali calendar year (-61 to 3177)\n  @param withoutLeap when don't need leap (true or false) default is false\n  @return\n    leap: number of years since the last leap year (0 to 4)\n    gy: Gregorian year of the beginning of Jalaali year\n    march: the March day of Farvardin the 1st (1st day of jy)\n  @see: http://www.astro.uni.torun.pl/~kb/Papers/EMP/PersianC-EMP.htm\n  @see: http://www.fourmilab.ch/documents/calendar/\n*/\nfunction jalCal(jy, withoutLeap) {\n  var bl = breaks.length,\n    gy = jy + 621,\n    leapJ = -14,\n    jp = breaks[0],\n    jm,\n    jump,\n    leap,\n    leapG,\n    march,\n    n,\n    i;\n\n  if (jy < jp || jy >= breaks[bl - 1]) throw new Error('Invalid Jalaali year ' + jy);\n\n  // Find the limiting years for the Jalaali year jy.\n  for (i = 1; i < bl; i += 1) {\n    jm = breaks[i];\n    jump = jm - jp;\n    if (jy < jm) break;\n    leapJ = leapJ + div(jump, 33) * 8 + div(mod(jump, 33), 4);\n    jp = jm;\n  }\n  n = jy - jp;\n\n  // Find the number of leap years from AD 621 to the beginning\n  // of the current Jalaali year in the Persian calendar.\n  leapJ = leapJ + div(n, 33) * 8 + div(mod(n, 33) + 3, 4);\n  if (mod(jump, 33) === 4 && jump - n === 4) leapJ += 1;\n\n  // And the same in the Gregorian calendar (until the year gy).\n  leapG = div(gy, 4) - div((div(gy, 100) + 1) * 3, 4) - 150;\n\n  // Determine the Gregorian date of Farvardin the 1st.\n  march = 20 + leapJ - leapG;\n\n  // return with gy and march when we don't need leap\n  if (withoutLeap) return { gy: gy, march: march };\n\n  // Find how many years have passed since the last leap year.\n  if (jump - n < 6) n = n - jump + div(jump + 4, 33) * 33;\n  leap = mod(mod(n + 1, 33) - 1, 4);\n  if (leap === -1) {\n    leap = 4;\n  }\n\n  return { leap: leap, gy: gy, march: march };\n}\n\n/*\n  Converts a date of the Jalaali calendar to the Julian Day number.\n\n  @param jy Jalaali year (1 to 3100)\n  @param jm Jalaali month (1 to 12)\n  @param jd Jalaali day (1 to 29/31)\n  @return Julian Day number\n*/\nfunction j2d(jy, jm, jd) {\n  var r = jalCal(jy, true);\n  return g2d(r.gy, 3, r.march) + (jm - 1) * 31 - div(jm, 7) * (jm - 7) + jd - 1;\n}\n\n/*\n  Converts the Julian Day number to a date in the Jalaali calendar.\n\n  @param jdn Julian Day number\n  @return\n    jy: Jalaali year (1 to 3100)\n    jm: Jalaali month (1 to 12)\n    jd: Jalaali day (1 to 29/31)\n*/\nfunction d2j(jdn) {\n  var gy = d2g(jdn).gy, // Calculate Gregorian year (gy).\n    jy = gy - 621,\n    r = jalCal(jy, false),\n    jdn1f = g2d(gy, 3, r.march),\n    jd,\n    jm,\n    k;\n\n  // Find number of days that passed since 1 Farvardin.\n  k = jdn - jdn1f;\n  if (k >= 0) {\n    if (k <= 185) {\n      // The first 6 months.\n      jm = 1 + div(k, 31);\n      jd = mod(k, 31) + 1;\n      return { jy: jy, jm: jm, jd: jd };\n    } else {\n      // The remaining months.\n      k -= 186;\n    }\n  } else {\n    // Previous Jalaali year.\n    jy -= 1;\n    k += 179;\n    if (r.leap === 1) k += 1;\n  }\n  jm = 7 + div(k, 30);\n  jd = mod(k, 30) + 1;\n  return { jy: jy, jm: jm, jd: jd };\n}\n\n/*\n  Calculates the Julian Day number from Gregorian or Julian\n  calendar dates. This integer number corresponds to the noon of\n  the date (i.e. 12 hours of Universal Time).\n  The procedure was tested to be good since 1 March, -100100 (of both\n  calendars) up to a few million years into the future.\n\n  @param gy Calendar year (years BC numbered 0, -1, -2, ...)\n  @param gm Calendar month (1 to 12)\n  @param gd Calendar day of the month (1 to 28/29/30/31)\n  @return Julian Day number\n*/\nfunction g2d(gy, gm, gd) {\n  var d =\n    div((gy + div(gm - 8, 6) + 100100) * 1461, 4) +\n    div(153 * mod(gm + 9, 12) + 2, 5) +\n    gd -\n    34840408;\n  d = d - div(div(gy + 100100 + div(gm - 8, 6), 100) * 3, 4) + 752;\n  return d;\n}\n\n/*\n  Calculates Gregorian and Julian calendar dates from the Julian Day number\n  (jdn) for the period since jdn=-34839655 (i.e. the year -100100 of both\n  calendars) to some millions years ahead of the present.\n\n  @param jdn Julian Day number\n  @return\n    gy: Calendar year (years BC numbered 0, -1, -2, ...)\n    gm: Calendar month (1 to 12)\n    gd: Calendar day of the month M (1 to 28/29/30/31)\n*/\nfunction d2g(jdn) {\n  var j, i, gd, gm, gy;\n  j = 4 * jdn + 139361631;\n  j = j + div(div(4 * jdn + 183187720, 146097) * 3, 4) * 4 - 3908;\n  i = div(mod(j, 1461), 4) * 5 + 308;\n  gd = div(mod(i, 153), 5) + 1;\n  gm = mod(div(i, 153), 12) + 1;\n  gy = div(j, 1461) - 100100 + div(8 - gm, 6);\n  return { gy: gy, gm: gm, gd: gd };\n}\n\n/**\n * Return Saturday and Friday day of current week(week start in Saturday)\n * @param {number} jy jalaali year\n * @param {number} jm jalaali month\n * @param {number} jd jalaali day\n * @returns Saturday and Friday of current week\n */\nfunction jalaaliWeek(jy, jm, jd) {\n  var dayOfWeek = jalaaliToDateObject(jy, jm, jd, null, null, null, null).getDay();\n\n  var startDayDifference = dayOfWeek == 6 ? 0 : -(dayOfWeek + 1);\n  var endDayDifference = 6 + startDayDifference;\n\n  return {\n    saturday: d2j(j2d(jy, jm, jd + startDayDifference)),\n    friday: d2j(j2d(jy, jm, jd + endDayDifference)),\n  };\n}\n\n/**\n * Convert Jalaali calendar dates to javascript Date object\n * @param {number} jy jalaali year\n * @param {number} jm jalaali month\n * @param {number} jd jalaali day\n * @param {number} [h] hours\n * @param {number} [m] minutes\n * @param {number} [s] seconds\n * @param {number} [ms] milliseconds\n * @returns Date object of the jalaali calendar dates\n */\nfunction jalaaliToDateObject(jy, jm, jd, h, m, s, ms) {\n  var gregorianCalenderDate = toGregorian(jy, jm, jd);\n\n  return new Date(\n    gregorianCalenderDate.gy,\n    gregorianCalenderDate.gm - 1,\n    gregorianCalenderDate.gd,\n    h || 0,\n    m || 0,\n    s || 0,\n    ms || 0\n  );\n}\n\n/*\n  Utility helper functions.\n*/\n\nfunction div(a, b) {\n  return ~~(a / b);\n}\n\nfunction mod(a, b) {\n  return a - ~~(a / b) * b;\n}\n","let typeCache: { [label: string]: boolean } = {};\n/**\n * This function coerces a string into a string literal type.\n * Using tagged union types in TypeScript 2.0, this enables\n * powerful typechecking of our reducers.\n *\n * Since every action label passes through this function it\n * is a good place to ensure all of our action labels are unique.\n *\n * @param label\n */\nexport const checkActionType = <T>(label: T | ''): T => {\n  if (typeCache[<string>label]) {\n    throw new Error(`Action type \"${label}\" is not unqiue\"`);\n  }\n\n  typeCache[<string>label] = true;\n\n  return <T>label;\n};\n","interface ValueLabelPair {\n  value: number;\n  label: string;\n}\n\nexport const convertEnumToArray = (input: any): ValueLabelPair[] =>\n  Object.keys(input)\n    .filter((value) => isNaN(Number(value)) === false)\n    .map((key) => {\n      const output: ValueLabelPair = {\n        value: parseInt(key),\n        label: input[key],\n      };\n      return output;\n    });\n","import { ParamHttpHeaderItemInterface } from '../models';\n\nexport const createParamHttpHeaderValue = (\n  input: ParamHttpHeaderItemInterface[]\n): string => JSON.stringify(input);\n","import { FararuRoutes } from '../models/fararu-route';\n\nexport const getMenuLink = (routes: FararuRoutes, id: string | number): string | null => {\n  for (let i = 0, length = routes.length; i < length; i++) {\n    const element = routes[i];\n    // Use menuItemId as the primary identifier for matching routes.\n    // Older menus do not have menuItemId and only use accessNodeId.\n    // For backward compatibility, fall back to accessNodeId if menuItemId is missing.\n    // NOTE: This is intentional. I wrote this with a goal in mind.\n    // Do NOT change this unless you fully understand why it's here.\n    const menuId = element.data?.menuItemId ? element.data?.menuItemId : element.data?.accessNodeId;\n    if (menuId == id) {\n      return element.data?.url;\n    } else if (element.children?.length) {\n      const link = getMenuLink(element.children, id);\n      if (link) {\n        return link;\n      }\n    }\n  }\n\n  return null;\n};\n","export function SaveExpandCollapse(hierGrid: any) {\n  var ecarr = [];\n  var rows = hierGrid.rows;\n  for (var rowIdx = 0; rowIdx < rows.length; rowIdx++) {\n    var rootRow = rows[rowIdx];\n    if (rootRow.hasChildren) {\n      ecarr.push(rootRow);\n    }\n  }\n  return ecarr;\n}\n\nexport function ApplyExpandCollapse(hierGrid: any, ecarr: any[]) {\n  for (var rowIdx = 0; rowIdx < hierGrid.rows.length; rowIdx++) {\n    if (hierGrid.rows[rowIdx].hasChildren) {\n      for (var j = 0; j < ecarr.length; j++) {\n        if (hierGrid.rows[rowIdx].dataItem.id == ecarr[j].dataItem.id) {\n          hierGrid.rows[rowIdx].isCollapsed = ecarr[j].isCollapsed;\n        }\n      }\n    }\n  }\n  return hierGrid;\n}\n\nexport function generateUniqueId(): string {\n  const timestamp = Date.now().toString(36);\n  const randomString = Math.random().toString(36).substr(2, 9);\n  return timestamp + '_' + randomString;\n}\n\nexport function deepEqual(obj1: any, obj2: any): boolean {\n  // Check if the types match\n  if (typeof obj1 !== typeof obj2) {\n    return false;\n  }\n\n  // Check if both are objects and not null\n  if (typeof obj1 === 'object' && obj1 !== null && typeof obj2 === 'object' && obj2 !== null) {\n    const keys1 = Object.keys(obj1);\n    const keys2 = Object.keys(obj2);\n\n    // Check if the number of properties match\n    if (keys1.length !== keys2.length) {\n      return false;\n    }\n\n    // Check each property recursively\n    for (const key of keys1) {\n      if (!deepEqual(obj1[key], obj2[key])) {\n        return false;\n      }\n    }\n\n    return true;\n  }\n\n  // For non-object types, use strict equality\n  return obj1 === obj2;\n}\n\nexport function deepCopy(input: any): any {\n  if (typeof input !== 'object' || input === null) {\n    // If the input is not an object or is null, return it as is\n    return input;\n  }\n\n  if (Array.isArray(input)) {\n    // If the input is an array, recursively deep copy its elements\n    return input.map(element => deepCopy(element));\n  }\n\n  // If the input is an object, recursively deep copy its properties\n  const copiedObject: { [key: string]: any } = {};\n  for (const key in input) {\n    if (Object.prototype.hasOwnProperty.call(input, key)) {\n      copiedObject[key] = deepCopy(input[key]);\n    }\n  }\n\n  return copiedObject;\n}\n\nexport function arraysAreEqual<T>(array1: T[], array2: T[]): boolean {\n  // Check if the arrays have the same length\n  if (array1?.length !== array2?.length) {\n    return false;\n  }\n\n  // Check if all elements are equal using the every method\n  return array1.every((value, index) => deepEqual(value, array2[index]));\n}\n","export const isNil = (input: any) =>\n  input === null || input === undefined || input === '';\n","\nexport const convertPersianCharsToArabic = (text: string, convertNumbers = true) => {\n    if (\n      text &&\n      text !== '' &&\n      text !== null &&\n      text !== undefined &&\n      text.length > 0\n    ) {\n      text = text.replace(/ی/g, 'ي');\n      text = text.replace(/ک/g, 'ك');\n      text = text.replace(/د/g, 'د');\n      text = text.replace(/ب/g, 'ب');\n      text = text.replace(/ز/g, 'ز');\n      text = text.replace(/ذ/g, 'ذ');\n      text = text.replace(/ش/g, 'ش');\n      text = text.replace(/س/g, 'س');\n      if (convertNumbers) {\n        text = text.replace(/۱/g, '١');\n        text = text.replace(/۲/g, '٢');\n        text = text.replace(/۳/g, '٣');\n        text = text.replace(/۴/g, '٤');\n        text = text.replace(/۵/g, '٥');\n        text = text.replace(/۶/g, '٦');\n        text = text.replace(/۷/g, '٧');\n        text = text.replace(/۸/g, '٨');\n        text = text.replace(/۹/g, '٩');\n        text = text.replace(/۰/g, '٠');\n      }\n    }\n    return text;\n  }\n\n  export const convertArabicCharsToPersian = (text: string, convertNumbers = true) => {\n    if (\n      text &&\n      text !== '' &&\n      text !== null &&\n      text !== undefined &&\n      text.length > 0\n    ) {\n      text = text.replace(/ي/g, 'ی');\n      text = text.replace(/ك/g, 'ک');\n      text = text.replace(/د/g, 'د');\n      text = text.replace(/ب/g, 'ب');\n      text = text.replace(/ز/g, 'ز');\n      text = text.replace(/ذ/g, 'ذ');\n      text = text.replace(/ش/g, 'ش');\n      text = text.replace(/س/g, 'س');\n      if (convertNumbers) {\n        text = text.replace(/١/g, '۱');\n        text = text.replace(/٢/g, '۲');\n        text = text.replace(/٣/g, '۳');\n        text = text.replace(/٤/g, '۴');\n        text = text.replace(/٥/g, '۵');\n        text = text.replace(/٦/g, '۶');\n        text = text.replace(/٧/g, '۷');\n        text = text.replace(/٨/g, '۸');\n        text = text.replace(/٩/g, '۹');\n        text = text.replace(/٠/g, '۰');\n      }\n    }\n    return text;\n  }\n\n  export const convertPersianToEnglishNumbers = (text: string): string => {\n    // Character code ranges for Persian and English digits\n    const persianDigitRange = ['\\u06F0', '\\u06F9'];\n    const englishDigitRange = ['0', '9'];\n  \n    return text.replace(/[\\u06F0-\\u06F9]+/g, match => {\n      // Convert each Persian digit character to its code point\n      const codePoints = match.split('').map(char => char.charCodeAt(0));\n  \n      // Calculate the difference between Persian and English digit code points\n      const codePointDifference =\n        persianDigitRange[0].charCodeAt(0) - englishDigitRange[0].charCodeAt(0);\n  \n      // Convert each code point to its corresponding English digit\n      const englishDigits = codePoints.map(codePoint =>\n        String.fromCharCode(codePoint - codePointDifference)\n      );\n  \n      return englishDigits.join('');\n    });\n  };\n  ","export const propertyOf = <T>(name: keyof T) => name;\n","import { GetMenuResponseInterface } from '../models/get-menu-response.interface';\n\nexport class AppMenuAdapter {\n  static appMenuTransform(input: any[]): GetMenuResponseInterface {\n    let output: GetMenuResponseInterface = input.map(item => ({\n      id: item.id,\n      accessNodeId: item.accessNodeId,\n      title: item.title,\n      iconUrl: item.iconUrl,\n      hasActionMenu: item.hasActionMenu,\n      isReportMenu: item.isReportMenu,\n      reportId: item.reportId,\n      subMenus: item.menuItems.length > 0 ? AppMenuAdapter.appMenuTransform(item.menuItems) : [],\n    }));\n    return output;\n  }\n}\n","export const flattenTree = <TYPE = any>(\n  list: TYPE[],\n  childrenBinding: string = 'children',\n  parent: TYPE = null\n): { item: TYPE; parent: TYPE }[] => {\n  return list.reduce((acc, item) => {\n    acc.push({ item, parent });\n    if (item[childrenBinding]?.length > 0) {\n      acc.push(...flattenTree(item[childrenBinding], childrenBinding, item));\n    }\n    return acc;\n  }, []);\n};\n","export const generateUUID = () =>\n  'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\n    const r = (Math.random() * 16) | 0,\n      v = c === 'x' ? r : (r & 0x3) | 0x8;\n    return v.toString(16);\n  });\n","export enum GridColumnDataTypes {\n  OBJECT = 0,\n  STRING = 1,\n  NUMBER = 2,\n  BOOLEAN = 3,\n  DATE = 4,\n  ARRAY = 5,\n  IMAGE = 10,\n  // LINK = 11\n}\n\nexport enum VaranegarDataTypes {\n  Int = 0,\n  Float,\n  Decimal,\n  String,\n  Bool,\n  Int64,\n  Double,\n}\n","import { GridColumnDataTypes, VaranegarDataTypes } from '../enums/grid-column-data-types';\n\nexport class Utility {\n  static toPascalCase = (str: string) =>\n    (str.match(/[a-zA-Z0-9]+/g) || [])\n      .map(w => `${w.charAt(0).toUpperCase()}${w.slice(1)}`)\n      .join('');\n\n  //  function that converts a string to camelCase, but if the string starts with multiple capital letters,\n  //  it should convert all of them to lowercase except the last one.\n  static toCamelCase = (str: string) => {\n    // Step 1: Handle separators and capitalize the next character\n    str = str.replace(/[-_\\s]+(.)?/g, function (match, char) {\n      return char ? char.toUpperCase() : '';\n    });\n\n    // Step 2: Handle leading multiple capital letters\n    str = str.replace(/^([A-Z]{2,})([A-Z])/, function (match, leadingCaps, lastCap) {\n      return leadingCaps.toLowerCase() + lastCap;\n    });\n\n    // Step 3: Ensure the first character is lowercase\n    str = str.replace(/^([A-Z])/, function (match) {\n      return match.toLowerCase();\n    });\n\n    return str;\n  };\n\n  static convertEnumToArray = (input: any): { value: number; label: string }[] =>\n    Object.keys(input)\n      .filter(value => isNaN(Number(value)) === false)\n      .map(key => {\n        const output: { value: number; label: string } = {\n          value: parseInt(key),\n          label: input[key],\n        };\n        return output;\n      });\n\n  static isDateString = (input: string) => !!/^\\d{4}\\/\\d{2}\\/\\d{2}$/.test(input);\n\n  static maptVaranegarDataTypeToWijmoGridDataType = (varanegarDataType: number): GridColumnDataTypes => {\n    let gridDataType: number;\n\n    switch (varanegarDataType) {\n      case VaranegarDataTypes.Int:\n      case VaranegarDataTypes.Float:\n      case VaranegarDataTypes.Decimal:\n      case VaranegarDataTypes.Int64:\n      case VaranegarDataTypes.Double:\n        gridDataType = GridColumnDataTypes.NUMBER;\n        break;\n\n      case VaranegarDataTypes.String:\n        gridDataType = GridColumnDataTypes.STRING;\n        break;\n\n      case VaranegarDataTypes.Bool:\n        gridDataType = GridColumnDataTypes.BOOLEAN;\n        break;\n\n      default:\n        break;\n    }\n\n    return gridDataType;\n  };\n\n  static buildQueryString(params): string {\n    return new URLSearchParams(params).toString();\n  }\n\n  static generateCacheKey(methodName: string, args: any[]): string {\n    const argsKey = args.map(arg => JSON.stringify(arg)).join('|');\n    return `${methodName}|${argsKey}`;\n  }\n\n  // static convertToKeyNameKeyValueList(obj): { keyName: string; keyValue: unknown }[] {\n  //   return Object.entries(obj).map(([keyName, keyValue]) => ({\n  //     keyName,\n  //     keyValue,\n  //   }));\n  // }\n}\n","import { InjectionToken } from \"@angular/core\";\n\nexport const SUB_SYSTEM_VERSION = new InjectionToken(\"SUB_SYSTEM_VERSION\");","import { Injectable } from '@angular/core';\nimport { Subject } from 'rxjs';\n\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class CacheService {\n  private cache = new Map<string, { expires: number; value: any }>();\n  public requestSubjects = new Map<string, Subject<any>>();\n\n  get<T>(key: string): T | null {\n    const item = this.cache.get(key);\n    if (!item) return null;\n    \n    if (item.expires < Date.now()) {\n      this.cache.delete(key);\n      return null;\n    }\n    \n    return item.value;\n  }\n\n  set(key: string, value: any, ttl: number): void {\n    this.cache.set(key, {\n      expires: Date.now() + ttl,\n      value\n    });\n  }\n\n  clear(): void {\n    this.cache.clear();\n  }\n\n  delete(key: string): boolean {\n    return this.cache.delete(key);\n  }\n}\n\n","import { Inject } from \"@angular/core\";\nimport { CacheService } from \"../services/cache-storage.service\";\nimport { Observable, of, tap } from \"rxjs\";\nimport { Utility } from \"./utility\";\n\nexport function Cacheable(ttl: number = 300000) {\n    return function(target: any, propertyKey: string, descriptor: PropertyDescriptor) {\n      const originalMethod = descriptor.value;\n      const cacheService = Inject(CacheService);\n  \n      descriptor.value = function(...args: any[]): Observable<any> {\n        const cacheKey = Utility.generateCacheKey(propertyKey, args);\n        const cached = cacheService.get(cacheKey);\n        \n        if (cached) {\n          return of(cached);\n        }\n  \n        return originalMethod.apply(this, args).pipe(\n          tap(value => cacheService.set(cacheKey, value, ttl))\n        );\n      };\n  \n      return descriptor;\n    };\n  }","import { HttpClient } from '@angular/common/http';\nimport { isDevMode } from '@angular/core';\nimport { ConfigurationInterface } from '../models/configuration.interface';\nimport { lastValueFrom } from 'rxjs';\n\nexport const getVersionQueryStringOfRemoteModule = async (\n  domain: string,\n  http: HttpClient\n): Promise<string | null> => {\n  const time = new Date().getTime();\n  let versionQueryString: string | null = null;\n\n  if (isDevMode()) {\n    versionQueryString = time.toString();\n  } else {\n    const subSystemConfig = await lastValueFrom(\n      http.get<ConfigurationInterface>(domain + '/config/version.json?v=' + time)\n    );\n    if (subSystemConfig?.version) {\n      versionQueryString = subSystemConfig.version;\n    }\n  }\n  return versionQueryString;\n};\n","import { createAction, props } from '@ngrx/store';\n\n// import { Bank } from \"../../models/customers/bank.model\";\n// import { CustomerActionInterface } from \"../../models/customers/customer-action.interface\";\n// import { CustomerCategoryInterface } from \"../../models/customers/customer-category.interface\";\n// import { CustomerGroupInterface } from \"../../models/customers/customer-group.interface\";\n// import { CustomerLevelInterface } from \"../../models/customers/customer-level.interface\";\n// import { CustomerRegisterTypeInterface } from \"../../models/customers/customer-register-type.interface\";\n// import { CustomerTypeInterface } from \"../../models/customers/customer-type.interface\";\n// import { DynamicCustomerGroup } from \"../../models/customers/dynamic-customer-group.model\";\n// import { InActiveCause } from \"../../models/customers/in-active-cause.model\";\n// import { OwnerTypeInterface } from \"../../models/customers/owner-type.interface\";\n// import { PayTypeInterface } from \"../../models/customers/pay-type.interface\";\nimport { ReviewToolbarAction } from '../../models/review/review-toolbar-action.interface';\nimport { ReviewToolbar } from '../../models/review/review-toolbar.interface';\nimport { checkActionType } from '../../utils/check-action-type';\n\nexport const ConfigActionTypes = {\n  CHANGE_GLOBAL_LOADING_STATE: checkActionType(\n    '[Config] Change global loading state'\n  ),\n  // CUSTOMER_TYPES_REQUEST: checkActionType(\"[Config] Customer types request\"),\n  // CUSTOMER_TYPES_SUCCESS: checkActionType(\"[Config] Customer types success\"),\n  // CUSTOMER_TYPES_FAIL: checkActionType(\"[Config] Customer types fail\"),\n  // CUSTOMER_TYPES_CLEAR: checkActionType(\"[Config] Customer types clear\"),\n\n  // CUSTOMER_CATEGORIES_REQUEST: checkActionType(\n  //   \"[Config] Customer categories request\"\n  // ),\n  // CUSTOMER_CATEGORIES_SUCCESS: checkActionType(\n  //   \"[Config] Customer categories success\"\n  // ),\n  // CUSTOMER_CATEGORIES_FAIL: checkActionType(\n  //   \"[Config] Customer categories fail\"\n  // ),\n  // CUSTOMER_CATEGORIES_CLEAR: checkActionType(\n  //   \"[Config] Customer categories clear\"\n  // ),\n\n  // CUSTOMER_ACTIONS_REQUEST: checkActionType(\n  //   \"[Config] Customer actions request\"\n  // ),\n  // CUSTOMER_ACTIONS_SUCCESS: checkActionType(\n  //   \"[Config] Customer actions success\"\n  // ),\n  // CUSTOMER_ACTIONS_FAIL: checkActionType(\"[Config] Customer actions fail\"),\n  // CUSTOMER_ACTIONS_CLEAR: checkActionType(\"[Config] Customer actions clear\"),\n\n  // CUSTOMER_LEVELS_REQUEST: checkActionType(\"[Config] Customer levels request\"),\n  // CUSTOMER_LEVELS_SUCCESS: checkActionType(\"[Config] Customer levels success\"),\n  // CUSTOMER_LEVELS_FAIL: checkActionType(\"[Config] Customer levels fail\"),\n  // CUSTOMER_LEVELS_CLEAR: checkActionType(\"[Config] Customer levels clear\"),\n\n  // OWNER_TYPES_REQUEST: checkActionType(\"[Config] Owner types request\"),\n  // OWNER_TYPES_SUCCESS: checkActionType(\"[Config] Owner types success\"),\n  // OWNER_TYPES_FAIL: checkActionType(\"[Config] Owner types fail\"),\n  // OWNER_TYPES_CLEAR: checkActionType(\"[Config] Owner types clear\"),\n\n  // CUSTOMER_REGISTER_TYPES_REQUEST: checkActionType(\n  //   \"[Config] Customer register types request\"\n  // ),\n  // CUSTOMER_REGISTER_TYPES_SUCCESS: checkActionType(\n  //   \"[Config] Customer register types success\"\n  // ),\n  // CUSTOMER_REGISTER_TYPES_FAIL: checkActionType(\n  //   \"[Config] Customer register types fail\"\n  // ),\n  // CUSTOMER_REGISTER_TYPES_CLEAR: checkActionType(\n  //   \"[Config] Customer register types clear\"\n  // ),\n\n  // CUSTOMER_GROUPS_REQUEST: checkActionType(\"[Config] Customer groups request\"),\n  // CUSTOMER_GROUPS_SUCCESS: checkActionType(\"[Config] Customer groups success\"),\n  // CUSTOMER_GROUPS_FAIL: checkActionType(\"[Config] Customer groups fail\"),\n  // CUSTOMER_GROUPS_CLEAR: checkActionType(\"[Config] Customer groups clear\"),\n\n  // PAY_TYPES_REQUEST: checkActionType(\"[Config] Pay types request\"),\n  // PAY_TYPES_SUCCESS: checkActionType(\"[Config] Pay types success\"),\n  // PAY_TYPES_FAIL: checkActionType(\"[Config] Pay types fail\"),\n  // PAY_TYPES_CLEAR: checkActionType(\"[Config] Pay types clear\"),\n\n  // DYNAMIC_CUSTOMER_GROUPS_REQUEST: checkActionType(\n  //   \"[Config] dynamic customer groups request\"\n  // ),\n  // DYNAMIC_CUSTOMER_GROUPS_SUCCESS: checkActionType(\n  //   \"[Config] dynamic customer groups success\"\n  // ),\n  // DYNAMIC_CUSTOMER_GROUPS_FAIL: checkActionType(\n  //   \"[Config] dynamic customer groups fail\"\n  // ),\n  // DYNAMIC_CUSTOMER_GROUPS_CLEAR: checkActionType(\n  //   \"[Config] dynamic customer groups clear\"\n  // ),\n\n  // IN_ACTIVE_CAUSES_REQUEST: checkActionType(\n  //   \"[Config] in active causes request\"\n  // ),\n  // IN_ACTIVE_CAUSES_SUCCESS: checkActionType(\n  //   \"[Config] in active causes success\"\n  // ),\n  // IN_ACTIVE_CAUSES_FAIL: checkActionType(\"[Config] in active causes fail\"),\n  // IN_ACTIVE_CAUSES_CLEAR: checkActionType(\"[Config] in active causes clear\"),\n\n  // BANK_TYPES_REQUEST: checkActionType(\"[Config] Bank types request\"),\n  // BANK_TYPES_SUCCESS: checkActionType(\"[Config] Bank types success\"),\n  // BANK_TYPES_FAIL: checkActionType(\"[Config] Bank types fail\"),\n  // BANK_TYPES_CLEAR: checkActionType(\"[Config] Bank types clear\"),\n\n  // AREA_CITIES_REQUEST: checkActionType(\"[Config] Area cities request\"),\n  // AREA_CITIES_SUCCESS: checkActionType(\"[Config] Area cities success\"),\n  // AREA_CITIES_FAIL: checkActionType(\"[Config] Area cities fail\"),\n  // AREA_CITIES_CLEAR: checkActionType(\"[Config] Area cities clear\"),\n\n  TOOLBAR_ACTION: checkActionType('[Config] Toolbar clicked'),\n  TOOLBAR_CURRENT_TAB: checkActionType('[Config] Set Current Tab'),\n  TOOLBAR_GET_SHOW_PLANS_REQUEST: checkActionType(\n    '[Config] Get show plans request'\n  ),\n  TOOLBAR_GET_SHOW_PLANS_SUCCESS: checkActionType(\n    '[Config] Get show plans success'\n  ),\n  TOOLBAR_SAVE_SHOW_PLAN: checkActionType('[Config] Save show plan'),\n  TOOLBAR_DELETE_SHOW_PLAN: checkActionType('[Config] Delete show plan'),\n  TOOLBAR_CLEAR_PLAN_FILTER: checkActionType('[Config] Clear plan filter'),\n  TOOLBAR_CHANGE_CURRENT_PLAN: checkActionType('[COnfig] Change current plan'),\n  TOOLBAR_CHANGE_RCV_ACCOUNT_SECTION_STATE: checkActionType(\n    '[Config] Toolbar change RcvAccount state'\n  ),\n  TOOLBAR_CHANGE_LOAN_SECTION_STATE: checkActionType(\n    '[Config] Toolbar change Loan state'\n  ),\n  TOOLBAR_CHANGE_GENERAL_LEDGER_SECTION_STATE: checkActionType(\n    '[Config] Toolbar change General Ledger state'\n  ),\n  TOOLBAR_CHANGE_STOCK_SECTION_STATE: checkActionType(\n    '[Config] Toolbar change Stock state'\n  ),\n\n  TOOLBAR_CHANGE_SALE_SECTION_STATE: checkActionType(\n    '[Config] Toolbar change sale state'\n  ),\n\n  TOOLBAR_CHANGE_TREASURY_SECTION_STATE: checkActionType(\n    '[Config] Toolbar change treasury state'\n  ),\n\n  TOOLBAR_CHANGE_WH_ACCOUNT_SECTION_STATE: checkActionType(\n    '[Config] Toolbar change Wh Account state'\n  ),\n\n  TOOLBAR_CHANGE_BUY_SECTION_STATE: checkActionType(\n    '[Config] Toolbar change Buy state'\n  ),\n\n  TOOLBAR_CHANGE_FREE_INVOICE_SECTION_STATE: checkActionType(\n    '[Config] Toolbar change Free Invoice state'\n  ),\n\n  TOOLBAR_CHANGE_TREASURY_FUND_SECTION_STATE: checkActionType(\n    '[Config] Toolbar change Treasury Fund state'\n  ),\n\n  ACCESS_NODE_IDS_REQUEST: checkActionType('[AccessNodeIds] request send'),\n  ACCESS_NODE_IDS_SUCCESS: checkActionType('[AccessNodeIds] request success'),\n  ACCESS_NODE_IDS_FAIL: checkActionType('[AccessNodeIds] request fail'),\n  ACCESS_NODE_IDS_RESET: checkActionType('[AccessNodeIds] request reset'),\n};\n\nexport const changeGlobalLoadingState = createAction(\n  ConfigActionTypes.CHANGE_GLOBAL_LOADING_STATE,\n  props<{ state: boolean; sectionName?: string }>()\n);\n\n// // customer types\n\n// export const customerTypesRequest = createAction(\n//   ConfigActionTypes.CUSTOMER_TYPES_REQUEST\n// );\n\n// export const customerTypesSuccess = createAction(\n//   ConfigActionTypes.CUSTOMER_TYPES_SUCCESS,\n//   props<{ list: CustomerTypeInterface[] }>()\n// );\n\n// export const customerTypesFail = createAction(\n//   ConfigActionTypes.CUSTOMER_TYPES_FAIL,\n//   props<{ error: string }>()\n// );\n\n// export const customerTypesClear = createAction(\n//   ConfigActionTypes.CUSTOMER_TYPES_CLEAR\n// );\n\n// // customer categories\n\n// export const customerCategoriesRequest = createAction(\n//   ConfigActionTypes.CUSTOMER_CATEGORIES_REQUEST\n// );\n\n// export const customerCategoriesSuccess = createAction(\n//   ConfigActionTypes.CUSTOMER_CATEGORIES_SUCCESS,\n//   props<{ list: CustomerCategoryInterface[] }>()\n// );\n\n// export const customerCategoriesFail = createAction(\n//   ConfigActionTypes.CUSTOMER_CATEGORIES_FAIL,\n//   props<{ error: string }>()\n// );\n\n// export const customerCategoriesClear = createAction(\n//   ConfigActionTypes.CUSTOMER_CATEGORIES_CLEAR\n// );\n\n// // customer actions\n\n// export const customerActionsRequest = createAction(\n//   ConfigActionTypes.CUSTOMER_ACTIONS_REQUEST\n// );\n\n// export const customerActionsSuccess = createAction(\n//   ConfigActionTypes.CUSTOMER_ACTIONS_SUCCESS,\n//   props<{ list: CustomerActionInterface[] }>()\n// );\n\n// export const customerActionsFail = createAction(\n//   ConfigActionTypes.CUSTOMER_ACTIONS_FAIL,\n//   props<{ error: string }>()\n// );\n\n// export const customerActionsClear = createAction(\n//   ConfigActionTypes.CUSTOMER_ACTIONS_CLEAR\n// );\n\n// // customer levels\n\n// export const customerLevelsRequest = createAction(\n//   ConfigActionTypes.CUSTOMER_LEVELS_REQUEST\n// );\n\n// export const customerLevelsSuccess = createAction(\n//   ConfigActionTypes.CUSTOMER_LEVELS_SUCCESS,\n//   props<{ list: CustomerLevelInterface[] }>()\n// );\n\n// export const customerLevelsFail = createAction(\n//   ConfigActionTypes.CUSTOMER_LEVELS_FAIL,\n//   props<{ error: string }>()\n// );\n\n// export const customerLevelsClear = createAction(\n//   ConfigActionTypes.CUSTOMER_LEVELS_CLEAR\n// );\n\n// // owner types\n\n// export const ownerTypesRequest = createAction(\n//   ConfigActionTypes.OWNER_TYPES_REQUEST\n// );\n\n// export const ownerTypesSuccess = createAction(\n//   ConfigActionTypes.OWNER_TYPES_SUCCESS,\n//   props<{ list: OwnerTypeInterface[] }>()\n// );\n\n// export const ownerTypesFail = createAction(\n//   ConfigActionTypes.OWNER_TYPES_FAIL,\n//   props<{ error: string }>()\n// );\n\n// export const ownerTypesClear = createAction(\n//   ConfigActionTypes.OWNER_TYPES_CLEAR\n// );\n\n// // customer register types\n\n// export const customerRegisterTypesRequest = createAction(\n//   ConfigActionTypes.CUSTOMER_REGISTER_TYPES_REQUEST\n// );\n\n// export const customerRegisterTypesSuccess = createAction(\n//   ConfigActionTypes.CUSTOMER_REGISTER_TYPES_SUCCESS,\n//   props<{ list: CustomerRegisterTypeInterface[] }>()\n// );\n\n// export const customerRegisterTypesFail = createAction(\n//   ConfigActionTypes.CUSTOMER_REGISTER_TYPES_FAIL,\n//   props<{ error: string }>()\n// );\n\n// export const customerRegisterTypesClear = createAction(\n//   ConfigActionTypes.CUSTOMER_REGISTER_TYPES_CLEAR\n// );\n\n// // customer groups\n\n// export const customerGroupsRequest = createAction(\n//   ConfigActionTypes.CUSTOMER_GROUPS_REQUEST\n// );\n\n// export const customerGroupsSuccess = createAction(\n//   ConfigActionTypes.CUSTOMER_GROUPS_SUCCESS,\n//   props<{ list: CustomerGroupInterface[] }>()\n// );\n\n// export const customerGroupsFail = createAction(\n//   ConfigActionTypes.CUSTOMER_GROUPS_FAIL,\n//   props<{ error: string }>()\n// );\n\n// export const customerGroupsClear = createAction(\n//   ConfigActionTypes.CUSTOMER_GROUPS_CLEAR\n// );\n\n// // pay types\n\n// export const payTypesRequest = createAction(\n//   ConfigActionTypes.PAY_TYPES_REQUEST\n// );\n\n// export const payTypesSuccess = createAction(\n//   ConfigActionTypes.PAY_TYPES_SUCCESS,\n//   props<{ list: PayTypeInterface[] }>()\n// );\n\n// export const payTypesFail = createAction(\n//   ConfigActionTypes.PAY_TYPES_FAIL,\n//   props<{ error: string }>()\n// );\n\n// export const payTypesClear = createAction(ConfigActionTypes.PAY_TYPES_CLEAR);\n\n// // dynamic customer groups\n\n// export const dynamicCustomerGroupsRequest = createAction(\n//   ConfigActionTypes.DYNAMIC_CUSTOMER_GROUPS_REQUEST\n// );\n\n// export const dynamicCustomerGroupsSuccess = createAction(\n//   ConfigActionTypes.DYNAMIC_CUSTOMER_GROUPS_SUCCESS,\n//   props<{ list: DynamicCustomerGroup[] }>()\n// );\n\n// export const dynamicCustomerGroupsFail = createAction(\n//   ConfigActionTypes.DYNAMIC_CUSTOMER_GROUPS_FAIL,\n//   props<{ error: string }>()\n// );\n\n// export const dynamicCustomerGroupsClear = createAction(\n//   ConfigActionTypes.DYNAMIC_CUSTOMER_GROUPS_CLEAR\n// );\n\n// // inactive causes\n\n// export const inActiveCausesRequest = createAction(\n//   ConfigActionTypes.IN_ACTIVE_CAUSES_REQUEST\n// );\n\n// export const inActiveCausesSuccess = createAction(\n//   ConfigActionTypes.IN_ACTIVE_CAUSES_SUCCESS,\n//   props<{ list: InActiveCause[] }>()\n// );\n\n// export const inActiveCausesFail = createAction(\n//   ConfigActionTypes.IN_ACTIVE_CAUSES_FAIL,\n//   props<{ error: string }>()\n// );\n\n// export const inActiveCausesClear = createAction(\n//   ConfigActionTypes.IN_ACTIVE_CAUSES_CLEAR\n// );\n\n// // bank types\n\n// export const bankTypesRequest = createAction(\n//   ConfigActionTypes.BANK_TYPES_REQUEST\n// );\n\n// export const bankTypesSuccess = createAction(\n//   ConfigActionTypes.BANK_TYPES_SUCCESS,\n//   props<{ list: Bank[] }>()\n// );\n\n// export const bankTypesFail = createAction(\n//   ConfigActionTypes.BANK_TYPES_FAIL,\n//   props<{ error: string }>()\n// );\n\n// export const bankTypesClear = createAction(ConfigActionTypes.BANK_TYPES_CLEAR);\n\n// // area cities\n\n// export const areaCitiesRequest = createAction(\n//   ConfigActionTypes.AREA_CITIES_REQUEST\n// );\n\n// export const areaCitiesSuccess = createAction(\n//   ConfigActionTypes.AREA_CITIES_SUCCESS,\n//   props<{ list: Bank[] }>()\n// );\n\n// export const areaCitiesFail = createAction(\n//   ConfigActionTypes.AREA_CITIES_FAIL,\n//   props<{ error: string }>()\n// );\n\n// export const areaCitiesClear = createAction(\n//   ConfigActionTypes.AREA_CITIES_CLEAR\n// );\n\n// toolbar\n\nexport const toolbarActionTrigger = createAction(\n  ConfigActionTypes.TOOLBAR_ACTION,\n  props<{ payload: ReviewToolbarAction }>()\n);\n\nexport const toolbarCurrentTab = createAction(\n  ConfigActionTypes.TOOLBAR_CURRENT_TAB,\n  props<{ key: string }>()\n);\n\nexport const toolbarChangeRcvAccountSectionState = createAction(\n  ConfigActionTypes.TOOLBAR_CHANGE_RCV_ACCOUNT_SECTION_STATE,\n  props<{ state: boolean }>()\n);\n\nexport const toolbarChangeLoanSectionState = createAction(\n  ConfigActionTypes.TOOLBAR_CHANGE_LOAN_SECTION_STATE,\n  props<{ state: boolean }>()\n);\n\nexport const toolbarChangeGeneralLedgerSectionState = createAction(\n  ConfigActionTypes.TOOLBAR_CHANGE_GENERAL_LEDGER_SECTION_STATE,\n  props<{ state: boolean }>()\n);\n\nexport const toolbarChangeStockSectionState = createAction(\n  ConfigActionTypes.TOOLBAR_CHANGE_STOCK_SECTION_STATE,\n  props<{ state: boolean }>()\n);\n\nexport const toolbarChangeSaleSectionState = createAction(\n  ConfigActionTypes.TOOLBAR_CHANGE_SALE_SECTION_STATE,\n  props<{ state: boolean }>()\n);\n\nexport const toolbarChangeTreasurySectionState = createAction(\n  ConfigActionTypes.TOOLBAR_CHANGE_TREASURY_SECTION_STATE,\n  props<{ state: boolean }>()\n);\n\nexport const toolbarChangeWhAccountSectionState = createAction(\n  ConfigActionTypes.TOOLBAR_CHANGE_WH_ACCOUNT_SECTION_STATE,\n  props<{ state: boolean }>()\n);\n\nexport const toolbarChangeBuySectionState = createAction(\n  ConfigActionTypes.TOOLBAR_CHANGE_BUY_SECTION_STATE,\n  props<{ state: boolean }>()\n);\n\nexport const toolbarChangeFreeInvoiceSectionState = createAction(\n  ConfigActionTypes.TOOLBAR_CHANGE_FREE_INVOICE_SECTION_STATE,\n  props<{ state: boolean }>()\n);\n\nexport const toolbarChangeTreasuryFundSectionState = createAction(\n  ConfigActionTypes.TOOLBAR_CHANGE_TREASURY_FUND_SECTION_STATE,\n  props<{ state: boolean }>()\n);\n\n\nexport const accessNodeIdsRequest = createAction(\n  ConfigActionTypes.ACCESS_NODE_IDS_REQUEST\n);\n\nexport const accessNodeIdsSuccess = createAction(\n  ConfigActionTypes.ACCESS_NODE_IDS_SUCCESS,\n  props<{ items: string[] }>()\n);\n\nexport const accessNodeIdsFail = createAction(\n  ConfigActionTypes.ACCESS_NODE_IDS_FAIL,\n  props<{ error: string }>()\n);\n\nexport const accessNodeIdsReset = createAction(\n  ConfigActionTypes.ACCESS_NODE_IDS_RESET\n);\n\nclass ToolbarShowPlan {\n  static set = createAction(\n    checkActionType('[Config] Toolbar show plan set'),\n    props<{ payload: ReviewToolbar }>()\n  );\n}\n\nexport const configActions = {\n  changeGlobalLoadingState,\n\n  // customerTypesRequest,\n  // customerTypesSuccess,\n  // customerTypesFail,\n  // customerTypesClear,\n\n  // customerCategoriesRequest,\n  // customerCategoriesSuccess,\n  // customerCategoriesFail,\n  // customerCategoriesClear,\n\n  // customerActionsRequest,\n  // customerActionsSuccess,\n  // customerActionsFail,\n  // customerActionsClear,\n\n  // customerLevelsRequest,\n  // customerLevelsSuccess,\n  // customerLevelsFail,\n  // customerLevelsClear,\n\n  // ownerTypesRequest,\n  // ownerTypesSuccess,\n  // ownerTypesFail,\n  // ownerTypesClear,\n\n  // customerRegisterTypesRequest,\n  // customerRegisterTypesSuccess,\n  // customerRegisterTypesFail,\n  // customerRegisterTypesClear,\n\n  // customerGroupsRequest,\n  // customerGroupsSuccess,\n  // customerGroupsFail,\n  // customerGroupsClear,\n\n  // payTypesRequest,\n  // payTypesSuccess,\n  // payTypesFail,\n  // payTypesClear,\n\n  // dynamicCustomerGroupsRequest,\n  // dynamicCustomerGroupsSuccess,\n  // dynamicCustomerGroupsFail,\n  // dynamicCustomerGroupsClear,\n\n  // inActiveCausesRequest,\n  // inActiveCausesSuccess,\n  // inActiveCausesFail,\n  // inActiveCausesClear,\n\n  // bankTypesRequest,\n  // bankTypesSuccess,\n  // bankTypesFail,\n  // bankTypesClear,\n\n  // areaCitiesRequest,\n  // areaCitiesSuccess,\n  // areaCitiesFail,\n  // areaCitiesClear,\n\n  toolbarActionTrigger,\n  toolbarCurrentTab,\n  toolbarChangeRcvAccountSectionState,\n  toolbarChangeLoanSectionState,\n  toolbarChangeGeneralLedgerSectionState,\n  toolbarChangeStockSectionState,\n\n  toolbarChangeSaleSectionState,\n  toolbarChangeTreasurySectionState,\n  toolbarChangeWhAccountSectionState,\n  toolbarChangeBuySectionState,\n  toolbarChangeFreeInvoiceSectionState,\n  toolbarChangeTreasuryFundSectionState,\n\n  accessNodeIdsRequest,\n  accessNodeIdsSuccess,\n  accessNodeIdsFail,\n  accessNodeIdsReset,\n  toolbarShowPlan: ToolbarShowPlan,\n};\n","import { createSelector } from '@ngrx/store';\nimport { AppState } from '../app-state.interface';\nimport { AuthState } from '../reducers/auth.reducer';\n\nexport const getAuthState = (state: AppState) => state.auth;\n\nexport const getAuthLoading = createSelector(\n  getAuthState,\n  (state: AuthState) => state.loading\n);\n\nexport const getAuthLoaded = createSelector(\n  getAuthState,\n  (state: AuthState) => state.loaded\n);\n\nexport const getAuthFailed = createSelector(\n  getAuthState,\n  (state: AuthState) => state.failed\n);\n\nexport const getLoggedUser = createSelector(\n  getAuthState,\n  (state: AuthState) => state.user\n);\n\nexport const getAccYearItems = createSelector(\n  getAuthState,\n  (state: AuthState) => state.accYearItems\n);\n\nexport const getSaleOfficeItems = createSelector(\n  getAuthState,\n  (state: AuthState) => state.saleOfficeItems\n);\n\nexport const getCenterItems = createSelector(\n  getAuthState,\n  (state: AuthState) => state.centerItems\n);\n\nexport const getSelectedAccYear = createSelector(\n  getAuthState,\n  (state: AuthState) => state.selectedAccYear\n);\n\nexport const getSelectedCenter = createSelector(\n  getAuthState,\n  (state: AuthState) => state.selectedCenter\n);\n\nexport const getAccYearIsLoaded = createSelector(\n  getAuthState,\n  (state: AuthState) => state.accYearItemsIsLoaded\n);\n\nexport const getSaleOfficeIsLoaded = createSelector(\n  getAuthState,\n  (state: AuthState) => state.saleOfficeItemsIsLoaded\n);\n\nexport const getCenterIsLoaded = createSelector(\n  getAuthState,\n  (state: AuthState) => state.centerItemsIsLoaded\n);\n\nexport const getStatusbarInfo = createSelector(\n  getAuthState,\n  (state: AuthState) => state.statusbarInfo\n);\n\nexport const getStatusbarInfoIsLoaded = createSelector(\n  getAuthState,\n  (state: AuthState) => state.statusbarInfoIsLoaded\n);\n","import { createSelector } from '@ngrx/store';\nimport { AppState } from '../app-state.interface';\nimport { ConfigState } from '../reducers/config.reducer';\n\nexport const getConfigState = (state: AppState) => state.config;\n\nexport const getGlobalLoadingShowState = createSelector(\n  getConfigState,\n  (state: ConfigState) => state.globalLoadingShowState\n);\n\n// customer types\n\n// export const getCustomerTypesLoading = createSelector(\n//   getConfigState,\n//   (state: ConfigState) => state.customerTypesLoading\n// );\n\n// export const getCustomerTypesLoaded = createSelector(\n//   getConfigState,\n//   (state: ConfigState) => state.customerTypesLoaded\n// );\n\n// export const getCustomerTypesFailed = createSelector(\n//   getConfigState,\n//   (state: ConfigState) => state.customerTypesFailed\n// );\n\n// export const getCustomerTypes = createSelector(\n//   getConfigState,\n//   (state: ConfigState) => state.customerTypes\n// );\n\n// // customer categories\n\n// export const getCustomerCategoriesLoading = createSelector(\n//   getConfigState,\n//   (state: ConfigState) => state.customerCategoriesLoading\n// );\n\n// export const getCustomerCategoriesLoaded = createSelector(\n//   getConfigState,\n//   (state: ConfigState) => state.customerCategoriesLoaded\n// );\n\n// export const getCustomerCategoriesFailed = createSelector(\n//   getConfigState,\n//   (state: ConfigState) => state.customerCategoriesFailed\n// );\n\n// export const getCustomerCategories = createSelector(\n//   getConfigState,\n//   (state: ConfigState) => state.customerCategories\n// );\n\n// // customer actions\n\n// export const getCustomerActionsLoading = createSelector(\n//   getConfigState,\n//   (state: ConfigState) => state.customerActionsLoading\n// );\n\n// export const getCustomerActionsLoaded = createSelector(\n//   getConfigState,\n//   (state: ConfigState) => state.customerActionsLoaded\n// );\n\n// export const getCustomerActionsFailed = createSelector(\n//   getConfigState,\n//   (state: ConfigState) => state.customerActionsFailed\n// );\n\n// export const getCustomerActions = createSelector(\n//   getConfigState,\n//   (state: ConfigState) => state.customerActions\n// );\n\n// // customer levels\n\n// export const getCustomerLevelsLoading = createSelector(\n//   getConfigState,\n//   (state: ConfigState) => state.customerLevelsLoading\n// );\n\n// export const getCustomerLevelsLoaded = createSelector(\n//   getConfigState,\n//   (state: ConfigState) => state.customerLevelsLoaded\n// );\n\n// export const getCustomerLevelsFailed = createSelector(\n//   getConfigState,\n//   (state: ConfigState) => state.customerLevelsFailed\n// );\n\n// export const getCustomerLevels = createSelector(\n//   getConfigState,\n//   (state: ConfigState) => state.customerLevels\n// );\n\n// // owner types\n\n// export const getOwnerTypesLoading = createSelector(\n//   getConfigState,\n//   (state: ConfigState) => state.ownerTypesLoading\n// );\n\n// export const getOwnerTypesLoaded = createSelector(\n//   getConfigState,\n//   (state: ConfigState) => state.ownerTypesLoaded\n// );\n\n// export const getOwnerTypesFailed = createSelector(\n//   getConfigState,\n//   (state: ConfigState) => state.ownerTypesFailed\n// );\n\n// export const getOwnerTypes = createSelector(\n//   getConfigState,\n//   (state: ConfigState) => state.ownerTypes\n// );\n\n// // customer register types\n\n// export const getCustomerRegisterTypesLoading = createSelector(\n//   getConfigState,\n//   (state: ConfigState) => state.customerRegisterTypesLoading\n// );\n\n// export const getCustomerRegisterTypesLoaded = createSelector(\n//   getConfigState,\n//   (state: ConfigState) => state.customerRegisterTypesLoaded\n// );\n\n// export const getCustomerRegisterTypesFailed = createSelector(\n//   getConfigState,\n//   (state: ConfigState) => state.customerRegisterTypesFailed\n// );\n\n// export const getCustomerRegisterTypes = createSelector(\n//   getConfigState,\n//   (state: ConfigState) => state.customerRegisterTypes\n// );\n\n// // customer groups\n\n// export const getCustomerGroupsLoading = createSelector(\n//   getConfigState,\n//   (state: ConfigState) => state.customerGroupsLoading\n// );\n\n// export const getCustomerGroupsLoaded = createSelector(\n//   getConfigState,\n//   (state: ConfigState) => state.customerGroupsLoaded\n// );\n\n// export const getCustomerGroupsFailed = createSelector(\n//   getConfigState,\n//   (state: ConfigState) => state.customerGroupsFailed\n// );\n\n// export const getCustomerGroups = createSelector(\n//   getConfigState,\n//   (state: ConfigState) => state.customerGroups\n// );\n\n// // pay types\n\n// export const getPayTypesLoading = createSelector(\n//   getConfigState,\n//   (state: ConfigState) => state.payTypesLoading\n// );\n\n// export const getPayTypesLoaded = createSelector(\n//   getConfigState,\n//   (state: ConfigState) => state.payTypesLoaded\n// );\n\n// export const getPayTypesFailed = createSelector(\n//   getConfigState,\n//   (state: ConfigState) => state.payTypesFailed\n// );\n\n// export const getPayTypes = createSelector(\n//   getConfigState,\n//   (state: ConfigState) => state.payTypes\n// );\n\n// // dynamic customer groups\n\n// export const getDynamicCustomerGroupsLoading = createSelector(\n//   getConfigState,\n//   (state: ConfigState) => state.dynamicCustomerGroupsLoading\n// );\n\n// export const getDynamicCustomerGroupsLoaded = createSelector(\n//   getConfigState,\n//   (state: ConfigState) => state.dynamicCustomerGroupsLoaded\n// );\n\n// export const getDynamicCustomerGroupsFailed = createSelector(\n//   getConfigState,\n//   (state: ConfigState) => state.dynamicCustomerGroupsFailed\n// );\n\n// export const getDynamicCustomerGroups = createSelector(\n//   getConfigState,\n//   (state: ConfigState) => state.dynamicCustomerGroups\n// );\n\n// // inactive causes\n\n// export const getInActiveCausesLoading = createSelector(\n//   getConfigState,\n//   (state: ConfigState) => state.inActiveCausesLoading\n// );\n\n// export const getInActiveCausesLoaded = createSelector(\n//   getConfigState,\n//   (state: ConfigState) => state.inActiveCausesLoaded\n// );\n\n// export const getInActiveCausesFailed = createSelector(\n//   getConfigState,\n//   (state: ConfigState) => state.inActiveCausesFailed\n// );\n\n// export const getInActiveCauses = createSelector(\n//   getConfigState,\n//   (state: ConfigState) => state.inActiveCauses\n// );\n\n// // bank types\n\n// export const getBankTypesLoading = createSelector(\n//   getConfigState,\n//   (state: ConfigState) => state.bankTypesLoading\n// );\n\n// export const getBankTypesLoaded = createSelector(\n//   getConfigState,\n//   (state: ConfigState) => state.bankTypesLoaded\n// );\n\n// export const getBankTypesFailed = createSelector(\n//   getConfigState,\n//   (state: ConfigState) => state.bankTypesFailed\n// );\n\n// export const getBankTypes = createSelector(\n//   getConfigState,\n//   (state: ConfigState) => state.bankTypes\n// );\n\n// // area cities\n\n// export const getAreaCitiesLoading = createSelector(\n//   getConfigState,\n//   (state: ConfigState) => state.areaCitiesLoading\n// );\n\n// export const getAreaCitiesLoaded = createSelector(\n//   getConfigState,\n//   (state: ConfigState) => state.areaCitiesLoaded\n// );\n\n// export const getAreaCitiesFailed = createSelector(\n//   getConfigState,\n//   (state: ConfigState) => state.areaCitiesFailed\n// );\n\n// export const getAreaCities = createSelector(\n//   getConfigState,\n//   (state: ConfigState) => state.areaCities\n// );\n\n// review toolbar\n\nexport const getReviewCurrentToolbarKey = createSelector(\n  getConfigState,\n  (state: ConfigState) => state.reviewCurrentToolbarKey\n);\n\nexport const getToolbarAction = createSelector(\n  getConfigState,\n  (state: ConfigState) => state.reviewToolbarAction\n);\n\nexport const getReviewToolbarSavedPlans = createSelector(\n  getConfigState,\n  (state: ConfigState) => state.reviewToolbars\n);\n\nexport const getReviewToolbarSections = createSelector(\n  getConfigState,\n  (state: ConfigState) => state.reviewToolbar.sections\n);\n\nexport const getReviewToolbarParameters = createSelector(\n  getConfigState,\n  (state: ConfigState) => state.reviewToolbar.parameters\n);\n\nexport const getAccessNodeIds = createSelector(\n  getConfigState,\n  (state: ConfigState) => state.accessNodeIds\n);\n\nexport const getAccessNodeIdsLoaded = createSelector(\n  getConfigState,\n  (state: ConfigState) => state.accessNodeIdsLoaded\n);\n\nexport const getAccessNodeIdsLoading = createSelector(\n  getConfigState,\n  (state: ConfigState) => state.accessNodeIdsLoading\n);\n\nexport const getAccessNodeIdsFailed = createSelector(\n  getConfigState,\n  (state: ConfigState) => state.accessNodeIdsFailed\n);\n\nexport const ConfigSelectors = {\n  getConfigState,\n  getGlobalLoadingShowState,\n\n  // getCustomerTypesLoading,\n  // getCustomerTypesLoaded,\n  // getCustomerTypesFailed,\n  // getCustomerTypes,\n\n  // getCustomerCategoriesLoading,\n  // getCustomerCategoriesLoaded,\n  // getCustomerCategoriesFailed,\n  // getCustomerCategories,\n\n  // getCustomerActionsLoading,\n  // getCustomerActionsLoaded,\n  // getCustomerActionsFailed,\n  // getCustomerActions,\n\n  // getCustomerLevelsLoading,\n  // getCustomerLevelsLoaded,\n  // getCustomerLevelsFailed,\n  // getCustomerLevels,\n\n  // getOwnerTypesLoading,\n  // getOwnerTypesLoaded,\n  // getOwnerTypesFailed,\n  // getOwnerTypes,\n\n  // getCustomerRegisterTypesLoading,\n  // getCustomerRegisterTypesLoaded,\n  // getCustomerRegisterTypesFailed,\n  // getCustomerRegisterTypes,\n\n  // getCustomerGroupsLoading,\n  // getCustomerGroupsLoaded,\n  // getCustomerGroupsFailed,\n  // getCustomerGroups,\n\n  // getPayTypesLoading,\n  // getPayTypesLoaded,\n  // getPayTypesFailed,\n  // getPayTypes,\n\n  // getDynamicCustomerGroupsLoading,\n  // getDynamicCustomerGroupsLoaded,\n  // getDynamicCustomerGroupsFailed,\n  // getDynamicCustomerGroups,\n\n  // getInActiveCausesLoading,\n  // getInActiveCausesLoaded,\n  // getInActiveCausesFailed,\n  // getInActiveCauses,\n\n  // getBankTypesLoading,\n  // getBankTypesLoaded,\n  // getBankTypesFailed,\n  // getBankTypes,\n\n  // getAreaCitiesLoading,\n  // getAreaCitiesLoaded,\n  // getAreaCitiesFailed,\n  // getAreaCities,\n\n  getToolbarAction,\n  getReviewCurrentToolbarKey,\n  getReviewToolbarSavedPlans,\n  getReviewToolbarSections,\n  getReviewToolbarParameters,\n\n  getAccessNodeIds,\n  getAccessNodeIdsLoaded,\n  getAccessNodeIdsLoading,\n  getAccessNodeIdsFailed,\n};\n","import { Store } from '@ngrx/store';\nimport { AppState } from '../app-state.interface';\nexport abstract class Sandbox {\n  constructor(protected appState$: Store<AppState>) {}\n}\n","import { Injectable } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport { Observable } from 'rxjs';\nimport { configActions } from '../actions/config.actions';\nimport { AppState } from '../app-state.interface';\nimport * as authSelectors from '../selectors/auth.selectors';\nimport { ConfigSelectors } from '../selectors/config.selectors';\nimport { Sandbox } from './base.sandbox';\n// import * as menuSelectors from \"./shared/store/selectors/menu.selectors\";\nimport { ReviewToolbarAction } from '../../models/review/review-toolbar-action.interface';\nimport {\n  ReviewToolbarStateParameters,\n  ReviewToolbarStateSections,\n} from '../../models/review/review-toolbar-state.interface';\nimport { ReviewToolbar } from '../../models/review/review-toolbar.interface';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class ConfigSandbox extends Sandbox {\n  globalLoadingShowState$ = this.appState$.select(\n    ConfigSelectors.getGlobalLoadingShowState\n  );\n\n  // // customer tTypes\n  // customerTypesLoaded: boolean = false;\n  // customerTypesLoaded$ = this.appState$.select(\n  //   ConfigSelectors.getCustomerTypesLoaded\n  // );\n  // customerTypes$ = this.appState$.select(ConfigSelectors.getCustomerTypes);\n\n  // // customer categories\n  // customerCategoriesLoaded: boolean = false;\n  // customerCategoriesLoaded$ = this.appState$.select(\n  //   ConfigSelectors.getCustomerCategoriesLoaded\n  // );\n  // customerCategories$ = this.appState$.select(\n  //   ConfigSelectors.getCustomerCategories\n  // );\n\n  // // customer actions\n  // customerActionsLoaded: boolean = false;\n  // customerActionsLoaded$ = this.appState$.select(\n  //   ConfigSelectors.getCustomerActionsLoaded\n  // );\n  // customerActions$ = this.appState$.select(ConfigSelectors.getCustomerActions);\n\n  // // customer levels\n  // customerLevelsLoaded: boolean = false;\n  // customerLevelsLoaded$ = this.appState$.select(\n  //   ConfigSelectors.getCustomerLevelsLoaded\n  // );\n  // customerLevels$ = this.appState$.select(ConfigSelectors.getCustomerLevels);\n\n  // // owner types\n  // ownerTypesLoaded: boolean = false;\n  // ownerTypesLoaded$ = this.appState$.select(\n  //   ConfigSelectors.getOwnerTypesLoaded\n  // );\n  // ownerTypes$ = this.appState$.select(ConfigSelectors.getOwnerTypes);\n\n  // // customer register types\n  // customerRegisterTypesLoaded: boolean = false;\n  // customerRegisterTypesLoaded$ = this.appState$.select(\n  //   ConfigSelectors.getCustomerRegisterTypesLoaded\n  // );\n  // customerRegisterTypes$ = this.appState$.select(\n  //   ConfigSelectors.getCustomerRegisterTypes\n  // );\n\n  // // customer groups\n  // customerGroupsLoaded: boolean = false;\n  // customerGroupsLoaded$ = this.appState$.select(\n  //   ConfigSelectors.getCustomerGroupsLoaded\n  // );\n  // customerGroups$ = this.appState$.select(ConfigSelectors.getCustomerGroups);\n\n  // // pay types\n  // payTypesLoaded: boolean = false;\n  // payTypesLoaded$ = this.appState$.select(ConfigSelectors.getPayTypesLoaded);\n  // payTypes$ = this.appState$.select(ConfigSelectors.getPayTypes);\n\n  // // dynamic customer groups\n  // dynamicCustomerGroupsLoaded: boolean = false;\n  // dynamicCustomerGroupsLoaded$ = this.appState$.select(\n  //   ConfigSelectors.getDynamicCustomerGroupsLoaded\n  // );\n  // dynamicCustomerGroups$ = this.appState$.select(\n  //   ConfigSelectors.getDynamicCustomerGroups\n  // );\n\n  // // inactive causes\n  // inActiveCausesLoaded: boolean = false;\n  // inActiveCausesLoaded$ = this.appState$.select(\n  //   ConfigSelectors.getInActiveCausesLoaded\n  // );\n  // inActiveCauses$ = this.appState$.select(ConfigSelectors.getInActiveCauses);\n\n  // // bank types\n  // bankTypesLoaded: boolean = false;\n  // bankTypesLoaded$ = this.appState$.select(ConfigSelectors.getBankTypesLoaded);\n  // bankTypes$ = this.appState$.select(ConfigSelectors.getBankTypes);\n\n  // // area cities\n  // areaCitiesLoaded: boolean = false;\n  // areaCitiesLoaded$ = this.appState$.select(\n  //   ConfigSelectors.getAreaCitiesLoaded\n  // );\n  // areaCities$ = this.appState$.select(ConfigSelectors.getAreaCities);\n\n  // sale offices\n  saleOffices$ = this.appState$.select(authSelectors.getSaleOfficeItems);\n\n  // review toolbar\n  toolbarAction$: Observable<ReviewToolbarAction> = this.appState$.select(\n    ConfigSelectors.getToolbarAction\n  );\n\n  reviewToolbarCurrentTabKey$: Observable<string> = this.appState$.select(\n    ConfigSelectors.getReviewCurrentToolbarKey\n  );\n\n  reviewToolbars$: Observable<ReviewToolbar[]> = this.appState$.select(\n    ConfigSelectors.getReviewToolbarSavedPlans\n  );\n\n  reviewToolbarSections$: Observable<ReviewToolbarStateSections> =\n    this.appState$.select(ConfigSelectors.getReviewToolbarSections);\n\n  reviewToolbarParameters$: Observable<ReviewToolbarStateParameters> =\n    this.appState$.select(ConfigSelectors.getReviewToolbarParameters);\n\n  // activeTab$: Observable<OpenMenues> = this.appState$.select(\n  //   menuSelectors.getActiveTab\n  // );\n\n  // access node ids\n  accessNodeIds: string[] = [];\n  accessNodeIds$: Observable<string[]> = this.appState$.select(\n    ConfigSelectors.getAccessNodeIds\n  );\n\n  accessNodeIdsLoaded$: Observable<boolean> = this.appState$.select(\n    ConfigSelectors.getAccessNodeIdsLoaded\n  );\n\n  accessNodeIdsLoading$: Observable<boolean> = this.appState$.select(\n    ConfigSelectors.getAccessNodeIdsLoading\n  );\n\n  accessNodeIdsFailed$: Observable<boolean> = this.appState$.select(\n    ConfigSelectors.getAccessNodeIdsFailed\n  );\n\n  constructor(protected override appState$: Store<AppState>) {\n    super(appState$);\n\n    // this.customerTypesLoaded$.subscribe((state) => {\n    //   this.customerTypesLoaded = state;\n    // });\n\n    // this.customerCategoriesLoaded$.subscribe((state) => {\n    //   this.customerCategoriesLoaded = state;\n    // });\n\n    // this.customerActionsLoaded$.subscribe((state) => {\n    //   this.customerActionsLoaded = state;\n    // });\n\n    // this.customerLevelsLoaded$.subscribe((state) => {\n    //   this.customerLevelsLoaded = state;\n    // });\n\n    // this.ownerTypesLoaded$.subscribe((state) => {\n    //   this.ownerTypesLoaded = state;\n    // });\n\n    // this.customerRegisterTypesLoaded$.subscribe((state) => {\n    //   this.customerRegisterTypesLoaded = state;\n    // });\n\n    // this.customerGroupsLoaded$.subscribe((state) => {\n    //   this.customerGroupsLoaded = state;\n    // });\n\n    // this.payTypesLoaded$.subscribe((state) => {\n    //   this.payTypesLoaded = state;\n    // });\n\n    // this.dynamicCustomerGroupsLoaded$.subscribe((state) => {\n    //   this.dynamicCustomerGroupsLoaded = state;\n    // });\n\n    // this.inActiveCausesLoaded$.subscribe((state) => {\n    //   this.inActiveCausesLoaded = state;\n    // });\n\n    // this.bankTypesLoaded$.subscribe((state) => {\n    //   this.bankTypesLoaded = state;\n    // });\n\n    // this.areaCitiesLoaded$.subscribe((state) => {\n    //   this.areaCitiesLoaded = state;\n    // });\n\n    this.accessNodeIds$.subscribe((items) => {\n      this.accessNodeIds = items;\n    });\n  }\n\n  showGlobalLoading(sectionName?: string) {\n    this.appState$.dispatch(\n      configActions.changeGlobalLoadingState({ state: true, sectionName })\n    );\n  }\n\n  hideGlobalLoading(sectionName?: string) {\n    this.appState$.dispatch(\n      configActions.changeGlobalLoadingState({ state: false, sectionName })\n    );\n  }\n\n  // loadCustomerTypes() {\n  //   if (!this.customerTypesLoaded) {\n  //     this.appState$.dispatch(configActions.customerTypesRequest());\n  //   }\n  // }\n\n  // loadCustomerCategories() {\n  //   if (!this.customerCategoriesLoaded) {\n  //     this.appState$.dispatch(configActions.customerCategoriesRequest());\n  //   }\n  // }\n\n  // loadCustomerActions() {\n  //   if (!this.customerActionsLoaded) {\n  //     this.appState$.dispatch(configActions.customerActionsRequest());\n  //   }\n  // }\n\n  // loadCustomerLevels() {\n  //   if (!this.customerLevelsLoaded) {\n  //     this.appState$.dispatch(configActions.customerLevelsRequest());\n  //   }\n  // }\n\n  // loadOwnerTypes() {\n  //   if (!this.ownerTypesLoaded) {\n  //     this.appState$.dispatch(configActions.ownerTypesRequest());\n  //   }\n  // }\n\n  // loadCustomerGroups() {\n  //   if (!this.customerGroupsLoaded) {\n  //     this.appState$.dispatch(configActions.customerGroupsRequest());\n  //   }\n  // }\n\n  // loadPayTypes() {\n  //   if (!this.payTypesLoaded) {\n  //     this.appState$.dispatch(configActions.payTypesRequest());\n  //   }\n  // }\n\n  // loadDynamicCustomerGroups() {\n  //   if (!this.dynamicCustomerGroupsLoaded) {\n  //     this.appState$.dispatch(configActions.dynamicCustomerGroupsRequest());\n  //   }\n  // }\n\n  // loadInActiveCauses() {\n  //   if (!this.inActiveCausesLoaded) {\n  //     this.appState$.dispatch(configActions.inActiveCausesRequest());\n  //   }\n  // }\n\n  // loadBankTypes() {\n  //   if (!this.bankTypesLoaded) {\n  //     this.appState$.dispatch(configActions.bankTypesRequest());\n  //   }\n  // }\n\n  // loadAreaCities() {\n  //   if (!this.areaCitiesLoaded) {\n  //     this.appState$.dispatch(configActions.areaCitiesRequest());\n  //   }\n  // }\n\n  // getValue(obj: Observable<any>) {\n  //   let value: any;\n  //   obj.subscribe((v) => (value = v));\n  //   return value;\n  // }\n\n  // loadCustomerRegisterTypes() {\n  //   if (!this.customerRegisterTypesLoaded) {\n  //     this.appState$.dispatch(configActions.customerRegisterTypesRequest());\n  //   }\n  // }\n\n  toolbarActionTriggered(data: ReviewToolbarAction) {\n    this.appState$.dispatch(\n      configActions.toolbarActionTrigger({ payload: data })\n    );\n  }\n\n  setReviewCurrentTab(key: string) {\n    this.appState$.dispatch(configActions.toolbarCurrentTab({ key: key }));\n  }\n\n  reviewToolbarChangeRcvAccountSectionState(state: boolean) {\n    this.appState$.dispatch(\n      configActions.toolbarChangeRcvAccountSectionState({ state })\n    );\n  }\n\n  reviewToolbarChangeLoanSectionState(state: boolean) {\n    this.appState$.dispatch(\n      configActions.toolbarChangeLoanSectionState({ state })\n    );\n  }\n\n  reviewToolbarChangeGeneralLedgerSectionState(state: boolean) {\n    this.appState$.dispatch(\n      configActions.toolbarChangeGeneralLedgerSectionState({ state })\n    );\n  }\n\n  reviewToolbarChangeStockSectionState(state: boolean) {\n    this.appState$.dispatch(\n      configActions.toolbarChangeStockSectionState({ state })\n    );\n  }\n\n  reviewToolbarChangeSaleSectionState(state: boolean) {\n    this.appState$.dispatch(\n      configActions.toolbarChangeSaleSectionState({ state })\n    );\n  }\n\n  reviewToolbarChangeTreasurySectionState(state: boolean) {\n    this.appState$.dispatch(\n      configActions.toolbarChangeTreasurySectionState({ state })\n    );\n  }\n  reviewToolbarChangeWhAccountSectionState(state: boolean) {\n    this.appState$.dispatch(\n      configActions.toolbarChangeWhAccountSectionState({ state })\n    );\n  }\n  reviewToolbarChangeBuySectionState(state: boolean) {\n    this.appState$.dispatch(\n      configActions.toolbarChangeBuySectionState({ state })\n    );\n  }\n  reviewToolbarChangeFreeInvoiceSectionState(state: boolean) {\n    this.appState$.dispatch(\n      configActions.toolbarChangeFreeInvoiceSectionState({ state })\n    );\n  }\n  reviewToolbarChangeTreasuryFundSectionState(state: boolean) {\n    this.appState$.dispatch(\n      configActions.toolbarChangeTreasuryFundSectionState({ state })\n    );\n  }\n\n  getAccesNodeIds() {\n    this.appState$.dispatch(configActions.accessNodeIdsRequest());\n  }\n\n  showPlan = {\n    set: (data: ReviewToolbar) => {\n      this.appState$.dispatch(\n        configActions.toolbarShowPlan.set({ payload: data })\n      );\n    },\n  };\n}\n","import { DOCUMENT } from '@angular/common';\nimport { HttpClient } from '@angular/common/http';\nimport { Inject, Injectable } from '@angular/core';\nimport { ConfigurationInterface } from '../models/configuration.interface';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class AppConfigService {\n  private configData: ConfigurationInterface | null = null;\n  constructor(private http: HttpClient, @Inject(DOCUMENT) private _document: Document) {}\n\n  load() {\n    return new Promise<boolean>(resolve => {\n      this.http.get<{ env: string }>('/config/env.json').subscribe(envData => {\n        this.http\n          .get<ConfigurationInterface>('/config/' + envData.env + '.json')\n          .subscribe(data => {\n            this.configData = data;\n            const host = this._document.location.hostname;\n            if (this.configData.remotes) {\n              Object.values(this.configData.remotes).forEach(cfg => {\n                cfg.url = cfg.url.replace('localhost', host);\n              });\n            }\n            resolve(true);\n          });\n      });\n    });\n  }\n\n  get config(): ConfigurationInterface {\n    return this.configData!;\n  }\n}\n","import { InjectionToken, TemplateRef } from '@angular/core';\n\nexport class ToastData {\n  type: ToastType;\n  closeByUser?: boolean;\n  text?: string;\n  template?: TemplateRef<any>;\n  templateContext?: {};\n  isGlobalError?: boolean;\n}\n\nexport type ToastType = 'warning' | 'error' | 'success' | 'info';\n\nexport interface ToastConfig {\n  position?: {\n    top: number;\n    right: number;\n  };\n  animation?: {\n    fadeOut: number;\n    fadeIn: number;\n  };\n}\n\nexport const defaultToastConfig: ToastConfig = {\n  position: {\n    top: 15,\n    right: 20,\n  },\n  animation: {\n    fadeOut: 500,\n    fadeIn: 300,\n  },\n};\n\nexport const TOAST_CONFIG_TOKEN = new InjectionToken('toast-config');\n","import { OverlayRef } from \"@angular/cdk/overlay\";\n\nexport class ToastRef {\n  constructor(private readonly overlay: OverlayRef) {}\n\n  close() {\n    this.overlay.dispose();\n  }\n\n  isVisible() {\n    return this.overlay && this.overlay.overlayElement;\n  }\n\n  getPosition() {\n    return this.overlay.overlayElement.getBoundingClientRect();\n  }\n}\n","import {\n  AnimationTriggerMetadata,\n  trigger,\n  state,\n  transition,\n  style,\n  animate,\n} from \"@angular/animations\";\n\nexport const toastAnimations: {\n  readonly fadeToast: AnimationTriggerMetadata;\n} = {\n  fadeToast: trigger(\"fadeAnimation\", [\n    state(\"default\", style({ opacity: 1 })),\n    transition(\"void => *\", [style({ opacity: 0 }), animate(\"{{ fadeIn }}ms\")]),\n    transition(\n      \"default => closing\",\n      animate(\"{{ fadeOut }}ms\", style({ opacity: 0 }))\n    ),\n  ]),\n};\n\nexport type ToastAnimationState = \"default\" | \"closing\";\n","import { Component, Inject, OnInit } from '@angular/core';\nimport { ToastAnimationState, toastAnimations } from './toast-animations';\nimport { TOAST_CONFIG_TOKEN, ToastConfig, ToastData } from './toast-config';\nimport { ToastRef } from './toast-ref';\n\n@Component({\n  selector: 'app-toast',\n  templateUrl: './toast.component.html',\n  styleUrls: ['./toast.component.scss'],\n  animations: [toastAnimations.fadeToast],\n})\nexport class ToastComponent implements OnInit {\n  animationState: ToastAnimationState = 'default';\n  iconType: string;\n\n  private intervalId: any;\n  private autoCloseDelay = 3000;\n\n  constructor(\n    readonly data: ToastData,\n    readonly ref: ToastRef,\n    @Inject(TOAST_CONFIG_TOKEN) public toastConfig: ToastConfig\n  ) {\n    this.iconType = data.type === 'success' ? 'done' : data.type;\n  }\n\n  ngOnInit() {\n    if (this.data.text) this.data.text = this.data.text.replace(/\\n/g, '<br>');\n    this.intervalId = setTimeout(() => (this.animationState = 'closing'), this.autoCloseDelay);\n    if (this.data.closeByUser) clearTimeout(this.intervalId);\n  }\n\n  ngOnDestroy() {\n    clearTimeout(this.intervalId);\n  }\n\n  close() {\n    this.ref.close();\n  }\n\n  onFadeFinished(event: any) {\n    const { toState } = event;\n    const isFadeOut = (toState as ToastAnimationState) === 'closing';\n    const itFinished = this.animationState === 'closing';\n\n    if (isFadeOut && itFinished) {\n      this.close();\n    }\n  }\n\n  mouseEnterHandler() {\n    clearTimeout(this.intervalId);\n  }\n\n  mouseLeaveHandler() {\n    this.intervalId = setTimeout(() => (this.animationState = 'closing'), this.autoCloseDelay);\n  }\n}\n","<div\n  class=\"toast\"\n  [@fadeAnimation]=\"{\n    value: animationState,\n    params: {\n      fadeIn: toastConfig.animation.fadeIn,\n      fadeOut: toastConfig.animation.fadeOut\n    }\n  }\"\n  (@fadeAnimation.done)=\"onFadeFinished($event)\"\n  [ngClass]=\"{\n    'toast--success': data.type === 'success',\n    'toast--error': data.type === 'error',\n    'toast--warning': data.type === 'warning',\n    'toast--info': data.type === 'info'\n  }\"\n  (mouseenter)=\"mouseEnterHandler()\"\n  (mouseleave)=\"mouseLeaveHandler()\"\n>\n  <div class=\"toast__icon\" [ngSwitch]=\"data.type\">\n    <ng-container *ngSwitchCase=\"'success'\">\n      <svg-icon\n        src=\"/assets/fararu-icons/check-box.svg\"\n        [svgStyle]=\"{ width: '24px', height: '24px' }\"\n      ></svg-icon>\n    </ng-container>\n    <ng-container *ngSwitchCase=\"'error'\">\n      <svg-icon\n        src=\"/assets/fararu-icons/error.svg\"\n        [svgStyle]=\"{ width: '24px', height: '24px' }\"\n      ></svg-icon>\n    </ng-container>\n    <ng-container *ngSwitchCase=\"'info'\">\n      <svg-icon\n        src=\"/assets/fararu-icons/info.svg\"\n        [svgStyle]=\"{ width: '24px', height: '24px' }\"\n      ></svg-icon>\n    </ng-container>\n    <ng-container *ngSwitchCase=\"'warning'\">\n      <svg-icon\n        src=\"/assets/fararu-icons/warning.svg\"\n        [svgStyle]=\"{ width: '24px', height: '24px' }\"\n      ></svg-icon>\n    </ng-container>\n  </div>\n  <div class=\"toast__text\" [innerHtml]=\"data.text\"></div>\n  <span class=\"close\" (click)=\"close()\">\n    <svg-icon\n      src=\"/assets/fararu-icons/close.svg\"\n      [svgStyle]=\"{ width: '24px', height: '24px' }\"\n    ></svg-icon>\n  </span>\n</div>\n","import { Overlay } from '@angular/cdk/overlay';\nimport { ComponentPortal, PortalInjector } from '@angular/cdk/portal';\nimport { Inject, Injectable, Injector } from '@angular/core';\nimport { ToastConfig, ToastData, TOAST_CONFIG_TOKEN } from './toast-config';\nimport { ToastRef } from './toast-ref';\nimport { ToastComponent } from './toast.component';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class FararuToastService {\n  private lastToast: ToastRef;\n\n  constructor(\n    private overlay: Overlay,\n    private parentInjector: Injector,\n    @Inject(TOAST_CONFIG_TOKEN) private toastConfig: ToastConfig\n  ) {}\n\n  show(data: ToastData) {\n    const positionStrategy = this.getPositionStrategy();\n    const overlayRef = this.overlay.create({\n      direction: document.body.getAttribute('dir') == 'rtl' ? 'rtl' : 'ltr',\n      positionStrategy,\n    });\n\n    const toastRef = new ToastRef(overlayRef);\n    this.lastToast = toastRef;\n\n    if (data.isGlobalError && this.lastToast && this.lastToast.isVisible()) {\n      return null;\n    }\n\n    const injector = this.getInjector(data, toastRef, this.parentInjector);\n    const toastPortal = new ComponentPortal(ToastComponent, null, injector);\n\n    overlayRef.attach(toastPortal);\n\n    return toastRef;\n  }\n\n  getPositionStrategy() {\n    return this.overlay\n      .position()\n      .global()\n      .top(this.getPosition())\n      .centerHorizontally();\n  }\n\n  getPosition() {\n    const lastToastIsVisible = this.lastToast && this.lastToast.isVisible();\n    const position = lastToastIsVisible\n      ? this.lastToast.getPosition().bottom\n      : this.toastConfig.position.top;\n\n    return position + 'px';\n  }\n\n  getInjector(data: ToastData, toastRef: ToastRef, parentInjector: Injector) {\n    const tokens = new WeakMap();\n\n    tokens.set(ToastData, data);\n    tokens.set(ToastRef, toastRef);\n\n    return new PortalInjector(parentInjector, tokens);\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { ConfigSandbox } from '../store/sandboxes/config.sandbox';\nimport { AppConfigService } from './app-config.service';\n\n@Injectable({ providedIn: 'root' })\nexport class UserAccessService {\n  private accessNodeIdsLoaded: boolean;\n  private accessNodeIdsLoading: boolean;\n  constructor(\n    private configSandbox: ConfigSandbox,\n    private appConfigService: AppConfigService\n  ) {\n    this.configSandbox.accessNodeIdsLoaded$.subscribe((state) => {\n      this.accessNodeIdsLoaded = state;\n    });\n    this.configSandbox.accessNodeIdsLoading$.subscribe((state) => {\n      this.accessNodeIdsLoading = state;\n    });\n  }\n\n  userHasAccess(accessNodeId: number | string): boolean {\n    if (this.appConfigService.config.ignoreAccessNode) return true;\n\n    return this.configSandbox.accessNodeIds.some(\n      (x) => x == accessNodeId\n    );\n  }\n\n  userHasAccessAsync(accessNodeId: number | string): Promise<boolean> {\n    return new Promise<boolean>((resolve) => {\n      if (this.appConfigService.config.ignoreAccessNode) return resolve(true);\n      if (!this.accessNodeIdsLoaded) {\n        if (!this.accessNodeIdsLoading) this.configSandbox.getAccesNodeIds();\n        this.configSandbox.accessNodeIdsLoaded$.subscribe((state) => {\n          if (state) {\n            resolve(this.userHasAccess(accessNodeId));\n          }\n        });\n      } else {\n        resolve(this.userHasAccess(accessNodeId));\n      }\n    });\n  }\n}\n","import { Inject, Injectable, Injector, Optional } from '@angular/core';\nimport { finalize, lastValueFrom, map, Observable, of, Subject, take, tap } from 'rxjs';\n\nimport { loadRemoteModule } from '@angular-architects/module-federation';\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\nimport { TranslateService } from '@ngx-translate/core';\nimport { GeneralODataService } from '../api/general-odata.service';\nimport { HttpHeaderNames } from '../constants';\nimport { AccessNodeIds } from '../constants/access-node-ids';\nimport { FararuToastService } from '../design-systems/toast/fararu-toast.service';\nimport { ODataResponse } from '../models/general-odata-service.interface';\nimport { GetMenuResponseInterface } from '../models/get-menu-response.interface';\nimport { SUB_SYSTEM_VERSION } from '../models/injection-tokens';\nimport {\n  InterSystemGridRowActionResponse,\n  InterSystemLookupActionResponse,\n} from '../models/inter-system-response.interface';\nimport { MenuInterface } from '../models/menu.interface';\nimport { ConfigSandbox } from '../store/sandboxes/config.sandbox';\nimport { IconNameType } from '../types/icon-name.type';\nimport { SubSystemType } from '../types/sub-system.type';\nimport { AppMenuAdapter } from '../utils/app-menu.adapter';\nimport { AppConfigService } from './app-config.service';\nimport { UserAccessService } from './user-access.service';\nimport { MenuItem } from '../models/menu-items';\nimport { CacheService } from './cache-storage.service';\nimport { Utility } from '../utils/utility';\nimport { Cacheable } from '../utils/cacheable.decorator';\nimport { getVersionQueryStringOfRemoteModule } from '../utils/get-version-query-string-of-remote-module';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class AppMenuApiService {\n  menus: MenuInterface[] = [];\n  menuDataState: { [key: MenuInterface['id']]: 'loaded' | 'loading' | 'error' } = {};\n  gridRowMenuActions: Record<string, ODataResponse<InterSystemGridRowActionResponse>> = {};\n  lookupMenuItemActions: Record<string, ODataResponse<InterSystemLookupActionResponse>> = {};\n  constructor(\n    private http: HttpClient,\n    private _configSandbox: ConfigSandbox,\n    private appConfigService: AppConfigService,\n    private translateService: TranslateService,\n    private toastService: FararuToastService,\n    private readonly _userAccessService: UserAccessService,\n    private _generalOdataService: GeneralODataService,\n    private injector: Injector,\n    private menuItemCacheService: CacheService,\n    @Optional() @Inject(SUB_SYSTEM_VERSION) private subSystemVersion: string\n  ) {}\n\n  getMenu(): Observable<GetMenuResponseInterface> {\n    return this.http\n      .get<any[]>('/api/menuconfig/get')\n      .pipe(map(response => AppMenuAdapter.appMenuTransform(response)));\n  }\n\n  loadMenus() {\n    this._configSandbox.showGlobalLoading('menu');\n    return this.getMenu().pipe(\n      tap({\n        next: data => {\n          this.menus = data;\n          this._configSandbox.hideGlobalLoading('menu');\n\n          this.menus?.forEach(item => {\n            item.fararuIcon = this.getMainMenuFararuIcon(item);\n          });\n        },\n        error: () => {\n          this._configSandbox.hideGlobalLoading('menu');\n        },\n      })\n    );\n  }\n\n  private getMainMenuFararuIcon(item: MenuInterface): IconNameType {\n    switch (item.id.toString()) {\n      case AccessNodeIds.baseInfo1.self:\n      case AccessNodeIds.baseInfo2.self:\n        return 'basic-info';\n\n      case AccessNodeIds.stock.self:\n        return 'store-house';\n\n      case AccessNodeIds.sale.self:\n        return 'sale';\n\n      case AccessNodeIds.tracer.self:\n        return 'trace';\n\n      case '50000': // FIXME: remove hard coded id\n        return 'review';\n\n      case AccessNodeIds.ngt.self:\n        return 'tablet';\n\n      case AccessNodeIds.b2b.self:\n        return 'b2b';\n\n      case AccessNodeIds.customerClub.self:\n        return 'customer-club';\n\n      case '15000000':\n      case '200':\n      case '800':\n      case '210':\n        return 'accounting';\n\n      case '140000':\n        return 'setting';\n\n      case '20000':\n        return 'bank';\n    }\n    return null;\n  }\n\n  private getSubSystemRemoteUrlByMenu(menu: MenuInterface): string | null {\n    switch (menu.id.toString()) {\n      case '50000': // FIXME: remove hard coded id\n        return this.appConfigService.config.remotes['review'].url;\n      case AccessNodeIds.tracer.self:\n        return this.appConfigService.config.remotes['tracer'].url;\n      case AccessNodeIds.stock.self:\n        return this.appConfigService.config.remotes['stock'].url;\n      case AccessNodeIds.b2b.self:\n        return this.appConfigService.config.remotes['b2b'].url;\n      case AccessNodeIds.sale.self:\n        return this.appConfigService.config.remotes['sale'].url;\n      case AccessNodeIds.baseInfo1.self:\n      case AccessNodeIds.baseInfo2.self:\n        return this.appConfigService.config.remotes['master-data'].url;\n      case '20000':\n        return this.appConfigService.config.remotes['treasury'].url;\n      case '15000000':\n      case '200':\n      case '800':\n      case '210':\n        return this.appConfigService.config.remotes['accounting'].url;\n      case '140000':\n        return this.appConfigService.config.remotes['office'].url;\n      case AccessNodeIds.ngt.self:\n        return this.appConfigService.config.remotes['ngt'].url;\n    }\n\n    return null;\n  }\n\n  private async loadFararuExposedRemoteFile(domain: string): Promise<any> {\n    const versionQueryString = await getVersionQueryStringOfRemoteModule(domain, this.http);\n    return loadRemoteModule({\n      type: 'module',\n      remoteEntry: domain + '/remoteEntry.js?v=' + (versionQueryString || this.subSystemVersion),\n      exposedModule: 'ExposedFile',\n    });\n  }\n\n  async setMenuData(menu: MenuInterface) {\n    if (this.menuDataState[menu.id] == 'loaded' || this.menuDataState[menu.id] == 'loading')\n      return Promise.resolve();\n\n    const subSystemRemoteUrl = this.getSubSystemRemoteUrlByMenu(menu);\n    const subsystem = this.getSubSystemTypeByMenu(menu);\n    if (subSystemRemoteUrl) {\n      try {\n        menu.isLoading = true;\n        this.menuDataState[menu.id] = 'loading';\n        const res = await this.loadFararuExposedRemoteFile(subSystemRemoteUrl);\n        this.menuDataState[menu.id] = 'loaded';\n        const exposedFile = res?.ExposedFile;\n        const version = exposedFile?.appVersion;\n        const getMenuLink = exposedFile?.getMenuLink;\n        const getMenuClick = exposedFile?.getMenuClick;\n        if (version) {\n          menu.footer =\n            (await lastValueFrom(this.translateService.get('dashboard.version'))) + ' ' + version;\n        }\n\n        if (typeof getMenuLink == 'function') {\n          // get all sub menus\n          const allSubMenus = this.menus.find(x => x.id === menu.id).subMenus;\n          // set sub menu link\n          this.setMenuLink(subsystem, allSubMenus, getMenuLink, getMenuClick);\n        }\n      } catch (e: any) {\n        this.menuDataState[menu.id] = 'error';\n        this.toastService.show({\n          type: 'error',\n          text: `<div>خطا در بارگذاری لینک های منوی <strong>\"${menu.title}\"</strong> به دلیل عدم اتصال به سرور زیر : <p>${subSystemRemoteUrl}</p></div>`,\n          closeByUser: true,\n        });\n      } finally {\n        menu.isLoading = false;\n      }\n    }\n  }\n\n  private setMenuLink(\n    subsystem: SubSystemType,\n    menus: MenuInterface[],\n    getMenuLink: (id: string | number) => string | null,\n    getMenuClick: (id: string | number, injector: Injector) => void\n  ): void {\n    if (!menus?.length) return;\n    menus.forEach(item => {\n      if (item.isReportMenu) {\n        item.link = `/review/reports/${item.reportId}`;\n      } else if (item.subMenus?.length && item.hasActionMenu) {\n        this.setMenuLink(subsystem, item.subMenus, getMenuLink, getMenuClick);\n        item.link = getMenuLink(item.id);\n      } else {\n        if (item.subMenus?.length) {\n          this.setMenuLink(subsystem, item.subMenus, getMenuLink, getMenuClick);\n        } else {\n          item.link = getMenuLink(item.id);\n          item.openCallback = () => {\n            if (getMenuClick) {\n              this.menuOpenHandler(item, getMenuClick);\n            }\n          };\n        }\n      }\n    });\n  }\n\n  private async menuOpenHandler(\n    item: MenuInterface,\n    getMenuClick: (id: string | number, injector: Injector) => void\n  ) {\n    if (\n      !item.accessNodeId ||\n      (await this._userAccessService.userHasAccessAsync(item.accessNodeId))\n    ) {\n      getMenuClick(item.id, this.injector);\n    }\n  }\n\n  private getSubSystemTypeByMenu(menu: MenuInterface): SubSystemType | null {\n    switch (menu.id.toString()) {\n      case '50000': // FIXME: remove hard coded id\n        return 'review';\n      case AccessNodeIds.tracer.self:\n        return 'tracer';\n      case AccessNodeIds.stock.self:\n        return 'stock';\n      case AccessNodeIds.b2b.self:\n        return 'b2b';\n      case AccessNodeIds.sale.self:\n        return 'sale';\n      case AccessNodeIds.baseInfo1.self:\n      case AccessNodeIds.baseInfo2.self:\n        return 'master-data';\n      case '20000':\n        return 'treasury';\n      case '15000000':\n      case '200':\n      case '800':\n      case '210':\n        return 'accounting';\n      case '140000':\n        return 'office';\n      case AccessNodeIds.ngt.self:\n        return 'ngt';\n    }\n\n    return null;\n  }\n\n  getMenuItemIdByEntityModel(\n    entityModel: string,\n    query?: string\n  ): Observable<ODataResponse<InterSystemLookupActionResponse>> {\n    if (this.lookupMenuItemActions[entityModel]) {\n      return of(this.lookupMenuItemActions[entityModel]);\n    } else {\n      let headers = new HttpHeaders().append('fetchReason', '1');\n      headers = headers.append(\n        HttpHeaderNames.PARAM,\n        JSON.stringify([{ keyName: 'ModelName', keyValue: entityModel }])\n      );\n      return this._generalOdataService.getByEntity<InterSystemLookupActionResponse>(\n        'vwUserModelMenu',\n        query,\n        headers\n      );\n    }\n  }\n\n  getGridRowActionsByEntityModel(\n    entityModel: string,\n    query?: string\n  ): Observable<ODataResponse<InterSystemGridRowActionResponse>> {\n    if (this.gridRowMenuActions[entityModel]) {\n      return of(this.gridRowMenuActions[entityModel]);\n    } else {\n      let headers = new HttpHeaders().append('fetchReason', '1');\n      headers = headers.append(\n        HttpHeaderNames.PARAM,\n        JSON.stringify([{ keyName: 'ModelName', keyValue: entityModel }])\n      );\n      return this._generalOdataService.getByEntity<InterSystemGridRowActionResponse>(\n        'vwUserModelXModel',\n        query,\n        headers\n      );\n    }\n  }\n\n  findMenuItemById(menuItem: MenuInterface, menuItemId: number): MenuInterface | undefined {\n    for (const element of menuItem.subMenus) {\n      if (element.id === menuItemId) {\n        return element;\n      } else if (element.subMenus?.length > 0) {\n        const itemFound = this.findMenuItemById(element, menuItemId);\n        if (itemFound) {\n          return itemFound;\n        }\n      }\n    }\n    return undefined;\n  }\n\n  getMenuItemById(menuItemId: number): MenuInterface | undefined {\n    for (const element of this.menus) {\n      if (element.id === menuItemId) {\n        return { ...element };\n      } else if (element?.subMenus?.length > 0) {\n        const itemFound = this.findMenuItemById(element, menuItemId);\n        if (itemFound) {\n          return { ...itemFound };\n        }\n      }\n    }\n    return undefined;\n  }\n  // INFO: this request just fetch data and a decorator cache the result\n  /**\n   * - Return cached data if available (using cache service handled inside Cacheable decorator)\n   * - Multiple simultaneous requests might be sent to server\n   * @param menuId\n   * @returns\n   */\n  @Cacheable(300000) // Cache with default TTL (5 minutes)\n  getPageMenuItemsV1(menuId: string): Observable<MenuItem> {\n    let headers = new HttpHeaders().append('MenuId', menuId);\n    return this.http.get<MenuItem>(`/api/general/GetMenuItemsByUser`, {\n      headers: headers,\n    });\n  }\n\n  /**\n   * - Return cached data if available (using cache service handled inside the method)\n   * - Multiple simultaneous requests might be sent to server\n   * @param menuId\n   * @returns\n   */\n  getPageMenuItemsV2(menuId: string): Observable<MenuItem> {\n    const cacheKey = Utility.generateCacheKey('getPageMenuItems', [menuId]);\n    const cached = this.menuItemCacheService.get<MenuItem>(cacheKey);\n    if (cached) {\n      return of(cached);\n    }\n    let headers = new HttpHeaders().append('MenuId', menuId);\n    return this.http\n      .get<MenuItem>(`/api/general/GetMenuItemsByUser`, {\n        headers: headers,\n      })\n      .pipe(tap(response => this.menuItemCacheService.set(cacheKey, response, 300000)));\n  }\n\n  /**\n   * - Return cached data if available\n   * - Join ongoing request if one exists\n   * - Only make new request if no ongoing request exists\n   * @param menuId\n   * @returns\n   */\n  getPageMenuItemsV3(menuId: string | number): Observable<MenuItem> {\n    const cacheKey = Utility.generateCacheKey('getPageMenuItems', [menuId]);\n    const cached = this.menuItemCacheService.get<MenuItem>(cacheKey);\n    if (cached) {\n      return of(cached);\n    }\n\n    // Create or get existing subject for this params\n    if (!this.menuItemCacheService.requestSubjects.has(cacheKey)) {\n      this.menuItemCacheService.requestSubjects.set(cacheKey, new Subject<any>());\n    }\n    const requestSubject = this.menuItemCacheService.requestSubjects.get(cacheKey)!;\n\n    // Only make the request if not already ongoing\n    if (this.menuItemCacheService.requestSubjects.get(cacheKey)!.observers.length === 0) {\n      let headers = new HttpHeaders().append('MenuId', menuId.toString());\n      this.http\n        .get<MenuItem>(`/api/general/GetMenuItemsByUser`, {\n          headers: headers,\n        })\n        .pipe(\n          tap(response => {\n            this.menuItemCacheService.set(cacheKey, response, 300000);\n            this.menuItemCacheService.requestSubjects.delete(cacheKey);\n          }),\n          finalize(() => {\n            this.menuItemCacheService.requestSubjects.delete(cacheKey);\n          })\n        )\n        .subscribe({\n          next: response => requestSubject.next(response),\n          error: err => requestSubject.error(err),\n        });\n    }\n    return requestSubject.asObservable().pipe(\n      take(1) // Complete after first emission\n    );\n  }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { ActivatedRouteSnapshot, Resolve, ResolveFn, RouterStateSnapshot } from '@angular/router';\nimport { Observable } from 'rxjs';\nimport { MenuItem } from '../models/menu-items';\nimport { AppMenuApiService } from '../services/app-menu-api.service';\n\nexport const MenuItemsResolver: ResolveFn<MenuItem> = (\n  route: ActivatedRouteSnapshot,\n  state: RouterStateSnapshot\n): Observable<any> | Promise<any> | any => {\n  const routeData: any = route.data;\n  if (routeData && (routeData.menuItemId || routeData.accessNodeId)) {\n    return inject(AppMenuApiService).getPageMenuItemsV2(\n      routeData.menuItemId ? routeData.menuItemId.toString() : routeData.accessNodeId.toString()\n    );\n  } else {\n    throw new Error('No MenuItemId provided in route');\n  }\n};\n","import { HttpClient, HttpEventType } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport {\n  BehaviorSubject,\n  Observable,\n  finalize,\n  map,\n  mergeMap,\n  filter as rxFilter,\n  tap,\n} from 'rxjs';\nimport { HttpHeaderNames } from '../../constants';\nimport { ParamHttpHeaderItemInterface } from '../../models';\nimport { createParamHttpHeaderValue } from '../../utils';\n\nexport interface PrintInterface {\n  id: string;\n  fileName: string;\n  title: string;\n  address: string;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class FararuPrintService {\n  constructor(private http: HttpClient) {}\n  private reportProgress: BehaviorSubject<number> = new BehaviorSubject(0);\n  private _progress: Observable<number> = this.reportProgress.asObservable();\n  public get progress(): Observable<number> {\n    return this._progress;\n  }\n\n  print(\n    reportName: string,\n    items: number[],\n    params?: ParamHttpHeaderItemInterface[]\n  ): Observable<any> {\n    this.reportProgress.next(0);\n    return this.preparePrint(items).pipe(\n      mergeMap((guidKey) =>\n        this.downbloadPdf(reportName, guidKey.guIdKey, params)\n      ),\n      finalize(() => {\n        this.reportProgress.complete();\n      }),\n      tap((event) => {\n        if (event.type == HttpEventType.DownloadProgress) {\n          this.reportProgress.next(\n            Math.round((100 * event.loaded) / event.total)\n          );\n        }\n      }),\n      rxFilter((event) => event.type === HttpEventType.Response),\n      map((event) => {\n        if (event.type == HttpEventType.Response) {\n          return event.body;\n        } else return null;\n      }),\n      tap((response) => {\n        const blob = new Blob([response], {\n          type: 'application/pdf',\n        });\n        this.openBlobAsPdf(blob);\n      })\n    );\n  }\n\n  printDev(reportName: string,spName: string, params?: ParamHttpHeaderItemInterface[]): Observable<any> {\n    return this.http\n      .post('/api/general/PDFAndReport', {\n        repName: reportName,\n        spName: spName,\n      },\n      {\n        responseType: 'blob',\n        headers: params\n          ? {\n              [HttpHeaderNames.PARAM]: createParamHttpHeaderValue(params),\n               \"OutputType\": \"2\"\n            }\n          : undefined,\n      } // Tell Angular to expect binary data\n      )\n      .pipe(\n        tap((response: any) => {\n          const blob = new Blob([response], {\n            type: 'application/pdf',\n          });\n          this.openBlobAsPdf(blob);\n        })\n      );\n  }\n\n  openBlobAsPdf(blob: Blob) {\n    const pdfObjectURL = URL.createObjectURL(blob);\n    const iframe = document.createElement('iframe');\n    iframe.src = pdfObjectURL;\n    iframe.style.width = '100%';\n    iframe.style.height = '100%';\n\n    // Open the iframe in a new tab\n    const newTab = window.open('', '_blank');\n    newTab.document.body.appendChild(iframe);\n  }\n\n  \n  saveBlobAsPdf(blob: Blob) {\n    const a = document.createElement('a');\n    const objectUrl = URL.createObjectURL(blob);\n    a.href = objectUrl;\n    a.download = 'print-report.pdf';\n    a.click();\n    URL.revokeObjectURL(objectUrl);\n  }\n\n  loadPrintDocs(formName: string): Observable<PrintInterface[]> {\n    return this.http.get<PrintInterface[]>('/api/misc/loadprintdocs', {\n      params: { formName },\n    });\n  }\n\n  preparePrint(ids: number[]): Observable<{ guIdKey: string }> {\n    return this.http.get<{ guIdKey: string }>('/api/misc/prepareprintdocs', {\n      params: {\n        ids:\n          ids?.length > 0\n            ? ids.map((n) => n + '').reduce((p, c) => p + ',' + c)\n            : [],\n      },\n    });\n  }\n\n  downbloadPdf(\n    reportName: string,\n    guidKey: string,\n    params?: ParamHttpHeaderItemInterface[]\n  ): Observable<any> {\n    return this.http.post(\n      '/api/general/print',\n      {\n        rptName: reportName,\n        props: { '@GUIDKey': guidKey },\n      },\n      {\n        responseType: 'blob',\n        observe: 'events',\n        reportProgress: true,\n        headers: params\n          ? {\n              [HttpHeaderNames.PARAM]: createParamHttpHeaderValue(params),\n            }\n          : undefined,\n      }\n    );\n  }\n}\n","export interface SaveResult {\n  warnings: Information[];\n  informations: Information[];\n  hasWarning: boolean;\n  hasInformation: boolean;\n  result: any | null;\n  isValid: boolean;\n  errors: Information[];\n}\n\nexport interface Information {\n  propertyName: string;\n  informationMessage: string;\n  messageType: number;\n  displayOrder: number;\n  extraInfo1: any | null;\n  extraInfo2: any | null;\n  extraInfo3: any | null;\n}\n\nexport interface SaveBodyV2<T = any> {\n  collection: T & {\n    CheckWarning?: 0 | 1;\n    checkWarning?: 0 | 1;\n  };\n  saveReason: number;\n}\n\nexport interface SaveBody {\n  CheckWarning: 0 | 1;\n  checkWarning?: 0 | 1;\n  [key: string]: any;\n}\n\nexport interface SaveResponse {\n  message: string;\n  informations: Information[];\n  canceledByUser: boolean;\n  confirmedByUser: boolean;\n  saved: boolean;\n}\n\nexport interface CheckWarningResponse {\n  hasWarning: boolean;\n  message: string;\n  informations: Information[];\n}\n\nexport function isSaveResponse(obj: any): obj is SaveResponse {\n  return obj && obj.canceledByUser != null && obj.confirmedByUser != null && obj.saved != null;\n}\n\nexport function isSaveResult(obj: any): obj is SaveResult {\n  return (\n    obj &&\n    obj.informations != null &&\n    obj.canceledByUser == null &&\n    obj.confirmedByUser == null &&\n    obj.saved == null\n  );\n}\n\nexport function generateWarningMessage(result: SaveResult): string {\n  if (result.warnings)\n    return uniqueItemsFromArray(result.warnings, 'warningMessage')\n      .map((w: any) => {\n        let msg = `${w.warningMessage} \\n`;\n        if (w.extraInfo1) msg += `${w.extraInfo1} \\n`;\n        if (w.extraInfo2) msg += `${w.extraInfo2} \\n`;\n        if (w.extraInfo3) msg += `${w.extraInfo3} \\n`;\n\n        return msg;\n      })\n      .reduce((p: any, c: any) => p + '\\n\\n' + c);\n  else return '';\n}\n\nexport function generateInformationMessage(result: SaveResult): string {\n  if (result.informations) {\n    const arr = uniqueItemsFromArray(result.informations, 'informationMessage');\n    return arr.length > 0\n      ? arr\n          .map((i: any) => `${i.informationMessage} \\n `)\n          .reduce((p: any, c: any) => p + '\\n\\n' + c)\n      : '';\n  } else return '';\n}\n\nfunction uniqueItemsFromArray(array: any[], key: string) {\n  return Array.from(new Set(array.map(obj => obj[key]))).map(\n    k => array.find(obj => obj[key] === k)!\n  );\n}\n","export enum ButtonColors {\n  PRIMARY = 'primary',\n  SECONDARY = 'secondary',\n  DANGER = 'danger',\n}\n","export enum ButtonVarients {\n  FILL = 'fill',\n  OUTLINE = 'outline',\n  TEXT = 'text',\n}\n","import { Component, Output, TemplateRef, ViewChild, EventEmitter, Input } from '@angular/core';\nimport { DropdownPanel } from './dropdown-panel';\nimport { OverflowType } from '../../../types/overflow.type';\n\n@Component({\n  selector: 'ui-dropdown',\n  templateUrl: './dropdown.component.html',\n  styleUrls: ['./dropdown.component.scss'],\n})\nexport class DropdownComponent implements DropdownPanel {\n  @Input() contentTemplateRef: TemplateRef<any>;\n  @Input() data: unknown;\n  @Input() overflow?: OverflowType;\n\n  @Output() closed = new EventEmitter<void>();\n\n  @ViewChild(TemplateRef) templateRef: TemplateRef<any>;\n\n  constructor() {}\n}\n","<ng-template>\n  <div (click)=\"closed.emit()\" class=\"ui-dropdown\" [style.overflow]=\"overflow\">\n    @if (contentTemplateRef){\n    <ng-container *ngTemplateOutlet=\"contentTemplateRef; context: { data: data }\"></ng-container>\n    }@else{\n    <ng-content></ng-content>\n    }\n  </div>\n</ng-template>\n","import { Overlay, OverlayRef } from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport { Directive, ElementRef, Input, OnDestroy, ViewContainerRef } from '@angular/core';\nimport { merge, Observable, Subscription } from 'rxjs';\nimport { DropdownPanel } from './dropdown-panel';\n\n@Directive({\n  selector: '[dropdownTriggerFor]',\n  host: {\n    '(click)': 'toggleDropdown($event)',\n  },\n})\nexport class DropdownTriggerForDirective implements OnDestroy {\n  private isDropdownOpen = false;\n  private overlayRef: OverlayRef;\n  private dropdownClosingActionsSub = Subscription.EMPTY;\n\n  @Input('dropdownTriggerFor') public dropdownPanel: DropdownPanel;\n  @Input('dropdownAlignment') public dropdownAlignment: 'start' | 'end' | 'center' = 'start';\n  @Input('connectedTo') public connectedTo: HTMLButtonElement;\n\n  constructor(\n    private overlay: Overlay,\n    private elementRef: ElementRef<HTMLElement>,\n    private viewContainerRef: ViewContainerRef\n  ) {}\n\n  toggleDropdown(e: any): void {\n    e.stopPropagation();\n    this.isDropdownOpen ? this.destroyDropdown() : this.openDropdown();\n  }\n\n  openDropdown(): void {\n    this.isDropdownOpen = true;\n    this.overlayRef = this.overlay.create({\n      hasBackdrop: true,\n      backdropClass: 'cdk-overlay-transparent-backdrop',\n      direction: document.body.getAttribute('dir') == 'rtl' ? 'rtl' : 'ltr',\n      scrollStrategy: this.overlay.scrollStrategies.block(),\n      positionStrategy: this.overlay\n        .position()\n        .flexibleConnectedTo(this.connectedTo ?? this.elementRef)\n        .withPositions([\n          {\n            originX: this.dropdownAlignment ?? 'start',\n            originY: 'bottom',\n            overlayX: this.dropdownAlignment ?? 'start',\n            overlayY: 'top',\n          },\n        ]),\n    });\n\n    const templatePortal = new TemplatePortal(\n      this.dropdownPanel.templateRef,\n      this.viewContainerRef\n    );\n    this.overlayRef.attach(templatePortal);\n    (document as any).dropdownAddedInOverlay = true;\n    setTimeout(() => {\n      (\n        this.overlayRef.hostElement.querySelector(\n          '[data-role=\"searchbox-wrap\"] input'\n        ) as HTMLElement\n      )?.focus();\n    }, 100);\n\n    this.dropdownClosingActionsSub = this.dropdownClosingActions().subscribe(() =>\n      this.destroyDropdown()\n    );\n  }\n\n  private dropdownClosingActions(): Observable<MouseEvent | void> {\n    const backdropClick$ = this.overlayRef.backdropClick();\n    const detachment$ = this.overlayRef.detachments();\n    const dropdownClosed = this.dropdownPanel.closed;\n\n    return merge(backdropClick$, detachment$, dropdownClosed);\n  }\n\n  private destroyDropdown(): void {\n    if (!this.overlayRef || !this.isDropdownOpen) {\n      return;\n    }\n\n    this.dropdownClosingActionsSub.unsubscribe();\n    this.isDropdownOpen = false;\n    this.overlayRef.detach();\n    (document as any).dropdownAddedInOverlay = false;\n  }\n\n  ngOnDestroy(): void {\n    if (this.overlayRef) {\n      this.overlayRef.dispose();\n    }\n  }\n}\n","import {\n  Component,\n  Input,\n  OnChanges,\n  OnInit,\n  SimpleChanges,\n  ViewEncapsulation,\n} from '@angular/core';\nimport { IconNameType } from '../../../../types/icon-name.type';\nimport { IconSizeType } from '../../../../types/icon-size.type';\nimport { ColorType } from '../../../../types/color.type';\n\nexport interface FararuIconComponentInterface {\n  name: IconNameType;\n  size?: IconSizeType;\n  color?: ColorType;\n}\n\n@Component({\n  selector: 'ui-fararu-icon',\n  templateUrl: './fararu-icon.component.html',\n  styleUrls: ['./fararu-icon.component.scss'],\n  encapsulation: ViewEncapsulation.None,\n})\nexport class FararuIconComponent implements FararuIconComponentInterface, OnInit, OnChanges {\n  @Input() name: IconNameType;\n  @Input() size?: IconSizeType = 'x3';\n  @Input() color?: ColorType = 'content-primary';\n\n  iconSrc?: string;\n\n  constructor() {}\n\n  ngOnInit(): void {}\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (changes['name']) {\n      this.iconSrc = this.generateIconPath(this.name);\n    }\n  }\n\n  private generateIconPath(iconName: IconNameType) {\n    return `/assets/fararu-icons/${iconName}.svg`;\n  }\n}\n","<svg-icon\n  class=\"fararu-icon\"\n  [class.fararu-icon--size-x1]=\"size === 'x1'\"\n  [class.fararu-icon--size-x2]=\"size === 'x2'\"\n  [class.fararu-icon--size-x3]=\"size === 'x3'\"\n  [class.fararu-icon--size-x4]=\"size === 'x4'\"\n  [class.fararu-icon--size-x5]=\"size === 'x5'\"\n  [class.fararu-icon--size-x6]=\"size === 'x6'\"\n  [class.fararu-icon--size-x7]=\"size === 'x7'\"\n  [class.fararu-icon--size-x8]=\"size === 'x8'\"\n  [class.fararu-icon--color-content-primary]=\"color === 'content-primary'\"\n  [class.fararu-icon--color-content-secondary]=\"color === 'content-secondary'\"\n  [class.fararu-icon--color-content-tertiary]=\"color === 'content-tertiary'\"\n  [class.fararu-icon--color-content-quaternary]=\"color === 'content-quaternary'\"\n  [class.fararu-icon--color-content-primary-inverse]=\"color === 'content-primary-inverse'\"\n  [class.fararu-icon--color-content-secondary-inverse]=\"color === 'content-secondary-inverse'\"\n  [class.fararu-icon--color-content-tertiary-inverse]=\"color === 'content-tertiary-inverse'\"\n  [class.fararu-icon--color-content-quaternary-inverse]=\"color === 'content-quaternary-inverse'\"\n  [class.fararu-icon--color-input-disabled-border]=\"color === 'input-disabled-border'\"\n  [class.fararu-icon--color-primary]=\"color === 'primary'\"\n  [class.fararu-icon--color-success]=\"color === 'success'\"\n  [class.fararu-icon--color-error]=\"color === 'error'\"\n  [class.fararu-icon--color-on-error]=\"color === 'on-error'\"\n  [class.fararu-icon--color-on-primary]=\"color === 'on-primary'\"\n  [class.fararu-icon--color-on-success]=\"color === 'on-success'\"\n  [class.fararu-icon--color-warning]=\"color === 'warning'\"\n  [class.fararu-icon--color-info]=\"color === 'info'\"\n  [class.fararu-icon--color-alert]=\"color === 'alert'\"\n  [src]=\"iconSrc\"\n></svg-icon>\n","import { ANIMATION_MODULE_TYPE, ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, inject, Input, OnDestroy, ViewChild, ViewEncapsulation } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\nconst MIN_HEIGHT = 24;\nconst MAX_WIDTH = 250;\n@Component({\n  selector: 'ui-tooltip-component',\n  templateUrl: './ui-tooltip.component.html',\n  styleUrl: './ui-tooltip.component.scss',\n  encapsulation: ViewEncapsulation.None,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  host: {\n    '(mouseleave)': '_handleMouseLeave($event)',\n    'aria-hidden': 'true',\n  },\n})\nexport class UiTooltipComponent implements OnDestroy {\n  private _changeDetectorRef = inject(ChangeDetectorRef);\n  protected _elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n  @Input() isError?: boolean = false;\n  @Input() inverseColor?: boolean;\n\n  /* Whether the tooltip text overflows to multiple lines */\n  _isMultiline = false;\n\n  /** Message to display in the tooltip */\n  message: string;\n\n  /** Classes to be added to the tooltip. Supports the same syntax as `ngClass`. */\n  tooltipClass: string | string[] | Set<string> | {[key: string]: any};\n\n  /** The timeout ID of any current timer set to show the tooltip */\n  private _showTimeoutId: ReturnType<typeof setTimeout> | undefined;\n\n  /** The timeout ID of any current timer set to hide the tooltip */\n  private _hideTimeoutId: ReturnType<typeof setTimeout> | undefined;\n\n  /** Element that caused the tooltip to open. */\n  _triggerElement: HTMLElement;\n\n  /** Amount of milliseconds to delay the closing sequence. */\n  _mouseLeaveHideDelay: number;\n\n  /** Whether animations are currently disabled. */\n  private _animationsDisabled: boolean;\n\n  /** Reference to the internal tooltip element. */\n  @ViewChild('tooltip', {\n    // Use a static query here since we interact directly with\n    // the DOM which can happen before `ngAfterViewInit`.\n    static: true,\n  })\n  _tooltip: ElementRef<HTMLElement>;\n\n  /** Whether interactions on the page should close the tooltip */\n  private _closeOnInteraction = false;\n\n  /** Whether the tooltip is currently visible. */\n  private _isVisible = false;\n\n  /** Subject for notifying that the tooltip has been hidden from the view */\n  private readonly _onHide: Subject<void> = new Subject();\n\n  /** Name of the show animation and the class that toggles it. */\n  private readonly _showAnimation = 'mat-mdc-tooltip-show';\n\n  /** Name of the hide animation and the class that toggles it. */\n  private readonly _hideAnimation = 'mat-mdc-tooltip-hide';\n\n  constructor(...args: unknown[]);\n\n  constructor() {\n    const animationMode = inject(ANIMATION_MODULE_TYPE, {optional: true});\n    this._animationsDisabled = animationMode === 'NoopAnimations';\n  }\n\n  /**\n   * Shows the tooltip with an animation originating from the provided origin\n   * @param delay Amount of milliseconds to the delay showing the tooltip.\n   */\n  show(delay: number): void {\n    // Cancel the delayed hide if it is scheduled\n    if (this._hideTimeoutId != null) {\n      clearTimeout(this._hideTimeoutId);\n    }\n\n    this._showTimeoutId = setTimeout(() => {\n      this._toggleVisibility(true);\n      this._showTimeoutId = undefined;\n    }, delay);\n  }\n\n  /**\n   * Begins the animation to hide the tooltip after the provided delay in ms.\n   * @param delay Amount of milliseconds to delay showing the tooltip.\n   */\n  hide(delay: number): void {\n    // Cancel the delayed show if it is scheduled\n    if (this._showTimeoutId != null) {\n      clearTimeout(this._showTimeoutId);\n    }\n\n    this._hideTimeoutId = setTimeout(() => {\n      this._toggleVisibility(false);\n      this._hideTimeoutId = undefined;\n    }, delay);\n  }\n\n  /** Returns an observable that notifies when the tooltip has been hidden from view. */\n  afterHidden(): Observable<void> {\n    return this._onHide;\n  }\n\n  /** Whether the tooltip is being displayed. */\n  isVisible(): boolean {\n    return this._isVisible;\n  }\n\n  ngOnDestroy() {\n    this._cancelPendingAnimations();\n    this._onHide.complete();\n    this._triggerElement = null!;\n  }\n\n  /**\n   * Interactions on the HTML body should close the tooltip immediately as defined in the\n   * material design spec.\n   * https://material.io/design/components/tooltips.html#behavior\n   */\n  _handleBodyInteraction(): void {\n    if (this._closeOnInteraction) {\n      this.hide(0);\n    }\n  }\n\n  /**\n   * Marks that the tooltip needs to be checked in the next change detection run.\n   * Mainly used for rendering the initial text before positioning a tooltip, which\n   * can be problematic in components with OnPush change detection.\n   */\n  _markForCheck(): void {\n    this._changeDetectorRef.markForCheck();\n  }\n\n  _handleMouseLeave({relatedTarget}: MouseEvent) {\n    if (!relatedTarget || !this._triggerElement.contains(relatedTarget as Node)) {\n      if (this.isVisible()) {\n        this.hide(this._mouseLeaveHideDelay);\n      } else {\n        this._finalizeAnimation(false);\n      }\n    }\n  }\n\n  /**\n   * Callback for when the timeout in this.show() gets completed.\n   * This method is only needed by the mdc-tooltip, and so it is only implemented\n   * in the mdc-tooltip, not here.\n   */\n  protected _onShow(): void {\n    this._isMultiline = this._isTooltipMultiline();\n    this._markForCheck();\n  }\n\n  /** Whether the tooltip text has overflown to the next line */\n  private _isTooltipMultiline() {\n    const rect = this._elementRef.nativeElement.getBoundingClientRect();\n    return rect.height > MIN_HEIGHT && rect.width >= MAX_WIDTH;\n  }\n\n  /** Event listener dispatched when an animation on the tooltip finishes. */\n  _handleAnimationEnd({animationName}: AnimationEvent) {\n    if (animationName === this._showAnimation || animationName === this._hideAnimation) {\n      this._finalizeAnimation(animationName === this._showAnimation);\n    }\n  }\n\n  /** Cancels any pending animation sequences. */\n  _cancelPendingAnimations() {\n    if (this._showTimeoutId != null) {\n      clearTimeout(this._showTimeoutId);\n    }\n\n    if (this._hideTimeoutId != null) {\n      clearTimeout(this._hideTimeoutId);\n    }\n\n    this._showTimeoutId = this._hideTimeoutId = undefined;\n  }\n\n  /** Handles the cleanup after an animation has finished. */\n  private _finalizeAnimation(toVisible: boolean) {\n    if (toVisible) {\n      this._closeOnInteraction = true;\n    } else if (!this.isVisible()) {\n      this._onHide.next();\n    }\n  }\n\n  /** Toggles the visibility of the tooltip element. */\n  private _toggleVisibility(isVisible: boolean) {\n    // We set the classes directly here ourselves so that toggling the tooltip state\n    // isn't bound by change detection. This allows us to hide it even if the\n    // view ref has been detached from the CD tree.\n    const tooltip = this._tooltip.nativeElement;\n    const showClass = this._showAnimation;\n    const hideClass = this._hideAnimation;\n    tooltip.classList.remove(isVisible ? hideClass : showClass);\n    tooltip.classList.add(isVisible ? showClass : hideClass);\n    if (this._isVisible !== isVisible) {\n      this._isVisible = isVisible;\n      this._changeDetectorRef.markForCheck();\n    }\n\n    // It's common for internal apps to disable animations using `* { animation: none !important }`\n    // which can break the opening sequence. Try to detect such cases and work around them.\n    if (isVisible && !this._animationsDisabled && typeof getComputedStyle === 'function') {\n      const styles = getComputedStyle(tooltip);\n\n      // Use `getPropertyValue` to avoid issues with property renaming.\n      if (\n        styles.getPropertyValue('animation-duration') === '0s' ||\n        styles.getPropertyValue('animation-name') === 'none'\n      ) {\n        this._animationsDisabled = true;\n      }\n    }\n\n    if (isVisible) {\n      this._onShow();\n    }\n\n    if (this._animationsDisabled) {\n      tooltip.classList.add('_mat-animation-noopable');\n      this._finalizeAnimation(isVisible);\n    }\n  }\n}\n","<div\n  #tooltip\n  class=\"mdc-tooltip mat-mdc-tooltip fararu-tooltip\"\n  [ngClass]=\"tooltipClass\"\n  (animationend)=\"_handleAnimationEnd($event)\"\n  [class.mdc-tooltip--multiline]=\"_isMultiline\"\n  [class.fararu-tooltip--has-error]=\"isError\"\n  [class.fararu-tooltip--inverse-color]=\"inverseColor\"\n>\n  <div [innerText]=\"message\" class=\"mat-mdc-tooltip-surface mdc-tooltip__surface\"></div>\n</div>\n","import { AriaDescriber, FocusMonitor } from '@angular/cdk/a11y';\nimport { Directionality } from '@angular/cdk/bidi';\nimport {\n  BooleanInput,\n  coerceBooleanProperty,\n  coerceNumberProperty,\n  NumberInput,\n} from '@angular/cdk/coercion';\nimport { ESCAPE, hasModifierKey } from '@angular/cdk/keycodes';\nimport {\n  ConnectedPosition,\n  ConnectionPositionPair,\n  FlexibleConnectedPositionStrategy,\n  HorizontalConnectionPos,\n  OriginConnectionPosition,\n  Overlay,\n  OverlayConnectionPosition,\n  OverlayRef,\n  ScrollDispatcher,\n  ScrollStrategy,\n  VerticalConnectionPos,\n} from '@angular/cdk/overlay';\nimport { normalizePassiveListenerOptions, Platform } from '@angular/cdk/platform';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { DOCUMENT } from '@angular/common';\nimport {\n  afterNextRender,\n  AfterViewInit,\n  Directive,\n  ElementRef,\n  inject,\n  InjectionToken,\n  Injector,\n  Input,\n  NgZone,\n  OnChanges,\n  OnDestroy,\n  SimpleChanges,\n  ViewContainerRef,\n} from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { UiTooltipComponent } from './ui-tooltip.component';\n\n/** Possible positions for a tooltip. */\nexport type TooltipPosition = 'end' | 'start' | 'top' | 'bottom' | 'before' | 'after';\n\n/**\n * Options for how the tooltip trigger should handle touch gestures.\n * See `MatTooltip.touchGestures` for more information.\n */\nexport type TooltipTouchGestures = 'auto' | 'on' | 'off';\n\n/** Possible visibility states of a tooltip. */\nexport type TooltipVisibility = 'initial' | 'visible' | 'hidden';\n\n/** Time in ms to throttle repositioning after scroll events. */\nexport const SCROLL_THROTTLE_MS = 20;\n\n/** Injection token that determines the scroll handling while a tooltip is visible. */\nexport const MAT_TOOLTIP_SCROLL_STRATEGY = new InjectionToken<() => ScrollStrategy>(\n  'mat-tooltip-scroll-strategy',\n  {\n    providedIn: 'root',\n    factory: () => {\n      const overlay = inject(Overlay);\n      return () => overlay.scrollStrategies.reposition({ scrollThrottle: SCROLL_THROTTLE_MS });\n    },\n  }\n);\n\n/** @docs-private */\nexport function MAT_TOOLTIP_SCROLL_STRATEGY_FACTORY(overlay: Overlay): () => ScrollStrategy {\n  return () => overlay.scrollStrategies.reposition({ scrollThrottle: SCROLL_THROTTLE_MS });\n}\n\n/** @docs-private */\nexport const MAT_TOOLTIP_SCROLL_STRATEGY_FACTORY_PROVIDER = {\n  provide: MAT_TOOLTIP_SCROLL_STRATEGY,\n  deps: [Overlay],\n  useFactory: MAT_TOOLTIP_SCROLL_STRATEGY_FACTORY,\n};\n\n/** @docs-private */\nexport function MAT_TOOLTIP_DEFAULT_OPTIONS_FACTORY(): MatTooltipDefaultOptions {\n  return {\n    showDelay: 500,\n    hideDelay: 100,\n    touchendHideDelay: 1500,\n  };\n}\n\n/** Injection token to be used to override the default options for `matTooltip`. */\nexport const MAT_TOOLTIP_DEFAULT_OPTIONS = new InjectionToken<MatTooltipDefaultOptions>(\n  'mat-tooltip-default-options',\n  {\n    providedIn: 'root',\n    factory: MAT_TOOLTIP_DEFAULT_OPTIONS_FACTORY,\n  }\n);\n\n/** Default `matTooltip` options that can be overridden. */\nexport interface MatTooltipDefaultOptions {\n  /** Default delay when the tooltip is shown. */\n  showDelay: number;\n\n  /** Default delay when the tooltip is hidden. */\n  hideDelay: number;\n\n  /** Default delay when hiding the tooltip on a touch device. */\n  touchendHideDelay: number;\n\n  /** Time between the user putting the pointer on a tooltip trigger and the long press event being fired on a touch device. */\n  touchLongPressShowDelay?: number;\n\n  /** Default touch gesture handling for tooltips. */\n  touchGestures?: TooltipTouchGestures;\n\n  /** Default position for tooltips. */\n  position?: TooltipPosition;\n\n  /**\n   * Default value for whether tooltips should be positioned near the click or touch origin\n   * instead of outside the element bounding box.\n   */\n  positionAtOrigin?: boolean;\n\n  /** Disables the ability for the user to interact with the tooltip element. */\n  disableTooltipInteractivity?: boolean;\n\n  /**\n   * Default classes to be applied to the tooltip. These default classes will not be applied if\n   * `tooltipClass` is defined directly on the tooltip element, as it will override the default.\n   */\n  tooltipClass?: string | string[];\n}\n\n/**\n * CSS class that will be attached to the overlay panel.\n * @deprecated\n * @breaking-change 13.0.0 remove this variable\n */\nexport const TOOLTIP_PANEL_CLASS = 'mat-mdc-tooltip-panel';\n\nconst PANEL_CLASS = 'tooltip-panel';\n\n/** Options used to bind passive event listeners. */\nconst passiveListenerOptions = normalizePassiveListenerOptions({ passive: true });\n\n// These constants were taken from MDC's `numbers` object. We can't import them from MDC,\n// because they have some top-level references to `window` which break during SSR.\nconst MIN_VIEWPORT_TOOLTIP_THRESHOLD = 8;\nconst UNBOUNDED_ANCHOR_GAP = 8;\nconst MIN_HEIGHT = 24;\nconst MAX_WIDTH = 250;\n\n/**\n * Directive that attaches a material design tooltip to the host element. Animates the showing and\n * hiding of a tooltip provided position (defaults to below the element).\n *\n * https://material.io/design/components/tooltips.html\n */\n@Directive({\n  selector: '[appTooltip]',\n  exportAs: 'appTooltip',\n  host: {\n    class: 'mat-mdc-tooltip-trigger',\n    '[class.mat-mdc-tooltip-disabled]': 'disabled',\n  },\n})\nexport class TooltipDirective implements OnDestroy, AfterViewInit {\n  private _overlay = inject(Overlay);\n  private _elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n  private _scrollDispatcher = inject(ScrollDispatcher);\n  private _viewContainerRef = inject(ViewContainerRef);\n  private _ngZone = inject(NgZone);\n  private _platform = inject(Platform);\n  private _ariaDescriber = inject(AriaDescriber);\n  private _focusMonitor = inject(FocusMonitor);\n  protected _dir = inject(Directionality);\n  private _injector = inject(Injector);\n  private _defaultOptions = inject<MatTooltipDefaultOptions>(MAT_TOOLTIP_DEFAULT_OPTIONS, {\n    optional: true,\n  });\n\n  _overlayRef: OverlayRef | null;\n  _tooltipInstance: UiTooltipComponent | null;\n\n  private _portal: ComponentPortal<UiTooltipComponent>;\n  private _position: TooltipPosition = 'end';\n  private _positionAtOrigin: boolean = false;\n  private _disabled: boolean = false;\n  private _tooltipClass: string | string[] | Set<string> | { [key: string]: any };\n  private _scrollStrategy = inject(MAT_TOOLTIP_SCROLL_STRATEGY);\n  private _viewInitialized = false;\n  private _pointerExitEventsInitialized = false;\n  private readonly _tooltipComponent = UiTooltipComponent;\n  private _viewportMargin = 8;\n  private _currentPosition: TooltipPosition;\n  private readonly _cssClassPrefix: string = 'mat-mdc';\n  private _ariaDescriptionPending: boolean;\n\n  // @Input('appTooltip') title: string = 'alikai' ;\n  @Input('appTooltipOffsetX') offsetX: number = 0;\n  @Input('appTooltipInverseColor') inverseColor?: boolean;\n\n  /** Allows the user to define the position of the tooltip relative to the parent element */\n  @Input('appTooltipPosition')\n  get position(): TooltipPosition {\n    return this._position ?? 'top';\n  }\n\n  set position(value: TooltipPosition) {\n    if (value !== this._position) {\n      this._position = value;\n\n      if (this._overlayRef) {\n        this._updatePosition(this._overlayRef);\n        this._tooltipInstance?.show(0);\n        this._overlayRef.updatePosition();\n      }\n    }\n  }\n\n  /**\n   * Whether tooltip should be relative to the click or touch origin\n   * instead of outside the element bounding box.\n   */\n  @Input('appTooltipPositionAtOrigin')\n  get positionAtOrigin(): boolean {\n    return this._positionAtOrigin;\n  }\n\n  set positionAtOrigin(value: BooleanInput) {\n    this._positionAtOrigin = coerceBooleanProperty(value);\n    this._detach();\n    this._overlayRef = null;\n  }\n\n  /** Disables the display of the tooltip. */\n  @Input('appTooltipHide')\n  get disabled(): boolean {\n    return this._disabled;\n  }\n\n  set disabled(value: BooleanInput) {\n    const isDisabled = coerceBooleanProperty(value);\n\n    if (this._disabled !== isDisabled) {\n      this._disabled = isDisabled;\n\n      // If tooltip is disabled, hide immediately.\n      if (isDisabled) {\n        this.hide(0);\n      } else {\n        this._setupPointerEnterEventsIfNeeded();\n      }\n\n      this._syncAriaDescription(this.message);\n    }\n  }\n\n  /** The default delay in ms before showing the tooltip after show is called */\n  @Input('appTooltipShowDelay')\n  get showDelay(): number {\n    return this._showDelay;\n  }\n\n  set showDelay(value: NumberInput) {\n    this._showDelay = coerceNumberProperty(value);\n  }\n\n  private _showDelay: number = 500;\n\n  /** The default delay in ms before hiding the tooltip after hide is called */\n  @Input('appTooltipHideDelay')\n  get hideDelay(): number {\n    return this._hideDelay;\n  }\n\n  set hideDelay(value: NumberInput) {\n    this._hideDelay = coerceNumberProperty(value);\n\n    if (this._tooltipInstance) {\n      this._tooltipInstance._mouseLeaveHideDelay = this._hideDelay;\n    }\n  }\n\n  private _hideDelay: number;\n\n  /**\n   * How touch gestures should be handled by the tooltip. On touch devices the tooltip directive\n   * uses a long press gesture to show and hide, however it can conflict with the native browser\n   * gestures. To work around the conflict, Angular Material disables native gestures on the\n   * trigger, but that might not be desirable on particular elements (e.g. inputs and draggable\n   * elements). The different values for this option configure the touch event handling as follows:\n   * - `auto` - Enables touch gestures for all elements, but tries to avoid conflicts with native\n   *   browser gestures on particular elements. In particular, it allows text selection on inputs\n   *   and textareas, and preserves the native browser dragging on elements marked as `draggable`.\n   * - `on` - Enables touch gestures for all elements and disables native\n   *   browser gestures with no exceptions.\n   * - `off` - Disables touch gestures. Note that this will prevent the tooltip from\n   *   showing on touch devices.\n   */\n  @Input('matTooltipTouchGestures') touchGestures: TooltipTouchGestures = 'auto';\n\n  /** The message to be displayed in the tooltip */\n  @Input('appTooltip')\n  get message(): string {\n    return this._message;\n  }\n\n  set message(value: string | null | undefined) {\n    const oldMessage = this._message;\n\n    // If the message is not a string (e.g. number), convert it to a string and trim it.\n    // Must convert with `String(value)`, not `${value}`, otherwise Closure Compiler optimises\n    // away the string-conversion: https://github.com/angular/components/issues/20684\n    this._message = value != null ? String(value).trim() : '';\n\n    if (!this._message && this._isTooltipVisible()) {\n      this.hide(0);\n    } else {\n      this._setupPointerEnterEventsIfNeeded();\n      this._updateTooltipMessage();\n    }\n\n    this._syncAriaDescription(oldMessage);\n  }\n\n  private _message = '';\n\n  /** Classes to be passed to the tooltip. Supports the same syntax as `ngClass`. */\n  @Input('matTooltipClass')\n  get tooltipClass() {\n    return this._tooltipClass;\n  }\n\n  @Input('appTooltipIsError') isError: boolean;\n\n  set tooltipClass(value: string | string[] | Set<string> | { [key: string]: any }) {\n    this._tooltipClass = value;\n    if (this._tooltipInstance) {\n      this._setTooltipClass(this._tooltipClass);\n    }\n  }\n\n  /** Manually-bound passive event listeners. */\n  private readonly _passiveListeners: (readonly [string, EventListenerOrEventListenerObject])[] =\n    [];\n\n  /** Reference to the current document. */\n  private _document = inject(DOCUMENT);\n\n  /** Timer started at the last `touchstart` event. */\n  private _touchstartTimeout: null | ReturnType<typeof setTimeout> = null;\n\n  /** Emits when the component is destroyed. */\n  private readonly _destroyed = new Subject<void>();\n\n  constructor(...args: unknown[]);\n\n  constructor() {\n    const defaultOptions = this._defaultOptions;\n\n    if (defaultOptions) {\n      this._showDelay = defaultOptions.showDelay;\n      this._hideDelay = defaultOptions.hideDelay;\n\n      if (defaultOptions.position) {\n        this.position = defaultOptions.position;\n      }\n\n      if (defaultOptions.positionAtOrigin) {\n        this.positionAtOrigin = defaultOptions.positionAtOrigin;\n      }\n\n      if (defaultOptions.touchGestures) {\n        this.touchGestures = defaultOptions.touchGestures;\n      }\n\n      if (defaultOptions.tooltipClass) {\n        this.tooltipClass = defaultOptions.tooltipClass;\n      }\n    }\n\n    this._dir.change.pipe(takeUntil(this._destroyed)).subscribe(() => {\n      if (this._overlayRef) {\n        this._updatePosition(this._overlayRef);\n      }\n    });\n\n    this._viewportMargin = MIN_VIEWPORT_TOOLTIP_THRESHOLD;\n  }\n\n  ngAfterViewInit() {\n    // This needs to happen after view init so the initial values for all inputs have been set.\n    this._viewInitialized = true;\n    this._setupPointerEnterEventsIfNeeded();\n\n    this._focusMonitor\n      .monitor(this._elementRef)\n      .pipe(takeUntil(this._destroyed))\n      .subscribe(origin => {\n        // Note that the focus monitor runs outside the Angular zone.\n        if (!origin) {\n          this._ngZone.run(() => this.hide(0));\n        } else if (origin === 'keyboard') {\n          this._ngZone.run(() => this.show());\n        }\n      });\n  }\n\n  /**\n   * Dispose the tooltip when destroyed.\n   */\n  ngOnDestroy() {\n    const nativeElement = this._elementRef.nativeElement;\n\n    // Optimization: Do not call clearTimeout unless there is an active timer.\n    if (this._touchstartTimeout) {\n      clearTimeout(this._touchstartTimeout);\n    }\n\n    if (this._overlayRef) {\n      this._overlayRef.dispose();\n      this._tooltipInstance = null;\n    }\n\n    // Clean up the event listeners set in the constructor\n    this._passiveListeners.forEach(([event, listener]) => {\n      nativeElement.removeEventListener(event, listener, passiveListenerOptions);\n    });\n    this._passiveListeners.length = 0;\n\n    this._destroyed.next();\n    this._destroyed.complete();\n\n    this._ariaDescriber.removeDescription(nativeElement, this.message, 'tooltip');\n    this._focusMonitor.stopMonitoring(nativeElement);\n  }\n\n  /** Shows the tooltip after the delay in ms, defaults to tooltip-delay-show or 0ms if no input */\n  show(delay: number = this.showDelay, origin?: { x: number; y: number }): void {\n    if (this.disabled || !this.message || this._isTooltipVisible()) {\n      this._tooltipInstance?._cancelPendingAnimations();\n      return;\n    }\n\n    const overlayRef = this._createOverlay(origin);\n    this._detach();\n    this._portal =\n      this._portal || new ComponentPortal(this._tooltipComponent, this._viewContainerRef);\n    const instance = (this._tooltipInstance = overlayRef.attach(this._portal).instance);\n    instance._triggerElement = this._elementRef.nativeElement;\n    instance._mouseLeaveHideDelay = this._hideDelay;\n    instance\n      .afterHidden()\n      .pipe(takeUntil(this._destroyed))\n      .subscribe(() => this._detach());\n    this._setTooltipClass(this._tooltipClass);\n    this._setTooltipErrorState();\n    this._setTooltipInversState();\n    this._updateTooltipMessage();\n    instance.show(delay);\n  }\n\n  /** Hides the tooltip after the delay in ms, defaults to tooltip-delay-hide or 0ms if no input */\n  hide(delay: number = this.hideDelay): void {\n    const instance = this._tooltipInstance;\n\n    if (instance) {\n      if (instance.isVisible()) {\n        instance.hide(delay);\n      } else {\n        instance._cancelPendingAnimations();\n        this._detach();\n      }\n    }\n  }\n\n  /** Shows/hides the tooltip */\n  toggle(origin?: { x: number; y: number }): void {\n    this._isTooltipVisible() ? this.hide() : this.show(undefined, origin);\n  }\n\n  /** Returns true if the tooltip is currently visible to the user */\n  _isTooltipVisible(): boolean {\n    return !!this._tooltipInstance && this._tooltipInstance.isVisible();\n  }\n\n  /** Create the overlay config and position strategy */\n  private _createOverlay(origin?: { x: number; y: number }): OverlayRef {\n    if (this._overlayRef) {\n      const existingStrategy = this._overlayRef.getConfig()\n        .positionStrategy as FlexibleConnectedPositionStrategy;\n\n      if ((!this.positionAtOrigin || !origin) && existingStrategy._origin instanceof ElementRef) {\n        return this._overlayRef;\n      }\n\n      this._detach();\n    }\n\n    const scrollableAncestors = this._scrollDispatcher.getAncestorScrollContainers(\n      this._elementRef\n    );\n\n    // Create connected position strategy that listens for scroll events to reposition.\n    const strategy = this._overlay\n      .position()\n      .flexibleConnectedTo(this.positionAtOrigin ? origin || this._elementRef : this._elementRef)\n      .withTransformOriginOn(`.${this._cssClassPrefix}-tooltip`)\n      .withFlexibleDimensions(false)\n      .withViewportMargin(this._viewportMargin)\n      .withScrollableContainers(scrollableAncestors);\n\n    strategy.positionChanges.pipe(takeUntil(this._destroyed)).subscribe(change => {\n      this._updateCurrentPositionClass(change.connectionPair);\n\n      if (this._tooltipInstance) {\n        if (change.scrollableViewProperties.isOverlayClipped && this._tooltipInstance.isVisible()) {\n          // After position changes occur and the overlay is clipped by\n          // a parent scrollable then close the tooltip.\n          this._ngZone.run(() => this.hide(0));\n        }\n      }\n    });\n\n    this._overlayRef = this._overlay.create({\n      direction: this._dir,\n      positionStrategy: strategy,\n      panelClass: `${this._cssClassPrefix}-${PANEL_CLASS}`,\n      scrollStrategy: this._scrollStrategy(),\n    });\n\n    this._updatePosition(this._overlayRef);\n\n    this._overlayRef\n      .detachments()\n      .pipe(takeUntil(this._destroyed))\n      .subscribe(() => this._detach());\n\n    this._overlayRef\n      .outsidePointerEvents()\n      .pipe(takeUntil(this._destroyed))\n      .subscribe(() => this._tooltipInstance?._handleBodyInteraction());\n\n    this._overlayRef\n      .keydownEvents()\n      .pipe(takeUntil(this._destroyed))\n      .subscribe(event => {\n        if (this._isTooltipVisible() && event.keyCode === ESCAPE && !hasModifierKey(event)) {\n          event.preventDefault();\n          event.stopPropagation();\n          this._ngZone.run(() => this.hide(0));\n        }\n      });\n\n    if (this._defaultOptions?.disableTooltipInteractivity) {\n      this._overlayRef.addPanelClass(`${this._cssClassPrefix}-tooltip-panel-non-interactive`);\n    }\n\n    return this._overlayRef;\n  }\n\n  /** Detaches the currently-attached tooltip. */\n  private _detach() {\n    if (this._overlayRef && this._overlayRef.hasAttached()) {\n      this._overlayRef.detach();\n    }\n\n    this._tooltipInstance = null;\n  }\n\n  /** Updates the position of the current tooltip. */\n  private _updatePosition(overlayRef: OverlayRef) {\n    const position = overlayRef.getConfig().positionStrategy as FlexibleConnectedPositionStrategy;\n    const origin = this._getOrigin();\n    const overlay = this._getOverlayPosition();\n\n    position.withPositions([\n      this._addOffset({ ...origin.main, ...overlay.main }),\n      this._addOffset({ ...origin.fallback, ...overlay.fallback }),\n    ]);\n  }\n\n  /** Adds the configured offset to a position. Used as a hook for child classes. */\n  protected _addOffset(position: ConnectedPosition): ConnectedPosition {\n    const offset = UNBOUNDED_ANCHOR_GAP;\n    const isLtr = !this._dir || this._dir.value == 'ltr';\n\n    if (position.originY === 'top') {\n      position.offsetY = -offset;\n    } else if (position.originY === 'bottom') {\n      position.offsetY = offset;\n    } else if (position.originX === 'start') {\n      position.offsetX = isLtr ? -offset : offset;\n    } else if (position.originX === 'end') {\n      position.offsetX = isLtr ? offset : -offset;\n    }\n\n    return position;\n  }\n\n  /**\n   * Returns the origin position and a fallback position based on the user's position preference.\n   * The fallback position is the inverse of the origin (e.g. `'below' -> 'above'`).\n   */\n  _getOrigin(): { main: OriginConnectionPosition; fallback: OriginConnectionPosition } {\n    const isLtr = !this._dir || this._dir.value == 'ltr';\n    const position = this.position;\n    let originPosition: OriginConnectionPosition;\n\n    if (position == 'top' || position == 'bottom') {\n      originPosition = { originX: 'center', originY: position == 'top' ? 'top' : 'bottom' };\n    } else if (\n      position == 'before' ||\n      (position == 'end' && isLtr) ||\n      (position == 'start' && !isLtr)\n    ) {\n      originPosition = { originX: 'start', originY: 'center' };\n    } else if (\n      position == 'after' ||\n      (position == 'start' && isLtr) ||\n      (position == 'end' && !isLtr)\n    ) {\n      originPosition = { originX: 'end', originY: 'center' };\n    }\n\n    const { x, y } = this._invertPosition(originPosition!.originX, originPosition!.originY);\n\n    return {\n      main: originPosition!,\n      fallback: { originX: x, originY: y },\n    };\n  }\n\n  /** Returns the overlay position and a fallback position based on the user's preference */\n  _getOverlayPosition(): { main: OverlayConnectionPosition; fallback: OverlayConnectionPosition } {\n    const isLtr = !this._dir || this._dir.value == 'ltr';\n    const position = this.position;\n    let overlayPosition: OverlayConnectionPosition;\n\n    if (position == 'top') {\n      overlayPosition = { overlayX: 'center', overlayY: 'bottom' };\n    } else if (position == 'bottom') {\n      overlayPosition = { overlayX: 'center', overlayY: 'top' };\n    } else if (\n      position == 'before' ||\n      (position == 'end' && isLtr) ||\n      (position == 'start' && !isLtr)\n    ) {\n      overlayPosition = { overlayX: 'end', overlayY: 'center' };\n    } else if (\n      position == 'after' ||\n      (position == 'start' && isLtr) ||\n      (position == 'end' && !isLtr)\n    ) {\n      overlayPosition = { overlayX: 'start', overlayY: 'center' };\n    }\n\n    const { x, y } = this._invertPosition(overlayPosition!.overlayX, overlayPosition!.overlayY);\n\n    return {\n      main: overlayPosition!,\n      fallback: { overlayX: x, overlayY: y },\n    };\n  }\n\n  /** Updates the tooltip message and repositions the overlay according to the new message length */\n  private _updateTooltipMessage() {\n    // Must wait for the message to be painted to the tooltip so that the overlay can properly\n    // calculate the correct positioning based on the size of the text.\n    if (this._tooltipInstance) {\n      this._tooltipInstance.message = this.message;\n      this._tooltipInstance._markForCheck();\n\n      afterNextRender(\n        () => {\n          if (this._tooltipInstance) {\n            this._overlayRef!.updatePosition();\n          }\n        },\n        {\n          injector: this._injector,\n        }\n      );\n    }\n  }\n\n  /** Updates the tooltip class */\n  private _setTooltipClass(tooltipClass: string | string[] | Set<string> | { [key: string]: any }) {\n    if (this._tooltipInstance) {\n      this._tooltipInstance.tooltipClass = tooltipClass;\n      this._tooltipInstance._markForCheck();\n    }\n  }\n\n  /** Updates the tooltip error state */\n  private _setTooltipErrorState() {\n    if (this._tooltipInstance) {\n      this._tooltipInstance.isError = this.isError;\n      this._tooltipInstance._markForCheck();\n    }\n  }\n\n    /** Updates the tooltip color */\n    private _setTooltipInversState() {\n      if (this._tooltipInstance) {\n        this._tooltipInstance.inverseColor = this.inverseColor;\n        this._tooltipInstance._markForCheck();\n      }\n    }\n\n  /** Inverts an overlay position. */\n  private _invertPosition(x: HorizontalConnectionPos, y: VerticalConnectionPos) {\n    if (this.position === 'top' || this.position === 'bottom') {\n      if (y === 'top') {\n        y = 'bottom';\n      } else if (y === 'bottom') {\n        y = 'top';\n      }\n    } else {\n      if (x === 'end') {\n        x = 'start';\n      } else if (x === 'start') {\n        x = 'end';\n      }\n    }\n\n    return { x, y };\n  }\n\n  /** Updates the class on the overlay panel based on the current position of the tooltip. */\n  private _updateCurrentPositionClass(connectionPair: ConnectionPositionPair): void {\n    const { overlayY, originX, originY } = connectionPair;\n    let newPosition: TooltipPosition;\n\n    // If the overlay is in the middle along the Y axis,\n    // it means that it's either before or after.\n    if (overlayY === 'center') {\n      // Note that since this information is used for styling, we want to\n      // resolve `start` and `end` to their real values, otherwise consumers\n      // would have to remember to do it themselves on each consumption.\n      if (this._dir && this._dir.value === 'rtl') {\n        newPosition = originX === 'end' ? 'end' : 'start';\n      } else {\n        newPosition = originX === 'start' ? 'end' : 'start';\n      }\n    } else {\n      newPosition = overlayY === 'bottom' && originY === 'top' ? 'top' : 'bottom';\n    }\n\n    if (newPosition !== this._currentPosition) {\n      const overlayRef = this._overlayRef;\n\n      if (overlayRef) {\n        const classPrefix = `${this._cssClassPrefix}-${PANEL_CLASS}-`;\n        overlayRef.removePanelClass(classPrefix + this._currentPosition);\n        overlayRef.addPanelClass(classPrefix + newPosition);\n      }\n\n      this._currentPosition = newPosition;\n    }\n  }\n\n  /** Binds the pointer events to the tooltip trigger. */\n  private _setupPointerEnterEventsIfNeeded() {\n    // Optimization: Defer hooking up events if there's no message or the tooltip is disabled.\n    if (\n      this._disabled ||\n      !this.message ||\n      !this._viewInitialized ||\n      this._passiveListeners.length\n    ) {\n      return;\n    }\n\n    // The mouse events shouldn't be bound on mobile devices, because they can prevent the\n    // first tap from firing its click event or can cause the tooltip to open for clicks.\n    if (this._platformSupportsMouseEvents()) {\n      this._passiveListeners.push([\n        'mouseenter',\n        event => {\n          this._setupPointerExitEventsIfNeeded();\n          let point = undefined;\n          if ((event as MouseEvent).x !== undefined && (event as MouseEvent).y !== undefined) {\n            point = event as MouseEvent;\n          }\n          this.show(undefined, point);\n        },\n      ]);\n    } else if (this.touchGestures !== 'off') {\n      this._disableNativeGesturesIfNecessary();\n\n      this._passiveListeners.push([\n        'touchstart',\n        event => {\n          const touch = (event as TouchEvent).targetTouches?.[0];\n          const origin = touch ? { x: touch.clientX, y: touch.clientY } : undefined;\n          // Note that it's important that we don't `preventDefault` here,\n          // because it can prevent click events from firing on the element.\n          this._setupPointerExitEventsIfNeeded();\n          if (this._touchstartTimeout) {\n            clearTimeout(this._touchstartTimeout);\n          }\n\n          const DEFAULT_LONGPRESS_DELAY = 500;\n          this._touchstartTimeout = setTimeout(() => {\n            this._touchstartTimeout = null;\n            this.show(undefined, origin);\n          }, this._defaultOptions?.touchLongPressShowDelay ?? DEFAULT_LONGPRESS_DELAY);\n        },\n      ]);\n    }\n\n    this._addListeners(this._passiveListeners);\n  }\n\n  private _setupPointerExitEventsIfNeeded() {\n    if (this._pointerExitEventsInitialized) {\n      return;\n    }\n    this._pointerExitEventsInitialized = true;\n\n    const exitListeners: (readonly [string, EventListenerOrEventListenerObject])[] = [];\n    if (this._platformSupportsMouseEvents()) {\n      exitListeners.push(\n        [\n          'mouseleave',\n          event => {\n            const newTarget = (event as MouseEvent).relatedTarget as Node | null;\n            if (!newTarget || !this._overlayRef?.overlayElement.contains(newTarget)) {\n              this.hide();\n            }\n          },\n        ],\n        ['wheel', event => this._wheelListener(event as WheelEvent)]\n      );\n    } else if (this.touchGestures !== 'off') {\n      this._disableNativeGesturesIfNecessary();\n      const touchendListener = () => {\n        if (this._touchstartTimeout) {\n          clearTimeout(this._touchstartTimeout);\n        }\n        this.hide(this._defaultOptions?.touchendHideDelay);\n      };\n\n      exitListeners.push(['touchend', touchendListener], ['touchcancel', touchendListener]);\n    }\n\n    this._addListeners(exitListeners);\n    this._passiveListeners.push(...exitListeners);\n  }\n\n  private _addListeners(listeners: (readonly [string, EventListenerOrEventListenerObject])[]) {\n    listeners.forEach(([event, listener]) => {\n      this._elementRef.nativeElement.addEventListener(event, listener, passiveListenerOptions);\n    });\n  }\n\n  private _platformSupportsMouseEvents() {\n    return !this._platform.IOS && !this._platform.ANDROID;\n  }\n\n  /** Listener for the `wheel` event on the element. */\n  private _wheelListener(event: WheelEvent) {\n    if (this._isTooltipVisible()) {\n      const elementUnderPointer = this._document.elementFromPoint(event.clientX, event.clientY);\n      const element = this._elementRef.nativeElement;\n\n      // On non-touch devices we depend on the `mouseleave` event to close the tooltip, but it\n      // won't fire if the user scrolls away using the wheel without moving their cursor. We\n      // work around it by finding the element under the user's cursor and closing the tooltip\n      // if it's not the trigger.\n      if (elementUnderPointer !== element && !element.contains(elementUnderPointer)) {\n        this.hide();\n      }\n    }\n  }\n\n  /** Disables the native browser gestures, based on how the tooltip has been configured. */\n  private _disableNativeGesturesIfNecessary() {\n    const gestures = this.touchGestures;\n\n    if (gestures !== 'off') {\n      const element = this._elementRef.nativeElement;\n      const style = element.style;\n\n      // If gestures are set to `auto`, we don't disable text selection on inputs and\n      // textareas, because it prevents the user from typing into them on iOS Safari.\n      if (gestures === 'on' || (element.nodeName !== 'INPUT' && element.nodeName !== 'TEXTAREA')) {\n        style.userSelect =\n          (style as any).msUserSelect =\n          style.webkitUserSelect =\n          (style as any).MozUserSelect =\n            'none';\n      }\n\n      // If we have `auto` gestures and the element uses native HTML dragging,\n      // we don't set `-webkit-user-drag` because it prevents the native behavior.\n      if (gestures === 'on' || !element.draggable) {\n        (style as any).webkitUserDrag = 'none';\n      }\n\n      style.touchAction = 'none';\n      (style as any).webkitTapHighlightColor = 'transparent';\n    }\n  }\n\n  /** Updates the tooltip's ARIA description based on it current state. */\n  private _syncAriaDescription(oldMessage: string): void {\n    if (this._ariaDescriptionPending) {\n      return;\n    }\n\n    this._ariaDescriptionPending = true;\n    this._ariaDescriber.removeDescription(this._elementRef.nativeElement, oldMessage, 'tooltip');\n\n    this._ngZone.runOutsideAngular(() => {\n      // The `AriaDescriber` has some functionality that avoids adding a description if it's the\n      // same as the `aria-label` of an element, however we can't know whether the tooltip trigger\n      // has a data-bound `aria-label` or when it'll be set for the first time. We can avoid the\n      // issue by deferring the description by a tick so Angular has time to set the `aria-label`.\n      Promise.resolve().then(() => {\n        this._ariaDescriptionPending = false;\n\n        if (this.message && !this.disabled) {\n          this._ariaDescriber.describe(this._elementRef.nativeElement, this.message, 'tooltip');\n        }\n      });\n    });\n  }\n}\n","import { Component, Input, ViewEncapsulation } from '@angular/core';\n\nexport type LoadingColor =\n  | 'primary'\n  | 'secondary'\n  | 'danger'\n  | 'default'\n  | 'onPrimary'\n  | 'onSecondary'\n  | 'onDanger';\nexport type LoadingSize = 'small' | 'normal' | 'large';\n@Component({\n  selector: 'ui-loading',\n  templateUrl: './loading.component.html',\n  styleUrls: ['./loading.component.scss'],\n})\nexport class LoadingComponent {\n  @Input() color: LoadingColor = 'default';\n  @Input() size: LoadingSize = 'normal';\n}\n","<span\n  class=\"dots-loading\"\n  [ngClass]=\"{\n    'dots-loading--primary': color === 'primary',\n    'dots-loading--secondary': color === 'secondary',\n    'dots-loading--danger': color === 'danger',\n    'dots-loading--default': color === 'default',\n    'dots-loading--on-primary': color === 'onPrimary',\n    'dots-loading--on-secondary': color === 'onSecondary',\n    'dots-loading--on-danger': color === 'onDanger',\n    'dots-loading--small': size === 'small',\n    'dots-loading--normal': size === 'normal',\n    'dots-loading--large': size === 'large'\n  }\"\n>\n  <span class=\"dots-loading__bullet\"></span>\n</span>\n","import {\n  Component,\n  EventEmitter,\n  Input,\n  OnChanges,\n  OnInit,\n  Output,\n  SimpleChanges,\n  TemplateRef,\n  ViewEncapsulation,\n} from '@angular/core';\nimport { ButtonColors } from '../../../enums/button-colors';\nimport { ButtonVarients } from '../../../enums/button-varients';\nimport { ButtonVariantType } from '../../../types/button-variant.type';\nimport { ButtonColorType } from '../../../types/button-color.type';\nimport { SizeType } from '../../../types/size.type';\n\n@Component({\n  selector: 'ui-button',\n  templateUrl: './button.component.html',\n  styleUrls: ['./button.component.scss'],\n  encapsulation: ViewEncapsulation.None,\n})\nexport class ButtonComponent implements OnInit, OnChanges {\n  @Input() idAttr?: string;\n  @Input() buttonType?: string;\n  @Input() title?: string;\n  @Input() size?: SizeType;\n  @Input() color?: ButtonColorType | ButtonColors;\n  @Input() varient?: ButtonVariantType | ButtonVarients;\n  @Input() isIcon?: boolean;\n  @Input() disabled?: boolean;\n  @Input() matchParent?: boolean;\n  @Input() tagName?: 'button' | 'label' | 'button-group' = 'button';\n  @Input() for?: string;\n  @Input() tabIndex?: number;\n  @Input() loading: boolean = false;\n  @Input() form?: string;\n  @Input() groupTemplate: TemplateRef<any>;\n\n  @Output() clickCallback: EventEmitter<any> = new EventEmitter();\n  @Output() mouseDownCallback: EventEmitter<any> = new EventEmitter();\n\n  modifierClassNames: string;\n\n  public get ButtonColors(): typeof ButtonColors {\n    return ButtonColors;\n  }\n\n  public get ButtonVarients(): typeof ButtonVarients {\n    return ButtonVarients;\n  }\n\n  clickHandler($event: any) {\n    if (this.loading || this.disabled) return;\n    this.clickCallback.emit($event);\n  }\n\n  mouseDownHandler($event: any) {\n    this.mouseDownCallback.emit($event);\n  }\n\n  constructor() {}\n\n  ngOnInit(): void {}\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (\n      changes['varient'] ||\n      changes['color'] ||\n      changes['size'] ||\n      changes['matchParent'] ||\n      changes['isIcon']\n    ) {\n      this.modifierClassNames = this.generateClassNames();\n    }\n  }\n\n  private generateClassNames() {\n    const output: string[] = [];\n\n    if (this.varient && this.color) {\n      output.push(`button--${this.varient}-${this.color}`);\n    } else {\n      output.push(`button--default`);\n    }\n\n    if (this.size) {\n      output.push('button--size-' + this.size);\n    }\n\n    if (this.matchParent) {\n      output.push('button--match-parent');\n    }\n\n    if (this.isIcon) {\n      output.push('button--icon');\n    }\n\n    return output.join(' ');\n  }\n}\n","<ng-template #content>\n  <ui-loading class=\"button__loading\" *ngIf=\"loading\"></ui-loading>\n  <ng-content></ng-content>\n</ng-template>\n\n<button\n  *ngIf=\"tagName == 'button'\"\n  [attr.id]=\"idAttr\"\n  [attr.class]=\"'button ' + modifierClassNames\"\n  [attr.type]=\"buttonType\"\n  [appTooltip]=\"title\"\n  [appTooltipPosition]=\"'bottom'\"\n  [attr.form]=\"form\"\n  (click)=\"clickHandler($event)\"\n  (mousedown)=\"mouseDownHandler($event)\"\n  [disabled]=\"disabled\"\n  [attr.tabIndex]=\"tabIndex\"\n>\n  <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n</button>\n<label\n  *ngIf=\"tagName == 'label'\"\n  [attr.id]=\"idAttr\"\n  [attr.for]=\"for\"\n  [class]=\"'button ' + modifierClassNames\"\n  [attr.type]=\"buttonType\"\n  [appTooltip]=\"title\"\n  [appTooltipPosition]=\"'bottom'\"\n  (click)=\"clickHandler($event)\"\n  (mousedown)=\"mouseDownHandler($event)\"\n  [attr.disabled]=\"disabled\"\n>\n  <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n</label>\n\n<div class=\"button-group\" *ngIf=\"tagName === 'button-group'\">\n  <button\n    type=\"button\"\n    [attr.id]=\"idAttr\"\n    [attr.class]=\"'button button__button-group__main ' + modifierClassNames\"\n    [attr.type]=\"buttonType\"\n    [appTooltip]=\"title\"\n    [appTooltipPosition]=\"'bottom'\"\n    [attr.form]=\"form\"\n    (click)=\"clickHandler($event)\"\n    (mousedown)=\"mouseDownHandler($event)\"\n    [disabled]=\"disabled\"\n    [attr.tabIndex]=\"tabIndex\"\n    #mainButton\n  >\n    <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n  </button>\n  <button\n    *ngIf=\"groupTemplate\"\n    type=\"button\"\n    [disabled]=\"disabled || loading\"\n    [attr.class]=\"'button button__button-group__toggle ' + modifierClassNames\"\n    [dropdownTriggerFor]=\"buttongroupmenu\"\n    [connectedTo]=\"mainButton\"\n  >\n    <ui-fararu-icon [name]=\"'arrow-bottom'\"> </ui-fararu-icon>\n  </button>\n  <ui-dropdown class=\"button__button-group__menu\" #buttongroupmenu [tabIndex]=\"-1\" [hidden]=\"true\">\n    <ng-container [ngTemplateOutlet]=\"groupTemplate\"></ng-container>\n  </ui-dropdown>\n</div>\n\n<!-- (click)=\"buttongroupmenu.classList.toggle('button__button-group__menu--show')\" -->\n<!-- <div class=\"button__button-group__menu\" #buttongroupmenu>\n      <ng-container [ngTemplateOutlet]=\"groupTemplate\"></ng-container>\n    </div> -->\n","import { Component, Input } from '@angular/core';\nimport { IconNameType } from '../../../../types/icon-name.type';\n\n@Component({\n  selector: 'ui-note-icon',\n  templateUrl: './note-icon.component.html',\n  styleUrls: ['./note-icon.component.scss'],\n})\nexport class NoteIconComponent {\n  @Input() icon: IconNameType;\n  @Input() type: 'primary' | 'success' | 'error' | 'warning' | 'alert' | 'info';\n  @Input() size?: 'small' | 'normal' | 'large';\n}\n","<ui-fararu-icon\n  class=\"fararu-note-icon\"\n  [class.fararu-note-icon--primary]=\"type === 'primary'\"\n  [class.fararu-note-icon--success]=\"type === 'success'\"\n  [class.fararu-note-icon--error]=\"type === 'error'\"\n  [class.fararu-note-icon--warning]=\"type === 'warning'\"\n  [class.fararu-note-icon--alert]=\"type === 'alert'\"\n  [class.fararu-note-icon--info]=\"type === 'info'\"\n  [class.fararu-note-icon--size-small]=\"size === 'small'\"\n  [class.fararu-note-icon--size-normal]=\"size === 'normal'\"\n  [name]=\"icon\"\n  [size]=\"size == 'small' ? 'x1' : size == 'normal' ? 'x3' : 'x5'\"\n  [color]=\"type || 'content-secondary'\"\n></ui-fararu-icon>\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { NoteIconComponent } from '../../molecules/note-icon/note-icon.component';\nimport { SafeHtml } from '@angular/platform-browser';\n\n@Component({\n  selector: 'ui-note',\n  templateUrl: './note.component.html',\n  styleUrls: ['./note.component.scss'],\n})\nexport class NoteComponent extends NoteIconComponent {\n  @Input() title?: string;\n  @Input() description?: string | SafeHtml;\n  @Input() showCloseButton?: boolean;\n  @Input() link?: string;\n  @Input() linkText?: string;\n\n  @Output() closeButtonClickCallback = new EventEmitter<Event>();\n}\n","<section class=\"fararu-note\">\n  <div\n    class=\"fararu-note__container\"\n    [class.fararu-note__container--align-center]=\"!title && description\"\n  >\n    <ui-note-icon *ngIf=\"icon\" [icon]=\"icon\" [type]=\"type\"></ui-note-icon>\n    <div class=\"fararu-note__content\">\n      <div class=\"fararu-note__text-row\" *ngIf=\"title\">\n        <h2 class=\"fararu-note__title\">{{ title }}</h2>\n        <ng-continer *ngTemplateOutlet=\"closeButtonTemplate\"></ng-continer>\n      </div>\n      <div class=\"fararu-note__text-row\" *ngIf=\"description\">\n        <p class=\"fararu-note__description\" [innerHTML]=\"description\"></p>\n      </div>\n      <a class=\"fararu-note__link\" *ngIf=\"link\" [href]=\"link\" target=\"_blank\">{{\n        linkText || link\n      }}</a>\n    </div>\n    <ng-container *ngIf=\"!title\">\n      <ng-continer *ngTemplateOutlet=\"closeButtonTemplate\"></ng-continer>\n    </ng-container>\n  </div>\n  <ng-content></ng-content>\n</section>\n\n<ng-template #closeButtonTemplate>\n  <ui-fararu-icon\n    *ngIf=\"showCloseButton\"\n    class=\"fararu-note__button\"\n    [name]=\"'close'\"\n    [color]=\"'content-secondary'\"\n    (click)=\"closeButtonClickCallback.emit($event)\"\n  ></ui-fararu-icon>\n</ng-template>\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { IconNameType } from '../../../types';\nimport { DialogType } from '../dialog.type';\n\n@Pipe({\n  name: 'dialogIconName',\n})\nexport class DialogIconNamePipe implements PipeTransform {\n  transform(value: DialogType): IconNameType | undefined {\n    switch (value) {\n      case 'success':\n        return 'success';\n\n      case 'error':\n        return 'error';\n\n      case 'delete':\n        return 'delete';\n\n      case 'warning':\n        return 'warning';\n\n      case 'info':\n        return 'info';\n\n      default:\n        return undefined;\n    }\n  }\n}\n","import { Component, Input } from '@angular/core';\nimport { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap';\nimport { AlertInterface } from '../alert.interface';\nimport { IconNameType } from '../../../types/icon-name.type';\n\n@Component({\n  selector: 'app-alert',\n  templateUrl: './alert.component.html',\n  styleUrls: ['./alert.component.scss'],\n})\nexport class AlertComponent {\n  @Input() title?: string;\n  @Input() description?: string;\n  @Input() buttonText?: string;\n  @Input() type?: AlertInterface['type'];\n  @Input() link?: string;\n  @Input() linkText?: string;\n  @Input() icon?: IconNameType;\n\n  constructor(private activeModal: NgbActiveModal) {}\n\n  handleClose(state?: boolean) {\n    this.activeModal.close(state);\n  }\n}\n","<ui-note\n  [title]=\"title\"\n  [description]=\"description\"\n  [showCloseButton]=\"true\"\n  [icon]=\"icon || (type | dialogIconName)\"\n  [type]=\"type == 'delete' ? 'error' : type\"\n  [link]=\"link\"\n  [likeText]=\"linkText\"\n  (closeButtonClickCallback)=\"handleClose()\"\n>\n  <footer class=\"fararu-alert__footer\">\n    <ui-button varient=\"outline\" color=\"secondary\" (clickCallback)=\"handleClose(true)\">{{\n      buttonText || ('btns_text.ok' | translate)\n    }}</ui-button>\n  </footer>\n</ui-note>\n","import {\n  AfterViewInit,\n  Directive,\n  ElementRef,\n  HostListener,\n  Injectable,\n  Input,\n  OnDestroy,\n} from '@angular/core';\nimport { findLastIndex } from 'lodash';\n\n@Injectable({ providedIn: 'root' })\nexport class ShortcutListenersService {\n  private elements: { shortCut: string; element: ElementRef }[] = [];\n\n  addElement(shortCut: string, element: ElementRef): void {\n    if (!shortCut) return;\n    this.elements.push({ shortCut, element });\n  }\n\n  getLastElement(shortCut: string): ElementRef | undefined {\n    const index = findLastIndex(\n      this.elements,\n      (item) => item.shortCut == shortCut\n    );\n    if (index >= 0) {\n      const lastItem = this.elements[index];\n      return lastItem.element;\n    }\n    return undefined;\n  }\n\n  removeLastElement(shortCut: string) {\n    const index = findLastIndex(\n      this.elements,\n      (item) => item.shortCut == shortCut\n    );\n    if (index > 0) {\n      this.elements.splice(index, 1)[0];\n    }\n  }\n\n  removeElement(shortCut: string, elementRef: ElementRef) {\n    const index = findLastIndex(\n      this.elements,\n      (item) => item.shortCut == shortCut && item.element == elementRef\n    );\n    if (index > 0) {\n      this.elements.splice(index, 1)[0];\n    }\n  }\n}\n\n@Directive({\n  selector: '[appShortcut]',\n})\nexport class ShortcutDirective implements AfterViewInit, OnDestroy {\n  @Input('appShortcut') appShortcut: string;\n\n  constructor(\n    private elementRef: ElementRef,\n    private service: ShortcutListenersService\n  ) {}\n\n  ngOnDestroy(): void {\n    this.service.removeElement(this.appShortcut, this.elementRef);\n  }\n\n  ngAfterViewInit(): void {\n    this.service.addElement(this.appShortcut, this.elementRef);\n  }\n\n  @HostListener('document:keydown', ['$event'])\n  keydownHandler(event: KeyboardEvent) {\n    if (!this.appShortcut) return;\n    const inputKeys = this.appShortcut\n      .replace(/\\s+/g, '')\n      .split('+')\n      .map((x) => x.toLowerCase());\n    const keys: string[] = [];\n\n    if (!['Control', 'Shift', 'Alt'].includes(event.key)) {\n      keys.push(event.code.replace('Key', '').toLowerCase());\n    }\n    if (event.ctrlKey) {\n      keys.push('control');\n    }\n    if (event.altKey) {\n      keys.push('alt');\n    }\n    if (event.shiftKey) {\n      keys.push('shift');\n    }\n\n    if (this.isEqual(inputKeys.sort(), keys.sort())) {\n      event.preventDefault();\n      const element = this.elementRef.nativeElement;\n      const lastElement = this.service.getLastElement(this.appShortcut);\n      if (lastElement != undefined && this.elementRef !== lastElement) return;\n\n      if (element.tagName.toLowerCase() == 'ui-button') {\n        const button = element.querySelector('button');\n        if (button) {\n          this.fireElementClick(button);\n        } else {\n          this.fireElementClick(element.querySelector('label'));\n        }\n      } else {\n        this.fireElementClick(element);\n      }\n\n      // this.service.removeLastElement(this.appShortcut);\n    }\n  }\n\n  private fireElementClick(element: HTMLElement) {\n    const styles = getComputedStyle(element);\n    if (!styles.display || styles.display.toLowerCase() == 'none') return;\n    element.click();\n  }\n\n  private isEqual(a: string[], b: string[]) {\n    return a.length == b.length && a.join('+') === b.join('+');\n  }\n}\n","import { Component, Input, OnInit, ViewEncapsulation } from '@angular/core';\nimport { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap';\nimport { ConfirmInterface } from '../confirm.interface';\nimport { IconNameType } from '../../../types/icon-name.type';\n\n@Component({\n  selector: 'app-confirm',\n  templateUrl: './confirm.component.html',\n  styleUrls: ['./confirm.component.scss'],\n  encapsulation: ViewEncapsulation.None,\n})\nexport class ConfirmComponent implements OnInit {\n  @Input() title: string;\n  @Input() description: string;\n  @Input() acceptText: string;\n  @Input() declineText: string;\n  @Input() type?: ConfirmInterface['type'];\n  @Input() icon?: IconNameType;\n\n  constructor(private activeModal: NgbActiveModal) {}\n\n  ngOnInit() {}\n\n  handleClose(state?: boolean) {\n    this.activeModal.close(state);\n  }\n}\n","<ui-note\n  [title]=\"title\"\n  [description]=\"description\"\n  [showCloseButton]=\"true\"\n  [icon]=\"icon || (type | dialogIconName)\"\n  [type]=\"type == 'delete' ? 'error' : type\"\n  (closeButtonClickCallback)=\"handleClose()\"\n>\n  <footer class=\"fararu-confirm__footer\">\n    <ui-button\n      [matchParent]=\"true\"\n      [appShortcut]=\"'enter'\"\n      [varient]=\"'fill'\"\n      [color]=\"type == 'error' || type == 'delete' ? 'danger' : 'primary'\"\n      (clickCallback)=\"handleClose(true)\"\n      >{{\n        acceptText || ((type == 'delete' ? 'btns_text.delete' : 'btns_text.confirm') | translate)\n      }}</ui-button\n    >\n    <ui-button\n      [matchParent]=\"true\"\n      [appShortcut]=\"'escape'\"\n      [varient]=\"'outline'\"\n      [color]=\"'secondary'\"\n      (clickCallback)=\"handleClose(false)\"\n      >{{ declineText || ('btns_text.cancel' | translate) }}</ui-button\n    >\n  </footer>\n</ui-note>\n","import { Injectable, Type } from '@angular/core';\nimport { NgbModal } from '@ng-bootstrap/ng-bootstrap';\nimport { AlertInterface } from './alert.interface';\nimport { AlertComponent } from './alert/alert.component';\nimport { ConfirmInterface } from './confirm.interface';\nimport { ConfirmComponent } from './confirm/confirm.component';\nimport { ModalSizeEnum } from './modal-size-enum';\nimport { ModalSizeType } from './modal-size.type';\n\ntype SizeType = ModalSizeEnum | ModalSizeType;\n\n@Injectable({ providedIn: 'root' })\nexport class ModalService {\n  constructor(private modalService: NgbModal) {}\n\n  openT<T>(\n    content: Type<ModalComponentInterface<T>>,\n    size: SizeType,\n    data: T,\n    backdrop?: 'static' | 'removal',\n    modalComponentInstance?: { instance: any }\n  ): Promise<any> {\n    return this.openModal(true, content, size, data, backdrop, modalComponentInstance);\n  }\n\n  open(\n    content: any,\n    size: SizeType,\n    data?: any,\n    backdrop: 'static' | 'removal' = 'static',\n    modalComponentInstance?: { instance: any }\n  ): Promise<any> {\n    return this.openModal(false, content, size, data, backdrop, modalComponentInstance);\n  }\n\n  private openModal(\n    generic: boolean,\n    content: any,\n    size: SizeType,\n    data?: any,\n    backdrop: 'static' | 'removal' = 'static',\n    modalComponentInstance?: { instance: any },\n    modalDialogClass?: string,\n    backdropClass?: string,\n    windowClass?: string\n  ): Promise<any> {\n    const modalRef = this.modalService.open(content, {\n      centered: true,\n      size: size,\n      backdrop: backdrop == 'removal' ? true : 'static',\n      modalDialogClass: modalDialogClass,\n      backdropClass: backdropClass,\n      windowClass: 'modal-content-dialog-class ' + windowClass,\n    });\n    if (data) {\n      if (generic) {\n        modalRef.componentInstance.data = data;\n      } else {\n        for (let fld in data) {\n          modalRef.componentInstance[fld] = data[fld];\n        }\n      }\n    }\n    if (modalComponentInstance) modalComponentInstance.instance = modalRef.componentInstance;\n    return new Promise<any>((resolve, reject) => {\n      modalRef.result.then(\n        result => {\n          resolve(result);\n        },\n        reason => {\n          reject(reason);\n        }\n      );\n    });\n  }\n\n  showConfirm(params: ConfirmInterface) {\n    return this.openModal(\n      false,\n      ConfirmComponent,\n      'sm',\n      params,\n      'static',\n      undefined,\n      'modal-dialog-confirm',\n      'modal-dialog-confirm-backdrop',\n      'modal-dialog-confirm-content'\n    );\n  }\n\n  showAlert(params: AlertInterface) {\n    return this.openModal(\n      false,\n      AlertComponent,\n      'md',\n      params,\n      'static',\n      undefined,\n      'modal-dialog-alert',\n      'modal-dialog-alert-backdrop',\n      'modal-dialog-alert-content'\n    );\n  }\n}\n\nexport interface ModalComponentInterface<T> {\n  data: T;\n}\n","import { HttpClient, HttpHeaders, HttpParams } from '@angular/common/http';\nimport { Injectable, inject } from '@angular/core';\nimport { Observable, exhaustMap, from, lastValueFrom, map, of } from 'rxjs';\nimport {\n  CheckWarningResponse,\n  generateInformationMessage,\n  generateWarningMessage,\n  SaveBody,\n  SaveBodyV2,\n  SaveResponse,\n  SaveResult,\n} from '../models/general-save-result.interface';\nimport { ModalService } from '../design-systems/modal/modal.service';\nimport { HttpHeaderNames } from '../constants/http-header-names';\n\nexport function CheckWarning(target: any, propertyKey: string) {\n  target[propertyKey];\n}\n\n@Injectable({ providedIn: 'root' })\nexport class GeneralSaveApi {\n  constructor(private http: HttpClient, private modalService: ModalService) {}\n\n  save(\n    url: string,\n    data: SaveBody,\n    saveReason?: number,\n    fetchReason?: number,\n    extraHeaders?: HttpHeaders,\n    extraParams?: HttpParams\n  ): Observable<SaveResponse> {\n    let headers = new HttpHeaders();\n    if (extraHeaders) headers = extraHeaders;\n    if (fetchReason != null && fetchReason != undefined)\n      headers.append(HttpHeaderNames.FETCH_REASON, fetchReason.toString());\n\n    let params = new HttpParams();\n    if (extraParams) params = extraParams;\n    if (saveReason != null && saveReason != undefined) params.append('saveReason', saveReason);\n\n    return this.http.post(url, data, { headers, params }).pipe(\n      exhaustMap((result: any) => {\n        if (result.hasWarning) {\n          return from(\n            this.modalService\n              .showConfirm({\n                description: generateWarningMessage(result),\n                acceptText: 'تایید',\n                declineText: 'انصراف',\n                type: 'warning',\n                title: 'هشدار',\n              })\n              .then(() => {\n                return this.http\n                  .post(url, {\n                    ...data,\n                    CheckWarning: 0,\n                  })\n                  .pipe(\n                    exhaustMap((result: any) =>\n                      of({\n                        ...result,\n                        information: generateInformationMessage(result),\n                      })\n                    )\n                  );\n              })\n              .catch(() => {\n                return of();\n              })\n          );\n        } else\n          return of({\n            ...result,\n            information: result.informations\n              .map((i: any) => `${i.informationMessage} \\n `)\n              .reduce((p: any, c: any) => p + '\\n\\n' + c),\n          });\n      })\n    );\n  }\n\n  saveV2<T = any>(\n    url: string,\n    data: SaveBodyV2<T>,\n    fetchReason?: number,\n    extraHeaders?: HttpHeaders,\n    extraParams?: HttpParams,\n    saveAfterWarning?: boolean\n  ): Observable<SaveResponse> {\n    const body = { ...data, collection: { ...data.collection } };\n    if (saveAfterWarning == undefined) saveAfterWarning = true;\n    let headers = new HttpHeaders();\n    if (extraHeaders) headers = extraHeaders;\n    if (fetchReason != null && fetchReason != undefined)\n      headers.append(HttpHeaderNames.FETCH_REASON, fetchReason.toString());\n\n    if (body.collection.checkWarning == null && body.collection.CheckWarning == null)\n      body.collection.checkWarning = 1;\n\n    if (body.collection.CheckWarning == 1) body.collection.checkWarning = 1;\n\n    return this.http.post<SaveResult>(url, body, { headers, params: extraParams }).pipe(\n      exhaustMap((result: SaveResult) => {\n        if (result.hasWarning) {\n          return from(\n            this.modalService\n              .showConfirm({\n                description: generateWarningMessage(result),\n                acceptText: 'تایید',\n                declineText: 'انصراف',\n                type: 'warning',\n                title: 'هشدار',\n              })\n              .then(res => {\n                if (res) {\n                  // Confirmed By User\n                  if (saveAfterWarning)\n                    return lastValueFrom(\n                      this.http\n                        .post(url, {\n                          ...body,\n                          collection: { ...body.collection, checkWarning: 0, CheckWarning: 0 },\n                        })\n                        .pipe(\n                          exhaustMap((result: any) =>\n                            of({\n                              ...result,\n                              message: generateInformationMessage(result),\n                              informations: result.informations,\n                              canceledByUser: false,\n                              confirmedByUser: true,\n                              saved: true,\n                            })\n                          )\n                        )\n                    );\n                  else\n                    return {\n                      ...result,\n                      message: '',\n                      informations: [],\n                      canceledByUser: false,\n                      confirmedByUser: true,\n                      saved: false,\n                    };\n                } // canceled by user\n                else\n                  return {\n                    ...result,\n                    message: '',\n                    informations: [],\n                    canceledByUser: true,\n                    confirmedByUser: false,\n                    saved: false,\n                  };\n              })\n              .catch(() => {\n                return {\n                  ...result,\n                  message: '',\n                  informations: [],\n                  canceledByUser: true,\n                  confirmedByUser: false,\n                  saved: false,\n                };\n              })\n          );\n        } // No warning saved successfully\n        else\n          return of({\n            ...result,\n            message: generateInformationMessage(result),\n            informations: result.informations,\n            canceledByUser: false,\n            confirmedByUser: false,\n            saved: true,\n          });\n      })\n    );\n  }\n\n  chechWarningV2(\n    url: string,\n    data: SaveBodyV2,\n    fetchReason?: number,\n    extraHeaders?: HttpHeaders,\n    extraParams?: HttpParams\n  ): Observable<CheckWarningResponse> {\n    const body = { ...data, collection: { ...data.collection } };\n    let headers = new HttpHeaders();\n    if (extraHeaders) headers = extraHeaders;\n    if (fetchReason != null && fetchReason != undefined)\n      headers.append(HttpHeaderNames.FETCH_REASON, fetchReason.toString());\n\n    if (body.collection.checkWarning == null && body.collection.CheckWarning == null)\n      body.collection.checkWarning = 1;\n\n    if (body.collection.CheckWarning == 1) body.collection.checkWarning = 1;\n\n    return this.http.post<SaveResult>(url, body, { headers, params: extraParams }).pipe(\n      exhaustMap((result: SaveResult) => {\n        if (result.hasWarning) {\n          return from(\n            this.modalService\n              .showAlert({\n                description: generateWarningMessage(result),\n                type: 'warning',\n                title: 'هشدار',\n              })\n              .then(res => {\n                // Confirmed By User\n                return {\n                  ...result,\n                  message: '',\n                };\n              })\n              .catch(() => {\n                return {\n                  ...result,\n                  message: '',\n                  informations: [],\n                };\n              })\n          );\n        } else\n          return of({\n            ...result,\n            message: generateInformationMessage(result),\n          });\n      })\n    );\n  }\n}\n","import { Component, Input } from '@angular/core';\n\n@Component({\n  selector: 'ui-key-value',\n  templateUrl: './key-value.component.html',\n  styleUrls: ['./key-value.component.scss'],\n})\nexport class KeyValueComponent {\n  @Input() key: string;\n  @Input() value: string | number;\n  @Input() keyTooltip: string;\n  @Input() valueTooltip: string;\n  @Input() type?: 'horizontal' | 'vertical' = 'horizontal';\n  @Input() hideSeparator?: boolean;\n\n  isNumber(val): boolean {\n    return typeof val === 'number'; \n  }\n}\n","<span class=\"key-value\" [class.key-value--vertical]=\"type === 'vertical'\">\n  <small class=\"key-value__title\" [appTooltip]=\"keyTooltip ?? key | translate\">\n    {{ key | translate }}{{ !hideSeparator ? ' : ' : '' }}\n  </small>\n  <strong\n    class=\"key-value__content\"\n    [appTooltip]=\"valueTooltip ?? (value != null ? value.toString() : '')\"\n    [dir]=\"isNumber(value) ? 'ltr' : 'rtl'\"\n  >\n    {{ value }}\n  </strong>\n</span>\n","import {\n  Component,\n  EventEmitter,\n  forwardRef,\n  Input,\n  OnInit,\n  Output,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { SizeType } from '../../../../types/size.type';\n\n@Component({\n  selector: 'ui-switch',\n  templateUrl: './switch.component.html',\n  styleUrls: ['./switch.component.scss'],\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => SwitchComponent),\n      multi: true,\n    },\n  ],\n})\nexport class SwitchComponent implements OnInit, ControlValueAccessor {\n  @Input() value: string;\n  @Input() name: string;\n  @Input() text: string;\n  @Input() checked: boolean;\n  @Input() disabled: boolean;\n  @Input() size?: SizeType;\n  @Input() id?: string;\n\n  @Output() changeCallback = new EventEmitter<boolean>();\n\n  constructor() {}\n\n  ngOnInit() {}\n\n  onChangeFn = (_: any) => {};\n  onTouchedFn = () => {};\n\n  change(value: boolean) {\n    this.onChangeFn(value);\n    this.changeCallback.emit(value);\n  }\n\n  writeValue(value: boolean) {\n    this.checked = value;\n  }\n\n  registerOnChange(fn: any): void {\n    this.onChangeFn = fn;\n  }\n\n  registerOnTouched(fn: any): void {\n    this.onTouchedFn = fn;\n  }\n\n  setDisabledState(isDisabled: boolean): void {\n    this.disabled = isDisabled;\n  }\n}\n","<div>\n  <label\n    class=\"ui-switch\"\n    [class.ui-switch--large]=\"size === 'large'\"\n    [class.ui-switch--small]=\"size === 'small'\"\n    [class.ui-switch--disabled]=\"disabled\"\n  >\n    <input\n      class=\"ui-switch__element\"\n      #chk\n      type=\"checkbox\"\n      [attr.id]=\"id\"\n      [attr.name]=\"name\"\n      [attr.value]=\"value\"\n      [checked]=\"checked\"\n      [disabled]=\"disabled\"\n      (change)=\"change(chk.checked)\"\n    />\n    <span class=\"ui-switch__rail\"></span>\n    <span class=\"ui-switch__text\" *ngIf=\"text\">{{ text }}</span>\n    <ng-content></ng-content>\n  </label>\n</div>\n","import { Component, ElementRef, Input, ViewChild } from '@angular/core';\nimport { PositionType } from '../../../../types/position.type';\n\n@Component({\n  selector: 'ui-tooltip',\n  templateUrl: './tooltip.component.html',\n  styleUrls: ['./tooltip.component.scss'],\n})\nexport class TooltipComponent {\n  @Input() title: string;\n  @Input() position?: PositionType;\n  @Input() show?: boolean;\n  @Input() top?: string;\n  @Input() left?: string;\n  @Input() transform?: string;\n  @Input() inverseColor?: boolean;\n  @Input() isError?: boolean;\n\n  @ViewChild('tooltipRef', { static: false })\n  tooltipRef: ElementRef<HTMLSpanElement>;\n\n  constructor() {}\n\n  getWidth() {\n    return this.tooltipRef.nativeElement.offsetWidth;\n  }\n\n  getHeight() {\n    return this.tooltipRef.nativeElement.offsetHeight;\n  }\n}\n","<span\n  *ngIf=\"title\"\n  #tooltipRef\n  class=\"fararu-tooltip\"\n  [class.fararu-tooltip--top]=\"position === 'top'\"\n  [class.fararu-tooltip--bottom]=\"position === 'bottom'\"\n  [class.fararu-tooltip--start]=\"position === 'start'\"\n  [class.fararu-tooltip--end]=\"position === 'end'\"\n  [class.fararu-tooltip--show]=\"show\"\n  [class.fararu-tooltip--fixed]=\"top || left\"\n  [class.fararu-tooltip--inverse-color]=\"inverseColor\"\n  [class.fararu-tooltip--has-error]=\"isError\"\n  [style.top]=\"top\"\n  [style.left]=\"left\"\n  [style.transform]=\"transform\"\n  >{{ title }}</span\n>\n","import {\n  AfterViewInit,\n  Component,\n  ElementRef,\n  Input,\n  OnChanges,\n  SimpleChanges,\n  ViewChild,\n} from '@angular/core';\n\ntype LabelType = 'float' | 'side';\ntype BackLineStyleType = 'readonly' | 'disabled' | 'default';\n@Component({\n  selector: 'ui-label',\n  templateUrl: './label.component.html',\n  styleUrls: ['./label.component.scss'],\n})\nexport class LabelComponent implements AfterViewInit, OnChanges {\n  @ViewChild('labelRef') labelRaf: ElementRef;\n  @Input() label: string;\n  @Input() hasValue: string;\n  @Input() type: LabelType;\n  @Input() backLineStyle?: BackLineStyleType = 'default';\n  @Input() for: string;\n  @Input() showRequiredSign?: boolean;\n\n  labelWidth: number;\n  ngAfterViewInit(): void {\n    // this.calculateFloatBorder();\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (changes['label']) {\n      this.calculateFloatBorder();\n    }\n  }\n\n  private calculateFloatBorder(): void {\n    if (this.type === 'float') this.labelWidth = this.labelRaf?.nativeElement?.clientWidth;\n  }\n}\n","<div class=\"custom-label\">\n  <ng-container *ngIf=\"label\">\n    <ng-container *ngIf=\"type === 'float'\">\n      <label\n        #labelRef\n        [for]=\"for\"\n        [ngClass]=\"{\n          'custom-label__float-label--active': hasValue,\n          'custom-label__float-label--active--read-only': backLineStyle == 'readonly',\n          'custom-label__float-label--active--disabled': backLineStyle == 'disabled'\n        }\"\n        class=\"custom-label__float-label\"\n        >{{ label }} <span *ngIf=\"showRequiredSign\" class=\"custom-label__required-sign\">*</span>\n      </label>\n      <div\n        class=\"custom-label__float_label_border\"\n        [ngClass]=\"{ 'custom-label__float_label_border--active': hasValue }\"\n        [style.width.px]=\"labelWidth\"\n      ></div>\n    </ng-container>\n\n    <label *ngIf=\"type === 'side'\" class=\"custom-label__side-label\"\n      >{{ label }} <span *ngIf=\"showRequiredSign\" class=\"custom-label__required-sign\">*</span>\n    </label>\n  </ng-container>\n  <ng-content #element></ng-content>\n</div>\n","import { Component, Input, OnInit, ViewEncapsulation } from '@angular/core';\nimport { SafeHtml } from '@angular/platform-browser';\n\n@Component({\n  selector: 'ui-no-data',\n  templateUrl: './no-data.component.html',\n  styleUrls: ['./no-data.component.scss'],\n  encapsulation: ViewEncapsulation.None,\n})\nexport class NoDataComponent implements OnInit {\n  @Input() size?: 'medium' | 'large' = 'medium';\n  @Input() message?: SafeHtml;\n\n  constructor() {}\n\n  ngOnInit(): void {}\n}\n","<div class=\"no-data__empty\">\n  <span *ngIf=\"size == 'medium'\"\n    ><svg-icon src=\"/assets/fararu-icons/no-data-found-m.svg\"></svg-icon\n  ></span>\n  <span *ngIf=\"size == 'large'\"\n    ><svg-icon src=\"/assets/fararu-icons/no-data-found-l.svg\"></svg-icon\n  ></span>\n  <p\n    class=\"no-data__empty-message\"\n    [innerHTML]=\"message ?? ('general.gridEmptyMessage' | translate)\"\n  ></p>\n</div>\n","import { Injector } from '@angular/core';\nimport { AbstractControl, NgControl } from '@angular/forms';\n\nexport class FormElementBaseComponent {\n  ngControl?: NgControl;\n\n  constructor(private readonly _injector?: Injector) {}\n\n  get hasRequiredValidator(): boolean {\n    const control = this.ngControl?.control;\n    if (!control?.validator) return false;\n\n    const validatorFn = control.validator({} as AbstractControl);\n    return validatorFn?.['required'] !== undefined;\n  }\n\n  init(): void {\n    this.ngControl = this._injector.get(NgControl, null);\n  }\n}\n","export default {\n  fill: {\n    action: {\n      '3d_rotation': '/assets/media/icons/fill/action/3d_rotation.svg',\n      accessibility: '/assets/media/icons/fill/action/accessibility.svg',\n      accessibility_new: '/assets/media/icons/fill/action/accessibility_new.svg',\n      accessible: '/assets/media/icons/fill/action/accessible.svg',\n      accessible_forward: '/assets/media/icons/fill/action/accessible_forward.svg',\n      account_balance: '/assets/media/icons/fill/action/account_balance.svg',\n      account_balance_wallet: '/assets/media/icons/fill/action/account_balance_wallet.svg',\n      account_box: '/assets/media/icons/fill/action/account_box.svg',\n      account_circle: '/assets/media/icons/fill/action/account_circle.svg',\n      addchart: '/assets/media/icons/fill/action/addchart.svg',\n      add_shopping_cart: '/assets/media/icons/fill/action/add_shopping_cart.svg',\n      add_task: '/assets/media/icons/fill/action/add_task.svg',\n      add_to_drive: '/assets/media/icons/fill/action/add_to_drive.svg',\n      admin_panel_settings: '/assets/media/icons/fill/action/admin_panel_settings.svg',\n      alarm: '/assets/media/icons/fill/action/alarm.svg',\n      alarm_add: '/assets/media/icons/fill/action/alarm_add.svg',\n      alarm_off: '/assets/media/icons/fill/action/alarm_off.svg',\n      alarm_on: '/assets/media/icons/fill/action/alarm_on.svg',\n      all_inbox: '/assets/media/icons/fill/action/all_inbox.svg',\n      all_out: '/assets/media/icons/fill/action/all_out.svg',\n      analytics: '/assets/media/icons/fill/action/analytics.svg',\n      anchor: '/assets/media/icons/fill/action/anchor.svg',\n      android: '/assets/media/icons/fill/action/android.svg',\n      announcement: '/assets/media/icons/fill/action/announcement.svg',\n      api: '/assets/media/icons/fill/action/api.svg',\n      app_blocking: '/assets/media/icons/fill/action/app_blocking.svg',\n      arrow_circle_down: '/assets/media/icons/fill/action/arrow_circle_down.svg',\n      arrow_circle_up: '/assets/media/icons/fill/action/arrow_circle_up.svg',\n      arrow_right_alt: '/assets/media/icons/fill/action/arrow_right_alt.svg',\n      article: '/assets/media/icons/fill/action/article.svg',\n      aspect_ratio: '/assets/media/icons/fill/action/aspect_ratio.svg',\n      assessment: '/assets/media/icons/fill/action/assessment.svg',\n      assignment: '/assets/media/icons/fill/action/assignment.svg',\n      assignment_ind: '/assets/media/icons/fill/action/assignment_ind.svg',\n      assignment_late: '/assets/media/icons/fill/action/assignment_late.svg',\n      assignment_return: '/assets/media/icons/fill/action/assignment_return.svg',\n      assignment_returned: '/assets/media/icons/fill/action/assignment_returned.svg',\n      assignment_turned_in: '/assets/media/icons/fill/action/assignment_turned_in.svg',\n      autorenew: '/assets/media/icons/fill/action/autorenew.svg',\n      backup: '/assets/media/icons/fill/action/backup.svg',\n      backup_table: '/assets/media/icons/fill/action/backup_table.svg',\n      batch_prediction: '/assets/media/icons/fill/action/batch_prediction.svg',\n      book: '/assets/media/icons/fill/action/book.svg',\n      bookmark: '/assets/media/icons/fill/action/bookmark.svg',\n      bookmarks: '/assets/media/icons/fill/action/bookmarks.svg',\n      bookmark_border: '/assets/media/icons/fill/action/bookmark_border.svg',\n      book_online: '/assets/media/icons/fill/action/book_online.svg',\n      bug_report: '/assets/media/icons/fill/action/bug_report.svg',\n      build: '/assets/media/icons/fill/action/build.svg',\n      build_circle: '/assets/media/icons/fill/action/build_circle.svg',\n      cached: '/assets/media/icons/fill/action/cached.svg',\n      calendar_today: '/assets/media/icons/fill/action/calendar_today.svg',\n      calendar_view_day: '/assets/media/icons/fill/action/calendar_view_day.svg',\n      camera_enhance: '/assets/media/icons/fill/action/camera_enhance.svg',\n      cancel_schedule_send: '/assets/media/icons/fill/action/cancel_schedule_send.svg',\n      card_giftcard: '/assets/media/icons/fill/action/card_giftcard.svg',\n      card_membership: '/assets/media/icons/fill/action/card_membership.svg',\n      card_travel: '/assets/media/icons/fill/action/card_travel.svg',\n      change_history: '/assets/media/icons/fill/action/change_history.svg',\n      check_circle: '/assets/media/icons/fill/action/check_circle.svg',\n      check_circle_outline: '/assets/media/icons/fill/action/check_circle_outline.svg',\n      chrome_reader_mode: '/assets/media/icons/fill/action/chrome_reader_mode.svg',\n      circle_notifications: '/assets/media/icons/fill/action/circle_notifications.svg',\n      class: '/assets/media/icons/fill/action/class.svg',\n      close_fullscreen: '/assets/media/icons/fill/action/close_fullscreen.svg',\n      code: '/assets/media/icons/fill/action/code.svg',\n      comment_bank: '/assets/media/icons/fill/action/comment_bank.svg',\n      commute: '/assets/media/icons/fill/action/commute.svg',\n      compare_arrows: '/assets/media/icons/fill/action/compare_arrows.svg',\n      compress: '/assets/media/icons/fill/action/compress.svg',\n      contactless: '/assets/media/icons/fill/action/contactless.svg',\n      contact_page: '/assets/media/icons/fill/action/contact_page.svg',\n      contact_support: '/assets/media/icons/fill/action/contact_support.svg',\n      copyright: '/assets/media/icons/fill/action/copyright.svg',\n      credit_card: '/assets/media/icons/fill/action/credit_card.svg',\n      dangerous: '/assets/media/icons/fill/action/dangerous.svg',\n      dashboard: '/assets/media/icons/fill/action/dashboard.svg',\n      dashboard_customize: '/assets/media/icons/fill/action/dashboard_customize.svg',\n      date_range: '/assets/media/icons/fill/action/date_range.svg',\n      delete: '/assets/media/icons/fill/action/delete.svg',\n      delete_forever: '/assets/media/icons/fill/action/delete_forever.svg',\n      delete_outline: '/assets/media/icons/fill/action/delete_outline.svg',\n      description: '/assets/media/icons/fill/action/description.svg',\n      disabled_by_default: '/assets/media/icons/fill/action/disabled_by_default.svg',\n      dns: '/assets/media/icons/fill/action/dns.svg',\n      done: '/assets/media/icons/fill/action/done.svg',\n      done_all: '/assets/media/icons/fill/action/done_all.svg',\n      done_outline: '/assets/media/icons/fill/action/done_outline.svg',\n      donut_large: '/assets/media/icons/fill/action/donut_large.svg',\n      donut_small: '/assets/media/icons/fill/action/donut_small.svg',\n      drag_indicator: '/assets/media/icons/fill/action/drag_indicator.svg',\n      dynamic_form: '/assets/media/icons/fill/action/dynamic_form.svg',\n      eco: '/assets/media/icons/fill/action/eco.svg',\n      edit_off: '/assets/media/icons/fill/action/edit_off.svg',\n      eject: '/assets/media/icons/fill/action/eject.svg',\n      euro_symbol: '/assets/media/icons/fill/action/euro_symbol.svg',\n      event: '/assets/media/icons/fill/action/event.svg',\n      event_seat: '/assets/media/icons/fill/action/event_seat.svg',\n      exit_to_app: '/assets/media/icons/fill/action/exit_to_app.svg',\n      expand: '/assets/media/icons/fill/action/expand.svg',\n      explore: '/assets/media/icons/fill/action/explore.svg',\n      explore_off: '/assets/media/icons/fill/action/explore_off.svg',\n      extension: '/assets/media/icons/fill/action/extension.svg',\n      face: '/assets/media/icons/fill/action/face.svg',\n      fact_check: '/assets/media/icons/fill/action/fact_check.svg',\n      favorite: '/assets/media/icons/fill/action/favorite.svg',\n      favorite_border: '/assets/media/icons/fill/action/favorite_border.svg',\n      feedback: '/assets/media/icons/fill/action/feedback.svg',\n      file_present: '/assets/media/icons/fill/action/file_present.svg',\n      filter_alt: '/assets/media/icons/fill/action/filter_alt.svg',\n      filter_list_alt: '/assets/media/icons/fill/action/filter_list_alt.svg',\n      find_in_page: '/assets/media/icons/fill/action/find_in_page.svg',\n      find_replace: '/assets/media/icons/fill/action/find_replace.svg',\n      fingerprint: '/assets/media/icons/fill/action/fingerprint.svg',\n      fit_screen: '/assets/media/icons/fill/action/fit_screen.svg',\n      flaky: '/assets/media/icons/fill/action/flaky.svg',\n      flight_land: '/assets/media/icons/fill/action/flight_land.svg',\n      flight_takeoff: '/assets/media/icons/fill/action/flight_takeoff.svg',\n      flip_to_back: '/assets/media/icons/fill/action/flip_to_back.svg',\n      flip_to_front: '/assets/media/icons/fill/action/flip_to_front.svg',\n      gavel: '/assets/media/icons/fill/action/gavel.svg',\n      get_app: '/assets/media/icons/fill/action/get_app.svg',\n      gif: '/assets/media/icons/fill/action/gif.svg',\n      grade: '/assets/media/icons/fill/action/grade.svg',\n      grading: '/assets/media/icons/fill/action/grading.svg',\n      group_work: '/assets/media/icons/fill/action/group_work.svg',\n      g_translate: '/assets/media/icons/fill/action/g_translate.svg',\n      help: '/assets/media/icons/fill/action/help.svg',\n      help_center: '/assets/media/icons/fill/action/help_center.svg',\n      help_outline: '/assets/media/icons/fill/action/help_outline.svg',\n      highlight_alt: '/assets/media/icons/fill/action/highlight_alt.svg',\n      highlight_off: '/assets/media/icons/fill/action/highlight_off.svg',\n      history: '/assets/media/icons/fill/action/history.svg',\n      history_toggle_off: '/assets/media/icons/fill/action/history_toggle_off.svg',\n      home: '/assets/media/icons/fill/action/home.svg',\n      home_filled: '/assets/media/icons/fill/action/home_filled.svg',\n      horizontal_split: '/assets/media/icons/fill/action/horizontal_split.svg',\n      hourglass_disabled: '/assets/media/icons/fill/action/hourglass_disabled.svg',\n      hourglass_empty: '/assets/media/icons/fill/action/hourglass_empty.svg',\n      hourglass_full: '/assets/media/icons/fill/action/hourglass_full.svg',\n      http: '/assets/media/icons/fill/action/http.svg',\n      https: '/assets/media/icons/fill/action/https.svg',\n      important_devices: '/assets/media/icons/fill/action/important_devices.svg',\n      info: '/assets/media/icons/fill/action/info.svg',\n      info_outline: '/assets/media/icons/fill/action/info_outline.svg',\n      input: '/assets/media/icons/fill/action/input.svg',\n      integration_instructions: '/assets/media/icons/fill/action/integration_instructions.svg',\n      invert_colors: '/assets/media/icons/fill/action/invert_colors.svg',\n      label: '/assets/media/icons/fill/action/label.svg',\n      label_important: '/assets/media/icons/fill/action/label_important.svg',\n      label_important_outline: '/assets/media/icons/fill/action/label_important_outline.svg',\n      label_off: '/assets/media/icons/fill/action/label_off.svg',\n      label_outline: '/assets/media/icons/fill/action/label_outline.svg',\n      language: '/assets/media/icons/fill/action/language.svg',\n      launch: '/assets/media/icons/fill/action/launch.svg',\n      leaderboard: '/assets/media/icons/fill/action/leaderboard.svg',\n      lightbulb: '/assets/media/icons/fill/action/lightbulb.svg',\n      lightbulb_outline: '/assets/media/icons/fill/action/lightbulb_outline.svg',\n      line_style: '/assets/media/icons/fill/action/line_style.svg',\n      line_weight: '/assets/media/icons/fill/action/line_weight.svg',\n      list: '/assets/media/icons/fill/action/list.svg',\n      lock: '/assets/media/icons/fill/action/lock.svg',\n      lock_clock: '/assets/media/icons/fill/action/lock_clock.svg',\n      lock_open: '/assets/media/icons/fill/action/lock_open.svg',\n      lock_outline: '/assets/media/icons/fill/action/lock_outline.svg',\n      login: '/assets/media/icons/fill/action/login.svg',\n      logout: '/assets/media/icons/fill/action/logout.svg',\n      loyalty: '/assets/media/icons/fill/action/loyalty.svg',\n      markunread_mailbox: '/assets/media/icons/fill/action/markunread_mailbox.svg',\n      mark_as_unread: '/assets/media/icons/fill/action/mark_as_unread.svg',\n      maximize: '/assets/media/icons/fill/action/maximize.svg',\n      mediation: '/assets/media/icons/fill/action/mediation.svg',\n      minimize: '/assets/media/icons/fill/action/minimize.svg',\n      model_training: '/assets/media/icons/fill/action/model_training.svg',\n      next_plan: '/assets/media/icons/fill/action/next_plan.svg',\n      nightlight_round: '/assets/media/icons/fill/action/nightlight_round.svg',\n      note_add: '/assets/media/icons/fill/action/note_add.svg',\n      not_accessible: '/assets/media/icons/fill/action/not_accessible.svg',\n      not_started: '/assets/media/icons/fill/action/not_started.svg',\n      offline_bolt: '/assets/media/icons/fill/action/offline_bolt.svg',\n      offline_pin: '/assets/media/icons/fill/action/offline_pin.svg',\n      online_prediction: '/assets/media/icons/fill/action/online_prediction.svg',\n      opacity: '/assets/media/icons/fill/action/opacity.svg',\n      open_in_browser: '/assets/media/icons/fill/action/open_in_browser.svg',\n      open_in_full: '/assets/media/icons/fill/action/open_in_full.svg',\n      open_in_new: '/assets/media/icons/fill/action/open_in_new.svg',\n      open_with: '/assets/media/icons/fill/action/open_with.svg',\n      outbond: '/assets/media/icons/fill/action/outbond.svg',\n      outbox: '/assets/media/icons/fill/action/outbox.svg',\n      outgoing_mail: '/assets/media/icons/fill/action/outgoing_mail.svg',\n      outlet: '/assets/media/icons/fill/action/outlet.svg',\n      pageview: '/assets/media/icons/fill/action/pageview.svg',\n      pan_tool: '/assets/media/icons/fill/action/pan_tool.svg',\n      payment: '/assets/media/icons/fill/action/payment.svg',\n      pending: '/assets/media/icons/fill/action/pending.svg',\n      pending_actions: '/assets/media/icons/fill/action/pending_actions.svg',\n      perm_camera_mic: '/assets/media/icons/fill/action/perm_camera_mic.svg',\n      perm_contact_calendar: '/assets/media/icons/fill/action/perm_contact_calendar.svg',\n      perm_data_setting: '/assets/media/icons/fill/action/perm_data_setting.svg',\n      perm_device_information: '/assets/media/icons/fill/action/perm_device_information.svg',\n      perm_identity: '/assets/media/icons/fill/action/perm_identity.svg',\n      perm_media: '/assets/media/icons/fill/action/perm_media.svg',\n      perm_phone_msg: '/assets/media/icons/fill/action/perm_phone_msg.svg',\n      perm_scan_wifi: '/assets/media/icons/fill/action/perm_scan_wifi.svg',\n      pets: '/assets/media/icons/fill/action/pets.svg',\n      picture_in_picture: '/assets/media/icons/fill/action/picture_in_picture.svg',\n      picture_in_picture_alt: '/assets/media/icons/fill/action/picture_in_picture_alt.svg',\n      plagiarism: '/assets/media/icons/fill/action/plagiarism.svg',\n      play_for_work: '/assets/media/icons/fill/action/play_for_work.svg',\n      polymer: '/assets/media/icons/fill/action/polymer.svg',\n      power_settings_new: '/assets/media/icons/fill/action/power_settings_new.svg',\n      pregnant_woman: '/assets/media/icons/fill/action/pregnant_woman.svg',\n      preview: '/assets/media/icons/fill/action/preview.svg',\n      print: '/assets/media/icons/fill/action/print.svg',\n      privacy_tip: '/assets/media/icons/fill/action/privacy_tip.svg',\n      published_with_changes: '/assets/media/icons/fill/action/published_with_changes.svg',\n      query_builder: '/assets/media/icons/fill/action/query_builder.svg',\n      question_answer: '/assets/media/icons/fill/action/question_answer.svg',\n      quickreply: '/assets/media/icons/fill/action/quickreply.svg',\n      receipt: '/assets/media/icons/fill/action/receipt.svg',\n      record_voice_over: '/assets/media/icons/fill/action/record_voice_over.svg',\n      redeem: '/assets/media/icons/fill/action/redeem.svg',\n      remove_done: '/assets/media/icons/fill/action/remove_done.svg',\n      remove_shopping_cart: '/assets/media/icons/fill/action/remove_shopping_cart.svg',\n      reorder: '/assets/media/icons/fill/action/reorder.svg',\n      report_problem: '/assets/media/icons/fill/action/report_problem.svg',\n      request_page: '/assets/media/icons/fill/action/request_page.svg',\n      restore: '/assets/media/icons/fill/action/restore.svg',\n      restore_from_delete: '/assets/media/icons/fill/action/restore_from_delete.svg',\n      restore_page: '/assets/media/icons/fill/action/restore_page.svg',\n      room: '/assets/media/icons/fill/action/room.svg',\n      rounded_corner: '/assets/media/icons/fill/action/rounded_corner.svg',\n      rowing: '/assets/media/icons/fill/action/rowing.svg',\n      rule: '/assets/media/icons/fill/action/rule.svg',\n      saved_search: '/assets/media/icons/fill/action/saved_search.svg',\n      schedule: '/assets/media/icons/fill/action/schedule.svg',\n      schedule_send: '/assets/media/icons/fill/action/schedule_send.svg',\n      search: '/assets/media/icons/fill/action/search.svg',\n      search_off: '/assets/media/icons/fill/action/search_off.svg',\n      segment: '/assets/media/icons/fill/action/segment.svg',\n      send_and_archive: '/assets/media/icons/fill/action/send_and_archive.svg',\n      settings: '/assets/media/icons/fill/action/settings.svg',\n      settings_applications: '/assets/media/icons/fill/action/settings_applications.svg',\n      settings_backup_restore: '/assets/media/icons/fill/action/settings_backup_restore.svg',\n      settings_bluetooth: '/assets/media/icons/fill/action/settings_bluetooth.svg',\n      settings_brightness: '/assets/media/icons/fill/action/settings_brightness.svg',\n      settings_cell: '/assets/media/icons/fill/action/settings_cell.svg',\n      settings_ethernet: '/assets/media/icons/fill/action/settings_ethernet.svg',\n      settings_input_antenna: '/assets/media/icons/fill/action/settings_input_antenna.svg',\n      settings_input_component: '/assets/media/icons/fill/action/settings_input_component.svg',\n      settings_input_composite: '/assets/media/icons/fill/action/settings_input_composite.svg',\n      settings_input_hdmi: '/assets/media/icons/fill/action/settings_input_hdmi.svg',\n      settings_input_svideo: '/assets/media/icons/fill/action/settings_input_svideo.svg',\n      settings_overscan: '/assets/media/icons/fill/action/settings_overscan.svg',\n      settings_phone: '/assets/media/icons/fill/action/settings_phone.svg',\n      settings_power: '/assets/media/icons/fill/action/settings_power.svg',\n      settings_remote: '/assets/media/icons/fill/action/settings_remote.svg',\n      settings_voice: '/assets/media/icons/fill/action/settings_voice.svg',\n      shop: '/assets/media/icons/fill/action/shop.svg',\n      shopping_bag: '/assets/media/icons/fill/action/shopping_bag.svg',\n      shopping_basket: '/assets/media/icons/fill/action/shopping_basket.svg',\n      shopping_cart: '/assets/media/icons/fill/action/shopping_cart.svg',\n      shop_two: '/assets/media/icons/fill/action/shop_two.svg',\n      smart_button: '/assets/media/icons/fill/action/smart_button.svg',\n      source: '/assets/media/icons/fill/action/source.svg',\n      speaker_notes: '/assets/media/icons/fill/action/speaker_notes.svg',\n      speaker_notes_off: '/assets/media/icons/fill/action/speaker_notes_off.svg',\n      spellcheck: '/assets/media/icons/fill/action/spellcheck.svg',\n      stars: '/assets/media/icons/fill/action/stars.svg',\n      star_rate: '/assets/media/icons/fill/action/star_rate.svg',\n      sticky_note_2: '/assets/media/icons/fill/action/sticky_note_2.svg',\n      store: '/assets/media/icons/fill/action/store.svg',\n      subject: '/assets/media/icons/fill/action/subject.svg',\n      subtitles_off: '/assets/media/icons/fill/action/subtitles_off.svg',\n      supervised_user_circle: '/assets/media/icons/fill/action/supervised_user_circle.svg',\n      supervisor_account: '/assets/media/icons/fill/action/supervisor_account.svg',\n      support: '/assets/media/icons/fill/action/support.svg',\n      swap_horiz: '/assets/media/icons/fill/action/swap_horiz.svg',\n      swap_horizontal_circle: '/assets/media/icons/fill/action/swap_horizontal_circle.svg',\n      swap_vert: '/assets/media/icons/fill/action/swap_vert.svg',\n      swap_vertical_circle: '/assets/media/icons/fill/action/swap_vertical_circle.svg',\n      swipe: '/assets/media/icons/fill/action/swipe.svg',\n      sync_alt: '/assets/media/icons/fill/action/sync_alt.svg',\n      system_update_alt: '/assets/media/icons/fill/action/system_update_alt.svg',\n      tab: '/assets/media/icons/fill/action/tab.svg',\n      table_view: '/assets/media/icons/fill/action/table_view.svg',\n      tab_unselected: '/assets/media/icons/fill/action/tab_unselected.svg',\n      text_rotate_up: '/assets/media/icons/fill/action/text_rotate_up.svg',\n      text_rotate_vertical: '/assets/media/icons/fill/action/text_rotate_vertical.svg',\n      text_rotation_angledown: '/assets/media/icons/fill/action/text_rotation_angledown.svg',\n      text_rotation_angleup: '/assets/media/icons/fill/action/text_rotation_angleup.svg',\n      text_rotation_down: '/assets/media/icons/fill/action/text_rotation_down.svg',\n      text_rotation_none: '/assets/media/icons/fill/action/text_rotation_none.svg',\n      theaters: '/assets/media/icons/fill/action/theaters.svg',\n      thumbs_up_down: '/assets/media/icons/fill/action/thumbs_up_down.svg',\n      thumb_down: '/assets/media/icons/fill/action/thumb_down.svg',\n      thumb_down_off_alt: '/assets/media/icons/fill/action/thumb_down_off_alt.svg',\n      thumb_up: '/assets/media/icons/fill/action/thumb_up.svg',\n      thumb_up_off_alt: '/assets/media/icons/fill/action/thumb_up_off_alt.svg',\n      timeline: '/assets/media/icons/fill/action/timeline.svg',\n      toc: '/assets/media/icons/fill/action/toc.svg',\n      today: '/assets/media/icons/fill/action/today.svg',\n      toll: '/assets/media/icons/fill/action/toll.svg',\n      touch_app: '/assets/media/icons/fill/action/touch_app.svg',\n      tour: '/assets/media/icons/fill/action/tour.svg',\n      track_changes: '/assets/media/icons/fill/action/track_changes.svg',\n      translate: '/assets/media/icons/fill/action/translate.svg',\n      trending_down: '/assets/media/icons/fill/action/trending_down.svg',\n      trending_flat: '/assets/media/icons/fill/action/trending_flat.svg',\n      trending_up: '/assets/media/icons/fill/action/trending_up.svg',\n      turned_in: '/assets/media/icons/fill/action/turned_in.svg',\n      turned_in_not: '/assets/media/icons/fill/action/turned_in_not.svg',\n      unpublished: '/assets/media/icons/fill/action/unpublished.svg',\n      update: '/assets/media/icons/fill/action/update.svg',\n      upgrade: '/assets/media/icons/fill/action/upgrade.svg',\n      verified: '/assets/media/icons/fill/action/verified.svg',\n      verified_user: '/assets/media/icons/fill/action/verified_user.svg',\n      vertical_split: '/assets/media/icons/fill/action/vertical_split.svg',\n      view_agenda: '/assets/media/icons/fill/action/view_agenda.svg',\n      view_array: '/assets/media/icons/fill/action/view_array.svg',\n      view_carousel: '/assets/media/icons/fill/action/view_carousel.svg',\n      view_column: '/assets/media/icons/fill/action/view_column.svg',\n      view_day: '/assets/media/icons/fill/action/view_day.svg',\n      view_headline: '/assets/media/icons/fill/action/view_headline.svg',\n      view_in_ar: '/assets/media/icons/fill/action/view_in_ar.svg',\n      view_list: '/assets/media/icons/fill/action/view_list.svg',\n      view_module: '/assets/media/icons/fill/action/view_module.svg',\n      view_quilt: '/assets/media/icons/fill/action/view_quilt.svg',\n      view_sidebar: '/assets/media/icons/fill/action/view_sidebar.svg',\n      view_stream: '/assets/media/icons/fill/action/view_stream.svg',\n      view_week: '/assets/media/icons/fill/action/view_week.svg',\n      visibility: '/assets/media/icons/fill/action/visibility.svg',\n      visibility_off: '/assets/media/icons/fill/action/visibility_off.svg',\n      voice_over_off: '/assets/media/icons/fill/action/voice_over_off.svg',\n      watch_later: '/assets/media/icons/fill/action/watch_later.svg',\n      wifi_protected_setup: '/assets/media/icons/fill/action/wifi_protected_setup.svg',\n      work: '/assets/media/icons/fill/action/work.svg',\n      work_off: '/assets/media/icons/fill/action/work_off.svg',\n      work_outline: '/assets/media/icons/fill/action/work_outline.svg',\n      wysiwyg: '/assets/media/icons/fill/action/wysiwyg.svg',\n      youtube_searched_for: '/assets/media/icons/fill/action/youtube_searched_for.svg',\n      zoom_in: '/assets/media/icons/fill/action/zoom_in.svg',\n      zoom_out: '/assets/media/icons/fill/action/zoom_out.svg',\n    },\n    alert: {\n      add_alert: '/assets/media/icons/fill/alert/add_alert.svg',\n      auto_delete: '/assets/media/icons/fill/alert/auto_delete.svg',\n      error: '/assets/media/icons/fill/alert/error.svg',\n      error_outline: '/assets/media/icons/fill/alert/error_outline.svg',\n      notification_important: '/assets/media/icons/fill/alert/notification_important.svg',\n      warning: '/assets/media/icons/fill/alert/warning.svg',\n    },\n    audio_video: {\n      '10k': '/assets/media/icons/fill/audio-video/10k.svg',\n      '1k': '/assets/media/icons/fill/audio-video/1k.svg',\n      '1k_plus': '/assets/media/icons/fill/audio-video/1k_plus.svg',\n      '2k': '/assets/media/icons/fill/audio-video/2k.svg',\n      '2k_plus': '/assets/media/icons/fill/audio-video/2k_plus.svg',\n      '3k': '/assets/media/icons/fill/audio-video/3k.svg',\n      '3k_plus': '/assets/media/icons/fill/audio-video/3k_plus.svg',\n      '4k': '/assets/media/icons/fill/audio-video/4k.svg',\n      '4k_plus': '/assets/media/icons/fill/audio-video/4k_plus.svg',\n      '5g': '/assets/media/icons/fill/audio-video/5g.svg',\n      '5k': '/assets/media/icons/fill/audio-video/5k.svg',\n      '5k_plus': '/assets/media/icons/fill/audio-video/5k_plus.svg',\n      '6k': '/assets/media/icons/fill/audio-video/6k.svg',\n      '6k_plus': '/assets/media/icons/fill/audio-video/6k_plus.svg',\n      '7k': '/assets/media/icons/fill/audio-video/7k.svg',\n      '7k_plus': '/assets/media/icons/fill/audio-video/7k_plus.svg',\n      '8k': '/assets/media/icons/fill/audio-video/8k.svg',\n      '8k_plus': '/assets/media/icons/fill/audio-video/8k_plus.svg',\n      '9k': '/assets/media/icons/fill/audio-video/9k.svg',\n      '9k_plus': '/assets/media/icons/fill/audio-video/9k_plus.svg',\n      add_to_queue: '/assets/media/icons/fill/audio-video/add_to_queue.svg',\n      airplay: '/assets/media/icons/fill/audio-video/airplay.svg',\n      album: '/assets/media/icons/fill/audio-video/album.svg',\n      art_track: '/assets/media/icons/fill/audio-video/art_track.svg',\n      av_timer: '/assets/media/icons/fill/audio-video/av_timer.svg',\n      branding_watermark: '/assets/media/icons/fill/audio-video/branding_watermark.svg',\n      call_to_action: '/assets/media/icons/fill/audio-video/call_to_action.svg',\n      closed_caption: '/assets/media/icons/fill/audio-video/closed_caption.svg',\n      closed_caption_disabled: '/assets/media/icons/fill/audio-video/closed_caption_disabled.svg',\n      closed_caption_off: '/assets/media/icons/fill/audio-video/closed_caption_off.svg',\n      control_camera: '/assets/media/icons/fill/audio-video/control_camera.svg',\n      equalizer: '/assets/media/icons/fill/audio-video/equalizer.svg',\n      explicit: '/assets/media/icons/fill/audio-video/explicit.svg',\n      fast_forward: '/assets/media/icons/fill/audio-video/fast_forward.svg',\n      fast_rewind: '/assets/media/icons/fill/audio-video/fast_rewind.svg',\n      featured_play_list: '/assets/media/icons/fill/audio-video/featured_play_list.svg',\n      featured_video: '/assets/media/icons/fill/audio-video/featured_video.svg',\n      fiber_dvr: '/assets/media/icons/fill/audio-video/fiber_dvr.svg',\n      fiber_manual_record: '/assets/media/icons/fill/audio-video/fiber_manual_record.svg',\n      fiber_new: '/assets/media/icons/fill/audio-video/fiber_new.svg',\n      fiber_pin: '/assets/media/icons/fill/audio-video/fiber_pin.svg',\n      fiber_smart_record: '/assets/media/icons/fill/audio-video/fiber_smart_record.svg',\n      forward_10: '/assets/media/icons/fill/audio-video/forward_10.svg',\n      forward_30: '/assets/media/icons/fill/audio-video/forward_30.svg',\n      forward_5: '/assets/media/icons/fill/audio-video/forward_5.svg',\n      games: '/assets/media/icons/fill/audio-video/games.svg',\n      hd: '/assets/media/icons/fill/audio-video/hd.svg',\n      hearing: '/assets/media/icons/fill/audio-video/hearing.svg',\n      hearing_disabled: '/assets/media/icons/fill/audio-video/hearing_disabled.svg',\n      high_quality: '/assets/media/icons/fill/audio-video/high_quality.svg',\n      library_add: '/assets/media/icons/fill/audio-video/library_add.svg',\n      library_add_check: '/assets/media/icons/fill/audio-video/library_add_check.svg',\n      library_books: '/assets/media/icons/fill/audio-video/library_books.svg',\n      library_music: '/assets/media/icons/fill/audio-video/library_music.svg',\n      loop: '/assets/media/icons/fill/audio-video/loop.svg',\n      mic: '/assets/media/icons/fill/audio-video/mic.svg',\n      mic_none: '/assets/media/icons/fill/audio-video/mic_none.svg',\n      mic_off: '/assets/media/icons/fill/audio-video/mic_off.svg',\n      missed_video_call: '/assets/media/icons/fill/audio-video/missed_video_call.svg',\n      movie: '/assets/media/icons/fill/audio-video/movie.svg',\n      music_video: '/assets/media/icons/fill/audio-video/music_video.svg',\n      new_releases: '/assets/media/icons/fill/audio-video/new_releases.svg',\n      note: '/assets/media/icons/fill/audio-video/note.svg',\n      not_interested: '/assets/media/icons/fill/audio-video/not_interested.svg',\n      pause: '/assets/media/icons/fill/audio-video/pause.svg',\n      pause_circle_filled: '/assets/media/icons/fill/audio-video/pause_circle_filled.svg',\n      pause_circle_outline: '/assets/media/icons/fill/audio-video/pause_circle_outline.svg',\n      playlist_add: '/assets/media/icons/fill/audio-video/playlist_add.svg',\n      playlist_add_check: '/assets/media/icons/fill/audio-video/playlist_add_check.svg',\n      playlist_play: '/assets/media/icons/fill/audio-video/playlist_play.svg',\n      play_arrow: '/assets/media/icons/fill/audio-video/play_arrow.svg',\n      play_circle_filled: '/assets/media/icons/fill/audio-video/play_circle_filled.svg',\n      play_circle_outline: '/assets/media/icons/fill/audio-video/play_circle_outline.svg',\n      play_disabled: '/assets/media/icons/fill/audio-video/play_disabled.svg',\n      queue: '/assets/media/icons/fill/audio-video/queue.svg',\n      queue_music: '/assets/media/icons/fill/audio-video/queue_music.svg',\n      queue_play_next: '/assets/media/icons/fill/audio-video/queue_play_next.svg',\n      radio: '/assets/media/icons/fill/audio-video/radio.svg',\n      recent_actors: '/assets/media/icons/fill/audio-video/recent_actors.svg',\n      remove_from_queue: '/assets/media/icons/fill/audio-video/remove_from_queue.svg',\n      repeat: '/assets/media/icons/fill/audio-video/repeat.svg',\n      repeat_on: '/assets/media/icons/fill/audio-video/repeat_on.svg',\n      repeat_one: '/assets/media/icons/fill/audio-video/repeat_one.svg',\n      repeat_one_on: '/assets/media/icons/fill/audio-video/repeat_one_on.svg',\n      replay: '/assets/media/icons/fill/audio-video/replay.svg',\n      replay_10: '/assets/media/icons/fill/audio-video/replay_10.svg',\n      replay_30: '/assets/media/icons/fill/audio-video/replay_30.svg',\n      replay_5: '/assets/media/icons/fill/audio-video/replay_5.svg',\n      replay_circle_filled: '/assets/media/icons/fill/audio-video/replay_circle_filled.svg',\n      sd: '/assets/media/icons/fill/audio-video/sd.svg',\n      shuffle: '/assets/media/icons/fill/audio-video/shuffle.svg',\n      shuffle_on: '/assets/media/icons/fill/audio-video/shuffle_on.svg',\n      skip_next: '/assets/media/icons/fill/audio-video/skip_next.svg',\n      skip_previous: '/assets/media/icons/fill/audio-video/skip_previous.svg',\n      slow_motion_video: '/assets/media/icons/fill/audio-video/slow_motion_video.svg',\n      snooze: '/assets/media/icons/fill/audio-video/snooze.svg',\n      sort_by_alpha: '/assets/media/icons/fill/audio-video/sort_by_alpha.svg',\n      speed: '/assets/media/icons/fill/audio-video/speed.svg',\n      stop: '/assets/media/icons/fill/audio-video/stop.svg',\n      stop_circle: '/assets/media/icons/fill/audio-video/stop_circle.svg',\n      subscriptions: '/assets/media/icons/fill/audio-video/subscriptions.svg',\n      subtitles: '/assets/media/icons/fill/audio-video/subtitles.svg',\n      surround_sound: '/assets/media/icons/fill/audio-video/surround_sound.svg',\n      videocam: '/assets/media/icons/fill/audio-video/videocam.svg',\n      videocam_off: '/assets/media/icons/fill/audio-video/videocam_off.svg',\n      video_call: '/assets/media/icons/fill/audio-video/video_call.svg',\n      video_label: '/assets/media/icons/fill/audio-video/video_label.svg',\n      video_library: '/assets/media/icons/fill/audio-video/video_library.svg',\n      video_settings: '/assets/media/icons/fill/audio-video/video_settings.svg',\n      volume_down: '/assets/media/icons/fill/audio-video/volume_down.svg',\n      volume_mute: '/assets/media/icons/fill/audio-video/volume_mute.svg',\n      volume_off: '/assets/media/icons/fill/audio-video/volume_off.svg',\n      volume_up: '/assets/media/icons/fill/audio-video/volume_up.svg',\n      web: '/assets/media/icons/fill/audio-video/web.svg',\n      web_asset: '/assets/media/icons/fill/audio-video/web_asset.svg',\n    },\n    communication: {\n      add_ic_call: '/assets/media/icons/fill/communication/add_ic_call.svg',\n      alternate_email: '/assets/media/icons/fill/communication/alternate_email.svg',\n      app_registration: '/assets/media/icons/fill/communication/app_registration.svg',\n      business: '/assets/media/icons/fill/communication/business.svg',\n      call: '/assets/media/icons/fill/communication/call.svg',\n      call_end: '/assets/media/icons/fill/communication/call_end.svg',\n      call_made: '/assets/media/icons/fill/communication/call_made.svg',\n      call_merge: '/assets/media/icons/fill/communication/call_merge.svg',\n      call_missed: '/assets/media/icons/fill/communication/call_missed.svg',\n      call_missed_outgoing: '/assets/media/icons/fill/communication/call_missed_outgoing.svg',\n      call_received: '/assets/media/icons/fill/communication/call_received.svg',\n      call_split: '/assets/media/icons/fill/communication/call_split.svg',\n      cancel_presentation: '/assets/media/icons/fill/communication/cancel_presentation.svg',\n      cell_wifi: '/assets/media/icons/fill/communication/cell_wifi.svg',\n      chat: '/assets/media/icons/fill/communication/chat.svg',\n      chat_bubble: '/assets/media/icons/fill/communication/chat_bubble.svg',\n      chat_bubble_outline: '/assets/media/icons/fill/communication/chat_bubble_outline.svg',\n      clear_all: '/assets/media/icons/fill/communication/clear_all.svg',\n      comment: '/assets/media/icons/fill/communication/comment.svg',\n      contacts: '/assets/media/icons/fill/communication/contacts.svg',\n      contact_mail: '/assets/media/icons/fill/communication/contact_mail.svg',\n      contact_phone: '/assets/media/icons/fill/communication/contact_phone.svg',\n      desktop_access_disabled: '/assets/media/icons/fill/communication/desktop_access_disabled.svg',\n      dialer_sip: '/assets/media/icons/fill/communication/dialer_sip.svg',\n      dialpad: '/assets/media/icons/fill/communication/dialpad.svg',\n      domain_disabled: '/assets/media/icons/fill/communication/domain_disabled.svg',\n      domain_verification: '/assets/media/icons/fill/communication/domain_verification.svg',\n      duo: '/assets/media/icons/fill/communication/duo.svg',\n      email: '/assets/media/icons/fill/communication/email.svg',\n      forum: '/assets/media/icons/fill/communication/forum.svg',\n      forward_to_inbox: '/assets/media/icons/fill/communication/forward_to_inbox.svg',\n      hourglass_bottom: '/assets/media/icons/fill/communication/hourglass_bottom.svg',\n      hourglass_top: '/assets/media/icons/fill/communication/hourglass_top.svg',\n      import_contacts: '/assets/media/icons/fill/communication/import_contacts.svg',\n      import_export: '/assets/media/icons/fill/communication/import_export.svg',\n      invert_colors_off: '/assets/media/icons/fill/communication/invert_colors_off.svg',\n      list_alt: '/assets/media/icons/fill/communication/list_alt.svg',\n      live_help: '/assets/media/icons/fill/communication/live_help.svg',\n      location_off: '/assets/media/icons/fill/communication/location_off.svg',\n      location_on: '/assets/media/icons/fill/communication/location_on.svg',\n      mail_outline: '/assets/media/icons/fill/communication/mail_outline.svg',\n      mark_chat_read: '/assets/media/icons/fill/communication/mark_chat_read.svg',\n      mark_chat_unread: '/assets/media/icons/fill/communication/mark_chat_unread.svg',\n      mark_email_read: '/assets/media/icons/fill/communication/mark_email_read.svg',\n      mark_email_unread: '/assets/media/icons/fill/communication/mark_email_unread.svg',\n      message: '/assets/media/icons/fill/communication/message.svg',\n      mobile_screen_share: '/assets/media/icons/fill/communication/mobile_screen_share.svg',\n      more_time: '/assets/media/icons/fill/communication/more_time.svg',\n      nat: '/assets/media/icons/fill/communication/nat.svg',\n      no_sim: '/assets/media/icons/fill/communication/no_sim.svg',\n      pause_presentation: '/assets/media/icons/fill/communication/pause_presentation.svg',\n      person_add_disabled: '/assets/media/icons/fill/communication/person_add_disabled.svg',\n      person_search: '/assets/media/icons/fill/communication/person_search.svg',\n      phone: '/assets/media/icons/fill/communication/phone.svg',\n      phonelink_erase: '/assets/media/icons/fill/communication/phonelink_erase.svg',\n      phonelink_lock: '/assets/media/icons/fill/communication/phonelink_lock.svg',\n      phonelink_ring: '/assets/media/icons/fill/communication/phonelink_ring.svg',\n      phonelink_setup: '/assets/media/icons/fill/communication/phonelink_setup.svg',\n      phone_disabled: '/assets/media/icons/fill/communication/phone_disabled.svg',\n      phone_enabled: '/assets/media/icons/fill/communication/phone_enabled.svg',\n      portable_wifi_off: '/assets/media/icons/fill/communication/portable_wifi_off.svg',\n      present_to_all: '/assets/media/icons/fill/communication/present_to_all.svg',\n      print_disabled: '/assets/media/icons/fill/communication/print_disabled.svg',\n      qr_code: '/assets/media/icons/fill/communication/qr_code.svg',\n      qr_code_scanner: '/assets/media/icons/fill/communication/qr_code_scanner.svg',\n      read_more: '/assets/media/icons/fill/communication/read_more.svg',\n      ring_volume: '/assets/media/icons/fill/communication/ring_volume.svg',\n      rss_feed: '/assets/media/icons/fill/communication/rss_feed.svg',\n      rtt: '/assets/media/icons/fill/communication/rtt.svg',\n      screen_share: '/assets/media/icons/fill/communication/screen_share.svg',\n      sentiment_satisfied_alt: '/assets/media/icons/fill/communication/sentiment_satisfied_alt.svg',\n      speaker_phone: '/assets/media/icons/fill/communication/speaker_phone.svg',\n      stay_current_landscape: '/assets/media/icons/fill/communication/stay_current_landscape.svg',\n      stay_current_portrait: '/assets/media/icons/fill/communication/stay_current_portrait.svg',\n      stay_primary_landscape: '/assets/media/icons/fill/communication/stay_primary_landscape.svg',\n      stay_primary_portrait: '/assets/media/icons/fill/communication/stay_primary_portrait.svg',\n      stop_screen_share: '/assets/media/icons/fill/communication/stop_screen_share.svg',\n      swap_calls: '/assets/media/icons/fill/communication/swap_calls.svg',\n      textsms: '/assets/media/icons/fill/communication/textsms.svg',\n      unsubscribe: '/assets/media/icons/fill/communication/unsubscribe.svg',\n      voicemail: '/assets/media/icons/fill/communication/voicemail.svg',\n      vpn_key: '/assets/media/icons/fill/communication/vpn_key.svg',\n      wifi_calling: '/assets/media/icons/fill/communication/wifi_calling.svg',\n    },\n    content: {\n      add: '/assets/media/icons/fill/content/add.svg',\n      add_box: '/assets/media/icons/fill/content/add_box.svg',\n      add_circle: '/assets/media/icons/fill/content/add_circle.svg',\n      add_circle_outline: '/assets/media/icons/fill/content/add_circle_outline.svg',\n      add_link: '/assets/media/icons/fill/content/add_link.svg',\n      amp_stories: '/assets/media/icons/fill/content/amp_stories.svg',\n      archive: '/assets/media/icons/fill/content/archive.svg',\n      backspace: '/assets/media/icons/fill/content/backspace.svg',\n      ballot: '/assets/media/icons/fill/content/ballot.svg',\n      biotech: '/assets/media/icons/fill/content/biotech.svg',\n      block: '/assets/media/icons/fill/content/block.svg',\n      block_flipped: '/assets/media/icons/fill/content/block_flipped.svg',\n      bolt: '/assets/media/icons/fill/content/bolt.svg',\n      calculate: '/assets/media/icons/fill/content/calculate.svg',\n      clear: '/assets/media/icons/fill/content/clear.svg',\n      content_copy: '/assets/media/icons/fill/content/content_copy.svg',\n      content_cut: '/assets/media/icons/fill/content/content_cut.svg',\n      content_paste: '/assets/media/icons/fill/content/content_paste.svg',\n      create: '/assets/media/icons/fill/content/create.svg',\n      delete_sweep: '/assets/media/icons/fill/content/delete_sweep.svg',\n      drafts: '/assets/media/icons/fill/content/drafts.svg',\n      dynamic_feed: '/assets/media/icons/fill/content/dynamic_feed.svg',\n      file_copy: '/assets/media/icons/fill/content/file_copy.svg',\n      filter_list: '/assets/media/icons/fill/content/filter_list.svg',\n      flag: '/assets/media/icons/fill/content/flag.svg',\n      font_download: '/assets/media/icons/fill/content/font_download.svg',\n      forward: '/assets/media/icons/fill/content/forward.svg',\n      gesture: '/assets/media/icons/fill/content/gesture.svg',\n      how_to_reg: '/assets/media/icons/fill/content/how_to_reg.svg',\n      how_to_vote: '/assets/media/icons/fill/content/how_to_vote.svg',\n      inbox: '/assets/media/icons/fill/content/inbox.svg',\n      insights: '/assets/media/icons/fill/content/insights.svg',\n      inventory: '/assets/media/icons/fill/content/inventory.svg',\n      link: '/assets/media/icons/fill/content/link.svg',\n      link_off: '/assets/media/icons/fill/content/link_off.svg',\n      low_priority: '/assets/media/icons/fill/content/low_priority.svg',\n      mail: '/assets/media/icons/fill/content/mail.svg',\n      markunread: '/assets/media/icons/fill/content/markunread.svg',\n      move_to_inbox: '/assets/media/icons/fill/content/move_to_inbox.svg',\n      next_week: '/assets/media/icons/fill/content/next_week.svg',\n      outlined_flag: '/assets/media/icons/fill/content/outlined_flag.svg',\n      policy: '/assets/media/icons/fill/content/policy.svg',\n      push_pin: '/assets/media/icons/fill/content/push_pin.svg',\n      redo: '/assets/media/icons/fill/content/redo.svg',\n      remove: '/assets/media/icons/fill/content/remove.svg',\n      remove_circle: '/assets/media/icons/fill/content/remove_circle.svg',\n      remove_circle_outline: '/assets/media/icons/fill/content/remove_circle_outline.svg',\n      reply: '/assets/media/icons/fill/content/reply.svg',\n      reply_all: '/assets/media/icons/fill/content/reply_all.svg',\n      report: '/assets/media/icons/fill/content/report.svg',\n      report_off: '/assets/media/icons/fill/content/report_off.svg',\n      save: '/assets/media/icons/fill/content/save.svg',\n      save_alt: '/assets/media/icons/fill/content/save_alt.svg',\n      select_all: '/assets/media/icons/fill/content/select_all.svg',\n      send: '/assets/media/icons/fill/content/send.svg',\n      shield: '/assets/media/icons/fill/content/shield.svg',\n      sort: '/assets/media/icons/fill/content/sort.svg',\n      square_foot: '/assets/media/icons/fill/content/square_foot.svg',\n      stacked_bar_chart: '/assets/media/icons/fill/content/stacked_bar_chart.svg',\n      stream: '/assets/media/icons/fill/content/stream.svg',\n      tag: '/assets/media/icons/fill/content/tag.svg',\n      text_format: '/assets/media/icons/fill/content/text_format.svg',\n      unarchive: '/assets/media/icons/fill/content/unarchive.svg',\n      undo: '/assets/media/icons/fill/content/undo.svg',\n      waves: '/assets/media/icons/fill/content/waves.svg',\n      weekend: '/assets/media/icons/fill/content/weekend.svg',\n      where_to_vote: '/assets/media/icons/fill/content/where_to_vote.svg',\n      percent: '/assets/media/icons/fill/content/percent.svg',\n    },\n    device: {\n      access_alarm: '/assets/media/icons/fill/device/access_alarm.svg',\n      access_alarms: '/assets/media/icons/fill/device/access_alarms.svg',\n      access_time: '/assets/media/icons/fill/device/access_time.svg',\n      add_alarm: '/assets/media/icons/fill/device/add_alarm.svg',\n      add_to_home_screen: '/assets/media/icons/fill/device/add_to_home_screen.svg',\n      ad_units: '/assets/media/icons/fill/device/ad_units.svg',\n      airplanemode_active: '/assets/media/icons/fill/device/airplanemode_active.svg',\n      airplanemode_inactive: '/assets/media/icons/fill/device/airplanemode_inactive.svg',\n      battery_alert: '/assets/media/icons/fill/device/battery_alert.svg',\n      battery_charging_full: '/assets/media/icons/fill/device/battery_charging_full.svg',\n      battery_full: '/assets/media/icons/fill/device/battery_full.svg',\n      battery_std: '/assets/media/icons/fill/device/battery_std.svg',\n      battery_unknown: '/assets/media/icons/fill/device/battery_unknown.svg',\n      bluetooth: '/assets/media/icons/fill/device/bluetooth.svg',\n      bluetooth_connected: '/assets/media/icons/fill/device/bluetooth_connected.svg',\n      bluetooth_disabled: '/assets/media/icons/fill/device/bluetooth_disabled.svg',\n      bluetooth_searching: '/assets/media/icons/fill/device/bluetooth_searching.svg',\n      brightness_auto: '/assets/media/icons/fill/device/brightness_auto.svg',\n      brightness_high: '/assets/media/icons/fill/device/brightness_high.svg',\n      brightness_low: '/assets/media/icons/fill/device/brightness_low.svg',\n      brightness_medium: '/assets/media/icons/fill/device/brightness_medium.svg',\n      data_usage: '/assets/media/icons/fill/device/data_usage.svg',\n      developer_mode: '/assets/media/icons/fill/device/developer_mode.svg',\n      devices: '/assets/media/icons/fill/device/devices.svg',\n      device_thermostat: '/assets/media/icons/fill/device/device_thermostat.svg',\n      dvr: '/assets/media/icons/fill/device/dvr.svg',\n      gps_fixed: '/assets/media/icons/fill/device/gps_fixed.svg',\n      gps_not_fixed: '/assets/media/icons/fill/device/gps_not_fixed.svg',\n      gps_off: '/assets/media/icons/fill/device/gps_off.svg',\n      graphic_eq: '/assets/media/icons/fill/device/graphic_eq.svg',\n      location_disabled: '/assets/media/icons/fill/device/location_disabled.svg',\n      location_searching: '/assets/media/icons/fill/device/location_searching.svg',\n      mobile_friendly: '/assets/media/icons/fill/device/mobile_friendly.svg',\n      mobile_off: '/assets/media/icons/fill/device/mobile_off.svg',\n      network_cell: '/assets/media/icons/fill/device/network_cell.svg',\n      network_wifi: '/assets/media/icons/fill/device/network_wifi.svg',\n      nfc: '/assets/media/icons/fill/device/nfc.svg',\n      reset_tv: '/assets/media/icons/fill/device/reset_tv.svg',\n      screen_lock_landscape: '/assets/media/icons/fill/device/screen_lock_landscape.svg',\n      screen_lock_portrait: '/assets/media/icons/fill/device/screen_lock_portrait.svg',\n      screen_lock_rotation: '/assets/media/icons/fill/device/screen_lock_rotation.svg',\n      screen_rotation: '/assets/media/icons/fill/device/screen_rotation.svg',\n      screen_search_desktop: '/assets/media/icons/fill/device/screen_search_desktop.svg',\n      sd_storage: '/assets/media/icons/fill/device/sd_storage.svg',\n      send_to_mobile: '/assets/media/icons/fill/device/send_to_mobile.svg',\n      settings_system_daydream: '/assets/media/icons/fill/device/settings_system_daydream.svg',\n      signal_cellular_0_bar: '/assets/media/icons/fill/device/signal_cellular_0_bar.svg',\n      signal_cellular_4_bar: '/assets/media/icons/fill/device/signal_cellular_4_bar.svg',\n      signal_cellular_alt: '/assets/media/icons/fill/device/signal_cellular_alt.svg',\n      signal_cellular_connected_no_internet_4_bar:\n        '/assets/media/icons/fill/device/signal_cellular_connected_no_internet_4_bar.svg',\n      signal_cellular_no_sim: '/assets/media/icons/fill/device/signal_cellular_no_sim.svg',\n      signal_cellular_null: '/assets/media/icons/fill/device/signal_cellular_null.svg',\n      signal_cellular_off: '/assets/media/icons/fill/device/signal_cellular_off.svg',\n      signal_wifi_0_bar: '/assets/media/icons/fill/device/signal_wifi_0_bar.svg',\n      signal_wifi_4_bar: '/assets/media/icons/fill/device/signal_wifi_4_bar.svg',\n      signal_wifi_4_bar_lock: '/assets/media/icons/fill/device/signal_wifi_4_bar_lock.svg',\n      signal_wifi_off: '/assets/media/icons/fill/device/signal_wifi_off.svg',\n      storage: '/assets/media/icons/fill/device/storage.svg',\n      usb: '/assets/media/icons/fill/device/usb.svg',\n      Vector1: '/assets/media/icons/fill/device/Vector-1.svg',\n      Vector: '/assets/media/icons/fill/device/Vector.svg',\n      wallpaper: '/assets/media/icons/fill/device/wallpaper.svg',\n      widgets: '/assets/media/icons/fill/device/widgets.svg',\n      wifi_lock: '/assets/media/icons/fill/device/wifi_lock.svg',\n    },\n    editor: {\n      add_chart: '/assets/media/icons/fill/editor/add_chart.svg',\n      add_comment: '/assets/media/icons/fill/editor/add_comment.svg',\n      attach_file: '/assets/media/icons/fill/editor/attach_file.svg',\n      attach_money: '/assets/media/icons/fill/editor/attach_money.svg',\n      bar_chart: '/assets/media/icons/fill/editor/bar_chart.svg',\n      border_all: '/assets/media/icons/fill/editor/border_all.svg',\n      border_bottom: '/assets/media/icons/fill/editor/border_bottom.svg',\n      border_clear: '/assets/media/icons/fill/editor/border_clear.svg',\n      border_color: '/assets/media/icons/fill/editor/border_color.svg',\n      border_horizontal: '/assets/media/icons/fill/editor/border_horizontal.svg',\n      border_inner: '/assets/media/icons/fill/editor/border_inner.svg',\n      border_left: '/assets/media/icons/fill/editor/border_left.svg',\n      border_outer: '/assets/media/icons/fill/editor/border_outer.svg',\n      border_right: '/assets/media/icons/fill/editor/border_right.svg',\n      border_style: '/assets/media/icons/fill/editor/border_style.svg',\n      border_top: '/assets/media/icons/fill/editor/border_top.svg',\n      border_vertical: '/assets/media/icons/fill/editor/border_vertical.svg',\n      bubble_chart: '/assets/media/icons/fill/editor/bubble_chart.svg',\n      drag_handle: '/assets/media/icons/fill/editor/drag_handle.svg',\n      format_align_center: '/assets/media/icons/fill/editor/format_align_center.svg',\n      format_align_justify: '/assets/media/icons/fill/editor/format_align_justify.svg',\n      format_align_left: '/assets/media/icons/fill/editor/format_align_left.svg',\n      format_align_right: '/assets/media/icons/fill/editor/format_align_right.svg',\n      format_bold: '/assets/media/icons/fill/editor/format_bold.svg',\n      format_clear: '/assets/media/icons/fill/editor/format_clear.svg',\n      format_color_fill: '/assets/media/icons/fill/editor/format_color_fill.svg',\n      format_color_reset: '/assets/media/icons/fill/editor/format_color_reset.svg',\n      format_color_text: '/assets/media/icons/fill/editor/format_color_text.svg',\n      format_indent_decrease: '/assets/media/icons/fill/editor/format_indent_decrease.svg',\n      format_indent_increase: '/assets/media/icons/fill/editor/format_indent_increase.svg',\n      format_italic: '/assets/media/icons/fill/editor/format_italic.svg',\n      format_line_spacing: '/assets/media/icons/fill/editor/format_line_spacing.svg',\n      format_list_bulleted: '/assets/media/icons/fill/editor/format_list_bulleted.svg',\n      format_list_numbered: '/assets/media/icons/fill/editor/format_list_numbered.svg',\n      format_list_numbered_rtl: '/assets/media/icons/fill/editor/format_list_numbered_rtl.svg',\n      format_paint: '/assets/media/icons/fill/editor/format_paint.svg',\n      format_quote: '/assets/media/icons/fill/editor/format_quote.svg',\n      format_shapes: '/assets/media/icons/fill/editor/format_shapes.svg',\n      format_size: '/assets/media/icons/fill/editor/format_size.svg',\n      format_strikethrough: '/assets/media/icons/fill/editor/format_strikethrough.svg',\n      format_textdirection_l_to_r:\n        '/assets/media/icons/fill/editor/format_textdirection_l_to_r.svg',\n      format_textdirection_r_to_l:\n        '/assets/media/icons/fill/editor/format_textdirection_r_to_l.svg',\n      format_underlined: '/assets/media/icons/fill/editor/format_underlined.svg',\n      functions: '/assets/media/icons/fill/editor/functions.svg',\n      height: '/assets/media/icons/fill/editor/height.svg',\n      highlight: '/assets/media/icons/fill/editor/highlight.svg',\n      horizontal_rule: '/assets/media/icons/fill/editor/horizontal_rule.svg',\n      insert_chart: '/assets/media/icons/fill/editor/insert_chart.svg',\n      insert_chart_outlined: '/assets/media/icons/fill/editor/insert_chart_outlined.svg',\n      insert_comment: '/assets/media/icons/fill/editor/insert_comment.svg',\n      insert_drive_file: '/assets/media/icons/fill/editor/insert_drive_file.svg',\n      insert_emoticon: '/assets/media/icons/fill/editor/insert_emoticon.svg',\n      insert_invitation: '/assets/media/icons/fill/editor/insert_invitation.svg',\n      insert_link: '/assets/media/icons/fill/editor/insert_link.svg',\n      insert_photo: '/assets/media/icons/fill/editor/insert_photo.svg',\n      linear_scale: '/assets/media/icons/fill/editor/linear_scale.svg',\n      margin: '/assets/media/icons/fill/editor/margin.svg',\n      merge_type: '/assets/media/icons/fill/editor/merge_type.svg',\n      mode_comment: '/assets/media/icons/fill/editor/mode_comment.svg',\n      mode_edit: '/assets/media/icons/fill/editor/mode_edit.svg',\n      monetization_on: '/assets/media/icons/fill/editor/monetization_on.svg',\n      money_off: '/assets/media/icons/fill/editor/money_off.svg',\n      multiline_chart: '/assets/media/icons/fill/editor/multiline_chart.svg',\n      notes: '/assets/media/icons/fill/editor/notes.svg',\n      padding: '/assets/media/icons/fill/editor/padding.svg',\n      pie_chart: '/assets/media/icons/fill/editor/pie_chart.svg',\n      pie_chart_outlined: '/assets/media/icons/fill/editor/pie_chart_outlined.svg',\n      post_add: '/assets/media/icons/fill/editor/post_add.svg',\n      publish: '/assets/media/icons/fill/editor/publish.svg',\n      scatter_plot: '/assets/media/icons/fill/editor/scatter_plot.svg',\n      score: '/assets/media/icons/fill/editor/score.svg',\n      short_text: '/assets/media/icons/fill/editor/short_text.svg',\n      show_chart: '/assets/media/icons/fill/editor/show_chart.svg',\n      space_bar: '/assets/media/icons/fill/editor/space_bar.svg',\n      stacked_line_chart: '/assets/media/icons/fill/editor/stacked_line_chart.svg',\n      strikethrough_s: '/assets/media/icons/fill/editor/strikethrough_s.svg',\n      subscript: '/assets/media/icons/fill/editor/subscript.svg',\n      superscript: '/assets/media/icons/fill/editor/superscript.svg',\n      table_chart: '/assets/media/icons/fill/editor/table_chart.svg',\n      table_rows: '/assets/media/icons/fill/editor/table_rows.svg',\n      text_fields: '/assets/media/icons/fill/editor/text_fields.svg',\n      title: '/assets/media/icons/fill/editor/title.svg',\n      vertical_align_bottom: '/assets/media/icons/fill/editor/vertical_align_bottom.svg',\n      vertical_align_center: '/assets/media/icons/fill/editor/vertical_align_center.svg',\n      vertical_align_top: '/assets/media/icons/fill/editor/vertical_align_top.svg',\n      wrap_text: '/assets/media/icons/fill/editor/wrap_text.svg',\n    },\n    file: {\n      approval: '/assets/media/icons/fill/file/approval.svg',\n      attachment: '/assets/media/icons/fill/file/attachment.svg',\n      attach_email: '/assets/media/icons/fill/file/attach_email.svg',\n      cloud: '/assets/media/icons/fill/file/cloud.svg',\n      cloud_circle: '/assets/media/icons/fill/file/cloud_circle.svg',\n      cloud_done: '/assets/media/icons/fill/file/cloud_done.svg',\n      cloud_download: '/assets/media/icons/fill/file/cloud_download.svg',\n      cloud_off: '/assets/media/icons/fill/file/cloud_off.svg',\n      cloud_queue: '/assets/media/icons/fill/file/cloud_queue.svg',\n      cloud_upload: '/assets/media/icons/fill/file/cloud_upload.svg',\n      create_new_folder: '/assets/media/icons/fill/file/create_new_folder.svg',\n      drive_file_move: '/assets/media/icons/fill/file/drive_file_move.svg',\n      drive_file_move_outline: '/assets/media/icons/fill/file/drive_file_move_outline.svg',\n      drive_file_rename_outline: '/assets/media/icons/fill/file/drive_file_rename_outline.svg',\n      drive_folder_upload: '/assets/media/icons/fill/file/drive_folder_upload.svg',\n      file_download: '/assets/media/icons/fill/file/file_download.svg',\n      file_download_done: '/assets/media/icons/fill/file/file_download_done.svg',\n      file_upload: '/assets/media/icons/fill/file/file_upload.svg',\n      folder: '/assets/media/icons/fill/file/folder.svg',\n      folder_open: '/assets/media/icons/fill/file/folder_open.svg',\n      folder_shared: '/assets/media/icons/fill/file/folder_shared.svg',\n      grid_view: '/assets/media/icons/fill/file/grid_view.svg',\n      request_quote: '/assets/media/icons/fill/file/request_quote.svg',\n      rule_folder: '/assets/media/icons/fill/file/rule_folder.svg',\n      snippet_folder: '/assets/media/icons/fill/file/snippet_folder.svg',\n      text_snippet: '/assets/media/icons/fill/file/text_snippet.svg',\n      topic: '/assets/media/icons/fill/file/topic.svg',\n      upload_file: '/assets/media/icons/fill/file/upload_file.svg',\n      workspaces_filled: '/assets/media/icons/fill/file/workspaces_filled.svg',\n      workspaces_outline: '/assets/media/icons/fill/file/workspaces_outline.svg',\n    },\n    hardware: {\n      browser_not_supported: '/assets/media/icons/fill/hardware/browser_not_supported.svg',\n      cast: '/assets/media/icons/fill/hardware/cast.svg',\n      cast_connected: '/assets/media/icons/fill/hardware/cast_connected.svg',\n      cast_for_education: '/assets/media/icons/fill/hardware/cast_for_education.svg',\n      computer: '/assets/media/icons/fill/hardware/computer.svg',\n      connected_tv: '/assets/media/icons/fill/hardware/connected_tv.svg',\n      desktop_mac: '/assets/media/icons/fill/hardware/desktop_mac.svg',\n      desktop_windows: '/assets/media/icons/fill/hardware/desktop_windows.svg',\n      developer_board: '/assets/media/icons/fill/hardware/developer_board.svg',\n      devices_other: '/assets/media/icons/fill/hardware/devices_other.svg',\n      device_hub: '/assets/media/icons/fill/hardware/device_hub.svg',\n      device_unknown: '/assets/media/icons/fill/hardware/device_unknown.svg',\n      dock: '/assets/media/icons/fill/hardware/dock.svg',\n      gamepad: '/assets/media/icons/fill/hardware/gamepad.svg',\n      headset: '/assets/media/icons/fill/hardware/headset.svg',\n      headset_mic: '/assets/media/icons/fill/hardware/headset_mic.svg',\n      headset_off: '/assets/media/icons/fill/hardware/headset_off.svg',\n      keyboard: '/assets/media/icons/fill/hardware/keyboard.svg',\n      keyboard_arrow_down: '/assets/media/icons/fill/hardware/keyboard_arrow_down.svg',\n      keyboard_arrow_left: '/assets/media/icons/fill/hardware/keyboard_arrow_left.svg',\n      keyboard_arrow_right: '/assets/media/icons/fill/hardware/keyboard_arrow_right.svg',\n      keyboard_arrow_up: '/assets/media/icons/fill/hardware/keyboard_arrow_up.svg',\n      keyboard_backspace: '/assets/media/icons/fill/hardware/keyboard_backspace.svg',\n      keyboard_capslock: '/assets/media/icons/fill/hardware/keyboard_capslock.svg',\n      keyboard_hide: '/assets/media/icons/fill/hardware/keyboard_hide.svg',\n      keyboard_return: '/assets/media/icons/fill/hardware/keyboard_return.svg',\n      keyboard_tab: '/assets/media/icons/fill/hardware/keyboard_tab.svg',\n      keyboard_voice: '/assets/media/icons/fill/hardware/keyboard_voice.svg',\n      laptop: '/assets/media/icons/fill/hardware/laptop.svg',\n      laptop_chromebook: '/assets/media/icons/fill/hardware/laptop_chromebook.svg',\n      laptop_mac: '/assets/media/icons/fill/hardware/laptop_mac.svg',\n      laptop_windows: '/assets/media/icons/fill/hardware/laptop_windows.svg',\n      memory: '/assets/media/icons/fill/hardware/memory.svg',\n      monitor: '/assets/media/icons/fill/hardware/monitor.svg',\n      mouse: '/assets/media/icons/fill/hardware/mouse.svg',\n      phonelink: '/assets/media/icons/fill/hardware/phonelink.svg',\n      phonelink_off: '/assets/media/icons/fill/hardware/phonelink_off.svg',\n      phone_android: '/assets/media/icons/fill/hardware/phone_android.svg',\n      phone_iphone: '/assets/media/icons/fill/hardware/phone_iphone.svg',\n      point_of_sale: '/assets/media/icons/fill/hardware/point_of_sale.svg',\n      power_input: '/assets/media/icons/fill/hardware/power_input.svg',\n      router: '/assets/media/icons/fill/hardware/router.svg',\n      scanner: '/assets/media/icons/fill/hardware/scanner.svg',\n      security: '/assets/media/icons/fill/hardware/security.svg',\n      sim_card: '/assets/media/icons/fill/hardware/sim_card.svg',\n      smartphone: '/assets/media/icons/fill/hardware/smartphone.svg',\n      speaker: '/assets/media/icons/fill/hardware/speaker.svg',\n      speaker_group: '/assets/media/icons/fill/hardware/speaker_group.svg',\n      tablet: '/assets/media/icons/fill/hardware/tablet.svg',\n      tablet_android: '/assets/media/icons/fill/hardware/tablet_android.svg',\n      tablet_mac: '/assets/media/icons/fill/hardware/tablet_mac.svg',\n      toys: '/assets/media/icons/fill/hardware/toys.svg',\n      tv: '/assets/media/icons/fill/hardware/tv.svg',\n      videogame_asset: '/assets/media/icons/fill/hardware/videogame_asset.svg',\n      watch: '/assets/media/icons/fill/hardware/watch.svg',\n    },\n    home: {\n      sensor_door: '/assets/media/icons/fill/home/sensor_door.svg',\n      sensor_window: '/assets/media/icons/fill/home/sensor_window.svg',\n    },\n    image: {\n      '10mp': '/assets/media/icons/fill/image/10mp.svg',\n      '11mp': '/assets/media/icons/fill/image/11mp.svg',\n      '12mp': '/assets/media/icons/fill/image/12mp.svg',\n      '13mp': '/assets/media/icons/fill/image/13mp.svg',\n      '14mp': '/assets/media/icons/fill/image/14mp.svg',\n      '15mp': '/assets/media/icons/fill/image/15mp.svg',\n      '16mp': '/assets/media/icons/fill/image/16mp.svg',\n      '17mp': '/assets/media/icons/fill/image/17mp.svg',\n      '18mp': '/assets/media/icons/fill/image/18mp.svg',\n      '19mp': '/assets/media/icons/fill/image/19mp.svg',\n      '20mp': '/assets/media/icons/fill/image/20mp.svg',\n      '21mp': '/assets/media/icons/fill/image/21mp.svg',\n      '22mp': '/assets/media/icons/fill/image/22mp.svg',\n      '23mp': '/assets/media/icons/fill/image/23mp.svg',\n      '24mp': '/assets/media/icons/fill/image/24mp.svg',\n      '2mp': '/assets/media/icons/fill/image/2mp.svg',\n      '3mp': '/assets/media/icons/fill/image/3mp.svg',\n      '4mp': '/assets/media/icons/fill/image/4mp.svg',\n      '5mp': '/assets/media/icons/fill/image/5mp.svg',\n      '6mp': '/assets/media/icons/fill/image/6mp.svg',\n      '7mp': '/assets/media/icons/fill/image/7mp.svg',\n      '8mp': '/assets/media/icons/fill/image/8mp.svg',\n      '9mp': '/assets/media/icons/fill/image/9mp.svg',\n      add_a_photo: '/assets/media/icons/fill/image/add_a_photo.svg',\n      add_photo_alternate: '/assets/media/icons/fill/image/add_photo_alternate.svg',\n      add_to_photos: '/assets/media/icons/fill/image/add_to_photos.svg',\n      adjust: '/assets/media/icons/fill/image/adjust.svg',\n      animation: '/assets/media/icons/fill/image/animation.svg',\n      assistant: '/assets/media/icons/fill/image/assistant.svg',\n      assistant_photo: '/assets/media/icons/fill/image/assistant_photo.svg',\n      audiotrack: '/assets/media/icons/fill/image/audiotrack.svg',\n      auto_awesome: '/assets/media/icons/fill/image/auto_awesome.svg',\n      auto_awesome_mosaic: '/assets/media/icons/fill/image/auto_awesome_mosaic.svg',\n      auto_awesome_motion: '/assets/media/icons/fill/image/auto_awesome_motion.svg',\n      auto_fix_high: '/assets/media/icons/fill/image/auto_fix_high.svg',\n      auto_fix_normal: '/assets/media/icons/fill/image/auto_fix_normal.svg',\n      auto_fix_off: '/assets/media/icons/fill/image/auto_fix_off.svg',\n      auto_stories: '/assets/media/icons/fill/image/auto_stories.svg',\n      bedtime: '/assets/media/icons/fill/image/bedtime.svg',\n      blur_circular: '/assets/media/icons/fill/image/blur_circular.svg',\n      blur_linear: '/assets/media/icons/fill/image/blur_linear.svg',\n      blur_off: '/assets/media/icons/fill/image/blur_off.svg',\n      blur_on: '/assets/media/icons/fill/image/blur_on.svg',\n      brightness_1: '/assets/media/icons/fill/image/brightness_1.svg',\n      brightness_2: '/assets/media/icons/fill/image/brightness_2.svg',\n      brightness_3: '/assets/media/icons/fill/image/brightness_3.svg',\n      brightness_4: '/assets/media/icons/fill/image/brightness_4.svg',\n      brightness_5: '/assets/media/icons/fill/image/brightness_5.svg',\n      brightness_6: '/assets/media/icons/fill/image/brightness_6.svg',\n      brightness_7: '/assets/media/icons/fill/image/brightness_7.svg',\n      broken_image: '/assets/media/icons/fill/image/broken_image.svg',\n      brush: '/assets/media/icons/fill/image/brush.svg',\n      burst_mode: '/assets/media/icons/fill/image/burst_mode.svg',\n      camera: '/assets/media/icons/fill/image/camera.svg',\n      camera_alt: '/assets/media/icons/fill/image/camera_alt.svg',\n      camera_front: '/assets/media/icons/fill/image/camera_front.svg',\n      camera_rear: '/assets/media/icons/fill/image/camera_rear.svg',\n      camera_roll: '/assets/media/icons/fill/image/camera_roll.svg',\n      cases: '/assets/media/icons/fill/image/cases.svg',\n      center_focus_strong: '/assets/media/icons/fill/image/center_focus_strong.svg',\n      center_focus_weak: '/assets/media/icons/fill/image/center_focus_weak.svg',\n      circle: '/assets/media/icons/fill/image/circle.svg',\n      collections: '/assets/media/icons/fill/image/collections.svg',\n      collections_bookmark: '/assets/media/icons/fill/image/collections_bookmark.svg',\n      colorize: '/assets/media/icons/fill/image/colorize.svg',\n      color_lens: '/assets/media/icons/fill/image/color_lens.svg',\n      compare: '/assets/media/icons/fill/image/compare.svg',\n      control_point: '/assets/media/icons/fill/image/control_point.svg',\n      control_point_duplicate: '/assets/media/icons/fill/image/control_point_duplicate.svg',\n      crop: '/assets/media/icons/fill/image/crop.svg',\n      crop_16_9: '/assets/media/icons/fill/image/crop_16_9.svg',\n      crop_3_2: '/assets/media/icons/fill/image/crop_3_2.svg',\n      crop_5_4: '/assets/media/icons/fill/image/crop_5_4.svg',\n      crop_7_5: '/assets/media/icons/fill/image/crop_7_5.svg',\n      crop_din: '/assets/media/icons/fill/image/crop_din.svg',\n      crop_free: '/assets/media/icons/fill/image/crop_free.svg',\n      crop_landscape: '/assets/media/icons/fill/image/crop_landscape.svg',\n      crop_original: '/assets/media/icons/fill/image/crop_original.svg',\n      crop_portrait: '/assets/media/icons/fill/image/crop_portrait.svg',\n      crop_rotate: '/assets/media/icons/fill/image/crop_rotate.svg',\n      crop_square: '/assets/media/icons/fill/image/crop_square.svg',\n      dehaze: '/assets/media/icons/fill/image/dehaze.svg',\n      details: '/assets/media/icons/fill/image/details.svg',\n      dirty_lens: '/assets/media/icons/fill/image/dirty_lens.svg',\n      edit: '/assets/media/icons/fill/image/edit.svg',\n      euro: '/assets/media/icons/fill/image/euro.svg',\n      exposure: '/assets/media/icons/fill/image/exposure.svg',\n      exposure_neg_1: '/assets/media/icons/fill/image/exposure_neg_1.svg',\n      exposure_neg_2: '/assets/media/icons/fill/image/exposure_neg_2.svg',\n      exposure_plus_1: '/assets/media/icons/fill/image/exposure_plus_1.svg',\n      exposure_plus_2: '/assets/media/icons/fill/image/exposure_plus_2.svg',\n      exposure_zero: '/assets/media/icons/fill/image/exposure_zero.svg',\n      face_retouching_natural: '/assets/media/icons/fill/image/face_retouching_natural.svg',\n      filter: '/assets/media/icons/fill/image/filter.svg',\n      filter_1: '/assets/media/icons/fill/image/filter_1.svg',\n      filter_2: '/assets/media/icons/fill/image/filter_2.svg',\n      filter_3: '/assets/media/icons/fill/image/filter_3.svg',\n      filter_4: '/assets/media/icons/fill/image/filter_4.svg',\n      filter_5: '/assets/media/icons/fill/image/filter_5.svg',\n      filter_6: '/assets/media/icons/fill/image/filter_6.svg',\n      filter_7: '/assets/media/icons/fill/image/filter_7.svg',\n      filter_8: '/assets/media/icons/fill/image/filter_8.svg',\n      filter_9: '/assets/media/icons/fill/image/filter_9.svg',\n      filter_9_plus: '/assets/media/icons/fill/image/filter_9_plus.svg',\n      filter_b_and_w: '/assets/media/icons/fill/image/filter_b_and_w.svg',\n      filter_center_focus: '/assets/media/icons/fill/image/filter_center_focus.svg',\n      filter_drama: '/assets/media/icons/fill/image/filter_drama.svg',\n      filter_frames: '/assets/media/icons/fill/image/filter_frames.svg',\n      filter_hdr: '/assets/media/icons/fill/image/filter_hdr.svg',\n      filter_none: '/assets/media/icons/fill/image/filter_none.svg',\n      filter_tilt_shift: '/assets/media/icons/fill/image/filter_tilt_shift.svg',\n      filter_vintage: '/assets/media/icons/fill/image/filter_vintage.svg',\n      flare: '/assets/media/icons/fill/image/flare.svg',\n      flash_auto: '/assets/media/icons/fill/image/flash_auto.svg',\n      flash_off: '/assets/media/icons/fill/image/flash_off.svg',\n      flash_on: '/assets/media/icons/fill/image/flash_on.svg',\n      flip: '/assets/media/icons/fill/image/flip.svg',\n      flip_camera_android: '/assets/media/icons/fill/image/flip_camera_android.svg',\n      flip_camera_ios: '/assets/media/icons/fill/image/flip_camera_ios.svg',\n      gradient: '/assets/media/icons/fill/image/gradient.svg',\n      grain: '/assets/media/icons/fill/image/grain.svg',\n      grid_off: '/assets/media/icons/fill/image/grid_off.svg',\n      grid_on: '/assets/media/icons/fill/image/grid_on.svg',\n      hdr_enhanced_select: '/assets/media/icons/fill/image/hdr_enhanced_select.svg',\n      hdr_off: '/assets/media/icons/fill/image/hdr_off.svg',\n      hdr_on: '/assets/media/icons/fill/image/hdr_on.svg',\n      hdr_strong: '/assets/media/icons/fill/image/hdr_strong.svg',\n      hdr_weak: '/assets/media/icons/fill/image/hdr_weak.svg',\n      healing: '/assets/media/icons/fill/image/healing.svg',\n      image: '/assets/media/icons/fill/image/image.svg',\n      image_aspect_ratio: '/assets/media/icons/fill/image/image_aspect_ratio.svg',\n      image_not_supported: '/assets/media/icons/fill/image/image_not_supported.svg',\n      image_search: '/assets/media/icons/fill/image/image_search.svg',\n      iso: '/assets/media/icons/fill/image/iso.svg',\n      landscape: '/assets/media/icons/fill/image/landscape.svg',\n      leak_add: '/assets/media/icons/fill/image/leak_add.svg',\n      leak_remove: '/assets/media/icons/fill/image/leak_remove.svg',\n      lens: '/assets/media/icons/fill/image/lens.svg',\n      linked_camera: '/assets/media/icons/fill/image/linked_camera.svg',\n      looks: '/assets/media/icons/fill/image/looks.svg',\n      looks_3: '/assets/media/icons/fill/image/looks_3.svg',\n      looks_4: '/assets/media/icons/fill/image/looks_4.svg',\n      looks_5: '/assets/media/icons/fill/image/looks_5.svg',\n      looks_6: '/assets/media/icons/fill/image/looks_6.svg',\n      looks_one: '/assets/media/icons/fill/image/looks_one.svg',\n      looks_two: '/assets/media/icons/fill/image/looks_two.svg',\n      loupe: '/assets/media/icons/fill/image/loupe.svg',\n      mic_external_off: '/assets/media/icons/fill/image/mic_external_off.svg',\n      mic_external_on: '/assets/media/icons/fill/image/mic_external_on.svg',\n      monochrome_photos: '/assets/media/icons/fill/image/monochrome_photos.svg',\n      motion_photos_off: '/assets/media/icons/fill/image/motion_photos_off.svg',\n      motion_photos_on: '/assets/media/icons/fill/image/motion_photos_on.svg',\n      motion_photos_pause: '/assets/media/icons/fill/image/motion_photos_pause.svg',\n      motion_photos_paused: '/assets/media/icons/fill/image/motion_photos_paused.svg',\n      movie_creation: '/assets/media/icons/fill/image/movie_creation.svg',\n      movie_filter: '/assets/media/icons/fill/image/movie_filter.svg',\n      mp: '/assets/media/icons/fill/image/mp.svg',\n      music_note: '/assets/media/icons/fill/image/music_note.svg',\n      music_off: '/assets/media/icons/fill/image/music_off.svg',\n      nature: '/assets/media/icons/fill/image/nature.svg',\n      nature_people: '/assets/media/icons/fill/image/nature_people.svg',\n      navigate_before: '/assets/media/icons/fill/image/navigate_before.svg',\n      navigate_next: '/assets/media/icons/fill/image/navigate_next.svg',\n      palette: '/assets/media/icons/fill/image/palette.svg',\n      panorama: '/assets/media/icons/fill/image/panorama.svg',\n      panorama_fish_eye: '/assets/media/icons/fill/image/panorama_fish_eye.svg',\n      panorama_horizontal: '/assets/media/icons/fill/image/panorama_horizontal.svg',\n      panorama_horizontal_select: '/assets/media/icons/fill/image/panorama_horizontal_select.svg',\n      panorama_photosphere: '/assets/media/icons/fill/image/panorama_photosphere.svg',\n      panorama_photosphere_select: '/assets/media/icons/fill/image/panorama_photosphere_select.svg',\n      panorama_vertical: '/assets/media/icons/fill/image/panorama_vertical.svg',\n      panorama_vertical_select: '/assets/media/icons/fill/image/panorama_vertical_select.svg',\n      panorama_wide_angle: '/assets/media/icons/fill/image/panorama_wide_angle.svg',\n      panorama_wide_angle_select: '/assets/media/icons/fill/image/panorama_wide_angle_select.svg',\n      photo: '/assets/media/icons/fill/image/photo.svg',\n      photo_album: '/assets/media/icons/fill/image/photo_album.svg',\n      photo_camera: '/assets/media/icons/fill/image/photo_camera.svg',\n      photo_camera_back: '/assets/media/icons/fill/image/photo_camera_back.svg',\n      photo_camera_front: '/assets/media/icons/fill/image/photo_camera_front.svg',\n      photo_filter: '/assets/media/icons/fill/image/photo_filter.svg',\n      photo_library: '/assets/media/icons/fill/image/photo_library.svg',\n      photo_size_select_actual: '/assets/media/icons/fill/image/photo_size_select_actual.svg',\n      photo_size_select_large: '/assets/media/icons/fill/image/photo_size_select_large.svg',\n      photo_size_select_small: '/assets/media/icons/fill/image/photo_size_select_small.svg',\n      picture_as_pdf: '/assets/media/icons/fill/image/picture_as_pdf.svg',\n      portrait: '/assets/media/icons/fill/image/portrait.svg',\n      receipt_long: '/assets/media/icons/fill/image/receipt_long.svg',\n      remove_red_eye: '/assets/media/icons/fill/image/remove_red_eye.svg',\n      rotate_90_degrees_ccw: '/assets/media/icons/fill/image/rotate_90_degrees_ccw.svg',\n      rotate_left: '/assets/media/icons/fill/image/rotate_left.svg',\n      rotate_right: '/assets/media/icons/fill/image/rotate_right.svg',\n      shutter_speed: '/assets/media/icons/fill/image/shutter_speed.svg',\n      slideshow: '/assets/media/icons/fill/image/slideshow.svg',\n      straighten: '/assets/media/icons/fill/image/straighten.svg',\n      style: '/assets/media/icons/fill/image/style.svg',\n      switch_camera: '/assets/media/icons/fill/image/switch_camera.svg',\n      switch_video: '/assets/media/icons/fill/image/switch_video.svg',\n      tag_faces: '/assets/media/icons/fill/image/tag_faces.svg',\n      texture: '/assets/media/icons/fill/image/texture.svg',\n      timelapse: '/assets/media/icons/fill/image/timelapse.svg',\n      timer: '/assets/media/icons/fill/image/timer.svg',\n      timer_10: '/assets/media/icons/fill/image/timer_10.svg',\n      timer_3: '/assets/media/icons/fill/image/timer_3.svg',\n      timer_off: '/assets/media/icons/fill/image/timer_off.svg',\n      tonality: '/assets/media/icons/fill/image/tonality.svg',\n      transform: '/assets/media/icons/fill/image/transform.svg',\n      tune: '/assets/media/icons/fill/image/tune.svg',\n      view_comfy: '/assets/media/icons/fill/image/view_comfy.svg',\n      view_compact: '/assets/media/icons/fill/image/view_compact.svg',\n      vignette: '/assets/media/icons/fill/image/vignette.svg',\n      wb_auto: '/assets/media/icons/fill/image/wb_auto.svg',\n      wb_cloudy: '/assets/media/icons/fill/image/wb_cloudy.svg',\n      wb_incandescent: '/assets/media/icons/fill/image/wb_incandescent.svg',\n      wb_iridescent: '/assets/media/icons/fill/image/wb_iridescent.svg',\n      wb_shade: '/assets/media/icons/fill/image/wb_shade.svg',\n      wb_sunny: '/assets/media/icons/fill/image/wb_sunny.svg',\n      wb_twighlight: '/assets/media/icons/fill/image/wb_twighlight.svg',\n    },\n    maps: {\n      '360': '/assets/media/icons/fill/maps/360.svg',\n      add_business: '/assets/media/icons/fill/maps/add_business.svg',\n      add_location: '/assets/media/icons/fill/maps/add_location.svg',\n      add_location_alt: '/assets/media/icons/fill/maps/add_location_alt.svg',\n      add_road: '/assets/media/icons/fill/maps/add_road.svg',\n      agriculture: '/assets/media/icons/fill/maps/agriculture.svg',\n      alt_route: '/assets/media/icons/fill/maps/alt_route.svg',\n      atm: '/assets/media/icons/fill/maps/atm.svg',\n      attractions: '/assets/media/icons/fill/maps/attractions.svg',\n      badge: '/assets/media/icons/fill/maps/badge.svg',\n      bakery_dining: '/assets/media/icons/fill/maps/bakery_dining.svg',\n      beenhere: '/assets/media/icons/fill/maps/beenhere.svg',\n      bike_scooter: '/assets/media/icons/fill/maps/bike_scooter.svg',\n      breakfast_dining: '/assets/media/icons/fill/maps/breakfast_dining.svg',\n      brunch_dining: '/assets/media/icons/fill/maps/brunch_dining.svg',\n      bus_alert: '/assets/media/icons/fill/maps/bus_alert.svg',\n      car_rental: '/assets/media/icons/fill/maps/car_rental.svg',\n      car_repair: '/assets/media/icons/fill/maps/car_repair.svg',\n      category: '/assets/media/icons/fill/maps/category.svg',\n      celebration: '/assets/media/icons/fill/maps/celebration.svg',\n      cleaning_services: '/assets/media/icons/fill/maps/cleaning_services.svg',\n      compass_calibration: '/assets/media/icons/fill/maps/compass_calibration.svg',\n      delivery_dining: '/assets/media/icons/fill/maps/delivery_dining.svg',\n      departure_board: '/assets/media/icons/fill/maps/departure_board.svg',\n      design_services: '/assets/media/icons/fill/maps/design_services.svg',\n      dinner_dining: '/assets/media/icons/fill/maps/dinner_dining.svg',\n      directions: '/assets/media/icons/fill/maps/directions.svg',\n      directions_bike: '/assets/media/icons/fill/maps/directions_bike.svg',\n      directions_boat: '/assets/media/icons/fill/maps/directions_boat.svg',\n      directions_bus: '/assets/media/icons/fill/maps/directions_bus.svg',\n      directions_car: '/assets/media/icons/fill/maps/directions_car.svg',\n      directions_railway: '/assets/media/icons/fill/maps/directions_railway.svg',\n      directions_run: '/assets/media/icons/fill/maps/directions_run.svg',\n      directions_subway: '/assets/media/icons/fill/maps/directions_subway.svg',\n      directions_transit: '/assets/media/icons/fill/maps/directions_transit.svg',\n      directions_walk: '/assets/media/icons/fill/maps/directions_walk.svg',\n      dry_cleaning: '/assets/media/icons/fill/maps/dry_cleaning.svg',\n      edit_attributes: '/assets/media/icons/fill/maps/edit_attributes.svg',\n      edit_location: '/assets/media/icons/fill/maps/edit_location.svg',\n      edit_road: '/assets/media/icons/fill/maps/edit_road.svg',\n      electrical_services: '/assets/media/icons/fill/maps/electrical_services.svg',\n      electric_bike: '/assets/media/icons/fill/maps/electric_bike.svg',\n      electric_car: '/assets/media/icons/fill/maps/electric_car.svg',\n      electric_moped: '/assets/media/icons/fill/maps/electric_moped.svg',\n      electric_rickshaw: '/assets/media/icons/fill/maps/electric_rickshaw.svg',\n      electric_scooter: '/assets/media/icons/fill/maps/electric_scooter.svg',\n      ev_station: '/assets/media/icons/fill/maps/ev_station.svg',\n      fastfood: '/assets/media/icons/fill/maps/fastfood.svg',\n      festival: '/assets/media/icons/fill/maps/festival.svg',\n      flight: '/assets/media/icons/fill/maps/flight.svg',\n      hail: '/assets/media/icons/fill/maps/hail.svg',\n      handyman: '/assets/media/icons/fill/maps/handyman.svg',\n      hardware: '/assets/media/icons/fill/maps/hardware.svg',\n      home_repair_service: '/assets/media/icons/fill/maps/home_repair_service.svg',\n      hotel: '/assets/media/icons/fill/maps/hotel.svg',\n      hvac: '/assets/media/icons/fill/maps/hvac.svg',\n      icecream: '/assets/media/icons/fill/maps/icecream.svg',\n      layers: '/assets/media/icons/fill/maps/layers.svg',\n      layers_clear: '/assets/media/icons/fill/maps/layers_clear.svg',\n      liquor: '/assets/media/icons/fill/maps/liquor.svg',\n      local_activity: '/assets/media/icons/fill/maps/local_activity.svg',\n      local_airport: '/assets/media/icons/fill/maps/local_airport.svg',\n      local_atm: '/assets/media/icons/fill/maps/local_atm.svg',\n      local_bar: '/assets/media/icons/fill/maps/local_bar.svg',\n      local_cafe: '/assets/media/icons/fill/maps/local_cafe.svg',\n      local_car_wash: '/assets/media/icons/fill/maps/local_car_wash.svg',\n      local_convenience_store: '/assets/media/icons/fill/maps/local_convenience_store.svg',\n      local_dining: '/assets/media/icons/fill/maps/local_dining.svg',\n      local_drink: '/assets/media/icons/fill/maps/local_drink.svg',\n      local_fire_department: '/assets/media/icons/fill/maps/local_fire_department.svg',\n      local_florist: '/assets/media/icons/fill/maps/local_florist.svg',\n      local_gas_station: '/assets/media/icons/fill/maps/local_gas_station.svg',\n      local_grocery_store: '/assets/media/icons/fill/maps/local_grocery_store.svg',\n      local_hospital: '/assets/media/icons/fill/maps/local_hospital.svg',\n      local_hotel: '/assets/media/icons/fill/maps/local_hotel.svg',\n      local_laundry_service: '/assets/media/icons/fill/maps/local_laundry_service.svg',\n      local_library: '/assets/media/icons/fill/maps/local_library.svg',\n      local_mall: '/assets/media/icons/fill/maps/local_mall.svg',\n      local_movies: '/assets/media/icons/fill/maps/local_movies.svg',\n      local_offer: '/assets/media/icons/fill/maps/local_offer.svg',\n      local_parking: '/assets/media/icons/fill/maps/local_parking.svg',\n      local_pharmacy: '/assets/media/icons/fill/maps/local_pharmacy.svg',\n      local_phone: '/assets/media/icons/fill/maps/local_phone.svg',\n      local_pizza: '/assets/media/icons/fill/maps/local_pizza.svg',\n      local_play: '/assets/media/icons/fill/maps/local_play.svg',\n      local_police: '/assets/media/icons/fill/maps/local_police.svg',\n      local_post_office: '/assets/media/icons/fill/maps/local_post_office.svg',\n      local_printshop: '/assets/media/icons/fill/maps/local_printshop.svg',\n      local_see: '/assets/media/icons/fill/maps/local_see.svg',\n      local_shipping: '/assets/media/icons/fill/maps/local_shipping.svg',\n      local_taxi: '/assets/media/icons/fill/maps/local_taxi.svg',\n      location_pin: '/assets/media/icons/fill/maps/location_pin.svg',\n      lunch_dining: '/assets/media/icons/fill/maps/lunch_dining.svg',\n      map: '/assets/media/icons/fill/maps/map.svg',\n      maps_ugc: '/assets/media/icons/fill/maps/maps_ugc.svg',\n      medical_services: '/assets/media/icons/fill/maps/medical_services.svg',\n      menu_book: '/assets/media/icons/fill/maps/menu_book.svg',\n      miscellaneous_services: '/assets/media/icons/fill/maps/miscellaneous_services.svg',\n      money: '/assets/media/icons/fill/maps/money.svg',\n      moped: '/assets/media/icons/fill/maps/moped.svg',\n      multiple_stop: '/assets/media/icons/fill/maps/multiple_stop.svg',\n      museum: '/assets/media/icons/fill/maps/museum.svg',\n      my_location: '/assets/media/icons/fill/maps/my_location.svg',\n      navigation: '/assets/media/icons/fill/maps/navigation.svg',\n      near_me: '/assets/media/icons/fill/maps/near_me.svg',\n      near_me_disabled: '/assets/media/icons/fill/maps/near_me_disabled.svg',\n      nightlife: '/assets/media/icons/fill/maps/nightlife.svg',\n      not_listed_location: '/assets/media/icons/fill/maps/not_listed_location.svg',\n      no_meals: '/assets/media/icons/fill/maps/no_meals.svg',\n      no_meals_ouline: '/assets/media/icons/fill/maps/no_meals_ouline.svg',\n      no_transfer: '/assets/media/icons/fill/maps/no_transfer.svg',\n      park: '/assets/media/icons/fill/maps/park.svg',\n      pedal_bike: '/assets/media/icons/fill/maps/pedal_bike.svg',\n      person_pin: '/assets/media/icons/fill/maps/person_pin.svg',\n      person_pin_circle: '/assets/media/icons/fill/maps/person_pin_circle.svg',\n      pest_control: '/assets/media/icons/fill/maps/pest_control.svg',\n      pest_control_rodent: '/assets/media/icons/fill/maps/pest_control_rodent.svg',\n      pin_drop: '/assets/media/icons/fill/maps/pin_drop.svg',\n      place: '/assets/media/icons/fill/maps/place.svg',\n      plumbing: '/assets/media/icons/fill/maps/plumbing.svg',\n      railway_alert: '/assets/media/icons/fill/maps/railway_alert.svg',\n      ramen_dining: '/assets/media/icons/fill/maps/ramen_dining.svg',\n      rate_review: '/assets/media/icons/fill/maps/rate_review.svg',\n      restaurant: '/assets/media/icons/fill/maps/restaurant.svg',\n      restaurant_menu: '/assets/media/icons/fill/maps/restaurant_menu.svg',\n      run_circle: '/assets/media/icons/fill/maps/run_circle.svg',\n      satellite: '/assets/media/icons/fill/maps/satellite.svg',\n      set_meal: '/assets/media/icons/fill/maps/set_meal.svg',\n      store_mall_directory: '/assets/media/icons/fill/maps/store_mall_directory.svg',\n      streetview: '/assets/media/icons/fill/maps/streetview.svg',\n      subway: '/assets/media/icons/fill/maps/subway.svg',\n      takeout_dining: '/assets/media/icons/fill/maps/takeout_dining.svg',\n      taxi_alert: '/assets/media/icons/fill/maps/taxi_alert.svg',\n      terrain: '/assets/media/icons/fill/maps/terrain.svg',\n      theater_comedy: '/assets/media/icons/fill/maps/theater_comedy.svg',\n      traffic: '/assets/media/icons/fill/maps/traffic.svg',\n      train: '/assets/media/icons/fill/maps/train.svg',\n      tram: '/assets/media/icons/fill/maps/tram.svg',\n      transfer_within_a_station: '/assets/media/icons/fill/maps/transfer_within_a_station.svg',\n      transit_enterexit: '/assets/media/icons/fill/maps/transit_enterexit.svg',\n      trip_origin: '/assets/media/icons/fill/maps/trip_origin.svg',\n      two_wheeler: '/assets/media/icons/fill/maps/two_wheeler.svg',\n      volunteer_activism: '/assets/media/icons/fill/maps/volunteer_activism.svg',\n      wine_bar: '/assets/media/icons/fill/maps/wine_bar.svg',\n      wrong_location: '/assets/media/icons/fill/maps/wrong_location.svg',\n      zoom_out_map: '/assets/media/icons/fill/maps/zoom_out_map.svg',\n    },\n    navigation: {\n      apps: '/assets/media/icons/fill/navigation/apps.svg',\n      app_settings_alt: '/assets/media/icons/fill/navigation/app_settings_alt.svg',\n      arrow_back: '/assets/media/icons/fill/navigation/arrow_back.svg',\n      arrow_back_ios: '/assets/media/icons/fill/navigation/arrow_back_ios.svg',\n      arrow_downward: '/assets/media/icons/fill/navigation/arrow_downward.svg',\n      arrow_drop_down: '/assets/media/icons/fill/navigation/arrow_drop_down.svg',\n      arrow_drop_down_circle: '/assets/media/icons/fill/navigation/arrow_drop_down_circle.svg',\n      arrow_drop_up: '/assets/media/icons/fill/navigation/arrow_drop_up.svg',\n      arrow_forward: '/assets/media/icons/fill/navigation/arrow_forward.svg',\n      arrow_forward_ios: '/assets/media/icons/fill/navigation/arrow_forward_ios.svg',\n      arrow_left: '/assets/media/icons/fill/navigation/arrow_left.svg',\n      arrow_right: '/assets/media/icons/fill/navigation/arrow_right.svg',\n      arrow_upward: '/assets/media/icons/fill/navigation/arrow_upward.svg',\n      assistant_direction: '/assets/media/icons/fill/navigation/assistant_direction.svg',\n      assistant_navigation: '/assets/media/icons/fill/navigation/assistant_navigation.svg',\n      campaign: '/assets/media/icons/fill/navigation/campaign.svg',\n      cancel: '/assets/media/icons/fill/navigation/cancel.svg',\n      check: '/assets/media/icons/fill/navigation/check.svg',\n      chevron_left: '/assets/media/icons/fill/navigation/chevron_left.svg',\n      chevron_right: '/assets/media/icons/fill/navigation/chevron_right.svg',\n      close: '/assets/media/icons/fill/navigation/close.svg',\n      double_arrow: '/assets/media/icons/fill/navigation/double_arrow.svg',\n      east: '/assets/media/icons/fill/navigation/east.svg',\n      expand_less: '/assets/media/icons/fill/navigation/expand_less.svg',\n      expand_more: '/assets/media/icons/fill/navigation/expand_more.svg',\n      first_page: '/assets/media/icons/fill/navigation/first_page.svg',\n      fullscreen: '/assets/media/icons/fill/navigation/fullscreen.svg',\n      fullscreen_exit: '/assets/media/icons/fill/navigation/fullscreen_exit.svg',\n      home_work: '/assets/media/icons/fill/navigation/home_work.svg',\n      last_page: '/assets/media/icons/fill/navigation/last_page.svg',\n      legend_toggle: '/assets/media/icons/fill/navigation/legend_toggle.svg',\n      menu: '/assets/media/icons/fill/navigation/menu.svg',\n      menu_open: '/assets/media/icons/fill/navigation/menu_open.svg',\n      more_horiz: '/assets/media/icons/fill/navigation/more_horiz.svg',\n      more_vert: '/assets/media/icons/fill/navigation/more_vert.svg',\n      north: '/assets/media/icons/fill/navigation/north.svg',\n      north_east: '/assets/media/icons/fill/navigation/north_east.svg',\n      north_west: '/assets/media/icons/fill/navigation/north_west.svg',\n      offline_share: '/assets/media/icons/fill/navigation/offline_share.svg',\n      payments: '/assets/media/icons/fill/navigation/payments.svg',\n      pivot_table_chart: '/assets/media/icons/fill/navigation/pivot_table_chart.svg',\n      refresh: '/assets/media/icons/fill/navigation/refresh.svg',\n      south: '/assets/media/icons/fill/navigation/south.svg',\n      south_east: '/assets/media/icons/fill/navigation/south_east.svg',\n      south_west: '/assets/media/icons/fill/navigation/south_west.svg',\n      subdirectory_arrow_left: '/assets/media/icons/fill/navigation/subdirectory_arrow_left.svg',\n      subdirectory_arrow_right: '/assets/media/icons/fill/navigation/subdirectory_arrow_right.svg',\n      switch_left: '/assets/media/icons/fill/navigation/switch_left.svg',\n      switch_right: '/assets/media/icons/fill/navigation/switch_right.svg',\n      unfold_less: '/assets/media/icons/fill/navigation/unfold_less.svg',\n      unfold_more: '/assets/media/icons/fill/navigation/unfold_more.svg',\n      waterfall_chart: '/assets/media/icons/fill/navigation/waterfall_chart.svg',\n      west: '/assets/media/icons/fill/navigation/west.svg',\n    },\n    notification: {\n      account_tree: '/assets/media/icons/fill/notification/account_tree.svg',\n      adb: '/assets/media/icons/fill/notification/adb.svg',\n      add_call: '/assets/media/icons/fill/notification/add_call.svg',\n      airline_seat_flat: '/assets/media/icons/fill/notification/airline_seat_flat.svg',\n      airline_seat_flat_angled:\n        '/assets/media/icons/fill/notification/airline_seat_flat_angled.svg',\n      airline_seat_individual_suite:\n        '/assets/media/icons/fill/notification/airline_seat_individual_suite.svg',\n      airline_seat_legroom_extra:\n        '/assets/media/icons/fill/notification/airline_seat_legroom_extra.svg',\n      airline_seat_legroom_normal:\n        '/assets/media/icons/fill/notification/airline_seat_legroom_normal.svg',\n      airline_seat_legroom_reduced:\n        '/assets/media/icons/fill/notification/airline_seat_legroom_reduced.svg',\n      airline_seat_recline_extra:\n        '/assets/media/icons/fill/notification/airline_seat_recline_extra.svg',\n      airline_seat_recline_normal:\n        '/assets/media/icons/fill/notification/airline_seat_recline_normal.svg',\n      bluetooth_audio: '/assets/media/icons/fill/notification/bluetooth_audio.svg',\n      confirmation_number: '/assets/media/icons/fill/notification/confirmation_number.svg',\n      directions_off: '/assets/media/icons/fill/notification/directions_off.svg',\n      disc_full: '/assets/media/icons/fill/notification/disc_full.svg',\n      do_not_disturb: '/assets/media/icons/fill/notification/do_not_disturb.svg',\n      do_not_disturb_alt: '/assets/media/icons/fill/notification/do_not_disturb_alt.svg',\n      do_not_disturb_off: '/assets/media/icons/fill/notification/do_not_disturb_off.svg',\n      do_not_disturb_on: '/assets/media/icons/fill/notification/do_not_disturb_on.svg',\n      drive_eta: '/assets/media/icons/fill/notification/drive_eta.svg',\n      enhanced_encryption: '/assets/media/icons/fill/notification/enhanced_encryption.svg',\n      event_available: '/assets/media/icons/fill/notification/event_available.svg',\n      event_busy: '/assets/media/icons/fill/notification/event_busy.svg',\n      event_note: '/assets/media/icons/fill/notification/event_note.svg',\n      folder_special: '/assets/media/icons/fill/notification/folder_special.svg',\n      imagesearch_roller: '/assets/media/icons/fill/notification/imagesearch_roller.svg',\n      live_tv: '/assets/media/icons/fill/notification/live_tv.svg',\n      mms: '/assets/media/icons/fill/notification/mms.svg',\n      more: '/assets/media/icons/fill/notification/more.svg',\n      network_check: '/assets/media/icons/fill/notification/network_check.svg',\n      network_locked: '/assets/media/icons/fill/notification/network_locked.svg',\n      no_encryption: '/assets/media/icons/fill/notification/no_encryption.svg',\n      ondemand_video: '/assets/media/icons/fill/notification/ondemand_video.svg',\n      personal_video: '/assets/media/icons/fill/notification/personal_video.svg',\n      phone_bluetooth_speaker: '/assets/media/icons/fill/notification/phone_bluetooth_speaker.svg',\n      phone_callback: '/assets/media/icons/fill/notification/phone_callback.svg',\n      phone_forwarded: '/assets/media/icons/fill/notification/phone_forwarded.svg',\n      phone_in_talk: '/assets/media/icons/fill/notification/phone_in_talk.svg',\n      phone_locked: '/assets/media/icons/fill/notification/phone_locked.svg',\n      phone_missed: '/assets/media/icons/fill/notification/phone_missed.svg',\n      phone_paused: '/assets/media/icons/fill/notification/phone_paused.svg',\n      power: '/assets/media/icons/fill/notification/power.svg',\n      power_off: '/assets/media/icons/fill/notification/power_off.svg',\n      priority_high: '/assets/media/icons/fill/notification/priority_high.svg',\n      sd_card: '/assets/media/icons/fill/notification/sd_card.svg',\n      sim_card_alert: '/assets/media/icons/fill/notification/sim_card_alert.svg',\n      sms: '/assets/media/icons/fill/notification/sms.svg',\n      sms_failed: '/assets/media/icons/fill/notification/sms_failed.svg',\n      support_agent: '/assets/media/icons/fill/notification/support_agent.svg',\n      sync: '/assets/media/icons/fill/notification/sync.svg',\n      sync_disabled: '/assets/media/icons/fill/notification/sync_disabled.svg',\n      sync_problem: '/assets/media/icons/fill/notification/sync_problem.svg',\n      system_update: '/assets/media/icons/fill/notification/system_update.svg',\n      tap_and_play: '/assets/media/icons/fill/notification/tap_and_play.svg',\n      time_to_leave: '/assets/media/icons/fill/notification/time_to_leave.svg',\n      tv_off: '/assets/media/icons/fill/notification/tv_off.svg',\n      vibration: '/assets/media/icons/fill/notification/vibration.svg',\n      voice_chat: '/assets/media/icons/fill/notification/voice_chat.svg',\n      vpn_lock: '/assets/media/icons/fill/notification/vpn_lock.svg',\n      wc: '/assets/media/icons/fill/notification/wc.svg',\n      wifi: '/assets/media/icons/fill/notification/wifi.svg',\n      wifi_off: '/assets/media/icons/fill/notification/wifi_off.svg',\n    },\n    places: {\n      ac_unit: '/assets/media/icons/fill/places/ac_unit.svg',\n      airport_shuttle: '/assets/media/icons/fill/places/airport_shuttle.svg',\n      all_inclusive: '/assets/media/icons/fill/places/all_inclusive.svg',\n      apartment: '/assets/media/icons/fill/places/apartment.svg',\n      baby_changing_station: '/assets/media/icons/fill/places/baby_changing_station.svg',\n      backpack: '/assets/media/icons/fill/places/backpack.svg',\n      bathtub: '/assets/media/icons/fill/places/bathtub.svg',\n      beach_access: '/assets/media/icons/fill/places/beach_access.svg',\n      bento: '/assets/media/icons/fill/places/bento.svg',\n      business_center: '/assets/media/icons/fill/places/business_center.svg',\n      carpenter: '/assets/media/icons/fill/places/carpenter.svg',\n      casino: '/assets/media/icons/fill/places/casino.svg',\n      charging_station: '/assets/media/icons/fill/places/charging_station.svg',\n      checkroom: '/assets/media/icons/fill/places/checkroom.svg',\n      child_care: '/assets/media/icons/fill/places/child_care.svg',\n      child_friendly: '/assets/media/icons/fill/places/child_friendly.svg',\n      corporate_fare: '/assets/media/icons/fill/places/corporate_fare.svg',\n      countertops: '/assets/media/icons/fill/places/countertops.svg',\n      do_not_step: '/assets/media/icons/fill/places/do_not_step.svg',\n      do_not_touch: '/assets/media/icons/fill/places/do_not_touch.svg',\n      dry: '/assets/media/icons/fill/places/dry.svg',\n      elevator: '/assets/media/icons/fill/places/elevator.svg',\n      escalator: '/assets/media/icons/fill/places/escalator.svg',\n      escalator_warning: '/assets/media/icons/fill/places/escalator_warning.svg',\n      family_restroom: '/assets/media/icons/fill/places/family_restroom.svg',\n      fence: '/assets/media/icons/fill/places/fence.svg',\n      fire_extinguisher: '/assets/media/icons/fill/places/fire_extinguisher.svg',\n      fitness_center: '/assets/media/icons/fill/places/fitness_center.svg',\n      food_bank: '/assets/media/icons/fill/places/food_bank.svg',\n      foundation: '/assets/media/icons/fill/places/foundation.svg',\n      free_breakfast: '/assets/media/icons/fill/places/free_breakfast.svg',\n      golf_course: '/assets/media/icons/fill/places/golf_course.svg',\n      grass: '/assets/media/icons/fill/places/grass.svg',\n      hot_tub: '/assets/media/icons/fill/places/hot_tub.svg',\n      house: '/assets/media/icons/fill/places/house.svg',\n      house_siding: '/assets/media/icons/fill/places/house_siding.svg',\n      kitchen: '/assets/media/icons/fill/places/kitchen.svg',\n      meeting_room: '/assets/media/icons/fill/places/meeting_room.svg',\n      microwave: '/assets/media/icons/fill/places/microwave.svg',\n      night_shelter: '/assets/media/icons/fill/places/night_shelter.svg',\n      no_backpack: '/assets/media/icons/fill/places/no_backpack.svg',\n      no_cell: '/assets/media/icons/fill/places/no_cell.svg',\n      no_drinks: '/assets/media/icons/fill/places/no_drinks.svg',\n      no_flash: '/assets/media/icons/fill/places/no_flash.svg',\n      no_food: '/assets/media/icons/fill/places/no_food.svg',\n      no_meeting_room: '/assets/media/icons/fill/places/no_meeting_room.svg',\n      no_photography: '/assets/media/icons/fill/places/no_photography.svg',\n      no_stroller: '/assets/media/icons/fill/places/no_stroller.svg',\n      pool: '/assets/media/icons/fill/places/pool.svg',\n      rice_bowl: '/assets/media/icons/fill/places/rice_bowl.svg',\n      roofing: '/assets/media/icons/fill/places/roofing.svg',\n      room_preferences: '/assets/media/icons/fill/places/room_preferences.svg',\n      room_service: '/assets/media/icons/fill/places/room_service.svg',\n      rv_hookup: '/assets/media/icons/fill/places/rv_hookup.svg',\n      smoke_free: '/assets/media/icons/fill/places/smoke_free.svg',\n      smoking_rooms: '/assets/media/icons/fill/places/smoking_rooms.svg',\n      soap: '/assets/media/icons/fill/places/soap.svg',\n      spa: '/assets/media/icons/fill/places/spa.svg',\n      sports_bar: '/assets/media/icons/fill/places/sports_bar.svg',\n      stairs: '/assets/media/icons/fill/places/stairs.svg',\n      storefront: '/assets/media/icons/fill/places/storefront.svg',\n      stroller: '/assets/media/icons/fill/places/stroller.svg',\n      tapas: '/assets/media/icons/fill/places/tapas.svg',\n      tty: '/assets/media/icons/fill/places/tty.svg',\n      umbrella: '/assets/media/icons/fill/places/umbrella.svg',\n      wash: '/assets/media/icons/fill/places/wash.svg',\n      water_damage: '/assets/media/icons/fill/places/water_damage.svg',\n      wheelchair_pickup: '/assets/media/icons/fill/places/wheelchair_pickup.svg',\n    },\n    social: {\n      '6_ft_apart': '/assets/media/icons/fill/social/6_ft_apart.svg',\n      add_moderator: '/assets/media/icons/fill/social/add_moderator.svg',\n      architecture: '/assets/media/icons/fill/social/architecture.svg',\n      cake: '/assets/media/icons/fill/social/cake.svg',\n      clean_hands: '/assets/media/icons/fill/social/clean_hands.svg',\n      connect_without_contact: '/assets/media/icons/fill/social/connect_without_contact.svg',\n      construction: '/assets/media/icons/fill/social/construction.svg',\n      coronavirus: '/assets/media/icons/fill/social/coronavirus.svg',\n      deck: '/assets/media/icons/fill/social/deck.svg',\n      domain: '/assets/media/icons/fill/social/domain.svg',\n      elderly: '/assets/media/icons/fill/social/elderly.svg',\n      emoji_emotions: '/assets/media/icons/fill/social/emoji_emotions.svg',\n      emoji_events: '/assets/media/icons/fill/social/emoji_events.svg',\n      emoji_flags: '/assets/media/icons/fill/social/emoji_flags.svg',\n      emoji_food_beverage: '/assets/media/icons/fill/social/emoji_food_beverage.svg',\n      emoji_nature: '/assets/media/icons/fill/social/emoji_nature.svg',\n      emoji_objects: '/assets/media/icons/fill/social/emoji_objects.svg',\n      emoji_people: '/assets/media/icons/fill/social/emoji_people.svg',\n      emoji_symbols: '/assets/media/icons/fill/social/emoji_symbols.svg',\n      emoji_transportation: '/assets/media/icons/fill/social/emoji_transportation.svg',\n      engineering: '/assets/media/icons/fill/social/engineering.svg',\n      facebook: '/assets/media/icons/fill/social/facebook.svg',\n      fireplace: '/assets/media/icons/fill/social/fireplace.svg',\n      follow_the_signs: '/assets/media/icons/fill/social/follow_the_signs.svg',\n      group: '/assets/media/icons/fill/social/group.svg',\n      groups: '/assets/media/icons/fill/social/groups.svg',\n      group_add: '/assets/media/icons/fill/social/group_add.svg',\n      history_edu: '/assets/media/icons/fill/social/history_edu.svg',\n      ios_share: '/assets/media/icons/fill/social/ios_share.svg',\n      king_bed: '/assets/media/icons/fill/social/king_bed.svg',\n      location_city: '/assets/media/icons/fill/social/location_city.svg',\n      luggage: '/assets/media/icons/fill/social/luggage.svg',\n      masks: '/assets/media/icons/fill/social/masks.svg',\n      military_tech: '/assets/media/icons/fill/social/military_tech.svg',\n      mood: '/assets/media/icons/fill/social/mood.svg',\n      mood_bad: '/assets/media/icons/fill/social/mood_bad.svg',\n      nights_stay: '/assets/media/icons/fill/social/nights_stay.svg',\n      notifications: '/assets/media/icons/fill/social/notifications.svg',\n      notifications_active: '/assets/media/icons/fill/social/notifications_active.svg',\n      notifications_none: '/assets/media/icons/fill/social/notifications_none.svg',\n      notifications_off: '/assets/media/icons/fill/social/notifications_off.svg',\n      notifications_paused: '/assets/media/icons/fill/social/notifications_paused.svg',\n      no_luggage: '/assets/media/icons/fill/social/no_luggage.svg',\n      outdoor_grill: '/assets/media/icons/fill/social/outdoor_grill.svg',\n      pages: '/assets/media/icons/fill/social/pages.svg',\n      party_mode: '/assets/media/icons/fill/social/party_mode.svg',\n      people: '/assets/media/icons/fill/social/people.svg',\n      people_alt: '/assets/media/icons/fill/social/people_alt.svg',\n      people_outline: '/assets/media/icons/fill/social/people_outline.svg',\n      person: '/assets/media/icons/fill/social/person.svg',\n      person_add: '/assets/media/icons/fill/social/person_add.svg',\n      person_add_alt: '/assets/media/icons/fill/social/person_add_alt.svg',\n      person_add_alt_1: '/assets/media/icons/fill/social/person_add_alt_1.svg',\n      person_outline: '/assets/media/icons/fill/social/person_outline.svg',\n      person_remove: '/assets/media/icons/fill/social/person_remove.svg',\n      person_remove_alt_1: '/assets/media/icons/fill/social/person_remove_alt_1.svg',\n      plus_one: '/assets/media/icons/fill/social/plus_one.svg',\n      poll: '/assets/media/icons/fill/social/poll.svg',\n      psychology: '/assets/media/icons/fill/social/psychology.svg',\n      public: '/assets/media/icons/fill/social/public.svg',\n      public_off: '/assets/media/icons/fill/social/public_off.svg',\n      recommend: '/assets/media/icons/fill/social/recommend.svg',\n      reduce_capacity: '/assets/media/icons/fill/social/reduce_capacity.svg',\n      remove_moderator: '/assets/media/icons/fill/social/remove_moderator.svg',\n      sanitizer: '/assets/media/icons/fill/social/sanitizer.svg',\n      school: '/assets/media/icons/fill/social/school.svg',\n      science: '/assets/media/icons/fill/social/science.svg',\n      self_improvement: '/assets/media/icons/fill/social/self_improvement.svg',\n      sentiment_dissatisfied: '/assets/media/icons/fill/social/sentiment_dissatisfied.svg',\n      sentiment_neutral: '/assets/media/icons/fill/social/sentiment_neutral.svg',\n      sentiment_satisfied: '/assets/media/icons/fill/social/sentiment_satisfied.svg',\n      sentiment_very_dissatisfied:\n        '/assets/media/icons/fill/social/sentiment_very_dissatisfied.svg',\n      sentiment_very_satisfied: '/assets/media/icons/fill/social/sentiment_very_satisfied.svg',\n      share: '/assets/media/icons/fill/social/share.svg',\n      sick: '/assets/media/icons/fill/social/sick.svg',\n      single_bed: '/assets/media/icons/fill/social/single_bed.svg',\n      sports: '/assets/media/icons/fill/social/sports.svg',\n      sports_baseball: '/assets/media/icons/fill/social/sports_baseball.svg',\n      sports_basketball: '/assets/media/icons/fill/social/sports_basketball.svg',\n      sports_cricket: '/assets/media/icons/fill/social/sports_cricket.svg',\n      sports_esports: '/assets/media/icons/fill/social/sports_esports.svg',\n      sports_football: '/assets/media/icons/fill/social/sports_football.svg',\n      sports_golf: '/assets/media/icons/fill/social/sports_golf.svg',\n      sports_handball: '/assets/media/icons/fill/social/sports_handball.svg',\n      sports_hockey: '/assets/media/icons/fill/social/sports_hockey.svg',\n      sports_kabaddi: '/assets/media/icons/fill/social/sports_kabaddi.svg',\n      sports_mma: '/assets/media/icons/fill/social/sports_mma.svg',\n      sports_motorsports: '/assets/media/icons/fill/social/sports_motorsports.svg',\n      sports_rugby: '/assets/media/icons/fill/social/sports_rugby.svg',\n      sports_soccer: '/assets/media/icons/fill/social/sports_soccer.svg',\n      sports_tennis: '/assets/media/icons/fill/social/sports_tennis.svg',\n      sports_volleyball: '/assets/media/icons/fill/social/sports_volleyball.svg',\n      switch_account: '/assets/media/icons/fill/social/switch_account.svg',\n      thumb_down_alt: '/assets/media/icons/fill/social/thumb_down_alt.svg',\n      thumb_up_alt: '/assets/media/icons/fill/social/thumb_up_alt.svg',\n      whatshot: '/assets/media/icons/fill/social/whatshot.svg',\n    },\n    toggle: {\n      check_box: '/assets/media/icons/fill/toggle/check_box.svg',\n      check_box_outline_blank: '/assets/media/icons/fill/toggle/check_box_outline_blank.svg',\n      indeterminate_check_box: '/assets/media/icons/fill/toggle/indeterminate_check_box.svg',\n      radio_button_checked: '/assets/media/icons/fill/toggle/radio_button_checked.svg',\n      radio_button_unchecked: '/assets/media/icons/fill/toggle/radio_button_unchecked.svg',\n      star: '/assets/media/icons/fill/toggle/star.svg',\n      star_border: '/assets/media/icons/fill/toggle/star_border.svg',\n      star_half: '/assets/media/icons/fill/toggle/star_half.svg',\n      star_outline: '/assets/media/icons/fill/toggle/star_outline.svg',\n      toggle_off: '/assets/media/icons/fill/toggle/toggle_off.svg',\n      toggle_on: '/assets/media/icons/fill/toggle/toggle_on.svg',\n    },\n  },\n  outline: {\n    action: {\n      selector: '/assets/media/icons/outline/action/selector.svg',\n      '3d_rotation': '/assets/media/icons/outline/action/3d_rotation.svg',\n      accessibility: '/assets/media/icons/outline/action/accessibility.svg',\n      accessibility_new: '/assets/media/icons/outline/action/accessibility_new.svg',\n      accessible: '/assets/media/icons/outline/action/accessible.svg',\n      accessible_forward: '/assets/media/icons/outline/action/accessible_forward.svg',\n      account_balance: '/assets/media/icons/outline/action/account_balance.svg',\n      account_balance_wallet: '/assets/media/icons/outline/action/account_balance_wallet.svg',\n      account_box: '/assets/media/icons/outline/action/account_box.svg',\n      account_circle: '/assets/media/icons/outline/action/account_circle.svg',\n      addchart: '/assets/media/icons/outline/action/addchart.svg',\n      add_shopping_cart: '/assets/media/icons/outline/action/add_shopping_cart.svg',\n      add_task: '/assets/media/icons/outline/action/add_task.svg',\n      admin_panel_settings: '/assets/media/icons/outline/action/admin_panel_settings.svg',\n      alarm: '/assets/media/icons/outline/action/alarm.svg',\n      alarm_add: '/assets/media/icons/outline/action/alarm_add.svg',\n      alarm_off: '/assets/media/icons/outline/action/alarm_off.svg',\n      alarm_on: '/assets/media/icons/outline/action/alarm_on.svg',\n      all_inbox: '/assets/media/icons/outline/action/all_inbox.svg',\n      all_out: '/assets/media/icons/outline/action/all_out.svg',\n      analytics: '/assets/media/icons/outline/action/analytics.svg',\n      anchor: '/assets/media/icons/outline/action/anchor.svg',\n      android: '/assets/media/icons/outline/action/android.svg',\n      announcement: '/assets/media/icons/outline/action/announcement.svg',\n      api: '/assets/media/icons/outline/action/api.svg',\n      app_blocking: '/assets/media/icons/outline/action/app_blocking.svg',\n      arrow_circle_down: '/assets/media/icons/outline/action/arrow_circle_down.svg',\n      arrow_circle_up: '/assets/media/icons/outline/action/arrow_circle_up.svg',\n      arrow_right_alt: '/assets/media/icons/outline/action/arrow_right_alt.svg',\n      article: '/assets/media/icons/outline/action/article.svg',\n      aspect_ratio: '/assets/media/icons/outline/action/aspect_ratio.svg',\n      assessment: '/assets/media/icons/outline/action/assessment.svg',\n      assignment: '/assets/media/icons/outline/action/assignment.svg',\n      assignment_ind: '/assets/media/icons/outline/action/assignment_ind.svg',\n      assignment_late: '/assets/media/icons/outline/action/assignment_late.svg',\n      assignment_return: '/assets/media/icons/outline/action/assignment_return.svg',\n      assignment_returned: '/assets/media/icons/outline/action/assignment_returned.svg',\n      assignment_turned_in: '/assets/media/icons/outline/action/assignment_turned_in.svg',\n      autorenew: '/assets/media/icons/outline/action/autorenew.svg',\n      backup: '/assets/media/icons/outline/action/backup.svg',\n      backup_table: '/assets/media/icons/outline/action/backup_table.svg',\n      batch_prediction: '/assets/media/icons/outline/action/batch_prediction.svg',\n      book: '/assets/media/icons/outline/action/book.svg',\n      bookmark: '/assets/media/icons/outline/action/bookmark.svg',\n      bookmarks: '/assets/media/icons/outline/action/bookmarks.svg',\n      bookmark_border: '/assets/media/icons/outline/action/bookmark_border.svg',\n      book_online: '/assets/media/icons/outline/action/book_online.svg',\n      bug_report: '/assets/media/icons/outline/action/bug_report.svg',\n      build: '/assets/media/icons/outline/action/build.svg',\n      build_circle: '/assets/media/icons/outline/action/build_circle.svg',\n      cached: '/assets/media/icons/outline/action/cached.svg',\n      calendar_today: '/assets/media/icons/outline/action/calendar_today.svg',\n      calendar_view_day: '/assets/media/icons/outline/action/calendar_view_day.svg',\n      camera_enhance: '/assets/media/icons/outline/action/camera_enhance.svg',\n      cancel_schedule_send: '/assets/media/icons/outline/action/cancel_schedule_send.svg',\n      card_giftcard: '/assets/media/icons/outline/action/card_giftcard.svg',\n      card_membership: '/assets/media/icons/outline/action/card_membership.svg',\n      card_travel: '/assets/media/icons/outline/action/card_travel.svg',\n      change_history: '/assets/media/icons/outline/action/change_history.svg',\n      check_circle: '/assets/media/icons/outline/action/check_circle.svg',\n      check_circle_outline: '/assets/media/icons/outline/action/check_circle_outline.svg',\n      chrome_reader_mode: '/assets/media/icons/outline/action/chrome_reader_mode.svg',\n      class: '/assets/media/icons/outline/action/class.svg',\n      close_fullscreen: '/assets/media/icons/outline/action/close_fullscreen.svg',\n      code: '/assets/media/icons/outline/action/code.svg',\n      comment_bank: '/assets/media/icons/outline/action/comment_bank.svg',\n      commute: '/assets/media/icons/outline/action/commute.svg',\n      compare_arrows: '/assets/media/icons/outline/action/compare_arrows.svg',\n      contactless: '/assets/media/icons/outline/action/contactless.svg',\n      contact_page: '/assets/media/icons/outline/action/contact_page.svg',\n      contact_support: '/assets/media/icons/outline/action/contact_support.svg',\n      copyright: '/assets/media/icons/outline/action/copyright.svg',\n      credit_card: '/assets/media/icons/outline/action/credit_card.svg',\n      dashboard: '/assets/media/icons/outline/action/dashboard.svg',\n      date_range: '/assets/media/icons/outline/action/date_range.svg',\n      delete: '/assets/media/icons/outline/action/delete.svg',\n      delete_forever: '/assets/media/icons/outline/action/delete_forever.svg',\n      delete_outline: '/assets/media/icons/outline/action/delete_outline.svg',\n      description: '/assets/media/icons/outline/action/description.svg',\n      disabled_by_default: '/assets/media/icons/outline/action/disabled_by_default.svg',\n      dns: '/assets/media/icons/outline/action/dns.svg',\n      done: '/assets/media/icons/outline/action/done.svg',\n      done_all: '/assets/media/icons/outline/action/done_all.svg',\n      done_outline: '/assets/media/icons/outline/action/done_outline.svg',\n      donut_large: '/assets/media/icons/outline/action/donut_large.svg',\n      donut_small: '/assets/media/icons/outline/action/donut_small.svg',\n      drag_indicator: '/assets/media/icons/outline/action/drag_indicator.svg',\n      dynamic_form: '/assets/media/icons/outline/action/dynamic_form.svg',\n      eco: '/assets/media/icons/outline/action/eco.svg',\n      eject: '/assets/media/icons/outline/action/eject.svg',\n      euro_symbol: '/assets/media/icons/outline/action/euro_symbol.svg',\n      event: '/assets/media/icons/outline/action/event.svg',\n      event_seat: '/assets/media/icons/outline/action/event_seat.svg',\n      exit_to_app: '/assets/media/icons/outline/action/exit_to_app.svg',\n      explore: '/assets/media/icons/outline/action/explore.svg',\n      explore_off: '/assets/media/icons/outline/action/explore_off.svg',\n      Export1: '/assets/media/icons/outline/action/Export1.svg',\n      extension: '/assets/media/icons/outline/action/extension.svg',\n      face: '/assets/media/icons/outline/action/face.svg',\n      face_unlock: '/assets/media/icons/outline/action/face_unlock.svg',\n      fact_check: '/assets/media/icons/outline/action/fact_check.svg',\n      favorite: '/assets/media/icons/outline/action/favorite.svg',\n      favorite_border: '/assets/media/icons/outline/action/favorite_border.svg',\n      feedback: '/assets/media/icons/outline/action/feedback.svg',\n      filter_alt: '/assets/media/icons/outline/action/filter_alt.svg',\n      find_in_page: '/assets/media/icons/outline/action/find_in_page.svg',\n      find_replace: '/assets/media/icons/outline/action/find_replace.svg',\n      fingerprint: '/assets/media/icons/outline/action/fingerprint.svg',\n      flaky: '/assets/media/icons/outline/action/flaky.svg',\n      flight_land: '/assets/media/icons/outline/action/flight_land.svg',\n      flight_takeoff: '/assets/media/icons/outline/action/flight_takeoff.svg',\n      flip_to_back: '/assets/media/icons/outline/action/flip_to_back.svg',\n      flip_to_front: '/assets/media/icons/outline/action/flip_to_front.svg',\n      gavel: '/assets/media/icons/outline/action/gavel.svg',\n      get_app: '/assets/media/icons/outline/action/get_app.svg',\n      gif: '/assets/media/icons/outline/action/gif.svg',\n      grade: '/assets/media/icons/outline/action/grade.svg',\n      grading: '/assets/media/icons/outline/action/grading.svg',\n      group_work: '/assets/media/icons/outline/action/group_work.svg',\n      g_translate: '/assets/media/icons/outline/action/g_translate.svg',\n      help: '/assets/media/icons/outline/action/help.svg',\n      help_center: '/assets/media/icons/outline/action/help_center.svg',\n      help_outline: '/assets/media/icons/outline/action/help_outline.svg',\n      highlight_alt: '/assets/media/icons/outline/action/highlight_alt.svg',\n      highlight_off: '/assets/media/icons/outline/action/highlight_off.svg',\n      history: '/assets/media/icons/outline/action/history.svg',\n      history_toggle_off: '/assets/media/icons/outline/action/history_toggle_off.svg',\n      home: '/assets/media/icons/outline/action/home.svg',\n      horizontal_split: '/assets/media/icons/outline/action/horizontal_split.svg',\n      hourglass_disabled: '/assets/media/icons/outline/action/hourglass_disabled.svg',\n      hourglass_empty: '/assets/media/icons/outline/action/hourglass_empty.svg',\n      hourglass_full: '/assets/media/icons/outline/action/hourglass_full.svg',\n      http: '/assets/media/icons/outline/action/http.svg',\n      https: '/assets/media/icons/outline/action/https.svg',\n      important_devices: '/assets/media/icons/outline/action/important_devices.svg',\n      info: '/assets/media/icons/outline/action/info.svg',\n      input: '/assets/media/icons/outline/action/input.svg',\n      integration_instructions: '/assets/media/icons/outline/action/integration_instructions.svg',\n      invert_colors: '/assets/media/icons/outline/action/invert_colors.svg',\n      label: '/assets/media/icons/outline/action/label.svg',\n      label_important: '/assets/media/icons/outline/action/label_important.svg',\n      label_off: '/assets/media/icons/outline/action/label_off.svg',\n      language: '/assets/media/icons/outline/action/language.svg',\n      launch: '/assets/media/icons/outline/action/launch.svg',\n      leaderboard: '/assets/media/icons/outline/action/leaderboard.svg',\n      lightbulb: '/assets/media/icons/outline/action/lightbulb.svg',\n      line_style: '/assets/media/icons/outline/action/line_style.svg',\n      line_weight: '/assets/media/icons/outline/action/line_weight.svg',\n      list: '/assets/media/icons/outline/action/list.svg',\n      lock: '/assets/media/icons/outline/action/lock.svg',\n      lock_open: '/assets/media/icons/outline/action/lock_open.svg',\n      login: '/assets/media/icons/outline/action/login.svg',\n      loyalty: '/assets/media/icons/outline/action/loyalty.svg',\n      markunread_mailbox: '/assets/media/icons/outline/action/markunread_mailbox.svg',\n      maximize: '/assets/media/icons/outline/action/maximize.svg',\n      mediation: '/assets/media/icons/outline/action/mediation.svg',\n      minimize: '/assets/media/icons/outline/action/minimize.svg',\n      model_training: '/assets/media/icons/outline/action/model_training.svg',\n      next_plan: '/assets/media/icons/outline/action/next_plan.svg',\n      note_add: '/assets/media/icons/outline/action/note_add.svg',\n      not_accessible: '/assets/media/icons/outline/action/not_accessible.svg',\n      not_started: '/assets/media/icons/outline/action/not_started.svg',\n      offline_bolt: '/assets/media/icons/outline/action/offline_bolt.svg',\n      offline_pin: '/assets/media/icons/outline/action/offline_pin.svg',\n      online_prediction: '/assets/media/icons/outline/action/online_prediction.svg',\n      opacity: '/assets/media/icons/outline/action/opacity.svg',\n      open_in_browser: '/assets/media/icons/outline/action/open_in_browser.svg',\n      open_in_full: '/assets/media/icons/outline/action/open_in_full.svg',\n      open_in_new: '/assets/media/icons/outline/action/open_in_new.svg',\n      open_with: '/assets/media/icons/outline/action/open_with.svg',\n      outbond: '/assets/media/icons/outline/action/outbond.svg',\n      outlet: '/assets/media/icons/outline/action/outlet.svg',\n      pageview: '/assets/media/icons/outline/action/pageview.svg',\n      pan_tool: '/assets/media/icons/outline/action/pan_tool.svg',\n      payment: '/assets/media/icons/outline/action/payment.svg',\n      pending: '/assets/media/icons/outline/action/pending.svg',\n      pending_actions: '/assets/media/icons/outline/action/pending_actions.svg',\n      perm_camera_mic: '/assets/media/icons/outline/action/perm_camera_mic.svg',\n      perm_contact_calendar: '/assets/media/icons/outline/action/perm_contact_calendar.svg',\n      perm_data_setting: '/assets/media/icons/outline/action/perm_data_setting.svg',\n      perm_device_information: '/assets/media/icons/outline/action/perm_device_information.svg',\n      perm_identity: '/assets/media/icons/outline/action/perm_identity.svg',\n      perm_media: '/assets/media/icons/outline/action/perm_media.svg',\n      perm_phone_msg: '/assets/media/icons/outline/action/perm_phone_msg.svg',\n      perm_scan_wifi: '/assets/media/icons/outline/action/perm_scan_wifi.svg',\n      pets: '/assets/media/icons/outline/action/pets.svg',\n      picture_in_picture: '/assets/media/icons/outline/action/picture_in_picture.svg',\n      picture_in_picture_alt: '/assets/media/icons/outline/action/picture_in_picture_alt.svg',\n      plagiarism: '/assets/media/icons/outline/action/plagiarism.svg',\n      play_for_work: '/assets/media/icons/outline/action/play_for_work.svg',\n      polymer: '/assets/media/icons/outline/action/polymer.svg',\n      power_settings_new: '/assets/media/icons/outline/action/power_settings_new.svg',\n      pregnant_woman: '/assets/media/icons/outline/action/pregnant_woman.svg',\n      preview: '/assets/media/icons/outline/action/preview.svg',\n      print: '/assets/media/icons/outline/action/print.svg',\n      privacy_tip: '/assets/media/icons/outline/action/privacy_tip.svg',\n      published_with_changes: '/assets/media/icons/outline/action/published_with_changes.svg',\n      query_builder: '/assets/media/icons/outline/action/query_builder.svg',\n      question_answer: '/assets/media/icons/outline/action/question_answer.svg',\n      quickreply: '/assets/media/icons/outline/action/quickreply.svg',\n      receipt: '/assets/media/icons/outline/action/receipt.svg',\n      record_voice_over: '/assets/media/icons/outline/action/record_voice_over.svg',\n      redeem: '/assets/media/icons/outline/action/redeem.svg',\n      remove_shopping_cart: '/assets/media/icons/outline/action/remove_shopping_cart.svg',\n      reorder: '/assets/media/icons/outline/action/reorder.svg',\n      report_problem: '/assets/media/icons/outline/action/report_problem.svg',\n      request_page: '/assets/media/icons/outline/action/request_page.svg',\n      restore: '/assets/media/icons/outline/action/restore.svg',\n      restore_from_delete: '/assets/media/icons/outline/action/restore_from_delete.svg',\n      restore_page: '/assets/media/icons/outline/action/restore_page.svg',\n      room: '/assets/media/icons/outline/action/room.svg',\n      rounded_corner: '/assets/media/icons/outline/action/rounded_corner.svg',\n      rowing: '/assets/media/icons/outline/action/rowing.svg',\n      rule: '/assets/media/icons/outline/action/rule.svg',\n      schedule: '/assets/media/icons/outline/action/schedule.svg',\n      search: '/assets/media/icons/outline/action/search.svg',\n      search_off: '/assets/media/icons/outline/action/search_off.svg',\n      settings: '/assets/media/icons/outline/action/settings.svg',\n      settings_applications: '/assets/media/icons/outline/action/settings_applications.svg',\n      settings_backup_restore: '/assets/media/icons/outline/action/settings_backup_restore.svg',\n      settings_bluetooth: '/assets/media/icons/outline/action/settings_bluetooth.svg',\n      settings_brightness: '/assets/media/icons/outline/action/settings_brightness.svg',\n      settings_cell: '/assets/media/icons/outline/action/settings_cell.svg',\n      settings_ethernet: '/assets/media/icons/outline/action/settings_ethernet.svg',\n      settings_input_antenna: '/assets/media/icons/outline/action/settings_input_antenna.svg',\n      settings_input_component: '/assets/media/icons/outline/action/settings_input_component.svg',\n      settings_input_composite: '/assets/media/icons/outline/action/settings_input_composite.svg',\n      settings_input_hdmi: '/assets/media/icons/outline/action/settings_input_hdmi.svg',\n      settings_input_svideo: '/assets/media/icons/outline/action/settings_input_svideo.svg',\n      settings_overscan: '/assets/media/icons/outline/action/settings_overscan.svg',\n      settings_phone: '/assets/media/icons/outline/action/settings_phone.svg',\n      settings_power: '/assets/media/icons/outline/action/settings_power.svg',\n      settings_remote: '/assets/media/icons/outline/action/settings_remote.svg',\n      settings_voice: '/assets/media/icons/outline/action/settings_voice.svg',\n      shop: '/assets/media/icons/outline/action/shop.svg',\n      shopping_bag: '/assets/media/icons/outline/action/shopping_bag.svg',\n      shopping_basket: '/assets/media/icons/outline/action/shopping_basket.svg',\n      shopping_cart: '/assets/media/icons/outline/action/shopping_cart.svg',\n      shop_two: '/assets/media/icons/outline/action/shop_two.svg',\n      smart_button: '/assets/media/icons/outline/action/smart_button.svg',\n      source: '/assets/media/icons/outline/action/source.svg',\n      speaker_notes: '/assets/media/icons/outline/action/speaker_notes.svg',\n      speaker_notes_off: '/assets/media/icons/outline/action/speaker_notes_off.svg',\n      spellcheck: '/assets/media/icons/outline/action/spellcheck.svg',\n      stars: '/assets/media/icons/outline/action/stars.svg',\n      star_rate: '/assets/media/icons/outline/action/star_rate.svg',\n      sticky_note_2: '/assets/media/icons/outline/action/sticky_note_2.svg',\n      store: '/assets/media/icons/outline/action/store.svg',\n      subject: '/assets/media/icons/outline/action/subject.svg',\n      subtitles_off: '/assets/media/icons/outline/action/subtitles_off.svg',\n      supervised_user_circle: '/assets/media/icons/outline/action/supervised_user_circle.svg',\n      supervisor_account: '/assets/media/icons/outline/action/supervisor_account.svg',\n      support: '/assets/media/icons/outline/action/support.svg',\n      swap_horiz: '/assets/media/icons/outline/action/swap_horiz.svg',\n      swap_horizontal_circle: '/assets/media/icons/outline/action/swap_horizontal_circle.svg',\n      swap_vert: '/assets/media/icons/outline/action/swap_vert.svg',\n      swap_vertical_circle: '/assets/media/icons/outline/action/swap_vertical_circle.svg',\n      sync_alt: '/assets/media/icons/outline/action/sync_alt.svg',\n      system_update_alt: '/assets/media/icons/outline/action/system_update_alt.svg',\n      tab: '/assets/media/icons/outline/action/tab.svg',\n      table_view: '/assets/media/icons/outline/action/table_view.svg',\n      tab_unselected: '/assets/media/icons/outline/action/tab_unselected.svg',\n      text_rotate_up: '/assets/media/icons/outline/action/text_rotate_up.svg',\n      text_rotate_vertical: '/assets/media/icons/outline/action/text_rotate_vertical.svg',\n      text_rotation_angledown: '/assets/media/icons/outline/action/text_rotation_angledown.svg',\n      text_rotation_angleup: '/assets/media/icons/outline/action/text_rotation_angleup.svg',\n      text_rotation_down: '/assets/media/icons/outline/action/text_rotation_down.svg',\n      text_rotation_none: '/assets/media/icons/outline/action/text_rotation_none.svg',\n      theaters: '/assets/media/icons/outline/action/theaters.svg',\n      thumbs_up_down: '/assets/media/icons/outline/action/thumbs_up_down.svg',\n      thumb_down: '/assets/media/icons/outline/action/thumb_down.svg',\n      thumb_up: '/assets/media/icons/outline/action/thumb_up.svg',\n      timeline: '/assets/media/icons/outline/action/timeline.svg',\n      toc: '/assets/media/icons/outline/action/toc.svg',\n      today: '/assets/media/icons/outline/action/today.svg',\n      toll: '/assets/media/icons/outline/action/toll.svg',\n      touch_app: '/assets/media/icons/outline/action/touch_app.svg',\n      tour: '/assets/media/icons/outline/action/tour.svg',\n      track_changes: '/assets/media/icons/outline/action/track_changes.svg',\n      translate: '/assets/media/icons/outline/action/translate.svg',\n      trending_down: '/assets/media/icons/outline/action/trending_down.svg',\n      trending_flat: '/assets/media/icons/outline/action/trending_flat.svg',\n      trending_up: '/assets/media/icons/outline/action/trending_up.svg',\n      turned_in: '/assets/media/icons/outline/action/turned_in.svg',\n      turned_in_not: '/assets/media/icons/outline/action/turned_in_not.svg',\n      unpublished: '/assets/media/icons/outline/action/unpublished.svg',\n      update: '/assets/media/icons/outline/action/update.svg',\n      upgrade: '/assets/media/icons/outline/action/upgrade.svg',\n      verified: '/assets/media/icons/outline/action/verified.svg',\n      verified_user: '/assets/media/icons/outline/action/verified_user.svg',\n      vertical_split: '/assets/media/icons/outline/action/vertical_split.svg',\n      view_agenda: '/assets/media/icons/outline/action/view_agenda.svg',\n      view_array: '/assets/media/icons/outline/action/view_array.svg',\n      view_carousel: '/assets/media/icons/outline/action/view_carousel.svg',\n      view_column: '/assets/media/icons/outline/action/view_column.svg',\n      view_day: '/assets/media/icons/outline/action/view_day.svg',\n      view_headline: '/assets/media/icons/outline/action/view_headline.svg',\n      view_list: '/assets/media/icons/outline/action/view_list.svg',\n      view_module: '/assets/media/icons/outline/action/view_module.svg',\n      view_quilt: '/assets/media/icons/outline/action/view_quilt.svg',\n      view_sidebar: '/assets/media/icons/outline/action/view_sidebar.svg',\n      view_stream: '/assets/media/icons/outline/action/view_stream.svg',\n      view_week: '/assets/media/icons/outline/action/view_week.svg',\n      visibility: '/assets/media/icons/outline/action/visibility.svg',\n      visibility_off: '/assets/media/icons/outline/action/visibility_off.svg',\n      voice_over_off: '/assets/media/icons/outline/action/voice_over_off.svg',\n      watch_later: '/assets/media/icons/outline/action/watch_later.svg',\n      wifi_protected_setup: '/assets/media/icons/outline/action/wifi_protected_setup.svg',\n      work: '/assets/media/icons/outline/action/work.svg',\n      work_off: '/assets/media/icons/outline/action/work_off.svg',\n      work_outline: '/assets/media/icons/outline/action/work_outline.svg',\n      wysiwyg: '/assets/media/icons/outline/action/wysiwyg.svg',\n      youtube_searched_for: '/assets/media/icons/outline/action/youtube_searched_for.svg',\n      zoom_in: '/assets/media/icons/outline/action/zoom_in.svg',\n      zoom_out: '/assets/media/icons/outline/action/zoom_out.svg',\n    },\n    alert: {\n      add_alert: '/assets/media/icons/outline/alert/add_alert.svg',\n      auto_delete: '/assets/media/icons/outline/alert/auto_delete.svg',\n      error: '/assets/media/icons/outline/alert/error.svg',\n      error_alert: '/assets/media/icons/outline/alert/error_alert.svg',\n      error_outline: '/assets/media/icons/outline/alert/error_outline.svg',\n      notification_important: '/assets/media/icons/outline/alert/notification_important.svg',\n      warning: '/assets/media/icons/outline/alert/warning.svg',\n      warning_amber: '/assets/media/icons/outline/alert/warning_amber.svg',\n    },\n    audio_video: {\n      '4k': '/assets/media/icons/outline/audio-video/4k.svg',\n      '5g': '/assets/media/icons/outline/audio-video/5g.svg',\n      add_to_queue: '/assets/media/icons/outline/audio-video/add_to_queue.svg',\n      airplay: '/assets/media/icons/outline/audio-video/airplay.svg',\n      album: '/assets/media/icons/outline/audio-video/album.svg',\n      art_track: '/assets/media/icons/outline/audio-video/art_track.svg',\n      av_timer: '/assets/media/icons/outline/audio-video/av_timer.svg',\n      branding_watermark: '/assets/media/icons/outline/audio-video/branding_watermark.svg',\n      call_to_action: '/assets/media/icons/outline/audio-video/call_to_action.svg',\n      closed_caption: '/assets/media/icons/outline/audio-video/closed_caption.svg',\n      closed_caption_disabled:\n        '/assets/media/icons/outline/audio-video/closed_caption_disabled.svg',\n      control_camera: '/assets/media/icons/outline/audio-video/control_camera.svg',\n      equalizer: '/assets/media/icons/outline/audio-video/equalizer.svg',\n      explicit: '/assets/media/icons/outline/audio-video/explicit.svg',\n      fast_forward: '/assets/media/icons/outline/audio-video/fast_forward.svg',\n      fast_rewind: '/assets/media/icons/outline/audio-video/fast_rewind.svg',\n      featured_play_list: '/assets/media/icons/outline/audio-video/featured_play_list.svg',\n      featured_video: '/assets/media/icons/outline/audio-video/featured_video.svg',\n      fiber_dvr: '/assets/media/icons/outline/audio-video/fiber_dvr.svg',\n      fiber_manual_record: '/assets/media/icons/outline/audio-video/fiber_manual_record.svg',\n      fiber_new: '/assets/media/icons/outline/audio-video/fiber_new.svg',\n      fiber_pin: '/assets/media/icons/outline/audio-video/fiber_pin.svg',\n      fiber_smart_record: '/assets/media/icons/outline/audio-video/fiber_smart_record.svg',\n      forward_10: '/assets/media/icons/outline/audio-video/forward_10.svg',\n      forward_30: '/assets/media/icons/outline/audio-video/forward_30.svg',\n      forward_5: '/assets/media/icons/outline/audio-video/forward_5.svg',\n      games: '/assets/media/icons/outline/audio-video/games.svg',\n      hd: '/assets/media/icons/outline/audio-video/hd.svg',\n      hearing: '/assets/media/icons/outline/audio-video/hearing.svg',\n      hearing_disabled: '/assets/media/icons/outline/audio-video/hearing_disabled.svg',\n      high_quality: '/assets/media/icons/outline/audio-video/high_quality.svg',\n      library_add: '/assets/media/icons/outline/audio-video/library_add.svg',\n      library_add_check: '/assets/media/icons/outline/audio-video/library_add_check.svg',\n      library_books: '/assets/media/icons/outline/audio-video/library_books.svg',\n      library_music: '/assets/media/icons/outline/audio-video/library_music.svg',\n      loop: '/assets/media/icons/outline/audio-video/loop.svg',\n      mic: '/assets/media/icons/outline/audio-video/mic.svg',\n      mic_none: '/assets/media/icons/outline/audio-video/mic_none.svg',\n      mic_off: '/assets/media/icons/outline/audio-video/mic_off.svg',\n      missed_video_call: '/assets/media/icons/outline/audio-video/missed_video_call.svg',\n      movie: '/assets/media/icons/outline/audio-video/movie.svg',\n      music_video: '/assets/media/icons/outline/audio-video/music_video.svg',\n      new_releases: '/assets/media/icons/outline/audio-video/new_releases.svg',\n      note: '/assets/media/icons/outline/audio-video/note.svg',\n      not_interested: '/assets/media/icons/outline/audio-video/not_interested.svg',\n      pause: '/assets/media/icons/outline/audio-video/pause.svg',\n      pause_circle_filled: '/assets/media/icons/outline/audio-video/pause_circle_filled.svg',\n      pause_circle_outline: '/assets/media/icons/outline/audio-video/pause_circle_outline.svg',\n      playlist_add: '/assets/media/icons/outline/audio-video/playlist_add.svg',\n      playlist_add_check: '/assets/media/icons/outline/audio-video/playlist_add_check.svg',\n      playlist_play: '/assets/media/icons/outline/audio-video/playlist_play.svg',\n      play_arrow: '/assets/media/icons/outline/audio-video/play_arrow.svg',\n      play_circle_filled: '/assets/media/icons/outline/audio-video/play_circle_filled.svg',\n      play_circle_outline: '/assets/media/icons/outline/audio-video/play_circle_outline.svg',\n      queue: '/assets/media/icons/outline/audio-video/queue.svg',\n      queue_music: '/assets/media/icons/outline/audio-video/queue_music.svg',\n      queue_play_next: '/assets/media/icons/outline/audio-video/queue_play_next.svg',\n      radio: '/assets/media/icons/outline/audio-video/radio.svg',\n      recent_actors: '/assets/media/icons/outline/audio-video/recent_actors.svg',\n      remove_from_queue: '/assets/media/icons/outline/audio-video/remove_from_queue.svg',\n      repeat: '/assets/media/icons/outline/audio-video/repeat.svg',\n      repeat_one: '/assets/media/icons/outline/audio-video/repeat_one.svg',\n      replay: '/assets/media/icons/outline/audio-video/replay.svg',\n      replay_10: '/assets/media/icons/outline/audio-video/replay_10.svg',\n      replay_30: '/assets/media/icons/outline/audio-video/replay_30.svg',\n      replay_5: '/assets/media/icons/outline/audio-video/replay_5.svg',\n      shuffle: '/assets/media/icons/outline/audio-video/shuffle.svg',\n      skip_next: '/assets/media/icons/outline/audio-video/skip_next.svg',\n      skip_previous: '/assets/media/icons/outline/audio-video/skip_previous.svg',\n      slow_motion_video: '/assets/media/icons/outline/audio-video/slow_motion_video.svg',\n      snooze: '/assets/media/icons/outline/audio-video/snooze.svg',\n      sort_by_alpha: '/assets/media/icons/outline/audio-video/sort_by_alpha.svg',\n      speed: '/assets/media/icons/outline/audio-video/speed.svg',\n      stop: '/assets/media/icons/outline/audio-video/stop.svg',\n      stop_circle: '/assets/media/icons/outline/audio-video/stop_circle.svg',\n      subscriptions: '/assets/media/icons/outline/audio-video/subscriptions.svg',\n      subtitles: '/assets/media/icons/outline/audio-video/subtitles.svg',\n      surround_sound: '/assets/media/icons/outline/audio-video/surround_sound.svg',\n      videocam: '/assets/media/icons/outline/audio-video/videocam.svg',\n      videocam_off: '/assets/media/icons/outline/audio-video/videocam_off.svg',\n      video_call: '/assets/media/icons/outline/audio-video/video_call.svg',\n      video_label: '/assets/media/icons/outline/audio-video/video_label.svg',\n      video_library: '/assets/media/icons/outline/audio-video/video_library.svg',\n      video_settings: '/assets/media/icons/outline/audio-video/video_settings.svg',\n      volume_down: '/assets/media/icons/outline/audio-video/volume_down.svg',\n      volume_mute: '/assets/media/icons/outline/audio-video/volume_mute.svg',\n      volume_off: '/assets/media/icons/outline/audio-video/volume_off.svg',\n      volume_up: '/assets/media/icons/outline/audio-video/volume_up.svg',\n      web: '/assets/media/icons/outline/audio-video/web.svg',\n      web_asset: '/assets/media/icons/outline/audio-video/web_asset.svg',\n    },\n    communication: {\n      add_ic_call: '/assets/media/icons/outline/communication/add_ic_call.svg',\n      alternate_email: '/assets/media/icons/outline/communication/alternate_email.svg',\n      business: '/assets/media/icons/outline/communication/business.svg',\n      call: '/assets/media/icons/outline/communication/call.svg',\n      call_end: '/assets/media/icons/outline/communication/call_end.svg',\n      call_made: '/assets/media/icons/outline/communication/call_made.svg',\n      call_merge: '/assets/media/icons/outline/communication/call_merge.svg',\n      call_missed: '/assets/media/icons/outline/communication/call_missed.svg',\n      call_missed_outgoing: '/assets/media/icons/outline/communication/call_missed_outgoing.svg',\n      call_received: '/assets/media/icons/outline/communication/call_received.svg',\n      call_split: '/assets/media/icons/outline/communication/call_split.svg',\n      cancel_presentation: '/assets/media/icons/outline/communication/cancel_presentation.svg',\n      chat: '/assets/media/icons/outline/communication/chat.svg',\n      chat_bubble: '/assets/media/icons/outline/communication/chat_bubble.svg',\n      chat_bubble_outline: '/assets/media/icons/outline/communication/chat_bubble_outline.svg',\n      clear_all: '/assets/media/icons/outline/communication/clear_all.svg',\n      comment: '/assets/media/icons/outline/communication/comment.svg',\n      contacts: '/assets/media/icons/outline/communication/contacts.svg',\n      contact_mail: '/assets/media/icons/outline/communication/contact_mail.svg',\n      contact_phone: '/assets/media/icons/outline/communication/contact_phone.svg',\n      desktop_access_disabled:\n        '/assets/media/icons/outline/communication/desktop_access_disabled.svg',\n      dialer_sip: '/assets/media/icons/outline/communication/dialer_sip.svg',\n      dialpad: '/assets/media/icons/outline/communication/dialpad.svg',\n      domain_disabled: '/assets/media/icons/outline/communication/domain_disabled.svg',\n      domain_verification: '/assets/media/icons/outline/communication/domain_verification.svg',\n      duo: '/assets/media/icons/outline/communication/duo.svg',\n      email: '/assets/media/icons/outline/communication/email.svg',\n      forum: '/assets/media/icons/outline/communication/forum.svg',\n      forward_to_inbox: '/assets/media/icons/outline/communication/forward_to_inbox.svg',\n      hourglass_bottom: '/assets/media/icons/outline/communication/hourglass_bottom.svg',\n      hourglass_top: '/assets/media/icons/outline/communication/hourglass_top.svg',\n      import_contacts: '/assets/media/icons/outline/communication/import_contacts.svg',\n      import_export: '/assets/media/icons/outline/communication/import_export.svg',\n      invert_colors_off: '/assets/media/icons/outline/communication/invert_colors_off.svg',\n      list_alt: '/assets/media/icons/outline/communication/list_alt.svg',\n      live_help: '/assets/media/icons/outline/communication/live_help.svg',\n      location_off: '/assets/media/icons/outline/communication/location_off.svg',\n      location_on: '/assets/media/icons/outline/communication/location_on.svg',\n      mail_outline: '/assets/media/icons/outline/communication/mail_outline.svg',\n      mark_chat_read: '/assets/media/icons/outline/communication/mark_chat_read.svg',\n      mark_chat_unread: '/assets/media/icons/outline/communication/mark_chat_unread.svg',\n      mark_email_read: '/assets/media/icons/outline/communication/mark_email_read.svg',\n      mark_email_unread: '/assets/media/icons/outline/communication/mark_email_unread.svg',\n      message: '/assets/media/icons/outline/communication/message.svg',\n      mobile_screen_share: '/assets/media/icons/outline/communication/mobile_screen_share.svg',\n      more_time: '/assets/media/icons/outline/communication/more_time.svg',\n      nat: '/assets/media/icons/outline/communication/nat.svg',\n      no_sim: '/assets/media/icons/outline/communication/no_sim.svg',\n      pause_presentation: '/assets/media/icons/outline/communication/pause_presentation.svg',\n      person_add_disabled: '/assets/media/icons/outline/communication/person_add_disabled.svg',\n      person_search: '/assets/media/icons/outline/communication/person_search.svg',\n      phone: '/assets/media/icons/outline/communication/phone.svg',\n      phonelink_erase: '/assets/media/icons/outline/communication/phonelink_erase.svg',\n      phonelink_lock: '/assets/media/icons/outline/communication/phonelink_lock.svg',\n      phonelink_ring: '/assets/media/icons/outline/communication/phonelink_ring.svg',\n      phonelink_setup: '/assets/media/icons/outline/communication/phonelink_setup.svg',\n      phone_disabled: '/assets/media/icons/outline/communication/phone_disabled.svg',\n      phone_enabled: '/assets/media/icons/outline/communication/phone_enabled.svg',\n      portable_wifi_off: '/assets/media/icons/outline/communication/portable_wifi_off.svg',\n      present_to_all: '/assets/media/icons/outline/communication/present_to_all.svg',\n      print_disabled: '/assets/media/icons/outline/communication/print_disabled.svg',\n      qr_code: '/assets/media/icons/outline/communication/qr_code.svg',\n      qr_code_scanner: '/assets/media/icons/outline/communication/qr_code_scanner.svg',\n      read_more: '/assets/media/icons/outline/communication/read_more.svg',\n      ring_volume: '/assets/media/icons/outline/communication/ring_volume.svg',\n      rss_feed: '/assets/media/icons/outline/communication/rss_feed.svg',\n      screen_share: '/assets/media/icons/outline/communication/screen_share.svg',\n      sentiment_satisfied_alt:\n        '/assets/media/icons/outline/communication/sentiment_satisfied_alt.svg',\n      speaker_phone: '/assets/media/icons/outline/communication/speaker_phone.svg',\n      stay_current_landscape:\n        '/assets/media/icons/outline/communication/stay_current_landscape.svg',\n      stay_current_portrait: '/assets/media/icons/outline/communication/stay_current_portrait.svg',\n      stay_primary_landscape:\n        '/assets/media/icons/outline/communication/stay_primary_landscape.svg',\n      stay_primary_portrait: '/assets/media/icons/outline/communication/stay_primary_portrait.svg',\n      stop_screen_share: '/assets/media/icons/outline/communication/stop_screen_share.svg',\n      swap_calls: '/assets/media/icons/outline/communication/swap_calls.svg',\n      textsms: '/assets/media/icons/outline/communication/textsms.svg',\n      unsubscribe: '/assets/media/icons/outline/communication/unsubscribe.svg',\n      voicemail: '/assets/media/icons/outline/communication/voicemail.svg',\n      vpn_key: '/assets/media/icons/outline/communication/vpn_key.svg',\n      wifi_calling: '/assets/media/icons/outline/communication/wifi_calling.svg',\n    },\n    content: {\n      add: '/assets/media/icons/outline/content/add.svg',\n      add_box: '/assets/media/icons/outline/content/add_box.svg',\n      add_circle: '/assets/media/icons/outline/content/add_circle.svg',\n      add_circle_outline: '/assets/media/icons/outline/content/add_circle_outline.svg',\n      amp_stories: '/assets/media/icons/outline/content/amp_stories.svg',\n      archive: '/assets/media/icons/outline/content/archive.svg',\n      attribution: '/assets/media/icons/outline/content/attribution.svg',\n      backspace: '/assets/media/icons/outline/content/backspace.svg',\n      ballot: '/assets/media/icons/outline/content/ballot.svg',\n      biotech: '/assets/media/icons/outline/content/biotech.svg',\n      block: '/assets/media/icons/outline/content/block.svg',\n      calculate: '/assets/media/icons/outline/content/calculate.svg',\n      clear: '/assets/media/icons/outline/content/clear.svg',\n      content_copy: '/assets/media/icons/outline/content/content_copy.svg',\n      content_cut: '/assets/media/icons/outline/content/content_cut.svg',\n      content_paste: '/assets/media/icons/outline/content/content_paste.svg',\n      create: '/assets/media/icons/outline/content/create.svg',\n      delete_sweep: '/assets/media/icons/outline/content/delete_sweep.svg',\n      drafts: '/assets/media/icons/outline/content/drafts.svg',\n      dynamic_feed: '/assets/media/icons/outline/content/dynamic_feed.svg',\n      file_copy: '/assets/media/icons/outline/content/file_copy.svg',\n      filter_list: '/assets/media/icons/outline/content/filter_list.svg',\n      flag: '/assets/media/icons/outline/content/flag.svg',\n      font_download: '/assets/media/icons/outline/content/font_download.svg',\n      forward: '/assets/media/icons/outline/content/forward.svg',\n      gesture: '/assets/media/icons/outline/content/gesture.svg',\n      how_to_reg: '/assets/media/icons/outline/content/how_to_reg.svg',\n      how_to_vote: '/assets/media/icons/outline/content/how_to_vote.svg',\n      inbox: '/assets/media/icons/outline/content/inbox.svg',\n      insights: '/assets/media/icons/outline/content/insights.svg',\n      link: '/assets/media/icons/outline/content/link.svg',\n      link_off: '/assets/media/icons/outline/content/link_off.svg',\n      low_priority: '/assets/media/icons/outline/content/low_priority.svg',\n      mail: '/assets/media/icons/outline/content/mail.svg',\n      markunread: '/assets/media/icons/outline/content/markunread.svg',\n      move_to_inbox: '/assets/media/icons/outline/content/move_to_inbox.svg',\n      next_week: '/assets/media/icons/outline/content/next_week.svg',\n      outlined_flag: '/assets/media/icons/outline/content/outlined_flag.svg',\n      policy: '/assets/media/icons/outline/content/policy.svg',\n      push_pin: '/assets/media/icons/outline/content/push_pin.svg',\n      redo: '/assets/media/icons/outline/content/redo.svg',\n      remove: '/assets/media/icons/outline/content/remove.svg',\n      remove_circle: '/assets/media/icons/outline/content/remove_circle.svg',\n      remove_circle_outline: '/assets/media/icons/outline/content/remove_circle_outline.svg',\n      reply: '/assets/media/icons/outline/content/reply.svg',\n      reply_all: '/assets/media/icons/outline/content/reply_all.svg',\n      report: '/assets/media/icons/outline/content/report.svg',\n      report_gmailerrorred: '/assets/media/icons/outline/content/report_gmailerrorred.svg',\n      report_off: '/assets/media/icons/outline/content/report_off.svg',\n      save: '/assets/media/icons/outline/content/save.svg',\n      save_alt: '/assets/media/icons/outline/content/save_alt.svg',\n      select_all: '/assets/media/icons/outline/content/select_all.svg',\n      send: '/assets/media/icons/outline/content/send.svg',\n      sort: '/assets/media/icons/outline/content/sort.svg',\n      square_foot: '/assets/media/icons/outline/content/square_foot.svg',\n      text_format: '/assets/media/icons/outline/content/text_format.svg',\n      unarchive: '/assets/media/icons/outline/content/unarchive.svg',\n      undo: '/assets/media/icons/outline/content/undo.svg',\n      waves: '/assets/media/icons/outline/content/waves.svg',\n      weekend: '/assets/media/icons/outline/content/weekend.svg',\n      where_to_vote: '/assets/media/icons/outline/content/where_to_vote.svg',\n    },\n    device: {\n      access_alarm: '/assets/media/icons/outline/device/access_alarm.svg',\n      access_alarms: '/assets/media/icons/outline/device/access_alarms.svg',\n      access_time: '/assets/media/icons/outline/device/access_time.svg',\n      add_alarm: '/assets/media/icons/outline/device/add_alarm.svg',\n      add_to_home_screen: '/assets/media/icons/outline/device/add_to_home_screen.svg',\n      ad_units: '/assets/media/icons/outline/device/ad_units.svg',\n      airplanemode_active: '/assets/media/icons/outline/device/airplanemode_active.svg',\n      airplanemode_inactive: '/assets/media/icons/outline/device/airplanemode_inactive.svg',\n      battery_alert: '/assets/media/icons/outline/device/battery_alert.svg',\n      battery_charging_full: '/assets/media/icons/outline/device/battery_charging_full.svg',\n      battery_full: '/assets/media/icons/outline/device/battery_full.svg',\n      battery_std: '/assets/media/icons/outline/device/battery_std.svg',\n      battery_unknown: '/assets/media/icons/outline/device/battery_unknown.svg',\n      bluetooth: '/assets/media/icons/outline/device/bluetooth.svg',\n      bluetooth_connected: '/assets/media/icons/outline/device/bluetooth_connected.svg',\n      bluetooth_disabled: '/assets/media/icons/outline/device/bluetooth_disabled.svg',\n      bluetooth_searching: '/assets/media/icons/outline/device/bluetooth_searching.svg',\n      brightness_auto: '/assets/media/icons/outline/device/brightness_auto.svg',\n      brightness_high: '/assets/media/icons/outline/device/brightness_high.svg',\n      brightness_low: '/assets/media/icons/outline/device/brightness_low.svg',\n      brightness_medium: '/assets/media/icons/outline/device/brightness_medium.svg',\n      data_usage: '/assets/media/icons/outline/device/data_usage.svg',\n      developer_mode: '/assets/media/icons/outline/device/developer_mode.svg',\n      devices: '/assets/media/icons/outline/device/devices.svg',\n      dvr: '/assets/media/icons/outline/device/dvr.svg',\n      gps_fixed: '/assets/media/icons/outline/device/gps_fixed.svg',\n      gps_not_fixed: '/assets/media/icons/outline/device/gps_not_fixed.svg',\n      gps_off: '/assets/media/icons/outline/device/gps_off.svg',\n      graphic_eq: '/assets/media/icons/outline/device/graphic_eq.svg',\n      location_disabled: '/assets/media/icons/outline/device/location_disabled.svg',\n      location_searching: '/assets/media/icons/outline/device/location_searching.svg',\n      mobile_friendly: '/assets/media/icons/outline/device/mobile_friendly.svg',\n      mobile_off: '/assets/media/icons/outline/device/mobile_off.svg',\n      nfc: '/assets/media/icons/outline/device/nfc.svg',\n      screen_lock_landscape: '/assets/media/icons/outline/device/screen_lock_landscape.svg',\n      screen_lock_portrait: '/assets/media/icons/outline/device/screen_lock_portrait.svg',\n      screen_lock_rotation: '/assets/media/icons/outline/device/screen_lock_rotation.svg',\n      screen_rotation: '/assets/media/icons/outline/device/screen_rotation.svg',\n      sd_storage: '/assets/media/icons/outline/device/sd_storage.svg',\n      settings_system_daydream: '/assets/media/icons/outline/device/settings_system_daydream.svg',\n      signal_cellular_4_bar: '/assets/media/icons/outline/device/signal_cellular_4_bar.svg',\n      signal_cellular_alt: '/assets/media/icons/outline/device/signal_cellular_alt.svg',\n      signal_cellular_connected_no_internet_4_bar:\n        '/assets/media/icons/outline/device/signal_cellular_connected_no_internet_4_bar.svg',\n      signal_cellular_no_sim: '/assets/media/icons/outline/device/signal_cellular_no_sim.svg',\n      signal_cellular_null: '/assets/media/icons/outline/device/signal_cellular_null.svg',\n      signal_cellular_off: '/assets/media/icons/outline/device/signal_cellular_off.svg',\n      signal_wifi_4_bar: '/assets/media/icons/outline/device/signal_wifi_4_bar.svg',\n      signal_wifi_4_bar_lock: '/assets/media/icons/outline/device/signal_wifi_4_bar_lock.svg',\n      signal_wifi_off: '/assets/media/icons/outline/device/signal_wifi_off.svg',\n      storage: '/assets/media/icons/outline/device/storage.svg',\n      thermostat: '/assets/media/icons/outline/device/thermostat.svg',\n      usb: '/assets/media/icons/outline/device/usb.svg',\n      wallpaper: '/assets/media/icons/outline/device/wallpaper.svg',\n      widgets: '/assets/media/icons/outline/device/widgets.svg',\n      wifi_lock: '/assets/media/icons/outline/device/wifi_lock.svg',\n      wifi_tethering: '/assets/media/icons/outline/device/wifi_tethering.svg',\n    },\n    editor: {\n      add_comment: '/assets/media/icons/outline/editor/add_comment.svg',\n      attach_file: '/assets/media/icons/outline/editor/attach_file.svg',\n      attach_money: '/assets/media/icons/outline/editor/attach_money.svg',\n      bar_chart: '/assets/media/icons/outline/editor/bar_chart.svg',\n      border_all: '/assets/media/icons/outline/editor/border_all.svg',\n      border_bottom: '/assets/media/icons/outline/editor/border_bottom.svg',\n      border_clear: '/assets/media/icons/outline/editor/border_clear.svg',\n      border_horizontal: '/assets/media/icons/outline/editor/border_horizontal.svg',\n      border_inner: '/assets/media/icons/outline/editor/border_inner.svg',\n      border_left: '/assets/media/icons/outline/editor/border_left.svg',\n      border_outer: '/assets/media/icons/outline/editor/border_outer.svg',\n      border_right: '/assets/media/icons/outline/editor/border_right.svg',\n      border_style: '/assets/media/icons/outline/editor/border_style.svg',\n      border_top: '/assets/media/icons/outline/editor/border_top.svg',\n      border_vertical: '/assets/media/icons/outline/editor/border_vertical.svg',\n      bubble_chart: '/assets/media/icons/outline/editor/bubble_chart.svg',\n      drag_handle: '/assets/media/icons/outline/editor/drag_handle.svg',\n      format_align_center: '/assets/media/icons/outline/editor/format_align_center.svg',\n      format_align_justify: '/assets/media/icons/outline/editor/format_align_justify.svg',\n      format_align_left: '/assets/media/icons/outline/editor/format_align_left.svg',\n      format_align_right: '/assets/media/icons/outline/editor/format_align_right.svg',\n      format_bold: '/assets/media/icons/outline/editor/format_bold.svg',\n      format_clear: '/assets/media/icons/outline/editor/format_clear.svg',\n      format_color_reset: '/assets/media/icons/outline/editor/format_color_reset.svg',\n      format_indent_decrease: '/assets/media/icons/outline/editor/format_indent_decrease.svg',\n      format_indent_increase: '/assets/media/icons/outline/editor/format_indent_increase.svg',\n      format_italic: '/assets/media/icons/outline/editor/format_italic.svg',\n      format_line_spacing: '/assets/media/icons/outline/editor/format_line_spacing.svg',\n      format_list_bulleted: '/assets/media/icons/outline/editor/format_list_bulleted.svg',\n      format_list_numbered: '/assets/media/icons/outline/editor/format_list_numbered.svg',\n      format_list_numbered_rtl: '/assets/media/icons/outline/editor/format_list_numbered_rtl.svg',\n      format_paint: '/assets/media/icons/outline/editor/format_paint.svg',\n      format_quote: '/assets/media/icons/outline/editor/format_quote.svg',\n      format_shapes: '/assets/media/icons/outline/editor/format_shapes.svg',\n      format_size: '/assets/media/icons/outline/editor/format_size.svg',\n      format_strikethrough: '/assets/media/icons/outline/editor/format_strikethrough.svg',\n      format_textdirection_l_to_r:\n        '/assets/media/icons/outline/editor/format_textdirection_l_to_r.svg',\n      format_textdirection_r_to_l:\n        '/assets/media/icons/outline/editor/format_textdirection_r_to_l.svg',\n      format_underlined: '/assets/media/icons/outline/editor/format_underlined.svg',\n      functions: '/assets/media/icons/outline/editor/functions.svg',\n      height: '/assets/media/icons/outline/editor/height.svg',\n      highlight: '/assets/media/icons/outline/editor/highlight.svg',\n      horizontal_rule: '/assets/media/icons/outline/editor/horizontal_rule.svg',\n      insert_chart: '/assets/media/icons/outline/editor/insert_chart.svg',\n      insert_chart_outlined: '/assets/media/icons/outline/editor/insert_chart_outlined.svg',\n      insert_comment: '/assets/media/icons/outline/editor/insert_comment.svg',\n      insert_drive_file: '/assets/media/icons/outline/editor/insert_drive_file.svg',\n      insert_emoticon: '/assets/media/icons/outline/editor/insert_emoticon.svg',\n      insert_invitation: '/assets/media/icons/outline/editor/insert_invitation.svg',\n      insert_link: '/assets/media/icons/outline/editor/insert_link.svg',\n      insert_photo: '/assets/media/icons/outline/editor/insert_photo.svg',\n      linear_scale: '/assets/media/icons/outline/editor/linear_scale.svg',\n      merge_type: '/assets/media/icons/outline/editor/merge_type.svg',\n      mode: '/assets/media/icons/outline/editor/mode.svg',\n      mode_comment: '/assets/media/icons/outline/editor/mode_comment.svg',\n      monetization_on: '/assets/media/icons/outline/editor/monetization_on.svg',\n      money_off: '/assets/media/icons/outline/editor/money_off.svg',\n      money_off_csred: '/assets/media/icons/outline/editor/money_off_csred.svg',\n      multiline_chart: '/assets/media/icons/outline/editor/multiline_chart.svg',\n      notes: '/assets/media/icons/outline/editor/notes.svg',\n      pie_chart: '/assets/media/icons/outline/editor/pie_chart.svg',\n      pie_chart_outline: '/assets/media/icons/outline/editor/pie_chart_outline.svg',\n      post_add: '/assets/media/icons/outline/editor/post_add.svg',\n      publish: '/assets/media/icons/outline/editor/publish.svg',\n      scatter_plot: '/assets/media/icons/outline/editor/scatter_plot.svg',\n      score: '/assets/media/icons/outline/editor/score.svg',\n      short_text: '/assets/media/icons/outline/editor/short_text.svg',\n      show_chart: '/assets/media/icons/outline/editor/show_chart.svg',\n      space_bar: '/assets/media/icons/outline/editor/space_bar.svg',\n      stacked_line_chart: '/assets/media/icons/outline/editor/stacked_line_chart.svg',\n      strikethrough_s: '/assets/media/icons/outline/editor/strikethrough_s.svg',\n      subscript: '/assets/media/icons/outline/editor/subscript.svg',\n      superscript: '/assets/media/icons/outline/editor/superscript.svg',\n      table_chart: '/assets/media/icons/outline/editor/table_chart.svg',\n      table_rows: '/assets/media/icons/outline/editor/table_rows.svg',\n      text_fields: '/assets/media/icons/outline/editor/text_fields.svg',\n      title: '/assets/media/icons/outline/editor/title.svg',\n      vertical_align_bottom: '/assets/media/icons/outline/editor/vertical_align_bottom.svg',\n      vertical_align_center: '/assets/media/icons/outline/editor/vertical_align_center.svg',\n      vertical_align_top: '/assets/media/icons/outline/editor/vertical_align_top.svg',\n      wrap_text: '/assets/media/icons/outline/editor/wrap_text.svg',\n    },\n    file: {\n      attachment: '/assets/media/icons/outline/file/attachment.svg',\n      attach_email: '/assets/media/icons/outline/file/attach_email.svg',\n      cloud: '/assets/media/icons/outline/file/cloud.svg',\n      cloud_circle: '/assets/media/icons/outline/file/cloud_circle.svg',\n      cloud_done: '/assets/media/icons/outline/file/cloud_done.svg',\n      cloud_download: '/assets/media/icons/outline/file/cloud_download.svg',\n      cloud_off: '/assets/media/icons/outline/file/cloud_off.svg',\n      cloud_queue: '/assets/media/icons/outline/file/cloud_queue.svg',\n      cloud_upload: '/assets/media/icons/outline/file/cloud_upload.svg',\n      create_new_folder: '/assets/media/icons/outline/file/create_new_folder.svg',\n      download: '/assets/media/icons/outline/file/download.svg',\n      download_done: '/assets/media/icons/outline/file/download_done.svg',\n      folder: '/assets/media/icons/outline/file/folder.svg',\n      folder_open: '/assets/media/icons/outline/file/folder_open.svg',\n      folder_shared: '/assets/media/icons/outline/file/folder_shared.svg',\n      request_quote: '/assets/media/icons/outline/file/request_quote.svg',\n      rule_folder: '/assets/media/icons/outline/file/rule_folder.svg',\n      snippet_folder: '/assets/media/icons/outline/file/snippet_folder.svg',\n      text_snippet: '/assets/media/icons/outline/file/text_snippet.svg',\n      topic: '/assets/media/icons/outline/file/topic.svg',\n      upload: '/assets/media/icons/outline/file/upload.svg',\n    },\n    hardware: {\n      browser_not_supported: '/assets/media/icons/outline/hardware/browser_not_supported.svg',\n      cast: '/assets/media/icons/outline/hardware/cast.svg',\n      cast_connected: '/assets/media/icons/outline/hardware/cast_connected.svg',\n      cast_for_education: '/assets/media/icons/outline/hardware/cast_for_education.svg',\n      computer: '/assets/media/icons/outline/hardware/computer.svg',\n      desktop_mac: '/assets/media/icons/outline/hardware/desktop_mac.svg',\n      desktop_windows: '/assets/media/icons/outline/hardware/desktop_windows.svg',\n      developer_board: '/assets/media/icons/outline/hardware/developer_board.svg',\n      devices_other: '/assets/media/icons/outline/hardware/devices_other.svg',\n      device_hub: '/assets/media/icons/outline/hardware/device_hub.svg',\n      device_unknown: '/assets/media/icons/outline/hardware/device_unknown.svg',\n      dock: '/assets/media/icons/outline/hardware/dock.svg',\n      gamepad: '/assets/media/icons/outline/hardware/gamepad.svg',\n      headset: '/assets/media/icons/outline/hardware/headset.svg',\n      headset_mic: '/assets/media/icons/outline/hardware/headset_mic.svg',\n      keyboard: '/assets/media/icons/outline/hardware/keyboard.svg',\n      keyboard_arrow_down: '/assets/media/icons/outline/hardware/keyboard_arrow_down.svg',\n      keyboard_arrow_left: '/assets/media/icons/outline/hardware/keyboard_arrow_left.svg',\n      keyboard_arrow_right: '/assets/media/icons/outline/hardware/keyboard_arrow_right.svg',\n      keyboard_arrow_up: '/assets/media/icons/outline/hardware/keyboard_arrow_up.svg',\n      keyboard_backspace: '/assets/media/icons/outline/hardware/keyboard_backspace.svg',\n      keyboard_capslock: '/assets/media/icons/outline/hardware/keyboard_capslock.svg',\n      keyboard_hide: '/assets/media/icons/outline/hardware/keyboard_hide.svg',\n      keyboard_return: '/assets/media/icons/outline/hardware/keyboard_return.svg',\n      keyboard_tab: '/assets/media/icons/outline/hardware/keyboard_tab.svg',\n      keyboard_voice: '/assets/media/icons/outline/hardware/keyboard_voice.svg',\n      laptop: '/assets/media/icons/outline/hardware/laptop.svg',\n      laptop_chromebook: '/assets/media/icons/outline/hardware/laptop_chromebook.svg',\n      laptop_mac: '/assets/media/icons/outline/hardware/laptop_mac.svg',\n      laptop_windows: '/assets/media/icons/outline/hardware/laptop_windows.svg',\n      memory: '/assets/media/icons/outline/hardware/memory.svg',\n      mouse: '/assets/media/icons/outline/hardware/mouse.svg',\n      phonelink: '/assets/media/icons/outline/hardware/phonelink.svg',\n      phonelink_off: '/assets/media/icons/outline/hardware/phonelink_off.svg',\n      phone_android: '/assets/media/icons/outline/hardware/phone_android.svg',\n      phone_iphone: '/assets/media/icons/outline/hardware/phone_iphone.svg',\n      point_of_sale: '/assets/media/icons/outline/hardware/point_of_sale.svg',\n      power_input: '/assets/media/icons/outline/hardware/power_input.svg',\n      router: '/assets/media/icons/outline/hardware/router.svg',\n      scanner: '/assets/media/icons/outline/hardware/scanner.svg',\n      security: '/assets/media/icons/outline/hardware/security.svg',\n      sim_card: '/assets/media/icons/outline/hardware/sim_card.svg',\n      smartphone: '/assets/media/icons/outline/hardware/smartphone.svg',\n      speaker: '/assets/media/icons/outline/hardware/speaker.svg',\n      speaker_group: '/assets/media/icons/outline/hardware/speaker_group.svg',\n      tablet: '/assets/media/icons/outline/hardware/tablet.svg',\n      tablet_android: '/assets/media/icons/outline/hardware/tablet_android.svg',\n      tablet_mac: '/assets/media/icons/outline/hardware/tablet_mac.svg',\n      toys: '/assets/media/icons/outline/hardware/toys.svg',\n      tv: '/assets/media/icons/outline/hardware/tv.svg',\n      videogame_asset: '/assets/media/icons/outline/hardware/videogame_asset.svg',\n      watch: '/assets/media/icons/outline/hardware/watch.svg',\n    },\n    home: {\n      sensor_door: '/assets/media/icons/outline/home/sensor_door.svg',\n      sensor_window: '/assets/media/icons/outline/home/sensor_window.svg',\n    },\n    image: {\n      add_a_photo: '/assets/media/icons/outline/image/add_a_photo.svg',\n      add_photo_alternate: '/assets/media/icons/outline/image/add_photo_alternate.svg',\n      add_to_photos: '/assets/media/icons/outline/image/add_to_photos.svg',\n      adjust: '/assets/media/icons/outline/image/adjust.svg',\n      assistant: '/assets/media/icons/outline/image/assistant.svg',\n      assistant_photo: '/assets/media/icons/outline/image/assistant_photo.svg',\n      audiotrack: '/assets/media/icons/outline/image/audiotrack.svg',\n      bedtime: '/assets/media/icons/outline/image/bedtime.svg',\n      blur_circular: '/assets/media/icons/outline/image/blur_circular.svg',\n      blur_linear: '/assets/media/icons/outline/image/blur_linear.svg',\n      blur_off: '/assets/media/icons/outline/image/blur_off.svg',\n      blur_on: '/assets/media/icons/outline/image/blur_on.svg',\n      brightness_1: '/assets/media/icons/outline/image/brightness_1.svg',\n      brightness_2: '/assets/media/icons/outline/image/brightness_2.svg',\n      brightness_3: '/assets/media/icons/outline/image/brightness_3.svg',\n      brightness_4: '/assets/media/icons/outline/image/brightness_4.svg',\n      brightness_5: '/assets/media/icons/outline/image/brightness_5.svg',\n      brightness_6: '/assets/media/icons/outline/image/brightness_6.svg',\n      brightness_7: '/assets/media/icons/outline/image/brightness_7.svg',\n      broken_image: '/assets/media/icons/outline/image/broken_image.svg',\n      brush: '/assets/media/icons/outline/image/brush.svg',\n      burst_mode: '/assets/media/icons/outline/image/burst_mode.svg',\n      camera: '/assets/media/icons/outline/image/camera.svg',\n      camera_alt: '/assets/media/icons/outline/image/camera_alt.svg',\n      camera_front: '/assets/media/icons/outline/image/camera_front.svg',\n      camera_rear: '/assets/media/icons/outline/image/camera_rear.svg',\n      camera_roll: '/assets/media/icons/outline/image/camera_roll.svg',\n      center_focus_strong: '/assets/media/icons/outline/image/center_focus_strong.svg',\n      center_focus_weak: '/assets/media/icons/outline/image/center_focus_weak.svg',\n      collections: '/assets/media/icons/outline/image/collections.svg',\n      collections_bookmark: '/assets/media/icons/outline/image/collections_bookmark.svg',\n      colorize: '/assets/media/icons/outline/image/colorize.svg',\n      color_lens: '/assets/media/icons/outline/image/color_lens.svg',\n      compare: '/assets/media/icons/outline/image/compare.svg',\n      control_point: '/assets/media/icons/outline/image/control_point.svg',\n      control_point_duplicate: '/assets/media/icons/outline/image/control_point_duplicate.svg',\n      crop: '/assets/media/icons/outline/image/crop.svg',\n      crop_16_9: '/assets/media/icons/outline/image/crop_16_9.svg',\n      crop_3_2: '/assets/media/icons/outline/image/crop_3_2.svg',\n      crop_5_4: '/assets/media/icons/outline/image/crop_5_4.svg',\n      crop_7_5: '/assets/media/icons/outline/image/crop_7_5.svg',\n      crop_din: '/assets/media/icons/outline/image/crop_din.svg',\n      crop_free: '/assets/media/icons/outline/image/crop_free.svg',\n      crop_landscape: '/assets/media/icons/outline/image/crop_landscape.svg',\n      crop_original: '/assets/media/icons/outline/image/crop_original.svg',\n      crop_portrait: '/assets/media/icons/outline/image/crop_portrait.svg',\n      crop_rotate: '/assets/media/icons/outline/image/crop_rotate.svg',\n      crop_square: '/assets/media/icons/outline/image/crop_square.svg',\n      dehaze: '/assets/media/icons/outline/image/dehaze.svg',\n      details: '/assets/media/icons/outline/image/details.svg',\n      edit: '/assets/media/icons/outline/image/edit.svg',\n      euro: '/assets/media/icons/outline/image/euro.svg',\n      exposure: '/assets/media/icons/outline/image/exposure.svg',\n      exposure_neg_1: '/assets/media/icons/outline/image/exposure_neg_1.svg',\n      exposure_neg_2: '/assets/media/icons/outline/image/exposure_neg_2.svg',\n      exposure_plus_1: '/assets/media/icons/outline/image/exposure_plus_1.svg',\n      exposure_plus_2: '/assets/media/icons/outline/image/exposure_plus_2.svg',\n      exposure_zero: '/assets/media/icons/outline/image/exposure_zero.svg',\n      filter: '/assets/media/icons/outline/image/filter.svg',\n      filter_1: '/assets/media/icons/outline/image/filter_1.svg',\n      filter_2: '/assets/media/icons/outline/image/filter_2.svg',\n      filter_3: '/assets/media/icons/outline/image/filter_3.svg',\n      filter_4: '/assets/media/icons/outline/image/filter_4.svg',\n      filter_5: '/assets/media/icons/outline/image/filter_5.svg',\n      filter_6: '/assets/media/icons/outline/image/filter_6.svg',\n      filter_7: '/assets/media/icons/outline/image/filter_7.svg',\n      filter_8: '/assets/media/icons/outline/image/filter_8.svg',\n      filter_9: '/assets/media/icons/outline/image/filter_9.svg',\n      filter_9_plus: '/assets/media/icons/outline/image/filter_9_plus.svg',\n      filter_b_and_w: '/assets/media/icons/outline/image/filter_b_and_w.svg',\n      filter_center_focus: '/assets/media/icons/outline/image/filter_center_focus.svg',\n      filter_drama: '/assets/media/icons/outline/image/filter_drama.svg',\n      filter_frames: '/assets/media/icons/outline/image/filter_frames.svg',\n      filter_hdr: '/assets/media/icons/outline/image/filter_hdr.svg',\n      filter_none: '/assets/media/icons/outline/image/filter_none.svg',\n      filter_tilt_shift: '/assets/media/icons/outline/image/filter_tilt_shift.svg',\n      filter_vintage: '/assets/media/icons/outline/image/filter_vintage.svg',\n      flare: '/assets/media/icons/outline/image/flare.svg',\n      flash_auto: '/assets/media/icons/outline/image/flash_auto.svg',\n      flash_off: '/assets/media/icons/outline/image/flash_off.svg',\n      flash_on: '/assets/media/icons/outline/image/flash_on.svg',\n      flip: '/assets/media/icons/outline/image/flip.svg',\n      flip_camera_android: '/assets/media/icons/outline/image/flip_camera_android.svg',\n      flip_camera_ios: '/assets/media/icons/outline/image/flip_camera_ios.svg',\n      gradient: '/assets/media/icons/outline/image/gradient.svg',\n      grain: '/assets/media/icons/outline/image/grain.svg',\n      grid_off: '/assets/media/icons/outline/image/grid_off.svg',\n      grid_on: '/assets/media/icons/outline/image/grid_on.svg',\n      hdr_off: '/assets/media/icons/outline/image/hdr_off.svg',\n      hdr_on: '/assets/media/icons/outline/image/hdr_on.svg',\n      hdr_strong: '/assets/media/icons/outline/image/hdr_strong.svg',\n      hdr_weak: '/assets/media/icons/outline/image/hdr_weak.svg',\n      healing: '/assets/media/icons/outline/image/healing.svg',\n      image: '/assets/media/icons/outline/image/image.svg',\n      image_aspect_ratio: '/assets/media/icons/outline/image/image_aspect_ratio.svg',\n      image_not_supported: '/assets/media/icons/outline/image/image_not_supported.svg',\n      image_search: '/assets/media/icons/outline/image/image_search.svg',\n      iso: '/assets/media/icons/outline/image/iso.svg',\n      landscape: '/assets/media/icons/outline/image/landscape.svg',\n      leak_add: '/assets/media/icons/outline/image/leak_add.svg',\n      leak_remove: '/assets/media/icons/outline/image/leak_remove.svg',\n      lens: '/assets/media/icons/outline/image/lens.svg',\n      linked_camera: '/assets/media/icons/outline/image/linked_camera.svg',\n      looks: '/assets/media/icons/outline/image/looks.svg',\n      looks_3: '/assets/media/icons/outline/image/looks_3.svg',\n      looks_4: '/assets/media/icons/outline/image/looks_4.svg',\n      looks_5: '/assets/media/icons/outline/image/looks_5.svg',\n      looks_6: '/assets/media/icons/outline/image/looks_6.svg',\n      looks_one: '/assets/media/icons/outline/image/looks_one.svg',\n      looks_two: '/assets/media/icons/outline/image/looks_two.svg',\n      loupe: '/assets/media/icons/outline/image/loupe.svg',\n      monochrome_photos: '/assets/media/icons/outline/image/monochrome_photos.svg',\n      motion_photos_on: '/assets/media/icons/outline/image/motion_photos_on.svg',\n      motion_photos_pause: '/assets/media/icons/outline/image/motion_photos_pause.svg',\n      motion_photos_paused: '/assets/media/icons/outline/image/motion_photos_paused.svg',\n      movie_creation: '/assets/media/icons/outline/image/movie_creation.svg',\n      movie_filter: '/assets/media/icons/outline/image/movie_filter.svg',\n      music_note: '/assets/media/icons/outline/image/music_note.svg',\n      music_off: '/assets/media/icons/outline/image/music_off.svg',\n      nature: '/assets/media/icons/outline/image/nature.svg',\n      nature_people: '/assets/media/icons/outline/image/nature_people.svg',\n      navigate_before: '/assets/media/icons/outline/image/navigate_before.svg',\n      navigate_next: '/assets/media/icons/outline/image/navigate_next.svg',\n      palette: '/assets/media/icons/outline/image/palette.svg',\n      panorama: '/assets/media/icons/outline/image/panorama.svg',\n      panorama_fish_eye: '/assets/media/icons/outline/image/panorama_fish_eye.svg',\n      panorama_horizontal: '/assets/media/icons/outline/image/panorama_horizontal.svg',\n      panorama_vertical: '/assets/media/icons/outline/image/panorama_vertical.svg',\n      panorama_wide_angle: '/assets/media/icons/outline/image/panorama_wide_angle.svg',\n      photo: '/assets/media/icons/outline/image/photo.svg',\n      photo_album: '/assets/media/icons/outline/image/photo_album.svg',\n      photo_camera: '/assets/media/icons/outline/image/photo_camera.svg',\n      photo_filter: '/assets/media/icons/outline/image/photo_filter.svg',\n      photo_library: '/assets/media/icons/outline/image/photo_library.svg',\n      photo_size_select_actual: '/assets/media/icons/outline/image/photo_size_select_actual.svg',\n      photo_size_select_large: '/assets/media/icons/outline/image/photo_size_select_large.svg',\n      photo_size_select_small: '/assets/media/icons/outline/image/photo_size_select_small.svg',\n      picture_as_pdf: '/assets/media/icons/outline/image/picture_as_pdf.svg',\n      portrait: '/assets/media/icons/outline/image/portrait.svg',\n      receipt_long: '/assets/media/icons/outline/image/receipt_long.svg',\n      remove_red_eye: '/assets/media/icons/outline/image/remove_red_eye.svg',\n      rotate_90_degrees_ccw: '/assets/media/icons/outline/image/rotate_90_degrees_ccw.svg',\n      rotate_left: '/assets/media/icons/outline/image/rotate_left.svg',\n      rotate_right: '/assets/media/icons/outline/image/rotate_right.svg',\n      shutter_speed: '/assets/media/icons/outline/image/shutter_speed.svg',\n      slideshow: '/assets/media/icons/outline/image/slideshow.svg',\n      straighten: '/assets/media/icons/outline/image/straighten.svg',\n      style: '/assets/media/icons/outline/image/style.svg',\n      switch_camera: '/assets/media/icons/outline/image/switch_camera.svg',\n      switch_video: '/assets/media/icons/outline/image/switch_video.svg',\n      tag_faces: '/assets/media/icons/outline/image/tag_faces.svg',\n      texture: '/assets/media/icons/outline/image/texture.svg',\n      timelapse: '/assets/media/icons/outline/image/timelapse.svg',\n      timer: '/assets/media/icons/outline/image/timer.svg',\n      timer_10: '/assets/media/icons/outline/image/timer_10.svg',\n      timer_3: '/assets/media/icons/outline/image/timer_3.svg',\n      timer_off: '/assets/media/icons/outline/image/timer_off.svg',\n      tonality: '/assets/media/icons/outline/image/tonality.svg',\n      transform: '/assets/media/icons/outline/image/transform.svg',\n      tune: '/assets/media/icons/outline/image/tune.svg',\n      view_comfy: '/assets/media/icons/outline/image/view_comfy.svg',\n      view_compact: '/assets/media/icons/outline/image/view_compact.svg',\n      vignette: '/assets/media/icons/outline/image/vignette.svg',\n      wb_auto: '/assets/media/icons/outline/image/wb_auto.svg',\n      wb_cloudy: '/assets/media/icons/outline/image/wb_cloudy.svg',\n      wb_incandescent: '/assets/media/icons/outline/image/wb_incandescent.svg',\n      wb_iridescent: '/assets/media/icons/outline/image/wb_iridescent.svg',\n      wb_sunny: '/assets/media/icons/outline/image/wb_sunny.svg',\n    },\n    maps: {\n      '360': '/assets/media/icons/outline/maps/360.svg',\n      add_business: '/assets/media/icons/outline/maps/add_business.svg',\n      add_location: '/assets/media/icons/outline/maps/add_location.svg',\n      add_location_alt: '/assets/media/icons/outline/maps/add_location_alt.svg',\n      add_road: '/assets/media/icons/outline/maps/add_road.svg',\n      agriculture: '/assets/media/icons/outline/maps/agriculture.svg',\n      alt_route: '/assets/media/icons/outline/maps/alt_route.svg',\n      atm: '/assets/media/icons/outline/maps/atm.svg',\n      beenhere: '/assets/media/icons/outline/maps/beenhere.svg',\n      bike_scooter: '/assets/media/icons/outline/maps/bike_scooter.svg',\n      category: '/assets/media/icons/outline/maps/category.svg',\n      cleaning_services: '/assets/media/icons/outline/maps/cleaning_services.svg',\n      compass_calibration: '/assets/media/icons/outline/maps/compass_calibration.svg',\n      departure_board: '/assets/media/icons/outline/maps/departure_board.svg',\n      design_services: '/assets/media/icons/outline/maps/design_services.svg',\n      directions: '/assets/media/icons/outline/maps/directions.svg',\n      directions_bike: '/assets/media/icons/outline/maps/directions_bike.svg',\n      directions_boat: '/assets/media/icons/outline/maps/directions_boat.svg',\n      directions_bus: '/assets/media/icons/outline/maps/directions_bus.svg',\n      directions_car: '/assets/media/icons/outline/maps/directions_car.svg',\n      directions_railway: '/assets/media/icons/outline/maps/directions_railway.svg',\n      directions_run: '/assets/media/icons/outline/maps/directions_run.svg',\n      directions_subway: '/assets/media/icons/outline/maps/directions_subway.svg',\n      directions_transit: '/assets/media/icons/outline/maps/directions_transit.svg',\n      directions_walk: '/assets/media/icons/outline/maps/directions_walk.svg',\n      edit_attributes: '/assets/media/icons/outline/maps/edit_attributes.svg',\n      edit_location: '/assets/media/icons/outline/maps/edit_location.svg',\n      edit_road: '/assets/media/icons/outline/maps/edit_road.svg',\n      electrical_services: '/assets/media/icons/outline/maps/electrical_services.svg',\n      electric_bike: '/assets/media/icons/outline/maps/electric_bike.svg',\n      electric_car: '/assets/media/icons/outline/maps/electric_car.svg',\n      electric_moped: '/assets/media/icons/outline/maps/electric_moped.svg',\n      electric_scooter: '/assets/media/icons/outline/maps/electric_scooter.svg',\n      ev_station: '/assets/media/icons/outline/maps/ev_station.svg',\n      fastfood: '/assets/media/icons/outline/maps/fastfood.svg',\n      flight: '/assets/media/icons/outline/maps/flight.svg',\n      handyman: '/assets/media/icons/outline/maps/handyman.svg',\n      home_repair_service: '/assets/media/icons/outline/maps/home_repair_service.svg',\n      hotel: '/assets/media/icons/outline/maps/hotel.svg',\n      hvac: '/assets/media/icons/outline/maps/hvac.svg',\n      layers: '/assets/media/icons/outline/maps/layers.svg',\n      layers_clear: '/assets/media/icons/outline/maps/layers_clear.svg',\n      local_activity: '/assets/media/icons/outline/maps/local_activity.svg',\n      local_airport: '/assets/media/icons/outline/maps/local_airport.svg',\n      local_atm: '/assets/media/icons/outline/maps/local_atm.svg',\n      local_bar: '/assets/media/icons/outline/maps/local_bar.svg',\n      local_cafe: '/assets/media/icons/outline/maps/local_cafe.svg',\n      local_car_wash: '/assets/media/icons/outline/maps/local_car_wash.svg',\n      local_convenience_store: '/assets/media/icons/outline/maps/local_convenience_store.svg',\n      local_dining: '/assets/media/icons/outline/maps/local_dining.svg',\n      local_drink: '/assets/media/icons/outline/maps/local_drink.svg',\n      local_fire_department: '/assets/media/icons/outline/maps/local_fire_department.svg',\n      local_florist: '/assets/media/icons/outline/maps/local_florist.svg',\n      local_gas_station: '/assets/media/icons/outline/maps/local_gas_station.svg',\n      local_grocery_store: '/assets/media/icons/outline/maps/local_grocery_store.svg',\n      local_hospital: '/assets/media/icons/outline/maps/local_hospital.svg',\n      local_hotel: '/assets/media/icons/outline/maps/local_hotel.svg',\n      local_laundry_service: '/assets/media/icons/outline/maps/local_laundry_service.svg',\n      local_library: '/assets/media/icons/outline/maps/local_library.svg',\n      local_mall: '/assets/media/icons/outline/maps/local_mall.svg',\n      local_movies: '/assets/media/icons/outline/maps/local_movies.svg',\n      local_offer: '/assets/media/icons/outline/maps/local_offer.svg',\n      local_parking: '/assets/media/icons/outline/maps/local_parking.svg',\n      local_pharmacy: '/assets/media/icons/outline/maps/local_pharmacy.svg',\n      local_phone: '/assets/media/icons/outline/maps/local_phone.svg',\n      local_pizza: '/assets/media/icons/outline/maps/local_pizza.svg',\n      local_play: '/assets/media/icons/outline/maps/local_play.svg',\n      local_police: '/assets/media/icons/outline/maps/local_police.svg',\n      local_post_office: '/assets/media/icons/outline/maps/local_post_office.svg',\n      local_printshop: '/assets/media/icons/outline/maps/local_printshop.svg',\n      local_see: '/assets/media/icons/outline/maps/local_see.svg',\n      local_shipping: '/assets/media/icons/outline/maps/local_shipping.svg',\n      local_taxi: '/assets/media/icons/outline/maps/local_taxi.svg',\n      map: '/assets/media/icons/outline/maps/map.svg',\n      maps_ugc: '/assets/media/icons/outline/maps/maps_ugc.svg',\n      medical_services: '/assets/media/icons/outline/maps/medical_services.svg',\n      menu_book: '/assets/media/icons/outline/maps/menu_book.svg',\n      miscellaneous_services: '/assets/media/icons/outline/maps/miscellaneous_services.svg',\n      money: '/assets/media/icons/outline/maps/money.svg',\n      moped: '/assets/media/icons/outline/maps/moped.svg',\n      multiple_stop: '/assets/media/icons/outline/maps/multiple_stop.svg',\n      museum: '/assets/media/icons/outline/maps/museum.svg',\n      my_location: '/assets/media/icons/outline/maps/my_location.svg',\n      navigation: '/assets/media/icons/outline/maps/navigation.svg',\n      near_me: '/assets/media/icons/outline/maps/near_me.svg',\n      near_me_disabled: '/assets/media/icons/outline/maps/near_me_disabled.svg',\n      not_listed_location: '/assets/media/icons/outline/maps/not_listed_location.svg',\n      no_meals: '/assets/media/icons/outline/maps/no_meals.svg',\n      no_transfer: '/assets/media/icons/outline/maps/no_transfer.svg',\n      pedal_bike: '/assets/media/icons/outline/maps/pedal_bike.svg',\n      person_pin: '/assets/media/icons/outline/maps/person_pin.svg',\n      person_pin_circle: '/assets/media/icons/outline/maps/person_pin_circle.svg',\n      pest_control: '/assets/media/icons/outline/maps/pest_control.svg',\n      pest_control_rodent: '/assets/media/icons/outline/maps/pest_control_rodent.svg',\n      pin_drop: '/assets/media/icons/outline/maps/pin_drop.svg',\n      place: '/assets/media/icons/outline/maps/place.svg',\n      plumbing: '/assets/media/icons/outline/maps/plumbing.svg',\n      rate_review: '/assets/media/icons/outline/maps/rate_review.svg',\n      restaurant: '/assets/media/icons/outline/maps/restaurant.svg',\n      restaurant_menu: '/assets/media/icons/outline/maps/restaurant_menu.svg',\n      run_circle: '/assets/media/icons/outline/maps/run_circle.svg',\n      satellite: '/assets/media/icons/outline/maps/satellite.svg',\n      set_meal: '/assets/media/icons/outline/maps/set_meal.svg',\n      store_mall_directory: '/assets/media/icons/outline/maps/store_mall_directory.svg',\n      streetview: '/assets/media/icons/outline/maps/streetview.svg',\n      subway: '/assets/media/icons/outline/maps/subway.svg',\n      terrain: '/assets/media/icons/outline/maps/terrain.svg',\n      traffic: '/assets/media/icons/outline/maps/traffic.svg',\n      train: '/assets/media/icons/outline/maps/train.svg',\n      tram: '/assets/media/icons/outline/maps/tram.svg',\n      transfer_within_a_station: '/assets/media/icons/outline/maps/transfer_within_a_station.svg',\n      transit_enterexit: '/assets/media/icons/outline/maps/transit_enterexit.svg',\n      trip_origin: '/assets/media/icons/outline/maps/trip_origin.svg',\n      two_wheeler: '/assets/media/icons/outline/maps/two_wheeler.svg',\n      wine_bar: '/assets/media/icons/outline/maps/wine_bar.svg',\n      wrong_location: '/assets/media/icons/outline/maps/wrong_location.svg',\n      zoom_out_map: '/assets/media/icons/outline/maps/zoom_out_map.svg',\n    },\n    navigation: {\n      apps: '/assets/media/icons/outline/navigation/apps.svg',\n      app_settings_alt: '/assets/media/icons/outline/navigation/app_settings_alt.svg',\n      arrow_back: '/assets/media/icons/outline/navigation/arrow_back.svg',\n      arrow_back_ios: '/assets/media/icons/outline/navigation/arrow_back_ios.svg',\n      arrow_downward: '/assets/media/icons/outline/navigation/arrow_downward.svg',\n      arrow_drop_down: '/assets/media/icons/outline/navigation/arrow_drop_down.svg',\n      arrow_drop_down_circle: '/assets/media/icons/outline/navigation/arrow_drop_down_circle.svg',\n      arrow_drop_up: '/assets/media/icons/outline/navigation/arrow_drop_up.svg',\n      arrow_forward: '/assets/media/icons/outline/navigation/arrow_forward.svg',\n      arrow_forward_ios: '/assets/media/icons/outline/navigation/arrow_forward_ios.svg',\n      arrow_left: '/assets/media/icons/outline/navigation/arrow_left.svg',\n      arrow_right: '/assets/media/icons/outline/navigation/arrow_right.svg',\n      arrow_upward: '/assets/media/icons/outline/navigation/arrow_upward.svg',\n      campaign: '/assets/media/icons/outline/navigation/campaign.svg',\n      cancel: '/assets/media/icons/outline/navigation/cancel.svg',\n      check: '/assets/media/icons/outline/navigation/check.svg',\n      chevron_left: '/assets/media/icons/outline/navigation/chevron_left.svg',\n      chevron_right: '/assets/media/icons/outline/navigation/chevron_right.svg',\n      close: '/assets/media/icons/outline/navigation/close.svg',\n      double_arrow: '/assets/media/icons/outline/navigation/double_arrow.svg',\n      east: '/assets/media/icons/outline/navigation/east.svg',\n      expand_less: '/assets/media/icons/outline/navigation/expand_less.svg',\n      expand_more: '/assets/media/icons/outline/navigation/expand_more.svg',\n      first_page: '/assets/media/icons/outline/navigation/first_page.svg',\n      fullscreen: '/assets/media/icons/outline/navigation/fullscreen.svg',\n      fullscreen_exit: '/assets/media/icons/outline/navigation/fullscreen_exit.svg',\n      home_work: '/assets/media/icons/outline/navigation/home_work.svg',\n      last_page: '/assets/media/icons/outline/navigation/last_page.svg',\n      legend_toggle: '/assets/media/icons/outline/navigation/legend_toggle.svg',\n      menu: '/assets/media/icons/outline/navigation/menu.svg',\n      menu_open: '/assets/media/icons/outline/navigation/menu_open.svg',\n      more_horiz: '/assets/media/icons/outline/navigation/more_horiz.svg',\n      more_vert: '/assets/media/icons/outline/navigation/more_vert.svg',\n      north: '/assets/media/icons/outline/navigation/north.svg',\n      north_east: '/assets/media/icons/outline/navigation/north_east.svg',\n      north_west: '/assets/media/icons/outline/navigation/north_west.svg',\n      payments: '/assets/media/icons/outline/navigation/payments.svg',\n      refresh: '/assets/media/icons/outline/navigation/refresh.svg',\n      south: '/assets/media/icons/outline/navigation/south.svg',\n      south_east: '/assets/media/icons/outline/navigation/south_east.svg',\n      south_west: '/assets/media/icons/outline/navigation/south_west.svg',\n      subdirectory_arrow_left: '/assets/media/icons/outline/navigation/subdirectory_arrow_left.svg',\n      subdirectory_arrow_right:\n        '/assets/media/icons/outline/navigation/subdirectory_arrow_right.svg',\n      switch_left: '/assets/media/icons/outline/navigation/switch_left.svg',\n      switch_right: '/assets/media/icons/outline/navigation/switch_right.svg',\n      unfold_less: '/assets/media/icons/outline/navigation/unfold_less.svg',\n      unfold_more: '/assets/media/icons/outline/navigation/unfold_more.svg',\n      west: '/assets/media/icons/outline/navigation/west.svg',\n    },\n    notification: {\n      account_tree: '/assets/media/icons/outline/notification/account_tree.svg',\n      adb: '/assets/media/icons/outline/notification/adb.svg',\n      airline_seat_flat: '/assets/media/icons/outline/notification/airline_seat_flat.svg',\n      airline_seat_flat_angled:\n        '/assets/media/icons/outline/notification/airline_seat_flat_angled.svg',\n      airline_seat_individual_suite:\n        '/assets/media/icons/outline/notification/airline_seat_individual_suite.svg',\n      airline_seat_legroom_extra:\n        '/assets/media/icons/outline/notification/airline_seat_legroom_extra.svg',\n      airline_seat_legroom_normal:\n        '/assets/media/icons/outline/notification/airline_seat_legroom_normal.svg',\n      airline_seat_legroom_reduced:\n        '/assets/media/icons/outline/notification/airline_seat_legroom_reduced.svg',\n      airline_seat_recline_extra:\n        '/assets/media/icons/outline/notification/airline_seat_recline_extra.svg',\n      airline_seat_recline_normal:\n        '/assets/media/icons/outline/notification/airline_seat_recline_normal.svg',\n      bluetooth_audio: '/assets/media/icons/outline/notification/bluetooth_audio.svg',\n      confirmation_number: '/assets/media/icons/outline/notification/confirmation_number.svg',\n      directions_off: '/assets/media/icons/outline/notification/directions_off.svg',\n      disc_full: '/assets/media/icons/outline/notification/disc_full.svg',\n      do_disturb: '/assets/media/icons/outline/notification/do_disturb.svg',\n      do_disturb_alt: '/assets/media/icons/outline/notification/do_disturb_alt.svg',\n      do_disturb_off: '/assets/media/icons/outline/notification/do_disturb_off.svg',\n      do_disturb_on: '/assets/media/icons/outline/notification/do_disturb_on.svg',\n      drive_eta: '/assets/media/icons/outline/notification/drive_eta.svg',\n      enhanced_encryption: '/assets/media/icons/outline/notification/enhanced_encryption.svg',\n      event_available: '/assets/media/icons/outline/notification/event_available.svg',\n      event_busy: '/assets/media/icons/outline/notification/event_busy.svg',\n      event_note: '/assets/media/icons/outline/notification/event_note.svg',\n      folder_special: '/assets/media/icons/outline/notification/folder_special.svg',\n      live_tv: '/assets/media/icons/outline/notification/live_tv.svg',\n      mms: '/assets/media/icons/outline/notification/mms.svg',\n      more: '/assets/media/icons/outline/notification/more.svg',\n      network_check: '/assets/media/icons/outline/notification/network_check.svg',\n      network_locked: '/assets/media/icons/outline/notification/network_locked.svg',\n      no_encryption: '/assets/media/icons/outline/notification/no_encryption.svg',\n      no_encryption_gmailerrorred:\n        '/assets/media/icons/outline/notification/no_encryption_gmailerrorred.svg',\n      ondemand_video: '/assets/media/icons/outline/notification/ondemand_video.svg',\n      personal_video: '/assets/media/icons/outline/notification/personal_video.svg',\n      phone_bluetooth_speaker:\n        '/assets/media/icons/outline/notification/phone_bluetooth_speaker.svg',\n      phone_callback: '/assets/media/icons/outline/notification/phone_callback.svg',\n      phone_forwarded: '/assets/media/icons/outline/notification/phone_forwarded.svg',\n      phone_in_talk: '/assets/media/icons/outline/notification/phone_in_talk.svg',\n      phone_locked: '/assets/media/icons/outline/notification/phone_locked.svg',\n      phone_missed: '/assets/media/icons/outline/notification/phone_missed.svg',\n      phone_paused: '/assets/media/icons/outline/notification/phone_paused.svg',\n      power: '/assets/media/icons/outline/notification/power.svg',\n      power_off: '/assets/media/icons/outline/notification/power_off.svg',\n      priority_high: '/assets/media/icons/outline/notification/priority_high.svg',\n      sd_card: '/assets/media/icons/outline/notification/sd_card.svg',\n      sd_card_alert: '/assets/media/icons/outline/notification/sd_card_alert.svg',\n      sms: '/assets/media/icons/outline/notification/sms.svg',\n      sms_failed: '/assets/media/icons/outline/notification/sms_failed.svg',\n      support_agent: '/assets/media/icons/outline/notification/support_agent.svg',\n      sync: '/assets/media/icons/outline/notification/sync.svg',\n      sync_disabled: '/assets/media/icons/outline/notification/sync_disabled.svg',\n      sync_problem: '/assets/media/icons/outline/notification/sync_problem.svg',\n      system_update: '/assets/media/icons/outline/notification/system_update.svg',\n      tap_and_play: '/assets/media/icons/outline/notification/tap_and_play.svg',\n      time_to_leave: '/assets/media/icons/outline/notification/time_to_leave.svg',\n      tv_off: '/assets/media/icons/outline/notification/tv_off.svg',\n      vibration: '/assets/media/icons/outline/notification/vibration.svg',\n      voice_chat: '/assets/media/icons/outline/notification/voice_chat.svg',\n      vpn_lock: '/assets/media/icons/outline/notification/vpn_lock.svg',\n      wc: '/assets/media/icons/outline/notification/wc.svg',\n      wifi: '/assets/media/icons/outline/notification/wifi.svg',\n      wifi_off: '/assets/media/icons/outline/notification/wifi_off.svg',\n    },\n    places: {\n      ac_unit: '/assets/media/icons/outline/places/ac_unit.svg',\n      airport_shuttle: '/assets/media/icons/outline/places/airport_shuttle.svg',\n      all_inclusive: '/assets/media/icons/outline/places/all_inclusive.svg',\n      apartment: '/assets/media/icons/outline/places/apartment.svg',\n      baby_changing_station: '/assets/media/icons/outline/places/baby_changing_station.svg',\n      backpack: '/assets/media/icons/outline/places/backpack.svg',\n      bathtub: '/assets/media/icons/outline/places/bathtub.svg',\n      beach_access: '/assets/media/icons/outline/places/beach_access.svg',\n      bento: '/assets/media/icons/outline/places/bento.svg',\n      business_center: '/assets/media/icons/outline/places/business_center.svg',\n      carpenter: '/assets/media/icons/outline/places/carpenter.svg',\n      casino: '/assets/media/icons/outline/places/casino.svg',\n      charging_station: '/assets/media/icons/outline/places/charging_station.svg',\n      checkroom: '/assets/media/icons/outline/places/checkroom.svg',\n      child_care: '/assets/media/icons/outline/places/child_care.svg',\n      child_friendly: '/assets/media/icons/outline/places/child_friendly.svg',\n      corporate_fare: '/assets/media/icons/outline/places/corporate_fare.svg',\n      countertops: '/assets/media/icons/outline/places/countertops.svg',\n      do_not_step: '/assets/media/icons/outline/places/do_not_step.svg',\n      do_not_touch: '/assets/media/icons/outline/places/do_not_touch.svg',\n      dry: '/assets/media/icons/outline/places/dry.svg',\n      elevator: '/assets/media/icons/outline/places/elevator.svg',\n      escalator: '/assets/media/icons/outline/places/escalator.svg',\n      escalator_warning: '/assets/media/icons/outline/places/escalator_warning.svg',\n      family_restroom: '/assets/media/icons/outline/places/family_restroom.svg',\n      fence: '/assets/media/icons/outline/places/fence.svg',\n      fire_extinguisher: '/assets/media/icons/outline/places/fire_extinguisher.svg',\n      fitness_center: '/assets/media/icons/outline/places/fitness_center.svg',\n      food_bank: '/assets/media/icons/outline/places/food_bank.svg',\n      foundation: '/assets/media/icons/outline/places/foundation.svg',\n      free_breakfast: '/assets/media/icons/outline/places/free_breakfast.svg',\n      golf_course: '/assets/media/icons/outline/places/golf_course.svg',\n      grass: '/assets/media/icons/outline/places/grass.svg',\n      hot_tub: '/assets/media/icons/outline/places/hot_tub.svg',\n      house: '/assets/media/icons/outline/places/house.svg',\n      house_siding: '/assets/media/icons/outline/places/house_siding.svg',\n      kitchen: '/assets/media/icons/outline/places/kitchen.svg',\n      meeting_room: '/assets/media/icons/outline/places/meeting_room.svg',\n      microwave: '/assets/media/icons/outline/places/microwave.svg',\n      night_shelter: '/assets/media/icons/outline/places/night_shelter.svg',\n      no_backpack: '/assets/media/icons/outline/places/no_backpack.svg',\n      no_cell: '/assets/media/icons/outline/places/no_cell.svg',\n      no_drinks: '/assets/media/icons/outline/places/no_drinks.svg',\n      no_flash: '/assets/media/icons/outline/places/no_flash.svg',\n      no_food: '/assets/media/icons/outline/places/no_food.svg',\n      no_meeting_room: '/assets/media/icons/outline/places/no_meeting_room.svg',\n      no_photography: '/assets/media/icons/outline/places/no_photography.svg',\n      no_stroller: '/assets/media/icons/outline/places/no_stroller.svg',\n      pool: '/assets/media/icons/outline/places/pool.svg',\n      rice_bowl: '/assets/media/icons/outline/places/rice_bowl.svg',\n      roofing: '/assets/media/icons/outline/places/roofing.svg',\n      room_preferences: '/assets/media/icons/outline/places/room_preferences.svg',\n      room_service: '/assets/media/icons/outline/places/room_service.svg',\n      rv_hookup: '/assets/media/icons/outline/places/rv_hookup.svg',\n      smoke_free: '/assets/media/icons/outline/places/smoke_free.svg',\n      smoking_rooms: '/assets/media/icons/outline/places/smoking_rooms.svg',\n      soap: '/assets/media/icons/outline/places/soap.svg',\n      spa: '/assets/media/icons/outline/places/spa.svg',\n      sports_bar: '/assets/media/icons/outline/places/sports_bar.svg',\n      stairs: '/assets/media/icons/outline/places/stairs.svg',\n      storefront: '/assets/media/icons/outline/places/storefront.svg',\n      stroller: '/assets/media/icons/outline/places/stroller.svg',\n      tapas: '/assets/media/icons/outline/places/tapas.svg',\n      tty: '/assets/media/icons/outline/places/tty.svg',\n      umbrella: '/assets/media/icons/outline/places/umbrella.svg',\n      wash: '/assets/media/icons/outline/places/wash.svg',\n      water_damage: '/assets/media/icons/outline/places/water_damage.svg',\n      wheelchair_pickup: '/assets/media/icons/outline/places/wheelchair_pickup.svg',\n    },\n    social: {\n      '6_ft_apart': '/assets/media/icons/outline/social/6_ft_apart.svg',\n      architecture: '/assets/media/icons/outline/social/architecture.svg',\n      cake: '/assets/media/icons/outline/social/cake.svg',\n      clean_hands: '/assets/media/icons/outline/social/clean_hands.svg',\n      connect_without_contact: '/assets/media/icons/outline/social/connect_without_contact.svg',\n      construction: '/assets/media/icons/outline/social/construction.svg',\n      coronavirus: '/assets/media/icons/outline/social/coronavirus.svg',\n      deck: '/assets/media/icons/outline/social/deck.svg',\n      domain: '/assets/media/icons/outline/social/domain.svg',\n      elderly: '/assets/media/icons/outline/social/elderly.svg',\n      emoji_emotions: '/assets/media/icons/outline/social/emoji_emotions.svg',\n      emoji_events: '/assets/media/icons/outline/social/emoji_events.svg',\n      emoji_flags: '/assets/media/icons/outline/social/emoji_flags.svg',\n      emoji_food_beverage: '/assets/media/icons/outline/social/emoji_food_beverage.svg',\n      emoji_nature: '/assets/media/icons/outline/social/emoji_nature.svg',\n      emoji_objects: '/assets/media/icons/outline/social/emoji_objects.svg',\n      emoji_people: '/assets/media/icons/outline/social/emoji_people.svg',\n      emoji_symbols: '/assets/media/icons/outline/social/emoji_symbols.svg',\n      emoji_transportation: '/assets/media/icons/outline/social/emoji_transportation.svg',\n      engineering: '/assets/media/icons/outline/social/engineering.svg',\n      facebook: '/assets/media/icons/outline/social/facebook.svg',\n      fireplace: '/assets/media/icons/outline/social/fireplace.svg',\n      follow_the_signs: '/assets/media/icons/outline/social/follow_the_signs.svg',\n      group: '/assets/media/icons/outline/social/group.svg',\n      groups: '/assets/media/icons/outline/social/groups.svg',\n      group_add: '/assets/media/icons/outline/social/group_add.svg',\n      history_edu: '/assets/media/icons/outline/social/history_edu.svg',\n      king_bed: '/assets/media/icons/outline/social/king_bed.svg',\n      location_city: '/assets/media/icons/outline/social/location_city.svg',\n      luggage: '/assets/media/icons/outline/social/luggage.svg',\n      masks: '/assets/media/icons/outline/social/masks.svg',\n      military_tech: '/assets/media/icons/outline/social/military_tech.svg',\n      mood: '/assets/media/icons/outline/social/mood.svg',\n      mood_bad: '/assets/media/icons/outline/social/mood_bad.svg',\n      nights_stay: '/assets/media/icons/outline/social/nights_stay.svg',\n      notifications: '/assets/media/icons/outline/social/notifications.svg',\n      notifications_active: '/assets/media/icons/outline/social/notifications_active.svg',\n      notifications_none: '/assets/media/icons/outline/social/notifications_none.svg',\n      notifications_off: '/assets/media/icons/outline/social/notifications_off.svg',\n      notifications_paused: '/assets/media/icons/outline/social/notifications_paused.svg',\n      no_luggage: '/assets/media/icons/outline/social/no_luggage.svg',\n      outdoor_grill: '/assets/media/icons/outline/social/outdoor_grill.svg',\n      pages: '/assets/media/icons/outline/social/pages.svg',\n      party_mode: '/assets/media/icons/outline/social/party_mode.svg',\n      people: '/assets/media/icons/outline/social/people.svg',\n      people_alt: '/assets/media/icons/outline/social/people_alt.svg',\n      people_outline: '/assets/media/icons/outline/social/people_outline.svg',\n      person: '/assets/media/icons/outline/social/person.svg',\n      person_add: '/assets/media/icons/outline/social/person_add.svg',\n      person_add_alt_1: '/assets/media/icons/outline/social/person_add_alt_1.svg',\n      person_outline: '/assets/media/icons/outline/social/person_outline.svg',\n      person_remove: '/assets/media/icons/outline/social/person_remove.svg',\n      person_remove_alt_1: '/assets/media/icons/outline/social/person_remove_alt_1.svg',\n      plus_one: '/assets/media/icons/outline/social/plus_one.svg',\n      poll: '/assets/media/icons/outline/social/poll.svg',\n      precision_manufacturing: '/assets/media/icons/outline/social/precision_manufacturing.svg',\n      psychology: '/assets/media/icons/outline/social/psychology.svg',\n      public: '/assets/media/icons/outline/social/public.svg',\n      public_off: '/assets/media/icons/outline/social/public_off.svg',\n      reduce_capacity: '/assets/media/icons/outline/social/reduce_capacity.svg',\n      sanitizer: '/assets/media/icons/outline/social/sanitizer.svg',\n      school: '/assets/media/icons/outline/social/school.svg',\n      science: '/assets/media/icons/outline/social/science.svg',\n      self_improvement: '/assets/media/icons/outline/social/self_improvement.svg',\n      sentiment_dissatisfied: '/assets/media/icons/outline/social/sentiment_dissatisfied.svg',\n      sentiment_neutral: '/assets/media/icons/outline/social/sentiment_neutral.svg',\n      sentiment_satisfied: '/assets/media/icons/outline/social/sentiment_satisfied.svg',\n      sentiment_very_dissatisfied:\n        '/assets/media/icons/outline/social/sentiment_very_dissatisfied.svg',\n      sentiment_very_satisfied: '/assets/media/icons/outline/social/sentiment_very_satisfied.svg',\n      share: '/assets/media/icons/outline/social/share.svg',\n      sick: '/assets/media/icons/outline/social/sick.svg',\n      single_bed: '/assets/media/icons/outline/social/single_bed.svg',\n      sports: '/assets/media/icons/outline/social/sports.svg',\n      sports_baseball: '/assets/media/icons/outline/social/sports_baseball.svg',\n      sports_basketball: '/assets/media/icons/outline/social/sports_basketball.svg',\n      sports_cricket: '/assets/media/icons/outline/social/sports_cricket.svg',\n      sports_esports: '/assets/media/icons/outline/social/sports_esports.svg',\n      sports_football: '/assets/media/icons/outline/social/sports_football.svg',\n      sports_golf: '/assets/media/icons/outline/social/sports_golf.svg',\n      sports_handball: '/assets/media/icons/outline/social/sports_handball.svg',\n      sports_hockey: '/assets/media/icons/outline/social/sports_hockey.svg',\n      sports_kabaddi: '/assets/media/icons/outline/social/sports_kabaddi.svg',\n      sports_mma: '/assets/media/icons/outline/social/sports_mma.svg',\n      sports_motorsports: '/assets/media/icons/outline/social/sports_motorsports.svg',\n      sports_rugby: '/assets/media/icons/outline/social/sports_rugby.svg',\n      sports_soccer: '/assets/media/icons/outline/social/sports_soccer.svg',\n      sports_tennis: '/assets/media/icons/outline/social/sports_tennis.svg',\n      sports_volleyball: '/assets/media/icons/outline/social/sports_volleyball.svg',\n      thumb_down_alt: '/assets/media/icons/outline/social/thumb_down_alt.svg',\n      thumb_up_alt: '/assets/media/icons/outline/social/thumb_up_alt.svg',\n      whatshot: '/assets/media/icons/outline/social/whatshot.svg',\n    },\n    toggle: {\n      check_box: '/assets/media/icons/outline/toggle/check_box.svg',\n      check_box_outline_blank: '/assets/media/icons/outline/toggle/check_box_outline_blank.svg',\n      indeterminate_check_box: '/assets/media/icons/outline/toggle/indeterminate_check_box.svg',\n      radio_button_checked: '/assets/media/icons/outline/toggle/radio_button_checked.svg',\n      radio_button_unchecked: '/assets/media/icons/outline/toggle/radio_button_unchecked.svg',\n      star: '/assets/media/icons/outline/toggle/star.svg',\n      star_border: '/assets/media/icons/outline/toggle/star_border.svg',\n      star_border_purple500: '/assets/media/icons/outline/toggle/star_border_purple500.svg',\n      star_half: '/assets/media/icons/outline/toggle/star_half.svg',\n      star_outline: '/assets/media/icons/outline/toggle/star_outline.svg',\n      star_purple500: '/assets/media/icons/outline/toggle/star_purple500.svg',\n      toggle_off: '/assets/media/icons/outline/toggle/toggle_off.svg',\n      toggle_on: '/assets/media/icons/outline/toggle/toggle_on.svg',\n    },\n  },\n};\n","import { Component, Input, ViewEncapsulation } from '@angular/core';\nimport icons from './icons-dictionary';\nimport { FararuIconComponentInterface } from '../../components/atoms/fararu-icon/fararu-icon.component';\n\nexport enum Sizes {\n  X1 = 'x1',\n  X2 = 'x2',\n  X3 = 'x3',\n  X4 = 'x4',\n}\n\nenum Types {\n  FILL = 'fill',\n  OUTLINE = 'outline',\n}\n\nenum Colors {\n  PRIMARY = 'primary',\n  SECONDARY = 'secondary',\n  SUCCESS = 'success',\n  DANGER = 'danger',\n  WARNING = 'warning',\n  INFO = 'info',\n  SURFACE = 'surface',\n  NETURAL = 'netural',\n}\n\n@Component({\n  selector: 'ui-icon',\n  templateUrl: './icon.component.html',\n  styleUrls: ['./icon.component.scss'],\n  encapsulation: ViewEncapsulation.None,\n})\nexport class IconComponent {\n  @Input() group?: string;\n  @Input() name?: string;\n  @Input() type: Types | string = Types.FILL;\n  @Input() color?: Colors | string;\n  @Input() size?: Sizes | string;\n  @Input() block: boolean = false;\n  @Input() fararuIcon?: FararuIconComponentInterface;\n\n  constructor() {}\n\n  getNested(obj: any, ...args: any) {\n    return args.reduce((obj: any, level: any) => obj && obj[level], obj);\n  }\n\n  public get Colors(): typeof Colors {\n    return Colors;\n  }\n\n  public get Sizes(): typeof Sizes {\n    return Sizes;\n  }\n\n  public get IconSrc(): string {\n    const src = this.getNested(icons, this.type, this.group, this.name);\n    return src ? src : icons.fill.alert.error_outline;\n  }\n}\n","<ng-container *ngIf=\"fararuIcon; else defaultContent\">\n  <ui-fararu-icon [name]=\"fararuIcon.name\" [size]=\"fararuIcon.size\" [color]=\"fararuIcon.color\">\n  </ui-fararu-icon>\n</ng-container>\n\n<ng-template #defaultContent>\n  <ng-content></ng-content>\n  <span\n    class=\"ui-icon\"\n    [ngClass]=\"{\n      block: block,\n      'ui-icon--primary': color == Colors.PRIMARY,\n      'ui-icon--secondary': color == Colors.SECONDARY,\n      'ui-icon--success': color == Colors.SUCCESS,\n      'ui-icon--danger': color == Colors.DANGER,\n      'ui-icon--warning': color == Colors.WARNING,\n      'ui-icon--info': color == Colors.INFO,\n      'ui-icon--surface': color == Colors.SURFACE,\n      'ui-icon--netural': color == Colors.NETURAL,\n      'ui-icon--size1x': size == Sizes.X1,\n      'ui-icon--size3x': size == Sizes.X3,\n      'ui-icon--size4x': size == Sizes.X4\n    }\"\n    ><svg-icon [src]=\"IconSrc\"></svg-icon>\n  </span>\n</ng-template>\n","import {\n  Component,\n  EventEmitter,\n  Input,\n  OnChanges,\n  Output,\n  ViewContainerRef,\n  forwardRef,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nexport interface CheckboxComponentPropsInterface {\n  value?: string;\n  name?: string;\n  text?: string;\n  checked?: boolean;\n  indeterminate?: boolean;\n  disabled?: boolean;\n  bindNumberValue?: boolean;\n  tabIndex?: string | number;\n}\n\n@Component({\n  selector: 'ui-checkbox',\n  templateUrl: './checkbox.component.html',\n  styleUrls: ['./checkbox.component.scss'],\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => CheckboxComponent),\n      multi: true,\n    },\n  ],\n})\nexport class CheckboxComponent\n  implements ControlValueAccessor, OnChanges, CheckboxComponentPropsInterface\n{\n  @Input() value?: string;\n  @Input() name?: string;\n  @Input() text?: string;\n  @Input() checked?: boolean;\n  @Input() indeterminate?: boolean;\n  @Input() disabled?: boolean;\n  @Input() readonly?: boolean;\n  @Input() bindNumberValue?: boolean = false;\n  @Input() tabIndex?: string | number;\n  @Input() beforeChangeValueCallback: (next: boolean) => boolean | Promise<boolean>;\n\n  @Output() onChangeValue: EventEmitter<number | boolean> = new EventEmitter();\n\n  inputNativeElement: any;\n\n  constructor(private viewContainerRef: ViewContainerRef) {}\n\n  onChange: any = () => {};\n  onTouched: any = () => {};\n  ngAfterViewInit(): void {\n    this.inputNativeElement = this.viewContainerRef.element.nativeElement.querySelector('input');\n\n    this.updateInputIndeterminate(this.indeterminate);\n  }\n\n  ngOnChanges(): void {\n    this.updateInputIndeterminate(this.indeterminate);\n  }\n\n  async toggleCheckBox($event: Event) {\n    if (this.readonly) {\n      $event.preventDefault();\n      return;\n    }\n\n    const input = $event.target as HTMLInputElement;\n    const next = input.checked;\n    if (this.beforeChangeValueCallback) {\n      $event.preventDefault();\n      let go = true;\n      if (this.beforeChangeValueCallback) go = await this.beforeChangeValueCallback(next);\n      if (go) {\n        setTimeout(() => {\n          input.checked = next;\n          this.change(next);\n        }, 100);\n      }\n    }\n  }\n\n  async change(value: any) {\n    if (this.bindNumberValue) {\n      let numValue = 0;\n      if (value) {\n        numValue = 1;\n      }\n      this.onChange(numValue);\n      this.onChangeValue.emit(numValue);\n    } else {\n      this.onChange(value);\n      this.onChangeValue.emit(value);\n    }\n  }\n\n  writeValue(value: any) {\n    if (value === true || value == 1) this.checked = true;\n    if (value === false || value == 0) this.checked = false;\n  }\n\n  setDisabledState(isDisabled: boolean): void {\n    this.disabled = isDisabled;\n  }\n\n  registerOnChange(fn: any): void {\n    this.onChange = fn;\n  }\n\n  registerOnTouched(fn: any): void {\n    this.onTouched = fn;\n  }\n\n  private updateInputIndeterminate(indeterminate: boolean) {\n    if (this.inputNativeElement) {\n      this.inputNativeElement.indeterminate = indeterminate;\n    }\n  }\n}\n","<label\n  class=\"ui-checkbox\"\n  [class.ui-checkbox--disabled]=\"disabled\"\n  [class.ui-checkbox--readonly]=\"readonly\"\n>\n  <input\n    class=\"ui-checkbox__input\"\n    #chk\n    type=\"checkbox\"\n    [attr.name]=\"name\"\n    [attr.value]=\"value\"\n    [checked]=\"checked\"\n    [disabled]=\"disabled\"\n    [attr.tabIndex]=\"tabIndex\"\n    (change)=\"change(chk.checked)\"\n    (click)=\"toggleCheckBox($event)\"\n  />\n  <span class=\"ui-checkbox__icon\">\n    <svg\n      class=\"ui-checkbox__icon-tick\"\n      width=\"10\"\n      height=\"10\"\n      viewBox=\"0 0 10 10\"\n      fill=\"none\"\n      xmlns=\"http://www.w3.org/2000/svg\"\n    >\n      <path\n        d=\"M1 5.875L3.94737 8.5L9 1.5\"\n        stroke=\"white\"\n        stroke-width=\"2\"\n        stroke-linecap=\"round\"\n        stroke-linejoin=\"round\"\n      />\n    </svg>\n  </span>\n  <span class=\"ui-checkbox__text\" *ngIf=\"text\">{{ text }}</span>\n  <ng-content></ng-content>\n</label>\n","import {\n  ChangeDetectorRef,\n  Component,\n  Input,\n  OnChanges,\n  OnInit,\n  SimpleChanges,\n} from '@angular/core';\n\nenum SpinnerSizes {\n  TINY = 'tiny',\n  SMALL = 'small',\n  NORMAL = 'normal',\n  LARGE = 'large',\n}\ntype SpinnerColors = 'primary' | 'quaternary';\n\n@Component({\n  selector: 'ui-spinner',\n  templateUrl: './spinner.component.html',\n  styleUrls: ['./spinner.component.scss'],\n})\nexport class SpinnerComponent implements OnInit, OnChanges {\n  @Input() show: boolean;\n  @Input() size: SpinnerSizes | string;\n  @Input() color?: SpinnerColors = 'primary';\n  @Input() text: string;\n  @Input() hideText: boolean = true;\n  @Input() showBackground: boolean;\n\n  contentIsShow?: boolean;\n  spinnerIsShow?: boolean;\n\n  public get SpinnerSizes(): typeof SpinnerSizes {\n    return SpinnerSizes;\n  }\n\n  constructor(private cdr: ChangeDetectorRef) {}\n\n  private timeoutId: any = null;\n\n  async ngOnInit() {}\n\n  ngOnChanges(changes: SimpleChanges): void {\n    clearTimeout(this.timeoutId);\n    if (this.show) {\n      this.contentIsShow = true;\n      setTimeout(() => {\n        this.spinnerIsShow = true;\n      }, 0);\n    } else {\n      this.spinnerIsShow = false;\n      this.timeoutId = setTimeout(() => {\n        this.contentIsShow = false;\n        this.cdr.detectChanges();\n      }, 500);\n    }\n  }\n}\n","<div class=\"spinner\" *ngIf=\"contentIsShow\" [class.spinner--show]=\"spinnerIsShow\">\n  <div class=\"spinner__loader-box\">\n    <div\n      class=\"spinner__loading-container\"\n      [ngClass]=\"{\n        'spinner__loading-container--tiny': size == SpinnerSizes.TINY,\n        'spinner__loading-container--small': size == SpinnerSizes.SMALL,\n        'spinner__loading-container--large': size == SpinnerSizes.LARGE\n      }\"\n    >\n      <div\n        class=\"spinner__dot spinner__dot--1\"\n        [ngClass]=\"{\n          'spinner__dot--primary': color == 'primary',\n          'spinner__dot--quaternary': color == 'quaternary'\n        }\"\n      ></div>\n      <div\n        class=\"spinner__dot spinner__dot--2\"\n        [ngClass]=\"{\n          'spinner__dot--primary': color == 'primary',\n          'spinner__dot--quaternary': color == 'quaternary'\n        }\"\n      ></div>\n      <div\n        class=\"spinner__dot spinner__dot--3\"\n        [ngClass]=\"{\n          'spinner__dot--primary': color == 'primary',\n          'spinner__dot--quaternary': color == 'quaternary'\n        }\"\n      ></div>\n    </div>\n  </div>\n\n  <span\n    *ngIf=\"!hideText\"\n    class=\"spinner__text\"\n    [ngClass]=\"{\n      'spinner__text--tiny': size == SpinnerSizes.TINY,\n      'spinner__text--small': size == SpinnerSizes.SMALL,\n      'spinner__text--large': size == SpinnerSizes.LARGE\n    }\"\n  >\n    {{ text || ('general.loadingText' | translate) }}\n  </span>\n</div>\n","import { Pipe, PipeTransform } from '@angular/core';\n@Pipe({\n  name: 'selectMenuItemIsSelected',\n})\nexport class SelectMenuItemIsSelectedPipe implements PipeTransform {\n  transform(menu: any, value: any, multiple: boolean): boolean {\n    if (multiple) {\n      if (!Array.isArray(value)) return false;\n      return value.some(x => x == menu.id);\n    }\n    return menu.id === value;\n  }\n}\n","import { Overlay, OverlayRef } from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport {\n  Component,\n  Input,\n  OnInit,\n  forwardRef,\n  OnChanges,\n  ViewEncapsulation,\n  SimpleChanges,\n  Output,\n  EventEmitter,\n  ViewContainerRef,\n  ViewChild,\n  TemplateRef,\n  ElementRef,\n  AfterViewInit,\n  Injector,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { SelectOptionInterface } from '../../../models/select-option.interface';\nimport { SizeType } from '../../../types/size.type';\nimport { isNil } from '../../../utils/is-nil';\nimport { GeneralODataService } from '../../../api/general-odata.service';\nimport { HttpHeaders } from '@angular/common/http';\nimport { ODataResponse } from '../../../api/odata/responses/odata-response';\nimport { propertyOf } from '../../../utils/property-of';\nimport { FormElementBaseComponent } from '../../../models/base-form-element.component';\n\nexport interface SelectComponentPropsInterface {\n  options: Array<any>;\n  id?: string;\n  placeholder?: string;\n  bindLabel?: string;\n  bindValue?: string;\n  size?: SizeType;\n  iconUrl?: string;\n  hasError?: boolean;\n  readonly?: string;\n  disabled?: boolean;\n  allowClear?: boolean;\n  multiple?: boolean;\n  spinnerIsShow?: boolean;\n  tabIndex?: string | number;\n  hideBorder?: boolean;\n}\n\n@Component({\n  selector: 'ui-select',\n  templateUrl: './select.component.html',\n  styleUrls: ['./select.component.scss'],\n  encapsulation: ViewEncapsulation.None,\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => SelectComponent),\n      multi: true,\n    },\n  ],\n})\nexport class SelectComponent\n  extends FormElementBaseComponent\n  implements OnInit, ControlValueAccessor, OnChanges, SelectComponentPropsInterface, AfterViewInit\n{\n  @Input() options: Array<any>;\n  @Input() set value(val) {\n    this._value = val;\n    this._updateKeyword(val);\n    if (this.multiple) this._setMulipleSelectedItems();\n    this.createTooltip();\n  }\n  @Input() id: string;\n  @Input() inputId: string;\n  @Input() placeholder: string;\n  @Input() bindLabel: string = propertyOf<SelectOptionInterface>('text');\n  @Input() bindValue: string = propertyOf<SelectOptionInterface>('id');\n  @Input() width: string = '100%';\n  @Input() size: SizeType = 'normal';\n  @Input() hasSearch: boolean = false;\n  @Input() iconUrl: string;\n  @Input() hasError: boolean;\n  @Input() readonly: string;\n  @Input() disabled: boolean;\n  @Input() allowClear: boolean = false;\n  @Input() multiple: boolean = false;\n  @Input() spinnerIsShow?: boolean;\n  @Input() tabIndex?: string | number;\n  @Input() searchCallback?: (keyword: string) => Promise<Array<any>>;\n  @Input() label: string;\n  @Input() labelType: 'float' | 'side' = 'side';\n  @Input() limit: number = 0;\n  @Input() hideBorder?: boolean;\n\n  @Input() oDataServer: string;\n  @Input() oDataTable: string;\n  @Input() oDataEntity?: string;\n  @Input() oDataHttpHeaders?: { [key: string]: string };\n  @Input() autofocus?: string;\n\n  @Output() onChangeCalback: EventEmitter<null> =\n    new EventEmitter(); /** this emitter is obsoleted don't use */\n  @Output() changeCallback = new EventEmitter<any>();\n  @Output() selectCallback = new EventEmitter<any>();\n  @Output() openCallback = new EventEmitter<null>();\n  @Output() closeCallback = new EventEmitter<null>();\n\n  @ViewChild('textbox') textboxElementRef: ElementRef<HTMLInputElement>;\n  @ViewChild('wrapper') wrapperElementRef: ElementRef<HTMLDivElement>;\n  @ViewChild('menu') menuTemplateRef: TemplateRef<any>;\n\n  items: SelectOptionInterface[] = [];\n  multipleSelectedItems: SelectOptionInterface[] = [];\n  ajax: any;\n  menuIsOpen: boolean = false;\n  isFocus: boolean = false;\n  keyword: string = '';\n  activeItemIndex?: number;\n\n  private overlayRef: OverlayRef;\n  private blurTimeout?: any;\n  private typingTimeout?: any;\n  private _lastSearchKeyword?: string;\n  private _originalItems: SelectOptionInterface[] = [];\n  tooltip: string | null = null;\n\n  constructor(\n    private viewContainerRef: ViewContainerRef,\n    private overlay: Overlay,\n    private generalOdataService: GeneralODataService,\n    injector: Injector\n  ) {\n    super(injector);\n  }\n\n  ngOnInit() {\n    super.init();\n    if (!this.inputId) {\n      this.inputId = this._generateUniqueId();\n    }\n  }\n\n  ngAfterViewInit(): void {\n    if (typeof this.autofocus != 'undefined' && !this.disabled) {\n      this.focus();\n    }\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (\n      (changes[propertyOf<SelectComponent>('oDataServer')] ||\n        changes[propertyOf<SelectComponent>('oDataTable')] ||\n        changes[propertyOf<SelectComponent>('oDataEntity')] ||\n        changes[propertyOf<SelectComponent>('oDataHttpHeaders')]) &&\n      this.oDataServer &&\n      this.oDataTable &&\n      this.oDataEntity\n    ) {\n      this.generalOdataService\n        .getByEntity(this.oDataEntity, null, new HttpHeaders(this.oDataHttpHeaders))\n        .subscribe((result: ODataResponse<any>) => {\n          if (this.options != null) {\n            this.options.length = 0;\n            this.options.push(...result.value);\n          } else this.options = result.value;\n          this._mapOriginalItems(result.value);\n        });\n    } else if (\n      changes[propertyOf<SelectComponent>('options')] ||\n      changes[propertyOf<SelectComponent>('bindValue')] ||\n      changes[propertyOf<SelectComponent>('bindLabel')]\n    ) {\n      this._mapOriginalItems(this.options);\n    }\n  }\n\n  get isReadOnly() {\n    return this.readonly != undefined || this.readonly != null;\n  }\n\n  get internalBindValue() {\n    return this.bindValue || propertyOf<SelectOptionInterface>('id');\n  }\n\n  get value() {\n    return this._value;\n  }\n\n  private _value: any;\n\n  createTooltip() {\n    if (this.multiple && this.multipleSelectedItems && this.multipleSelectedItems.length > 2) {\n      this.tooltip = this.multipleSelectedItems\n        .filter(it => !!it)\n        .map(it => it.text)\n        .join('\\n');\n    } else this.tooltip = null;\n  }\n\n  onChange = (_: any) => {};\n\n  onTouched = () => {};\n\n  registerOnChange(fn: any): void {\n    this.onChange = fn;\n  }\n\n  registerOnTouched(fn: any): void {\n    this.onTouched = fn;\n  }\n\n  writeValue(val: any): void {\n    if (val == this.value) return;\n    this.value = val;\n    this.createTooltip();\n  }\n\n  setDisabledState(isDisabled: boolean): void {\n    this.disabled = isDisabled;\n  }\n\n  changeHandler(val: any) {\n    this.value = val;\n    this.onChangeCalback.emit(val); /** this emitter is obsoleted and must remove */\n    this.changeCallback.emit(val);\n    this.onChange(val);\n    this.createTooltip();\n  }\n\n  kewordChangeHandler() {\n    const keywordTrim = this.keyword.trim();\n    if (keywordTrim) {\n      this.items = this._originalItems.filter(\n        x => x.text.toLowerCase().indexOf(keywordTrim.toLowerCase()) != -1\n      );\n    } else {\n      this.items = this._originalItems;\n      if (this.allowClear && !this.multiple) {\n        this.changeHandler(null);\n      }\n    }\n    this.openMenuHandler('typing');\n  }\n\n  keywordFocusHandler() {\n    clearTimeout(this.blurTimeout);\n    this.isFocus = true;\n  }\n\n  keywordBlurHandler() {\n    this.onTouched();\n    this.isFocus = false;\n    this.blurTimeout = setTimeout(() => {\n      if (!this.multiple) this.closeMenuHandler(true);\n    }, 300);\n  }\n\n  kewordKeyDownHandler(event: any) {\n    const keyCode = event.keyCode;\n\n    if (this.menuIsOpen) {\n      event.stopPropagation();\n      event.stopImmediatePropagation();\n    }\n\n    switch (keyCode) {\n      // space\n      case 32:\n        if (!this.keyword) {\n          event.preventDefault();\n          this.openMenuHandler('keyboard');\n        }\n        break;\n\n      // arrow up\n      case 38:\n        event.stopPropagation();\n        event.stopImmediatePropagation();\n        this.keywordArrowUpHandler();\n        break;\n\n      // arrow down\n      case 40:\n        event.stopPropagation();\n        event.stopImmediatePropagation();\n        this.keywordArrowDownHandler();\n        break;\n\n      // enter\n      case 13:\n        if (this.menuIsOpen) {\n          event.preventDefault();\n          this.keywordEnterHandler();\n        }\n        break;\n\n      // escape or tab\n      case 27:\n      case 9:\n        this.closeMenuHandler();\n        break;\n\n      // backspace\n      case 8:\n        this.keywordBackspaceHandler();\n        break;\n    }\n  }\n\n  keywordEnterHandler() {\n    const data = this.items[this.activeItemIndex];\n    if (!data) return;\n    if (this.checkLimit(data)) return;\n    this._lastSearchKeyword = data.text;\n    this.changeHandler(this._prepareValue(data.id));\n    this.selectCallback.emit(this.options.find(x => x[this.internalBindValue] == data.id));\n    if (!this.multiple) this.closeMenuHandler();\n  }\n\n  keywordArrowUpHandler() {\n    if (!this.menuIsOpen) {\n      this.openMenuHandler('keyboard');\n      return;\n    }\n    if (this.activeItemIndex <= 0) {\n      this.activeItemIndex = this.items.length - 1;\n    } else {\n      this.activeItemIndex--;\n    }\n  }\n\n  keywordArrowDownHandler() {\n    if (!this.menuIsOpen) {\n      this.openMenuHandler('keyboard');\n      return;\n    }\n    if (this.activeItemIndex >= this.items.length - 1 || this.activeItemIndex == -1) {\n      this.activeItemIndex = 0;\n    } else {\n      this.activeItemIndex++;\n    }\n  }\n\n  keywordBackspaceHandler() {\n    if (\n      !this.keyword.length &&\n      this.multiple &&\n      Array.isArray(this.value) &&\n      this.value.length > 0\n    ) {\n      this.value.pop();\n      this.value = this.value;\n    }\n  }\n\n  menuItemClickHandler(data: SelectOptionInterface) {\n    if (this.checkLimit(data)) return;\n    this._lastSearchKeyword = data.text;\n    this.changeHandler(this._prepareValue(data.id));\n    this.selectCallback.emit(this.options.find(x => x[this.internalBindValue] == data.id));\n    this.focus();\n    if (!this.multiple) this.closeMenuHandler();\n  }\n\n  checkLimit(data: SelectOptionInterface) {\n    return (\n      this.multiple &&\n      this.limit &&\n      this.limit == this.multipleSelectedItems.length &&\n      this.multipleSelectedItems.findIndex(it => it.id == data.id) < 0\n    );\n  }\n\n  wrapperClickHandler() {\n    this.openMenuHandler('click');\n    this.textboxElementRef.nativeElement.focus();\n    setTimeout(() => {\n      this.textboxElementRef.nativeElement.select();\n    }, 0);\n  }\n\n  menuItemIsSelected(data: SelectOptionInterface) {\n    if (this.multiple) {\n      if (!Array.isArray(this.value)) return false;\n      return this.value.some(x => x == data.id);\n    }\n    return data.id == this.value;\n  }\n\n  menuItemMouseEnterHandler(index: number) {\n    this.activeItemIndex = index;\n  }\n\n  clearHandler() {\n    this._lastSearchKeyword = '';\n    this.changeHandler(this._prepareValue(''));\n    this.selectCallback.emit(null);\n  }\n\n  mutipleRemoveHandler(event: Event, data: SelectOptionInterface) {\n    event.stopPropagation();\n    if (!this.multiple || !Array.isArray(this.value)) return;\n    const values = [...this.value];\n    const findedIndex = values.findIndex(x => x == data.id);\n    if (findedIndex >= 0) {\n      values.splice(findedIndex, 1);\n      this.changeHandler(values);\n      this.selectCallback.emit(values);\n    }\n    this.focus();\n  }\n\n  focus() {\n    setTimeout(() => {\n      this.textboxElementRef.nativeElement.focus();\n    }, 100);\n  }\n\n  private _setMulipleSelectedItems() {\n    if (!Array.isArray(this.value)) {\n      this.multipleSelectedItems = [];\n      return;\n    }\n    this.multipleSelectedItems = this.value.map((item: any) =>\n      this._originalItems.find(x => x.id == item)\n    );\n    this.createTooltip();\n  }\n\n  private _mapOriginalItems(options?: any[]) {\n    if (this.isReadOnly && !options?.length) {\n      this._originalItems = [\n        {\n          id: this.value,\n          text: this.value,\n        },\n      ];\n      return;\n    }\n    this._originalItems =\n      options?.map(item => ({\n        id: item[this.bindValue || propertyOf<SelectOptionInterface>('id')],\n        text: item[this.bindLabel || propertyOf<SelectOptionInterface>('text')],\n      })) || [];\n\n    this.items = this._originalItems;\n    this._updateKeyword(this.value);\n    if (this.multiple) this._setMulipleSelectedItems();\n  }\n\n  private openMenuHandler(sender: 'typing' | 'click' | 'keyboard') {\n    if (this.disabled || this.isReadOnly) return;\n    this.updateActiveItemIndex();\n    if (typeof this.searchCallback == 'function') this._searchRemote(sender == 'typing');\n    if (this.menuIsOpen) return;\n    this.menuIsOpen = true;\n    this.overlayRef = this.createMenuOverlay();\n    this.overlayRef.attach(new TemplatePortal(this.menuTemplateRef, this.viewContainerRef));\n    this.overlayRef.backdropClick().subscribe(() => {\n      this.closeMenuHandler();\n    });\n    this.openCallback.emit();\n  }\n\n  private closeMenuHandler(noFocus?: boolean) {\n    if (!this.menuIsOpen) return;\n    this.menuIsOpen = false;\n    this.overlayRef.detach();\n    this.closeCallback.emit();\n    if (!noFocus) this.textboxElementRef.nativeElement.focus();\n    this._updateKeyword(this.value);\n    this.items = this._originalItems;\n  }\n\n  private _searchRemote(isSearching: boolean) {\n    const get = () => {\n      this.spinnerIsShow = true;\n      this.searchCallback(this.keyword)\n        .then(res => {\n          this.spinnerIsShow = false;\n          this._mapOriginalItems(res);\n          this.updateActiveItemIndex();\n        })\n        .catch(() => {\n          this.spinnerIsShow = false;\n        });\n    };\n    if (!this._lastSearchKeyword || this._lastSearchKeyword != this.keyword) {\n      this._lastSearchKeyword == this.keyword;\n      if (isSearching) {\n        clearTimeout(this.typingTimeout);\n        this.typingTimeout = setTimeout(get, 300);\n      } else {\n        get();\n      }\n    }\n  }\n\n  private createMenuOverlay() {\n    return this.overlay.create({\n      hasBackdrop: true,\n      backdropClass: 'cdk-overlay-transparent-backdrop',\n      direction: document.body.getAttribute('dir') == 'rtl' ? 'rtl' : 'ltr',\n      width: this.wrapperElementRef.nativeElement.offsetWidth,\n      scrollStrategy: this.overlay.scrollStrategies.block(),\n      positionStrategy: this.overlay\n        .position()\n        .flexibleConnectedTo(this.wrapperElementRef)\n        .withPositions([\n          {\n            originX: 'start',\n            originY: 'bottom',\n            overlayX: 'start',\n            overlayY: 'top',\n            offsetY: 4,\n          },\n        ]),\n    });\n  }\n\n  private updateActiveItemIndex() {\n    this.activeItemIndex = this.items.findIndex(x => x.id == this.value);\n  }\n\n  private _updateKeyword(val: any) {\n    if (this.multiple) {\n      this.keyword = '';\n      return;\n    }\n\n    const findedOption = this._originalItems.find(x => x.id == val);\n    this.keyword = (findedOption ? findedOption.text : val)?.toString() || '';\n  }\n\n  private _prepareValue(val: any) {\n    if (!this.multiple) return val;\n    let values: any[] = [];\n\n    if (!isNil(val)) {\n      if (Array.isArray(this.value)) {\n        values = [...this.value];\n      }\n\n      const findedIndex = values.findIndex(x => x == val);\n\n      if (findedIndex == -1) {\n        values.push(val);\n      } else {\n        values.splice(findedIndex, 1);\n      }\n    }\n    return values;\n  }\n\n  private _generateUniqueId(): string {\n    const timestamp = Date.now().toString(36);\n    const randomString = Math.random().toString(36).substr(2, 9);\n    return timestamp + '_' + randomString;\n  }\n\n  getLabelBackStyle() {\n    if (this.isReadOnly) return 'readonly';\n    if (this.disabled || this.spinnerIsShow) return 'disabled';\n    return 'default';\n  }\n}\n","<ui-label\n  [label]=\"label\"\n  [type]=\"labelType\"\n  [backLineStyle]=\"getLabelBackStyle()\"\n  [for]=\"inputId\"\n  [hasValue]=\"keyword || value?.length\"\n  [appTooltip]=\"tooltip\"\n  [appTooltipPosition]=\"'bottom'\"\n  [showRequiredSign]=\"hasRequiredValidator\"\n>\n  <span\n    #wrapper\n    class=\"select-v1\"\n    [attr.readonly]=\"readonly\"\n    [attr.disabled]=\"disabled || spinnerIsShow ? true : null\"\n    [ngClass]=\"{\n      'select-v1--is-multiple': multiple,\n      'select-v1--is-focus': menuIsOpen || isFocus,\n      'select-v1--small': size == 'small',\n      'select-v1--large': size == 'large',\n      'select-v1--tiny': size == 'tiny',\n      'select-v1--has-error': hasError,\n      'select-v1--hide-border': hideBorder,\n    }\"\n    (click)=\"wrapperClickHandler()\"\n  >\n    <span\n      class=\"select-v1__items\"\n      [ngClass]=\"{\n        'select-v1__items--hidden': multipleSelectedItems.length == 0\n      }\"\n    >\n      <ng-container *ngIf=\"multiple\">\n        <span class=\"select-v1__multiple-button\" *ngFor=\"let item of multipleSelectedItems\"\n          >{{ item?.text }}\n          <ui-icon\n            class=\"select-v1__multiple-button-icon\"\n            [type]=\"'outline'\"\n            [group]=\"'navigation'\"\n            [name]=\"'close'\"\n            [size]=\"'x1'\"\n            (click)=\"mutipleRemoveHandler($event, item)\"\n          ></ui-icon\n        ></span>\n      </ng-container>\n    </span>\n    <input\n      class=\"select-v1__textbox\"\n      [ngClass]=\"{\n        'select-v1__textbox--wide': multiple && multipleSelectedItems.length == 0,\n        'select-v1__textbox--readonly': readonly,\n        'select-v1__textbox--disabled': disabled || spinnerIsShow\n      }\"\n      #textbox\n      [(ngModel)]=\"keyword\"\n      (ngModelChange)=\"kewordChangeHandler()\"\n      (keydown)=\"kewordKeyDownHandler($event)\"\n      (focus)=\"keywordFocusHandler()\"\n      (blur)=\"keywordBlurHandler()\"\n      [attr.id]=\"inputId\"\n      [attr.tabIndex]=\"tabIndex\"\n      [attr.readonly]=\"readonly\"\n      [attr.disabled]=\"disabled || spinnerIsShow ? true : null\"\n      [autocomplete]=\"'off'\"\n      [attr.placeholder]=\"multipleSelectedItems.length > 0 ? '' : placeholder\"\n    />\n    <span class=\"select-v1__icons\">\n      <ui-spinner\n        class=\"select-v1__spinner\"\n        [size]=\"'tiny'\"\n        [hideText]=\"true\"\n        [show]=\"true\"\n        [color]=\"'quaternary'\"\n        *ngIf=\"spinnerIsShow\"\n      ></ui-spinner>\n      <ui-icon\n        *ngIf=\"!spinnerIsShow\"\n        class=\"select-v1__arrow\"\n        [ngClass]=\"{ 'select-v1__arrow--is-open': menuIsOpen }\"\n        [type]=\"'outline'\"\n        [group]=\"'navigation'\"\n        [name]=\"'expand_more'\"\n        [size]=\"size === 'tiny' ? 'x1' : null\"\n      ></ui-icon>\n      <ui-icon\n        *ngIf=\"allowClear && value?.toString()?.length && !spinnerIsShow\"\n        class=\"select-v1__clear\"\n        [type]=\"'outline'\"\n        [group]=\"'navigation'\"\n        [name]=\"'close'\"\n        [size]=\"'x1'\"\n        (click)=\"clearHandler()\"\n      ></ui-icon>\n      <span class=\"select-v1__count\" *ngIf=\"multipleSelectedItems.length > 0 && !spinnerIsShow\">{{\n        multipleSelectedItems.length\n      }}</span>\n    </span>\n    <ng-template #menu>\n      <div class=\"select-v1__item-container\" [class.select-v1__item-container__search]=\"hasSearch\">\n        <ul class=\"select-v1__menu\">\n          <ng-container *ngIf=\"items.length; else emptyTemplate\">\n            <li\n              class=\"select-v1__menu-item\"\n              [ngClass]=\"{\n                'select-v1__menu-item--is-selected':\n                  (item | selectMenuItemIsSelected : value : multiple),\n                'select-v1__menu-item--is-active': activeItemIndex == i\n              }\"\n              (click)=\"menuItemClickHandler(item)\"\n              (mouseenter)=\"menuItemMouseEnterHandler(i)\"\n              *ngFor=\"let item of items; let i = index\"\n            >\n              <ui-checkbox\n                *ngIf=\"multiple\"\n                class=\"select-v1__menu-item__icon\"\n                [checked]=\"item | selectMenuItemIsSelected : value : multiple\"\n                (onChangeValue)=\"menuItemClickHandler(item)\"\n                (click)=\"$event.stopPropagation()\"\n              ></ui-checkbox>\n              <ui-text>{{ item.text }}</ui-text>\n            </li>\n          </ng-container>\n          <ng-template #emptyTemplate>\n            <li\n              class=\"select-v1__menu-item\"\n              [ngClass]=\"{\n                'select-v1__menu-item--is-empty': !spinnerIsShow,\n                'select-v1__menu-item--is-loading': spinnerIsShow\n              }\"\n            >\n              {{\n                (spinnerIsShow ? 'general.loadingText' : 'general.searchEmptyMessage') | translate\n              }}\n            </li>\n          </ng-template>\n        </ul>\n      </div>\n    </ng-template>\n  </span>\n</ui-label>\n","import { Component, EventEmitter, Input, OnInit, Output, SimpleChanges } from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport { lastValueFrom } from 'rxjs';\nimport { Maybe } from '../../../../types';\nimport { Calendar, CalendarDay, CalendarType } from './../../../../utils/calendar';\nimport { SelectOptionInterface } from '../../../../models/select-option.interface';\n\nimport { SessionNames } from '../../../../constants/session-names';\n\n@Component({\n  selector: 'ui-date-picker',\n  templateUrl: './date-picker.component.html',\n  styleUrls: ['./date-picker.component.scss'],\n})\nexport class DatePickerComponent implements OnInit {\n  @Input() calendarType?: Maybe<CalendarType> =\n    (() => {\n      try {\n        return localStorage.getItem(SessionNames.CALENDAR_TYPE) as CalendarType;\n      } catch {\n        return null;\n      }\n    })() || 'jalali';\n  @Input() inputType?: Maybe<CalendarType> = null;\n  @Input() outputType?: Maybe<CalendarType> = null;\n  @Input() year: number;\n  @Input() month: number;\n  @Input() day: number;\n  @Input() minYear?: number | null;\n  @Input() maxYear?: number | null;\n  @Input() holidays: CalendarDay[] = [];\n  @Input() hideYearSelector?: Maybe<boolean>;\n  @Input() hideMonthSelector?: Maybe<boolean>;\n  @Input() showTypeToggler?: Maybe<boolean> =\n    (() => {\n      try {\n        return localStorage.getItem(SessionNames.CALENDAR_HAS_SWITCH) === 'true';\n      } catch {\n        return false;\n      }\n    })() || false;\n  @Input() toggleableSelection?: boolean;\n  @Input() hideSelectedStyle?: boolean;\n  @Input() hideTodayButton?: boolean = false;\n\n  @Output() initDaysCallback = new EventEmitter<CalendarDay[]>();\n  @Output() changeMonthCallback = new EventEmitter<number>();\n  @Output() changeYearCallback = new EventEmitter<number>();\n  @Output() selectDayCallback = new EventEmitter<CalendarDay>();\n  @Output() dayHoverCallback = new EventEmitter<CalendarDay>();\n\n  initialYear: number;\n  initialMonth: number;\n  initialDay: number;\n  days: CalendarDay[];\n  weekDays: string[];\n  months: string[];\n  currentMonthDays: CalendarDay[];\n  nextMonthDays: CalendarDay[];\n  prevMonthDays: CalendarDay[];\n  isSliding: boolean;\n  hasAnimation: boolean = true;\n  currentSlide: number = 1;\n  monthOptions?: SelectOptionInterface[];\n  yearOptions?: SelectOptionInterface[];\n  calendarTypeOptions?: { id: CalendarType; text: string }[];\n  today?: Maybe<CalendarDay> = null;\n  calendar: Calendar;\n\n  constructor(private translateService: TranslateService) {}\n\n  async ngOnInit() {\n    this.initCalendar(this.calendarType);\n    this.calendarTypeOptions = [\n      {\n        id: 'jalali',\n        text: await lastValueFrom(this.translateService.get('calendar.jalali.title')),\n      },\n      {\n        id: 'gregorian',\n        text: await lastValueFrom(this.translateService.get('calendar.gregorian.title')),\n      },\n    ];\n  }\n\n  async ngOnChanges(changes: SimpleChanges) {\n    if (\n      this.inputType &&\n      this.inputType != this.calendarType &&\n      this.year &&\n      this.month &&\n      this.day\n    ) {\n      switch (this.inputType) {\n        case 'jalali': {\n          const { year, month, day } = Calendar.toGregorian(this.year, this.month, this.day);\n          this.year = year;\n          this.month = month;\n          this.day = day;\n          break;\n        }\n        case 'gregorian': {\n          const { year, month, day } = Calendar.toJalali(this.year, this.month, this.day);\n          this.year = year;\n          this.month = month;\n          this.day = day;\n          break;\n        }\n      }\n    }\n    this.initialDay = this.day;\n    this.initialMonth = this.month;\n    this.initialYear = this.year;\n\n    this.initCalendar(this.calendarType);\n  }\n\n  isHolidays(day: CalendarDay): boolean {\n    return this.holidays.some(\n      x => x.number == day.number && x.month == day.month && x.year == day.year\n    );\n  }\n\n  isSelected(day: CalendarDay): boolean {\n    return (\n      day.number == this.initialDay &&\n      day.year == this.initialYear &&\n      day.month == this.initialMonth\n    );\n  }\n\n  isToday(day: CalendarDay): boolean {\n    return (\n      day.number == this.today?.number &&\n      day.year == this.today?.year &&\n      day.month == this.today?.month\n    );\n  }\n\n  nextMonth() {\n    if (this.isSliding) return;\n    this.isSliding = true;\n    this.currentSlide = 2;\n    setTimeout(() => {\n      this.hasAnimation = false;\n      setTimeout(() => {\n        let nextMonth = this.month + 1;\n        if (nextMonth > this.months.length) {\n          nextMonth = 1;\n          this.year = this.year + 1;\n          this.changeYearCallback.emit(this.year);\n        }\n        this.month = nextMonth;\n        this.changeMonthCallback.emit(nextMonth);\n        this.bindDays(this.year, nextMonth);\n        this.currentSlide = 1;\n        setTimeout(() => {\n          this.hasAnimation = true;\n          this.isSliding = false;\n        }, 50);\n      }, 0);\n    }, 500);\n  }\n\n  previousMonth() {\n    if (this.isSliding) return;\n    this.isSliding = true;\n    this.currentSlide = 0;\n    setTimeout(() => {\n      this.hasAnimation = false;\n      setTimeout(() => {\n        let prevMonth = this.month - 1;\n        if (prevMonth <= 0) {\n          prevMonth = this.months.length;\n          this.year = this.year - 1;\n          this.changeYearCallback.emit(this.year);\n        }\n        this.month = prevMonth;\n        this.changeMonthCallback.emit(prevMonth);\n        this.bindDays(this.year, prevMonth);\n        this.currentSlide = 1;\n        setTimeout(() => {\n          this.hasAnimation = true;\n          this.isSliding = false;\n        }, 50);\n      }, 0);\n    }, 500);\n  }\n\n  hoverDay(data: CalendarDay) {\n    if (data.type != 'currentMonth') return;\n    const output = { ...data };\n    if (this.outputType && this.outputType != this.calendar.type) {\n      switch (this.outputType) {\n        case 'gregorian': {\n          const { year, month, day } = Calendar.toGregorian(data.year, data.month, data.number);\n          output.year = year;\n          output.month = month;\n          output.number = day;\n          break;\n        }\n        case 'jalali': {\n          const { year, month, day } = Calendar.toJalali(data.year, data.month, data.number);\n          output.year = year;\n          output.month = month;\n          output.number = day;\n          break;\n        }\n      }\n    }\n    this.dayHoverCallback.emit(output);\n  }\n\n  selectDay(data: CalendarDay) {\n    if (data.type != 'currentMonth') return;\n    if (\n      this.toggleableSelection &&\n      data.number == this.day &&\n      data.month == this.month &&\n      data.year == this.year\n    ) {\n      this.day = null;\n      this.initialDay = null;\n      this.selectDayCallback.emit(null);\n      return;\n    }\n    this.day = data.number;\n    this.initialDay = this.day;\n    this.initialMonth = this.month;\n    this.initialYear = this.year;\n    const output = { ...data };\n    if (this.outputType && this.outputType != this.calendar.type) {\n      switch (this.outputType) {\n        case 'gregorian': {\n          const { year, month, day } = Calendar.toGregorian(data.year, data.month, data.number);\n          output.year = year;\n          output.month = month;\n          output.number = day;\n          break;\n        }\n        case 'jalali': {\n          const { year, month, day } = Calendar.toJalali(data.year, data.month, data.number);\n          output.year = year;\n          output.month = month;\n          output.number = day;\n          break;\n        }\n      }\n    }\n    this.selectDayCallback.emit(output);\n  }\n\n  changeMonthSelectorHandler(month: string) {\n    this.month = +month;\n    this.bindDays(this.year, this.month);\n  }\n\n  changeYearSelectorHandler(year: string) {\n    this.year = +year;\n    this.bindDays(this.year, this.month);\n  }\n\n  changeCalendarTypeSelectorHandler(type: CalendarType) {\n    if (this.calendar.type != type) {\n      let month = this.month + (type == 'gregorian' ? 3 : -3);\n      if (month > 12) {\n        month = month - 12;\n        this.year++;\n      } else if (month <= 0) {\n        month = 12 + month;\n        this.year--;\n      }\n      this.month = month;\n      this.year = this.year + (type == 'gregorian' ? 621 : -621);\n    }\n    if (this.initialDay && this.initialMonth && this.initialYear) {\n      switch (type) {\n        case 'gregorian': {\n          const { year, month, day } = Calendar.toGregorian(\n            this.initialYear,\n            this.initialMonth,\n            this.initialDay\n          );\n          this.initialYear = year;\n          this.initialMonth = month;\n          this.initialDay = day;\n          break;\n        }\n        case 'jalali': {\n          const { year, month, day } = Calendar.toJalali(\n            this.initialYear,\n            this.initialMonth,\n            this.initialDay\n          );\n          this.initialYear = year;\n          this.initialMonth = month;\n          this.initialDay = day;\n          break;\n        }\n      }\n    }\n    this.hasAnimation = false;\n    this.initCalendar(type);\n    setTimeout(() => {\n      this.hasAnimation = true;\n    }, 0);\n  }\n\n  goToToday() {\n    if (this.today) {\n      this.year = this.today.year;\n      this.month = this.today.month;\n      this.day = this.today.number;\n      this.initialYear = this.year;\n      this.initialMonth = this.month;\n      this.initialDay = this.day;\n      this.bindDays(this.year, this.month);\n\n      const todayData: CalendarDay = {\n        type: 'currentMonth',\n        number: this.today.number,\n        month: this.today.month,\n        year: this.today.year,\n      };\n      this.selectDayCallback.emit(todayData);\n    }\n  }\n\n  private async initCalendar(type: CalendarType) {\n    const now = new Date();\n    this.today = {\n      type: 'currentMonth',\n      number: now.getDate(),\n      month: now.getMonth() + 1,\n      year: now.getFullYear(),\n    };\n\n    if (type == 'jalali') {\n      const converted = Calendar.toJalali(this.today.year, this.today.month, this.today.number);\n      this.today = {\n        type: 'currentMonth',\n        number: converted.day,\n        month: converted.month,\n        year: converted.year,\n      };\n    }\n\n    if (!this.month) {\n      this.month = this.today.month;\n    }\n    if (!this.year) {\n      this.year = this.today.year;\n    }\n\n    this.calendar = new Calendar(type);\n    this.weekDays = this.calendar.getWeekDays();\n    this.months = this.calendar.getMonths();\n\n    if (!this.minYear) {\n      this.minYear = this.year - 4;\n    }\n    if (!this.maxYear) {\n      this.maxYear = this.year + 2;\n    }\n    this.yearOptions = [];\n    for (let i = this.maxYear; i >= this.minYear; i--) {\n      const year = i.toString();\n      this.yearOptions.push({ id: year, text: year });\n    }\n\n    this.monthOptions = await Promise.all(\n      this.months.map(async item => ({\n        id: item,\n        text: await lastValueFrom(\n          this.translateService.get('calendar.' + this.calendar.type + '.months.' + item)\n        ),\n      }))\n    );\n\n    this.bindDays(this.year, this.month);\n  }\n\n  private bindDays(year: number, month: number) {\n    this.days = this.calendar.getDays(year, month);\n\n    this.currentMonthDays = this.calendar.getDays(year, month);\n    this.initDaysCallback.emit(this.currentMonthDays);\n\n    const nextMonth = month + 1;\n    this.nextMonthDays = this.calendar.getDays(\n      nextMonth > this.months.length ? year + 1 : year,\n      nextMonth > this.months.length ? 1 : nextMonth\n    );\n\n    const prevMonth = month - 1;\n    this.prevMonthDays = this.calendar.getDays(\n      prevMonth <= 0 ? year - 1 : year,\n      prevMonth <= 0 ? this.months.length : prevMonth\n    );\n  }\n}\n","<section class=\"date-picker\">\n  <ng-container *ngIf=\"!hideMonthSelector || !hideYearSelector || showTypeToggler\">\n    <header class=\"date-picker__bar\">\n      <ui-button\n        *ngIf=\"!hideTodayButton\"\n        class=\"date-picker__bar-item\"\n        [size]=\"'tiny'\"\n        [color]=\"'primary'\"\n        [variant]=\"'filled'\"\n        (click)=\"goToToday()\"\n        [title]=\"'calendar.' + calendar.type + '.today' | translate\"\n      >\n        {{ 'calendar.' + calendar.type + '.today' | translate }}\n      </ui-button>\n      <ng-container *ngIf=\"!hideMonthSelector\">\n        <ui-select\n          class=\"date-picker__bar-item\"\n          [options]=\"monthOptions\"\n          [value]=\"month\"\n          (onChangeCalback)=\"changeMonthSelectorHandler($event)\"\n        ></ui-select>\n      </ng-container>\n      <ng-container *ngIf=\"!hideYearSelector\">\n        <ui-select\n          class=\"date-picker__bar-item\"\n          [options]=\"yearOptions\"\n          [value]=\"year\"\n          (onChangeCalback)=\"changeYearSelectorHandler($event)\"\n        ></ui-select>\n      </ng-container>\n      <ng-container *ngIf=\"showTypeToggler\">\n        <ui-select\n          class=\"date-picker__bar-item\"\n          [options]=\"calendarTypeOptions\"\n          [value]=\"calendar.type\"\n          (onChangeCalback)=\"changeCalendarTypeSelectorHandler($event)\"\n        ></ui-select>\n      </ng-container>\n    </header>\n  </ng-container>\n  <div\n    class=\"date-picker__layout\"\n    [class.date-picker__layout--rtl]=\"calendar.type == 'jalali'\"\n    [class.date-picker__layout--ltr]=\"calendar.type == 'gregorian'\"\n  >\n    <a\n      class=\"date-picker__slide-button date-picker__slide-button--prev\"\n      (click)=\"previousMonth()\"\n      title=\"{{ 'calendar.' + calendar.type + '.prevMonth' | translate }}\"\n    >\n      <svg width=\"8\" height=\"14\" viewBox=\"0 0 8 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n        <path d=\"M1 13L7 7L1 1\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n      </svg>\n    </a>\n    <a\n      class=\"date-picker__slide-button date-picker__slide-button--next\"\n      (click)=\"nextMonth()\"\n      title=\"{{ 'calendar.' + calendar.type + '.nextMonth' | translate }}\"\n    >\n      <svg width=\"8\" height=\"14\" viewBox=\"0 0 8 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n        <path d=\"M7 13L1 7L7 1\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n      </svg>\n    </a>\n    <div\n      class=\"date-picker__content\"\n      [style.transform]=\"\n        'translateX(' + currentSlide * 100 * (calendar.type == 'gregorian' ? -1 : 1) + '%)'\n      \"\n      [class.date-picker__content--has-animation]=\"hasAnimation\"\n    >\n      <div class=\"date-picker__slide\">\n        <div class=\"date-picker__header\">\n          <span class=\"date-picker__header-item\" *ngFor=\"let item of weekDays\">{{\n            'calendar.' + calendar.type + '.weekDays.' + item | translate\n          }}</span>\n        </div>\n        <ul class=\"date-picker__days\">\n          <li class=\"date-picker__days-item\" *ngFor=\"let item of prevMonthDays\">\n            <a\n              class=\"date-picker__button\"\n              [class.date-picker__button--empty]=\"\n                item.type == 'prevMonth' || item.type == 'nextMonth'\n              \"\n              (click)=\"selectDay(item)\"\n              [class.date-picker__button--holiday]=\"isHolidays(item)\"\n              [class.date-picker__button--selected]=\"isSelected(item) && !hideSelectedStyle\"\n              [class.date-picker__button--today]=\"isToday(item)\"\n              ><span class=\"date-picker__button-text\">{{ item.number }}</span></a\n            >\n          </li>\n        </ul>\n      </div>\n      <div class=\"date-picker__slide\">\n        <div class=\"date-picker__header\">\n          <span class=\"date-picker__header-item\" *ngFor=\"let item of weekDays\">{{\n            'calendar.' + calendar.type + '.weekDays.' + item | translate\n          }}</span>\n        </div>\n        <ul class=\"date-picker__days\">\n          <li class=\"date-picker__days-item\" *ngFor=\"let item of currentMonthDays\">\n            <a\n              class=\"date-picker__button\"\n              [class.date-picker__button--empty]=\"\n                item.type == 'prevMonth' || item.type == 'nextMonth'\n              \"\n              (click)=\"selectDay(item)\"\n              (mouseenter)=\"hoverDay(item)\"\n              [class.date-picker__button--holiday]=\"isHolidays(item)\"\n              [class.date-picker__button--selected]=\"isSelected(item) && !hideSelectedStyle\"\n              [class.date-picker__button--today]=\"isToday(item)\"\n              ><span class=\"date-picker__button-text\">{{ item.number }}</span></a\n            >\n          </li>\n        </ul>\n      </div>\n      <div class=\"date-picker__slide\">\n        <div class=\"date-picker__header\">\n          <span class=\"date-picker__header-item\" *ngFor=\"let item of weekDays\">{{\n            'calendar.' + calendar.type + '.weekDays.' + item | translate\n          }}</span>\n        </div>\n        <ul class=\"date-picker__days\">\n          <li class=\"date-picker__days-item\" *ngFor=\"let item of nextMonthDays\">\n            <a\n              class=\"date-picker__button\"\n              [class.date-picker__button--empty]=\"\n                item.type == 'prevMonth' || item.type == 'nextMonth'\n              \"\n              (click)=\"selectDay(item)\"\n              [class.date-picker__button--holiday]=\"isHolidays(item)\"\n              [class.date-picker__button--selected]=\"isSelected(item) && !hideSelectedStyle\"\n              [class.date-picker__button--today]=\"isToday(item)\"\n              ><span class=\"date-picker__button-text\">{{ item.number }}</span></a\n            >\n          </li>\n        </ul>\n      </div>\n    </div>\n  </div>\n</section>\n","import { Overlay, OverlayRef } from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport {\n  Component,\n  ElementRef,\n  EventEmitter,\n  forwardRef,\n  Input,\n  OnInit,\n  Output,\n  TemplateRef,\n  ViewChild,\n  ViewContainerRef,\n  ViewEncapsulation,\n  AfterViewInit,\n  Injector,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n// import { NgxCurrencyConfig,  NgxCurrencyInputMode } from 'ngx-currency';\nimport { Maybe } from '../../../types/maybe.type';\nimport { CalendarDay, currentDatePersian } from '../../../utils/calendar';\nimport { TextboxCurrencyConfigInterface } from './../../../models/textbox-currency-config.interface';\nimport { IconInterface } from './../../../models/icon-interface';\nimport { SizeType } from '../../../types/size.type';\nimport { FormElementBaseComponent } from '../../../models/base-form-element.component';\n\ntype StatusType = 'normal' | 'error' | 'warning' | 'success';\nexport type LabelType = 'side' | 'float';\nexport interface TextboxComponentPropsInterface {\n  type?: string;\n  id?: string;\n  size?: SizeType;\n  name?: string;\n  autocomplete?: string;\n  autofocus?: string;\n  readonly?: string;\n  placeholder?: string;\n  iconUrl?: string;\n  hasError?: boolean;\n  mask?: any;\n  onlyNumber?: boolean;\n  maxlength?: number;\n  minlength?: number;\n  multiline?: boolean;\n  disabled?: boolean;\n  rows?: string;\n  tabIndex?: string | number;\n  currency?: boolean;\n  currencyConfig?: TextboxCurrencyConfigInterface;\n  startIcon?: IconInterface;\n  endIcon?: IconInterface;\n  caption?: string;\n  status?: StatusType;\n  statusIcon?: boolean;\n  label?: string;\n  labelType?: LabelType;\n  hideBorder?: boolean;\n}\n\n@Component({\n  selector: 'ui-textbox',\n  templateUrl: './textbox.component.html',\n  styleUrls: ['./textbox.component.scss'],\n  encapsulation: ViewEncapsulation.None,\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => TextboxComponent),\n      multi: true,\n    },\n  ],\n})\nexport class TextboxComponent\n  extends FormElementBaseComponent\n  implements OnInit, AfterViewInit, ControlValueAccessor, TextboxComponentPropsInterface\n{\n  @Input('value') _value = '';\n  @Input() type?: string;\n  @Input() id?: string;\n  @Input() inputId?: string;\n  @Input() size?: SizeType = 'normal';\n  @Input() name?: string;\n  @Input() autocomplete?: string;\n  @Input() autofocus?: string;\n  @Input() readonly?: string;\n  @Input() placeholder?: string;\n  @Input() iconUrl?: string;\n  @Input() hasError?: boolean;\n  @Input() mask?: any;\n  @Input() onlyNumber?: boolean;\n  @Input() maxlength?: number;\n  @Input() minlength?: number;\n  @Input() multiline?: boolean;\n  @Input() disabled?: boolean;\n  @Input() rows?: string;\n  @Input() tabIndex?: string | number;\n  @Input() currency?: boolean;\n  @Input() currencyConfig?: TextboxCurrencyConfigInterface;\n  @Input() startIcon?: IconInterface;\n  @Input() endIcon?: IconInterface;\n  @Input() caption?: string;\n  @Input() status?: StatusType;\n  @Input() statusIcon?: boolean;\n  @Input() label?: string;\n  @Input() labelType?: LabelType = 'side';\n  @Input() labelShowRequiredSign?: boolean;\n  @Input() minYear: number = null;\n  @Input() maxYear: number = null;\n  @Input() spinnerIsShow?: boolean;\n  @Input() direction: 'ltr' | 'rtl' | undefined = undefined;\n  @Input() hideBorder?: boolean = false;\n\n  @Output() enterCallback = new EventEmitter<Event>();\n  @Output() iconClickCallback = new EventEmitter<null>();\n  @Output() blurCallback = new EventEmitter<Event>();\n  @Output() focusCallback = new EventEmitter<Event>();\n  @Output() keyDownCallback = new EventEmitter<Event>();\n  @Output() changeCallback = new EventEmitter<any>();\n  @Output() tabCallback = new EventEmitter<Event>();\n\n  @ViewChild('textbox') textbox?: ElementRef<HTMLInputElement | HTMLTextAreaElement>;\n  @ViewChild('datePickerMenu') datePickerMenuTemplateRef: TemplateRef<any>;\n  @ViewChild('textboxWrapper')\n  textboxWrapperElement: ElementRef<HTMLDivElement>;\n\n  isNumeric: boolean;\n  // customCurrencyMaskConfig?: NgxCurrencyConfig;\n  customMaskConfig: {\n    showMaskTyped?: boolean;\n    allowNegativeNumbers?: boolean;\n    prefix?: string;\n    suffix?: string;\n    dropSpecialCharacters?: boolean;\n    clearIfNotMatch?: boolean;\n    validation?: boolean;\n    keepCharacterPositions?: boolean;\n    leadZero?: boolean;\n    thousandSeparator?: string;\n    decimalMarker?: '.' | ',' | ['.', ','];\n    hiddenInput?: boolean;\n  };\n  hasDatePicker?: Maybe<boolean>;\n  datePickerMenuIsShow?: Maybe<boolean>;\n  selectedDate?: Maybe<CalendarDay>;\n  hasMaskPlaceholder: boolean = false;\n\n  private overlayRef: OverlayRef;\n\n  constructor(\n    public viewContainerRef: ViewContainerRef,\n    private overlay: Overlay,\n    injector: Injector\n  ) {\n    super(injector);\n  }\n\n  ngOnInit() {\n    super.init();\n    const type = this.type?.toLowerCase();\n    if (!this.inputId) {\n      this.inputId = this.generateUniqueId();\n    }\n    if (type == 'date') {\n      this.type = null;\n      this.hasDatePicker = true;\n      this.hasMaskPlaceholder = true;\n      this.isNumeric = true;\n      this.mask = '0000/00/00';\n      this.customMaskConfig = {\n        showMaskTyped: true,\n        dropSpecialCharacters: false,\n      };\n    }\n    if (type == 'time') {\n      this.type = null;\n      this.isNumeric = true;\n      this.mask = 'Hh:m0';\n      this.hasMaskPlaceholder = true;\n      this.customMaskConfig = {\n        showMaskTyped: true,\n        dropSpecialCharacters: false,\n      };\n    }\n    if (\n      this.currency ||\n      this.currencyConfig ||\n      type == 'currency' ||\n      type == 'number' ||\n      this.onlyNumber\n    ) {\n      this.type = null;\n      this.isNumeric = true;\n      this.currency = true;\n      this.customMaskConfig = {\n        allowNegativeNumbers: !!this.currencyConfig?.allowNegative,\n        leadZero: !!this.currencyConfig?.allowZero,\n        prefix: this.currencyConfig?.prefix || '',\n        suffix: this.currencyConfig?.suffix || '',\n        thousandSeparator: this.currencyConfig?.thousands ?? ',',\n        dropSpecialCharacters: !this.currencyConfig?.injectSpecialCharacters,\n      };\n      this.mask = this.mask || 'separator.' + (this.currencyConfig?.precision || 0);\n      if (type == 'number' || this.onlyNumber) {\n        this.customMaskConfig.thousandSeparator = '';\n        if (this.onlyNumber) {\n          this.mask = 'separator.0';\n        }\n      }\n    }\n  }\n\n  ngAfterViewInit(): void {\n    if (typeof this.autofocus != 'undefined' && !this.disabled) {\n      this.focus();\n    }\n  }\n\n  get value() {\n    return this._value;\n  }\n\n  set value(val) {\n    this._value = val;\n  }\n\n  onChange = (_: any) => {};\n\n  onTouched = () => {};\n\n  registerOnChange(fn: any): void {\n    this.onChange = fn;\n  }\n\n  registerOnTouched(fn: any): void {\n    this.onTouched = fn;\n  }\n\n  writeValue(obj: any): void {\n    this.value = obj;\n  }\n\n  setDisabledState(isDisabled: boolean): void {\n    this.disabled = isDisabled;\n  }\n\n  changeHandler() {\n    if (this.isNumeric && !this.hasMaskPlaceholder)\n      this.onChange(this.value != null && this.value !== '' ? Number(this.value) : undefined);\n    else if (this.hasMaskPlaceholder)\n      this.onChange(this.value != null && this.value !== '' ? this.value : undefined);\n    else this.onChange(this.value);\n    this.changeCallback.emit(this.value);\n  }\n\n  enterHander(event: Event) {\n    const keyboardEvent = event as KeyboardEvent;\n\n    // If Enter is pressed, type is 'date', and date is not entered yet, set current day as the date\n    if (\n      keyboardEvent.key === 'Enter' &&\n      this.mask === '0000/00/00' &&\n      (!this.value || this.value === '' || this.value === '____/__/__')\n    ) {\n      event.preventDefault();\n      event.stopPropagation();\n      this.value = currentDatePersian();\n      this.onChange(this.value);\n      this.changeCallback.emit(this.value);\n      this.selectedDate = {\n        type: 'currentMonth',\n        year: Number(this.value.substring(0, 4)),\n        month: Number(this.value.substring(5, 7)),\n        number: Number(this.value.substring(8, 10)),\n      };\n      return;\n    }\n\n    this.enterCallback.emit(event);\n  }\n\n  tabHander(event: Event) {\n    this.tabCallback.emit(event);\n  }\n\n  blurHandler(event: Event) {\n    this.onTouched();\n    this.blurCallback.emit(event);\n  }\n\n  focusHandler(event: Event) {\n    this.focusCallback.emit(event);\n  }\n\n  keyDownHandler(event: Event) {\n    this.keyDownCallback.emit(event);\n  }\n\n  keyUpHandler(event: Event) {\n    const input = event.target as HTMLInputElement;\n    const keyboardEvent = event as KeyboardEvent;\n    if (keyboardEvent.key === '+' && (this.isNumeric || this.currency)) {\n      if (!keyboardEvent.ctrlKey && !keyboardEvent.altKey && !keyboardEvent.metaKey) {\n        event.preventDefault();\n\n        // Get current value and append three zeros\n        const currentValue = input.value?.toString() || '';\n        if (currentValue && currentValue.trim() !== '') {\n          // Only append zeros if the current value is a valid number or currency\n          // This prevents appending zeros to invalid input\n          const trimmedValue = currentValue.trim();\n          if (/^[\\d,.\\s-]+$/.test(trimmedValue)) {\n            const newValue = trimmedValue + '000';\n            this.value = newValue;\n            this.onChange(this.value);\n            this.changeCallback.emit(this.value);\n          }\n        }\n        return;\n      }\n    }\n  }\n\n  openDatePickerMenu() {\n    if ((this.readonly != undefined && this.readonly != null) || this.disabled) return;\n    if (/^\\d{4}\\/\\d{2}\\/\\d{2}$/g.test(this.value)) {\n      const [year, month, day] = this.value.split('/').map(x => +x);\n      this.selectedDate = {\n        type: 'currentMonth',\n        year,\n        month,\n        number: day,\n      };\n    }\n    this.datePickerMenuIsShow = true;\n    this.overlayRef = this.createTreeMenuOverlay();\n    this.overlayRef.attach(\n      new TemplatePortal(this.datePickerMenuTemplateRef, this.viewContainerRef)\n    );\n    this.overlayRef.backdropClick().subscribe(() => {\n      this.closeDatePickerMenu();\n    });\n  }\n\n  closeDatePickerMenu() {\n    this.datePickerMenuIsShow = false;\n    this.textbox.nativeElement.focus();\n    this.overlayRef?.detach();\n  }\n\n  selectDayHandler(data: CalendarDay) {\n    this.closeDatePickerMenu();\n    this.selectedDate = data;\n    this.value = data\n      ? data.year +\n        '/' +\n        data.month.toString().padStart(2, '0') +\n        '/' +\n        data.number.toString().padStart(2, '0')\n      : '';\n    this.onChange(this.value);\n    this.changeCallback.emit(this.value);\n  }\n\n  private createTreeMenuOverlay() {\n    return this.overlay.create({\n      hasBackdrop: true,\n      backdropClass: 'cdk-overlay-transparent-backdrop',\n      direction: document.body.getAttribute('dir') == 'rtl' ? 'rtl' : 'ltr',\n      scrollStrategy: this.overlay.scrollStrategies.block(),\n      positionStrategy: this.overlay\n        .position()\n        .flexibleConnectedTo(this.textboxWrapperElement)\n        .withPositions([\n          {\n            originX: 'start',\n            originY: 'bottom',\n            overlayX: 'start',\n            overlayY: 'top',\n            offsetY: -1,\n          },\n          {\n            originX: 'end',\n            originY: 'bottom',\n            overlayX: 'end',\n            overlayY: 'top',\n            offsetY: -1,\n          },\n        ]),\n    });\n  }\n\n  focus() {\n    setTimeout(() => {\n      this.textbox.nativeElement.focus();\n    }, 100);\n  }\n\n  generateUniqueId(): string {\n    const timestamp = Date.now().toString(36);\n    const randomString = Math.random().toString(36).substr(2, 9);\n    return timestamp + '_' + randomString;\n  }\n\n  getLabelBackStyle() {\n    if (this.readonly) return 'readonly';\n    if (this.disabled || this.spinnerIsShow) return 'disabled';\n    return 'default';\n  }\n}\n","<div\n  class=\"textbox\"\n  #textboxWrapper\n  [ngClass]=\"{\n    'textbox--is-numeric': isNumeric\n  }\"\n  [attr.readonly]=\"readonly\"\n  [attr.disabled]=\"disabled || spinnerIsShow ? true : null\"\n>\n  <ui-label\n    [label]=\"label\"\n    [type]=\"labelType\"\n    [for]=\"inputId\"\n    [backLineStyle]=\"getLabelBackStyle()\"\n    [hasValue]=\"hasMaskPlaceholder ? ' ' : value != null ? value.toString() : ''\"\n    [showRequiredSign]=\"labelShowRequiredSign || hasRequiredValidator\"\n  >\n    <div class=\"textbox__input-container\">\n      <img *ngIf=\"iconUrl\" class=\"textbox__icon\" [src]=\"iconUrl\" />\n      <ui-icon\n        *ngIf=\"startIcon\"\n        class=\"textbox__start-icon\"\n        [ngClass]=\"{\n          'textbox__start-icon--small': size == 'small',\n          'textbox__start-icon--large': size == 'large',\n          'textbox__start-icon--tiny': size == 'tiny',\n        }\"\n        [type]=\"startIcon.type\"\n        [group]=\"startIcon.group\"\n        [name]=\"startIcon.name\"\n      ></ui-icon>\n      <ui-icon\n        *ngIf=\"endIcon && !hasDatePicker && !spinnerIsShow\"\n        class=\"textbox__end-icon\"\n        [ngClass]=\"{\n          'textbox__end-icon--small': size == 'small',\n          'textbox__end-icon--large': size == 'large',\n          'textbox__end-icon--tiny': size == 'tiny',\n        }\"\n        [type]=\"endIcon.type\"\n        [group]=\"endIcon.group\"\n        [name]=\"endIcon.name\"\n      ></ui-icon>\n      <ng-container *ngIf=\"hasDatePicker && !spinnerIsShow\">\n        <ui-fararu-icon\n          (click)=\"openDatePickerMenu()\"\n          class=\"textbox__date-picker-button textbox__end-icon\"\n          [ngClass]=\"{\n            'textbox__end-icon--small': size == 'small',\n            'textbox__end-icon--large': size == 'large',\n            'textbox__end-icon--tiny': size == 'tiny',\n          }\"\n          [name]=\"'date'\"\n        ></ui-fararu-icon>\n      </ng-container>\n      <ui-icon\n        *ngIf=\"statusIcon && status == 'error'\"\n        class=\"textbox__status-icon textbox__status-icon--error\"\n        [ngClass]=\"{\n          'textbox__status-icon--small': size == 'small',\n          'textbox__status-icon--large': size == 'large',\n          'textbox__status-icon--tiny': size == 'tiny',\n          'textbox__status-icon--with-end-icon': statusIcon && endIcon\n        }\"\n        color=\"danger\"\n        type=\"fill\"\n        group=\"alert\"\n        name=\"error\"\n      ></ui-icon>\n      <ui-icon\n        *ngIf=\"statusIcon && status == 'warning'\"\n        class=\"textbox__status-icon textbox__status-icon--warning\"\n        [ngClass]=\"{\n          'textbox__status-icon--small': size == 'small',\n          'textbox__status-icon--large': size == 'large',\n          'textbox__status-icon--tiny': size == 'tiny',\n          'textbox__status-icon--with-end-icon': statusIcon && endIcon\n        }\"\n        [color]=\"'warning'\"\n        type=\"fill\"\n        group=\"alert\"\n        name=\"warning\"\n      ></ui-icon>\n      <ui-icon\n        *ngIf=\"statusIcon && status == 'success'\"\n        class=\"textbox__status-icon textbox__status-icon--success\"\n        [ngClass]=\"{\n          'textbox__status-icon--small': size == 'small',\n          'textbox__status-icon--large': size == 'large',\n          'textbox__status-icon--tiny': size == 'tiny',\n          'textbox__status-icon--with-end-icon': statusIcon && endIcon\n        }\"\n        color=\"success\"\n        type=\"fill\"\n        group=\"action\"\n        name=\"check_circle\"\n      ></ui-icon>\n      <ng-container *ngIf=\"!multiline; else multilineTemplate\">\n        <input\n          *ngIf=\"!mask; else maskedInputTemplate\"\n          class=\"textbox__input\"\n          [ngClass]=\"{\n            'textbox__input--small': size == 'small',\n            'textbox__input--large': size == 'large',\n            'textbox__input--tiny': size == 'tiny',\n            'textbox__input--hasIcon': !!iconUrl,\n            'textbox__input--error': status == 'error' || !!hasError,\n            'textbox__input--success': status == 'success',\n            'textbox__input--warning': status == 'warning',\n            'textbox__input--start-icon': startIcon,\n            'textbox__input--end-icon': endIcon,\n            'textbox__input--status-icon': statusIcon,\n            'textbox__input--status-end-icon': statusIcon && endIcon,\n            'ltr': direction == 'ltr',\n            'rtl': direction == 'rtl',\n            'textbox__input--hide-border': hideBorder,\n          }\"\n          #textbox\n          [attr.tabIndex]=\"tabIndex\"\n          [attr.id]=\"inputId\"\n          [attr.name]=\"name\"\n          [attr.type]=\"type\"\n          [attr.placeholder]=\"label && labelType == 'float' ? '' : placeholder\"\n          [attr.maxlength]=\"maxlength\"\n          [attr.minlength]=\"minlength\"\n          [attr.autocomplete]=\"autocomplete\"\n          [attr.autofocus]=\"autofocus\"\n          [attr.readonly]=\"readonly\"\n          [disabled]=\"disabled || spinnerIsShow ? true : null\"\n          [(ngModel)]=\"value\"\n          (keydown.enter)=\"enterHander($event)\"\n          (keydown.tab)=\"tabHander($event)\"\n          (ngModelChange)=\"changeHandler()\"\n          (blur)=\"blurHandler($event)\"\n          (focus)=\"focusHandler($event)\"\n          (keydown)=\"keyDownHandler($event)\"\n          (keyup)=\"keyUpHandler($event)\"\n        />\n        <ng-template #maskedInputTemplate>\n          <input\n            class=\"textbox__input\"\n            [ngClass]=\"{\n              'textbox__input--small': size == 'small',\n              'textbox__input--large': size == 'large',\n              'textbox__input--tiny': size == 'tiny',\n              'textbox__input--hasIcon': !!iconUrl,\n              'textbox__input--error': status == 'error' || !!hasError,\n              'textbox__input--success': status == 'success',\n              'textbox__input--warning': status == 'warning',\n              'textbox__input--start-icon': startIcon,\n              'textbox__input--end-icon': endIcon,\n              'textbox__input--status-icon': statusIcon,\n              'textbox__input--status-end-icon': statusIcon && endIcon,\n              ltr: direction == 'ltr',\n              rtl: direction == 'rtl',\n              'textbox__input--hide-border': hideBorder\n            }\"\n            #textbox\n            [attr.tabIndex]=\"tabIndex\"\n            [attr.id]=\"inputId\"\n            [attr.name]=\"name\"\n            [attr.type]=\"type\"\n            [attr.placeholder]=\"label && labelType == 'float' ? '' : placeholder\"\n            [attr.maxlength]=\"maxlength\"\n            [attr.minlength]=\"minlength\"\n            [attr.autocomplete]=\"autocomplete\"\n            [attr.autofocus]=\"autofocus\"\n            [attr.readonly]=\"readonly\"\n            [disabled]=\"disabled || spinnerIsShow ? true : null\"\n            [(ngModel)]=\"value\"\n            (keydown.enter)=\"enterHander($event)\"\n            (keydown.tab)=\"tabHander($event)\"\n            (ngModelChange)=\"changeHandler()\"\n            (blur)=\"blurHandler($event)\"\n            (focus)=\"focusHandler($event)\"\n            (keydown)=\"keyDownHandler($event)\"\n            (keyup)=\"keyUpHandler($event)\"\n            [mask]=\"mask\"\n            [showMaskTyped]=\"customMaskConfig?.showMaskTyped\"\n            [allowNegativeNumbers]=\"customMaskConfig?.allowNegativeNumbers\"\n            [prefix]=\"customMaskConfig?.prefix ?? ''\"\n            [suffix]=\"customMaskConfig?.suffix ?? ''\"\n            [dropSpecialCharacters]=\"customMaskConfig?.dropSpecialCharacters ?? true\"\n            [clearIfNotMatch]=\"customMaskConfig?.clearIfNotMatch\"\n            [validation]=\"customMaskConfig?.validation\"\n            [keepCharacterPositions]=\"customMaskConfig?.keepCharacterPositions\"\n            [leadZero]=\"customMaskConfig?.leadZero\"\n            [thousandSeparator]=\"customMaskConfig?.thousandSeparator\"\n            [decimalMarker]=\"'.'\"\n            [hiddenInput]=\"customMaskConfig?.hiddenInput\"\n          />\n        </ng-template>\n      </ng-container>\n      <ng-template #multilineTemplate>\n        <textarea\n          class=\"textbox__textarea\"\n          [ngClass]=\"{\n            'textbox__textarea--small': size == 'small',\n            'textbox__textarea--large': size == 'large',\n            'textbox__textarea--tiny': size == 'tiny',\n            'textbox__textarea--hasIcon': !!iconUrl,\n            'textbox__textarea--error': status == 'error' || !!hasError,\n            'textbox__textarea--success': status == 'success',\n            'textbox__textarea--warning': status == 'warning',\n            'textbox__textarea--start-icon': startIcon,\n            'textbox__textarea--end-icon': endIcon,\n            'textbox__textarea--status-icon': statusIcon,\n            'textbox__textarea--status-end-icon': statusIcon && endIcon,\n            'ltr': direction == 'ltr',\n            'rtl': direction == 'rtl',\n          }\"\n          #textbox\n          [attr.tabIndex]=\"tabIndex\"\n          [attr.id]=\"inputId\"\n          [attr.placeholder]=\"label && labelType == 'float' ? '' : placeholder\"\n          [attr.maxlength]=\"maxlength\"\n          [attr.minlength]=\"minlength\"\n          rows=\"{{ rows || 3 }}\"\n          [attr.autofocus]=\"autofocus\"\n          [attr.readonly]=\"readonly\"\n          [disabled]=\"disabled || spinnerIsShow ? true : null\"\n          [(ngModel)]=\"value\"\n          (keydown.enter)=\"enterHander($event)\"\n          (keydown.tab)=\"tabHander($event)\"\n          (ngModelChange)=\"changeHandler()\"\n          (blur)=\"blurHandler($event)\"\n          (focus)=\"focusHandler($event)\"\n          (keydown)=\"keyDownHandler($event)\"\n          (keyup)=\"keyUpHandler($event)\"\n        >\n        </textarea>\n      </ng-template>\n      <ui-spinner\n        class=\"textbox__loading\"\n        [size]=\"'tiny'\"\n        [color]=\"'quaternary'\"\n        [hideText]=\"true\"\n        [show]=\"true\"\n        *ngIf=\"spinnerIsShow\"\n      ></ui-spinner>\n    </div>\n  </ui-label>\n\n  <span\n    *ngIf=\"caption\"\n    class=\"textbox__caption\"\n    [ngClass]=\"{\n      'textbox__caption--error': status == 'error',\n      'textbox__caption--success': status == 'success',\n      'textbox__caption--warning': status == 'warning'\n    }\"\n    >{{ caption }}</span\n  >\n</div>\n<ng-template #datePickerMenu\n  ><ui-date-picker\n    class=\"textbox__date-pciker-menu\"\n    [inputType]=\"'jalali'\"\n    [outputType]=\"'jalali'\"\n    [day]=\"selectedDate?.number\"\n    [month]=\"selectedDate?.month\"\n    [year]=\"selectedDate?.year\"\n    [minYear]=\"minYear\"\n    [maxYear]=\"maxYear\"\n    (selectDayCallback)=\"selectDayHandler($event)\"\n  ></ui-date-picker\n></ng-template>\n","import {\n  Component,\n  Input,\n  OnInit,\n  SimpleChanges,\n  OnChanges,\n  HostListener,\n  ElementRef,\n  ViewChild,\n  OnDestroy,\n} from '@angular/core';\nimport {\n  ClickSubscription,\n  GeneralActionButtonInterface,\n  GeneralActionInterface,\n} from '../../../../models/general-action.interface';\nimport {\n  concatMap,\n  exhaustMap,\n  mergeMap,\n  Observable,\n  of,\n  Subject,\n  Subscription,\n  switchMap,\n} from 'rxjs';\nimport { catchError } from 'rxjs/operators';\nimport { isNil } from '../../../../utils/is-nil';\nimport { propertyOf } from '../../../../utils/property-of';\nimport { UserAccessService } from '../../../../services/user-access.service';\nimport { flattenTree } from '../../../../utils/flatten-tree';\nimport { generateUUID } from '../../../../utils/generate-uuid';\n\n@Component({\n  selector: 'ui-sub-menu',\n  templateUrl: './sub-menu.component.html',\n  styleUrls: ['./sub-menu.component.scss'],\n})\nexport class SubMenuComponent implements OnChanges, OnDestroy {\n  @Input() items: GeneralActionInterface[] = [];\n  @Input() args?: any | null;\n  @Input() keepSelectedRow: boolean = false;\n\n  @ViewChild('listRef') listRef: ElementRef<HTMLUListElement>;\n\n  searchBoxIsShow?: boolean | null;\n  keyword: string = '';\n  results: GeneralActionInterface[] = [];\n  currentIndex?: number;\n  keepSelectedId?: string;\n  clickMap = new Map<string, ClickSubscription>();\n  allItems?: HTMLLIElement[];\n  itemsHasIcon?: boolean;\n  resultIsEmpty?: boolean;\n\n  private subscriptions = new Subscription();\n  private _sortedItems: GeneralActionInterface[];\n  constructor(\n    private readonly _elementRef: ElementRef,\n    private readonly _userAccessService: UserAccessService\n  ) {}\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (changes[propertyOf<SubMenuComponent>('items')]) {\n      this.clickMap.clear();\n      this._sortedItems = this._generateSortedItems(this.items || []);\n      this._setTreeNodeClickEvent(this._sortedItems);\n      this.searchBoxIsShow =\n        flattenTree<GeneralActionInterface>(\n          this._sortedItems,\n          propertyOf<GeneralActionInterface>('items')\n        ).filter(x => x.item.type !== 'group').length >= 10;\n\n      this.search();\n      this.itemsHasIcon = this._exsistIconInItems(this.items);\n    }\n  }\n\n  searchBoxClickHandler(event: Event) {\n    event.stopPropagation();\n  }\n\n  textChangeHandler() {\n    this.search();\n  }\n\n  @HostListener('document:keydown', ['$event'])\n  documentKyDown(e: KeyboardEvent) {\n    if (\n      !(document as any).dropdownAddedInOverlay ||\n      !getComputedStyle(this._elementRef.nativeElement as HTMLDivElement).display\n    )\n      return;\n\n    switch (e.key) {\n      case 'ArrowUp':\n        this.documentArrowTopHandler();\n        break;\n\n      case 'ArrowDown':\n        this.documentArrowBottomHandler();\n        break;\n\n      case 'Enter':\n        this.documentEnterHandler();\n        break;\n\n      case 'Escape':\n        this.documentEscapeHandler();\n        break;\n    }\n  }\n\n  private documentArrowTopHandler() {\n    this._setCurrentItemHover(\n      ((isNil(this.currentIndex) ? -1 : this.currentIndex) - 1 + this.allItems.length) %\n        this.allItems.length\n    );\n  }\n\n  private documentArrowBottomHandler() {\n    this._setCurrentItemHover(\n      ((isNil(this.currentIndex) ? this.allItems.length - 1 : this.currentIndex) + 1) %\n        this.allItems.length\n    );\n\n    // if (this.selectedIndex == this.results.length - 1) return;\n    // this.selectedIndex = Math.min(this.results.length - 1, +this.selectedIndex + 1);\n    // this.getItemNativeElementByIndex(this.selectedIndex)?.scrollIntoView({\n    //   behavior: 'smooth',\n    //   block: 'nearest',\n    //   inline: 'nearest',\n    // });\n  }\n\n  private documentEnterHandler() {\n    if (this.currentIndex >= 0) {\n      const itemNativeElement = this.getItemNativeElementByIndex(this.currentIndex);\n      itemNativeElement?.click();\n    }\n  }\n\n  private documentEscapeHandler() {\n    this.listRef.nativeElement.click();\n  }\n\n  private search() {\n    this.results = this._sortedItems;\n    this.results = this._filterTree(\n      this._sortedItems,\n      x =>\n        x.type === 'group' ||\n        (x.text && x.text.toLowerCase().indexOf(this.keyword.toLowerCase()) != -1)\n    );\n\n    this.resultIsEmpty = this._isTreeFullyEmpty(this.results);\n    setTimeout(() => {\n      this._adjustAllItems();\n    }, 0);\n  }\n\n  private getItemNativeElementByIndex(index: number) {\n    return this.listRef.nativeElement.querySelectorAll('li[data-role=\"item\"]')[\n      index\n    ] as HTMLLIElement;\n  }\n\n  onClick(event: Event, action: GeneralActionButtonInterface): void {\n    if (this.keepSelectedRow) {\n      this.keepSelectedId = action.id;\n    }\n    if (!action?.actionId) {\n      action.click(event, this.args);\n    } else {\n      if (action?.disabled) return;\n      action.disabled = true;\n      try {\n        this.clickMap.get(action.actionId).event = event;\n        this.clickMap.get(action.actionId).subject.next(this.clickMap.get(action.actionId));\n      } catch (e) {\n        console.log('The menu items are not initialized yet');\n      }\n    }\n  }\n\n  onClickResultHandler(action: GeneralActionButtonInterface): void {\n    switch (action?.mapFunction) {\n      case 'switch': {\n        this.subscriptions.add(\n          this.clickMap\n            .get(action.actionId)\n            .subject.pipe(\n              switchMap((data: ClickSubscription) =>\n                (action.click(data.event, this.args) as Observable<any>).pipe(\n                  catchError(error => {\n                    action.onFailure(error);\n                    return of(null);\n                  })\n                )\n              )\n            )\n            .subscribe({\n              next: (response: any) => {\n                if (response !== null) {\n                  action.onSuccess(response);\n                }\n              },\n            })\n        );\n        break;\n      }\n      case 'concat': {\n        this.subscriptions.add(\n          this.clickMap\n            .get(action.actionId)\n            .subject.pipe(\n              concatMap((data: ClickSubscription) =>\n                (action.click(data.event, this.args) as Observable<any>).pipe(\n                  catchError(error => {\n                    action.onFailure(error);\n                    return of(null);\n                  })\n                )\n              )\n            )\n            .subscribe({\n              next: (response: any) => {\n                if (response !== null) {\n                  action.onSuccess(response);\n                }\n              },\n            })\n        );\n        break;\n      }\n      case 'merge': {\n        this.subscriptions.add(\n          this.clickMap\n            .get(action.actionId)\n            .subject.pipe(\n              mergeMap((data: ClickSubscription) =>\n                (action.click(data.event, this.args) as Observable<any>).pipe(\n                  catchError(error => {\n                    action.onFailure(error);\n                    return of(null);\n                  })\n                )\n              )\n            )\n            .subscribe({\n              next: (response: any) => {\n                if (response !== null) {\n                  action.onSuccess(response);\n                }\n              },\n            })\n        );\n        break;\n      }\n      case 'exhaust': {\n        this.subscriptions.add(\n          this.clickMap\n            .get(action.actionId)\n            .subject.pipe(\n              exhaustMap((data: ClickSubscription) =>\n                (action.click(data.event, this.args) as Observable<any>).pipe(\n                  catchError(error => {\n                    action.onFailure(error);\n                    return of(null);\n                  })\n                )\n              )\n            )\n            .subscribe({\n              next: (response: any) => {\n                if (response !== null) {\n                  action.onSuccess(response);\n                }\n              },\n            })\n        );\n        break;\n      }\n      case 'disabled': {\n        this.subscriptions.add(\n          this.clickMap\n            .get(action.actionId)\n            .subject.pipe(\n              exhaustMap((data: ClickSubscription) =>\n                (action.click(data.event, this.args) as Observable<any>).pipe(\n                  catchError(error => {\n                    action.onFailure(error);\n                    action.disabled = false;\n                    return of(null);\n                  })\n                )\n              )\n            )\n            .subscribe({\n              next: (response: any) => {\n                if (response !== null) {\n                  action.onSuccess(response);\n                }\n                action.disabled = false;\n              },\n            })\n        );\n        break;\n      }\n    }\n  }\n\n  ngOnDestroy(): void {\n    this.subscriptions.unsubscribe();\n  }\n\n  private _exsistIconInItems(items: typeof this.items) {\n    for (const node of items) {\n      if (\n        node.icon ||\n        node.type === 'view' ||\n        node.type === 'approve' ||\n        node.type === 'disapprove' ||\n        node.type === 'note' ||\n        node.type === 'attachment' ||\n        node.type === 'delete'\n      ) {\n        return true;\n      }\n\n      if (Array.isArray(node.items)) {\n        if (this._exsistIconInItems(node.items)) {\n          return true;\n        }\n      }\n    }\n    return false;\n  }\n\n  private _adjustAllItems() {\n    this.allItems = Array.from(this.listRef.nativeElement.querySelectorAll('li[data-role=\"item\"]'));\n    this.currentIndex = undefined;\n    this.allItems.forEach((item, i) => {\n      item.onmouseenter = () => {\n        this._setCurrentItemHover(i);\n      };\n      item.onmouseleave = () => {\n        this._setCurrentItemHover(null);\n      };\n    });\n  }\n\n  private _setCurrentItemHover(newIndex: number | null) {\n    if (!isNil(this.currentIndex)) {\n      const currentItem = this.allItems[this.currentIndex];\n      currentItem.classList.remove('sub-menu__item--hover');\n    }\n\n    if (!isNil(newIndex)) {\n      this.currentIndex = newIndex;\n      this.allItems[this.currentIndex].classList.add('sub-menu__item--hover');\n    }\n  }\n\n  private _generateSortedItems(input: GeneralActionInterface[]): GeneralActionInterface[] {\n    let output: GeneralActionInterface[] = [];\n    const findedView = this._findItemByType('view', input);\n    const findedApprove = this._findItemByType('approve', input);\n    const findedDisapprove = this._findItemByType('disapprove', input);\n    const items = this._findItemsWithItemType(input);\n    const findedNote = this._findItemByType('note', input);\n    const findedAttachment = this._findItemByType('attachment', input);\n    const findedDelete = this._findItemByType('delete', input);\n\n    // view\n    if (findedView) {\n      output.push({\n        type: 'group',\n        items: [\n          {\n            ...findedView,\n            text: 'مشاهده', // TODO: add translation\n            icon: {\n              fararuIcon: {\n                name: 'view',\n              },\n            },\n          },\n        ],\n      });\n    }\n\n    // approve and disapprove\n    if (findedApprove || findedDisapprove) {\n      const group: GeneralActionInterface = {\n        type: 'group',\n        items: [],\n      };\n      output.push(group);\n      if (findedApprove) {\n        group.items.push({\n          ...findedApprove,\n          text: 'تایید', // TODO: add translation\n          icon: {\n            fararuIcon: {\n              name: 'success',\n            },\n          },\n        });\n      }\n\n      if (findedDisapprove) {\n        group.items.push({\n          ...findedDisapprove,\n          text: 'عدم تایید', // TODO: add translation\n          icon: {\n            fararuIcon: {\n              name: 'error',\n            },\n          },\n        });\n      }\n    }\n\n    // items\n    if (items) {\n      output.push(...items);\n    }\n\n    // note and attachment\n    if (findedNote || findedAttachment) {\n      const group: GeneralActionInterface = {\n        type: 'group',\n        items: [],\n      };\n      output.push(group);\n      if (findedNote) {\n        group.items.push({\n          ...findedNote,\n          text: 'یادداشت', // TODO: add translation\n          icon: {\n            fararuIcon: {\n              name: 'docs',\n            },\n          },\n        });\n      }\n\n      if (findedAttachment) {\n        group.items.push({\n          ...findedAttachment,\n          text: 'پیوست', // TODO: add translation\n          icon: {\n            fararuIcon: {\n              name: 'link',\n            },\n          },\n        });\n      }\n    }\n\n    // delete\n    if (findedDelete) {\n      output.push({\n        type: 'group',\n        items: [\n          {\n            ...findedDelete,\n            text: 'حذف', // TODO: add translation\n            isDanger: true,\n            icon: {\n              fararuIcon: {\n                name: 'delete',\n              },\n            },\n          },\n        ],\n      });\n    }\n\n    output = this._filterTree(output, x => this._hasAccessPermission(x));\n    this._setTreeNodeId(output);\n    return output;\n  }\n\n  private _findItemByType(\n    type: GeneralActionInterface['type'],\n    items: GeneralActionInterface[],\n    depth: number = 0\n  ): GeneralActionInterface | null {\n    if (depth > 1) return null;\n    for (let item of items) {\n      if (item.type === type) {\n        return item;\n      }\n      if (item.items) {\n        const found = this._findItemByType(type, item.items, depth + 1);\n        if (found) return found;\n      }\n    }\n    return null;\n  }\n\n  private _findItemsWithItemType(items: GeneralActionInterface[]): GeneralActionInterface[] {\n    const output: GeneralActionInterface[] = [\n      ...items.filter(\n        x =>\n          x.type !== 'view' &&\n          x.type !== 'approve' &&\n          x.type !== 'disapprove' &&\n          x.type !== 'note' &&\n          x.type !== 'attachment' &&\n          x.type !== 'delete'\n      ),\n    ];\n\n    output.forEach(item => {\n      if (item.items) {\n        item.items = this._findItemsWithItemType(item.items);\n      }\n    });\n\n    return output.filter(x => x.type !== 'group' || x.items?.length > 0);\n  }\n\n  private _hasAccessPermission(item: GeneralActionInterface) {\n    return isNil(item.nodeAccessId) || this._userAccessService.userHasAccess(item.nodeAccessId);\n  }\n\n  private _filterTree(\n    items: GeneralActionInterface[],\n    predicate: (node: GeneralActionInterface) => boolean\n  ): GeneralActionInterface[] {\n    return items\n      .map(item => ({\n        ...item,\n        [propertyOf<GeneralActionInterface>('items')]: this._filterTree(\n          item.items || [],\n          predicate\n        ),\n      }))\n      .filter(item => predicate(item) || item.items.length > 0);\n  }\n\n  private _isTreeFullyEmpty(input: GeneralActionInterface[]): boolean {\n    return (\n      input.some(x => x.type !== 'group') ||\n      input.filter(x => x.type === 'group').every(item => !item.items?.length)\n    );\n  }\n\n  private _clearTreeIsSelected(input: GeneralActionInterface[]) {\n    input.forEach(item => {\n      if (item.type !== 'group') {\n        if (item.isSelected) {\n          item.isSelected = false;\n        }\n      } else if (item.items) {\n        this._clearTreeIsSelected(item.items);\n      }\n    });\n  }\n\n  private _setTreeNodeId(input: GeneralActionInterface[]) {\n    input.forEach(item => {\n      if (item.type !== 'group') {\n        if (!item.id) {\n          item.id = generateUUID();\n        }\n      } else if (item.items) {\n        this._setTreeNodeId(item.items);\n      }\n    });\n  }\n\n  private _setTreeNodeClickEvent(input: GeneralActionInterface[]) {\n    input.forEach(item => {\n      if (item.type !== 'group') {\n        if (item?.actionId) {\n          this.clickMap.set(item?.actionId, {\n            subject: new Subject<any>(),\n            event: null,\n          });\n          this.onClickResultHandler(item);\n        }\n        if (item?.isSelected) {\n          this.keepSelectedId = item.id;\n        }\n      } else if (item.items) {\n        this._setTreeNodeClickEvent(item.items);\n      }\n    });\n  }\n}\n","<section\n  class=\"sub-menu\"\n  [class.sub-menu--items-has-icon]=\"itemsHasIcon || keepSelectedRow\"\n  [class.sub-menu--selectable]=\"keepSelectedRow\"\n>\n  <ul class=\"sub-menu__list\" #listRef>\n    <ng-container *ngIf=\"searchBoxIsShow\">\n      <li\n        class=\"sub-menu__group\"\n        (click)=\"searchBoxClickHandler($event)\"\n        data-role=\"searchbox-wrap\"\n      >\n        <ui-textbox\n          [placeholder]=\"'general.search3dot' | translate\"\n          [(ngModel)]=\"keyword\"\n          (ngModelChange)=\"textChangeHandler()\"\n        ></ui-textbox>\n      </li>\n    </ng-container>\n    <ng-container *ngFor=\"let item of results; let i = index\">\n      <ng-container *ngIf=\"item.type === 'group'; else noramlTemplate\">\n        <li class=\"sub-menu__group\" *ngIf=\"item.items?.length\">\n          <ul class=\"sub-menu__list\">\n            <ng-container *ngFor=\"let subItem of item.items; let i = index\">\n              <ng-container\n                *ngTemplateOutlet=\"\n                itemTemplate;\n                context: {\n                  item: subItem,\n                  i: i,\n              }\"\n              ></ng-container>\n            </ng-container>\n          </ul>\n        </li>\n      </ng-container>\n      <ng-template #noramlTemplate>\n        <ng-container\n          *ngTemplateOutlet=\"\n          itemTemplate;\n          context: {\n            item: item,\n            i: i,\n          }\"\n        ></ng-container>\n      </ng-template>\n    </ng-container>\n    <ng-container *ngIf=\"resultIsEmpty && keyword.length > 0\">\n      <li class=\"sub-menu__empty\">\n        {{ 'general.searchEmptyMessage' | translate }}\n      </li>\n    </ng-container>\n  </ul>\n\n  <ng-template #itemTemplate let-item=\"item\" let-i=\"i\">\n    <li\n      class=\"sub-menu__item\"\n      data-role=\"item\"\n      [class.sub-menu__item--is-danger]=\"item.isDanger\"\n      [class.sub-menu__item--keep-selected]=\"item.id && keepSelectedId === item.id\"\n      [appTooltip]=\"item.tooltip\"\n      [appTooltipPosition]=\"'start'\"\n      (click)=\"onClick($event, item)\"\n    >\n      <ng-container *ngIf=\"keepSelectedRow; else iconTemplate\">\n        <span class=\"sub-menu__icon sub-menu__icon--flag\">\n          <ui-fararu-icon\n            *ngIf=\"item.id && keepSelectedId === item.id\"\n            [name]=\"'success'\"\n            [color]=\"'on-success'\"\n            [size]=\"'x1'\"\n          ></ui-fararu-icon>\n        </span>\n      </ng-container>\n      <ng-template #iconTemplate>\n        <ng-container *ngIf=\"item.icon && !item.icon.fararuIcon\">\n          <ui-icon\n            class=\"sub-menu__icon\"\n            [group]=\"item.icon.group\"\n            [name]=\"item.icon.name\"\n            [type]=\"item.icon.type\"\n            [size]=\"'x1'\"\n            [color]=\"item.isDanger ? 'danger' : 'success'\"\n          ></ui-icon>\n        </ng-container>\n\n        <ng-container *ngIf=\"item.icon?.fararuIcon\">\n          <ui-fararu-icon\n            class=\"sub-menu__icon\"\n            [name]=\"item.icon.fararuIcon.name\"\n            [size]=\"'x2'\"\n            [color]=\"item.isDanger ? 'error' : 'content-secondary'\"\n          ></ui-fararu-icon>\n        </ng-container>\n      </ng-template>\n      <span class=\"sub-menu__text\">{{ item.text }}</span>\n    </li>\n  </ng-template>\n</section>\n","import {\n  Component,\n  EventEmitter,\n  forwardRef,\n  Input,\n  OnChanges,\n  Output,\n  SimpleChanges,\n  ViewChild,\n  ViewEncapsulation,\n} from '@angular/core';\nimport {\n  ControlValueAccessor,\n  NG_VALIDATORS,\n  NG_VALUE_ACCESSOR,\n  NgModel,\n  Validator,\n  ValidatorFn,\n  AbstractControl,\n  ValidationErrors,\n} from '@angular/forms';\nimport { SizeType } from '../../../../types/size.type';\nimport { GeneralActionInterface } from '../../../../models/general-action.interface';\nimport { propertyOf } from '../../../../utils/property-of';\n\nexport interface DropdownTextInputComponentPropsInterface {\n  options?: DropdownTextInputOptionInterface[];\n  defaultDropdownValue?: string;\n  id?: string;\n  placeholder?: string;\n  size?: SizeType;\n  readonly?: string;\n  disabled?: boolean;\n  tabIndex?: string | number;\n  onlyNumber?: boolean;\n  maxlength?: number;\n  textBoxType?: string;\n  mask?: string;\n}\n\nexport interface DropdownTextInputOptionInterface\n  extends Omit<GeneralActionInterface, 'items' | 'isDanger' | 'click'> {\n  validators?: ValidatorFn[];\n}\n\nexport type DropdownTextBoxType = {\n  dropdownValue: any;\n  textBoxValue: string;\n};\n\n@Component({\n  selector: 'ui-dropdown-text-input',\n  templateUrl: './dropdown-text-input.component.html',\n  styleUrls: ['./dropdown-text-input.component.scss'],\n  encapsulation: ViewEncapsulation.None,\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => DropdownTextInputComponent),\n      multi: true,\n    },\n    {\n      provide: NG_VALIDATORS,\n      useExisting: forwardRef(() => DropdownTextInputComponent),\n      multi: true,\n    },\n  ],\n})\nexport class DropdownTextInputComponent\n  implements\n    OnChanges,\n    ControlValueAccessor,\n    Validator,\n    DropdownTextInputComponentPropsInterface\n{\n  @Input('value') _value: DropdownTextBoxType = {\n    dropdownValue: '',\n    textBoxValue: '',\n  };\n  @Input() disabled: boolean;\n  @Input() options: DropdownTextInputOptionInterface[];\n  @Input() defaultDropdownValue?: string;\n  @Input() id?: string;\n  @Input() placeholder?: string;\n  @Input() size?: SizeType = 'normal';\n  @Input() readonly?: string;\n  @Input() required?: boolean;\n  @Input() tabIndex?: string | number;\n  @Input() onlyNumber?: boolean;\n  @Input() maxlength?: number;\n  @Input() textBoxType?: string;\n  @Input() mask?: string;\n\n  @Output() changeCallback = new EventEmitter<DropdownTextBoxType>();\n  @Output() enterCallback = new EventEmitter<Event>();\n  @Output() blurCallback = new EventEmitter<Event>();\n  @Output() focusCallback = new EventEmitter<Event>();\n  @Output() keyDownCallback = new EventEmitter<Event>();\n  @ViewChild('textInput', { static: true }) txtInput: NgModel;\n  selectedDropdown?: DropdownTextInputOptionInterface;\n  subMenuItems: GeneralActionInterface[] = [];\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (\n      changes[propertyOf<DropdownTextInputComponentPropsInterface>('options')]\n    ) {\n      this.subMenuItems = this.options.map((item) => ({\n        ...item,\n        click: () => {\n          this.filterTypeChangeHandler(item);\n        },\n      }));\n    }\n    if (\n      changes[propertyOf<DropdownTextInputComponentPropsInterface>('defaultDropdownValue')]\n    ) {\n      this.initializeSelectedValue();\n    }\n  }\n\n  initializeSelectedValue(): void {\n    this.selectedDropdown = this.defaultDropdownValue\n      ? this.options?.find(opt => opt.id === this.defaultDropdownValue)\n      : this.options[0];\n    this.txtInput?.control.setValidators(this.selectedDropdown?.validators);\n    this.value.dropdownValue = this.selectedDropdown?.id;\n    this.txtInput?.control.updateValueAndValidity();\n  }\n\n  get value() {\n    return this._value;\n  }\n\n  set value(val) {\n    this._value = val;\n    this.selectedDropdown = this.options.find(\n      (item) => item?.id === val.dropdownValue\n    );\n    this.txtInput?.control.setValidators(this.selectedDropdown?.validators ?? []);\n    this.txtInput?.control.setValue(val?.textBoxValue);\n    this.txtInput?.control.updateValueAndValidity();\n  }\n\n  onChange: any = () => {};\n\n  onTouched: any = () => {};\n\n  writeValue(value: DropdownTextBoxType): void {\n    if (value) {\n      this.value = value;\n    }\n  }\n\n  registerOnChange(fn: any): void {\n    this.onChange = fn;\n    this.onChange(this.value);\n  }\n\n  registerOnTouched(fn: any): void {\n    this.onTouched = fn;\n  }\n\n  setDisabledState(isDisabled: boolean): void {\n    this.disabled = isDisabled;\n  }\n\n  filterTypeChangeHandler(item: DropdownTextInputOptionInterface): void {\n    this.value.dropdownValue = item.id;\n    this.txtInput?.control.setValidators(item?.validators);\n    this.txtInput?.control.updateValueAndValidity();\n    this.selectedDropdown = item;\n    this.changeHandler();\n  }\n\n  changeHandler() {\n    this.onChange(this.value);\n    this.changeCallback.emit(this.value);\n  }\n\n  menuClickHandler(event: Event) {\n    this.changeHandler();\n    event.stopPropagation();\n  }\n\n  validate(control: AbstractControl): ValidationErrors {\n    return this.txtInput?.errors;\n  }\n\n  enterHandler(event: Event) {\n    this.txtInput?.control.updateValueAndValidity();\n    this.enterCallback.emit(event);\n  }\n\n  blurHandler(event: Event) {\n    this.txtInput?.control.updateValueAndValidity();\n    this.onTouched();\n    this.blurCallback.emit(event);\n  }\n\n  focusHandler(event: Event) {\n    this.txtInput?.control.updateValueAndValidity();\n    this.focusCallback.emit(event);\n  }\n\n  keyDownHandler(event: Event) {\n    this.keyDownCallback.emit(event);\n  }\n}\n","<ui-dropdown #customFilterMenu>\n  <ui-sub-menu [items]=\"subMenuItems\"></ui-sub-menu>\n</ui-dropdown>\n<div class=\"dropdown-text-box\" (click)=\"menuClickHandler($event)\">\n  <ui-button\n    [title]=\"selectedDropdown?.text\"\n    [buttonType]=\"'button'\"\n    class=\"dropdown-text-box__selector\"\n    [dropdownTriggerFor]=\"customFilterMenu\"\n    [disabled]=\"disabled\"\n    varient=\"outline\"\n    color=\"primary\"\n    [size]=\"size\"\n  >\n    <ui-icon\n      class=\"dropdown-text-box__icon\"\n      style=\"display: inline-flex\"\n      [group]=\"selectedDropdown?.icon?.group\"\n      [name]=\"selectedDropdown?.icon?.name\"\n      color=\"primary\"\n      size=\"x1\"\n    ></ui-icon>\n  </ui-button>\n  <div class=\"dropdown-text-box__content\">\n    <ui-textbox\n      class=\"dropdown-text-box__element\"\n      [(ngModel)]=\"value.textBoxValue\"\n      (ngModelChange)=\"changeHandler()\"\n      (keydown.enter)=\"enterHandler($event)\"\n      (blurCallback)=\"blurHandler($event)\"\n      (focusCallback)=\"focusHandler($event)\"\n      (keyDownCallback)=\"keyDownHandler($event)\"\n      [placeholder]=\"placeholder\"\n      [mask]=\"mask\"\n      [type]=\"textBoxType\"\n      [maxlength]=\"maxlength\"\n      [disabled]=\"disabled\"\n      [readonly]=\"readonly\"\n      [required]=\"required\"\n      #textInput=\"ngModel\"\n      [onlyNumber]=\"onlyNumber\"\n      [size]=\"size\"\n      [tabIndex]=\"tabIndex\"\n    ></ui-textbox>\n  </div>\n</div>\n","import {\n  Component,\n  EventEmitter,\n  HostBinding,\n  Input,\n  OnChanges,\n  OnInit,\n  Output,\n  SimpleChanges,\n} from '@angular/core';\nimport { MessageType } from './message-config';\nimport { IconNameType } from './../../../../types/icon-name.type';\nimport { IconSizeType } from './../../../../types/icon-size.type';\nimport { ColorType } from './../../../../types/color.type';\n\n@Component({\n  selector: 'app-message',\n  templateUrl: './message.component.html',\n  styleUrls: ['./message.component.scss'],\n})\nexport class MessageComponent implements OnInit, OnChanges {\n  @Input() title?: string;\n  @Input() description?: string;\n  @Input() actionText?: string = 'بیشتر';\n  @Input() type?: MessageType;\n  @Input() iconName: IconNameType;\n  @Input() hasActionButton: boolean = true;\n  @Input() hasCloseButton: boolean = true;\n  @HostBinding('style.width')\n  @Input()\n  width: string = 'auto';\n\n  @HostBinding('style.display')\n  @Input()\n  display: string = 'block';\n  iconColor: ColorType;\n  iconSize: IconSizeType = 'x3';\n\n  @Output() actionClicked: EventEmitter<any> = new EventEmitter();\n  @Output() closeClicked: EventEmitter<any> = new EventEmitter();\n  constructor() {}\n\n  ngOnInit(): void {\n    this.manageMessageType(this.type);\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (changes['type']?.currentValue !== changes['type']?.previousValue) {\n      this.manageMessageType(changes['type'].currentValue);\n    }\n  }\n  manageMessageType(type: MessageType) {\n    switch (type) {\n      case 'success':\n        this.iconColor = 'success';\n        this.iconName ??= 'check-circle';\n        break;\n      case 'error':\n        this.iconColor = 'error';\n        this.iconName ??= 'error';\n        break;\n      case 'info':\n        this.iconColor = 'primary';\n        this.iconName ??= 'info';\n        break;\n      case 'warning':\n        this.iconColor = 'warning';\n        this.iconName ??= 'warning';\n        break;\n    }\n  }\n\n  closeMessage(e: MouseEvent) {\n    this.closeClicked.emit();\n  }\n\n  actionClick(e: MouseEvent) {\n    this.actionClicked.emit(e);\n  }\n}\n","<section\n  class=\"message\"\n  [class.message--success]=\"type === 'success'\"\n  [class.message--error]=\"type === 'error'\"\n  [class.message--warning]=\"type === 'warning'\"\n  [class.message--info]=\"type === 'info'\"\n>\n  <ui-fararu-icon\n    class=\"message__icon\"\n    [name]=\"iconName\"\n    [size]=\"iconSize\"\n    [color]=\"iconColor\"\n  ></ui-fararu-icon>\n  <div class=\"message__content\">\n    <span class=\"message__title\">\n      {{ title }}\n    </span>\n\n    <span class=\"message__description\">\n      {{ description }}\n    </span>\n  </div>\n  <ui-button\n    *ngIf=\"hasActionButton\"\n    varient=\"outline\"\n    [buttonType]=\"'button'\"\n    size=\"normal\"\n    [color]=\"'secondary'\"\n    class=\"message__actions\"\n    (click)=\"actionClick($event)\"\n    >{{ actionText }}</ui-button\n  >\n  <ui-fararu-icon\n    *ngIf=\"hasCloseButton\"\n    type=\"button\"\n    size=\"x1\"\n    class=\"message__close-button\"\n    name=\"close\"\n    (click)=\"closeMessage($event)\"\n  ></ui-fararu-icon>\n</section>\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport { ConfigSelectors } from '../store/selectors/config.selectors';\nimport { AppState } from '../store/app-state.interface';\nimport { AppConfigService } from './../services/app-config.service';\n\n@Pipe({\n  name: 'accessNode',\n})\nexport class AccessNodePipe implements PipeTransform {\n  accessNodeIds: string[] = [];\n  constructor(\n    private appState$: Store<AppState>,\n    private readonly _appConfigService: AppConfigService\n  ) {\n    this.appState$\n      .select(ConfigSelectors.getAccessNodeIds)\n      .subscribe(accessNodeIds => (this.accessNodeIds = accessNodeIds));\n  }\n  transform(accessNodeId?: string): boolean {\n    if (this._appConfigService.config.ignoreAccessNode) return true;\n    return accessNodeId ? this.accessNodeIds.some(x => x == accessNodeId) : true;\n  }\n}\n","import {\n  Component,\n  EventEmitter,\n  Input,\n  OnChanges,\n  OnDestroy,\n  Output,\n  SimpleChanges,\n} from '@angular/core';\nimport {\n  ClickSubscription,\n  GeneralActionButtonInterface,\n} from '../../../../models/general-action.interface';\n\nimport {\n  Observable,\n  Subject,\n  Subscription,\n  catchError,\n  concatMap,\n  exhaustMap,\n  mergeMap,\n  of,\n  switchMap,\n} from 'rxjs';\n\n@Component({\n  selector: 'ui-toolbar',\n  templateUrl: './toolbar.component.html',\n  styleUrls: ['./toolbar.component.scss'],\n})\nexport class ToolbarComponent implements OnChanges, OnDestroy {\n  @Input() actions?: GeneralActionButtonInterface[] = [];\n  @Input() sideActions?: GeneralActionButtonInterface[] = [];\n  @Input() args?: any;\n  @Input() hideReloadButton?: boolean;\n  @Input() toolbarTitle : string;\n\n  @Output() reloadCallback = new EventEmitter<Event>();\n\n  clickMap = new Map<string, ClickSubscription>();\n\n  private _subscriptions: Subscription = new Subscription();\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (changes['headerCustomActions']) {\n      this.clickMap = new Map<string, ClickSubscription>();\n      this.actions?.forEach(customAction => {\n        if (customAction?.actionId) {\n          this.clickMap.set(customAction?.actionId, {\n            subject: new Subject<any>(),\n            event: null,\n            selectedRow: null,\n          });\n          this._clickResultHandler(customAction);\n        }\n      });\n    }\n  }\n  ngOnDestroy() {\n    this._subscriptions.unsubscribe();\n  }\n\n  clickHandler(event: Event, action: GeneralActionButtonInterface): void {\n    if (!action?.actionId) {\n      action?.click && action.click(event, this.args);\n    } else {\n      action.disabled = action.mapFunction === 'disabled';\n      try {\n        this.clickMap.get(action.actionId).event = event;\n        this.clickMap.get(action.actionId).selectedRow = this.args;\n        this.clickMap.get(action.actionId).subject.next(this.clickMap.get(action.actionId));\n      } catch (e) {\n        console.log('the header actions are not properly initialized.');\n      }\n    }\n  }\n\n  private _clickResultHandler(action: GeneralActionButtonInterface): void {\n    switch (action?.mapFunction) {\n      case 'switch': {\n        this._subscriptions.add(\n          this.clickMap\n            .get(action.actionId)\n            .subject.pipe(\n              switchMap((data: ClickSubscription) =>\n                (action.click(data.event, data.selectedRow) as Observable<any>).pipe(\n                  catchError(error => {\n                    action.onFailure(error);\n                    return of(null);\n                  })\n                )\n              )\n            )\n            .subscribe({\n              next: (response: any) => {\n                if (response !== null) {\n                  action.onSuccess(response);\n                }\n              },\n            })\n        );\n        break;\n      }\n      case 'concat': {\n        this._subscriptions.add(\n          this.clickMap\n            .get(action.actionId)\n            .subject.pipe(\n              concatMap((data: ClickSubscription) =>\n                (action.click(data.event, data.selectedRow) as Observable<any>).pipe(\n                  catchError(error => {\n                    action.onFailure(error);\n                    return of(null);\n                  })\n                )\n              )\n            )\n            .subscribe({\n              next: (response: any) => {\n                if (response !== null) {\n                  action.onSuccess(response);\n                }\n              },\n            })\n        );\n        break;\n      }\n      case 'merge': {\n        this._subscriptions.add(\n          this.clickMap\n            .get(action.actionId)\n            .subject.pipe(\n              mergeMap((data: ClickSubscription) =>\n                (action.click(data.event, data.selectedRow) as Observable<any>).pipe(\n                  catchError(error => {\n                    action.onFailure(error);\n                    return of(null);\n                  })\n                )\n              )\n            )\n            .subscribe({\n              next: (response: any) => {\n                if (response !== null) {\n                  action.onSuccess(response);\n                }\n              },\n            })\n        );\n        break;\n      }\n      case 'exhaust': {\n        this._subscriptions.add(\n          this.clickMap\n            .get(action.actionId)\n            .subject.pipe(\n              exhaustMap((data: ClickSubscription) =>\n                (action.click(data.event, data.selectedRow) as Observable<any>).pipe(\n                  catchError(error => {\n                    action.onFailure(error);\n                    return of(null);\n                  })\n                )\n              )\n            )\n            .subscribe({\n              next: (response: any) => {\n                if (response !== null) {\n                  action.onSuccess(response);\n                }\n              },\n            })\n        );\n        break;\n      }\n      case 'disabled': {\n        this._subscriptions.add(\n          this.clickMap\n            .get(action.actionId)\n            .subject.pipe(\n              exhaustMap((data: ClickSubscription) =>\n                (action.click(data.event, data.selectedRow) as Observable<any>).pipe(\n                  catchError(error => {\n                    action.onFailure(error);\n                    action.disabled = false;\n                    return of(null);\n                  })\n                )\n              )\n            )\n            .subscribe({\n              next: (response: any) => {\n                if (response !== null) {\n                  action.onSuccess(response);\n                  action.disabled = false;\n                }\n              },\n            })\n        );\n        break;\n      }\n    }\n  }\n}\n","<section class=\"toolbar\">\n  <span class=\"toolbar__title\" *ngIf=\"toolbarTitle\">{{ toolbarTitle }}</span>\n  <ng-container *ngIf=\"actions?.length > 0\">\n    <ng-container *ngFor=\"let action of actions\">\n      <ng-container *ngIf=\"action.items?.length > 0; else buttonTemplate\">\n        <ui-button\n          *ngIf=\"action?.nodeAccessId | accessNode\"\n          [tabIndex]=\"1\"\n          [dropdownTriggerFor]=\"moreMenu\"\n          [varient]=\"action.varient || 'fill'\"\n          [appShortcut]=\"action.shortcut\"\n          [color]=\"action.color || 'secondary'\"\n          [appTooltip]=\"action.tooltip\"\n          [appTooltipPosition]=\"'bottom'\"\n          [isIcon]=\"(action.fararuIcon || action.icon) && !action.text\"\n          [form]=\"action.formAttr\"\n          [idAttr]=\"action.idAttr\"\n        >\n          <ui-fararu-icon\n            *ngIf=\"action.fararuIcon; else oldIconTemplate\"\n            [name]=\"action.fararuIcon.name\"\n            [size]=\"action.fararuIcon.size\"\n            [color]=\"action.fararuIcon.color\"\n          ></ui-fararu-icon>\n          <ng-template #oldIconTemplate>\n            <ui-icon\n              *ngIf=\"action.icon\"\n              [group]=\"action.icon.group\"\n              [name]=\"action.icon.name\"\n              [type]=\"action.icon.type\"\n            ></ui-icon>\n          </ng-template>\n          {{ action.text }}\n          <ui-icon *ngIf=\"action.text\" group=\"navigation\" name=\"expand_more\"></ui-icon>\n        </ui-button>\n        <ui-dropdown #moreMenu [tabIndex]=\"-1\" [hidden]=\"true\">\n          <ui-sub-menu [items]=\"action.items\" [args]=\"args\"></ui-sub-menu>\n        </ui-dropdown>\n      </ng-container>\n      <ng-template #buttonTemplate>\n        <ui-button\n          [tabIndex]=\"1\"\n          *ngIf=\"action?.nodeAccessId | accessNode\"\n          [varient]=\"action.varient || 'fill'\"\n          [color]=\"action.color || 'secondary'\"\n          [appShortcut]=\"action.shortcut\"\n          [appTooltip]=\"action.tooltip\"\n          [appTooltipPosition]=\"'bottom'\"\n          [disabled]=\"!!action.disabled\"\n          [for]=\"action.for\"\n          [form]=\"action.formAttr\"\n          [idAttr]=\"action.idAttr\"\n          [tagName]=\"action.for ? 'label' : 'button'\"\n          [isIcon]=\"(action.fararuIcon || action.icon) && !action.text\"\n          (clickCallback)=\"clickHandler($event, action)\"\n        >\n          <ui-fararu-icon\n            *ngIf=\"action.fararuIcon; else oldIconTemplate\"\n            [name]=\"action.fararuIcon.name\"\n            [size]=\"action.fararuIcon.size\"\n            [color]=\"action.fararuIcon.color\"\n          ></ui-fararu-icon>\n          <ng-template #oldIconTemplate>\n            <ui-icon\n              *ngIf=\"action.icon\"\n              [group]=\"action.icon.group\"\n              [name]=\"action.icon.name\"\n              [type]=\"action.icon.type\"\n            ></ui-icon></ng-template\n          >{{ action.text }}</ui-button\n        >\n      </ng-template>\n    </ng-container>\n  </ng-container>\n  <section class=\"toolbar__side-col\">\n    <ui-button\n      *ngIf=\"reloadCallback.observed && !hideReloadButton\"\n      [isIcon]=\"true\"\n      [varient]=\"'text'\"\n      [color]=\"'secondary'\"\n      (clickCallback)=\"reloadCallback.emit($event)\"\n    >\n      <ui-fararu-icon [name]=\"'reload'\"></ui-fararu-icon>\n    </ui-button>\n    <ng-container *ngIf=\"sideActions?.length > 0\">\n      <ng-container *ngFor=\"let action of sideActions\">\n        <ng-container *ngIf=\"action.items?.length > 0; else buttonTemplate\">\n          <ui-button\n            *ngIf=\"action?.nodeAccessId | accessNode\"\n            [tabIndex]=\"1\"\n            [dropdownTriggerFor]=\"moreMenu\"\n            [varient]=\"action.varient || 'text'\"\n            [appShortcut]=\"action.shortcut\"\n            [color]=\"action.color || 'secondary'\"\n            [appTooltip]=\"action.tooltip\"\n            [appTooltipPosition]=\"'bottom'\"\n            [isIcon]=\"(action.fararuIcon || action.icon) && !action.text\"\n            [form]=\"action.formAttr\"\n            [idAttr]=\"action.idAttr\"\n          >\n            <ui-fararu-icon\n              *ngIf=\"action.fararuIcon; else oldIconTemplate\"\n              [name]=\"action.fararuIcon.name\"\n              [size]=\"action.fararuIcon.size\"\n              [color]=\"action.fararuIcon.color\"\n            ></ui-fararu-icon>\n            <ng-template #oldIconTemplate>\n              <ui-icon\n                *ngIf=\"action.icon\"\n                [group]=\"action.icon.group\"\n                [name]=\"action.icon.name\"\n                [type]=\"action.icon.type\"\n              ></ui-icon>\n            </ng-template>\n            {{ action.text }}\n            <ui-icon *ngIf=\"action.text\" group=\"navigation\" name=\"expand_more\"></ui-icon>\n          </ui-button>\n          <ui-dropdown #moreMenu [tabIndex]=\"-1\" [hidden]=\"true\">\n            <ui-sub-menu [items]=\"action.items\" [args]=\"args\"></ui-sub-menu>\n          </ui-dropdown>\n        </ng-container>\n        <ng-template #buttonTemplate>\n          <ui-button\n            [tabIndex]=\"1\"\n            *ngIf=\"action?.nodeAccessId | accessNode\"\n            [varient]=\"action.varient || 'text'\"\n            [color]=\"action.color || 'secondary'\"\n            [appShortcut]=\"action.shortcut\"\n            [appTooltip]=\"action.tooltip\"\n            [appTooltipPosition]=\"'bottom'\"\n            [disabled]=\"!!action.disabled\"\n            [isIcon]=\"(action.fararuIcon || action.icon) && !action.text\"\n            [for]=\"action.for\"\n            [form]=\"action.formAttr\"\n            [idAttr]=\"action.idAttr\"\n            [tagName]=\"action.for ? 'label' : 'button'\"\n            (clickCallback)=\"clickHandler($event, action)\"\n          >\n            <ui-fararu-icon\n              *ngIf=\"action.fararuIcon; else oldIconTemplate\"\n              [name]=\"action.fararuIcon.name\"\n              [size]=\"action.fararuIcon.size\"\n              [color]=\"action.fararuIcon.color\"\n            ></ui-fararu-icon>\n            <ng-template #oldIconTemplate>\n              <ui-icon\n                *ngIf=\"action.icon\"\n                [group]=\"action.icon.group\"\n                [name]=\"action.icon.name\"\n                [type]=\"action.icon.type\"\n              ></ui-icon></ng-template\n            >{{ action.text }}</ui-button\n          >\n        </ng-template>\n      </ng-container>\n    </ng-container>\n  </section>\n</section>\n","import { ComponentRef, Injectable, ViewContainerRef } from '@angular/core';\nimport { MessageComponent } from './message.component';\nimport { MessageOptionType, MessageType } from './message-config';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class MessageService {\n  constructor() {}\n\n  notif(\n    viewContainerRef: ViewContainerRef,\n    messageType: MessageType,\n    options: MessageOptionType\n  ): ComponentRef<MessageComponent> {\n    if (options?.override) {\n      viewContainerRef.clear();\n    }\n\n    let componentref: ComponentRef<MessageComponent> =\n      viewContainerRef.createComponent(MessageComponent);\n    componentref.instance.type = messageType ?? 'success';\n    componentref.instance.title = options?.title;\n    componentref.instance.description = options?.description;\n    componentref.instance.iconName = options.iconName;\n    componentref.instance.actionText = options.actionText ?? 'بیشتر';\n    (componentref.instance.hasActionButton = options.hasActionButton),\n      (componentref.instance.hasCloseButton = options.hasCloseButton),\n      (componentref.instance.width = options.width ?? 'auto');\n    return componentref;\n  }\n}\n","import { Component, Input } from '@angular/core';\n\n@Component({\n  selector: 'ui-section-title',\n  templateUrl: './section-title.component.html',\n  styleUrl: './section-title.component.scss'\n})\nexport class SectionTitleComponent {\n  @Input() title: string = 'این یک تایتل تستی است';\n\n}\n","<section class=\"general-section\">\n    <p class=\"general-section__title\">{{title}}</p>\n    <section class=\"general-section__content\">\n        <ng-content></ng-content>\n    </section>\n</section>\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { convertPersianCharsToArabic, convertPersianToEnglishNumbers } from './../utils/lang-utils';\n\n@Pipe({\n  name: 'highlightKeyword',\n})\nexport class HighlightKeywordPipe implements PipeTransform {\n  transform(value: string, keyword: string): string {\n    if (!keyword) return value;\n    const regex = new RegExp(`(${keyword})`, 'gi');\n    const universalRegex = new RegExp(\n      `(${convertPersianCharsToArabic(convertPersianToEnglishNumbers(keyword))})`,\n      'gi'\n    );\n    return universalRegex.test(value)\n      ? value.replace(universalRegex, `<span class=\"highlight\">$1</span>`)\n      : value.replace(regex, `<span class=\"highlight\">$1</span>`);\n    // return value.replace(regex, `<span class=\"highlight\">$1</span>`);\n  }\n}\n","import {\n  AfterViewInit,\n  Component,\n  ElementRef,\n  EventEmitter,\n  Input,\n  OnChanges,\n  OnInit,\n  Output,\n  SimpleChanges,\n  TemplateRef,\n  ViewChild,\n  ViewEncapsulation,\n} from '@angular/core';\nimport { TreeNodeInterface } from '../../../../models/tree-data.interface';\nimport { ArrayElement } from '../../../../types/utility-types';\nimport { GeneralActionInterface } from '../../../../models/general-action.interface';\nimport { propertyOf } from '../../../../utils/property-of';\nimport { isNil } from '../../../../utils/is-nil';\nimport { map, Subject } from 'rxjs';\nimport { TextboxComponent } from '../../../ui/textbox/textbox.component';\nimport { FararuToastService } from '../../../toast/fararu-toast.service';\nimport { TranslateService } from '@ngx-translate/core';\nimport {\n  convertPersianCharsToArabic,\n  convertPersianToEnglishNumbers,\n} from './../../../../utils/lang-utils';\n\ntype CheckboxStateType = 'checked' | 'unchecked' | 'indeterminate';\n\n@Component({\n  selector: 'ui-tree',\n  templateUrl: './tree.component.html',\n  styleUrls: ['./tree.component.scss'],\n  encapsulation: ViewEncapsulation.None,\n})\nexport class TreeComponent implements OnInit, OnChanges, AfterViewInit {\n  @Input() nodes: TreeNodeInterface[] | (any[] & []);\n  @Input() idBinding?: string;\n  @Input() titleBinding?: string;\n  @Input() expandedBinding?: string;\n  @Input() childrenBinding?: string;\n  @Input() moreMenuItems?: GeneralActionInterface[];\n  @Input() expandBySelectNode?: boolean;\n  @Input() expandDepth?: number = 0;\n  @Input() checkable?: boolean;\n  @Input() resetStateByNodesChange?: boolean;\n  @Input() checkedNodes: TreeNodeInterface[];\n  @Input() selectedNode?: ArrayElement<typeof this.nodes>;\n  @Input() sideIconTemplate!: TemplateRef<any>;\n  @Input() hasGutter?: boolean;\n  @Input() showLoading?: boolean;\n  @Input() showEditButton?: boolean;\n\n  @Output() selectNodeCallback = new EventEmitter<ArrayElement<typeof this.nodes>>();\n  @Output() checkCallback = new EventEmitter<ArrayElement<typeof this.nodes>[]>();\n  @Output() editCallback = new EventEmitter<ArrayElement<typeof this.nodes>[]>();\n\n  @ViewChild('searchboxTextbox') searchboxTextbox: TextboxComponent;\n\n  expandedNodesDic: { [key: TreeNodeInterface['id']]: boolean } = {};\n  checkedNodesDic: { [key: TreeNodeInterface['id']]: CheckboxStateType } = {};\n\n  hasIcon?: boolean;\n  searchedKeyword$ = new Subject<string>();\n  searchedKeyword?: string;\n  lastSearchedKeyword?: string;\n  isSearchMode?: boolean;\n  filteredNodes?: typeof this.nodes;\n  wrapperElement?: HTMLDivElement;\n\n  private _lastExpandedNodesDic: typeof this.expandedNodesDic;\n\n  constructor(\n    private readonly _elementRef: ElementRef<HTMLDivElement>,\n    private readonly _toastService: FararuToastService,\n    private readonly _translateService: TranslateService\n  ) {}\n\n  ngOnInit(): void {\n    this.wrapperElement = this._elementRef.nativeElement.firstChild as HTMLDivElement;\n    this.searchedKeyword$.pipe(map(x => x?.trim())).subscribe(keyword => {\n      this.handleKeywordChange(keyword);\n    });\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (changes[propertyOf<TreeComponent>('nodes')]) {\n      if (this.resetStateByNodesChange) {\n        this.expandedNodesDic = {};\n      }\n      this.checkedNodesDic = {};\n      this._scanNode(this.nodes, (scanedNode, depth, parent) => {\n        const key = this._getNodeKey(scanedNode);\n        if (!this.hasIcon && scanedNode.icon) {\n          this.hasIcon = true;\n        }\n        if (\n          scanedNode.expanded ||\n          scanedNode[this.expandedBinding] ||\n          (!isNil(this.expandDepth) && depth <= this.expandDepth)\n        ) {\n          this.expandedNodesDic[key] = true;\n        }\n\n        if (this.selectedNode && key == this._getNodeKey(this.selectedNode)) {\n          this.expandedNodesDic[this._getNodeKey(parent)] = true;\n        }\n\n        if (this.checkedNodes?.some(x => this._getNodeKey(x) == key)) {\n          this.checkedNodesDic[key] = 'checked';\n          this.nodes.forEach(item => {\n            this._updateNodeCheckboxState(item, scanedNode);\n          });\n        }\n      });\n    }\n  }\n\n  ngAfterViewInit(): void {\n    if (this.selectedNode) {\n      setTimeout(() => {\n        this.wrapperElement\n          ?.querySelector(`li[data-key=\"${this._getNodeKey(this.selectedNode)}\"]`)\n          ?.scrollIntoView({ behavior: 'smooth', block: 'nearest' });\n      }, 0);\n    }\n  }\n\n  handleToggleNodeButtonClick(data: TreeNodeInterface, event: Event) {\n    event.stopPropagation();\n    this._toggleNode(data);\n  }\n\n  handleNodeClick(data: TreeNodeInterface, event: Event) {\n    if (this.expandBySelectNode) {\n      this._toggleNode(data);\n    }\n    if (this._getNodeKey(this.selectedNode) === this._getNodeKey(data)) {\n      return;\n    }\n    this.selectedNode = data;\n    this.selectNodeCallback.emit(data);\n  }\n\n  handleCheckboxCheck(data: TreeNodeInterface, state: boolean | number) {\n    this._scanNode([data], scanedNode => {\n      const key = this._getNodeKey(scanedNode);\n      if (state) {\n        this.checkedNodesDic[key] = 'checked';\n      } else {\n        this.checkedNodesDic[key] = 'unchecked';\n      }\n    });\n\n    this.nodes.forEach(item => {\n      this._updateNodeCheckboxState(item, data);\n    });\n\n    const checkedKeys = Object.entries(this.checkedNodesDic)\n      .filter(([_, status]) => status === 'checked')\n      .map(([key]) => key);\n\n    const checkedNodes: ArrayElement<typeof this.nodes>[] = [];\n    if (checkedKeys.length) {\n      this._scanNode(this.nodes, scannedNode => {\n        const key = this._getNodeKey(scannedNode);\n        if (checkedKeys.some(x => x == key)) {\n          checkedNodes.push(scannedNode);\n        }\n      });\n    }\n\n    this.checkCallback.emit(checkedNodes);\n  }\n\n  handleKeywordChange(keyword: string) {\n    this.searchedKeyword = keyword;\n  }\n\n  handleKeywordKeyDown(event: Event) {\n    switch ((event as KeyboardEvent).key) {\n      case 'Escape':\n        this._clearSearch();\n        break;\n\n      case 'Enter':\n        this.handleKeywordTextboxEnter();\n        break;\n    }\n  }\n\n  handleKeywordTextboxEnter() {\n    const keyword = this.searchedKeyword || '';\n    if (!keyword.length && this.isSearchMode) {\n      this._clearSearch();\n      return;\n    }\n    const keywordLengthLimit = 2;\n    if (keyword.length < keywordLengthLimit) {\n      this._toastService.show({\n        type: 'warning',\n        text: this._translateService.instant('general.searchKeywordLengthLimitMessage', {\n          length: keywordLengthLimit,\n        }),\n      });\n      return;\n    }\n    if (!this.isSearchMode) {\n      this._lastExpandedNodesDic = { ...this.expandedNodesDic };\n      this.isSearchMode = true;\n    }\n    this.lastSearchedKeyword = keyword;\n    this.filteredNodes = this._findKeywordInTree(keyword, this.nodes);\n  }\n\n  handleClearButtonClick() {\n    this._clearSearch();\n  }\n\n  private _toggleNode(data: TreeNodeInterface) {\n    this.expandedNodesDic[this._getNodeKey(data)] = !this.expandedNodesDic[this._getNodeKey(data)];\n  }\n\n  private _clearSearch() {\n    this.searchedKeyword$.next('');\n    this.lastSearchedKeyword = null;\n    this.isSearchMode = false;\n    this.searchboxTextbox.focus();\n    this.expandedNodesDic = this._lastExpandedNodesDic;\n  }\n\n  private _scanNode(\n    nodes: typeof this.nodes,\n    onScan: (\n      scanedNode: ArrayElement<typeof this.nodes>,\n      depth: number,\n      parent?: ArrayElement<typeof this.nodes>\n    ) => boolean | void,\n    depth: number = 0,\n    parent?: ArrayElement<typeof this.nodes>\n  ) {\n    for (let i = 0, length = nodes?.length || 0; i < length; i++) {\n      const item = nodes[i];\n      const res = onScan(item, depth, parent);\n      if (res === true) break;\n      const children: typeof this.nodes = item.children || item[this.childrenBinding];\n      if (children?.length) {\n        this._scanNode(children, onScan, depth + 1, item);\n      }\n    }\n  }\n\n  private _updateNodeCheckboxState(\n    node: TreeNodeInterface,\n    excludedNode?: TreeNodeInterface\n  ): CheckboxStateType {\n    const key = this._getNodeKey(node);\n    if (excludedNode && this._getNodeKey(excludedNode) === key) {\n      return this.checkedNodesDic[key];\n    }\n    const children: TreeNodeInterface[] = node.children || node[this.childrenBinding];\n    const length = children?.length;\n\n    if (length) {\n      const results: CheckboxStateType[] = [];\n      children.forEach(item => {\n        const res = this._updateNodeCheckboxState(item, excludedNode);\n        if (res) {\n          this.checkedNodesDic[this._getNodeKey(item)] = res;\n        }\n        results.push(res);\n      });\n\n      const items = results.filter(x => x === 'checked' || x === 'indeterminate');\n      if (items.length > 0) {\n        const checkedItems = items.filter(x => x === 'checked');\n        if (checkedItems.length === length) {\n          this.checkedNodesDic[key] = 'checked';\n        } else {\n          this.checkedNodesDic[key] = 'indeterminate';\n        }\n      } else {\n        this.checkedNodesDic[key] = 'unchecked';\n      }\n    }\n    return this.checkedNodesDic[key];\n  }\n\n  private _findKeywordInTree(keyword: string, nodes: typeof this.nodes): typeof this.nodes {\n    const output: typeof this.nodes = [];\n    if (!keyword.length) return output;\n\n    nodes.forEach(item => {\n      const title: string = this.convertTextToUniversal(\n        this.titleBinding ? item[this.titleBinding] : item.title\n      )?.toLowerCase();\n      const hasKeyword = title\n        ?.toLowerCase()\n        .includes(this.convertTextToUniversal(keyword).toLowerCase());\n      const children = this.childrenBinding ? item[this.childrenBinding] : item.children;\n\n      if (children?.length) {\n        const clonedItem = {\n          ...item,\n          [this.childrenBinding || propertyOf<TreeNodeInterface>('children')]: [],\n        };\n        const filteredSubMenus = this._findKeywordInTree(keyword, children);\n\n        if (filteredSubMenus.length || hasKeyword) {\n          this.expandedNodesDic[this._getNodeKey(clonedItem)] = true;\n          clonedItem[this.childrenBinding || propertyOf<TreeNodeInterface>('children')] =\n            filteredSubMenus;\n          output.push(clonedItem);\n        }\n      } else if (hasKeyword) {\n        output.push(item);\n      }\n    });\n\n    return output;\n  }\n\n  private _getNodeKey(node: ArrayElement<typeof this.nodes>) {\n    if (!node) return;\n    return this.idBinding ? node[this.idBinding] : node.id;\n  }\n\n  private convertTextToUniversal(input?: string): string {\n    if (!input) return input;\n    return convertPersianCharsToArabic(convertPersianToEnglishNumbers(input));\n  }\n}\n","<section class=\"fararu-tree\">\n  <ui-spinner [show]=\"showLoading\"></ui-spinner>\n  <section class=\"fararu-tree__container\">\n    <header class=\"fararu-tree__header\" [class.fararu-tree__header--has-gutter]=\"hasGutter\">\n      <div class=\"fararu-tree__searchbox\">\n        <ui-textbox\n          #searchboxTextbox\n          [placeholder]=\"'جستجو...'\"\n          [ngModel]=\"searchedKeyword$ | async\"\n          (ngModelChange)=\"searchedKeyword$.next($event)\"\n          (keyDownCallback)=\"handleKeywordKeyDown($event)\"\n        ></ui-textbox>\n        <ui-fararu-icon\n          class=\"fararu-tree__clear-button\"\n          [class.fararu-tree__clear-button--show]=\"isSearchMode\"\n          [name]=\"'close'\"\n          [size]=\"'x1'\"\n          (click)=\"handleClearButtonClick()\"\n        ></ui-fararu-icon>\n      </div>\n    </header>\n    <ul class=\"fararu-tree__list\" [class.fararu-tree__list--has-gutter]=\"hasGutter\">\n      @if (isSearchMode){ @if (filteredNodes?.length){ @for (item of filteredNodes; track $index) {\n      <ng-container *ngTemplateOutlet=\"nodeTemplate; context: { item: item }\"></ng-container>\n      } }@else {\n      <li\n        class=\"fararu-tree__empty\"\n        [innerHTML]=\"\n          'general.searchKeywordEmptyMessage' | translate : { keyword: lastSearchedKeyword }\n        \"\n      ></li>\n      } } @else{ @if (nodes?.length){ @for (item of nodes; track $index) {\n      <ng-container *ngTemplateOutlet=\"nodeTemplate; context: { item: item }\"></ng-container>\n      } }@else if (nodes?.length === 0){\n      <li class=\"fararu-tree__empty\" [innerHTML]=\"'general.searchEmptyMessage' | translate\"></li>\n      } }\n    </ul>\n  </section>\n</section>\n\n<ng-template #nodeTemplate let-item=\"item\">\n  <li class=\"fararu-tree__item\" [attr.data-key]=\"idBinding ? item[idBinding] : item.id\">\n    <button\n      class=\"fararu-tree__button\"\n      [class.fararu-tree__button--selected]=\"\n        (idBinding ? selectedNode?.[idBinding] : selectedNode?.id) === (idBinding ? item[idBinding] : item.id)\n      \"\n      (click)=\"handleNodeClick(item, $event)\"\n    >\n      @if ((childrenBinding ? item[childrenBinding] :item.children)?.length) {\n      <ui-fararu-icon\n        class=\"fararu-tree__button-icon\"\n        [name]=\"expandedNodesDic[idBinding ? item[idBinding] : item.id] ? 'remove' : 'plus'\"\n        [size]=\"'x1'\"\n        [color]=\"'content-secondary'\"\n        (click)=\"handleToggleNodeButtonClick(item, $event)\"\n      ></ui-fararu-icon>\n      } @else {\n      <span class=\"fararu-tree__button-icon fararu-tree__button-icon--leaf\"></span>\n      } @if (checkable){\n      <span (click)=\"$event.stopPropagation()\">\n        <ui-checkbox\n          [checked]=\"checkedNodesDic[idBinding ? item[idBinding] : item.id] === 'checked'\"\n          [indeterminate]=\"\n            checkedNodesDic[idBinding ? item[idBinding] : item.id] === 'indeterminate'\n          \"\n          (onChangeValue)=\"handleCheckboxCheck(item, $event)\"\n        ></ui-checkbox>\n      </span>\n      } @if(hasIcon){\n      <ui-fararu-icon\n        [name]=\"item.icon || 'docs'\"\n        [size]=\"'x1'\"\n        [color]=\"'content-secondary'\"\n      ></ui-fararu-icon>\n      }\n      <span class=\"fararu-tree__indicator\"></span>\n      <strong\n        class=\"fararu-tree__button-text\"\n        [innerHTML]=\"\n          (titleBinding ? item[titleBinding] : item.title)\n            | highlightKeyword : (isSearchMode ? lastSearchedKeyword : null)\n        \"\n      ></strong>\n      @if(sideIconTemplate){\n      <span class=\"fararu-tree__custom-side-icon\">\n        <ng-container *ngTemplateOutlet=\"sideIconTemplate; context: { $implicit: item }\">\n        </ng-container>\n      </span>\n      } @if(moreMenuItems?.length){\n      <ui-fararu-icon\n        class=\"fararu-tree__more-button\"\n        [dropdownTriggerFor]=\"dropdown\"\n        [name]=\"'arrow-bottom'\"\n        [size]=\"'x2'\"\n      ></ui-fararu-icon>\n      <ui-dropdown #dropdown [contentTemplateRef]=\"moreMenuTemplate\" [data]=\"item\"></ui-dropdown>\n      } @if(showEditButton && editCallback.observed){\n      <ui-fararu-icon\n        class=\"fararu-tree__edit-button\"\n        [name]=\"'edit-pen'\"\n        [size]=\"'x2'\"\n        (click)=\"$event.stopPropagation(); editCallback.emit(item)\"\n      ></ui-fararu-icon>\n      }\n    </button>\n    @if ((childrenBinding ? item[childrenBinding] :item.children)?.length) {\n    <ul\n      *ngIf=\"expandedNodesDic[idBinding ? item[idBinding] : item.id]\"\n      class=\"fararu-tree__list\"\n      [class.fararu-tree__list--show]=\"expandedNodesDic[idBinding ? item[idBinding] : item.id]\"\n    >\n      @for (childItem of (childrenBinding ? item[childrenBinding] :item.children); track $index) {\n      <ng-container *ngTemplateOutlet=\"nodeTemplate; context: { item: childItem }\"></ng-container>\n      }\n    </ul>\n    }\n  </li>\n</ng-template>\n\n<ng-template #moreMenuTemplate let-data=\"data\">\n  <ui-sub-menu [items]=\"moreMenuItems\" [args]=\"data\"></ui-sub-menu>\n</ng-template>\n","export enum GridColumnAggregationTypes {\n  None = 0,\n  Sum = 1,\n  Count = 2,\n  Average = 3,\n  Min = 5,\n  Max = 4,\n}\n","export const findTreeItemPath = (\n  root: any,\n  value: any,\n  bindItems: string,\n  bindValue: string,\n  bindLabel: string\n): string[] | null => {\n  if (root[bindValue] == value) {\n    return [];\n  } else if (Array.isArray(root[bindItems])) {\n    for (let i = 0; i < root[bindItems].length; i++) {\n      const path = findTreeItemPath(root[bindItems][i], value, bindItems, bindValue, bindLabel);\n      if (path !== null) {\n        path.unshift(root[bindItems][i][bindLabel]);\n        return path;\n      }\n    }\n  }\n  return null;\n};\n\nexport const findTreeItemPathString = (\n  root: any,\n  value: any,\n  bindItems: string,\n  bindValue: string,\n  bindLabel: string\n): string | null => {\n  return findTreeItemPath(root, value, bindItems, bindValue, bindLabel)?.join(' > ') || null;\n};\n","import { AbstractControl, FormControl, FormGroup, ValidatorFn, Validators } from '@angular/forms';\nimport { GridColumnAggregationTypes } from '../../../../enums/grid-column-aggregation-types';\nimport {\n  DataGridColumnInterface,\n  DataGridEditConfigValidatorInterface,\n} from '../../../../models/data-grid-column.interface';\nimport { SelectOptionInterface } from '../../../../models/select-option.interface';\nimport { findTreeItemPathString } from '../../../../utils/find-tree-item-path';\nimport { propertyOf } from '../../../../utils/property-of';\nimport { isNil } from './../../../../utils/is-nil';\nimport { DataGridComponent } from './data-grid.component';\n\nclass DataGridComponentHelpers {\n  static async getValidationMessage(\n    column: DataGridColumnInterface,\n    control: AbstractControl,\n    row: any\n  ): Promise<string> {\n    const validators =\n      typeof column.editConfig.validators == 'function'\n        ? await column.editConfig.validators({\n            value: control.value,\n            row,\n            instance: null,\n          })\n        : column.editConfig.validators;\n\n    return this.getValidationMessageByValidators(column, control, validators);\n  }\n\n  static getValidationMessageByValidators(\n    column: DataGridColumnInterface,\n    control: AbstractControl,\n    validators: DataGridEditConfigValidatorInterface[]\n  ) {\n    if (!control.errors) return null;\n    const keys = Object.keys(control.errors);\n    if (keys.length < 0) return null;\n\n    const output: string[] = [];\n\n    keys.forEach(key => {\n      const findedValidator =\n        validators.length == 1\n          ? validators[0]\n          : validators.find(\n              x => this.getValidatorFnName(x.type)?.toLowerCase() === key?.toLowerCase()\n            );\n\n      if (findedValidator?.message?.trim()) {\n        output.push(findedValidator.message);\n      } else {\n        switch (key) {\n          case Validators.required.name:\n            output.push(`فیلد ${column.title || column.binding} الزامی است.`); // TODO: add translation\n            break;\n\n          case Validators.pattern.name:\n            output.push(`فرمت فیلد ${column.title || column.binding} نادرست است.`); // TODO: add translation\n            break;\n\n          default:\n            output.push(`خطا در فیلد ${column.title || column.binding}`); // TODO: add translation\n            break;\n        }\n      }\n    });\n    return output.length ? output.join(' | ') : null;\n  }\n\n  static createPlaceholderRow(\n    columns: DataGridColumnInterface[],\n    instance: DataGridComponent\n  ): Promise<any> {\n    const row: any = { isPlaceholder: true };\n    // columns.forEach(async item => {\n    //   if (typeof item.editConfig?.defaultValue !== 'undefined') {\n    //     row[item.binding] = item.editConfig.defaultValue;\n\n    //     if (\n    //       item.editConfig.type === 'identity-selector' &&\n    //       item.editConfig.config.valueData &&\n    //       item.displayBindingFields.length\n    //     ) {\n    //       row[item.displayBindingFields[0]] =\n    //         item.editConfig.config.valueData[item.editConfig.config.inputField];\n    //       if (item.displayBindingFields.length > 1) {\n    //         row[item.displayBindingFields[1]] =\n    //           item.editConfig.config.valueData[item.editConfig.config.secondInputField];\n    //       }\n    //     }\n\n    //     if (item.editConfig.type === 'select' && item.displayBindingFields.length) {\n    //       let options = item.editConfig.config.options;\n    //       if (typeof item.editConfig.config.options === 'function') {\n    //         options = item.editConfig.config.options({\n    //           value: item.editConfig?.defaultValue,\n    //           row,\n    //           instance,\n    //         }) as any[];\n    //         // options = await options({\n    //         //   value: item.editConfig?.defaultValue,\n    //         //   row,\n    //         //   instance\n    //         // });\n    //       }\n    //       const selectedItem = (options as any[])?.find(\n    //         x =>\n    //           item.editConfig.type == 'select' &&\n    //           x[item.editConfig.config.bindValue || propertyOf<SelectOptionInterface>('id')] ===\n    //             item.editConfig.defaultValue\n    //       );\n\n    //       if (selectedItem) {\n    //         row[item.displayBindingFields[0]] =\n    //           selectedItem[\n    //             item.editConfig.config.bindLabel || propertyOf<SelectOptionInterface>('text')\n    //           ];\n    //       }\n    //     }\n    //   }\n    // });\n    return row;\n  }\n\n  static async createForm(\n    columns: DataGridColumnInterface[],\n    row: any,\n    instance: DataGridComponent\n  ) {\n    const form = new FormGroup({});\n\n    await Promise.all(\n      columns.map(async item => {\n        if (item.editConfig) {\n          const validators =\n            typeof item.editConfig.validators == 'function'\n              ? await item.editConfig.validators({\n                  value: row[item.binding],\n                  row,\n                  instance,\n                })\n              : item.editConfig.validators;\n          const control = new FormControl(\n            row[item.binding],\n            validators?.length ? Validators.compose(validators.map(x => x.type)) : null\n          );\n\n          if (\n            typeof item.editConfig.disabled == 'function'\n              ? await item.editConfig.disabled({\n                  value: row[item.binding],\n                  row,\n                  instance,\n                })\n              : item.editConfig.disabled\n          ) {\n            control.disable();\n          }\n          form.addControl(item.binding, control);\n        }\n      })\n    );\n    return form;\n  }\n\n  static async getColumnDynamicPropertyDict(\n    column: DataGridColumnInterface,\n    row: any,\n    instance: DataGridComponent\n  ) {\n    const output: { [property: string]: any } = {};\n\n    if (column.editConfig.type == 'identity-selector') {\n      const length = column.displayBindingFields?.length || 0;\n      if ((row[column.binding] || !isNaN(row[column.binding])) && length > 0) {\n        const valueData = {\n          [column.editConfig.config.inputField]: row[column.displayBindingFields[0]],\n        };\n\n        if (length > 1 && column.editConfig.config.secondInputField) {\n          valueData[column.editConfig.config.secondInputField] =\n            row[column.displayBindingFields[1]];\n        }\n        output['identitySelectorValueData'] = valueData;\n      }\n      output['identitySelectorODataHttpHeaders'] =\n        typeof column.editConfig.config.oDataHttpHeaders == 'function'\n          ? await column.editConfig.config.oDataHttpHeaders({\n              value: row[column.binding],\n              row,\n              instance,\n            })\n          : column.editConfig.config.oDataHttpHeaders;\n    }\n\n    if (column.editConfig.type == 'textbox' && column.editConfig.config) {\n      output['textboxCurrencyConfig'] =\n        typeof column.editConfig.config.currencyConfig == 'function'\n          ? await column.editConfig.config.currencyConfig({\n              value: row[column.binding],\n              row,\n              instance,\n            })\n          : column.editConfig.config.currencyConfig;\n    }\n\n    if (column.editConfig.type == 'select') {\n      output['selectOptions'] =\n        typeof column.editConfig.config.options == 'function'\n          ? await column.editConfig.config.options({\n              value: row[column.binding],\n              row,\n              instance,\n            })\n          : column.editConfig.config.options;\n    }\n\n    if (column.editConfig.type == 'tree-select') {\n      output['treeSelectData'] =\n        typeof column.editConfig.config.data == 'function'\n          ? await column.editConfig.config.data({\n              value: row[column.binding],\n              row,\n              instance,\n            })\n          : column.editConfig.config.data;\n    }\n\n    output['validators'] =\n      typeof column.editConfig.validators == 'function'\n        ? await column.editConfig.validators({\n            value: row[column.binding],\n            row,\n            instance,\n          })\n        : column.editConfig.validators;\n\n    return output;\n  }\n\n  static async getRowValidationErrorMessages(\n    columns: DataGridColumnInterface[],\n    row: any,\n    instance: DataGridComponent\n  ) {\n    const errorMessages: string[] = [];\n    const form = await this.createForm(columns, row, instance);\n    await Promise.all(\n      columns.map(async column => {\n        if (column.editConfig) {\n          const control = form.get(column.binding);\n          // buttons do not have binding\n          if (control && control.invalid) {\n            errorMessages.push(await this.getValidationMessage(column, control, row));\n          }\n        }\n      })\n    );\n\n    return errorMessages;\n  }\n\n  static getValidatorFnName(input: ValidatorFn): string {\n    const output = input.name;\n\n    if (!output) {\n      const inputFnBody = input.toString().replace(/\\s/g, '');\n\n      if (\n        inputFnBody.includes(\n          \"{'minlength':{'requiredLength':minLength,'actualLength':control.value.length}}\"\n        )\n      )\n        return 'minlength';\n\n      if (\n        inputFnBody.includes(\n          \"{'maxlength':{'requiredLength':maxLength,'actualLength':control.value.length}}\"\n        )\n      )\n        return 'maxlength';\n\n      if (inputFnBody.includes(\"{'min':{'min':min,'actual':control.value}}\")) return 'min';\n\n      if (inputFnBody.includes(\"{'max':{'max':max,'actual':control.value}}\")) return 'max';\n\n      if (inputFnBody.includes(\"{'pattern':{'requiredPattern':regexStr,'actualValue':value}}\"))\n        return 'pattern';\n    }\n\n    return output;\n  }\n\n  static calculateAggregator(\n    items: any[],\n    column: string,\n    type: GridColumnAggregationTypes\n  ): number {\n    switch (type) {\n      case GridColumnAggregationTypes.Sum: {\n        let sum = 0;\n        items.forEach(item => {\n          sum += parseFloat(item[column] || 0);\n        });\n        return sum;\n      }\n      case GridColumnAggregationTypes.Count: {\n        return items.map(item => parseFloat(item[column] || 0)).filter(x => !isNil(x)).length;\n      }\n      case GridColumnAggregationTypes.Min: {\n        const values = items.map(item => parseFloat(item[column] || 0));\n        return Math.min(...values);\n      }\n      case GridColumnAggregationTypes.Max: {\n        const values = items.map(item => parseFloat(item[column] || 0));\n        return Math.max(...values);\n      }\n      case GridColumnAggregationTypes.Average: {\n        let sum = 0;\n        items.forEach(item => {\n          sum += parseFloat(item[column] || 0);\n        });\n        return sum / items.length;\n      }\n      default: {\n        return 0;\n      }\n    }\n  }\n\n  static async setCellDefaultValue(\n    row: any,\n    column: DataGridColumnInterface,\n    instance: DataGridComponent\n  ) {\n    if (isNil(column.editConfig?.defaultValue) || !isNil(row[column.binding])) return;\n    row[column.binding] = column.editConfig.defaultValue;\n\n    if (\n      column.editConfig.type === 'identity-selector' &&\n      column.editConfig.config.valueData &&\n      column.displayBindingFields.length\n    ) {\n      row[column.displayBindingFields[0]] =\n        column.editConfig.config.valueData[column.editConfig.config.inputField];\n      if (column.displayBindingFields.length > 1) {\n        row[column.displayBindingFields[1]] =\n          column.editConfig.config.valueData[column.editConfig.config.secondInputField];\n      }\n    }\n\n    if (column.editConfig.type === 'select' && column.displayBindingFields.length) {\n      let options = column.editConfig.config.options;\n      if (typeof column.editConfig.config.options === 'function') {\n        options = await column.editConfig.config.options({\n          value: column.editConfig?.defaultValue,\n          row,\n          instance,\n        });\n      }\n      const selectedItem = (options as any[])?.find(\n        x =>\n          column.editConfig.type == 'select' &&\n          x[column.editConfig.config.bindValue || propertyOf<SelectOptionInterface>('id')] ===\n            column.editConfig.defaultValue\n      );\n\n      if (selectedItem) {\n        row[column.displayBindingFields[0]] =\n          selectedItem[\n            column.editConfig.config.bindLabel || propertyOf<SelectOptionInterface>('text')\n          ];\n      }\n    }\n\n    if (column.editConfig.type === 'tree-select' && column.displayBindingFields.length) {\n      let data = column.editConfig.config.data;\n      if (typeof column.editConfig.config.data === 'function') {\n        data = await column.editConfig.config.data({\n          value: column.editConfig?.defaultValue,\n          row,\n          instance,\n        });\n      }\n\n      if (data) {\n        const selectedItemPath = findTreeItemPathString(\n          { [column.editConfig.config.bindItems]: data as any },\n          column.editConfig.defaultValue,\n          column.editConfig.config.bindItems,\n          column.editConfig.config.bindValue,\n          column.editConfig.config.bindLabel\n        );\n\n        console.log(selectedItemPath);\n\n        if (selectedItemPath) {\n          row[column.displayBindingFields[0]] = selectedItemPath;\n        }\n      }\n    }\n  }\n\n  static findTreeNode(data: any[], keyword: any, bindItems: string, bindValue: string): any | null {\n    const output: any[] = [];\n    for (let i = 0, len = data.length; i < len; i++) {\n      const element = data[i];\n      if (element[bindValue] === keyword) {\n        return element;\n      } else if (Array.isArray(element[bindItems])) {\n        output.push(element);\n        return this.findTreeNode(element[bindItems], keyword, bindItems, bindValue);\n      }\n    }\n\n    return null;\n  }\n}\n\nexport default DataGridComponentHelpers;\n","import {\n  Component,\n  Input,\n  OnInit,\n  forwardRef,\n  OnChanges,\n  ViewEncapsulation,\n  SimpleChanges,\n  Output,\n  EventEmitter,\n  ViewContainerRef,\n  ViewChild,\n  TemplateRef,\n  ElementRef,\n  Injector,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { OverlayRef } from '@angular/cdk/overlay';\nimport { Overlay } from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport { GridConfigInterface } from '../../../models/grid-config.interface';\nimport { GridComponent } from '../grid/grid.component';\nimport { findTreeItemPathString } from '../../../utils/find-tree-item-path';\nimport { FormElementBaseComponent } from '../../../models/base-form-element.component';\nimport { flattenTree } from '../../../utils/flatten-tree';\nimport { ArrayElement } from '../../../types/utility-types';\n\nexport interface TreeSelectComponentInterface {\n  data: Array<any>;\n  placeholder?: string;\n  bindLabel: string;\n  bindValue: string;\n  bindItems: string;\n  allowClear?: boolean;\n}\n\nenum SelectSizes {\n  SMALL = 'small',\n  NORMAL = 'normal',\n  LARGE = 'large',\n}\n\n@Component({\n  selector: 'ui-tree-select',\n  templateUrl: './tree-select.component.html',\n  styleUrls: ['./tree-select.component.scss'],\n  encapsulation: ViewEncapsulation.None,\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => TreeSelectComponent),\n      multi: true,\n    },\n  ],\n})\nexport class TreeSelectComponent\n  extends FormElementBaseComponent\n  implements TreeSelectComponentInterface, OnInit, ControlValueAccessor, OnChanges\n{\n  @Input() label: string;\n  @Input() labelType: 'side' | 'float' = 'float';\n  @Input() data: Array<any>;\n  @Input('value') _value: any;\n  @Input() id: string;\n  @Input() inputId: string;\n  @Input() placeholder: string;\n  @Input() bindLabel: string = 'text';\n  @Input() bindValue: string = 'id';\n  @Input() bindItems: string = 'items';\n  @Input() width: string = '100%';\n  @Input() size: SelectSizes | string;\n  @Input() iconUrl: string;\n  @Input() hasError: boolean;\n  @Input() showTreeValueColumn?: boolean;\n  @Input() readonly: string;\n  @Input() disabled: boolean;\n  @Input() allowClear: boolean = false;\n  @Input() spinnerIsShow?: boolean;\n  @Input() remoteConfig: (params: any, success: any, failure: any) => void;\n  @Input() multiple: boolean = false;\n  @Output() onChangeCalback: EventEmitter<null> =\n    new EventEmitter(); /** this emitter is obsoleted don't use */\n  @Output() changeCallback = new EventEmitter<any>();\n\n  @Output() openCallback: EventEmitter<null> = new EventEmitter();\n  @Output() closeCallback: EventEmitter<null> = new EventEmitter();\n\n  gridConfig: GridConfigInterface;\n  treeMenuIsShow?: boolean;\n  treeIsFocus?: boolean;\n  treeDepth: number;\n  treePathLevel: string[] | string;\n  selectedTreePath?: string;\n  selectedNode: ArrayElement<typeof this.data>;\n  checkedNodes: typeof this.data;\n\n  private overlayRef: OverlayRef;\n  @ViewChild('treeSelectMenu') treeSelectMenuTemplateRef: TemplateRef<any>;\n  @ViewChild('treeSelect') treeSelectElementRef: ElementRef<HTMLElement>;\n  @ViewChild('treeInputElement') treeInputElement: ElementRef<HTMLInputElement>;\n  @ViewChild('grid') gridComponent: GridComponent;\n\n  constructor(\n    public viewContainerRef: ViewContainerRef,\n    private overlay: Overlay,\n    injector: Injector\n  ) {\n    super(injector);\n  }\n\n  public get SelectSizes(): typeof SelectSizes {\n    return SelectSizes;\n  }\n\n  get value() {\n    return this._value;\n  }\n\n  set value(val) {\n    this._value = val;\n  }\n\n  public onChangeFn = (_: any) => {};\n\n  public onTouchedFn = () => {};\n\n  public registerOnChange(fn: any): void {\n    this.onChangeFn = fn;\n  }\n\n  public registerOnTouched(fn: any): void {\n    this.onTouchedFn = fn;\n  }\n\n  public writeValue(val: any): void {\n    this.value = val === null ? '' : val;\n    this.updateSelectedTreePath(val);\n  }\n\n  setDisabledState(isDisabled: boolean): void {\n    this.disabled = isDisabled;\n  }\n\n  public onChange() {\n    this.onChangeFn(this.value);\n  }\n\n  change(val: any) {\n    const isSameWithPrevious = this.value == val;\n    if (isSameWithPrevious) return;\n    this.value = val;\n    this.updateSelectedTreePath(val);\n    this.onChangeCalback.emit(val);\n    this.changeCallback.emit(val);\n    this.onChange();\n  }\n\n  ngOnInit() {\n    this.init();\n    if (!this.inputId) {\n      this.inputId = this.generateUniqueId();\n    }\n  }\n\n  ngAfterViewInit(): void {}\n\n  ngOnChanges(changes: SimpleChanges): void {\n    this.gridConfig = {\n      columns: {\n        columns: [\n          {\n            binding: this.bindLabel,\n            autoSize: true,\n          },\n        ],\n      },\n    };\n\n    if (this.showTreeValueColumn) {\n      this.gridConfig.columns.columns.unshift({\n        binding: this.bindValue,\n        autoSize: true,\n      });\n    }\n\n    if (this.data) {\n      this.treeDepth = this.getArrayDepth(this.data) - 1;\n      this.treePathLevel = this.bindItems;\n    }\n\n    this.updateSelectedTreePath(this.value);\n  }\n\n  focusHandler() {\n    this.treeIsFocus = true;\n  }\n\n  blurHandler() {\n    this.treeIsFocus = false;\n    this.onTouchedFn();\n  }\n\n  gridSelectHandler(item: any) {\n    if (this.multiple) return;\n    if (!item) return;\n    this.selectedNode = item;\n    const selectedValue = item[this.bindValue];\n    this.change(selectedValue);\n    this.closeTreeMenu();\n    this.updateSelectedTreePath(selectedValue);\n  }\n\n  openTreeMenu() {\n    if (this.disabled || this.readonly) return;\n    this.treeMenuIsShow = true;\n    this.overlayRef = this.createTreeMenuOverlay();\n    if (this.value) {\n      if (this.multiple) {\n        if (Array.isArray(this.value)) {\n          this.checkedNodes = this.value.map(item => ({ [this.bindValue]: item }));\n        }\n      } else {\n        this.selectedNode = { [this.bindValue]: this.value };\n      }\n    }\n    this.overlayRef.attach(\n      new TemplatePortal(this.treeSelectMenuTemplateRef, this.viewContainerRef)\n    );\n    this.overlayRef.backdropClick().subscribe(() => {\n      this.closeTreeMenu();\n    });\n\n    if (this.gridComponent) {\n      setTimeout(() => {\n        this.gridComponent.collapseGroupsToLevel(this.treeDepth);\n        if (this.value) {\n          const index = this.gridComponent\n            .getRows()\n            ?.findIndex(x => this.value && x[this.bindValue] == this.value);\n          if (index != -1) {\n            setTimeout(() => {\n              this.gridComponent.setRowAsSelected(index);\n            }, 300);\n          }\n        }\n      }, 0);\n      setTimeout(() => {\n        this.gridComponent.focus();\n      }, 350);\n    }\n    this.openCallback.emit();\n  }\n\n  closeTreeMenu() {\n    this.treeMenuIsShow = false;\n    this.treeInputElement.nativeElement.focus();\n    this.overlayRef?.detach();\n    this.closeCallback.emit();\n  }\n\n  treeInputElementKeyupHandler(event: any) {\n    if (this.disabled || this.readonly) return;\n    const keyCode = event.keyCode;\n    if (keyCode == 32 || keyCode == 40) {\n      if (!this.treeMenuIsShow) {\n        this.openTreeMenu();\n      } else {\n        this.closeTreeMenu();\n      }\n    } else if (keyCode == 27) {\n      this.closeTreeMenu();\n    }\n  }\n\n  clearTreeSelectedValue(e: Event) {\n    if (this.disabled || this.readonly) return;\n    e.stopPropagation();\n    this.change('');\n    this.openTreeMenu();\n  }\n\n  private updateSelectedTreePath(selectedValue: string | []) {\n    if (Array.isArray(selectedValue)) {\n      const allItems = flattenTree(this.data, 'items');\n      this.selectedTreePath = selectedValue\n        .map(val => {\n          const f = allItems.find(it => it.item[this.bindValue] == val);\n          if (f) return f.item[this.bindLabel];\n        })\n        .join();\n    } else\n      this.selectedTreePath = findTreeItemPathString(\n        { [this.bindItems]: this.data?.length ? this.data : [selectedValue] },\n        selectedValue,\n        this.bindItems,\n        this.bindValue,\n        this.bindLabel\n      );\n  }\n\n  private createTreeMenuOverlay() {\n    return this.overlay.create({\n      hasBackdrop: true,\n      backdropClass: 'cdk-overlay-transparent-backdrop',\n      direction: document.body.getAttribute('dir') == 'rtl' ? 'rtl' : 'ltr',\n      width: this.treeSelectElementRef.nativeElement.offsetWidth,\n      scrollStrategy: this.overlay.scrollStrategies.block(),\n      positionStrategy: this.overlay\n        .position()\n        .flexibleConnectedTo(this.treeSelectElementRef)\n        .withPositions([\n          {\n            originX: 'start',\n            originY: 'bottom',\n            overlayX: 'start',\n            overlayY: 'top',\n            offsetY: -1,\n          },\n        ]),\n    });\n  }\n\n  private getArrayDepth(array: any[]): number {\n    const safeArray = array || [];\n    return (\n      1 +\n      Math.max(0, ...safeArray.map(({ [this.bindItems]: items = [] }) => this.getArrayDepth(items)))\n    );\n  }\n\n  generateUniqueId(): string {\n    const timestamp = Date.now().toString(36);\n    const randomString = Math.random().toString(36).substr(2, 9);\n    return timestamp + '_' + randomString;\n  }\n\n  onItemChecked(data) {\n    if (!Array.isArray(data)) return;\n    this.checkedNodes = data;\n    const selectedValues = data.map(item => item[this.bindValue]);\n    this.change(selectedValues);\n  }\n}\n","<ui-label\n  [label]=\"label\"\n  [for]=\"inputId\"\n  [type]=\"labelType\"\n  [hasValue]=\"value\"\n  [showRequiredSign]=\"hasRequiredValidator\"\n>\n  <span\n    class=\"select-control\"\n    [attr.readonly]=\"readonly\"\n    [attr.disabled]=\"disabled\"\n    [ngClass]=\"{\n      'select-control--hasError': hasError,\n      'select-control--small': size == SelectSizes.SMALL,\n      'select-control--large': size == SelectSizes.LARGE,\n      'select-control--focus': treeIsFocus\n    }\"\n    #treeSelect\n    (click)=\"openTreeMenu()\"\n  >\n    <span class=\"select-control__content\">\n      <ng-container *ngIf=\"selectedTreePath?.length; else placeholderTemlate\">\n        {{ selectedTreePath }}\n      </ng-container>\n      <ng-template #placeholderTemlate>\n        <span\n          class=\"select-control__placeholder\"\n          *ngIf=\"placeholder && !(label && labelType == 'float')\"\n          >{{ placeholder }}</span\n        >\n      </ng-template>\n    </span>\n    <span class=\"select-control__icons\">\n      <ui-icon\n        *ngIf=\"allowClear && value\"\n        class=\"select-control__clear\"\n        [type]=\"'outline'\"\n        [group]=\"'navigation'\"\n        [name]=\"'close'\"\n        size=\"x1\"\n        (click)=\"clearTreeSelectedValue($event)\"\n      ></ui-icon>\n      <ui-icon\n        class=\"select-control__arrow\"\n        [ngClass]=\"{\n          'select-control__arrow--open': treeMenuIsShow\n        }\"\n        [type]=\"'outline'\"\n        [group]=\"'navigation'\"\n        [name]=\"'expand_more'\"\n      ></ui-icon\n    ></span>\n    <input\n      #treeInputElement\n      class=\"select-control__tree-input-element\"\n      [attr.id]=\"inputId\"\n      [attr.readonly]=\"readonly\"\n      [disabled]=\"disabled\"\n      (focus)=\"focusHandler()\"\n      (blur)=\"blurHandler()\"\n      (keyup)=\"treeInputElementKeyupHandler($event)\"\n    />\n  </span>\n</ui-label>\n<ng-template #treeSelectMenu>\n  <div\n    class=\"select-control__menu\"\n    [ngClass]=\"{\n      'select-control__menu--small': size == SelectSizes.SMALL,\n      'select-control__menu--large': size == SelectSizes.LARGE\n    }\"\n  >\n    <!-- <ui-grid\n      #grid\n      [config]=\"gridConfig\"\n      [items]=\"data\"\n      (rowsClickedItemCalback)=\"gridSelectHandler($event)\"\n      [childItemsPath]=\"treePathLevel\"\n      [hideCheckboxInCheckableGrid]=\"!multiple\"\n      [collapseRows]=\"true\"\n      (checkCallback)=\"onItemChecked($event)\"\n    >\n    </ui-grid> -->\n    <ui-tree\n      [nodes]=\"data\"\n      [idBinding]=\"bindValue\"\n      [titleBinding]=\"bindLabel\"\n      [childrenBinding]=\"bindItems\"\n      [checkable]=\"multiple\"\n      [selectedNode]=\"selectedNode\"\n      [checkedNodes]=\"checkedNodes\"\n      (selectNodeCallback)=\"gridSelectHandler($event)\"\n      (checkCallback)=\"onItemChecked($event)\"\n    >\n    </ui-tree>\n  </div>\n</ng-template>\n","export enum GridColumnFilterConditionTypes {\n  EQUAL = 0,\n  NOT_EQUAL = 1,\n  GREATER_THAN = 2,\n  GREATER_THAN_OR_EQUAL = 3,\n  LESS_THAN = 4,\n  LESS_THAN_OR_EQUAL = 5,\n  STARTS_WITH = 6,\n  ENDS_WITH = 7,\n  CONTAINS = 8,\n  NOT_CONTAINS = 9,\n}\n\nexport const getGridColumnFilterConditionTypeName = (\n  input: GridColumnFilterConditionTypes\n): string => {\n  switch (input) {\n    case GridColumnFilterConditionTypes.EQUAL:\n      return 'eq';\n\n    case GridColumnFilterConditionTypes.NOT_EQUAL:\n      return 'ne';\n\n    case GridColumnFilterConditionTypes.CONTAINS:\n      return 'contains';\n\n    case GridColumnFilterConditionTypes.NOT_CONTAINS:\n      return 'not contains';\n\n    default:\n      console.error('Grid column filter condition type is out of range');\n      return '';\n  }\n};\n","export enum FullscreenTypes {\n  NONE = 0,\n  TOP = 1,\n  BOTTOM = 2,\n  START = 3,\n  END = 4,\n}\n","export enum ReviewToolbarActionTypes {\n  RELOAD = 'reload',\n  PRINT = 'print',\n  EXCEL = 'excel',\n  SAVE_PLAN = 'save_plan',\n  SAVE_NEW_PLAN = 'save_new_plan',\n  CHANGE_PLAN = 'change_plan',\n  DELETE_PLAN = 'delete_plan',\n  SAVE_EXISTED_PLAN = 'save_existed_plan',\n  SAVE_AS_DEFAULT_PLAN = 'save_as_default_plan',\n  RESET_PLAN = 'reset_plan',\n  CLEAR_FILTER = 'clear_filter',\n  CHANGE_EXTRACT_TYPE = 'change_extract_type',\n  CHANGE_FETCH_REASON = 'change_fetch_reson',\n  CHANGE_REPORT_TYPE = 'change_report_type',\n  CHANGE_STOCK_CARDEX_REPORT_TYPE = 'change_stock_cardex_report_type',\n  CHANGE_SHOW_CARTON_DIGIT_STATE = 'change_show_carton_digit_state',\n  CHANGE_RCVACCOUNT_SHOW_INITIAL_VALUE_STATE = 'change_rcv_show_initial_value_state',\n  CHANGE_SELL_SHOW_INITIAL_VALUE_STATE = 'change_sell_show_initial_value_state',\n  CHANGE_ACTIVE_CUSTOMER_STATE = 'change_active_customer_state',\n  CHANGE_CALCULATE_DATE_TYPE = 'change_calculate_date_state',\n  CHANGE_CLOSING_SHOW = 'change_closing_show',\n  CHANGE_OPENING_SHOW = 'change_opening_show',\n  CHANGE_ClOSING_TEMPRARY_ACCOUNTS_SHOW = 'change_closing_temprary_accounts_show',\n  OPEN_COLUMN_PICKER = 'open_column_picker',\n  TOGGLE_GROUPING_PANEL = 'toggle_grouping_panel',\n  CHANGE_TREASURY_REPORT_TYPE = 'change_treasury_report_type',\n}\n","export enum ToolbarCalculateDateTypes {\n  LOAN_DATE = 0,\n  CIRCULATION_DATE = 1\n}","export enum ToolbarExtractTypes {\n  CIRCULATING = 0,\n  ALL = 1,\n}\n","export enum ToolbarFetchReasonTypes {\n  ALL = 0,\n  FACTOR = 1,\n  REFERRED = 2,\n}\n","export enum ToolbarReportTypes {\n  PAY_DATE = 0,\n  SALE_DATE_DISTRIBUTED = 1,\n  SALE_DATE_ALL = 2,\n}\n  ","export enum ToolbarStockCardexReportTypes {\n  HEALTHY_CARDEX = 1,\n  WASTE_CARDEX = 2,\n}\n","export enum ToolbarTreasuryReportTypes {\n  NONE = 0,\n  DATE_OF_RECEIPT = 1,\n  DATE_OF_DEPOSIT = 2,\n}\n","export enum ModalSizeEnum {\n  ExtraLarge = 'xl',\n  Large = 'lg',\n  Medium = 'md',\n  Small = 'sm',\n}\n","import { Injectable } from '@angular/core';\nimport { DetachedRouteHandle } from '@angular/router';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class RouteCachingService {\n  private store = new Map<string, DetachedRouteHandle>();\n  constructor() {}\n\n  has(key: string): boolean {\n    return this.store.has(key);\n  }\n\n  get(key: string): DetachedRouteHandle {\n    return this.store.get(key);\n  }\n\n  set(key: string, detachedTree: DetachedRouteHandle) {\n    this.store.set(key, detachedTree);\n  }\n\n  delete(key: string) {\n    this.store.delete(key);\n  }\n\n  deleteAll() {\n    this.store.clear();\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject, Subject } from 'rxjs';\nimport { LoggedUserInterface } from '../../models/logged-user.interface';\nimport { MenuInterface } from '../../models/menu.interface';\nimport { Event, NavigationEnd, NavigationExtras, Router } from '@angular/router';\nimport { RouteCachingService } from '../../services/route-caching.service';\nimport { ThemeType } from '../../types/theme.type';\nimport { SessionNames } from '../../constants/session-names';\nimport { Paths } from '../../utils/paths';\n\nconst OpenedWindowsSessionName = '_ow';\nconst LastOpenedWindowsSessionName = '_low';\nconst last3ClosedWindowsSessionName = '_l3ow';\n\nclass FIFOQueue<T> {\n  private queue: T[] = [];\n\n  constructor(private maxLength = 3) {}\n\n  enqueue(item: T): void {\n    if (this.isUnique(item)) {\n      if (this.queue.length >= this.maxLength) {\n        this.dequeue();\n      }\n      this.queue.push(item);\n    }\n  }\n\n  dequeue(): T | undefined {\n    return this.queue.shift();\n  }\n\n  getItems(): T[] {\n    return this.queue;\n  }\n\n  setItems(items: T[]): void {\n    this.queue = items;\n  }\n\n  reset(): void {\n    this.queue = [];\n  }\n  private areObjectsEqual(obj1: T, obj2: T): boolean {\n    return JSON.stringify(obj1) === JSON.stringify(obj2);\n  }\n\n  private isUnique(item: T): boolean {\n    return !this.queue.some(existingItem => this.areObjectsEqual(existingItem, item));\n  }\n}\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class FararuLayoutService {\n  $theme = new BehaviorSubject<ThemeType>(\n    localStorage.getItem(SessionNames.THEME)\n      ? (localStorage.getItem(SessionNames.THEME) as ThemeType)\n      : window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches\n      ? 'dark'\n      : 'light'\n  );\n  $settingsMenuIsShow = new BehaviorSubject<boolean>(false);\n  lastMenuClicked$ = new Subject<MenuInterface>();\n  favoritedMenuIds$ = new BehaviorSubject<number[]>([]);\n  companyConfigChanged$ = new Subject<boolean>();\n\n  private darkModeMediaQuery = window.matchMedia('(prefers-color-scheme: dark)');\n  private openedWindows$ = new BehaviorSubject<MenuInterface[]>([]);\n  private last3ClosedWindows$ = new BehaviorSubject<MenuInterface[]>([]);\n  private lastOpenedWindows$ = new BehaviorSubject<MenuInterface>(null);\n  private loggedUser$ = new BehaviorSubject<LoggedUserInterface | null>(null);\n  private _browserHistory: string[] = [];\n\n  onReload$ = new Subject<string>();\n  currentPage$ = new Subject<string>();\n  last3Pages = new FIFOQueue<MenuInterface>();\n  constructor(private router: Router, private routeCachingService: RouteCachingService) {\n    this.router.events.subscribe((event: Event) => {\n      if (event instanceof NavigationEnd) {\n        this._browserHistory.unshift(event.url);\n        if (this._browserHistory.length > 10) {\n          this._browserHistory.pop();\n        }\n        const list = this.openedWindows$.value;\n        const currentRouteData = list.find(\n          x => x.link.toLowerCase() == this.router.url?.toLowerCase()\n        );\n        if (currentRouteData) {\n          this.lastOpenedWindows$.next(currentRouteData);\n\n          sessionStorage.setItem(\n            this.getLastOpenedWindowsSessionName,\n            JSON.stringify(currentRouteData)\n          );\n        } else {\n          sessionStorage.removeItem(this.getLastOpenedWindowsSessionName);\n          sessionStorage.removeItem(this.getlast3ClosedWindowsSessionName);\n          this.last3Pages.reset();\n        }\n      }\n    });\n\n    this.$theme.subscribe(theme => {\n      switch (theme) {\n        case 'system': {\n          const isDark =\n            window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches;\n          if (isDark) {\n            document.body.setAttribute('data-theme', 'dark');\n          } else {\n            document.body.removeAttribute('data-theme');\n          }\n          break;\n        }\n        case 'light': {\n          document.body.removeAttribute('data-theme');\n          break;\n        }\n        case 'dark': {\n          document.body.setAttribute('data-theme', 'dark');\n          break;\n        }\n      }\n      localStorage.setItem(SessionNames.THEME, theme);\n    });\n\n    this.darkModeMediaQuery.addEventListener('change', () => {\n      if (this.theme === 'system') {\n        this.$theme.next('system');\n      }\n    });\n\n    this.loggedUser$.subscribe(() => {\n      const last3ClosedWindowsSession = sessionStorage.getItem(\n        this.getlast3ClosedWindowsSessionName\n      );\n      if (last3ClosedWindowsSession) {\n        const pages = JSON.parse(last3ClosedWindowsSession);\n        this.last3Pages.setItems(pages);\n        this.last3ClosedWindows$.next(pages);\n      }\n\n      this.favoritedMenuIds$.next(\n        JSON.parse(localStorage.getItem(this.favoritesSessionName) || '[]')\n      );\n    });\n  }\n\n  addWindow(data: MenuInterface, navigate?: boolean) {\n    if (data.link && data.link.toString().includes(`/${Paths.app.modal.base}/`)) return;\n    if (data.link.startsWith('modals')) {\n      let urlWithoutQueryString = this.removeLinkQueryString(data.link);\n      let commands: any[] = [{ outlets: { modal: urlWithoutQueryString } }];\n      let navigationExtras: NavigationExtras = {\n        queryParams: this.getLinkQueryString(data.link),\n        skipLocationChange: false,\n      };\n      this.router.navigate(commands, navigationExtras);\n      return;\n    }\n    const list = this.openedWindows$.value;\n    if (!list.some(x => x.link == data.link)) {\n      list.push(data);\n      this.openedWindows$.next(list);\n      this.currentPage$.next(data.title);\n      sessionStorage.setItem(this.getOpenedWindowsSessionName, JSON.stringify(list));\n    }\n    if (navigate && data.link) {\n      this.router.navigate([this.removeLinkQueryString(data.link)], {\n        queryParams: this.getLinkQueryString(data.link),\n      });\n    }\n  }\n\n  removeWindow(data: MenuInterface, redirectLink?: string) {\n    const list = this.openedWindows$.value;\n    const findedIndex = list.findIndex(x => x.link == data.link);\n    if (findedIndex != -1) {\n      const removedPage = list.splice(findedIndex, 1);\n      this.last3Pages.enqueue(removedPage[0]);\n      this.last3ClosedWindows$.next(this.last3Pages.getItems());\n      sessionStorage.setItem(\n        this.getlast3ClosedWindowsSessionName,\n        JSON.stringify(this.last3Pages.getItems())\n      );\n      if (removedPage[0]?.uniquePageName) {\n        this.onReload$.next(removedPage[0]?.uniquePageName);\n      }\n      this.openedWindows$.next(list);\n      sessionStorage.setItem(this.getOpenedWindowsSessionName, JSON.stringify(list));\n      this._removeFromBrowserHistoryItem(data.link);\n      if (redirectLink) {\n        this.router.navigateByUrl(redirectLink);\n      } else if (this.router.url?.toLowerCase().includes(data.link.toLowerCase())) {\n        const redirectLink = this._getExistingBrowserHistoryItem();\n        if (redirectLink) {\n          this.router.navigateByUrl(redirectLink);\n        } else if (list.length > 0) {\n          this.router.navigateByUrl(list[list.length - 1].link);\n        } else {\n          this.router.navigateByUrl('/');\n        }\n      }\n      setTimeout(() => {\n        this.routeCachingService.delete(data.link);\n      }, 100);\n    }\n  }\n\n  removeWindowByLink(link: string, redirectLink?: string) {\n    this.removeWindow({ id: 0, title: '', link }, redirectLink);\n  }\n\n  setOpenedWindows() {\n    try {\n      const openedWindowsString = sessionStorage.getItem(this.getOpenedWindowsSessionName);\n      if (openedWindowsString) {\n        this.openedWindows$.next(JSON.parse(openedWindowsString));\n      }\n\n      const lastOpenedWindowsString = sessionStorage.getItem(this.getLastOpenedWindowsSessionName);\n      if (lastOpenedWindowsString) {\n        const lastOppendMenuData: MenuInterface = JSON.parse(lastOpenedWindowsString);\n        this.lastOpenedWindows$.next(lastOppendMenuData);\n        if (this.router.url == '/') {\n          this.router.navigate([this.removeLinkQueryString(lastOppendMenuData.link)], {\n            queryParams: this.getLinkQueryString(lastOppendMenuData.link),\n          });\n        }\n      }\n      const last3OpenedWindowsString = sessionStorage.getItem(\n        this.getlast3ClosedWindowsSessionName\n      );\n      if (last3OpenedWindowsString) {\n        const last3OpenedMenuData: MenuInterface[] = JSON.parse(last3OpenedWindowsString);\n        this.last3ClosedWindows$.next(last3OpenedMenuData);\n      }\n    } catch (e) {}\n  }\n\n  getOpenedWidows() {\n    return this.openedWindows$.asObservable();\n  }\n  getLast3ClosedWidows() {\n    return this.last3ClosedWindows$.asObservable();\n  }\n\n  setLoggedUser(user: LoggedUserInterface) {\n    this.loggedUser$.next(user);\n  }\n\n  removeLinkQueryString(link: string) {\n    const findedIndex = link.indexOf('?');\n    if (findedIndex != -1) {\n      return link.substring(0, findedIndex);\n    }\n    return link;\n  }\n\n  getLinkQueryString(link: string): any {\n    const findedIndex = link.indexOf('?');\n    if (findedIndex != -1) {\n      let output: any = {};\n      const qs = link.substring(findedIndex + 1, link.length);\n      const tempArr = qs.split('&');\n      if (tempArr.length > 0) {\n        tempArr.forEach(item => {\n          const data = item.split('=');\n          output[data[0]] = data[1];\n        });\n      }\n      return output;\n    }\n    return null;\n  }\n\n  clearAllTabs() {\n    sessionStorage.removeItem(this.getOpenedWindowsSessionName);\n    sessionStorage.removeItem(this.getLastOpenedWindowsSessionName);\n    this.openedWindows$.next([]);\n    this.lastOpenedWindows$.next(null);\n    this.router.navigateByUrl('/');\n\n    setTimeout(() => {\n      this.routeCachingService.deleteAll();\n    }, 100);\n  }\n\n  openSettingsMenu() {\n    this.$settingsMenuIsShow.next(true);\n  }\n\n  closeSettingsMenu() {\n    this.$settingsMenuIsShow.next(false);\n  }\n\n  handleFavorite(data: MenuInterface) {\n    if (!data.id) return;\n    const favoritedMenuIds = this.favoritedMenuIds$.value;\n    const findedIndex = favoritedMenuIds.findIndex(x => x === data.id);\n    if (findedIndex != -1) {\n      data.favorited = false;\n      favoritedMenuIds.splice(findedIndex, 1);\n    } else {\n      data.favorited = true;\n      favoritedMenuIds.push(data.id);\n    }\n\n    this.favoritedMenuIds$.next(favoritedMenuIds);\n    localStorage.setItem(this.favoritesSessionName, JSON.stringify(favoritedMenuIds));\n  }\n\n  set theme(theme: ThemeType) {\n    this.$theme.next(theme);\n  }\n\n  get theme() {\n    return this.$theme.getValue();\n  }\n\n  private get getOpenedWindowsSessionName(): string {\n    return OpenedWindowsSessionName + '_' + this.loggedUser$.value?.id;\n  }\n  private get getLastOpenedWindowsSessionName(): string {\n    return LastOpenedWindowsSessionName + '_' + this.loggedUser$.value?.id;\n  }\n\n  private get getlast3ClosedWindowsSessionName(): string {\n    return last3ClosedWindowsSessionName + '_' + this.loggedUser$.value?.id;\n  }\n\n  private get favoritesSessionName() {\n    return [SessionNames.SIDE_BAR_FAVORITED_MENUS, this.loggedUser$?.value?.id]\n      .filter(x => !!x)\n      .join('_');\n  }\n\n  private _getExistingBrowserHistoryItem() {\n    for (let i = 0, length = this._browserHistory.length; i < length; i++) {\n      const element = this._browserHistory[i];\n      const list = this.openedWindows$.value;\n      if (list.some(x => element.toLowerCase().includes(x.link.toLowerCase()))) {\n        return element;\n      }\n    }\n    return null;\n  }\n\n  private _removeFromBrowserHistoryItem(url: string) {\n    this._browserHistory = this._browserHistory.filter(\n      x => !url.toLowerCase().includes(x.toLowerCase())\n    );\n  }\n}\n","import { loadRemoteModule } from '@angular-architects/module-federation';\nimport { Injectable } from '@angular/core';\nimport { FararuLayoutService } from '../design-systems/layouts/fararu-layout.service';\nimport { ModalSizeEnum } from '../design-systems/modal/modal-size-enum';\nimport { ModalService } from '../design-systems/modal/modal.service';\nimport { IntrerSystemFormStateType } from '../models/inter-system-form-state.type';\nimport { InterSystemGridRowActionResponse, InterSystemLookupActionResponse } from '../models/inter-system-response.interface';\nimport { MenuInterface } from '../models/menu.interface';\nimport { ConfigSandbox } from '../store/sandboxes/config.sandbox';\nimport { SubSystemType } from '../types/sub-system.type';\nimport { AppConfigService } from './app-config.service';\nimport { AppMenuApiService } from './app-menu-api.service';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class LoadRemoteAssetService {\n  constructor(\n    private readonly _appConfigService: AppConfigService,\n    private readonly modelService: ModalService,\n    public layoutService: FararuLayoutService,\n    private _appMenuApiService: AppMenuApiService,\n    private _configSandbox: ConfigSandbox,\n  ) {}\n\n  async loadRemoteComponent(subSystem: SubSystemType, componentName: string, version?: string) {\n    const res = await loadRemoteModule({\n      type: 'module',\n      remoteEntry: `${this._getSubSystemRemoteUrl(subSystem)}/remoteEntry.js${\n        version ? '?v=' + version : ''\n      }`,\n      exposedModule: componentName,\n    });\n\n    return res[componentName];\n  }\n\n  private _getSubSystemRemoteUrl(subSystem: SubSystemType): string | null {\n    return this._appConfigService.config.remotes[subSystem]?.url || null;\n  }\n\n  async openInterSystemForm(\n    subSystem: SubSystemType,\n    componentName: string,\n    mode: 'list' | 'new' | 'edit' | 'view' | 'custom',\n    route: string,\n    params: any,\n    title?: string\n  ): Promise<any> {\n    let openMode = 'model'; //this.subSystemNavigationMap.get(subSystem).get(componentName);\n    if (openMode === 'modal') {\n      // await this.farauTranslateService.loadRemoteTranslations(subSystem);\n      return this.loadRemoteComponent(subSystem, componentName).then(component => {\n        this.modelService.open(component, ModalSizeEnum.Large, {\n          params: params,\n          mode: mode,\n          route: route,\n        });\n      });\n    } else if (openMode === 'page') {\n      this.layoutService.addWindow(\n        {\n          title: title ?? 'this is a fake title',\n          link: route,\n        },\n        true\n      );\n      return Promise.resolve();\n    } else {\n      return this.modelService.showAlert({\n        title: 'تنظیمات یافت نشد',\n        description: 'تنظیمات مربوط به صفحه مورد نظر یافت نشد',\n        type: 'error',\n      });\n    }\n  }\n\n  async openInterSystemForm2(\n    interSystemConfigModel: InterSystemLookupActionResponse | InterSystemGridRowActionResponse,\n    mode: IntrerSystemFormStateType,\n    params?: any,\n    route?: string,\n    title?: string\n  ): Promise<any> {\n    this._configSandbox.showGlobalLoading('Loading-InterSystem-Form');\n    try {\n      let subSystemMenuItem: MenuInterface = {\n        title: 'title',\n        id: interSystemConfigModel.subSystemMenuId,\n      };\n      await this._appMenuApiService.setMenuData(subSystemMenuItem);\n      let menuItemFound: MenuInterface;\n      switch (mode) {\n        case 'edit':\n          menuItemFound = this._appMenuApiService.getMenuItemById(\n            interSystemConfigModel.editMenuId\n          );\n          if (menuItemFound) {\n            // Replace all (/.../g) leading slash (^\\/) or (|) trailing slash (\\/$) with an empty string.\n            menuItemFound.link = menuItemFound.link\n              .replace(/^\\/|\\/$/g, '')\n              .replace(':mode', 'edit')\n              .replace(':id', params);\n          } else {\n            throw new Error('item not found');\n          }\n          break;\n        case 'view':\n          menuItemFound = this._appMenuApiService.getMenuItemById(\n            interSystemConfigModel.viewMenuId\n          );\n          if (menuItemFound) {\n            // Replace all (/.../g) leading slash (^\\/) or (|) trailing slash (\\/$) with an empty string.\n            menuItemFound.link = menuItemFound.link\n              .replace(/^\\/|\\/$/g, '')\n              .replace(':mode', 'view')\n              .replace(':id', params);\n          } else {\n            throw new Error('item not found');\n          }\n          break;\n        case 'new':\n          menuItemFound = this._appMenuApiService.getMenuItemById(interSystemConfigModel.newMenuId);\n          if (menuItemFound) {\n            // Replace all (/.../g) leading slash (^\\/) or (|) trailing slash (\\/$) with an empty string.\n            menuItemFound.link = menuItemFound.link.replace(/^\\/|\\/$/g, '').replace(':mode', 'new');\n          } else {\n            throw new Error('item not found');\n          }\n          break;\n        case 'list':\n          break;\n        case 'custom':\n          break;\n\n        default:\n          menuItemFound = this._appMenuApiService.getMenuItemById(interSystemConfigModel.newMenuId);\n          if (!menuItemFound) {\n            throw new Error('item not found');\n          }\n          break;\n      }\n\n      this.layoutService.addWindow(menuItemFound);\n      this._configSandbox.hideGlobalLoading('Loading-InterSystem-Form');\n      return Promise.resolve();\n    } catch (error) {\n      this._configSandbox.hideGlobalLoading('Loading-InterSystem-Form');\n      return this.modelService.showAlert({\n        title: 'صفحه مورد نظر یافت نشد',\n        description: 'تنظیمات مربوط به صفحه مورد نظر یافت نشد',\n        type: 'error',\n      });\n    }\n  }\n}\n","import { GridColumnFilterInterface } from '../../../models/grid-column-filter.interface';\nimport {\n  GridColumnFilterConditionTypes,\n  getGridColumnFilterConditionTypeName,\n} from '../../../enums/grid-column-filter-condition-types';\nimport * as wjcFilter from '@grapecity/wijmo.grid.filter';\nimport * as wjCore from '@grapecity/wijmo';\nimport * as wjcGrid from '@grapecity/wijmo.grid';\nimport { ColumnCustomFilterInterface } from './grid.component.models';\nimport { GridColumnInterface, GridNumberColumnConfig } from '../../../models/grid-column.interface';\nimport { GridColumnDataTypes } from '../../../enums/grid-column-data-types';\nimport { GridComponent } from './grid.component';\n\nexport class GridComponentHelpers {\n  static convertODataFiltersToString = (filters: GridColumnFilterInterface[]) => {\n    let output: string = '';\n\n    filters?.forEach(filter => {\n      if (output) output += ' and ';\n      if (typeof filter.condition1.value == 'string') {\n        if (filter.condition1.operator == GridColumnFilterConditionTypes.CONTAINS)\n          output += `(${getGridColumnFilterConditionTypeName(filter.condition1.operator)}(${\n            filter.binding\n          },'${filter.condition1.value}'))`;\n        else\n          output += `(${filter.binding} ${getGridColumnFilterConditionTypeName(\n            filter.condition1.operator\n          )} '${filter.condition1.value}')`;\n      } else {\n        output += `(${filter.binding} ${getGridColumnFilterConditionTypeName(\n          filter.condition1.operator\n        )} ${filter.condition1.value})`;\n      }\n\n      if (filter.condition2 && filter.condition2.value) {\n        output += `${filter.and === true ? 'and' : 'false'} (${\n          filter.binding\n        } ${getGridColumnFilterConditionTypeName(filter.condition2.operator)} ${\n          filter.condition2.value\n        })`;\n      }\n    });\n    return output;\n  };\n\n  static persistODataFilters = (\n    filterDefinition: any,\n    oDataFilters: GridColumnFilterInterface[]\n  ) => {\n    if (oDataFilters?.length > 0) {\n      try {\n        oDataFilters.forEach(filter => {\n          let filterRefIndex = filterDefinition.filters.findIndex(\n            (x: any) => x.binding == filter.binding\n          );\n          const filterRef: any = {\n            binding: filter.binding,\n            type: filter.type,\n            condition1: {\n              operator: filter.condition1.operator,\n              value: filter.condition1.value,\n            },\n            and: filter.and,\n            condition2: filter.condition2\n              ? {\n                  operator: filter.condition2.operator,\n                  value: filter.condition2.value,\n                }\n              : {},\n          };\n          if (filterRefIndex != -1) {\n            filterDefinition.filters[filterRefIndex] = filterRef;\n          } else {\n            filterDefinition.filters.push(filterRef);\n          }\n        });\n        return filterDefinition;\n      } catch {}\n    } else {\n      return filterDefinition;\n    }\n  };\n\n  static getColumnCustomFilterFromFilterDefinition = (\n    gridFilter: wjcFilter.FlexGridFilter\n  ): ColumnCustomFilterInterface => {\n    const output: ColumnCustomFilterInterface = {};\n\n    try {\n      const filterDefinition = JSON.parse(gridFilter.filterDefinition);\n\n      filterDefinition.filters.forEach((filter: any) => {\n        const condition = filter.condition1;\n        if (condition) {\n          output[filter.binding] = {\n            type: condition.operator,\n            value: condition.value === null ? 'null' : condition.value.toString(),\n          };\n        }\n      });\n    } catch (e) {\n      console.error(e);\n    }\n\n    return output;\n  };\n\n  static dataCellCreateHandler = (\n    columnsList: GridColumnInterface[],\n    e: wjcGrid.FormatItemEventArgs,\n    cellFormatCallback: GridComponent['cellFormatCallback']\n  ) => {\n    const value = e.panel.getCellData(e.row, e.col, false);\n    const isNumber = wjCore.isNumber(value);\n    const binding = e.panel.columns[e.col].binding;\n    const columnConfig = columnsList.find(x => x.binding === binding);\n\n    if (!columnConfig) return;\n\n    if (cellFormatCallback) {\n      const result = cellFormatCallback(columnConfig, value, e.getRow().dataItem);\n      if (result) {\n        wjCore.addClass(\n          e.cell,\n          'grid__cell--' +\n            (result.style && result.style !== 'both' ? result.style + '-' : '') +\n            result.state\n        );\n      }\n    }\n\n    if (columnConfig.isLtr) {\n      wjCore.addClass(e.cell, 'is-ltr');\n    }\n    const numberConfig = columnConfig.numberConfig;\n    if (isNumber || columnConfig.dataType == GridColumnDataTypes.NUMBER || numberConfig) {\n      wjCore.addClass(e.cell, 'is-number');\n\n      if (numberConfig) {\n        if (numberConfig.hasHightStyles) {\n          const config =\n            typeof numberConfig.hasHightStyles == 'object'\n              ? (numberConfig.hasHightStyles as GridNumberColumnConfig)\n              : null;\n          if (isNumber) {\n            if (value > (config?.base || 0)) {\n              wjCore.addClass(e.cell, 'is-high-' + (config?.style || 'back'));\n            }\n          } else {\n            if (/^\\d+\\:*\\.*\\d*$/g.test(value) && !/^0+\\:*\\.*0*$/g.test(value)) {\n              wjCore.addClass(e.cell, 'is-high-' + (config?.style || 'back'));\n            }\n          }\n        }\n        if (columnConfig.numberConfig.hasLowStyles) {\n          const config =\n            typeof numberConfig.hasLowStyles == 'object'\n              ? (numberConfig.hasLowStyles as GridNumberColumnConfig)\n              : null;\n          if (isNumber) {\n            if (value < (config?.base || 0)) {\n              wjCore.addClass(e.cell, 'is-low-' + (config?.style || 'back'));\n            }\n          } else {\n            if (/^\\-\\d+\\:*\\.*\\d*$/g.test(value)) {\n              wjCore.addClass(e.cell, 'is-low-' + (config?.style || 'back'));\n            }\n          }\n        }\n      }\n    }\n  };\n}\n","import { HttpClient } from '@angular/common/http';\nimport { RestCollectionView } from '@grapecity/wijmo.rest';\nexport class WijmoRestCollectionView extends RestCollectionView {\n  constructor(\n    private http: HttpClient,\n    private server: string,\n    private url: string,\n    private map?: (response: any) => any,\n    private options?: any\n  ) {\n    super(options);\n  }\n\n  reload(): Promise<any[]> {\n    return this.getItems()\n  }\n\n  protected override getItems(): Promise<any[]> {\n    return new Promise<any>((resolve, reject) => {\n      this.http\n        .get(`${this.server}/${this.url}`, {\n          headers: this.options.requestHeaders,\n        })\n        .subscribe({\n          next: response => {\n            resolve(this.map(response));\n          },\n          error: err => {\n            reject(err);\n          },\n        });\n    });\n\n    // return fetch(`${this.server}/${this.url}`, {\n    //   method: 'GET',\n    //   headers: this.options.requestHeaders,\n    // })\n    //   .then((res) => res.json())\n    //   .then((json) => (this.map ? this.map(json) : json));\n  }\n}\n","import {\n  Component,\n  EventEmitter,\n  Input,\n  OnChanges,\n  OnInit,\n  Output,\n  SimpleChanges,\n} from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport { lastValueFrom } from 'rxjs';\nimport { GridColumnDataTypes } from '../../../../enums/grid-column-data-types';\nimport { GridColumnFilterConditionTypes } from '../../../../enums/grid-column-filter-condition-types';\nimport { convertEnumToArray } from '../../../../utils/convert-enum-to-array';\nimport { CustomFilterInterface } from '../grid.component.models';\nimport { GeneralActionInterface } from '../../.././../models/general-action.interface';\nimport { IconNameType } from '../../../../types/icon-name.type';\n\n@Component({\n  selector: 'ui-grid-custom-filter',\n  templateUrl: './grid-custom-filter.component.html',\n  styleUrls: ['./grid-custom-filter.component.scss'],\n})\nexport class GridCustomFilterComponent implements OnInit, OnChanges {\n  @Input() data: CustomFilterInterface;\n  @Input() columnDataType: GridColumnDataTypes;\n  @Input() isTree: boolean;\n  @Output() changeCallback = new EventEmitter<CustomFilterInterface>();\n\n  filterTypeMenuItems: GeneralActionInterface[] = [];\n\n  public get GridColumnFilterConditionTypes(): typeof GridColumnFilterConditionTypes {\n    return GridColumnFilterConditionTypes;\n  }\n\n  get GridColumnDataTypes(): typeof GridColumnDataTypes {\n    return GridColumnDataTypes;\n  }\n\n  constructor(private translateService: TranslateService) {}\n\n  async ngOnInit() {}\n\n  ngOnChanges(changes: SimpleChanges): void {\n    this.bindFilterType(this.columnDataType);\n    const dataChanges = changes['data'];\n    if (!dataChanges?.currentValue) {\n      this.data = {\n        type:\n          this.columnDataType == GridColumnDataTypes.STRING\n            ? GridColumnFilterConditionTypes.CONTAINS\n            : GridColumnFilterConditionTypes.EQUAL,\n        value: '',\n      };\n    }\n  }\n\n  menuClickHandler(event: Event) {\n    event.stopPropagation();\n  }\n\n  textboxHandler(keyword: string, event: Event) {\n    event.preventDefault();\n    event.stopPropagation();\n    if (this.data.value != keyword && keyword !== null && keyword !== undefined) {\n      this.data.value = keyword;\n      this.filterChanged(keyword, this.data.type);\n    }\n  }\n\n  selectChangeHandler(value: string) {\n    this.data.value = value;\n    this.filterChanged(value, this.data.type);\n  }\n\n  filterTypeChangeHandler(type: GridColumnFilterConditionTypes) {\n    //if (type == this.data.type) return;\n    this.data.type = type;\n    if (this.data.value) this.filterChanged(this.data.value, type);\n  }\n\n  private filterChanged(value: string, type: GridColumnFilterConditionTypes) {\n    this.changeCallback.emit({ value: value, type: type });\n  }\n\n  private async bindFilterType(columnDataType: GridColumnDataTypes) {\n    let filterTypeList = convertEnumToArray(GridColumnFilterConditionTypes);\n    if (this.isTree) {\n      filterTypeList = filterTypeList.filter(\n        x => x.value === GridColumnFilterConditionTypes.CONTAINS\n      );\n    } else {\n      switch (columnDataType) {\n        case GridColumnDataTypes.STRING:\n          filterTypeList = filterTypeList.filter(\n            x =>\n              x.value != GridColumnFilterConditionTypes.GREATER_THAN &&\n              x.value != GridColumnFilterConditionTypes.GREATER_THAN_OR_EQUAL &&\n              x.value != GridColumnFilterConditionTypes.LESS_THAN &&\n              x.value != GridColumnFilterConditionTypes.LESS_THAN_OR_EQUAL\n          );\n          break;\n        case GridColumnDataTypes.NUMBER:\n          filterTypeList = filterTypeList.filter(\n            x =>\n              x.value != GridColumnFilterConditionTypes.CONTAINS &&\n              x.value != GridColumnFilterConditionTypes.NOT_CONTAINS &&\n              x.value != GridColumnFilterConditionTypes.ENDS_WITH &&\n              x.value != GridColumnFilterConditionTypes.STARTS_WITH\n          );\n          break;\n        case GridColumnDataTypes.BOOLEAN:\n          filterTypeList = filterTypeList.filter(\n            x =>\n              x.value == GridColumnFilterConditionTypes.EQUAL ||\n              x.value == GridColumnFilterConditionTypes.NOT_EQUAL\n          );\n          break;\n        case GridColumnDataTypes.ARRAY:\n          filterTypeList = filterTypeList.filter(\n            x =>\n              x.value == GridColumnFilterConditionTypes.EQUAL ||\n              x.value == GridColumnFilterConditionTypes.NOT_EQUAL\n          );\n          break;\n        case GridColumnDataTypes.DATE:\n          filterTypeList = filterTypeList.filter(\n            x =>\n              x.value == GridColumnFilterConditionTypes.EQUAL ||\n              x.value == GridColumnFilterConditionTypes.NOT_EQUAL\n          );\n          break;\n        case GridColumnDataTypes.OBJECT:\n          filterTypeList = filterTypeList.filter(\n            x =>\n              x.value == GridColumnFilterConditionTypes.EQUAL ||\n              x.value == GridColumnFilterConditionTypes.NOT_EQUAL\n          );\n          break;\n      }\n    }\n\n    this.filterTypeMenuItems = await Promise.all(\n      filterTypeList.map(\n        async (data): Promise<GeneralActionInterface> => ({\n          id: data.value.toString(),\n          click: () => {\n            this.filterTypeChangeHandler(data.value);\n          },\n          icon: { fararuIcon: { name: this.getIconName(data.value) } },\n          text: await lastValueFrom(this.translateService.get(`filterTypes.${data.label}`)),\n        })\n      )\n    );\n  }\n\n  private getIconName(input: GridColumnFilterConditionTypes): IconNameType {\n    switch (input) {\n      case GridColumnFilterConditionTypes.EQUAL:\n        return 'equal';\n\n      case GridColumnFilterConditionTypes.NOT_EQUAL:\n        return 'not-equal';\n\n      case GridColumnFilterConditionTypes.GREATER_THAN:\n        return 'arrow-right';\n\n      case GridColumnFilterConditionTypes.GREATER_THAN_OR_EQUAL:\n        return 'arrow-equal-1';\n\n      case GridColumnFilterConditionTypes.LESS_THAN:\n        return 'arrow-left';\n\n      case GridColumnFilterConditionTypes.LESS_THAN_OR_EQUAL:\n        return 'arrow-equal-2';\n\n      case GridColumnFilterConditionTypes.STARTS_WITH:\n        return 'start-with';\n\n      case GridColumnFilterConditionTypes.ENDS_WITH:\n        return 'end-with';\n\n      case GridColumnFilterConditionTypes.CONTAINS:\n        return 'included';\n\n      case GridColumnFilterConditionTypes.NOT_CONTAINS:\n        return 'not-included';\n    }\n  }\n}\n","<ui-dropdown #customFilterMenu [contentTemplateRef]=\"menuTemplate\"> </ui-dropdown>\n<div class=\"grid-custom-filter\" (click)=\"menuClickHandler($event)\">\n  <button\n    type=\"button\"\n    class=\"grid-custom-filter__selector\"\n    [dropdownTriggerFor]=\"customFilterMenu\"\n    varient=\"outline\"\n    color=\"primary\"\n    size=\"small\"\n  >\n    <ui-fararu-icon\n      *ngIf=\"data?.type == GridColumnFilterConditionTypes.EQUAL\"\n      class=\"grid-custom-filter__icon\"\n      [name]=\"'equal'\"\n      [size]=\"'x2'\"\n      [color]=\"'content-secondary'\"\n    ></ui-fararu-icon>\n    <ui-fararu-icon\n      *ngIf=\"data?.type == GridColumnFilterConditionTypes.NOT_EQUAL\"\n      class=\"grid-custom-filter__icon grid-custom-filter__icon--not\"\n      [name]=\"'not-equal'\"\n      [size]=\"'x2'\"\n      [color]=\"'content-secondary'\"\n    ></ui-fararu-icon>\n    <ui-fararu-icon\n      *ngIf=\"data?.type == GridColumnFilterConditionTypes.GREATER_THAN\"\n      class=\"grid-custom-filter__icon\"\n      [name]=\"'arrow-right'\"\n      [size]=\"'x2'\"\n      [color]=\"'content-secondary'\"\n    ></ui-fararu-icon>\n    <ui-fararu-icon\n      *ngIf=\"data?.type == GridColumnFilterConditionTypes.GREATER_THAN_OR_EQUAL\"\n      class=\"grid-custom-filter__icon\"\n      [name]=\"'arrow-equal-1'\"\n      [size]=\"'x2'\"\n      [color]=\"'content-secondary'\"\n    ></ui-fararu-icon>\n    <ui-fararu-icon\n      *ngIf=\"data?.type == GridColumnFilterConditionTypes.LESS_THAN\"\n      class=\"grid-custom-filter__icon\"\n      [name]=\"'arrow-left'\"\n      [size]=\"'x2'\"\n      [color]=\"'content-secondary'\"\n    ></ui-fararu-icon>\n    <ui-fararu-icon\n      *ngIf=\"data?.type == GridColumnFilterConditionTypes.LESS_THAN_OR_EQUAL\"\n      class=\"grid-custom-filter__icon\"\n      [name]=\"'arrow-equal-2'\"\n      [size]=\"'x2'\"\n      [color]=\"'content-secondary'\"\n    ></ui-fararu-icon>\n    <ui-fararu-icon\n      *ngIf=\"data?.type == GridColumnFilterConditionTypes.STARTS_WITH\"\n      class=\"grid-custom-filter__icon\"\n      [name]=\"'start-with'\"\n      [size]=\"'x2'\"\n      [color]=\"'content-secondary'\"\n    ></ui-fararu-icon>\n    <ui-fararu-icon\n      *ngIf=\"data?.type == GridColumnFilterConditionTypes.ENDS_WITH\"\n      class=\"grid-custom-filter__icon\"\n      [name]=\"'end-with'\"\n      [size]=\"'x2'\"\n      [color]=\"'content-secondary'\"\n    ></ui-fararu-icon>\n    <ui-fararu-icon\n      *ngIf=\"data?.type == GridColumnFilterConditionTypes.CONTAINS\"\n      class=\"grid-custom-filter__icon\"\n      [name]=\"'included'\"\n      [size]=\"'x2'\"\n      [color]=\"'content-secondary'\"\n    ></ui-fararu-icon>\n    <ui-fararu-icon\n      *ngIf=\"data?.type == GridColumnFilterConditionTypes.NOT_CONTAINS\"\n      class=\"grid-custom-filter__icon\"\n      [name]=\"'not-included'\"\n      [size]=\"'x2'\"\n      [color]=\"'content-secondary'\"\n    ></ui-fararu-icon>\n  </button>\n  <div class=\"grid-custom-filter__content\">\n    <ui-textbox\n      class=\"grid-custom-filter__element\"\n      [value]=\"data?.value || null\"\n      [size]=\"'tiny'\"\n      [hideBorder]=\"true\"\n      #txtHeaderInput\n      (blurCallback)=\"textboxHandler(txtHeaderInput.value, $event)\"\n      (enterCallback)=\"textboxHandler(txtHeaderInput.value, $event)\"\n      [currencyConfig]=\"columnDataType == GridColumnDataTypes.NUMBER ? { precision: 3 } : null\"\n      *ngIf=\"\n        columnDataType == GridColumnDataTypes.STRING || columnDataType == GridColumnDataTypes.NUMBER\n      \"\n    ></ui-textbox>\n    <ui-select\n      class=\"grid-custom-filter__element grid-custom-filter__element--select\"\n      [value]=\"data?.value || ''\"\n      [size]=\"'tiny'\"\n      [hideBorder]=\"true\"\n      [options]=\"[\n        { id: '', text: 'checkboxTypes.all' | translate },\n        { id: 'true', text: 'checkboxTypes.checked' | translate },\n        { id: 'false', text: 'checkboxTypes.unchecked' | translate }\n      ]\"\n      #slcHeaderInput\n      (onChangeCalback)=\"selectChangeHandler(slcHeaderInput.value)\"\n      *ngIf=\"columnDataType == GridColumnDataTypes.BOOLEAN\"\n    ></ui-select>\n  </div>\n</div>\n\n<ng-template #menuTemplate>\n  <ui-sub-menu [items]=\"filterTypeMenuItems\"></ui-sub-menu>\n</ng-template>\n","import { Pipe, PipeTransform } from '@angular/core';\nimport {\n  GeneralActionInterface,\n  GeneralIconActionInterface,\n} from '../../../models/general-action.interface';\n\n@Pipe({\n  name: 'gridActionColumnWidth',\n})\nexport class GridActionColumnWidthPipe implements PipeTransform {\n  transform(\n    moreMenuItems: GeneralActionInterface[],\n    hasEditButton: boolean,\n    hasExpandButton: boolean,\n    hasCustomButton: boolean,\n    moreActions: unknown[],\n    iconActions: GeneralIconActionInterface[]\n  ): number {\n    const buttonWidth = 24;\n    return (\n      (hasEditButton ? buttonWidth : 0) +\n      (hasExpandButton ? buttonWidth : 0) +\n      (hasCustomButton ? buttonWidth : 0) +\n      (moreMenuItems?.length > 0 || moreActions?.length > 0 ? buttonWidth : 0) +\n      (iconActions?.length || 0) * buttonWidth +\n      8\n    );\n  }\n}\n","import {\n  AfterViewInit,\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  EventEmitter,\n  Input,\n  OnChanges,\n  OnDestroy,\n  OnInit,\n  Output,\n  SimpleChanges,\n  ViewChild,\n  ViewEncapsulation,\n} from '@angular/core';\nimport {\n  closest,\n  createElement,\n  getElement,\n  hidePopup,\n  removeChild,\n  showPopup,\n} from '@grapecity/wijmo';\nimport * as wjcGrid from '@grapecity/wijmo.grid';\nimport * as wjcGridDetail from '@grapecity/wijmo.grid.detail';\nimport * as wjcFilter from '@grapecity/wijmo.grid.filter';\nimport {} from '@grapecity/wijmo.grid.filter';\nimport * as wjcGridXlsx from '@grapecity/wijmo.grid.xlsx';\nimport { ListBox } from '@grapecity/wijmo.input';\nimport { ODataCollectionView, ODataVirtualCollectionView } from '@grapecity/wijmo.odata';\nimport * as wjcXlsx from '@grapecity/wijmo.xlsx';\n\nimport { HttpClient } from '@angular/common/http';\nimport { CellMaker } from '@grapecity/wijmo.grid.cellmaker';\nimport { Selector } from '@grapecity/wijmo.grid.selector';\nimport { TranslateService } from '@ngx-translate/core';\nimport { HttpHeaderNames } from '../../../constants/http-header-names';\nimport { SessionNames } from '../../../constants/session-names';\nimport { GridColumnDataTypes } from '../../../enums/grid-column-data-types';\nimport {\n  GeneralActionInterface,\n  GeneralIconActionInterface,\n} from '../../../models/general-action.interface';\nimport { GridColumnFilterInterface } from '../../../models/grid-column-filter.interface';\nimport { GridColumnInterface } from '../../../models/grid-column.interface';\nimport { GridConfigInterface } from '../../../models/grid-config.interface';\nimport { GridDetailColumnInterface } from '../../../models/grid-detail-column.interface';\nimport { ApplyExpandCollapse, SaveExpandCollapse } from '../../../utils/helpers';\nimport {\n  convertPersianCharsToArabic,\n  convertPersianToEnglishNumbers,\n} from '../../../utils/lang-utils';\nimport { propertyOf } from '../../../utils/property-of';\nimport { FararuToastService } from '../../toast/fararu-toast.service';\nimport { Sizes } from '../icon/icon.component';\nimport { GridComponentHelpers as Helpers } from './grid.component.helpers';\nimport {\n  ColumnCustomFilterInterface,\n  CustomFilterInterface,\n  GridCellFormatCallbackOutputInterface,\n} from './grid.component.models';\nimport { WijmoRestCollectionView } from './wijmo-rest-collcetion-view';\nimport { isNil } from '../../../utils/is-nil';\n\n@Component({\n  selector: 'ui-grid',\n  templateUrl: './grid.component.html',\n  styleUrls: ['./grid.component.scss'],\n  encapsulation: ViewEncapsulation.None,\n})\nexport class GridComponent implements OnInit, OnChanges, AfterViewInit, OnDestroy {\n  iconSize = Sizes;\n  @Input() identityFieldName: string = 'id';\n  @Input() oDataServer: string;\n  @Input() oDataTable: string;\n  @Input() oDataEntity: string;\n  @Input() oDataHttpHeaders: { [key: string]: string };\n  @Input() oDataFilters: GridColumnFilterInterface[];\n  @Input() defaultFilters: GridColumnFilterInterface[];\n  @Input() oDataFilterDefinition?: string;\n  @Input() oDataIsFullLoad: boolean;\n  @Input() quickFilterKeys: string[];\n  @Input() config: GridConfigInterface | undefined;\n  @Input() items: any[];\n  @Input() childItemsPath: string[] | string;\n  @Input() customIconName: string;\n  //todo: typecheck for moreactions\n  /** deprecated */\n  @Input() moreActions: { title: string; callback: any }[] = [];\n  @Input() moreMenuItems: GeneralActionInterface[] = [];\n  @Input() iconActions: GeneralIconActionInterface[] = [];\n  @Input() isReorderActive: boolean = false;\n  @Input() reorderFieldName: string = 'rowIndex';\n  @Input() reorderCondition: (item: any, item2: any) => boolean;\n  @Input() collapseRows?: boolean;\n  @Input() collapseLevel?: number;\n  @Input() gridId: string;\n  @Input() showGroupingPanel: boolean;\n  @Input() hideODataDefaultLoading: boolean;\n  @Input() hasRowNumber: boolean = true;\n  @Input() hideCheckboxInCheckableGrid: boolean;\n  @Input() multipleSelect: boolean;\n  @Input() gridHasColumnPicker: boolean = false;\n  @Input() footerAggregateData: { [key: string]: number };\n  @Input() hideHeaderCustomFilter?: boolean;\n  @Input() showDeleteButton: boolean = true;\n  @Input() showEditButton: boolean = true;\n  @Input() transformer?: (response: any) => any;\n  @Input() apiServer?: string;\n  @Input() apiUrl?: string;\n  @Input() apiHeaders?: { [name: string]: string };\n  @Input() showFilters: boolean = true;\n  @Input() getDetailItemsCallBack: (data: any, rowIndex: number) => any[];\n  @Input() rowHasDetailCallBack: (data: any) => boolean;\n  @Input() detailColumnsConfig: GridDetailColumnInterface[] = [];\n  @Input() multiExpand: boolean = true;\n  @Input() mode: 'default' | 'menu' = 'default';\n  @Input() isActive: boolean = true;\n  @Input() rowFormatCallback: (data: any) => GridCellFormatCallbackOutputInterface | null;\n  @Input() cellFormatCallback: (\n    config: GridColumnInterface,\n    cellData: any,\n    rowData: any\n  ) => GridCellFormatCallbackOutputInterface | null;\n  @Input() columnPickerInMenu?: boolean;\n\n  @Output() editCallback = new EventEmitter<any>();\n  @Output() deleteCallback = new EventEmitter<any>();\n  @Output() customCallback = new EventEmitter<any>();\n  @Output() loadStartCallback = new EventEmitter<null>();\n  @Output() loadCallback = new EventEmitter<any>();\n  @Output() loadErrorCallback = new EventEmitter<any>();\n  @Output() checkCallback = new EventEmitter<any>();\n  @Output() rowSelectCallback = new EventEmitter<any>();\n  @Output() rowDeleteCallback = new EventEmitter<any>();\n  @Output() cellEditCallback = new EventEmitter<any>();\n  // todo: rename calback to callback\n  @Output() rowsClickedItemCalback = new EventEmitter<any>();\n  @Output() rowsDoubleClicked = new EventEmitter<any>();\n  @Output() filterAppliedCallback = new EventEmitter<wjcFilter.FlexGridFilter>();\n  @Output() keydownCallback = new EventEmitter<any>();\n  @Output() onRowOrderChange = new EventEmitter<{ [key: number | string]: any }>();\n  @Output() columnsListChange = new EventEmitter<any>();\n\n  _oldSelection = 0;\n  reviewCurrentTabKey: string;\n  isOData: boolean;\n  hasEditButton: boolean;\n  hasExpandButton: boolean;\n  hasDeleteButton: boolean;\n  hasCustomButton: boolean;\n  hasRowSelection: boolean;\n  hasAggregation: boolean;\n  hasCheckbox: boolean;\n  isGridEditMode: boolean;\n  expandRows: boolean = true;\n  showEmptyMessage: boolean;\n  showLoading: boolean;\n\n  oDataItems: ODataCollectionView;\n  oDataVirtualItems: ODataVirtualCollectionView;\n  selector: Selector = null;\n  dataMaps: any = {};\n\n  gridItems: any[];\n\n  readonly defaultRowNumberColumnName: string = 'DefaultRowNumberColumn';\n  readonly actionColumnName: string = 'ActionColumn';\n  readonly endPlaceholderColumnName: string = 'EndPlaceholderColumn';\n  columnsList: GridColumnInterface[] = [];\n  gridFilter: wjcFilter.FlexGridFilter;\n  columnCustomFilter: ColumnCustomFilterInterface = {};\n\n  tplImage = CellMaker.makeImage({});\n\n  @ViewChild('grid', { static: true }) grid: wjcGrid.FlexGrid;\n  @ViewChild('columnPicker', { static: true }) columnPicker: ListBox;\n  @ViewChild('gridColumnMeasureElementRef', { static: true })\n  gridColumnMeasureElementRef: ElementRef<HTMLSpanElement>;\n\n  private _isDragEnabled: boolean = true;\n  private _dragSrc: HTMLElement = null;\n  private _dragDst: HTMLElement = null;\n  private columnPickerProgrssing: boolean = false;\n  private filterAppliedCallbackTimeout: any;\n  private lastSelectedRowIndex?: number | null = null;\n  private onReloadSelectedRowIndex?: number | null = null;\n  private _lastSelectedRows?: any;\n  private _columnListLastChangedTime?: number;\n\n  restCollectionView: WijmoRestCollectionView;\n\n  isTree = false;\n  dragIndex: number;\n\n  isColumnPickerShow = false;\n  selectionMode: wjcGrid.SelectionMode = wjcGrid.SelectionMode.None;\n\n  get GridColumnDataTypes(): typeof GridColumnDataTypes {\n    return GridColumnDataTypes;\n  }\n\n  constructor(\n    private cd: ChangeDetectorRef,\n    private toast: FararuToastService,\n    private translateService: TranslateService,\n    private http: HttpClient\n  ) {}\n\n  //#region life cycle hooks\n\n  async ngOnInit() {\n    this.grid.rows.defaultSize = 30;\n    this.grid.columnHeaders.rows.defaultSize = 60;\n  }\n\n  ngOnDestroy(): void {\n    // Clean up tooltip element\n    if (this.tooltipElement && this.tooltipElement.parentNode) {\n      this.tooltipElement.parentNode.removeChild(this.tooltipElement);\n      this.tooltipElement = null;\n    }\n\n    // Clean up timeout\n    if (this.tooltipTimeout) {\n      clearTimeout(this.tooltipTimeout);\n      this.tooltipTimeout = null;\n    }\n\n    // Clean up event delegation listeners\n    if (this.grid && this.grid.hostElement) {\n      this.grid.hostElement.removeEventListener('mouseover', this.handleTooltipMouseOver);\n      this.grid.hostElement.removeEventListener('mouseout', this.handleTooltipMouseOut);\n    }\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    this.hasEditButton = this.editCallback.observed && this.showEditButton;\n    this.hasDeleteButton = this.deleteCallback.observed && this.showDeleteButton;\n    this.hasCheckbox = this.checkCallback.observed && !this.hideCheckboxInCheckableGrid;\n    this.hasExpandButton = this.getDetailItemsCallBack != undefined;\n    this.hasRowSelection =\n      this.rowSelectCallback.observed ||\n      this.rowDeleteCallback.observed ||\n      this.rowsClickedItemCalback.observed ||\n      this.config?.allowDelete;\n    this.isGridEditMode = this.cellEditCallback.observed || this.config?.allowAddNew;\n    this.hasCustomButton = this.customCallback.observed;\n    this.hasAggregation = this.config?.columns?.columns?.some((x: any) => x.aggregate >= 0);\n\n    setTimeout(() => {\n      if (this.isReorderActive) {\n        this.selectionMode = wjcGrid.SelectionMode.Row;\n      } else if (this.hasRowSelection && !this.isGridEditMode)\n        this.selectionMode = wjcGrid.SelectionMode.Row;\n      else if (this.multipleSelect) {\n        this.selectionMode = wjcGrid.SelectionMode.ListBox;\n      } else this.selectionMode = wjcGrid.SelectionMode.None;\n    }, 1);\n\n    this.isOData = this.oDataServer?.length > 0 && this.oDataTable?.length > 0;\n\n    if (changes['moreActions'] && !this.moreMenuItems.length) {\n      this.moreMenuItems = this.moreActions.map(item => ({\n        text: item.title,\n        click: (event, args) => {\n          item.callback(args);\n        },\n      }));\n    }\n\n    if (this.hasDeleteButton && !this.moreMenuItems.some(x => x.id == 'gridDeleteOption')) {\n      this.moreMenuItems.push({\n        id: 'gridDeleteOption',\n        type: 'delete',\n        click: (event, args) => {\n          this.deleteHandler(args);\n        },\n      });\n    }\n\n    this.isTree = !!this.childItemsPath;\n\n    if (changes.hasOwnProperty('items')) {\n      this._lastSelectedRows = null;\n      this.lastSelectedRowIndex = null;\n      this.showLoading = false;\n      this.showEmptyMessage = false;\n      const items = changes['items'];\n      this.expandRows = items.firstChange;\n      if (!this.expandRows) {\n        this.refreshGridWithPersistingExpandState(items.currentValue);\n      } else {\n        this.gridItems = items.currentValue;\n      }\n\n      this.cd.detectChanges();\n    }\n\n    if (changes[propertyOf<GridComponent>('config')]) {\n      this._setColumnList();\n    }\n\n    if (changes['isActive'] && !this.isActive) {\n      this.clear();\n    }\n\n    if (\n      this.apiServer &&\n      this.apiUrl &&\n      this.isActive &&\n      (changes[propertyOf<GridComponent>('apiServer')] ||\n        changes[propertyOf<GridComponent>('apiUrl')] ||\n        changes[propertyOf<GridComponent>('apiHeaders')])\n    ) {\n      this.createRestCollectionView();\n    } else if (\n      this.isOData &&\n      this.isActive &&\n      (changes.hasOwnProperty('oDataServer') ||\n        changes.hasOwnProperty('oDataTable') ||\n        changes.hasOwnProperty('oDataEntity') ||\n        changes.hasOwnProperty('oDataFilters') ||\n        changes.hasOwnProperty('oDataFilterDefinition') ||\n        changes.hasOwnProperty('oDataHttpHeaders'))\n    ) {\n      this.showEmptyMessage = false;\n      this.lastSelectedRowIndex = null;\n      this._lastSelectedRows = null;\n      let loadStartCallbackEmitted = true;\n\n      this.loadStartCallback.emit();\n      this.showLoading = true;\n      const oDataOptions = {\n        requestHeaders: {\n          Authorization: `Bearer ` + sessionStorage.getItem(SessionNames.USER),\n          AccYear: sessionStorage.getItem(SessionNames.ACC_YEAR),\n          CenterId: sessionStorage.getItem(SessionNames.CENTER),\n          ...(this.oDataHttpHeaders || {}),\n        },\n        filterDefinition:\n          this.oDataFilterDefinition || Helpers.convertODataFiltersToString(this.oDataFilters),\n        loaded: (sender: any, e: any) => {\n          Object.keys(this.orderMap).forEach(itemId => {\n            const arr = this.grid.collectionView.sourceCollection;\n            const item = this.orderMap[itemId];\n            const src = arr.findIndex((row: any) => row['id'] == itemId);\n            if (src >= 0)\n              this.grid.collectionView.deferUpdate(() => {\n                let item = arr[src];\n                arr.splice(src, 1);\n                arr.splice(item[this.reorderFieldName], 0, item);\n                this.grid.collectionView.moveCurrentToPosition(item[this.reorderFieldName]);\n                item[this.reorderFieldName] = item[this.reorderFieldName];\n              });\n          });\n\n          this.loadCallback.emit({\n            totalItemCount: sender.totalItemCount,\n            rows: this.grid.rows,\n          });\n\n          this.showEmptyMessage = !this.grid.rows.length || !sender.totalItemCount;\n\n          this.showLoading = false;\n          loadStartCallbackEmitted = false;\n\n          if (this.onReloadSelectedRowIndex != null && this.onReloadSelectedRowIndex >= 0) {\n            this.grid.select(this.onReloadSelectedRowIndex, 0);\n            this.onReloadSelectedRowIndex = null;\n          }\n          this.autoSizeRowNumberColumn();\n          setTimeout(() => this.autoSizeColumns(), 0);\n          this.selectionChangeHandler();\n        },\n        onLoading: () => {\n          if (loadStartCallbackEmitted) return;\n          this.loadStartCallback.emit();\n          this.showLoading = true;\n        },\n        onError: (e: any) => {\n          this.oDataErrorHandler(e);\n          this.loadErrorCallback.emit(e);\n          this.showLoading = false;\n          loadStartCallbackEmitted = false;\n        },\n      };\n\n      const currentRouteAccessNodeId = sessionStorage.getItem(\n        SessionNames.CURRENT_ROUTE_ACCESS_NODE_ID\n      );\n      if (currentRouteAccessNodeId) {\n        const requestHeaders = oDataOptions.requestHeaders as any;\n        requestHeaders[HttpHeaderNames.ACCESS_NODE_ID] = currentRouteAccessNodeId;\n      }\n\n      if (this.oDataEntity) {\n        const requestHeaders = oDataOptions.requestHeaders as any;\n        requestHeaders[HttpHeaderNames.ENTITY] = this.oDataEntity;\n      }\n\n      if (this.gridFilter?.filterDefinition) this.gridFilter.filterDefinition = null;\n\n      if (this.oDataIsFullLoad) {\n        this.oDataItems = new ODataCollectionView(this.oDataServer, this.oDataTable, oDataOptions);\n      } else {\n        this.oDataVirtualItems = new ODataVirtualCollectionView(\n          this.oDataServer,\n          this.oDataTable,\n          oDataOptions\n        );\n\n        const oDataTable = changes['oDataTable'];\n        if (oDataTable && !oDataTable.previousValue) {\n          this.removeScrollPositionChangedHandler();\n          this.addScrollPositionChangedHandler();\n        }\n      }\n    } else if (this.isActive) {\n      this.config?.columns?.columns?.forEach((column: any) => {\n        if (column.dataMap) {\n          this.items?.forEach(item => {\n            if (item[column.binding] instanceof Array) {\n              const selectedItem = item[column.binding].find((x: any) => x.selected);\n              item[column.binding + '_items'] = [...item[column.binding]];\n              item[column.binding] = selectedItem ? selectedItem[column.dataMap.value] : null;\n            }\n          });\n          const dataMap = new wjcGrid.DataMap(\n            column.dataMap.items\n              ? column.dataMap.items\n              : this._getDropDownItems(\n                  column.binding,\n                  column.dataMap.value,\n                  column.dataMap.label,\n                  column.dataMap.parentKeyName\n                ),\n            column.dataMap.value,\n            column.dataMap.label\n          );\n          dataMap.getDisplayValues = (dataItem: any) => {\n            let list = column.dataMap.items\n              ? column.dataMap.items\n              : this._getDropDownItems(\n                  column.binding,\n                  column.dataMap.value,\n                  column.dataMap.label,\n                  column.dataMap.parentKeyName\n                );\n            if (column.dataMap.parentKeyName)\n              list = list.filter(\n                (item: any) => item.parentId == dataItem[column.dataMap.parentKeyName]\n              );\n            return list.map((data: any) => data[column.dataMap.label]);\n          };\n          this.dataMaps[column.binding] = dataMap;\n        }\n      });\n    }\n\n    if (changes.hasOwnProperty(propertyOf<GridComponent>('isReorderActive'))) {\n      this.orderMap = {};\n    }\n\n    if (changes[propertyOf<GridComponent>('footerAggregateData')]) {\n      this.grid.refresh();\n    }\n\n    if (changes['items'] && this.items?.length > 0) {\n      setTimeout(() => this.autoSizeColumns(), 1);\n    }\n  }\n\n  createRestCollectionView() {\n    this.showEmptyMessage = false;\n    this.lastSelectedRowIndex = null;\n    let loadStartCallbackEmitted = true;\n    this.loadStartCallback.emit();\n    this.showLoading = true;\n\n    this.restCollectionView = new WijmoRestCollectionView(\n      this.http,\n      this.apiServer,\n      this.apiUrl,\n      this.transformer,\n      {\n        requestHeaders: {\n          Authorization: `Bearer ` + sessionStorage.getItem(SessionNames.USER),\n          AccYear: sessionStorage.getItem(SessionNames.ACC_YEAR),\n          CenterId: sessionStorage.getItem(SessionNames.CENTER),\n          ...(this.apiHeaders || {}),\n        },\n\n        loaded: (sender: any, e: any) => {\n          this.loadCallback.emit({\n            totalItemCount: sender._view.length,\n            rows: this.grid.rows,\n          });\n\n          this.showEmptyMessage = !this.grid.rows.length || !sender._view.length;\n\n          this.showLoading = false;\n          loadStartCallbackEmitted = false;\n\n          if (this.onReloadSelectedRowIndex != null && this.onReloadSelectedRowIndex >= 0) {\n            this.grid.select(this.onReloadSelectedRowIndex, 0);\n            this.onReloadSelectedRowIndex = null;\n          }\n\n          // this.selectionChangeHandler();\n        },\n        onLoading: () => {\n          if (loadStartCallbackEmitted) return;\n          this.loadStartCallback.emit();\n          this.showLoading = true;\n        },\n        onError: (e: any) => {\n          this.oDataErrorHandler(e);\n          this.loadErrorCallback.emit(e);\n          this.showLoading = false;\n          loadStartCallbackEmitted = false;\n        },\n      }\n    );\n  }\n\n  ngAfterViewInit() {\n    this.gridFilter = new wjcFilter.FlexGridFilter(this.grid, {\n      showFilterIcons: this.showFilters,\n      editingFilter: (s: any, e: any) => {\n        const binding = e.getColumn().binding;\n        const column = this.columnsList.find(column => column.binding == binding);\n        if (column && column.filteringOptions) {\n          let valueFilter = s.getColumnFilter(binding).valueFilter;\n          valueFilter.uniqueValues = column.filteringOptions;\n        }\n      },\n    });\n    this.gridFilter.defaultFilterType = wjcFilter.FilterType.Condition;\n\n    if (!this.isOData && this.defaultFilters?.length) {\n      this.gridFilter.filterDefinition = `{\"defaultFilterType\":1,\"filters\":${JSON.stringify(\n        this.defaultFilters\n      )}}`;\n      this.updateColumnCustomFilter();\n    }\n\n    this.gridFilter.filterChanged.addHandler(() => {\n      this.gridFilter.filterDefinition = JSON.stringify(\n        Helpers.persistODataFilters(JSON.parse(this.gridFilter.filterDefinition), this.oDataFilters)\n      );\n    });\n\n    this.gridFilter.filterApplied.addHandler(() => {\n      clearTimeout(this.filterAppliedCallbackTimeout);\n      // این تایم اوت برای جلوگیری از تکرار اجرای این خطوط گذاشته شده است. بر اساس بررسی انجام شده این تکرار از خود کتابخانه است\n      this.filterAppliedCallbackTimeout = setTimeout(() => {\n        this.filterAppliedCallback.emit(this.gridFilter);\n        this.updateColumnCustomFilter();\n      }, 200);\n    });\n\n    this.gridHasColumnPicker && this.initColumnPicker();\n\n    this._hideRowNumberColumnFilter();\n    this._hideActionColumnFilter();\n    this._hidePlaceholderColumnFilter();\n  }\n\n  //#endregion\n\n  // hideFilters() {\n  //   const customFilters = this.el.nativeElement.querySelectorAll(\n  //     '.grid-custom-filter'\n  //   );\n  //   customFilters.forEach((element: any) => {\n  //     this.renderer.setStyle(element, 'display', 'none');\n  //   });\n\n  //   const allFilterButtons = this.el.nativeElement.querySelectorAll(\n  //     '.wj-btn.wj-btn-glyph.wj-right.wj-elem-filter'\n  //   );\n  //   allFilterButtons.forEach((element: any) => {\n  //     this.renderer.setStyle(element, 'display', 'none');\n  //   });\n  // }\n\n  columnCustomFilterChangeHandler(\n    columnData: GridColumnInterface,\n    filterData: CustomFilterInterface\n  ) {\n    const columnDataType: GridColumnDataTypes = <any>(\n      this.grid.columns.getColumn(columnData.binding).dataType\n    );\n\n    const filterDefinition = JSON.parse(this.gridFilter.filterDefinition);\n\n    let filterRefIndex = filterDefinition.filters.findIndex(\n      (x: any) => x.binding == columnData.binding\n    );\n\n    if (\n      filterData.value ||\n      typeof filterData.value == 'number' ||\n      typeof filterData.value == 'boolean'\n    ) {\n      const filterRef: any = {\n        binding: columnData.binding,\n        type: 'condition',\n        condition1: {\n          operator: filterData.type,\n          value:\n            columnDataType != GridColumnDataTypes.STRING &&\n            /^\\d+|true|false$/g.test(filterData.value)\n              ? window.eval(filterData.value)\n              : filterData.value,\n        },\n        and: true,\n        condition2: {},\n      };\n      if (filterRefIndex != -1) {\n        //update\n        filterDefinition.filters[filterRefIndex] = filterRef;\n      } else {\n        //set filter\n        filterDefinition.filters.push(filterRef);\n      }\n    } else if (filterRefIndex != -1) {\n      filterDefinition.filters.splice(filterRefIndex, 1);\n    }\n\n    if (this.isTree) {\n      this.searchTree(columnData, filterData.value);\n    } else {\n      this.gridFilter.filterDefinition = JSON.stringify(\n        Helpers.persistODataFilters(filterDefinition, this.oDataFilters)\n      );\n      this.gridFilter.apply();\n    }\n  }\n\n  originalItems: any[] = undefined;\n  searchTree(columnData: GridColumnInterface, search: string): void {\n    if (this.originalItems == undefined) {\n      if (this.items?.length > 0) this.originalItems = this.items;\n      else this.originalItems = this.grid.collectionView.items;\n    }\n\n    let result = [];\n    if (!search) result = [...this.originalItems];\n    else {\n      this.originalItems.forEach((gridItem: any) => {\n        const data = this.recursiveSearch(gridItem, search, columnData.binding);\n        if (data) {\n          result.push(data);\n        }\n      });\n    }\n\n    if (this.items?.length > 0) this.gridItems = result;\n    else this.grid.itemsSource = result;\n\n    this.cd.detectChanges();\n  }\n\n  recursiveSearch(tree: any, search: string, column: string): any {\n    search = convertPersianCharsToArabic(convertPersianToEnglishNumbers(search));\n    let items: any[] = [];\n    if (tree?.items?.length) {\n      tree.items.forEach((item: any) => {\n        let result = this.recursiveSearch(item, search, column);\n        if (result) items.push(result);\n      });\n    }\n    if (\n      tree.hasOwnProperty(column) &&\n      convertPersianCharsToArabic(\n        convertPersianToEnglishNumbers(tree[column]?.toString())\n      ).includes(search) &&\n      !items.length\n    ) {\n      return { ...tree, items: [] };\n    } else return items?.length ? { ...tree, items: items } : null;\n  }\n\n  getODataFilters(): GridColumnFilterInterface[] {\n    return Helpers.persistODataFilters(\n      JSON.parse(this.gridFilter.filterDefinition),\n      this.oDataFilters\n    ).filters.filter(\n      (f: any) =>\n        f.binding != 'ActionColumn' &&\n        f.binding != 'DefaultRowNumberColumn' &&\n        f.binding != 'EndPlaceholderColumn'\n    );\n  }\n\n  getODataFiltersEncoded(): string {\n    return this.getVirtualODataFilterDefinition();\n  }\n\n  getColumnDataType(cell: any): GridColumnDataTypes {\n    const output: GridColumnDataTypes = cell?.col?.dataType || GridColumnDataTypes.STRING;\n\n    return output;\n  }\n\n  getRows() {\n    return this.grid.rows.map(row => row.dataItem);\n  }\n\n  getSelectedRows() {\n    return this.grid.rows.filter(row => row.isSelected).map(row => row.dataItem);\n  }\n\n  getOdataCount() {\n    let isNull = 0;\n    let isFetched = 0;\n    let isSelected = 0;\n    this.grid.rows.forEach(row => {\n      const keys = Object.keys(row.dataItem);\n      if (keys.length == 1 && keys[0] == '_id') isNull++;\n      else isFetched++;\n      if (row.isSelected) isSelected++;\n    });\n    return { isNull, isFetched, isSelected, all: this.grid.rows.length };\n  }\n\n  collapseGroupsToLevel(level: number) {\n    this.grid.collapseGroupsToLevel(level);\n  }\n\n  setRowAsSelected(index: number) {\n    return this.grid.select(index, 1);\n  }\n\n  flexInitialized(flexgrid: wjcGrid.FlexGrid) {\n    this.grid = flexgrid;\n\n    // Set up event delegation for tooltips\n    this.setupTooltipEventDelegation();\n\n    if (this.keydownCallback.observed) {\n      const _this = this;\n      this.grid.hostElement.addEventListener('keydown', function (e) {\n        _this.keydownCallback.emit(e);\n      });\n    }\n\n    if (this.hasCheckbox) {\n      this.selector = new Selector(flexgrid, {\n        itemChecked: () => {\n          const { isSelected, isFetched } = this.getOdataCount();\n          if (isSelected > isFetched) flexgrid.rows.forEach(row => (row.isSelected = true));\n\n          this.checkCallback.emit(\n            flexgrid.rows.filter(r => r.isSelected).map(data => data.dataItem)\n          );\n        },\n      });\n    }\n\n    let treeIndicatorCellBinding: string | null = null;\n    flexgrid.formatItem.addHandler((s, e) => {\n      if (e.panel == s.cells && !this.isGridEditMode) {\n        Helpers.dataCellCreateHandler(this.columnsList, e, this.cellFormatCallback);\n      }\n\n      if (this.isTree && e.panel === s.cells) {\n        const row: { hasChildren: boolean; isCollapsed: boolean } = s.rows[e.row] as any;\n        const cell = e.cell;\n        const binding = e.panel.columns[e.col].binding;\n\n        if (row.hasChildren) {\n          const value = e.panel.getCellData(e.row, e.col, false);\n          const icon = row.isCollapsed\n            ? '<svg class=\"wj-tree-indicator-icon\" width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M9.32019 3.93701V14.437\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M4.07031 9.18701H14.5703\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>'\n            : '<svg class=\"wj-tree-indicator-icon\" width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M4.07031 9.18701H14.5703\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>';\n\n          const treeIcon = cell.querySelector('.wj-elem-collapse, .wj-elem-expand');\n          if (treeIcon) {\n            treeIndicatorCellBinding = binding;\n            treeIcon.innerHTML = icon;\n            cell.innerHTML =\n              treeIcon.outerHTML + '<span class=\"wj-tree-value-cell\">' + value + '</span>';\n          } else if (treeIndicatorCellBinding === binding) {\n            cell.innerHTML = '<span class=\"wj-tree-value-cell\">' + value + '</span>';\n          }\n        }\n        if (treeIndicatorCellBinding === binding) {\n          cell.classList.add('wj-tree-indicator-cell');\n        }\n      }\n\n      // add row number\n      if (this.hasRowNumber) {\n        if (this.hasCheckbox) {\n          // remove checkbox after initialize\n          if (this.isReorderActive && e.panel.cellType == wjcGrid.CellType.RowHeader) {\n            e.cell.textContent = null;\n          }\n\n          if (e.panel.columns[e.col].binding == this.defaultRowNumberColumnName) {\n            if (e.panel.cellType == wjcGrid.CellType.ColumnFooter) {\n              e.cell.classList.add('wj-cell--total-count');\n              e.cell.title = this.translateService.instant('general.totalCount');\n              e.cell.textContent = this._getTotalCountText();\n            }\n          }\n        } else if (!this.isTree) {\n          if (e.panel.cellType == wjcGrid.CellType.RowHeader) {\n            e.cell.textContent = (e.row + 1).toString();\n          } else if (e.panel.cellType == wjcGrid.CellType.BottomLeft) {\n            const text = this._getTotalCountText();\n            e.cell.classList.add('wj-cell--total-count');\n            e.cell.title = this.translateService.instant('general.totalCount');\n            e.cell.textContent = text;\n            e.panel.columns[e.col].width = (text?.length ?? 1) * 12 + 12;\n          }\n        }\n      }\n\n      if (\n        e.panel.cellType == wjcGrid.CellType.ColumnHeader &&\n        e.panel.columns[e.col].binding == this.actionColumnName\n      ) {\n        e.cell.classList.add('wj-header--is-action-column');\n      }\n\n      // add aggregation\n      if (\n        e.panel == s.columnFooters &&\n        !this.isTree &&\n        e.panel.columns[e.col].binding !== this.defaultRowNumberColumnName\n      ) {\n        if (this.footerAggregateData) {\n          e.cell.textContent = this.footerAggregateData.hasOwnProperty(\n            e.panel.columns[e.col].binding\n          )\n            ? this.footerAggregateData[e.panel.columns[e.col].binding]?.toLocaleString()\n            : '';\n        } else {\n          e.cell.textContent = '';\n        }\n      }\n\n      // Store tooltip data in cell attributes for event delegation\n      if (\n        e.panel.cellType == wjcGrid.CellType.Cell &&\n        e.panel.columns[e.col].binding !== this.defaultRowNumberColumnName &&\n        e.panel.columns[e.col].binding !== this.actionColumnName &&\n        e.panel.columns[e.col].binding !== this.endPlaceholderColumnName\n      ) {\n        const columnHeader = e.panel.columns[e.col].header;\n        const cellValue = e.panel.getCellData(e.row, e.col, false);\n\n        if (columnHeader) {\n          let tooltipText = columnHeader;\n          if (cellValue !== null && cellValue !== undefined && cellValue !== '') {\n            let displayValue = '';\n            if (typeof cellValue === 'string') {\n              if (cellValue.length > 20) {\n                displayValue = cellValue;\n              }\n            }\n\n            if (displayValue !== '') tooltipText += `\\n\\n${displayValue}`;\n          }\n\n          // Store tooltip data in data attributes for event delegation\n          e.cell.setAttribute('data-tooltip', tooltipText);\n        }\n      }\n    });\n\n    flexgrid.columnFooters.rows.push(new wjcGrid.GroupRow());\n\n    if (!this.isOData) {\n      flexgrid.cellEditEnded.addHandler(e => {\n        const changedRow = e.collectionView.currentItem;\n        this.cellEditCallback.emit(changedRow);\n      });\n      flexgrid.deletingRow.addHandler(e => {\n        const changedRow = e.collectionView.currentItem;\n        this.rowDeleteCallback.emit(changedRow);\n      });\n    }\n  }\n\n  generateColumnClassName(config: GridColumnInterface): string | null {\n    if (config.binding == this.defaultRowNumberColumnName) {\n      return 'default-row-number';\n    }\n\n    if (config.binding == this.actionColumnName) {\n      return 'action-column';\n    }\n\n    if (config.dataType == GridColumnDataTypes.IMAGE) {\n      return 'cell-img';\n    }\n\n    return null;\n  }\n\n  private tooltipElement: HTMLElement | null = null;\n  private handleTooltipMouseOver: (event: MouseEvent) => void;\n  private handleTooltipMouseOut: (event: MouseEvent) => void;\n  private tooltipTimeout: any = null;\n\n  private setupTooltipEventDelegation(): void {\n    // Use event delegation on the grid container\n    if (this.grid && this.grid.hostElement) {\n      this.handleTooltipMouseOver = (event: MouseEvent) => {\n        const target = event.target as HTMLElement;\n        const cell = target.closest('.wj-cell');\n\n        if (cell && cell.hasAttribute('data-tooltip')) {\n          const tooltipText = cell.getAttribute('data-tooltip');\n          if (tooltipText) {\n            // Clear any existing timeout\n            if (this.tooltipTimeout) {\n              clearTimeout(this.tooltipTimeout);\n            }\n\n            // Set 500ms delay before showing tooltip\n            this.tooltipTimeout = setTimeout(() => {\n              this.showTooltip(event, tooltipText);\n            }, 500);\n          }\n        }\n      };\n\n      this.handleTooltipMouseOut = (event: MouseEvent) => {\n        const target = event.target as HTMLElement;\n        const cell = target.closest('.wj-cell');\n\n        if (cell && cell.hasAttribute('data-tooltip')) {\n          // Clear the timeout if tooltip hasn't shown yet\n          if (this.tooltipTimeout) {\n            clearTimeout(this.tooltipTimeout);\n            this.tooltipTimeout = null;\n          }\n\n          // Hide tooltip immediately if it's visible\n          this.hideTooltip();\n        }\n      };\n\n      this.grid.hostElement.addEventListener('mouseover', this.handleTooltipMouseOver);\n      this.grid.hostElement.addEventListener('mouseout', this.handleTooltipMouseOut);\n    }\n  }\n\n  private showTooltip(event: MouseEvent, text: string): void {\n    if (!this.tooltipElement) {\n      this.tooltipElement = document.createElement('div');\n      this.tooltipElement.className = 'grid-tooltip';\n      document.body.appendChild(this.tooltipElement);\n    }\n\n    this.tooltipElement.textContent = text;\n    this.tooltipElement.style.left = event.clientX + 10 + 'px';\n    this.tooltipElement.style.top = event.clientY - 10 + 'px';\n    this.tooltipElement.style.opacity = '1';\n    this.tooltipElement.style.visibility = 'visible';\n  }\n\n  private hideTooltip(): void {\n    if (this.tooltipElement) {\n      this.tooltipElement.style.opacity = '0';\n      this.tooltipElement.style.visibility = 'hidden';\n    }\n  }\n\n  hasActionColumn(): boolean {\n    if (this.isReorderActive) return false;\n    return (\n      this.hasEditButton ||\n      this.hasExpandButton ||\n      this.hasCustomButton ||\n      this.moreActions?.length > 0 ||\n      this.moreMenuItems?.length > 0 ||\n      this.iconActions?.length > 0\n    );\n  }\n\n  selectionChangeHandler() {\n    if (\n      (!this._lastSelectedRows && !this.grid.selectedItems.length) ||\n      JSON.stringify(this._lastSelectedRows) === JSON.stringify(this.grid.selectedItems)\n    ) {\n      return;\n    }\n    this._lastSelectedRows = this.grid.selectedItems;\n\n    if (this.multipleSelect) {\n      this.rowSelectCallback.emit(this.grid.selectedItems);\n    } else {\n      this.rowSelectCallback.emit(this.grid.selectedItems[0]);\n    }\n    this.lastSelectedRowIndex = this.grid.selection.row;\n  }\n\n  editHandler(item?: any) {\n    if (!this.isReorderActive) this.editCallback.emit(item);\n  }\n\n  deleteHandler(item?: any) {\n    this.deleteCallback.emit(item);\n  }\n\n  customeEvent(item?: any, e?: any) {\n    e.preventDefault();\n    this.customCallback.emit(item);\n  }\n\n  resetRequestHeader = async () => {\n    return new Promise(resolve => {\n      const requestHeaders = {\n        Authorization: `Bearer ` + sessionStorage.getItem(SessionNames.USER),\n        AccYear: sessionStorage.getItem(SessionNames.ACC_YEAR),\n        CenterId: sessionStorage.getItem(SessionNames.CENTER),\n      };\n\n      if (this.oDataItems) {\n        resolve((this.oDataItems.requestHeaders = requestHeaders));\n      } else {\n        resolve((this.oDataVirtualItems.requestHeaders = requestHeaders));\n      }\n    });\n  };\n\n  reload = async () => {\n    this.onReloadSelectedRowIndex = this.lastSelectedRowIndex;\n    this.grid.select(-1, -1);\n    if (this.oDataItems) {\n      this.oDataItems.refresh();\n      this.oDataItems.load();\n    } else if (this.oDataVirtualItems) {\n      this.oDataVirtualItems.refresh();\n      this.oDataVirtualItems.load();\n    } else if (this.apiUrl && this.apiServer) {\n      this.createRestCollectionView();\n    }\n  };\n\n  clear() {\n    if (this.oDataItems) {\n      this.oDataItems = null;\n    } else if (this.oDataVirtualItems) {\n      this.oDataVirtualItems = null;\n    } else {\n      this.items = [];\n    }\n  }\n\n  filter(e: any) {\n    let key = (<HTMLInputElement>e.target).value.toLowerCase();\n\n    if (this.isOData) {\n      let filterDefinition = this.createODataFilterDefinition(key);\n      if (this.quickFilterKeys?.length > 1) {\n        filterDefinition = `(${filterDefinition})`;\n      }\n\n      (this.oDataItems || this.oDataVirtualItems).filterDefinition = filterDefinition;\n    } else {\n      this.grid.collectionView.filter = (item: any) => {\n        return key.length == 0 || this.checkKeys(item, key);\n      };\n    }\n  }\n\n  handleDragStart(e: DragEvent) {\n    this._dragSrc = <HTMLElement>closest(e.target, '.wj-listbox-item');\n    if (this._dragSrc) {\n      e.dataTransfer.setData('text', this._dragSrc.innerHTML);\n      e.dataTransfer.effectAllowed = 'move';\n    }\n  }\n\n  handleDragOver(e: DragEvent) {\n    const dragOver = <HTMLElement>closest(e.target, '.wj-listbox-item');\n    if (this._dragDst && this._dragDst !== dragOver) {\n      this._removeDropMarker();\n    }\n    if (dragOver && dragOver !== this._dragSrc) {\n      e.preventDefault();\n      e.dataTransfer.dropEffect = 'move';\n\n      this._dragDst = dragOver;\n\n      const src = this._getElementIndex(this._dragSrc);\n      const dst = this._getElementIndex(this._dragDst);\n      this._removeDropMarker();\n      this._addDropMarker(dst > src);\n    } else {\n      this._dragDst = null;\n    }\n  }\n\n  handleDrop(e: DragEvent) {\n    if (this._dragSrc && this._dragDst) {\n      e.preventDefault();\n      const src = this._getElementIndex(this._dragSrc);\n      const dst = this._getElementIndex(this._dragDst);\n      this.grid.columns.moveElement(src, dst);\n    }\n  }\n\n  handleDragEnd(e: DragEvent) {\n    this._dragSrc = null;\n    this._dragDst = null;\n    this._removeDropMarker();\n  }\n\n  onLoadedRows(e: wjcGrid.CellRangeEventArgs) {\n    if ((this.collapseRows && this.expandRows) || this.rowFormatCallback) {\n      this.grid.rows?.forEach((row: wjcGrid.Row) => {\n        if (\n          this.collapseRows &&\n          this.expandRows &&\n          (isNil(this.collapseLevel) || (row as any)?.level > this.collapseLevel)\n        ) {\n          (row as any).isCollapsed = true;\n        }\n\n        if (this.rowFormatCallback) {\n          const rowData = row.dataItem;\n          const regexPlaceholder = /^{\"_id\":[^}]+}$/g;\n          if (!regexPlaceholder.test(JSON.stringify(rowData))) {\n            const result = this.rowFormatCallback(rowData);\n            if (result) {\n              row.cssClass =\n                'grid__cell--' +\n                (result.style && result.style !== 'both' ? result.style + '-' : '') +\n                result.state;\n            }\n          }\n        }\n      });\n    }\n  }\n\n  onRowsClicked = (grid: wjcGrid.FlexGrid) => {\n    // this.dpGrid.showDetail(0,false);\n    this.rowsClickedItemCalback.emit(grid.selectedRows[0]?.dataItem);\n  };\n\n  onRowDoubleclicked = (grid: wjcGrid.FlexGrid) => {\n    // this.dpGrid.showDetail(0,false);\n    this.rowsDoubleClicked.emit(grid.selectedRows[0]?.dataItem);\n  };\n\n  dragColumnHandler(args: { col: number; data: { col: number } }) {\n    // this.columnsList[args.col] = this.columnsList.splice(\n    //   args.data.col,\n    //   1,\n    //   this.columnsList[args.col]\n    // )[0];\n\n    this._emitColumnsListChange();\n  }\n\n  resizeColumnHandler(args: { col: number; data: { newSize: number } }) {\n    // this.columnsList[args.col].width = args.data.newSize;\n    this._emitColumnsListChange();\n  }\n\n  refreshGridWithPersistingExpandState = (items: any) => {\n    var rows = SaveExpandCollapse(this.grid);\n    this.assignGridItemsAsync(items).then(() => {\n      this.grid = ApplyExpandCollapse(this.grid, rows);\n    });\n  };\n\n  assignGridItemsAsync = (items: any) => {\n    return new Promise(resolve => {\n      this.gridItems = items;\n      resolve(null);\n    });\n  };\n\n  getGridLayout(): GridConfigInterface {\n    const columns: GridConfigInterface['columns'] = JSON.parse(this.grid.columnLayout);\n    this._removeActionAndDefaultRowNumberColumns(columns.columns);\n    return {\n      columns: columns,\n      filterDefinition: this.gridFilter.filterDefinition\n        ? JSON.parse(this.gridFilter.filterDefinition)\n        : null,\n    };\n  }\n\n  restoreGridLayout(obj: GridConfigInterface | null) {\n    this._columnListLastChangedTime = new Date().getTime(); // این لاین برای جلوگیری از تکرار بی دلیل اجرای متد ذکر شده در هنگام انتخاب یک چیدمان اضافه شده است : columnPickerCheckedItemsChanged\n    let columnsList = [...this.config.columns.columns];\n\n    if (obj?.columns) {\n      columnsList = obj.columns.columns;\n      for (let index = 0; index < columnsList.length; index++) {\n        const item = columnsList[index];\n        const orginalItem = this.config.columns.columns.find(x => x.binding === item.binding);\n        if (orginalItem) {\n          columnsList[index] = { ...orginalItem, width: item.width, visible: item.visible };\n        } else {\n          columnsList.splice(index, 1);\n          index--;\n        }\n      }\n\n      // FIXME: این خط از کد برای حذف ستون های اکشن و نامبر ذخیره شده در چیدمان قبلی اضافه شده است\n      this._removeActionAndDefaultRowNumberColumns(columnsList);\n    }\n\n    this.columnsList = [];\n    setTimeout(() => {\n      this.columnsList = columnsList;\n      setTimeout(() => {\n        const emptyFilterValue = `{\"defaultFilterType\":1,\"filters\":[{\"binding\":\"${this.defaultRowNumberColumnName}\",\"filterType\":0},{\"binding\":\"${this.actionColumnName}\",\"filterType\":0}]}`;\n        this.gridFilter.filterDefinition = obj?.filterDefinition\n          ? JSON.stringify(obj.filterDefinition)\n          : emptyFilterValue;\n        this.gridFilter.apply();\n      }); // این تایم اوت رو خوده کتابخانه ویژمو گفته بزارید که مطمئن شه ستون به شکل مناسب رندر شده باشند\n    }, 100); // FIXME: این تایم اوت به دلیل رفتار خارج از انتظار گرید در عدم به روز رسانی ستون ها به این شکل پیاده شده، با توجه به زمان کم تنها راه عملی همین روش بود.\n  }\n\n  autoSizeColumns() {\n    this.columnsList.forEach((column, index) => {\n      if (!column.width && column.autoSize == true) {\n        this.grid.autoSizeColumn(index);\n      }\n    });\n  }\n\n  autoSizeRowNumberColumn() {\n    if (this.hasRowNumber && this.hasCheckbox) {\n      this.grid.autoSizeColumn(0);\n    }\n  }\n\n  getVirtualODataFilterDefinition(): string {\n    return this.oDataVirtualItems?.filterDefinition;\n  }\n\n  clearFilter() {\n    this.gridFilter.filterDefinition = null;\n  }\n\n  togglePopup(ref: any) {\n    if (this.columnPickerProgrssing) return;\n\n    try {\n      this.columnPickerProgrssing = true;\n      const host = this.columnPicker.hostElement;\n      if (!host.offsetHeight) {\n        showPopup(host, ref, false, true, false);\n        this.isColumnPickerShow = true;\n        this.columnPicker.focus();\n      } else {\n        hidePopup(host, true, true);\n        this.isColumnPickerShow = false;\n        this.grid.focus();\n      }\n    } catch (error) {\n    } finally {\n      setTimeout(() => {\n        this.columnPickerProgrssing = false;\n      }, 300);\n    }\n  }\n\n  appendColumnPickerMenuIn(container: HTMLElement) {\n    const hostElement = this.columnPicker.hostElement;\n    container.appendChild(hostElement);\n  }\n\n  exportToExcel() {\n    if (this.grid) {\n      wjcGridXlsx.FlexGridXlsxConverter.saveAsync(\n        this.grid,\n        {\n          includeColumnHeaders: true,\n          includeCellStyles: true,\n          formatItem: this._exportFormatItem,\n        },\n        this.gridId + '.xlsx',\n        () => {},\n        () => {},\n        () => {},\n        true\n      );\n    }\n  }\n\n  focus() {\n    this.grid.focus();\n  }\n\n  private _exportFormatItem(args: wjcGridXlsx.XlsxFormatItemEventArgs) {\n    var p = args.panel,\n      row = args.row,\n      col = args.col,\n      xlsxCell = args.xlsxCell,\n      cell: HTMLElement;\n\n    if (p.cellType === wjcGrid.CellType.Cell) {\n      if (p.columns[col].binding === 'color') {\n        if (xlsxCell.value) {\n          if (!xlsxCell.style.font) {\n            xlsxCell.style.font = {};\n          }\n          xlsxCell.style.font.color = (<string>xlsxCell.value).toLowerCase();\n        }\n      } else if (p.columns[col].binding === 'active' && p.rows[row] instanceof wjcGrid.GroupRow) {\n        cell = args.getFormattedCell();\n        xlsxCell.value = cell.textContent.trim();\n        xlsxCell.style.hAlign = wjcXlsx.HAlign.Right;\n      }\n    }\n  }\n\n  private removeScrollPositionChangedHandler() {\n    if (!this.grid) return;\n    this.grid.scrollPositionChanged.removeHandler(this.scrollPositionChangedHandler);\n  }\n\n  private addScrollPositionChangedHandler() {\n    if (!this.grid) return;\n    this.grid.scrollPositionChanged.addHandler(this.scrollPositionChangedHandler);\n  }\n\n  private scrollPositionChangedHandler = () => {\n    if (!this.grid) return;\n    let rng = this.grid.viewRange;\n    this.oDataVirtualItems.setWindow(rng.row, rng.row2);\n  };\n\n  private checkKeys(data: any, key: string): boolean {\n    const length = this.quickFilterKeys?.length;\n    if (length) {\n      for (let i = 0; i < length; i++) {\n        if (data[this.quickFilterKeys[i]]?.toString().toLowerCase().indexOf(key) > -1) {\n          return true;\n        }\n      }\n    }\n    return false;\n  }\n\n  private createODataFilterDefinition(key: string): string {\n    const length = this.quickFilterKeys?.length;\n    let output = '';\n    if (length) {\n      for (let i = 0; i < length; i++) {\n        if (i > 0) output += ' or ';\n        output += `contains(${this.quickFilterKeys[i]},'${key}')`;\n      }\n    }\n    return output;\n  }\n\n  private _getDropDownItems(\n    columnName: string,\n    valueName: string,\n    labelName: string,\n    parentKeyName: string\n  ): any[] {\n    const arr: any[] = [];\n    if (!this.isOData) {\n      this.items?.forEach(item => {\n        if (item[columnName + '_items'] instanceof Array) {\n          item[columnName + '_items'].forEach((element: any) => {\n            arr.push({\n              [valueName]: element[valueName],\n              [labelName]: element[labelName],\n              parentId: item[parentKeyName],\n            });\n          });\n        }\n      });\n    }\n    return arr;\n  }\n\n  private initColumnPicker = () => {\n    if (this.grid) {\n      this.columnPicker.itemsSource = this.grid.columns;\n      this.columnPicker.checkedMemberPath = 'visible';\n      this.columnPicker.displayMemberPath = 'header';\n      this.columnPicker.lostFocus.addHandler(() => {\n        if (!this.columnPickerInMenu) {\n          hidePopup(this.columnPicker.hostElement);\n          this.isColumnPickerShow = false;\n        }\n      });\n      this.columnPicker.formatItem.addHandler((s, e) => {\n        this._enableDragItem(e.item, this._isDragEnabled);\n      });\n    }\n  };\n\n  private _removeDropMarker() {\n    removeChild(getElement('.drop-marker'));\n  }\n\n  private _getElementIndex(element: Element): number {\n    const parent = element.parentElement;\n    const siblings = Array.prototype.slice.call(parent.children);\n    return siblings.indexOf(element);\n  }\n\n  private _addDropMarker(isAfterPos: boolean) {\n    const itemsGap = 10;\n    const width = 6;\n    const margin = itemsGap / width;\n    const height = this._dragDst.clientHeight;\n    const topPos = this._dragDst.offsetTop;\n    const leftPos = isAfterPos\n      ? this._dragDst.offsetLeft + this._dragDst.clientWidth + margin\n      : this._dragDst.offsetLeft - itemsGap + margin;\n    const css = `top:${topPos}px;left:${leftPos}px;height:${height}px;width:${width}px`;\n    const html = `<div class=\"drop-marker\" style=\"${css}\">&nbsp</div>`;\n    createElement(html, this.columnPicker.hostElement);\n  }\n\n  private _enableDragItem(item: Element, enabled: boolean) {\n    item.setAttribute('draggable', enabled.toString());\n  }\n\n  private oDataErrorHandler(error: any) {\n    const request = error.request;\n    const status = parseInt(request.status || 0);\n    let message = request.statusText;\n    try {\n      const response: any = JSON.stringify(request.response);\n      if (response.message) message = response.message;\n    } catch {}\n\n    switch (status) {\n      case 400: // bad request\n        this.showErrorMessage(message || 'درخواست ارسال شده معتبر نمی باشد.');\n        break;\n\n      case 401: // unauthorize\n        this.showErrorMessage('شناسه شما معتبر نمی باشد.');\n        break;\n\n      case 403: // forbidden\n        this.showErrorMessage('مجوز دسترسی به این برای شما وجود ندارد.');\n        break;\n\n      case 404: // not found\n        this.showErrorMessage('خطا در برقراری ارتباط به دلیل عدم وجود درخواست رخ داده است.');\n        break;\n\n      case 500: // server side error\n        this.showErrorMessage('خطای پیش بینی نشده از سمت سرور رخ داده است.');\n        break;\n\n      case 0:\n        this.showErrorMessage('خطا در برقراری ارتباط رخ داده است.');\n        break;\n    }\n  }\n\n  private showErrorMessage(message: string) {\n    this.toast.show({\n      type: 'error',\n      text: message,\n      closeByUser: true,\n    });\n  }\n\n  private updateColumnCustomFilter() {\n    const res = Helpers.getColumnCustomFilterFromFilterDefinition(this.gridFilter);\n\n    for (const key in this.columnCustomFilter) {\n      if (Object.prototype.hasOwnProperty.call(this.columnCustomFilter, key)) {\n        this.columnCustomFilter[key].value = undefined;\n      }\n    }\n\n    for (const key in res) {\n      if (Object.prototype.hasOwnProperty.call(res, key)) {\n        this.columnCustomFilter[key] = res[key];\n      }\n    }\n  }\n\n  columnPickerCheckedItemsChanged($event: any) {\n    // const newColumnList = this.getGridLayout().columns?.columns || [];\n    // this._removeActionAndDefaultRowNumberColumns(newColumnList);\n    // for (let index = 0, length = newColumnList.length; index < length; index++) {\n    //   const item = newColumnList[index];\n    //   if (item.binding != this.columnsList[index].binding) {\n    //     const findedIndex = newColumnList.findIndex(\n    //       x => x.binding === this.columnsList[index].binding\n    //     );\n    //     if (findedIndex != -1) {\n    //       this.columnsList[index] = this.columnsList.splice(\n    //         findedIndex,\n    //         1,\n    //         this.columnsList[index]\n    //       )[0];\n    //     }\n    //     break;\n    //   }\n    // }\n    if (!this.showLoading) {\n      this._emitColumnsListChange();\n    }\n  }\n\n  /*\n   * This function must contain a caching. Do not run intensive data in this callback function\n   */\n  rowHasDetailFn = (item: any) => {\n    if (this.rowHasDetailCallBack != undefined) return this.rowHasDetailCallBack(item?.dataItem);\n    else return false;\n  };\n\n  detailVisibilityMode: wjcGridDetail.DetailVisibilityMode =\n    wjcGridDetail.DetailVisibilityMode.Code;\n  detailProvider: wjcGridDetail.FlexGridDetailProvider;\n  /*\n   * This function must contain a caching. Do not run intensive data in this callback function\n   */\n  getDetailItemsByCallbackFunction(item: any, row: any): any[] {\n    if (this.getDetailItemsCallBack) return this.getDetailItemsCallBack(item, row.dataIndex);\n    else return [];\n  }\n\n  orderMap: { [key: number | string]: any } = {};\n  reordered: Set<number> = new Set<number>();\n\n  reorder(dest: 'up' | 'down') {\n    const src = this.grid.selection.row;\n    this.reordered.add(dest == 'up' ? src - 1 : src + 1);\n    let arr: any[] = this.grid.collectionView.sourceCollection;\n    this.grid.collectionView.deferUpdate(() => {\n      let item: any = undefined;\n      let item2 = undefined;\n      if (this.childItemsPath) {\n        let index: { value: number; siblings: any[] } = { value: 0, siblings: [] };\n        item = this.findItemInTreeByIndex(arr, src, index);\n        if (index.siblings) {\n          const itemIndex = index.siblings.findIndex(it => it == item);\n          if (itemIndex > 0 && dest == 'up') item2 = index.siblings[itemIndex - 1];\n          else if (itemIndex < index.siblings.length - 1 && dest == 'down')\n            item2 = index.siblings[itemIndex + 1];\n        }\n        if (!item || !item2) return;\n        if (this.reorderCondition == undefined || this.reorderCondition(item, item2)) {\n          const temp = { ...item };\n          Object.assign(item, item2);\n          Object.assign(item2, temp);\n        } else {\n          item = undefined;\n          item2 = undefined;\n        }\n      } else {\n        item = arr[src];\n        item2 = arr[dest == 'up' ? src - 1 : src + 1];\n        if (this.reorderCondition == undefined || this.reorderCondition(item, item2)) {\n          arr.splice(src, 1);\n          arr.splice(dest == 'up' ? src - 1 : src + 1, 0, item);\n        } else {\n          item = undefined;\n          item2 = undefined;\n        }\n      }\n      if (item == undefined || item2 == undefined) return;\n\n      this.grid.collectionView.moveCurrentToPosition(dest == 'up' ? src - 1 : src + 1);\n      const tRowIndex = item[this.reorderFieldName];\n      item[this.reorderFieldName] = item2[this.reorderFieldName];\n      item2[this.reorderFieldName] = tRowIndex;\n      this.orderMap[item[this.identityFieldName]] = item;\n      this.orderMap[item2[this.identityFieldName]] = item2;\n      this.onRowOrderChange.emit(this.orderMap);\n    });\n  }\n\n  findItemInTreeByIndex(item: any, src: number, index: { value: number; siblings: any[] }) {\n    let f: any = null;\n    if (index.value == src) {\n      return item;\n    } else if (item instanceof Array) {\n      for (let element of item) {\n        f = this.findItemInTreeByIndex(element, src, index);\n        if (f) {\n          return f;\n        }\n      }\n    } else if (item.items) {\n      for (let element of item.items) {\n        index.value++;\n        index.siblings = item.items;\n        f = this.findItemInTreeByIndex(element, src, index);\n        if (f) {\n          return f;\n        }\n      }\n    }\n\n    return null;\n  }\n\n  private _setColumnList() {\n    const columnsList = [...(this.config.columns?.columns || [])];\n\n    columnsList.forEach(item => {\n      if (!item.width) {\n        item.width = this._getColumnTextWidth(item.header || item.binding);\n      }\n    });\n\n    this.columnsList = columnsList;\n  }\n\n  private _getColumnTextWidth(text: string): number {\n    this.gridColumnMeasureElementRef.nativeElement.innerText = text;\n    const filterIconWidth = 20;\n    const padding = 16;\n    return this.gridColumnMeasureElementRef.nativeElement.offsetWidth + filterIconWidth + padding;\n  }\n\n  private _getTotalCountText() {\n    return (\n      this.grid.collectionView?.items?.length ||\n      this.oDataItems?._count ||\n      this.oDataVirtualItems?._count ||\n      0\n    ).toLocaleString();\n  }\n\n  private _removeActionAndDefaultRowNumberColumns(columnsList: typeof this.columnsList) {\n    const defaultRowNumberColumnIndex = columnsList.findIndex(\n      x => x.binding === this.defaultRowNumberColumnName\n    );\n    if (defaultRowNumberColumnIndex >= 0) {\n      columnsList.splice(defaultRowNumberColumnIndex, 1);\n    }\n\n    const actionColumnIndex = columnsList.findIndex(x => x.binding === this.actionColumnName);\n    if (actionColumnIndex >= 0) {\n      columnsList.splice(actionColumnIndex, 1);\n    }\n  }\n\n  private _emitColumnsListChange() {\n    const time = new Date().getTime();\n    if (this._columnListLastChangedTime && time - this._columnListLastChangedTime < 300) return;\n    this._columnListLastChangedTime = time;\n    this.columnsListChange.emit(JSON.parse(this.grid.columnLayout)?.columns);\n  }\n\n  private _hidePlaceholderColumnFilter() {\n    const col = this.grid.getColumn(this.endPlaceholderColumnName);\n    if (col) {\n      this.gridFilter.getColumnFilter(col).filterType = wjcFilter.FilterType.None;\n    }\n  }\n\n  private _hideActionColumnFilter() {\n    const col = this.grid.getColumn(this.actionColumnName);\n    if (col) {\n      this.gridFilter.getColumnFilter(col).filterType = wjcFilter.FilterType.None;\n    }\n  }\n\n  private _hideRowNumberColumnFilter() {\n    const col = this.grid.getColumn(this.defaultRowNumberColumnName);\n    if (col) {\n      this.gridFilter.getColumnFilter(col).filterType = wjcFilter.FilterType.None;\n    }\n  }\n\n  resetColumnFilters(): void {\n    if (this.gridFilter) {\n      this.grid.columns.forEach(column => {\n        const filter = this.gridFilter.getColumnFilter(column.binding);\n        if (filter) {\n          filter.clear();\n        }\n      });\n      this.gridFilter.apply();\n    }\n\n    this.columnCustomFilter = {};\n\n    this.showFilters = false;\n    setTimeout(() => (this.showFilters = true));\n  }\n\n  checkRowsByIndex(rows: number[]) {\n    if (!this.grid) {\n      console.warn('Grid not initialized');\n      return;\n    }\n    const checkedRows = [];\n    rows.forEach(rowIndex => {\n      if (rowIndex >= 0 && rowIndex < this.grid.rows.length) {\n        this.grid.rows[rowIndex].isSelected = true;\n        checkedRows.push(this.grid.rows[rowIndex].dataItem);\n      }\n    });\n    this.grid.invalidate();\n    this.checkCallback.emit(checkedRows);\n  }\n\n  uncheckRowsByIndex(rows: number[]) {\n    if (!this.grid) {\n      console.warn('Grid not initialized');\n      return;\n    }\n    const uncheckedRows = [];\n\n    rows.forEach(rowIndex => {\n      if (rowIndex >= 0 && rowIndex < this.grid.rows.length) {\n        this.grid.rows[rowIndex].isSelected = false;\n        uncheckedRows.push(this.grid.rows[rowIndex].dataItem);\n      }\n    });\n\n    this.grid.invalidate();\n    this.checkCallback.emit(this.grid.rows.filter(r => r.isSelected).map(data => data.dataItem));\n  }\n\n  checkRowsByCondition(condition: (row: any) => boolean) {\n    const checkedRows = [];\n    this.grid.rows.forEach(row => {\n      if (condition(row.dataItem)) {\n        row.isSelected = true;\n        checkedRows.push(row.dataItem);\n      } else {\n        row.isSelected = false;\n      }\n    });\n    this.grid.invalidate();\n    this.checkCallback.emit(checkedRows);\n  }\n}\n","<section class=\"grid\" [class.grid--is-vistual-loading-mode]=\"oDataVirtualItems\">\n  <header class=\"grid__grouping-panel\" *ngIf=\"showGroupingPanel\">\n    <wj-group-panel\n      style=\"display: block\"\n      [grid]=\"grid\"\n      [placeholder]=\"'general.gridGropingPlaceholder' | translate\"\n    >\n    </wj-group-panel>\n  </header>\n  <div class=\"grid__content\">\n    <span #gridColumnMeasureElementRef class=\"grid__column grid__column--measure\"></span>\n    <div class=\"grid__empty\" *ngIf=\"showEmptyMessage\">\n      <ui-no-data [size]=\"mode == 'default' ? 'large' : 'medium'\"></ui-no-data>\n    </div>\n    <ng-container *ngIf=\"!hideODataDefaultLoading\">\n      <ui-spinner [show]=\"showLoading\"></ui-spinner>\n    </ng-container>\n    <wj-flex-grid\n      #grid\n      [frozenColumns]=\"\n        isTree ? 0 : (hasRowNumber && hasCheckbox ? 1 : 0) + (!isTree && hasActionColumn() ? 1 : 0)\n      \"\n      (itemsSourceChanging)=\"_oldSelection = grid.selection.row\"\n      (itemsSourceChanged)=\"grid.select(_oldSelection, 0)\"\n      [allowAddNew]=\"config?.allowAddNew || false\"\n      [allowDelete]=\"config?.allowDelete || false\"\n      [isReadOnly]=\"!isGridEditMode\"\n      [allowResizing]=\"!isGridEditMode\"\n      [allowDragging]=\"!isGridEditMode\"\n      [selectionMode]=\"selectionMode\"\n      [itemsSource]=\"gridItems || oDataItems || oDataVirtualItems || restCollectionView\"\n      (initialized)=\"flexInitialized(grid)\"\n      (loadedRows)=\"onLoadedRows($event)\"\n      (selectionChanged)=\"selectionChangeHandler()\"\n      (click)=\"onRowsClicked(grid)\"\n      (dblclick)=\"onRowDoubleclicked(grid)\"\n      (draggedColumn)=\"dragColumnHandler($event)\"\n      (resizedColumn)=\"resizeColumnHandler($event)\"\n      [childItemsPath]=\"childItemsPath\"\n    >\n      <wj-flex-grid-column\n        *ngIf=\"hasRowNumber && hasCheckbox && !isTree\"\n        [header]=\"'#'\"\n        [binding]=\"defaultRowNumberColumnName\"\n        [width]=\"50\"\n        [cssClass]=\"'default-row-number'\"\n        [allowDragging]=\"false\"\n        [allowResizing]=\"false\"\n        [allowSorting]=\"false\"\n      >\n        <ng-template wjFlexGridCellTemplate [cellType]=\"'Cell'\" let-cell=\"cell\">\n          {{ cell.row.index + 1 }}\n        </ng-template>\n      </wj-flex-grid-column>\n      <wj-flex-grid-column\n        *ngIf=\"!isTree && hasActionColumn()\"\n        [header]=\"' '\"\n        [binding]=\"actionColumnName\"\n        [width]=\"\n          moreMenuItems\n            | gridActionColumnWidth\n              : hasEditButton\n              : hasExpandButton\n              : hasCustomButton\n              : moreActions\n              : iconActions\n        \"\n        [cssClass]=\"'action-column'\"\n        [allowDragging]=\"false\"\n        [allowResizing]=\"false\"\n        [allowSorting]=\"false\"\n      >\n        <ng-template\n          wjFlexGridCellTemplate\n          [cellType]=\"'Cell'\"\n          let-cell=\"cell\"\n          let-row=\"row\"\n          let-item=\"item\"\n          ><ng-container\n            [ngTemplateOutlet]=\"actionColumnTemplate\"\n            [ngTemplateOutletContext]=\"{\n              cell: cell,\n              row: row,\n              item: item\n            }\"\n          ></ng-container\n        ></ng-template>\n      </wj-flex-grid-column>\n\n      <wj-flex-grid-column\n        *ngFor=\"let item of columnsList; let i = index\"\n        [align]=\"item.align\"\n        [header]=\"item.header\"\n        [binding]=\"item.binding\"\n        [width]=\"item.width\"\n        [minWidth]=\"item.minWidth ? item.minWidth : 0\"\n        [visible]=\"item.visible !== false\"\n        [dataMap]=\"dataMaps[item.binding] ? dataMaps[item.binding] : null\"\n        [dataType]=\"item.dataType ? item.dataType : null\"\n        [format]=\"item.format\"\n        [isReadOnly]=\"item.isReadOnly ? item.isReadOnly : null\"\n        [aggregate]=\"item.aggregate || 0\"\n        [cellTemplate]=\"item.dataType == GridColumnDataTypes.IMAGE ? tplImage : null\"\n        [allowSorting]=\"true\"\n        [allowDragging]=\"true\"\n        [allowResizing]=\"true\"\n        [cssClass]=\"generateColumnClassName(item)\"\n      >\n        <ng-template\n          wjFlexGridCellTemplate\n          [cellType]=\"'ColumnHeader'\"\n          let-cell=\"cell\"\n          *ngIf=\"!hideHeaderCustomFilter && item.dataType != GridColumnDataTypes.IMAGE\"\n        >\n          <div class=\"grid__column-wrap\" [appTooltip]=\"item.header\" [appTooltipPosition]=\"'top'\">\n            <span class=\"grid__column\">{{ item.header }}</span>\n          </div>\n          <ui-grid-custom-filter\n            *ngIf=\"showFilters\"\n            [isTree]=\"isTree\"\n            [data]=\"columnCustomFilter[item.binding]\"\n            [columnDataType]=\"getColumnDataType(cell)\"\n            (changeCallback)=\"columnCustomFilterChangeHandler(item, $event)\"\n          ></ui-grid-custom-filter>\n        </ng-template>\n\n        <ng-template\n          wjFlexGridCellTemplate\n          [cellType]=\"'Cell'\"\n          let-cell=\"cell\"\n          *ngIf=\"item.dataType == GridColumnDataTypes.BOOLEAN && !isGridEditMode\"\n        >\n          <ui-checkbox [disabled]=\"true\" [checked]=\"cell.item[item.binding] == true\"></ui-checkbox>\n        </ng-template>\n      </wj-flex-grid-column>\n      <wj-flex-grid-column\n        *ngIf=\"isTree && hasActionColumn()\"\n        [header]=\"' '\"\n        [binding]=\"actionColumnName\"\n        [width]=\"\n          moreMenuItems\n            | gridActionColumnWidth\n              : hasEditButton\n              : hasExpandButton\n              : hasCustomButton\n              : moreActions\n              : iconActions\n        \"\n        [cssClass]=\"'action-column'\"\n        [allowDragging]=\"false\"\n        [allowResizing]=\"false\"\n        [allowSorting]=\"false\"\n      >\n        <ng-template\n          wjFlexGridCellTemplate\n          [cellType]=\"'Cell'\"\n          let-cell=\"cell\"\n          let-row=\"row\"\n          let-item=\"item\"\n          ><ng-container\n            [ngTemplateOutlet]=\"actionColumnTemplate\"\n            [ngTemplateOutletContext]=\"{\n              cell: cell,\n              row: row,\n              item: item\n            }\"\n          ></ng-container\n        ></ng-template>\n      </wj-flex-grid-column>\n      <wj-flex-grid-column\n        [header]=\"' '\"\n        [binding]=\"endPlaceholderColumnName\"\n        [width]=\"'*'\"\n        [cssClass]=\"'end-placeholder'\"\n        [allowDragging]=\"false\"\n        [allowResizing]=\"false\"\n        [allowSorting]=\"false\"\n        [allowMerging]=\"false\"\n      >\n      </wj-flex-grid-column>\n      <!-- Row detail -->\n      <ng-template\n        wjFlexGridDetail\n        [rowHasDetail]=\"rowHasDetailFn\"\n        #rowDetail=\"wjFlexGridDetail\"\n        [detailVisibilityMode]=\"'Code'\"\n        [maxHeight]=\"250\"\n        let-item=\"item\"\n        let-row=\"row\"\n      >\n        <wj-flex-grid\n          [itemsSource]=\"getDetailItemsByCallbackFunction(item, row)\"\n          [isReadOnly]=\"true\"\n        >\n          <wj-flex-grid-column\n            *ngFor=\"let item of detailColumnsConfig; let i = index\"\n            [align]=\"item.align\"\n            [header]=\"item.header\"\n            [binding]=\"item.binding\"\n            [width]=\"item.width\"\n            [visible]=\"true\"\n            [dataMap]=\"dataMaps[item.binding] ? dataMaps[item.binding] : null\"\n            [dataType]=\"item.dataType ? item.dataType : null\"\n            [format]=\"item.format\"\n            [isReadOnly]=\"true\"\n            [aggregate]=\"false\"\n            [cellTemplate]=\"item.dataType == GridColumnDataTypes.IMAGE ? tplImage : null\"\n            [cssClass]=\"generateColumnClassName(item)\"\n          >\n            <ng-template\n              wjFlexGridCellTemplate\n              [cellType]=\"'ColumnHeader'\"\n              let-cell=\"cell\"\n              *ngIf=\"\n                !hideHeaderCustomFilter &&\n                item.binding != defaultRowNumberColumnName &&\n                item.binding != actionColumnName &&\n                item.binding != endPlaceholderColumnName &&\n                item.dataType != GridColumnDataTypes.IMAGE\n              \"\n            >\n              <div\n                class=\"grid__column-wrap\"\n                [appTooltip]=\"item.header\"\n                [appTooltipPosition]=\"'top'\"\n              >\n                <span class=\"grid__column\">{{ item.header }}</span>\n              </div>\n            </ng-template>\n            <ng-template\n              wjFlexGridCellTemplate\n              [cellType]=\"'Cell'\"\n              let-cell=\"cell\"\n              *ngIf=\"item.binding == defaultRowNumberColumnName\"\n            >\n              {{ cell.row.index + 1 }}\n            </ng-template>\n            <ng-template\n              wjFlexGridCellTemplate\n              [cellType]=\"'Cell'\"\n              let-cell=\"cell\"\n              *ngIf=\"item.dataType == GridColumnDataTypes.BOOLEAN && !isGridEditMode\"\n            >\n              <ui-checkbox\n                [disabled]=\"true\"\n                [checked]=\"cell.item[item.binding] == true\"\n              ></ui-checkbox>\n            </ng-template>\n            <ng-template\n              wjFlexGridCellTemplate\n              [cellType]=\"'Cell'\"\n              let-cell=\"cell\"\n              *ngIf=\"item.binding == actionColumnName\"\n            >\n              <ng-container *ngIf=\"moreMenuItems.length > 0\">\n                <ui-button\n                  [dropdownTriggerFor]=\"dropdown\"\n                  [isIcon]=\"true\"\n                  varient=\"fill\"\n                  size=\"small\"\n                  [buttonType]=\"'button'\"\n                >\n                  <ui-icon\n                    style=\"display: inline-flex\"\n                    group=\"navigation\"\n                    name=\"expand_more\"\n                  ></ui-icon>\n                </ui-button>\n                <ui-dropdown #dropdown [contentTemplateRef]=\"moreMenuTemplate\" [data]=\"cell.item\">\n                </ui-dropdown>\n              </ng-container>\n              <ui-button\n                *ngIf=\"hasCustomButton\"\n                [buttonType]=\"'button'\"\n                [isIcon]=\"true\"\n                varient=\"outline\"\n                size=\"small\"\n                (clickCallback)=\"customeEvent(cell.item)\"\n                ><span style=\"display: inline-flex\"\n                  ><svg-icon [src]=\"'/assets/media/icons/' + customIconName + '.svg'\"></svg-icon>\n                </span>\n              </ui-button>\n              <ui-button\n                *ngFor=\"let action of iconActions\"\n                [isIcon]=\"true\"\n                [buttonType]=\"'button'\"\n                varient=\"fill\"\n                [iconColor]=\"action.icon.color\"\n                size=\"small\"\n                (clickCallback)=\"action.callback(cell, cell.item)\"\n                [title]=\"action.title\"\n              >\n                <ui-fararu-icon\n                  *ngIf=\"action.icon.fararuIcon; else oldIcons\"\n                  [name]=\"action.icon.fararuIcon.name\"\n                  [size]=\"action.icon.fararuIcon.size\"\n                  [color]=\"action.icon.fararuIcon.color\"\n                ></ui-fararu-icon>\n                <ng-template #oldIcons>\n                  <ui-icon\n                    style=\"display: inline-flex\"\n                    [type]=\"action.icon.type\"\n                    [group]=\"action.icon.group\"\n                    [name]=\"action.icon.name\"\n                    [size]=\"iconSize.X1\"\n                  ></ui-icon>\n                </ng-template>\n              </ui-button>\n              <ui-button\n                *ngIf=\"hasEditButton\"\n                [buttonType]=\"'button'\"\n                [isIcon]=\"true\"\n                varient=\"fill\"\n                size=\"small\"\n                iconColor=\"warning\"\n                (clickCallback)=\"editHandler(cell.item)\"\n              >\n                <ui-icon\n                  style=\"display: inline-flex\"\n                  type=\"outline\"\n                  group=\"content\"\n                  name=\"create\"\n                ></ui-icon> </ui-button\n            ></ng-template>\n          </wj-flex-grid-column>\n        </wj-flex-grid>\n      </ng-template>\n      <!-- end of Row detail -->\n    </wj-flex-grid>\n    <div style=\"display: none\">\n      <wj-list-box\n        #columnPicker\n        class=\"grid__column-picker\"\n        [class.grid__column-picker--hide-first-item]=\"(hasCheckbox || hasActionColumn()) && !isTree\"\n        [class.grid__column-picker--hide-second-item]=\"hasCheckbox && hasActionColumn() && !isTree\"\n        [class.grid__column-picker--hide-second-last-item]=\"isTree && hasActionColumn()\"\n        [class.grid__column-picker--hide-last-item]=\"true\"\n        [class.grid__column-picker--in-menu]=\"columnPickerInMenu\"\n        (dragstart)=\"handleDragStart($event)\"\n        (dragover)=\"handleDragOver($event)\"\n        (drop)=\"handleDrop($event)\"\n        (dragend)=\"handleDragEnd($event)\"\n        (checkedItemsChange)=\"columnPickerCheckedItemsChanged($event)\"\n      >\n      </wj-list-box>\n    </div>\n  </div>\n</section>\n\n<ng-template #actionColumnTemplate let-row=\"row\" let-cell=\"cell\" let-item=\"item\">\n  <ng-container *ngIf=\"moreMenuItems.length > 0\">\n    <ui-button\n      [dropdownTriggerFor]=\"dropdown\"\n      [isIcon]=\"true\"\n      varient=\"fill\"\n      size=\"small\"\n      [buttonType]=\"'button'\"\n    >\n      <ui-icon style=\"display: inline-flex\" group=\"navigation\" name=\"expand_more\"></ui-icon>\n    </ui-button>\n    <ui-dropdown #dropdown [contentTemplateRef]=\"moreMenuTemplate\" [data]=\"cell.item\">\n    </ui-dropdown>\n  </ng-container>\n  <ui-button\n    *ngIf=\"hasCustomButton\"\n    [buttonType]=\"'button'\"\n    [isIcon]=\"true\"\n    varient=\"outline\"\n    size=\"small\"\n    (clickCallback)=\"customeEvent(cell.item, $event)\"\n    ><span style=\"display: inline-flex\">\n      <svg-icon [src]=\"'/assets/media/icons/' + customIconName + '.svg'\"></svg-icon\n    ></span>\n  </ui-button>\n  <ui-button\n    *ngFor=\"let action of iconActions\"\n    [isIcon]=\"true\"\n    [buttonType]=\"'button'\"\n    varient=\"fill\"\n    [iconColor]=\"action.icon.color\"\n    size=\"small\"\n    (clickCallback)=\"action.callback(cell, cell.item)\"\n    [title]=\"action.title\"\n  >\n    <ui-fararu-icon\n      *ngIf=\"action.icon.fararuIcon; else oldIcons\"\n      [name]=\"action.icon.fararuIcon.name\"\n      [size]=\"action.icon.fararuIcon.size\"\n      [color]=\"action.icon.fararuIcon.color\"\n    ></ui-fararu-icon>\n    <ng-template #oldIcons>\n      <ui-icon\n        style=\"display: inline-flex\"\n        [type]=\"action.icon.type\"\n        [group]=\"action.icon.group\"\n        [name]=\"action.icon.name\"\n        [size]=\"iconSize.X1\"\n      ></ui-icon>\n    </ng-template>\n  </ui-button>\n  <ui-button\n    *ngIf=\"hasEditButton\"\n    [buttonType]=\"'button'\"\n    [isIcon]=\"true\"\n    varient=\"fill\"\n    size=\"small\"\n    iconColor=\"warning\"\n    (clickCallback)=\"editHandler(cell.item)\"\n  >\n    <ui-icon\n      style=\"display: inline-flex\"\n      type=\"outline\"\n      group=\"content\"\n      name=\"create\"\n      [size]=\"iconSize.X1\"\n    ></ui-icon>\n  </ui-button>\n  <ui-button\n    *ngIf=\"hasExpandButton && rowDetail.isDetailVisible(row)\"\n    [buttonType]=\"'button'\"\n    [isIcon]=\"true\"\n    varient=\"fill\"\n    size=\"small\"\n    iconColor=\"info\"\n    (clickCallback)=\"rowDetail.hideDetail(row)\"\n  >\n    <ui-icon\n      style=\"display: inline-flex\"\n      type=\"outline\"\n      group=\"navigation\"\n      name=\"unfold_less\"\n      [size]=\"iconSize.X1\"\n    ></ui-icon>\n  </ui-button>\n  <ui-button\n    *ngIf=\"hasExpandButton && !rowDetail.isDetailVisible(row) && rowDetail.isDetailAvailable(row)\"\n    [buttonType]=\"'button'\"\n    [isIcon]=\"true\"\n    varient=\"fill\"\n    size=\"small\"\n    iconColor=\"info\"\n    (clickCallback)=\"rowDetail.showDetail(row, !multiExpand)\"\n  >\n    <ui-icon\n      style=\"display: inline-flex\"\n      type=\"outline\"\n      group=\"navigation\"\n      name=\"unfold_more\"\n    ></ui-icon>\n  </ui-button>\n</ng-template>\n\n<ng-template #moreMenuTemplate let-data=\"data\">\n  <ui-sub-menu [items]=\"moreMenuItems\" [args]=\"data\"></ui-sub-menu>\n</ng-template>\n","import {\n  AfterViewInit,\n  Component,\n  ElementRef,\n  EventEmitter,\n  forwardRef,\n  Injector,\n  Input,\n  OnChanges,\n  OnInit,\n  Output,\n  SimpleChanges,\n  TemplateRef,\n  ViewChild,\n  ViewContainerRef,\n  ViewEncapsulation,\n} from '@angular/core';\nimport FilterBuilder, { QueryBuilder } from 'odata-query-builder';\n\nimport { Overlay, OverlayRef } from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport { HttpHeaders } from '@angular/common/http';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { BehaviorSubject, Observable, Subscription } from 'rxjs';\nimport { GeneralODataService } from '../../../api/general-odata.service';\nimport { GridColumnFilterConditionTypes } from '../../../enums/grid-column-filter-condition-types';\nimport {\n  GeneralODataServiceInterface,\n  ODataResponse,\n} from '../../../models/general-odata-service.interface';\nimport { GridColumnFilterInterface } from '../../../models/grid-column-filter.interface';\nimport { GridColumnInterface } from '../../../models/grid-column.interface';\nimport { GridConfigInterface } from '../../../models/grid-config.interface';\nimport { IconInterface } from '../../../models/icon-interface';\nimport { InterSystemLookupActionResponse } from '../../../models/inter-system-response.interface';\nimport { AppMenuApiService } from '../../../services/app-menu-api.service';\nimport { LoadRemoteAssetService } from '../../../services/load-remote-asset.service';\nimport { SizeType } from '../../../types/size.type';\nimport { isNil } from '../../../utils/is-nil';\nimport { FararuIconComponentInterface } from '../../components/atoms/fararu-icon/fararu-icon.component';\nimport { FararuToastService } from '../../toast/fararu-toast.service';\nimport { GridComponent } from '../grid/grid.component';\nimport { LabelType, TextboxComponent } from '../textbox/textbox.component';\nimport { FormElementBaseComponent } from '../../../models/base-form-element.component';\nimport { GridColumnDataTypes } from '../../../enums';\nimport { convertPersianToEnglishNumbers } from '../../../utils/lang-utils';\nimport { GeneralODataTableName } from '../../../constants';\nimport { AppConfigService } from '../../../services/app-config.service';\n\nexport interface moreMenuItem {\n  id?: string;\n  text?: string;\n  tooltip?: string;\n  icon?: IconInterface;\n  fararuIcon?: FararuIconComponentInterface;\n  click?: (event: Event, args?: any) => void | Promise<void> | Observable<any>;\n  // items?: GeneralActionInterface[];\n  isDanger?: boolean;\n  nodeAccessId?: string;\n  actionId?: string;\n  onSuccess?: (response: any) => void;\n  onFailure?: (response: any) => void;\n  // mapFunction?: MapFunction;\n  disabled?: boolean;\n  isSelected?: boolean;\n}\nexport class IdentitySelectorComponentPropsInterface {\n  id?: string;\n  valueData?: any;\n  inputField?: string;\n  secondInputField?: string;\n  resultField?: string;\n  displayField?: string;\n  placeholder?: string;\n  gridFields?: GridColumnInterface[];\n  gridItems?: any[];\n  oDataService?: GeneralODataServiceInterface;\n  oDataServer: string;\n  oDataTable: string;\n  oDataEntity?: string;\n  hasCrudOrigin?: boolean;\n  oDataHttpHeaders?: { [key: string]: string };\n  readonly?: string;\n  disabled?: boolean;\n  oDataFilters?: GridColumnFilterInterface[];\n  size?: SizeType;\n  tabIndex?: string | number;\n  label?: string;\n  labelType?: LabelType;\n  allowClear?: boolean;\n  subMenuWidth?: string;\n}\n\n@Component({\n  selector: 'ui-identity-selector',\n  templateUrl: './identity-selector.component.html',\n  styleUrls: ['./identity-selector.component.scss'],\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => IdentitySelectorComponent),\n      multi: true,\n    },\n  ],\n  encapsulation: ViewEncapsulation.None,\n})\nexport class IdentitySelectorComponent\n  extends FormElementBaseComponent\n  implements\n    OnInit,\n    OnChanges,\n    ControlValueAccessor,\n    IdentitySelectorComponentPropsInterface,\n    AfterViewInit\n{\n  @Input('value') _value: string;\n  @Input() id?: string;\n  @Input() valueData?: any;\n  @Input() inputField?: string = 'code';\n  @Input() secondInputField?: string;\n  @Input() resultField?: string = 'id';\n  @Input() displayField?: string = 'name';\n  @Input() placeholder?: string;\n  @Input() gridFields?: GridColumnInterface[];\n  @Input() items?: any[];\n  @Input() oDataService?: GeneralODataServiceInterface;\n  @Input() oDataServer: string;\n  @Input() oDataTable: string;\n  @Input() oDataEntity?: string;\n  @Input() oDataHttpHeaders?: { [key: string]: string };\n  @Input() readonly?: string;\n  @Input() disabled?: boolean;\n  @Input() oDataFilters?: GridColumnFilterInterface[];\n  @Input() size?: SizeType = 'normal';\n  @Input() tabIndex?: string | number;\n  @Input() label?: string;\n  @Input() labelType?: LabelType = 'side';\n  @Input() allowClear?: boolean;\n  @Input() subMenuWidth?: string;\n  @Input() beforeChangeCallback: (selectedItem: any, lastItem?: any) => boolean | Promise<boolean>;\n  @Input() autofocus?: string;\n  @Input() hasCrudOrigin: boolean = false;\n  @Input() border?: boolean = true;\n\n  @Output() changeCallback: EventEmitter<any> = new EventEmitter();\n  @Output() blurCallback: EventEmitter<any> = new EventEmitter();\n  @Output() focusCallback: EventEmitter<any> = new EventEmitter();\n  @Output() addCallback: EventEmitter<any> = new EventEmitter();\n  @Output() editCallback: EventEmitter<any> = new EventEmitter<any>();\n  @Output() viewCallback: EventEmitter<any> = new EventEmitter<any>();\n\n  @ViewChild('button') buttonElementRef: ElementRef<HTMLElement>;\n  @ViewChild('textbox') textboxComponent: TextboxComponent;\n  @ViewChild('grid') gridComponent: GridComponent;\n  @ViewChild('menu') menuTemplateRef: TemplateRef<any>;\n\n  actions?: moreMenuItem[] = [];\n  // sideActions?: GeneralActionButtonInterface[] = [];\n  moreMenuItems: moreMenuItem[] = [];\n  input: string;\n  isProgressing: boolean = false;\n  gridFirstIsLoaded: boolean = false;\n  menuIsShow: boolean = false;\n  oDataFilterDefinition?: string;\n  defaultFilters?: GridColumnFilterInterface[];\n  lastSelectedItem?: any;\n  lastGridSelectedItem?: any;\n  gridConfig?: GridConfigInterface;\n\n  private serviceHttpHeaders?: HttpHeaders;\n  private overlayRef: OverlayRef;\n  private oDataFilterDefinitionTemp: BehaviorSubject<string> = new BehaviorSubject('');\n  private endPointSubscription?: Subscription;\n  private inputSeparator = ' - ';\n  private lastSearchedInput = '';\n  private isRemoteLoad: boolean = false;\n\n  constructor(\n    private toastService: FararuToastService,\n    private overlay: Overlay,\n    private viewContainerRef: ViewContainerRef,\n    private generalOdataService: GeneralODataService,\n    private _appMenuApiService: AppMenuApiService,\n    private _loadRemoteAssetService: LoadRemoteAssetService,\n    private _appConfigService: AppConfigService,\n    injector: Injector\n  ) {\n    super(injector);\n  }\n\n  ngOnInit(): void {\n    this.init();\n    if (this.hasCrudOrigin) {\n      this._appMenuApiService\n        .getMenuItemIdByEntityModel(this.oDataEntity)\n        .subscribe((response: ODataResponse<InterSystemLookupActionResponse>) => {\n          if (response?.value?.length > 0 && response?.value?.[0]?.newMenuId !== -1) {\n            this.actions.push({\n              fararuIcon: { name: 'plus', color: 'content-primary' },\n              click: (event: Event, args?: any) => {\n                this.closeMenu();\n                if (this.addCallback.observed) {\n                  this.addCallback.emit();\n                } else {\n                  this.loadNewOrigin(event, response?.value?.[0]);\n                }\n              },\n            });\n          }\n          if (response?.value?.length > 0 && response?.value?.[0]?.editMenuId !== -1) {\n            this.moreMenuItems.push({\n              fararuIcon: { name: 'edit-pen', color: 'content-primary' },\n              text: 'ویرایش',\n              click: (event, args) => {\n                this.closeMenu();\n                this.selectedItemChanged(null);\n                if (this.editCallback.observed) {\n                  this.editCallback.emit({ event, args });\n                } else {\n                  this.loadEditOrigin({ event, args }, response?.value?.[0]);\n                }\n              },\n            });\n          }\n          if (response?.value?.length > 0 && response?.value?.[0]?.viewMenuId !== -1) {\n            this.moreMenuItems.push({\n              fararuIcon: { name: 'document', color: 'content-primary' },\n              text: 'نمایش',\n              click: (event, args) => {\n                this.closeMenu();\n                if (this.viewCallback.observed) {\n                  this.viewCallback.emit({ event, args });\n                } else {\n                  this.loadViewOrigin({ event, args }, response?.value?.[0]);\n                }\n              },\n            });\n          }\n        });\n    }\n\n    this.oDataFilterDefinitionTemp.subscribe(filterDefinition => {\n      if (this.menuIsShow) {\n        this.oDataFilterDefinition = filterDefinition;\n      }\n    });\n  }\n\n  ngAfterViewInit(): void {\n    if (typeof this.autofocus != 'undefined' && !this.disabled) {\n      this.focus();\n    }\n  }\n\n  onFocus() {\n    this.focusCallback?.emit();\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    // this if check changes identity-selector for each record.\n    const valueChanges = changes['value'];\n\n    if (\n      this.oDataServer == null &&\n      this.oDataService == null &&\n      this.oDataTable == null &&\n      this.oDataEntity != null\n    ) {\n      this.oDataServer = this._appConfigService.config.api.baseUrl;\n      this.oDataTable = GeneralODataTableName;\n    }\n\n    this.isRemoteLoad = !!this.oDataServer && !!this.oDataTable;\n\n    if (isNil(this.value)) {\n      this.input = '';\n      this.lastGridSelectedItem = null;\n    } else if (this.valueData) {\n      this.input = this.createInputTextFromData(this.valueData);\n      this.lastSearchedInput = this.input;\n    } else if (valueChanges) {\n      this.input = this.value;\n    }\n\n    if (changes['oDataHttpHeaders']) {\n      let headers = new HttpHeaders();\n      for (const key in this.oDataHttpHeaders) {\n        if (Object.prototype.hasOwnProperty.call(this.oDataHttpHeaders, key)) {\n          const value = this.oDataHttpHeaders[key];\n          headers = headers.append(key, value);\n        }\n      }\n      this.serviceHttpHeaders = headers;\n    }\n\n    if (changes['gridFields']) {\n      this.gridConfig = {\n        columns: {\n          columns: this.gridFields?.map(item => ({\n            ...item,\n            autoSize: true,\n          })),\n        },\n      };\n    }\n  }\n\n  get value() {\n    return this._value;\n  }\n\n  set value(val) {\n    this._value = val;\n  }\n\n  get clearButtonIsShow() {\n    return this.allowClear && this.value?.toString()?.length;\n  }\n\n  modelChangeFn = (_: any) => {};\n  touchedFn = () => {};\n\n  registerOnChange(fn: any): void {\n    this.modelChangeFn = fn;\n  }\n\n  registerOnTouched(fn: any): void {\n    this.touchedFn = fn;\n  }\n\n  writeValue(obj: any): void {\n    this.value = obj;\n\n    if (isNil(this.value)) {\n      this.input = '';\n      this.lastGridSelectedItem = null;\n    } else if (this.valueData) {\n      this.input = this.createInputTextFromData(this.valueData);\n      this.lastSearchedInput = this.input;\n    }\n  }\n\n  setDisabledState(isDisabled: boolean): void {\n    this.disabled = isDisabled;\n  }\n\n  textboxChangeHandler() {\n    if (!this.input) {\n      this.selectedItemChanged(null);\n      this.oDataFilterDefinitionTemp.next('');\n    }\n  }\n\n  blurHandler() {\n    this.touchedFn();\n    if (!this.menuIsShow) this.blurCallback.emit();\n    if (!isNil(this.value) && this.lastSelectedItem) {\n      this.input = this.createInputTextFromData(this.lastSelectedItem);\n    }\n  }\n\n  textboxKeyDownHandler(event: any) {\n    const keyCode = event.keyCode;\n\n    switch (keyCode) {\n      // space\n      case 32:\n        if (!this.input) {\n          event.preventDefault();\n          this.openMenu();\n        }\n        break;\n\n      // arrow up\n      case 38:\n        event.stopPropagation();\n        event.stopImmediatePropagation();\n        this.openMenu();\n        break;\n\n      // arrow down\n      case 40:\n        event.stopPropagation();\n        event.stopImmediatePropagation();\n        this.openMenu();\n        break;\n\n      // enter\n      case 13:\n        if (this.input && this.input != this.lastSearchedInput) {\n          event.preventDefault();\n          event.stopPropagation();\n          event.stopImmediatePropagation();\n          this.searchHandler(this.input);\n        }\n\n        break;\n    }\n  }\n\n  moreButtonClickHandler() {\n    this.focusCallback?.emit();\n    if (this.disabled || this.readonly) return;\n    this.defaultFilters = null;\n    if (!this.menuIsShow) {\n      this.openMenu();\n    } else {\n      this.closeMenu();\n    }\n  }\n\n  gridRowSelectHandler(data: any) {\n    setTimeout(() => {\n      this.lastGridSelectedItem = data;\n    }, 10);\n  }\n\n  gridKeydownHandler(event: any) {\n    const keyCode = event.keyCode;\n    switch (keyCode) {\n      case 13:\n        if (!this.isRemoteLoad && this.lastGridSelectedItem == null) {\n          const itemsLength = this.items?.length || -1;\n          const oldSelection = this.gridComponent._oldSelection;\n          if (itemsLength >= 0 && oldSelection >= 0 && oldSelection < itemsLength - 1)\n            this.lastGridSelectedItem = this.gridComponent.items[oldSelection];\n        }\n        this.selectGridItem();\n        break;\n\n      case 27:\n        event.stopPropagation();\n        this.closeMenu();\n        break;\n    }\n  }\n\n  gridRowClickHandler(data: any) {\n    this.lastGridSelectedItem = data;\n    this.selectGridItem();\n  }\n\n  gridLoadHandler() {\n    this.gridComponent.autoSizeColumns();\n  }\n\n  clearHandler() {\n    this.selectedItemChanged(null);\n    this.oDataFilterDefinitionTemp.next('');\n    this.defaultFilters = null;\n  }\n\n  updateValue(value: any, valueData: any) {\n    this._value = value;\n    if (isNil(value)) {\n      this.input = '';\n      this.lastGridSelectedItem = null;\n    } else if (valueData) {\n      this.valueData = valueData;\n      this.input = this.createInputTextFromData(this.valueData);\n      this.lastSearchedInput = this.input;\n    }\n    this.lastSelectedItem = null;\n  }\n\n  private selectGridItem() {\n    this.selectedItemChanged({ ...this.lastGridSelectedItem });\n    this.closeMenu();\n  }\n\n  private searchHandler(input: string) {\n    if (!input.length || input == this.lastSearchedInput) {\n      this.oDataFilterDefinitionTemp.next('');\n      return;\n    }\n\n    const keyword = input.split(this.inputSeparator)[0];\n\n    if (this.isRemoteLoad) {\n      this.remoteSearch(keyword);\n    } else {\n      this.inlineSearch(keyword);\n    }\n  }\n\n  private inlineSearch(keyword: string) {\n    this.defaultFilters = [\n      {\n        binding: this.inputField,\n        type: 'condition',\n        condition1: {\n          operator: GridColumnFilterConditionTypes.CONTAINS,\n          value: keyword,\n        },\n        and: false,\n        condition2: {},\n      },\n    ];\n\n    const list = this.items.filter(\n      x =>\n        x[this.inputField]?.toLowerCase()?.indexOf(keyword.toLowerCase()) != -1 ||\n        (this.secondInputField &&\n          x[this.secondInputField]?.toLowerCase()?.indexOf(keyword.toLowerCase()) != -1)\n    );\n\n    if (list.length > 0) {\n      if (list.length == 1) {\n        this.selectedItemChanged(list[0]);\n      } else {\n        this.openMenu();\n        this.selectedItemChanged(null);\n      }\n    } else {\n      this.toastService.show({\n        type: 'warning',\n        text: 'هیچ موردی یافت نشد.',\n      });\n      this.selectedItemChanged(null);\n    }\n  }\n\n  private remoteSearch(keyword: string) {\n    const query = new QueryBuilder()\n      .top(2)\n      .filter((x: FilterBuilder) => {\n        let filterPhraseRes = this.createFilterExpression(x, keyword, this.inputField);\n        console.log('🚀 ~ .filter ~ filterPhraseRes:', filterPhraseRes);\n        filterPhraseRes = this.createFilterExpression(\n          filterPhraseRes,\n          keyword,\n          this.secondInputField\n        );\n        console.log('🚀 ~ .filter ~ filterPhraseRes:', filterPhraseRes);\n        this.oDataFilterDefinitionTemp.next(filterPhraseRes.toQuery('or'));\n        console.log('🚀 ~ .filter ~ filterPhraseRes:', filterPhraseRes);\n        return filterPhraseRes;\n      }, 'or')\n      .toQuery();\n\n    this.endPointSubscription?.unsubscribe();\n    this.isProgressing = true;\n    const service = this.oDataService\n      ? this.oDataService.get(query, this.serviceHttpHeaders)\n      : this.generalOdataService.getByEntity(this.oDataEntity, query, this.serviceHttpHeaders);\n    this.endPointSubscription = service.subscribe({\n      next: (result: any) => {\n        this.isProgressing = false;\n        const list: any[] = result.value;\n        if (list.length > 0) {\n          if (list.length == 1) {\n            this.selectedItemChanged(list[0]);\n          } else {\n            this.openMenu();\n            this.selectedItemChanged(null);\n          }\n        } else {\n          this.oDataFilterDefinitionTemp.next('');\n          this.toastService.show({\n            type: 'warning',\n            text: 'هیچ موردی یافت نشد.',\n          });\n          this.selectedItemChanged(null);\n        }\n      },\n      error: () => {\n        this.isProgressing = false;\n      },\n    });\n  }\n\n  createFilterExpression(\n    x: FilterBuilder,\n    keyword: string,\n    inputField: string | undefined | null\n  ): FilterBuilder {\n    if (inputField) {\n      const field = this.gridFields.find(f => f.name == inputField || f.binding == inputField);\n      if (field.dataType == GridColumnDataTypes.STRING || !field.dataType)\n        return x.filterPhrase(`contains(${inputField},'${keyword}')`);\n      else if (field.dataType == GridColumnDataTypes.NUMBER) {\n        const numb = Number([convertPersianToEnglishNumbers(keyword.trim())]);\n        if (!isNaN(numb)) return x.filterExpression(inputField, 'eq', numb);\n      }\n    }\n\n    return x;\n  }\n\n  private async selectedItemChanged(data?: any) {\n    if (data === this.lastSelectedItem) return;\n    if (\n      this.beforeChangeCallback &&\n      !(await this.beforeChangeCallback(\n        { ...data },\n        this.lastSelectedItem ? { ...this.lastSelectedItem } : null\n      ))\n    )\n      return;\n    this.changeCallback.emit(data);\n    this.lastSelectedItem = data;\n    this.value = data ? data[this.resultField] : null;\n    this.modelChangeFn(this.value);\n\n    if (data) {\n      this.input = this.createInputTextFromData(data);\n      this.lastSearchedInput = this.input;\n    } else {\n      this.input = null;\n      this.lastSearchedInput = '';\n    }\n    setTimeout(() => {\n      this.textboxComponent.focus();\n    }, 0);\n  }\n\n  private openMenu() {\n    if (this.menuIsShow) return;\n    this.gridFirstIsLoaded = true;\n    this.menuIsShow = true;\n    const currentFilterDefinition = this.oDataFilterDefinitionTemp.getValue();\n    if (this.oDataFilterDefinition != currentFilterDefinition) {\n      this.oDataFilterDefinition = currentFilterDefinition;\n    }\n    this.overlayRef = this.createMenuOverlay();\n    this.overlayRef.attach(new TemplatePortal(this.menuTemplateRef, this.viewContainerRef));\n    this.overlayRef.backdropClick().subscribe(() => {\n      this.closeMenu();\n    });\n    setTimeout(() => {\n      this.gridComponent.focus();\n    }, 500);\n  }\n\n  private closeMenu() {\n    this.menuIsShow = false;\n    this.overlayRef?.detach();\n    this.textboxComponent.focus();\n    this.endPointSubscription?.unsubscribe();\n    this.oDataFilterDefinitionTemp.next('');\n  }\n\n  private createInputTextFromData(data: any) {\n    return (\n      (this.inputField && data[this.inputField] ? data[this.inputField] : '') +\n      (this.secondInputField && data[this.secondInputField]\n        ? (this.inputField ? this.inputSeparator : '') + data[this.secondInputField]\n        : '') +\n      (this.displayField && this.displayField != this.secondInputField && data[this.displayField]\n        ? this.inputSeparator + data[this.displayField]\n        : '')\n    );\n  }\n\n  private createMenuOverlay() {\n    return this.overlay.create({\n      hasBackdrop: true,\n      backdropClass: 'cdk-overlay-transparent-backdrop',\n      direction: document.body.getAttribute('dir') == 'rtl' ? 'rtl' : 'ltr',\n      scrollStrategy: this.overlay.scrollStrategies.block(),\n      positionStrategy: this.overlay\n        .position()\n        .flexibleConnectedTo(this.buttonElementRef)\n        .withPositions([\n          {\n            originX: 'start',\n            originY: 'bottom',\n            overlayX: 'start',\n            overlayY: 'top',\n            offsetY: -1,\n          },\n          {\n            originX: 'end',\n            originY: 'bottom',\n            overlayX: 'end',\n            overlayY: 'top',\n            offsetY: -1,\n          },\n        ]),\n    });\n  }\n\n  focus() {\n    this.textboxComponent.focus();\n  }\n\n  loadNewOrigin(e: any, interSystemConfigModel: InterSystemLookupActionResponse) {\n    this._loadRemoteAssetService.openInterSystemForm2(interSystemConfigModel, 'new');\n  }\n\n  loadEditOrigin(e: any, interSystemConfigModel: InterSystemLookupActionResponse) {\n    this._loadRemoteAssetService.openInterSystemForm2(\n      interSystemConfigModel,\n      'edit',\n      e.args[this.resultField]\n    );\n  }\n\n  loadViewOrigin(e: any, interSystemConfigModel: InterSystemLookupActionResponse) {\n    this._loadRemoteAssetService.openInterSystemForm2(\n      interSystemConfigModel,\n      'view',\n      e.args[this.resultField]\n    );\n  }\n}\n","<div\n  class=\"identity-selector\"\n  [class.identity-selector--opened]=\"menuIsShow\"\n  [class.identity-selector--clear-is-show]=\"clearButtonIsShow\"\n  #button\n>\n  <ui-textbox\n    [id]=\"id\"\n    type=\"text\"\n    name=\"inputValue\"\n    #textbox\n    autocomplete=\"off\"\n    [(ngModel)]=\"input\"\n    (focusCallback)=\"onFocus()\"\n    [tabIndex]=\"tabIndex\"\n    [labelType]=\"labelType\"\n    [label]=\"label\"\n    [labelShowRequiredSign]=\"hasRequiredValidator\"\n    [placeholder]=\"placeholder || 'پس از درج، اینتر را فشار دهید...'\"\n    (ngModelChange)=\"textboxChangeHandler()\"\n    (keyDownCallback)=\"textboxKeyDownHandler($event)\"\n    (blurCallback)=\"blurHandler()\"\n    [disabled]=\"disabled\"\n    [readonly]=\"readonly\"\n    [size]=\"size\"\n    [hideBorder]=\"!border\"\n  ></ui-textbox>\n  <ui-spinner\n    *ngIf=\"isProgressing\"\n    class=\"identity-selector__spinner\"\n    [size]=\"'tiny'\"\n    [hideText]=\"true\"\n    [show]=\"true\"\n  ></ui-spinner>\n  <span\n    class=\"identity-selector__icons\"\n    [class.identity-selector__icons--disabled]=\"disabled\"\n    [class.identity-selector__icons--readonly]=\"readonly\"\n  >\n    <ui-icon\n      *ngIf=\"clearButtonIsShow\"\n      class=\"identity-selector__clear\"\n      [type]=\"'outline'\"\n      [group]=\"'navigation'\"\n      [name]=\"'close'\"\n      size=\"x1\"\n      (click)=\"clearHandler()\"\n    ></ui-icon>\n    <a class=\"identity-selector__button\" (click)=\"moreButtonClickHandler()\" [tabIndex]=\"-1\"\n      ><ui-icon\n        style=\"display: inline-flex; opacity: 0.4\"\n        [type]=\"'outline'\"\n        [group]=\"'navigation'\"\n        [name]=\"'more_horiz'\"\n      ></ui-icon>\n    </a>\n  </span>\n  <span *ngIf=\"disabled || readonly\" class=\"identity-selector__overlay\"></span>\n</div>\n<ng-template #menu>\n  <div\n    class=\"identity-selector__menu\"\n    [style.width]=\"subMenuWidth\"\n    [style.max-width]=\"subMenuWidth ? 'none' : null\"\n  >\n    <ui-toolbar\n      *ngIf=\"actions?.length > 0\"\n      [actions]=\"actions\"\n      [hideReloadButton]=\"false\"\n    ></ui-toolbar>\n    <ui-grid\n      #grid\n      [oDataServer]=\"oDataServer\"\n      [oDataTable]=\"oDataTable\"\n      [oDataEntity]=\"oDataEntity\"\n      [oDataHttpHeaders]=\"oDataHttpHeaders\"\n      [oDataFilters]=\"oDataFilters\"\n      [defaultFilters]=\"defaultFilters\"\n      [oDataFilterDefinition]=\"oDataFilterDefinition\"\n      [moreMenuItems]=\"moreMenuItems\"\n      [items]=\"items\"\n      [config]=\"gridConfig\"\n      (rowSelectCallback)=\"gridRowSelectHandler($event)\"\n      (rowsClickedItemCalback)=\"gridRowClickHandler($event)\"\n      (keydownCallback)=\"gridKeydownHandler($event)\"\n      (loadCallback)=\"gridLoadHandler()\"\n      *ngIf=\"gridFirstIsLoaded\"\n      mode=\"menu\"\n    ></ui-grid>\n  </div>\n</ng-template>\n","import { Component, Input, OnChanges, OnInit, SimpleChanges } from '@angular/core';\n@Component({\n  selector: 'ui-data-grid-btn',\n  templateUrl: './data-grid-btn.component.html',\n  styleUrls: ['./data-grid-btn.component.css'],\n})\nexport class DataGridBtnComponent implements OnInit, OnChanges {\n  @Input() editConfig: any;\n  @Input() row: any;\n  text: string;\n  icon: any;\n  onClick: () => void;\n  constructor() {}\n\n  ngOnChanges(changes: SimpleChanges): void {\n    this.updateBtnConfig();\n  }\n  \n  ngOnInit(): void {\n    this.updateBtnConfig();\n  }\n\n  updateBtnConfig() {\n    const { text, icon, onClick } = this.editConfig.config(this.row);\n    this.text = text;\n    this.icon = icon;\n    this.onClick = onClick;\n  }\n\n}\n","<ui-button class=\"row\" (clickCallback)=\"onClick()\">\n  <ui-fararu-icon *ngIf=\"icon\" [name]=\"icon\"></ui-fararu-icon>\n  <ui-label *ngIf=\"text\">{{ text }}</ui-label>\n</ui-button>\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { SafeHtml } from '@angular/platform-browser';\n\n@Pipe({\n  name: 'dataGridCellDisplayValue',\n})\nexport class DataGridCellDisplayValuePipe implements PipeTransform {\n  transform(value: any, column: any, row: any): SafeHtml {\n    const length = column?.displayBindingFields?.length || 0;\n\n    if (length > 0) {\n      const displayValues = [row[column.displayBindingFields[0]]];\n      for (let i = 1; i < length; i++) {\n        displayValues.push(row[column.displayBindingFields[i]]);\n      }\n      return displayValues.filter(x => !!x).join(' - ');\n    }\n\n    if (typeof value == 'number') return value.toLocaleString();\n    return value;\n  }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { SafeHtml } from '@angular/platform-browser';\nimport {\n  DropdownTextInputOptionInterface,\n  DropdownTextBoxType,\n} from '../../molecules/dropdown-text-input/dropdown-text-input.component';\n\n@Pipe({\n  name: 'dataGridCellDisplayObjectPipe',\n})\nexport class DataGridCellDisplayObjectPipe implements PipeTransform {\n  transform(\n    value: DropdownTextBoxType,\n    options: DropdownTextInputOptionInterface[]\n  ): SafeHtml {\n    const title =\n      options.find((item) => item?.id === value?.dropdownValue)?.text ?? '';\n    return title !== ''\n      ? title + ': ' + (value?.textBoxValue || '0')\n      : (value?.textBoxValue || '0');\n  }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n@Pipe({\n  name: 'isBoolean',\n})\nexport class IsBooleanPipe implements PipeTransform {\n  transform(value: any): boolean {\n    return typeof value === 'boolean';\n  }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { GridColumnAggregationTypes } from '../../../../enums/grid-column-aggregation-types';\nimport { TranslateService } from '@ngx-translate/core';\n\n@Pipe({\n  name: 'dataGridCellAggregateTypeTitle',\n})\nexport class DataGridCellAggregateTypeTitlePipe implements PipeTransform {\n  constructor(private translateService: TranslateService) {}\n\n  transform(value: GridColumnAggregationTypes, type: 'text' | 'tooltip' = 'text'): string {\n    switch (value) {\n      case GridColumnAggregationTypes.Sum: {\n        return type === 'text' ? '∑' : this.translateService.instant('data_grid.sum');\n      }\n      case GridColumnAggregationTypes.Max: {\n        return type === 'text' ? '' : this.translateService.instant('data_grid.max');\n      }\n      case GridColumnAggregationTypes.Min: {\n        return type === 'text' ? '' : this.translateService.instant('data_grid.min');\n      }\n      case GridColumnAggregationTypes.Average: {\n        return type === 'text' ? '' : this.translateService.instant('data_grid.avg');\n      }\n      case GridColumnAggregationTypes.Count: {\n        return type === 'text' ? '' : this.translateService.instant('data_grid.count');\n      }\n      case GridColumnAggregationTypes.None: {\n        return '';\n      }\n    }\n  }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n// import { RowFormatCallbackOutputInterface } from './data-grid.component';\n\n@Pipe({\n  name: 'dataGridRowClassName',\n})\nexport class DataGridRowClassNamePipe implements PipeTransform {\n  transform(\n    row: any,\n    rowFormatCallback: (row: any) => any //RowFormatCallbackOutputInterface | null\n  ): string {\n    const classNames: string[] = [];\n\n    if (typeof rowFormatCallback === 'function') {\n      const result = rowFormatCallback(row);\n      if (result) {\n        classNames.push(\n          'data-grid__row--' +\n            (result.style && result.style !== 'both' ? result.style + '-' : '') +\n            result.state\n        );\n      }\n    }\n\n    return classNames.join(' ');\n  }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n// import {\n//   DataGridColumnInterface,\n//   DataGridNumberColumnConfig,\n// } from '../../../../models/data-grid-column.interface';  -> has removed beacuase of import cycles error\n\n@Pipe({\n  name: 'dataGridColumnClassName',\n})\nexport class DataGridColumnClassNamePipe implements PipeTransform {\n  //transform(column: DataGridColumnInterface, row?: any): string {  -> has removed beacuase of import cycles error\n  transform(column: any, row?: any): string {\n    const classNames: string[] = [];\n    if (column.color) {\n      if (typeof column.color == 'string') {\n        classNames.push('data-grid__cell--' + column.color);\n      } else {\n        classNames.push(\n          'data-grid__cell--' +\n            (column.color.style !== 'both' ? column.color.style + '-' : '') +\n            column.color.name\n        );\n      }\n    } else if (row && column.numberConfig) {\n      const value = row[column.binding];\n      const isNumber = typeof value === 'number';\n      const numberConfig = column.numberConfig;\n      if (numberConfig.hasHightStyles) {\n        const config =\n          typeof numberConfig.hasHightStyles == 'object'\n            ? (numberConfig.hasHightStyles as any) //as DataGridNumberColumnConfig -> has removed beacuase of import cycles error\n            : null;\n        if (isNumber) {\n          if (value > (config?.base || 0)) {\n            classNames.push(\n              `data-grid__cell--${\n                config?.style && config.style != 'both' ? config.style + '-' : ''\n              }success`\n            );\n          }\n        } else {\n          if (/^\\d+\\:*\\.*\\d*$/g.test(value) && !/^0+\\:*\\.*0*$/g.test(value)) {\n            classNames.push(\n              `data-grid__cell--${\n                config?.style && config.style != 'both' ? config.style + '-' : ''\n              }success`\n            );\n          }\n        }\n      }\n      if (numberConfig.hasLowStyles) {\n        const config =\n          typeof numberConfig.hasLowStyles == 'object'\n            ? (numberConfig.hasLowStyles as any) // as DataGridNumberColumnConfig -> has removed beacuase of import cycles error\n            : null;\n        if (isNumber) {\n          if (value < (config?.base || 0)) {\n            classNames.push(\n              `data-grid__cell--${\n                config?.style && config.style != 'both' ? config.style + '-' : ''\n              }error`\n            );\n          }\n        } else {\n          if (/^\\-\\d+\\:*\\.*\\d*$/g.test(value)) {\n            classNames.push(\n              `data-grid__cell--${\n                config?.style && config.style != 'both' ? config.style + '-' : ''\n              }error`\n            );\n          }\n        }\n      }\n    }\n    return classNames.join(' ');\n  }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n  name: 'dataGridColumnWidth',\n})\nexport class DataGridColumnWidthPipe implements PipeTransform {\n  //transform(column: DataGridColumnInterface, row?: any): string {  -> has removed beacuase of import cycles error\n  transform(column: any): string {\n    if (column.width) return column.width;\n    const padding = 16;\n\n    return Math.max(50, column.title.length * 8) + padding + 'px';\n  }\n}\n","import {\n  Component,\n  ElementRef,\n  EventEmitter,\n  HostListener,\n  Input,\n  OnChanges,\n  OnInit,\n  Output,\n  SimpleChanges,\n  ViewChild,\n} from '@angular/core';\nimport { AbstractControl, FormGroup } from '@angular/forms';\nimport {\n  DataGridColorType,\n  DataGridColumnInterface,\n  DataGridStyleType,\n} from '../../../../models/data-grid-column.interface';\nimport { FararuToastService } from '../../../toast/fararu-toast.service';\nimport Helpers from './data-grid.component.helpers';\nimport DataGridComponentHelpers from './data-grid.component.helpers';\nimport { propertyOf } from '../../../../utils/property-of';\nimport { SelectOptionInterface } from '../../../../models/select-option.interface';\nimport { TreeSelectComponent } from '../../../ui/tree-select/tree-select.component';\nimport { CheckboxComponent } from '../../../ui/checkbox/checkbox.component';\nimport { IdentitySelectorComponent } from '../../../ui/indentity-selector/identity-selector.component';\n\nexport interface RowFormatCallbackOutputInterface {\n  state: DataGridColorType;\n  style?: DataGridStyleType;\n}\n\n@Component({\n  selector: 'ui-data-grid',\n  templateUrl: './data-grid.component.html',\n  styleUrls: ['./data-grid.component.scss'],\n})\nexport class DataGridComponent<RowType = any> implements OnInit, OnChanges {\n  @Input() columns: DataGridColumnInterface[];\n  @Input() items: RowType[] = [];\n  @Input() noResetSelectedCell?: boolean;\n  @Input() tabIndex?: number = 0;\n  @Input() cellEditCallback: ((data: RowType) => void) | null;\n  @Input() rowDeleteCallback: ((data: RowType) => void) | null;\n  @Input() rowFormatCallback: ((data: RowType) => RowFormatCallbackOutputInterface | null) | null;\n  @Input() rowPreCheckedCallback:\n    | ((data: RowType, state: boolean) => Promise<boolean> | boolean)\n    | null;\n  @Input() disabled?: boolean;\n  @Input() addable?: boolean;\n  @Input() removable?: boolean;\n  @Input() hideTotalCount?: boolean;\n  @Input() hideCheckedAll?: boolean;\n  @Input() checkable?: boolean = false;\n  @Input() checkedFieldName?: string = 'checked';\n  @Input() readonly?: boolean;\n\n  @Output() rowAddCallback = new EventEmitter<any>();\n  @Output() rowChangeCallback = new EventEmitter<any>();\n  @Output() onRowSelected: EventEmitter<any> = new EventEmitter();\n  @Output() checkedCallback = new EventEmitter<typeof this.items>();\n\n  @ViewChild('listRef') listRef: ElementRef<HTMLDivElement>;\n  @ViewChild('editBox') editBoxRef: ElementRef<HTMLDivElement>;\n  @ViewChild('totalCountRef') totalCountRef: ElementRef<HTMLDivElement>;\n  @ViewChild('checkedAllCheckbox', { static: false }) checkedAllCheckbox: CheckboxComponent;\n\n  isEditMode?: boolean;\n  selectedCell = { column: -1, row: -1 };\n  maxColumIndex: number = 0;\n  maxRowIndex: number = 0;\n  editBoxIsShow?: boolean;\n  internalItems?: any[] = [];\n  shaking?: boolean;\n  rowActionsColIsShow?: boolean;\n  rowDeleteButtonIsShow?: boolean;\n  form?: FormGroup;\n  cellLoading = new Map();\n  currentCellDynamicPropertyDict: { [property: string]: any } = {};\n  wrapperElement: HTMLDivElement;\n  isFocused?: boolean;\n  lastFocusedElement?: 'container' | 'input';\n  idUniquePrefix: string;\n  numberColumnWidth: number = 0;\n\n  private direction: 'ltr' | 'rtl' = 'ltr';\n  private cellPrepareEditTimeout?: any;\n  private goToCellIsBusy?: boolean;\n  private blurTimeout?: any;\n  hasAggregate = false;\n\n  get internalCheckedFieldName() {\n    return this.checkedFieldName || 'checked';\n  }\n\n  get checkedItems() {\n    return this.items?.filter(x => x[this.internalCheckedFieldName]);\n  }\n\n  get invalid(): boolean {\n    return this.form ? this.form.invalid : null;\n  }\n\n  constructor(\n    protected elementRef: ElementRef<HTMLDivElement>,\n    protected toastService: FararuToastService\n  ) {\n    this.idUniquePrefix = Math.random().toString(36).substring(2, 15);\n  }\n\n  ngOnInit(): void {\n    this.wrapperElement = this.elementRef.nativeElement.firstChild as HTMLDivElement;\n    this.goToCell(0, 0);\n  }\n\n  @HostListener('document:keydown', ['$event'])\n  documentKeyDown(event: KeyboardEvent) {\n    if (\n      this.editBoxIsShow &&\n      ['ArrowUp', 'ArrowDown', 'ArrowRight', 'ArrowLeft'].includes(event.code)\n    ) {\n      event.preventDefault();\n    }\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    this.maxColumIndex = this.columns.length - 1;\n    this.isEditMode = this.columns.some(x => !!x.editConfig) && !this.disabled && !this.readonly;\n    if (changes['columns']) {\n      if (this.selectedCell) {\n        this.selectedCell.column = -1;\n      }\n      this.hasAggregate = changes['columns'].currentValue?.some(\n        (x: DataGridColumnInterface) => x?.aggregate\n      );\n    }\n    if (changes['items']) {\n      const oldPlaceholderRow = this.internalItems.find(x => x.isPlaceholder);\n      this.internalItems = [...(this.items || [])];\n      this.updateAggregate();\n      if (this.addable) {\n        if (oldPlaceholderRow) {\n          this.internalItems.push(oldPlaceholderRow);\n        } else {\n          this.addPlaceholderRow();\n        }\n      }\n      this.setNumberColumnWidth();\n    }\n\n    if (changes['addable']) {\n      if (this.addable) {\n        this.addPlaceholderRow();\n        this.goToCell(0, this.internalItems.length - 1);\n      } else {\n        this.removePlaceholderRow();\n      }\n    }\n\n    if (changes['disabled']) {\n      if (this.disabled) {\n        this.hideEditBox();\n      }\n    }\n\n    this.direction =\n      getComputedStyle(this.elementRef.nativeElement).direction == 'rtl' ? 'rtl' : 'ltr';\n    this.rowDeleteButtonIsShow = !!this.rowDeleteCallback || this.removable;\n    this.rowActionsColIsShow = this.rowDeleteButtonIsShow || this.addable;\n  }\n\n  focusHandler() {\n    this.lastFocusedElement = 'container';\n    if (!this.isFocused) {\n      this.setFocusOnInput();\n    }\n    this.setFocused();\n  }\n\n  blurHandler() {\n    this.blurTimeout = setTimeout(() => {\n      this.isFocused = false;\n      this.lastFocusedElement = undefined;\n    }, 300);\n  }\n\n  setFocused() {\n    clearTimeout(this.blurTimeout);\n    this.isFocused = true;\n  }\n\n  keydownHandler(event: KeyboardEvent) {\n    if (/^[a-zآ-ی0-9۰-۹]$/i.test(event.key)) {\n      this.prepareCurrentCellForEdit(event.key);\n      return;\n    }\n    const code = event.code;\n    switch (code) {\n      case 'Tab':\n        if (this.internalItems.length) {\n          if (event.shiftKey) {\n            if (!(this.selectedCell.column == 0 && this.selectedCell.row == 0)) {\n              event.preventDefault();\n              this.goToPrevCell();\n            }\n          } else {\n            if (\n              !(\n                this.selectedCell.column == this.columns.length - 1 &&\n                this.selectedCell.row == this.internalItems.length - 1\n              )\n            ) {\n              event.preventDefault();\n              this.goToNextCell();\n            }\n          }\n        }\n        break;\n\n      case 'ArrowLeft':\n        event.preventDefault();\n        this.containerLeftArrowKeyFired();\n        break;\n\n      case 'ArrowUp':\n        event.preventDefault();\n        this.containerTopArrowKeyFired();\n        break;\n\n      case 'ArrowRight':\n        event.preventDefault();\n        this.containerRightArrowKeyFired();\n        break;\n\n      case 'ArrowDown':\n        event.preventDefault();\n        this.containerBottomArrowKeyFired();\n        break;\n\n      case 'Space':\n        event.preventDefault();\n        this.goToCellIsBusy = false;\n        this.prepareCurrentCellForEdit();\n        break;\n\n      case 'Delete':\n        this.containerDeleteKeyFired();\n        break;\n\n      case 'Escape':\n        this.containerEscapeKeyFired();\n        break;\n\n      case 'NumpadEnter':\n      case 'Enter':\n        if (event.ctrlKey) {\n          this.cellControlEnterHandler();\n        } else {\n          this.prepareCurrentCellForEdit();\n        }\n        break;\n\n      case 'Home':\n        event.preventDefault();\n        if (event.ctrlKey) {\n          this.goToCell(0, 0);\n        } else {\n          this.goToCell(0, this.selectedCell.row);\n        }\n        break;\n\n      case 'End':\n        event.preventDefault();\n        if (event.ctrlKey) {\n          this.goToCell(this.columns.length - 1, this.internalItems.length - 1);\n        } else {\n          this.goToCell(this.columns.length - 1, this.selectedCell.row);\n        }\n        break;\n\n      case 'PageUp':\n        event.preventDefault();\n        this.goToCell(\n          this.selectedCell.column,\n          Math.max(0, this.selectedCell.row - (event.shiftKey ? 40 : 20))\n        );\n        break;\n\n      case 'PageDown':\n        event.preventDefault();\n        this.goToCell(\n          this.selectedCell.column,\n          Math.min(\n            this.internalItems.length - 1,\n            this.selectedCell.row + (event.shiftKey ? 40 : 20)\n          )\n        );\n        break;\n\n      default:\n        break;\n    }\n  }\n\n  cellClickHandler(columnIndex: number, rowIndex: number) {\n    this.goToCellIsBusy = false;\n    this.goToCell(columnIndex, rowIndex, true, true);\n  }\n\n  async cellChangeHandler(\n    changedValue: any,\n    column: DataGridColumnInterface,\n    row: any,\n    componentInstance?: any\n  ) {\n    let selectChangedValue: any | any[] | null = null;\n    if (column.editConfig.beforeChange) {\n      const showError = async () => {\n        if (column.editConfig.type === 'identity-selector') {\n          const length = column.displayBindingFields?.length || 0;\n          let valueData = null;\n          if ((row[column.binding] || !isNaN(row[column.binding])) && length > 0) {\n            valueData = {\n              [column.editConfig.config.inputField]: row[column.displayBindingFields[0]],\n            };\n\n            if (length > 1 && column.editConfig.config.secondInputField) {\n              valueData[column.editConfig.config.secondInputField] =\n                row[column.displayBindingFields[1]];\n            }\n          }\n          (componentInstance as IdentitySelectorComponent)?.updateValue(\n            row[column.binding],\n            valueData\n          );\n        }\n        if (typeof column.editConfig.beforeChange.errorMessage == 'string') {\n          this.toastService.show({\n            type: 'error',\n            text: column.editConfig.beforeChange.errorMessage,\n          });\n        }\n        if (typeof column.editConfig.beforeChange.errorMessage == 'function') {\n          const res = await column.editConfig.beforeChange.errorMessage({\n            value: changedValue,\n            row,\n            instance: this,\n          });\n          this.toastService.show({\n            type: 'error',\n            text: res,\n          });\n        }\n      };\n      if (\n        typeof column.editConfig.beforeChange.canChange == 'boolean' &&\n        column.editConfig.beforeChange.canChange === false\n      ) {\n        showError();\n        return;\n      }\n\n      if (typeof column.editConfig.beforeChange.canChange == 'function') {\n        const res = await column.editConfig.beforeChange.canChange({\n          value: changedValue,\n          row,\n          instance: this,\n        });\n        setTimeout(() => {\n          this.setFocusOnInput();\n        }, 50);\n\n        if (res === false) {\n          showError();\n          return;\n        }\n      }\n    }\n\n    switch (column.editConfig.type) {\n      case 'identity-selector': {\n        const value = changedValue ? changedValue[column.editConfig.config.resultField] : null;\n\n        if (\n          column.editConfig.isUnique &&\n          value &&\n          !this.checkCellValueIsUniqueInCol(value, column.binding)\n        ) {\n          return;\n        }\n        row[column.binding] = value;\n        const length = column.displayBindingFields?.length;\n        if (length > 0) {\n          row[column.displayBindingFields[0]] = changedValue\n            ? changedValue[column.editConfig.config.inputField || 'code']\n            : null;\n          if (length > 1 && column.editConfig.config.secondInputField) {\n            row[column.displayBindingFields[1]] = changedValue\n              ? changedValue[column.editConfig.config.secondInputField]\n              : null;\n          }\n        }\n\n        this.setFocusOnContainer();\n        break;\n      }\n\n      case 'select': {\n        const value = changedValue;\n\n        if (\n          column.editConfig.isUnique &&\n          value &&\n          !this.checkCellValueIsUniqueInCol(value, column.binding)\n        ) {\n          return;\n        }\n        row[column.binding] = value;\n        const length = column.displayBindingFields?.length;\n        if (length > 0) {\n          let text: string | null = null;\n          if (Array.isArray(value)) {\n            selectChangedValue = [];\n            const tempArr: string[] = [];\n            value.forEach(item => {\n              if (column.editConfig.type === 'select') {\n                const label = this.getSelectOptionLabel(item, column);\n\n                if (label) {\n                  tempArr.push(label);\n                  selectChangedValue.push({\n                    [column.editConfig.config.bindValue || propertyOf<SelectOptionInterface>('id')]:\n                      item,\n                    [column.editConfig.config.bindLabel ||\n                    propertyOf<SelectOptionInterface>('text')]: label,\n                  });\n                }\n              }\n            });\n            text = tempArr.length ? tempArr.join(', ') : null;\n          } else {\n            text = this.getSelectOptionLabel(value, column);\n            if (text) {\n              selectChangedValue = {\n                [column.editConfig.config.bindValue || propertyOf<SelectOptionInterface>('id')]:\n                  value,\n                [column.editConfig.config.bindLabel || propertyOf<SelectOptionInterface>('text')]:\n                  text,\n              };\n            }\n          }\n          row[column.displayBindingFields[0]] = text;\n        }\n        break;\n      }\n\n      case 'tree-select': {\n        row[column.binding] = changedValue;\n        if (componentInstance instanceof TreeSelectComponent) {\n          const path = componentInstance.selectedTreePath;\n          const length = column.displayBindingFields?.length;\n          if (length > 0) {\n            row[column.displayBindingFields[0]] = changedValue ? path : null;\n          }\n        }\n\n        break;\n      }\n\n      default:\n        const value = changedValue ?? null;\n        if (\n          column.editConfig.isUnique &&\n          value &&\n          !this.checkCellValueIsUniqueInCol(value, column.binding)\n        ) {\n          return;\n        }\n        row[column.binding] = value;\n        break;\n    }\n    column.editConfig.changeCallback &&\n      column.editConfig.changeCallback({\n        value: row[column.binding],\n        selectedItem: selectChangedValue || changedValue,\n        row: row,\n        instance: this,\n      });\n    this.cellEditCallback && this.cellEditCallback(row);\n    this.updateAggregate();\n    this.updateColumnConfigs();\n  }\n\n  updateColumnConfigs() {\n    this.columns.forEach((column: DataGridColumnInterface) => {\n      if (column.editConfig?.type == 'button') {\n        column.editConfig = { ...column.editConfig };\n      }\n    });\n  }\n\n  numberCellClickHandler(index: number, event: Event) {\n    if (this.editBoxIsShow) {\n      this.hideEditBox();\n    }\n    this.selectedCell.row = index;\n    this.onRowSelected.emit(\n      this.internalItems && this.internalItems.length > index ? this.internalItems[index] : null\n    );\n  }\n\n  rowRemoveButtonHandler(index: number, $event: Event) {\n    $event.stopPropagation();\n    if (this.disabled) return;\n    const row = this.internalItems[index];\n    if (this.rowIsPlaceholder(row)) return;\n\n    if (index <= this.selectedCell.row) {\n      this.goToCell(this.selectedCell.column, this.selectedCell.row - 1);\n    } else {\n      if (this.editBoxIsShow) {\n        this.setFocusOnInput();\n      } else {\n        this.setFocusOnContainer();\n      }\n    }\n\n    this.removeRow(index);\n  }\n\n  rowResetButtonHandler($event: Event) {\n    $event.stopPropagation();\n    this.resetPlaceholderRow();\n    this.hideEditBox();\n  }\n\n  getActionsColWidth() {\n    return (this.rowDeleteButtonIsShow || this.addable ? 24 : 0) + 'px';\n  }\n\n  rowIsPlaceholder(row: any): boolean {\n    return !!row?.isPlaceholder;\n  }\n\n  getValidationMessage(column: DataGridColumnInterface, control: AbstractControl) {\n    if (!this.currentCellDynamicPropertyDict['validators']) return null;\n    return Helpers.getValidationMessageByValidators(\n      column,\n      control,\n      this.currentCellDynamicPropertyDict['validators']\n    );\n  }\n\n  goToCell(columnIndex: number, rowIndex: number, forceEdit?: boolean, noDelay?: boolean) {\n    if (this.goToCellIsBusy) return;\n    this.goToCellIsBusy = true;\n    setTimeout(\n      () => {\n        this.goToCellIsBusy = false;\n        if (!this.canLeaveCurrentCell()) return;\n        const oldRow = this.selectedCell.row;\n        this.selectedCell.column = columnIndex;\n        this.selectedCell.row = rowIndex;\n        if (oldRow != rowIndex) {\n          this.rowChangeHandler(rowIndex);\n        }\n        this.selectedCellScrollIntoView('nearest', oldRow > rowIndex);\n        if (forceEdit || this.editBoxIsShow) {\n          this.prepareCurrentCellForEdit();\n        }\n      },\n      noDelay ? 0 : 100\n    );\n  }\n\n  cellIsProgrssing(row: number, column: number) {\n    return this.cellLoading.has(this.generateCellLoadingKey(row, column));\n  }\n\n  setCellIsProgressingState(row: number, column: number, state: boolean) {\n    const key = this.generateCellLoadingKey(row, column);\n    if (state) {\n      this.cellLoading.set(key, true);\n    } else {\n      this.cellLoading.delete(key);\n    }\n  }\n\n  getColumIndexByBindingProperty(binding: DataGridColumnInterface['binding']) {\n    return this.columns.findIndex(x => x.binding == binding);\n  }\n\n  async insertPlaceholderRowAsNewRow() {\n    const row = this.internalItems[this.selectedCell.row];\n    if (!this.rowIsPlaceholder(row)) return;\n    const errors = await Helpers.getRowValidationErrorMessages(this.columns, row, this);\n    if (errors.length) {\n      this.toastService.show({\n        type: 'error',\n        text: `<div style=\"display:flex;flex-direction:column\"><strong>لطفا خطاهای زیر را برطرف کنید و سپس اقدام به ثبت ردیف نمایید :</strong><br />-${errors.join(\n          '<br /> -'\n        )}</div>`,\n      });\n      return;\n    }\n\n    delete row.isPlaceholder;\n    this.items.push(row);\n    this.updateAggregate();\n    this.rowAddCallback.emit(row);\n    this.addPlaceholderRowAsActiveRow();\n    setTimeout(() => {\n      this.selectedCellScrollIntoView('center');\n    }, 0);\n  }\n\n  updateAggregate(): void {\n    this.columns.forEach((column: DataGridColumnInterface) => {\n      if (column.aggregate?.type) {\n        column.aggregate = {\n          ...column.aggregate,\n          value: DataGridComponentHelpers.calculateAggregator(\n            this.items,\n            column.binding,\n            column.aggregate?.type\n          ),\n        };\n      }\n    });\n  }\n\n  resetPlaceholderRow() {\n    const row = this.internalItems[this.selectedCell.row];\n    if (this.rowIsPlaceholder(row)) {\n      this.internalItems[this.selectedCell.row] = Helpers.createPlaceholderRow(this.columns, this);\n    }\n  }\n\n  async handleChecked(index: number) {\n    const currentState = this.items[index][this.internalCheckedFieldName];\n    const newState = !currentState;\n    if (\n      this.rowPreCheckedCallback &&\n      (await this.rowPreCheckedCallback(this.items[index], newState)) === false\n    ) {\n      this.items[index][this.internalCheckedFieldName] = null;\n      setTimeout(() => {\n        this.items[index][this.internalCheckedFieldName] = currentState;\n      }, 0);\n      return;\n    }\n    this.items[index][this.internalCheckedFieldName] = newState;\n    this._emitCheckedCallback();\n  }\n\n  async handleCheckedAll() {\n    let newState = this.checkedAllCheckbox.inputNativeElement.checked;\n\n    await Promise.all(\n      this.items.map(async item => {\n        if (\n          this.rowPreCheckedCallback &&\n          (await this.rowPreCheckedCallback(item, newState)) === false\n        ) {\n          const oldState = item[this.internalCheckedFieldName];\n          item[this.internalCheckedFieldName] = null;\n          setTimeout(() => {\n            item[this.internalCheckedFieldName] = oldState;\n          }, 0);\n        } else {\n          item[this.internalCheckedFieldName] = newState;\n        }\n      })\n    );\n\n    setTimeout(() => {\n      this._emitCheckedCallback();\n    }, 10);\n  }\n\n  private checkCellValueIsUniqueInCol(value: any, binding: string) {\n    if (this.internalItems?.some(x => x[binding] == value)) {\n      this.toastService.show({ type: 'warning', text: 'رکورد تکراری' });\n      return false;\n    }\n    return true;\n  }\n\n  private containerLeftArrowKeyFired() {\n    if (this.direction == 'rtl') {\n      this.goToNextCell();\n    } else {\n      this.goToPrevCell();\n    }\n  }\n\n  private containerTopArrowKeyFired() {\n    this.goToUpCell();\n  }\n\n  private containerRightArrowKeyFired() {\n    if (this.direction == 'rtl') {\n      this.goToPrevCell();\n    } else {\n      this.goToNextCell();\n    }\n  }\n\n  private containerBottomArrowKeyFired() {\n    this.goToDownCell();\n  }\n\n  private containerDeleteKeyFired() {\n    if (\n      !this.isEditMode ||\n      this.editBoxIsShow ||\n      this.rowIsPlaceholder(this.internalItems[this.selectedCell.row])\n    )\n      return;\n    this.removeRow(this.selectedCell.row);\n  }\n\n  private containerEscapeKeyFired() {\n    this.resetPlaceholderRow();\n  }\n\n  private selectedCellScrollIntoView(position: ScrollLogicalPosition = 'nearest', toTop?: boolean) {\n    setTimeout(() => {\n      const celId = `cell_${this.idUniquePrefix}_${this.selectedCell.column},${this.selectedCell.row}`;\n      const cell = document.getElementById(celId);\n\n      if (toTop) {\n        const flag = cell?.querySelector('[data-role=\"flag\"]');\n        flag?.scrollIntoView({\n          inline: position,\n          block: position,\n        });\n      } else {\n        cell?.scrollIntoView({\n          inline: position,\n          block: position,\n        });\n      }\n    });\n  }\n\n  private async prepareCurrentCellForEdit(key?: string) {\n    if (!this.isEditMode) return;\n    const column = this.columns[this.selectedCell.column];\n    const row = this.internalItems[this.selectedCell.row];\n    if (!column.editConfig) {\n      this.setFocusOnContainer();\n      return;\n    }\n    this.currentCellDynamicPropertyDict = await Helpers.getColumnDynamicPropertyDict(\n      this.columns[this.selectedCell.column],\n      row,\n      this\n    );\n\n    if (this.rowIsPlaceholder(row)) {\n      await Helpers.setCellDefaultValue(row, column, this);\n    }\n\n    this.form = await Helpers.createForm(this.columns, row, this);\n    if (this.form.controls[column.binding].disabled) {\n      if (this.columns[this.selectedCell.column]?.editConfig?.disabledReason) {\n        this.toastService.show({\n          type: 'error',\n          text: this.columns[this.selectedCell.column]?.editConfig?.disabledReason,\n        });\n      }\n      this.setFocusOnContainer();\n      return;\n    }\n    this.editBoxIsShow = true;\n    clearTimeout(this.cellPrepareEditTimeout);\n    this.cellPrepareEditTimeout = setTimeout(() => {\n      const input = this.editBoxRef.nativeElement.querySelector('input');\n      if (key) {\n        input.value = key;\n      }\n      if (!input) return;\n      const inputAny = input as any;\n      this.initializeInputElement(input, column, row);\n      input.focus({\n        preventScroll: true,\n      });\n      input.select();\n      this.setFocused();\n      if (inputAny.inited) return;\n      inputAny.inited = true;\n    }, 50);\n  }\n\n  private initializeInputElement(\n    input: HTMLInputElement,\n    column: DataGridColumnInterface,\n    row: RowType\n  ) {\n    if (!input) return;\n    const inputDirection = getComputedStyle(input).direction;\n    const isCheckbox = input.type === 'checkbox';\n    input.addEventListener('keydown', event => {\n      const key = event.code;\n      if (!['Home', 'End', 'PageUp', 'PageDown'].includes(key)) {\n        event.stopPropagation();\n      }\n      const value = input.value;\n      const carret = input.selectionStart;\n      const isInStart = carret == 0;\n      const isInEnd = value.length == carret;\n      switch (key) {\n        case 'ArrowLeft':\n          if (this.direction == 'rtl') {\n            if (isCheckbox) {\n              this.goToNextCell();\n            } else {\n              if (inputDirection == 'ltr') {\n                if (isInStart) {\n                  this.goToNextCell();\n                }\n              } else if (isInEnd) {\n                this.goToNextCell();\n              }\n            }\n          } else {\n            if (isCheckbox) {\n              this.goToPrevCell();\n            } else {\n              if (isInStart) {\n                this.goToPrevCell();\n              }\n            }\n          }\n\n          break;\n\n        case 'ArrowRight':\n          if (this.direction == 'rtl') {\n            if (isCheckbox) {\n              this.goToPrevCell();\n            } else {\n              if (inputDirection == 'ltr') {\n                if (isInEnd) {\n                  this.goToPrevCell();\n                }\n              } else if (isInStart) {\n                this.goToPrevCell();\n              }\n            }\n          } else {\n            if (isCheckbox) {\n              this.goToNextCell();\n            } else {\n              if (isInEnd) {\n                this.goToNextCell();\n              }\n            }\n          }\n          break;\n\n        case 'ArrowUp':\n          event.preventDefault();\n          if (column.editConfig.type != 'select') {\n            this.goToUpCell();\n          }\n          break;\n\n        case 'ArrowDown':\n          event.preventDefault();\n          if (column.editConfig.type != 'select') {\n            this.goToDownCell();\n          }\n          break;\n\n        case 'Escape':\n          this.cellEscapeHandler();\n          break;\n\n        case 'Tab':\n          this.cellTabHandler(event);\n          break;\n\n        case 'NumpadEnter':\n        case 'Enter':\n          event.preventDefault();\n          if (event.ctrlKey) {\n            this.cellControlEnterHandler();\n          } else {\n            this.cellEnterHandler();\n          }\n          break;\n\n        default:\n          break;\n      }\n    });\n    input.addEventListener('focus', () => {\n      this.setFocused();\n      this.lastFocusedElement = 'input';\n    });\n    input.addEventListener('blur', () => {\n      this.blurHandler();\n    });\n  }\n\n  private hideEditBox() {\n    this.editBoxIsShow = false;\n    this.setFocusOnContainer();\n  }\n\n  private setFocusOnContainer() {\n    setTimeout(() => {\n      this.wrapperElement.focus();\n    }, 0);\n  }\n\n  private setFocusOnInput() {\n    if (!this.editBoxIsShow) return;\n    const input = this.editBoxRef?.nativeElement?.querySelector('input');\n    input?.focus({\n      preventScroll: true,\n    });\n  }\n\n  private canLeaveCurrentCell() {\n    if (!this.editBoxIsShow) return true;\n    const column = this.columns[this.selectedCell.column];\n    const control = this.form.controls[column?.binding];\n    if (control?.invalid && !control.disabled) {\n      this.shaking = true;\n      setTimeout(() => {\n        this.shaking = false;\n      }, 500);\n      const input = this.editBoxRef?.nativeElement?.querySelector('input');\n      this.setFocusOnContainer();\n      setTimeout(() => {\n        input?.focus();\n      }, 0);\n\n      return false;\n    }\n    return true;\n  }\n\n  private goToNextCell() {\n    let column = this.selectedCell.column;\n    let row = this.selectedCell.row;\n    if (this.selectedCell.column == this.columns.length - 1) {\n      if (this.selectedCell.row < this.internalItems.length - 1) {\n        column = 0;\n        row = this.selectedCell.row + 1;\n      }\n    } else {\n      column = this.selectedCell.column + 1;\n    }\n    this.goToCell(column, row);\n  }\n\n  private async getEditableColumnIndexList(rowIndex: number) {\n    const row = this.internalItems[rowIndex];\n    const editableColumnIndexList: number[] = [];\n    for (let index = 0, length = this.columns.length; index < length; index++) {\n      const column = this.columns[index];\n      if (\n        column.editConfig &&\n        !(typeof column.editConfig.disabled == 'function'\n          ? await column.editConfig.disabled({\n              value: row[column.binding],\n              row: row,\n              instance: this,\n            })\n          : column.editConfig.disabled)\n      ) {\n        editableColumnIndexList.push(index);\n      }\n    }\n    return editableColumnIndexList;\n  }\n\n  private async goToNextRowEditableCell(): Promise<boolean> {\n    let newColumnIndex: number | null = null;\n    let newRowIndex: number = this.selectedCell.row;\n    let editableColumnIndexList = await this.getEditableColumnIndexList(this.selectedCell.row);\n    const findedEditableIndex = editableColumnIndexList.findIndex(\n      x => x == this.selectedCell.column\n    );\n\n    if (findedEditableIndex === -1) return false;\n    if (findedEditableIndex >= editableColumnIndexList.length - 1) {\n      if (this.canLeaveCurrentCell()) {\n        if (this.rowIsPlaceholder(this.internalItems[this.selectedCell.row])) {\n          this.insertPlaceholderRowAsNewRow();\n        } else {\n          if (this.selectedCell.row >= this.internalItems.length - 1) return false;\n          newRowIndex = this.selectedCell.row + 1;\n          editableColumnIndexList = await this.getEditableColumnIndexList(newRowIndex);\n          if (editableColumnIndexList.length) {\n            newColumnIndex = editableColumnIndexList[0];\n          }\n        }\n      }\n    } else {\n      newColumnIndex = editableColumnIndexList[findedEditableIndex + 1];\n    }\n    if (newColumnIndex != null && newColumnIndex >= 0) {\n      this.goToCell(newColumnIndex, newRowIndex, this.editBoxIsShow);\n      return true;\n    }\n    return false;\n  }\n\n  private async goToPrevRowEditableCell(): Promise<boolean> {\n    let newColumnIndex: number | null = null;\n    let newRowIndex: number = this.selectedCell.row;\n    let editableColumnIndexList = await this.getEditableColumnIndexList(this.selectedCell.row);\n    const findedEditableIndex = editableColumnIndexList.findIndex(\n      x => x == this.selectedCell.column\n    );\n\n    if (findedEditableIndex == -1) return false;\n\n    if (findedEditableIndex == 0) {\n      if (this.selectedCell.row <= 0) return false;\n      newRowIndex = this.selectedCell.row - 1;\n      editableColumnIndexList = await this.getEditableColumnIndexList(newRowIndex);\n      if (editableColumnIndexList.length) {\n        newColumnIndex = editableColumnIndexList[editableColumnIndexList.length - 1];\n      }\n    } else {\n      newColumnIndex = editableColumnIndexList[findedEditableIndex - 1];\n    }\n\n    if (newColumnIndex != null && newColumnIndex >= 0) {\n      this.goToCell(newColumnIndex, newRowIndex, this.editBoxIsShow);\n      return true;\n    }\n    return false;\n  }\n\n  private goToPrevCell() {\n    let column = this.selectedCell.column;\n    let row = this.selectedCell.row;\n    if (this.selectedCell.column == 0) {\n      if (this.selectedCell.row > 0) {\n        column = this.columns.length - 1;\n        row = this.selectedCell.row - 1;\n      }\n    } else {\n      column = this.selectedCell.column - 1;\n    }\n    this.goToCell(column, row);\n  }\n\n  private goToUpCell() {\n    this.goToCell(this.selectedCell.column, Math.max(this.selectedCell.row - 1, 0));\n  }\n\n  private goToDownCell() {\n    this.goToCell(\n      this.selectedCell.column,\n      Math.min(this.selectedCell.row + 1, this.internalItems.length - 1)\n    );\n  }\n\n  private removeRow(index: number) {\n    const row = this.internalItems[index];\n    let mustEmit = row[this.internalCheckedFieldName];\n    this.internalItems.splice(index, 1);\n    this.items.splice(index, 1);\n    this.rowDeleteCallback && this.rowDeleteCallback(row);\n    this.updateAggregate();\n    this.setNumberColumnWidth();\n\n    if (mustEmit) {\n      this._emitCheckedCallback();\n    }\n  }\n\n  private addPlaceholderRow() {\n    if (this.internalItems.some(x => x.isPlaceholder)) return;\n    this.internalItems.push(Helpers.createPlaceholderRow(this.columns, this));\n    this.setNumberColumnWidth();\n  }\n\n  private removePlaceholderRow() {\n    const findedIndex = this.internalItems.findIndex(x => x.isPlaceholder);\n    if (findedIndex != -1) {\n      this.internalItems.splice(findedIndex, 1);\n      this.setNumberColumnWidth();\n    }\n  }\n\n  private addPlaceholderRowAsActiveRow() {\n    this.addPlaceholderRow();\n    this.goToCell(0, this.internalItems.length - 1, true);\n  }\n\n  private generateCellLoadingKey(row: number, column: number) {\n    return row + '-' + column;\n  }\n\n  private async cellTabHandler(event: KeyboardEvent) {\n    const row = this.internalItems[this.selectedCell.row];\n    const column = this.columns[this.selectedCell.column];\n    if (column.editConfig.tabCallback) {\n      const res = column.editConfig.tabCallback({\n        value: row[column.binding],\n        row: row,\n        instance: this,\n        event,\n      });\n\n      if (res === false) {\n        return;\n      }\n    }\n\n    if (event.shiftKey) {\n      if (await this.goToPrevRowEditableCell()) {\n        event.preventDefault();\n      }\n    } else {\n      if (await this.goToNextRowEditableCell()) {\n        event.preventDefault();\n      }\n    }\n  }\n\n  private async cellEnterHandler() {\n    const row = this.internalItems[this.selectedCell.row];\n    const column = this.columns[this.selectedCell.column];\n    if (column.editConfig.enterCallback) {\n      this.setCellIsProgressingState(this.selectedCell.row, this.selectedCell.column, true);\n\n      const res = await column.editConfig.enterCallback({\n        value: row[column.binding],\n        row: row,\n        instance: this,\n      });\n      this.setCellIsProgressingState(this.selectedCell.row, this.selectedCell.column, false);\n      if (res === false) return;\n    }\n\n    this.goToNextRowEditableCell();\n  }\n\n  private cellControlEnterHandler() {\n    if (!this.isEditMode) return;\n    const row = this.internalItems[this.selectedCell.row];\n    if (this.rowIsPlaceholder(row)) {\n      this.insertPlaceholderRowAsNewRow();\n    } else {\n      this.goToCell(0, this.internalItems.length - 1, true);\n    }\n  }\n\n  private cellEscapeHandler() {\n    const row = this.internalItems[this.selectedCell.row];\n    if (this.rowIsPlaceholder(row) || this.canLeaveCurrentCell()) {\n      this.hideEditBox();\n    }\n  }\n\n  private rowChangeHandler(rowIndex: number) {\n    this.rowChangeCallback.emit(this.internalItems[rowIndex]);\n    if (this.internalItems[rowIndex]) this.onRowSelected.emit(this.internalItems[rowIndex]);\n  }\n\n  private setNumberColumnWidth() {\n    setTimeout(() => {\n      const newElement = this.totalCountRef.nativeElement.cloneNode(true) as HTMLDivElement;\n      newElement.style.position = 'absolute';\n      newElement.style.top = '0';\n      newElement.style.left = '0';\n      newElement.style.right = 'auto';\n      newElement.style.insetInlineStart = 'auto';\n      newElement.style.insetInlineEnd = 'auto';\n      newElement.style.insetInlineStart = 'auto';\n      newElement.style.visibility = 'hidden';\n      document.body.append(newElement);\n      this.numberColumnWidth = newElement.offsetWidth;\n      document.body.removeChild(newElement);\n    }, 0);\n  }\n\n  private _emitCheckedCallback() {\n    this.checkedCallback.emit(this.checkedItems);\n  }\n\n  private getSelectOptionLabel(\n    value: string | number,\n    column: DataGridColumnInterface\n  ): string | null {\n    const options = this.currentCellDynamicPropertyDict['selectOptions'] as Array<any>;\n    const option = options.find(\n      x =>\n        column.editConfig.type === 'select' &&\n        x[column.editConfig.config.bindValue || propertyOf<SelectOptionInterface>('id')] == value\n    );\n\n    if (option) {\n      return option[\n        (column.editConfig.type === 'select' && column.editConfig.config.bindLabel) ||\n          propertyOf<SelectOptionInterface>('text')\n      ];\n    }\n    return null;\n  }\n}\n","<section\n  class=\"data-grid\"\n  [tabIndex]=\"lastFocusedElement == 'input' ? '-1' : tabIndex\"\n  (keydown)=\"keydownHandler($event)\"\n  (focus)=\"focusHandler()\"\n  (blur)=\"blurHandler()\"\n  [class.data-grid--disabled]=\"disabled\"\n  [class.data-grid--focused]=\"isFocused\"\n>\n  <div class=\"data-grid__container\">\n    <div class=\"data-grid__table\">\n      <header class=\"data-grid__header\">\n        <ul class=\"data-grid__row\">\n          <li\n            class=\"data-grid__cell data-grid__cell--row-number\"\n            [style.width]=\"numberColumnWidth + 'px'\"\n          >\n            <span class=\"data-grid__checkbox\" *ngIf=\"checkable\">\n              <ui-checkbox\n                #checkedAllCheckbox\n                [style.visibility]=\"hideCheckedAll ? 'hidden' : null\"\n                [disabled]=\"!items?.length\"\n                [checked]=\"items?.length > 0 && checkedItems?.length === items?.length\"\n                [indeterminate]=\"checkedItems?.length > 0 && checkedItems?.length !== items?.length\"\n                (onChangeValue)=\"handleCheckedAll()\"\n              ></ui-checkbox>\n            </span>\n          </li>\n\n          <ng-container *ngIf=\"rowActionsColIsShow\">\n            <li\n              class=\"data-grid__cell data-grid__cell--actions\"\n              [style.inset-inline-start]=\"numberColumnWidth + 'px'\"\n              [style.width]=\"getActionsColWidth()\"\n            ></li>\n          </ng-container>\n          <li\n            class=\"data-grid__cell {{ column | dataGridColumnClassName }}\"\n            *ngFor=\"let column of columns\"\n            [style.width]=\"column | dataGridColumnWidth\"\n          >\n            <span class=\"data-grid__cell-content\"\n              ><span class=\"data-grid__cell-text\">{{ column.title }}</span></span\n            >\n          </li>\n          <li class=\"data-grid__cell data-grid__cell--wide\"></li>\n        </ul>\n      </header>\n      <div class=\"data-grid__body\" #listRef>\n        <ng-container *ngFor=\"let item of internalItems; let rowIndex = index\">\n          <ng-container\n            *ngIf=\"isEditMode && selectedCell.row == rowIndex && form; else normalRowtemplate\"\n          >\n            <form\n              class=\"data-grid__row {{ item | dataGridRowClassName : rowFormatCallback }}\"\n              [class.data-grid__row--selected]=\"selectedCell.row == rowIndex\"\n              #myForm=\"ngForm\"\n              [formGroup]=\"form\"\n              data-role=\"row\"\n              tabindex=\"-1\"\n            >\n              <ng-container\n                *ngTemplateOutlet=\"\n                  rowTemplate;\n                  context: {\n                    item: item,\n                    rowIndex: rowIndex,\n                    isPlaceholder: rowIsPlaceholder(item)\n                  }\n                \"\n              >\n              </ng-container>\n            </form>\n          </ng-container>\n          <ng-template #normalRowtemplate>\n            <div\n              class=\"data-grid__row {{ item | dataGridRowClassName : rowFormatCallback }}\"\n              [class.data-grid__row--selected]=\"selectedCell.row == rowIndex\"\n              data-role=\"row\"\n            >\n              <ng-container\n                *ngTemplateOutlet=\"\n                  rowTemplate;\n                  context: {\n                    item: item,\n                    rowIndex: rowIndex,\n                    isPlaceholder: rowIsPlaceholder(item)\n                  }\n                \"\n              >\n              </ng-container>\n            </div>\n          </ng-template>\n        </ng-container>\n      </div>\n      <footer class=\"data-grid__footer\" *ngIf=\"!hideTotalCount || hasAggregate\">\n        <ul class=\"data-grid__row\">\n          <li\n            class=\"data-grid__cell data-grid__cell--row-number\"\n            [style.width]=\"numberColumnWidth + 'px'\"\n          >\n            <span class=\"data-grid__checkbox\" *ngIf=\"checkable\"><ui-checkbox></ui-checkbox></span>\n            <span class=\"data-grid__row-number\" [appTooltip]=\"'general.totalCount' | translate\">{{\n              items?.length?.toLocaleString()\n            }}</span>\n          </li>\n          <ng-container *ngIf=\"rowActionsColIsShow\">\n            <li\n              class=\"data-grid__cell data-grid__cell--actions\"\n              [style.inset-inline-start]=\"numberColumnWidth + 'px'\"\n              [style.width]=\"getActionsColWidth()\"\n            ></li>\n          </ng-container>\n          <li class=\"data-grid__cell\" *ngFor=\"let column of columns\" [style.width]=\"column.width\">\n            <strong\n              class=\"data-grid__cell-content\"\n              [appTooltip]=\"column.aggregate.type | dataGridCellAggregateTypeTitle : 'tooltip'\"\n              [appTooltipPosition]=\"'top'\"\n              *ngIf=\"column.aggregate?.value\"\n              >{{\n                column.aggregate.label || (column.aggregate.type | dataGridCellAggregateTypeTitle)\n                  ? (column.aggregate.label ||\n                      (column.aggregate.type | dataGridCellAggregateTypeTitle)) + ': '\n                  : ''\n              }}{{ column.aggregate.value | number : '1.0-3' }}</strong\n            >\n          </li>\n          <li class=\"data-grid__cell data-grid__cell--wide\"></li>\n        </ul>\n      </footer>\n    </div>\n  </div>\n  <span #totalCountRef class=\"data-grid__cell data-grid__cell--row-number\">\n    <ui-checkbox *ngIf=\"checkable\" class=\"data-grid__checkbox\"></ui-checkbox>\n    <span class=\"data-grid__row-number\">{{ items?.length?.toLocaleString() }}</span>\n  </span>\n</section>\n\n<ng-template\n  #editCellTemplate\n  let-row=\"row\"\n  let-column=\"column\"\n  let-columnIndex=\"columnIndex\"\n  let-rowIndex=\"rowIndex\"\n>\n  <div\n    #editBox\n    class=\"data-grid__edit-box\"\n    [class.data-grid__edit-box--shake]=\"shaking\"\n    [formGroup]=\"form\"\n  >\n    <ng-container *ngIf=\"column.editConfig && form\" [ngSwitch]=\"column.editConfig?.type\">\n      <span *ngSwitchCase=\"'button'\" class=\"data-grid__cell-content\">\n        <ui-data-grid-btn [editConfig]=\"column.editConfig\" [row]=\"row\"></ui-data-grid-btn>\n      </span>\n      <ui-textbox\n        *ngSwitchCase=\"'textbox'\"\n        (changeCallback)=\"cellChangeHandler($event, column, row)\"\n        [formControlName]=\"column.binding\"\n        [type]=\"column.editConfig.config?.type\"\n        [id]=\"column.editConfig.config?.id\"\n        [autocomplete]=\"column.editConfig.config?.autocomplete\"\n        [placeholder]=\"column.editConfig.config?.placeholder\"\n        [iconUrl]=\"column.editConfig.config?.iconUrl\"\n        [hasError]=\"column.editConfig.config?.hasError\"\n        [mask]=\"column.editConfig.config?.mask\"\n        [onlyNumber]=\"column.editConfig.config?.onlyNumber\"\n        [maxlength]=\"column.editConfig.config?.maxlength\"\n        [currency]=\"column.editConfig.config?.currency\"\n        [currencyConfig]=\"currentCellDynamicPropertyDict['textboxCurrencyConfig']\"\n      ></ui-textbox>\n      <ui-dropdown-text-input\n        *ngSwitchCase=\"'dropdown-textbox'\"\n        (changeCallback)=\"cellChangeHandler($event, column, row)\"\n        [formControlName]=\"column.binding\"\n        [options]=\"column.editConfig.config?.options\"\n        [defaultDropdownValue]=\"column.editConfig.config?.defaultDropdownValue\"\n        [textBoxType]=\"column.editConfig.config?.type\"\n        [id]=\"column.editConfig.config?.id\"\n        [size]=\"column.editConfig.config?.size\"\n        [placeholder]=\"column.editConfig.config?.placeholder\"\n        [mask]=\"column.editConfig.config?.mask\"\n        [onlyNumber]=\"column.editConfig.config?.onlyNumber\"\n        [maxlength]=\"column.editConfig.config?.maxlength\"\n      ></ui-dropdown-text-input>\n      <ui-select\n        *ngSwitchCase=\"'select'\"\n        (changeCallback)=\"cellChangeHandler($event, column, row)\"\n        [formControlName]=\"column.binding\"\n        [options]=\"currentCellDynamicPropertyDict['selectOptions']\"\n        [id]=\"column.editConfig.config.id\"\n        [placeholder]=\"column.editConfig.config.placeholder\"\n        [bindLabel]=\"column.editConfig.config.bindLabel\"\n        [bindValue]=\"column.editConfig.config.bindValue\"\n        [size]=\"column.editConfig.config.size\"\n        [iconUrl]=\"column.editConfig.config.iconUrl\"\n        [hasError]=\"column.editConfig.config.hasError\"\n        [allowClear]=\"column.editConfig.config.allowClear\"\n        [multiple]=\"column.editConfig.config.multiple\"\n        [spinnerIsShow]=\"column.editConfig.config.spinnerIsShow\"\n        [disabled]=\"column.editConfig.disabled\"\n      ></ui-select>\n      <ui-identity-selector\n        #identitySelector\n        *ngSwitchCase=\"'identity-selector'\"\n        (changeCallback)=\"cellChangeHandler($event, column, row, identitySelector)\"\n        [formControlName]=\"column.binding\"\n        [valueData]=\"currentCellDynamicPropertyDict['identitySelectorValueData']\"\n        [oDataServer]=\"column.editConfig.config.oDataServer\"\n        [oDataTable]=\"column.editConfig.config.oDataTable\"\n        [oDataEntity]=\"column.editConfig.config.oDataEntity\"\n        [hasCrudOrigin]=\"column.editConfig.config.hasCrudOrigin\"\n        [oDataService]=\"column.editConfig.config.oDataService\"\n        [oDataHttpHeaders]=\"currentCellDynamicPropertyDict['identitySelectorODataHttpHeaders']\"\n        [inputField]=\"column.editConfig.config.inputField\"\n        [secondInputField]=\"column.editConfig.config.secondInputField\"\n        [resultField]=\"column.editConfig.config.resultField\"\n        [displayField]=\"column.editConfig.config.displayField\"\n        [gridFields]=\"column.editConfig.config.gridFields\"\n        [gridItems]=\"column.editConfig.config.gridItems\"\n        [allowClear]=\"column.editConfig.config.allowClear\"\n        [subMenuWidth]=\"column.editConfig.config.subMenuWidth\"\n      ></ui-identity-selector>\n      <ui-tree-select\n        #treeSelect\n        *ngSwitchCase=\"'tree-select'\"\n        (changeCallback)=\"cellChangeHandler($event, column, row, treeSelect)\"\n        [formControlName]=\"column.binding\"\n        [data]=\"currentCellDynamicPropertyDict['treeSelectData']\"\n        [placeholder]=\"column.editConfig.config.placeholder\"\n        [bindLabel]=\"column.editConfig.config.bindLabel\"\n        [bindValue]=\"column.editConfig.config.bindValue\"\n        [bindItems]=\"column.editConfig.config.bindItems\"\n        [allowClear]=\"column.editConfig.config.allowClear\"\n      ></ui-tree-select>\n      <span class=\"data-grid__cell-content\" *ngSwitchCase=\"'checkbox'\">\n        <ui-checkbox\n          (onChangeValue)=\"cellChangeHandler($event, column, row)\"\n          [formControlName]=\"column.binding\"\n          [value]=\"column.editConfig.config?.value\"\n          [text]=\"column.editConfig.config?.text\"\n          [indeterminate]=\"column.editConfig.config?.indeterminate\"\n        ></ui-checkbox>\n      </span>\n      <ng-container *ngIf=\"column.editConfig.validators?.length\"\n        ><ui-fararu-icon\n          [name]=\"'alert'\"\n          [color]=\"'on-error'\"\n          class=\"data-grid__edit-box-error\"\n          [class.data-grid__edit-box-error--show]=\"\n            (form.controls[column.binding]?.touched || form.controls[column.binding]?.dirty) &&\n            form.controls[column.binding]?.invalid\n          \"\n          [size]=\"'x1'\"\n          [appTooltip]=\"\n            form.controls[column.binding]?.errors\n              ? getValidationMessage(column, form.controls[column.binding])\n              : null\n          \"\n          [appTooltipIsError]=\"true\"\n        ></ui-fararu-icon>\n      </ng-container>\n      <ng-container *ngIf=\"cellIsProgrssing(rowIndex, columnIndex)\">\n        <ui-spinner\n          class=\"data-grid__edit-box-spinner\"\n          [hideText]=\"true\"\n          [show]=\"true\"\n          [size]=\"'tiny'\"\n        ></ui-spinner>\n      </ng-container>\n    </ng-container>\n  </div>\n</ng-template>\n\n<ng-template\n  #cellTemplate\n  let-row=\"row\"\n  let-column=\"column\"\n  let-columnIndex=\"columnIndex\"\n  let-rowIndex=\"rowIndex\"\n>\n  <span class=\"data-grid__cell-content\" (click)=\"cellClickHandler(columnIndex, rowIndex)\">\n    <ng-container *ngIf=\"column.editConfig?.type === 'button'; else cellContentTemplate\">\n      <ui-data-grid-btn [editConfig]=\"column.editConfig\" [row]=\"row\"></ui-data-grid-btn>\n    </ng-container>\n    <ng-template #cellContentTemplate>\n      <ng-container\n        *ngIf=\"\n          column.editConfig?.type === 'checkbox' || (row[column.binding] | isBoolean);\n          else cellContentTextTemplate\n        \"\n      >\n        <ui-checkbox [checked]=\"row[column.binding]\" [disabled]=\"true\"></ui-checkbox>\n      </ng-container>\n      <ng-template #cellContentTextTemplate>\n        <span\n          class=\"data-grid__cell-text\"\n          [innerHTML]=\"\n            column.editConfig?.type !== 'dropdown-textbox'\n              ? (row[column.binding] | dataGridCellDisplayValue : column : row)\n              : (row[column.binding]\n                | dataGridCellDisplayObjectPipe : column?.editConfig?.config?.options)\n          \"\n        ></span>\n      </ng-template>\n    </ng-template>\n  </span>\n</ng-template>\n\n<ng-template #rowTemplate let-item=\"item\" let-rowIndex=\"rowIndex\" let-isPlaceholder=\"isPlaceholder\">\n  <div\n    class=\"data-grid__cell data-grid__cell--row-number\"\n    [style.width]=\"numberColumnWidth + 'px'\"\n    (click)=\"numberCellClickHandler(rowIndex, $event)\"\n    data-role=\"cell\"\n  >\n    <span class=\"data-grid__checkbox\" *ngIf=\"checkable\">\n      <ui-checkbox\n        [style.visibility]=\"isPlaceholder ? 'hidden' : null\"\n        [checked]=\"item[internalCheckedFieldName]\"\n        (onChangeValue)=\"handleChecked(rowIndex)\"\n      ></ui-checkbox>\n    </span>\n    <span class=\"data-grid__row-number\" [class.data-grid__row-number--placeholder]=\"isPlaceholder\">\n      {{ !isPlaceholder ? rowIndex + 1 : null }}\n    </span>\n  </div>\n  <ng-container *ngIf=\"rowActionsColIsShow\">\n    <div\n      class=\"data-grid__cell data-grid__cell--actions\"\n      data-role=\"cell\"\n      [style.inset-inline-start]=\"numberColumnWidth + 'px'\"\n      [style.width]=\"getActionsColWidth()\"\n    >\n      <ng-container *ngIf=\"isPlaceholder && addable; else rowRemoveButtonTemplate\">\n        <ui-button\n          [buttonType]=\"'button'\"\n          [isIcon]=\"true\"\n          iconColor=\"danger\"\n          size=\"small\"\n          [disabled]=\"disabled\"\n          [tabIndex]=\"-1\"\n          (clickCallback)=\"rowResetButtonHandler($event)\"\n        >\n          <ui-fararu-icon [name]=\"'reload'\"></ui-fararu-icon>\n        </ui-button>\n      </ng-container>\n      <ng-template #rowRemoveButtonTemplate>\n        <ui-button\n          *ngIf=\"rowDeleteButtonIsShow\"\n          [buttonType]=\"'button'\"\n          [isIcon]=\"true\"\n          iconColor=\"danger\"\n          size=\"small\"\n          [disabled]=\"disabled\"\n          [tabIndex]=\"-1\"\n          (clickCallback)=\"rowRemoveButtonHandler(rowIndex, $event)\"\n          [title]=\"('btns_text.delete' | translate) + ' Delete'\"\n        >\n          <ui-fararu-icon [name]=\"'delete'\"></ui-fararu-icon>\n        </ui-button>\n      </ng-template>\n    </div>\n  </ng-container>\n  <div\n    class=\"data-grid__cell {{ column | dataGridColumnClassName : item }}\"\n    *ngFor=\"let column of columns; let columnIndex = index\"\n    [class.data-grid__cell--selected]=\"\n      selectedCell.column == columnIndex && selectedCell.row == rowIndex\n    \"\n    [class.data-grid__cell--editable]=\"\n      selectedCell.column == columnIndex && selectedCell.row == rowIndex && editBoxIsShow\n    \"\n    data-role=\"cell\"\n    [attr.id]=\"'cell_' + idUniquePrefix + '_' + columnIndex + ',' + rowIndex\"\n  >\n    <span\n      *ngIf=\"selectedCell.column == columnIndex && selectedCell.row == rowIndex\"\n      class=\"data-grid__flag\"\n      data-role=\"flag\"\n    ></span>\n    <ng-container\n      *ngTemplateOutlet=\"\n        editBoxIsShow &&\n        selectedCell.column == columnIndex &&\n        selectedCell.row == rowIndex &&\n        column.editConfig\n          ? editCellTemplate\n          : cellTemplate;\n        context: {\n          row: item,\n          column: column,\n          columnIndex: columnIndex,\n          rowIndex: rowIndex\n        }\n      \"\n    >\n    </ng-container>\n  </div>\n  <div class=\"data-grid__cell data-grid__cell--wide\"></div>\n</ng-template>\n","import { Injectable } from '@angular/core';\nimport { Router, UrlSegmentGroup } from '@angular/router';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class OutletCloserService {\n  constructor(private readonly _router: Router) {}\n\n  closeOutlet(outletName: string): Promise<boolean> {\n    const currentUrlTree = this._router.parseUrl(\n      this._router.routerState.snapshot.url\n    );\n    const newRootSegment = this.recursivelyClearOutlet(\n      currentUrlTree.root,\n      outletName\n    );\n    currentUrlTree.root = newRootSegment;\n    return this._router.navigateByUrl(currentUrlTree);\n  }\n\n  recursivelyClearOutlet(\n    root: UrlSegmentGroup,\n    outletName: string\n  ): UrlSegmentGroup {\n    const newChildren: any = {};\n    for (const [childOutlet, child] of Object.entries(root.children)) {\n      if (childOutlet !== outletName) {\n        const newChild = this.recursivelyClearOutlet(child, outletName);\n        newChildren[childOutlet] = newChild;\n      }\n    }\n    return new UrlSegmentGroup(root.segments, newChildren);\n  }\n}\n","import {\n  Component,\n  EventEmitter,\n  HostListener,\n  Input,\n  OnChanges,\n  OnInit,\n  Output,\n  ViewEncapsulation,\n} from '@angular/core';\nimport { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap';\nimport { TranslateService } from '@ngx-translate/core';\nimport { ModalService } from '../modal.service';\nimport { ToolbarComponent } from '../../components/molecules/toolbar/toolbar.component';\nimport { ElementIds } from '../../../constants/elmenet-ids';\nimport { OutletCloserService } from '../../../services/outlet-closer.service';\nimport { ActivatedRoute } from '@angular/router';\n\n@Component({\n  selector: 'modal-wrapper',\n  templateUrl: './modal-wrapper.component.html',\n  styleUrls: ['./modal-wrapper.component.scss'],\n  encapsulation: ViewEncapsulation.None,\n})\nexport class ModalWrapperComponent extends ToolbarComponent implements OnChanges, OnInit {\n  @Input() title: string;\n  @Input() saveButtonText?: string;\n  @Input() saveButtonForAttr?: string;\n  @Input() saveButtonFormAttr?: string;\n  @Input() showSaveButtonLoading?: boolean;\n  @Input() showAlternativeSaveButton?: boolean;\n  @Input() alternativeSaveButtonText?: string;\n  @Input() alternativeSaveButtonForAttr?: string;\n  @Input() cancelButtonText?: string;\n  @Input() beforeCloseCallback?: () => Promise<boolean> | boolean;\n  @Input() confirmBeforeCancel: boolean = false;\n  @Input() submittableFormId?: string;\n  @Input() hideSaveButton: boolean = false;\n\n  @Output() saveClickCallback = new EventEmitter<boolean>();\n  @Output() cancelClickCallback = new EventEmitter();\n\n  hasSaveButton: boolean = false;\n  hasAlternativeSaveButton: boolean = false;\n  hasCancelButton: boolean = false;\n\n  private submitButtonAdded: boolean = false;\n\n  constructor(\n    private _activeModal: NgbActiveModal,\n    private _modalService: ModalService,\n    private _translateService: TranslateService,\n    private _outletCloser: OutletCloserService,\n    private _router: ActivatedRoute\n  ) {\n    super();\n  }\n\n  ngOnInit(): void {\n    this._addSubmitButtons();\n  }\n\n  override ngOnChanges(): void {\n    if (this.submittableFormId) {\n      if (!this.saveButtonForAttr) {\n        this.saveButtonForAttr = ElementIds.MODAL_SAVE_BUTTON;\n      }\n      if (this.showAlternativeSaveButton && !this.alternativeSaveButtonForAttr) {\n        this.alternativeSaveButtonForAttr = ElementIds.MODAL_ALTERNATIVE_SAVE_BUTTON;\n      }\n    }\n\n    // Determine button visibility\n    this.hasSaveButton =\n      !this.hideSaveButton &&\n      (this.saveClickCallback.observed || !!this.saveButtonForAttr || !!this.saveButtonFormAttr);\n    this.hasAlternativeSaveButton =\n      !!this.showAlternativeSaveButton || !!this.alternativeSaveButtonForAttr;\n    this.hasCancelButton = this.hasSaveButton || this.hasAlternativeSaveButton;\n\n    // Defer adding submit buttons after the DOM is updated.\n    setTimeout(() => {\n      this._addSubmitButtons();\n    }, 0);\n  }\n\n  saveHandler(): void {\n    this.saveClickCallback.emit(false);\n  }\n\n  alternativeSaveHandler(): void {\n    this.saveClickCallback.emit(true);\n  }\n\n  async cancelHandler(): Promise<void> {\n    if (await this._closeHandler()) {\n      this.dismiss();\n      this.cancelClickCallback.emit();\n    }\n  }\n\n  isModalOutlet(): boolean {\n    return this._router.pathFromRoot.some(route => route.outlet === 'modal');\n  }\n\n  close(data?: any): void {\n    this.isModalOutlet() ? this._outletCloser.closeOutlet('modal') : this._activeModal.close(data);\n  }\n\n  dismiss(): void {\n    this.isModalOutlet() ? this._outletCloser.closeOutlet('modal') : this._activeModal.dismiss();\n  }\n\n  private async _closeHandler(): Promise<boolean> {\n    // Check if a confirmation is required before closing\n    if (this.confirmBeforeCancel) {\n      try {\n        const confirmed = await this._modalService.showConfirm({\n          type: 'warning',\n          description: this._translateService.instant(\n            'general.standardModalForm.areYouSureForCancel'\n          ),\n        });\n        if (confirmed === true) {\n          return true;\n        }\n        return false;\n      } catch {\n        return false;\n      }\n    } else if (typeof this.beforeCloseCallback === 'function') {\n      try {\n        const result = await this.beforeCloseCallback();\n        if (result) {\n          return true;\n        }\n        return false;\n      } catch {\n        return false;\n      }\n    } else {\n      return true;\n    }\n  }\n\n  private _addSubmitButtons(): void {\n    if (!this.submittableFormId || this.submitButtonAdded) return;\n\n    const formElement = document.getElementById(this.submittableFormId);\n    if (!formElement) return;\n\n    if (this.hasAlternativeSaveButton) {\n      const altSaveButton = document.createElement('button');\n      altSaveButton.id = this.alternativeSaveButtonForAttr;\n      altSaveButton.style.display = 'none';\n      formElement.prepend(altSaveButton);\n    }\n\n    if (this.hasSaveButton) {\n      const saveButton = document.createElement('button');\n      saveButton.id = this.saveButtonForAttr || 'modal-submit-button';\n      saveButton.style.display = 'none';\n      if (this.saveButtonFormAttr) {\n        saveButton.setAttribute('form', this.saveButtonFormAttr);\n      }\n      formElement.prepend(saveButton);\n    }\n\n    this.submitButtonAdded = true;\n  }\n\n  @HostListener('document:keydown', ['$event'])\n  async handleEscapeKey(event: KeyboardEvent) {\n    let el = event.target as HTMLElement | null;\n    while (el) {\n      if (\n        el.classList?.contains('modal-dialog-confirm-content') ||\n        el.classList?.contains('modal-dialog-alert-content')\n      ) {\n        return;\n      }\n      el = el.parentElement;\n    }\n    if (event.key === 'Escape') {\n      event.preventDefault();\n      event.stopPropagation();\n      await this.cancelHandler();\n    }\n  }\n}\n","<section class=\"mdl-content\"  cdkDrag cdkDragRootElement=\".modal-content-dialog-class\" >\n  <header class=\"mdl-content__header\" cdkDragHandle>\n    <h1 class=\"mdl-content__title\">\n      {{ title }}\n    </h1>\n    <ui-fararu-icon\n      class=\"mdl-content__close-button\"\n      [name]=\"'close'\"\n      [size]=\"'x3'\"\n      (click)=\"cancelHandler()\"\n    ></ui-fararu-icon>\n  </header>\n  <ui-toolbar\n    *ngIf=\"actions?.length || sideActions?.length || reloadCallback.observed\"\n    class=\"mdl-content__toolbar\"\n    [actions]=\"actions\"\n    [sideActions]=\"sideActions\"\n    [args]=\"args\"\n    [hideReloadButton]=\"!reloadCallback.observed\"\n    (reloadCallback)=\"reloadCallback.emit($event)\"\n  ></ui-toolbar>\n  <ng-content></ng-content>\n  <footer\n    class=\"mdl-content__footer\"\n    cdkDragHandle\n    *ngIf=\"hasSaveButton || hasCancelButton || hasAlternativeSaveButton\"\n  >\n    <ui-button\n      *ngIf=\"hasSaveButton\"\n      [varient]=\"'fill'\"\n      [color]=\"'primary'\"\n      [for]=\"saveButtonForAttr\"\n      [form]=\"saveButtonFormAttr\"\n      [tagName]=\"saveButtonForAttr ? 'label' : 'button'\"\n      [loading]=\"showSaveButtonLoading\"\n      (clickCallback)=\"saveHandler()\"\n      >{{\n        saveButtonText ||\n          ((hasAlternativeSaveButton ? 'btns_text.saveAndNew' : 'btns_text.confirm') | translate)\n      }}</ui-button\n    >\n    <ui-button\n      *ngIf=\"hasAlternativeSaveButton\"\n      [varient]=\"'outline'\"\n      [color]=\"'primary'\"\n      [for]=\"alternativeSaveButtonForAttr\"\n      [form]=\"saveButtonFormAttr\"\n      [tagName]=\"saveButtonForAttr ? 'label' : 'button'\"\n      [loading]=\"showSaveButtonLoading\"\n      (clickCallback)=\"alternativeSaveHandler()\"\n      >{{ alternativeSaveButtonText || 'btns_text.saveAndQuit' | translate }}</ui-button\n    >\n    <ui-button\n      *ngIf=\"hasCancelButton\"\n      [varient]=\"'outline'\"\n      [color]=\"'secondary'\"\n      (clickCallback)=\"cancelHandler()\"\n      >{{ cancelButtonText || 'btns_text.cancel' | translate }}</ui-button\n    >\n  </footer>\n</section>\n","import { Component, Input, OnInit } from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport { FararuToastService } from '../../../toast/fararu-toast.service';\nimport { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap';\nimport { DataGridColumnInterface } from '../../../../models/data-grid-column.interface';\nimport { lastValueFrom } from 'rxjs';\nimport { Validators } from '@angular/forms';\nimport {\n  ProductDataGridRowDataInterface,\n  ReturnBatchInfo,\n  ReturnModeType,\n} from '../../../components/organisms';\nimport { propertyOf } from '../../../../utils/property-of';\nimport { ModalComponentInterface } from '../../../modal/modal.service';\n\nenum GoodsTypeNameEnum {\n  baste = 1, //بسته بندی\n  falle2Vahed = 2, //فله دو واحدی\n  falle1Vahed = 3, //فله تک واحدی\n}\n\nexport interface ProductSeriesModalDataModel {\n  product: ProductDataGridRowDataInterface;\n  batches: ReturnBatchInfo[];\n  returnMode: ReturnModeType;\n  disabled: boolean;\n}\n@Component({\n  selector: 'app-product-series-modal',\n  templateUrl: './product-series-modal.component.html',\n  styleUrls: ['./product-series-modal.component.scss'],\n})\nexport class ProductSeriesModalComponent\n  implements OnInit, ModalComponentInterface<ProductSeriesModalDataModel>\n{\n  internalColumns: DataGridColumnInterface<any>[] = [];\n  constructor(\n    private translateService: TranslateService,\n    private toastService: FararuToastService,\n    private activeModal: NgbActiveModal\n  ) {}\n  data: ProductSeriesModalDataModel;\n\n  ngOnInit(): void {\n    this.generateInternalColumns();\n  }\n\n  cellEditCallback = (event: any) => {\n    // console.log(data);\n  };\n\n  async generateInternalColumns() {\n    this.internalColumns = [\n      {\n        title: await lastValueFrom(\n          this.translateService.get('shared.modals.productSeries.list.batchNo')\n        ),\n        binding: propertyOf<ReturnBatchInfo>('batchNo'),\n        editConfig: {\n          type: 'textbox',\n          disabled: true,\n        },\n      },\n      {\n        title: await lastValueFrom(\n          this.translateService.get('shared.modals.productSeries.list.expDate')\n        ),\n        binding: propertyOf<ReturnBatchInfo>('expDate'),\n        editConfig: {\n          type: 'textbox',\n          disabled: true,\n        },\n      },\n      {\n        title: await lastValueFrom(\n          this.translateService.get('shared.modals.productSeries.list.insDate')\n        ),\n        binding: propertyOf<ReturnBatchInfo>('insDate'),\n        editConfig: {\n          type: 'textbox',\n          disabled: true,\n        },\n      },\n      {\n        title: await lastValueFrom(\n          this.translateService.get('shared.modals.productSeries.list.unitName')\n        ),\n        binding: propertyOf<ReturnBatchInfo>('unitName'),\n        editConfig: {\n          type: 'textbox',\n          disabled: true,\n        },\n      },\n      {\n        title: await lastValueFrom(\n          this.translateService.get('shared.modals.productSeries.list.unitQty')\n        ),\n        binding: propertyOf<ReturnBatchInfo>('convertFactor'),\n        editConfig: {\n          type: 'textbox',\n          disabled: true,\n        },\n      },\n      {\n        title: await lastValueFrom(\n          this.translateService.get('shared.modals.productSeries.list.retUnitQty')\n        ),\n        binding: propertyOf<ReturnBatchInfo>('returnQty'),\n        editConfig: {\n          validators: [{ type: Validators.required }, { type: Validators.min(0) }],\n          changeCallback: ({ row }) => {\n            this.calculateRetTotalQty(row);\n          },\n          config: {\n            currencyConfig: ({ row }) => ({ precision: 0 }),\n          },\n          disabled: this.data.disabled,\n          type: 'textbox',\n        },\n      },\n      {\n        title: await lastValueFrom(\n          this.translateService.get('shared.modals.productSeries.list.retTotalQty')\n        ),\n        binding: propertyOf<ReturnBatchInfo>('returnTotalQty'),\n        editConfig: {\n          validators: [{ type: Validators.required }, { type: Validators.min(0) }],\n          changeCallback: ({ row }) => {\n            this.calculateRetUnitQty(row);\n          },\n          disabled: ({ row }) =>\n            this.data.disabled || row.goodsTypeId === GoodsTypeNameEnum.falle1Vahed,\n          type: 'textbox',\n          config: {\n            currencyConfig: ({ row }) => ({ precision: 0 }),\n          },\n        },\n      },\n    ];\n\n    const cIndex = this.internalColumns.findIndex(\n      item => item.binding == propertyOf<ReturnBatchInfo>('convertFactor')\n    );\n    if (this.data.returnMode == 'withRef')\n      this.internalColumns.splice(cIndex + 1, 0, {\n        title: await lastValueFrom(\n          this.translateService.get('shared.modals.productSeries.list.qty')\n        ),\n        binding: propertyOf<ReturnBatchInfo>('qty'),\n        editConfig: {\n          type: 'textbox',\n          disabled: true,\n        },\n      });\n  }\n\n  calculateRetTotalQty(row: ReturnBatchInfo) {\n    if (this.data.returnMode === 'withoutRef' || row.returnQty <= row.qty)\n      row.returnTotalQty = +row.convertFactor * +row.returnQty;\n    else {\n      row.returnQty = null;\n      row.returnTotalQty = null;\n      this.toastService.show({\n        type: 'error',\n        text: this.translateService.instant(\n          'distributionTracking.modals.partialDelivery.error.retTotalQty'\n        ),\n      });\n    }\n  }\n\n  calculateRetUnitQty(row: ReturnBatchInfo) {\n    if (this.data.returnMode === 'withoutRef' || row.returnTotalQty <= row.qty * row.convertFactor)\n      row.returnQty = Math.floor(+row.returnTotalQty / +row.convertFactor);\n    else {\n      row.returnQty = null;\n      row.returnTotalQty = null;\n      this.toastService.show({\n        type: 'error',\n        text: this.translateService.instant(\n          'distributionTracking.modals.partialDelivery.error.retUnitQty'\n        ),\n      });\n    }\n  }\n\n  onConfirm() {\n    let retTotalQty = 0;\n    let retUnitQty = 0;\n\n    this.data.batches.forEach((item: ReturnBatchInfo) => {\n      retUnitQty = retUnitQty + +item.returnQty;\n      retTotalQty = retTotalQty + +item.returnTotalQty;\n    });\n\n    this.activeModal.close({ retTotalQty, retUnitQty, batches: this.data.batches });\n  }\n}\n","<modal-wrapper\n  [title]=\"'انتخاب سری ساخت'\"\n  [hideSaveButton]=\"data.disabled\"\n  (saveClickCallback)=\"onConfirm()\"\n>\n  <div class=\"gsslm\">\n    <ui-data-grid\n      #dataGrid\n      [columns]=\"internalColumns\"\n      [items]=\"data.batches\"\n      [cellEditCallback]=\"cellEditCallback\"\n      [tabIndex]=\"0\"\n    ></ui-data-grid>\n  </div>\n</modal-wrapper>\n","import { TranslateService } from '@ngx-translate/core';\nimport { BatchModelInterface } from '../../../../models/batch-model.interface';\nimport { GridColumnInterface } from '../../../../models/grid-column.interface';\nimport { PackageModelInterface } from '../../../../models/package-model.interface';\nimport { StockGoodsModelInterface } from '../../../../models/stock-goods-model.interface';\nimport { ShowQtySettings } from './product-data-grid.component';\nimport { GridColumnDataTypes } from '../../../../enums';\nimport { propertyOf } from '../../../../utils/property-of';\nimport { GoodsCodeInterface } from '../../../../models/goods-code-interface';\nimport { UnitRefInterface } from '../../../../models/unit-ref-interface';\n\nclass ProductDataGridComponentHelpers {\n  static generateGoodsGridFields(\n    goodsActionType: string,\n    translate: TranslateService,\n    showStockQty: ShowQtySettings\n  ): GridColumnInterface[] {\n    switch (goodsActionType.toString()) {\n      // case '1':\n      //   return [\n      //     {\n      //       header: 'Goods code', // TODO: add translation\n      //       binding: propertyOf<StockGoodsModelInterface>('goodsCode'),\n      //     },\n      //     {\n      //       header: 'Goods name', // TODO: add translation\n      //       binding: propertyOf<StockGoodsModelInterface>('goodsName'),\n      //     },\n      //   ];\n      // case '2':\n      case '2': {\n        return [\n          {\n            header: translate.instant('productDataGrid.sale.fields.goodsCode'),\n            binding: propertyOf<StockGoodsModelInterface>('goodsCode'),\n            dataType: GridColumnDataTypes.STRING,\n          },\n          {\n            header: translate.instant('productDataGrid.sale.fields.goodsName'),\n            binding: propertyOf<StockGoodsModelInterface>('goodsName'),\n            dataType: GridColumnDataTypes.STRING,\n          },\n          {\n            header: translate.instant('productDataGrid.sale.fields.unitName'),\n            binding: propertyOf<StockGoodsModelInterface>('unitName'),\n            dataType: GridColumnDataTypes.STRING,\n          },\n          {\n            header: translate.instant('productDataGrid.sale.fields.cartonType'),\n            binding: propertyOf<StockGoodsModelInterface>('cartonType'),\n            dataType: GridColumnDataTypes.NUMBER,\n          },\n          {\n            header: translate.instant('productDataGrid.sale.fields.showRemQty'),\n            binding: propertyOf<StockGoodsModelInterface>('showRemQty'),\n            dataType: GridColumnDataTypes.STRING,\n          },\n          {\n            header: translate.instant('productDataGrid.sale.fields.salePrice'),\n            binding: propertyOf<StockGoodsModelInterface>('salePrice'),\n            dataType: GridColumnDataTypes.NUMBER,\n          },\n          {\n            header: translate.instant('productDataGrid.sale.fields.userPrice'),\n            binding: propertyOf<StockGoodsModelInterface>('userPrice'),\n            dataType: GridColumnDataTypes.STRING,\n          },\n          {\n            header: translate.instant('productDataGrid.sale.fields.showOnHandQty'),\n            binding: propertyOf<StockGoodsModelInterface>('showOnHandQty'),\n            dataType: GridColumnDataTypes.STRING,\n          },\n          {\n            header: translate.instant('productDataGrid.sale.fields.showOpenOrderQty'),\n            binding: propertyOf<StockGoodsModelInterface>('showOpenOrderQty'),\n            dataType: GridColumnDataTypes.STRING,\n          },\n          {\n            header: translate.instant('productDataGrid.sale.fields.manufacturerGoodsCode'),\n            binding: propertyOf<StockGoodsModelInterface>('manufacturerGoodsCode'),\n            dataType: GridColumnDataTypes.STRING,\n          },\n          {\n            header: translate.instant('productDataGrid.sale.fields.goodsCanBeFree'),\n            binding: propertyOf<StockGoodsModelInterface>('goodsCanBeFree'),\n            dataType: GridColumnDataTypes.BOOLEAN,\n          },\n        ];\n      }\n      case '7': {\n        return [\n          {\n            header: translate.instant(\n              'accountingBuy.invoiceBuy.info.invoiceBuyItem.combos.goodsCode.fields.goodsCode'\n            ),\n            binding: propertyOf<GoodsCodeInterface>('goodsCode'),\n            dataType: GridColumnDataTypes.STRING,\n          },\n          {\n            header: translate.instant(\n              'accountingBuy.invoiceBuy.info.invoiceBuyItem.combos.goodsCode.fields.goodsName'\n            ),\n            binding: propertyOf<GoodsCodeInterface>('goodsName'),\n            dataType: GridColumnDataTypes.STRING,\n          },\n          {\n            header: translate.instant(\n              'accountingBuy.invoiceBuy.info.invoiceBuyItem.combos.goodsCode.fields.manufacturerCode'\n            ),\n            binding: propertyOf<GoodsCodeInterface>('manufacturerCode'),\n            dataType: GridColumnDataTypes.STRING,\n          },\n          // {\n          //   header: translate.instant(\n          //     'accountingBuy.invoiceBuy.info.invoiceBuyItem.combos.goodsCode.fields.barcode'\n          //   ),\n          //   binding: propertyOf<GoodsCodeInterface>('barcode'),\n          //   dataType: GridColumnDataTypes.STRING,\n          // },\n        ];\n      }\n      default:\n        const fields: GridColumnInterface[] = [\n          {\n            header: translate.instant('productDataGrid.stock.fields.goodsCode'),\n            binding: propertyOf<StockGoodsModelInterface>('goodsCode'),\n            dataType: GridColumnDataTypes.STRING,\n          },\n          {\n            header: translate.instant('productDataGrid.stock.fields.goodsName'),\n            binding: propertyOf<StockGoodsModelInterface>('goodsName'),\n            dataType: GridColumnDataTypes.STRING,\n          },\n          {\n            header: translate.instant('productDataGrid.stock.fields.unitName'),\n            binding: propertyOf<StockGoodsModelInterface>('unitName'),\n            dataType: GridColumnDataTypes.STRING,\n          },\n          {\n            header: translate.instant('productDataGrid.stock.fields.defaultQtyForInventory'),\n            binding: propertyOf<StockGoodsModelInterface>('defaultQtyForInventory'),\n          },\n          {\n            header: translate.instant('productDataGrid.stock.fields.packUnitName'),\n            binding: propertyOf<StockGoodsModelInterface>('packUnitName'),\n            dataType: GridColumnDataTypes.STRING,\n          },\n          {\n            header: translate.instant('productDataGrid.stock.fields.goodsTypeName'),\n            binding: propertyOf<StockGoodsModelInterface>('goodsTypeName'),\n          },\n          {\n            header: translate.instant('productDataGrid.stock.fields.manufacturerGoodsCode'),\n            binding: propertyOf<StockGoodsModelInterface>('manufacturerGoodsCode'),\n          },\n          {\n            header: translate.instant('productDataGrid.stock.fields.barcode'),\n            binding: propertyOf<StockGoodsModelInterface>('barcode1'),\n          },\n          {\n            header: translate.instant('productDataGrid.stock.fields.barcode2'),\n            binding: propertyOf<StockGoodsModelInterface>('barcode2'),\n          },\n          {\n            header: translate.instant('productDataGrid.stock.fields.goodsGroupPath'),\n            binding: propertyOf<StockGoodsModelInterface>('goodsGroupName'),\n          },\n        ];\n        if (showStockQty?.showOnhandQty)\n          fields.splice(5, 0, {\n            header: translate.instant('productDataGrid.stock.fields.showOnHandQty'),\n            binding: propertyOf<StockGoodsModelInterface>('showOnHandQty'),\n          });\n\n        if (showStockQty?.showDamagedQty)\n          fields.splice(6, 0, {\n            header: translate.instant('productDataGrid.stock.fields.showDamagedQty'),\n            binding: propertyOf<StockGoodsModelInterface>('showDamagedQty'),\n          });\n\n        if (showStockQty?.showReservedQty)\n          fields.splice(7, 0, {\n            header: translate.instant('productDataGrid.stock.fields.showReservedQty'),\n            binding: propertyOf<StockGoodsModelInterface>('showReservedQty'),\n          });\n\n        return fields;\n    }\n  }\n\n  static generateBatchGridFields(goodsActionType: string): GridColumnInterface[] {\n    switch (goodsActionType.toString()) {\n      default:\n        return [\n          {\n            header: 'شماره سری ساخت', // TODO: add translation\n            binding: propertyOf<BatchModelInterface>('batchNo'),\n          },\n\n          {\n            header: 'تاریخ انقضا', // TODO: add translation\n            binding: propertyOf<BatchModelInterface>('expDate'),\n          },\n          {\n            header: 'موجودی سالم', // TODO: add translation\n            binding: propertyOf<BatchModelInterface>('onHandQty'),\n          },\n          {\n            header: 'موجودی ضایعاتی', // TODO: add translation\n            binding: propertyOf<BatchModelInterface>('damagedQty'),\n          },\n          {\n            header: 'موجودی رزرو', // TODO: add translation\n            binding: propertyOf<BatchModelInterface>('reservedQty'),\n          },\n          {\n            header: 'تاریخ تولید', // TODO: add translation\n            binding: propertyOf<BatchModelInterface>('proDate'),\n          },\n          {\n            header: 'گروه سری ساخت', // TODO: add translation\n            binding: propertyOf<BatchModelInterface>('batchNoGroupName'),\n          },\n        ];\n    }\n  }\n\n  static generatePackageGridFields(\n    goodsActionType: string,\n    translate: TranslateService\n  ): GridColumnInterface[] {\n    switch (goodsActionType.toString()) {\n      case '2': {\n        return [\n          {\n            header: translate.instant('sale.unit.fields.unitName'),\n            binding: propertyOf<PackageModelInterface>('unitName'),\n          },\n        ];\n      }\n      case '3': {\n        return [\n          {\n            header: 'عنوان واحد ', // TODO: add translation\n            binding: propertyOf<PackageModelInterface>('unitName'),\n          },\n          {\n            header: 'ضریب واحد', // TODO: add translation\n            binding: propertyOf<PackageModelInterface>('qty'),\n          },\n          {\n            header: 'قابل صدور برگشت فروش', // TODO: add translation\n            binding: propertyOf<PackageModelInterface>('forSale'),\n          },\n          {\n            header: 'پیش فرض برگشت فروش ', // TODO: add translation\n            binding: propertyOf<PackageModelInterface>('defaultForSale'),\n          },\n        ];\n      }\n      case '7': {\n        return [\n          {\n            header: translate.instant(\n              'accountingBuy.invoiceBuy.info.invoiceBuyItem.combos.unitRef.fields.unitName'\n            ),\n            binding: propertyOf<UnitRefInterface>('unitName'),\n            dataType: GridColumnDataTypes.STRING,\n          },\n          {\n            header: translate.instant(\n              'accountingBuy.invoiceBuy.info.invoiceBuyItem.combos.unitRef.fields.cartonType'\n            ),\n            binding: propertyOf<UnitRefInterface>('qty'),\n            dataType: GridColumnDataTypes.NUMBER,\n          },\n        ];\n      }\n      default:\n        return [\n          {\n            header: 'واحد', // TODO: add translation\n            binding: propertyOf<PackageModelInterface>('unitName'),\n          },\n        ];\n    }\n  }\n}\n\nexport default ProductDataGridComponentHelpers;\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { ToastType } from './toast-config';\nimport { ColorType } from '../../types';\n\n@Pipe({\n  name: 'toastIconColor',\n})\nexport class ToastIconColorPipe implements PipeTransform {\n  transform(value: ToastType): ColorType | undefined {\n    switch (value) {\n      case 'success': {\n        return 'success';\n      }\n      case 'error': {\n        return 'error';\n      }\n      case 'warning': {\n        return 'warning';\n      }\n      case 'info': {\n        return 'primary';\n      }\n      default:\n        return undefined;\n    }\n  }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { ToastType } from './toast-config';\nimport { IconNameType } from '../../types';\n\n@Pipe({\n  name: 'toastIconName',\n})\nexport class ToastIconNamePipe implements PipeTransform {\n  transform(value: ToastType): IconNameType | undefined {\n    switch (value) {\n      case 'success': {\n        return 'check-box';\n      }\n      case 'error': {\n        return 'error';\n      }\n      case 'warning': {\n        return 'warning';\n      }\n      case 'info': {\n        return 'info';\n      }\n      default:\n        return undefined;\n    }\n  }\n}\n","import { OverlayModule } from '@angular/cdk/overlay';\nimport { CommonModule } from '@angular/common';\nimport { ModuleWithProviders, NgModule } from '@angular/core';\nimport { defaultToastConfig, TOAST_CONFIG_TOKEN } from './toast-config';\nimport { ToastComponent } from './toast.component';\nimport { ToastIconColorPipe } from './toast-icon-color.pipe';\nimport { ToastIconNamePipe } from './toast-icon-name.pipe';\nimport { AngularSvgIconModule } from 'angular-svg-icon';\n\n@NgModule({\n  imports: [CommonModule, OverlayModule, AngularSvgIconModule.forRoot()],\n  declarations: [ToastComponent, ToastIconColorPipe, ToastIconNamePipe],\n  // entryComponents: [ToastComponent],\n})\nexport class FararuToastModule {\n  static forRoot(config = defaultToastConfig): ModuleWithProviders<FararuToastModule> {\n    return {\n      ngModule: FararuToastModule,\n      providers: [\n        {\n          provide: TOAST_CONFIG_TOKEN,\n          useValue: { ...defaultToastConfig, ...config },\n        },\n      ],\n    };\n  }\n}\n\nexport class ToastModuleConfig {\n  static forRoot(config = defaultToastConfig): ModuleWithProviders<FararuToastModule> {\n    return {\n      ngModule: FararuToastModule,\n      providers: [\n        {\n          provide: TOAST_CONFIG_TOKEN,\n          useValue: { ...defaultToastConfig, ...config },\n        },\n      ],\n    };\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpHeaders } from '@angular/common/http';\nimport { BatchModelInterface } from '../models/batch-model.interface';\nimport { GeneralODataServiceInterface } from '../models/general-odata-service.interface';\nimport { GeneralODataService } from './general-odata.service';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class BatchModelODataService\n  implements GeneralODataServiceInterface<BatchModelInterface>\n{\n  constructor(\n    private generalODataService: GeneralODataService<BatchModelInterface>\n  ) {}\n\n  get(query?: string, headers?: HttpHeaders) {\n    return this.generalODataService.getByEntity('BatchModel', query, headers);\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpHeaders } from '@angular/common/http';\nimport { PackageModelInterface } from '../models/package-model.interface';\nimport { GeneralODataServiceInterface } from '../models/general-odata-service.interface';\nimport { GeneralODataService } from './general-odata.service';\n@Injectable({\n  providedIn: 'root',\n})\nexport class PackageModelODataService\n  implements GeneralODataServiceInterface<PackageModelInterface>\n{\n  constructor(\n    private generalODataService: GeneralODataService<PackageModelInterface>\n  ) {}\n\n  get(query?: string, headers?: HttpHeaders) {\n    return this.generalODataService.getByEntity('PackageModel', query, headers);\n  }\n}\n","import { HttpHeaders } from '@angular/common/http';\nimport {\n  AfterViewInit,\n  Component,\n  ElementRef,\n  EventEmitter,\n  Input,\n  OnChanges,\n  OnInit,\n  Output,\n  SimpleChanges,\n  ViewChild,\n} from '@angular/core';\nimport { Validators } from '@angular/forms';\nimport { TranslateService } from '@ngx-translate/core';\nimport { QueryBuilder } from 'odata-query-builder';\nimport { Observable, Subscription } from 'rxjs';\nimport { BatchModelODataService } from '../../../../api/batch-model-odata.service';\nimport { GeneralODataService } from '../../../../api/general-odata.service';\nimport { PackageModelODataService } from '../../../../api/package-model-odata.service';\nimport { GeneralODataTableName } from '../../../../constants/general-odata-table-name';\nimport { HttpHeaderNames } from '../../../../constants/http-header-names';\nimport { BatchModelInterface } from '../../../../models/batch-model.interface';\nimport {\n  DataGridColumnInterface,\n  DynamicPropertyType,\n} from '../../../../models/data-grid-column.interface';\nimport { ODataResponse } from '../../../../models/general-odata-service.interface';\nimport { PackageModelInterface } from '../../../../models/package-model.interface';\nimport { StockGoodsModelInterface } from '../../../../models/stock-goods-model.interface';\nimport { createParamHttpHeaderValue } from '../../../../utils/create-param-http-header-value';\nimport { propertyOf } from '../../../../utils/property-of';\nimport { ProductSeriesModalComponent } from '../../../general-templates/modals/product-series-modal/product-series-modal.component';\nimport { ModalSizeEnum } from '../../../modal/modal-size-enum';\nimport { ModalService } from '../../../modal/modal.service';\nimport { FararuToastService } from '../../../toast';\nimport { DataGridComponent } from '../data-grid/data-grid.component';\nimport Helpers from './product-data-grid.component.helpers';\nimport {\n  ProductDataGridPackageSelectCallbackInterface,\n  ProductDataGridRowDataInterface,\n  ProductDataGridSelectCallbackInterface,\n} from './product-data-grid.component.models';\nexport * from './product-data-grid.component.models';\n\nexport type ShowQtySettings = {\n  showOnhandQty: boolean;\n  showReservedQty: boolean;\n  showDamagedQty: boolean;\n};\n\ninterface ParamsInterface {\n  [key: string]: string;\n}\n\nexport interface ReturnBatchInfo {\n  batchNo: string; // شماره سری ساخت\n  expDate: string; // تاریخ انتها\n  insDate: string; // تاریخ ابتدا\n  unitRef: string; // واحد اندازیه گیری\n  unitName: string; // نام واحد اندازه گیری\n  convertFactor: number; // ضریب واحد اندازه گیری\n  qty: number; // تعداد فروش\n  returnQty: number; // نعداد برگشتی\n  returnTotalQty: number; // نعداد برگشتی * ضریب واحد\n}\nexport interface ReturnBatchInfoProductRow {\n  retTotalQty: number;\n  retUnitQty: number;\n  batches: ReturnBatchInfo[];\n}\nexport type ReturnModeType = false | 'withRef' | 'withoutRef';\nexport interface DocumentReturnBatchInfo {\n  items: { [key: string]: ReturnBatchInfo[] };\n  awards: { [key: string]: ReturnBatchInfo[] };\n}\n\n@Component({\n  selector: 'ui-product-data-grid',\n  templateUrl: './product-data-grid.component.html',\n  styleUrls: ['./product-data-grid.component.scss'],\n})\nexport class ProductDataGridComponent\n  extends DataGridComponent<ProductDataGridRowDataInterface>\n  implements OnInit, OnChanges, AfterViewInit {\n  @Input() returnBatchesMap: DocumentReturnBatchInfo;\n  @Input() returnMode: ReturnModeType = false;\n  @Input() productNameOrCodeDisabled: boolean = false;\n  @Input() barcodeDisabled: boolean = false;\n  @Input() params: ParamsInterface = {};\n  @Input() goodsActionType: string;\n  @Input() goodsEntiyName = 'StockGoodsModel';\n  @Input() goodsFetchReason: string = '3';\n  @Input() batchFetchReason: string = '1';\n  @Input() packageFetchReason: string = '1';\n  @Input() oDataServer: string;\n  @Input() productIsUnique?: boolean;\n  @Input() showStockQty: ShowQtySettings;\n  @Input() batchIsRequired?: boolean = true;\n  @Input() batchColumn?: boolean = true;\n  @Input() packageIsDisabled?: boolean = false;\n  @Input() productSelectByBarcodeCallback?: (\n    argrs: ProductDataGridSelectCallbackInterface<\n      StockGoodsModelInterface,\n      ProductDataGridRowDataInterface\n    >\n  ) => Promise<boolean>;\n\n  @Input() beforeProductChange?: ({ row, value, instance }) => string | null;\n\n  @Output() productSelectCallback = new EventEmitter<\n    ProductDataGridSelectCallbackInterface<\n      StockGoodsModelInterface,\n      ProductDataGridRowDataInterface\n    >\n  >();\n  @Output() batchSelectCallback = new EventEmitter<\n    ProductDataGridSelectCallbackInterface<BatchModelInterface, ProductDataGridRowDataInterface>\n  >();\n  @Output() returnBatchSelectCallback = new EventEmitter<\n    ProductDataGridSelectCallbackInterface<\n      ReturnBatchInfoProductRow,\n      ProductDataGridRowDataInterface\n    >\n  >();\n  @Output() packageSelectCallback = new EventEmitter<\n    ProductDataGridPackageSelectCallbackInterface<\n      PackageModelInterface,\n      ProductDataGridRowDataInterface\n    >\n  >();\n  @Output() onProductRowSelected: EventEmitter<{ row: number; column: number }> =\n    new EventEmitter();\n\n  @Output() onProductRowAddCallback: EventEmitter<ProductDataGridRowDataInterface> =\n    new EventEmitter();\n\n  @Output() onProductCheckedCallback: EventEmitter<typeof this.items> = new EventEmitter();\n\n  rowSelected($event: { row: number; column: number }) {\n    this.onProductRowSelected.emit($event);\n  }\n\n  onRowAddCallback($event: ProductDataGridRowDataInterface) {\n    this.onProductRowAddCallback.emit($event);\n  }\n\n  onCheckedCallback($event: typeof this.items) {\n    this.onProductCheckedCallback.emit($event);\n  }\n\n  @ViewChild('dataGrid') dataGrid?: DataGridComponent;\n\n  internalColumns: DataGridColumnInterface<ProductDataGridRowDataInterface>[];\n\n  private getGoodsByBarcodeSubcribtion?: Subscription;\n  private packageModelODataServiceSubcribtion?: Subscription;\n\n  constructor(\n    protected override elementRef: ElementRef<HTMLDivElement>,\n    protected override toastService: FararuToastService,\n    private generalODataService: GeneralODataService,\n    private batchModelODataService: BatchModelODataService,\n    private packageModelODataService: PackageModelODataService,\n    private translate: TranslateService,\n    private modalService: ModalService\n  ) {\n    super(elementRef, toastService);\n  }\n\n  override ngOnInit(): void { }\n\n  override ngOnChanges(changes: SimpleChanges): void {\n    const itemsChanged = !!changes['items'];\n    if (!itemsChanged || !this.internalColumns) {\n      this.generateInternalColumns();\n    }\n  }\n\n  ngAfterViewInit(): void {\n    this.selectedCell = this.dataGrid.selectedCell;\n  }\n\n  override goToCell(column: number, row: number, forceEdit?: boolean): void {\n    this.dataGrid.goToCell(column, row, forceEdit);\n  }\n\n  private generateInternalColumns() {\n    this.internalColumns = [\n      {\n        title: 'بارکد', // TODO: add translation\n        binding: propertyOf<ProductDataGridRowDataInterface>('barcode'),\n        width: '150px',\n        editConfig: {\n          type: 'textbox',\n          disabled: ({ row, instance }) => {\n            if (this.disabled || this.barcodeDisabled) return true;\n            return !instance.rowIsPlaceholder(row);\n          },\n          enterCallback: ({ value, row }) => {\n            return this.selectBarcode(value, row);\n          },\n        },\n      },\n      {\n        title: 'کد/نام کالا', // TODO: add translation\n        width: '400px',\n        binding: propertyOf<ProductDataGridRowDataInterface>('goodsRef'),\n        displayBindingFields: [\n          propertyOf<ProductDataGridRowDataInterface>('goodsCode'),\n          propertyOf<ProductDataGridRowDataInterface>('goodsName'),\n        ],\n        editConfig: {\n          disabled: () => {\n            return this.disabled || this.productNameOrCodeDisabled;\n          },\n          isUnique: !!this.productIsUnique,\n          type: 'identity-selector',\n          validators: [{ type: Validators.required }],\n          changeCallback: ({ selectedItem, row }) => {\n            this.selectGoods(selectedItem || null, row);\n          },\n          beforeChange: {\n            canChange: async ({ row, value, instance }) => {\n              if (!value) return true;\n\n              if (this.beforeProductChange) {\n                const canChangeResult = this.beforeProductChange({ row, value, instance });\n                if (canChangeResult != null) {\n                  row.beforeChangeResult = canChangeResult;\n                  return false;\n                }\n              }\n\n              const findedIndex = instance.internalItems.findIndex(\n                x =>\n                  x.goodsRef == value.goodsRef &&\n                  (!value.isBatch || (row.batchNo && x.batchNo == row.batchNo))\n              );\n              const canGoodsChange = findedIndex == -1 || findedIndex == instance.selectedCell.row;\n              if (!canGoodsChange) {\n                row.goodsRef = null;\n                row.goodsCode = null;\n                row.goodsName = null;\n                row.beforeChangeResult = `کالای ${value?.goodsCode} تکراری است و در لیست وجود دارد.`;\n              }\n              return canGoodsChange;\n            },\n            errorMessage: ({ row, value }) => {\n              return row.beforeChangeResult;\n            },\n          },\n          config: {\n            oDataServer: this.oDataServer,\n            oDataTable: GeneralODataTableName,\n            oDataEntity: this.goodsEntiyName,\n            oDataHttpHeaders: () => this.generateGoodsHttpHeaders(),\n            inputField: propertyOf<StockGoodsModelInterface>('goodsCode'),\n            secondInputField: propertyOf<StockGoodsModelInterface>('goodsName'),\n            resultField: propertyOf<StockGoodsModelInterface>('goodsRef'),\n            gridFields: Helpers.generateGoodsGridFields(\n              this.goodsActionType,\n              this.translate,\n              this.showStockQty\n            ),\n            allowClear: true,\n            subMenuWidth: '800px',\n          },\n        },\n      },\n    ];\n\n    if (this.goodsActionType != '7' && this.batchColumn) {\n      if (this.returnMode == false)\n        this.internalColumns.push({\n          title: 'سری ساخت', // TODO: add translation\n          binding: propertyOf<ProductDataGridRowDataInterface>('batchNo'),\n          width: '100px',\n          displayBindingFields: [propertyOf<ProductDataGridRowDataInterface>('batchNo')],\n\n          editConfig: {\n            type: 'identity-selector',\n            validators: this.batchIsRequired ? [{ type: Validators.required }] : [],\n            disabled: ({ row }) => {\n              return !(row.goodsRef && row.isBatch && !this.disabled);\n            },\n            changeCallback: ({ selectedItem, row }) => {\n              this.selectBatch(selectedItem || null, row);\n            },\n            beforeChange: {\n              canChange: ({ row, value, instance }) => {\n                if (!value) return true;\n                const findedIndex = instance.internalItems.findIndex(\n                  x => x.goodsRef == row.goodsRef && x.batchNo == value.batchNo\n                );\n                return findedIndex == -1 || findedIndex == instance.selectedCell.row;\n              },\n              errorMessage: ({ row, value }) => {\n                return `کالای ${row?.goodsCode} با سری ساخت ${value?.batchNo} تکراری است و در لیست وجود دارد `;\n              },\n            },\n            config: {\n              oDataServer: this.oDataServer,\n              oDataTable: GeneralODataTableName,\n              oDataEntity: 'BatchStockGoodsModel', // 'StockGoodsDetailModel'\n              oDataService: this.batchModelODataService,\n              oDataHttpHeaders: ({ row }) => this.generateBatchHttpHeaders(row),\n              inputField: 'batchNo',\n              resultField: 'batchNo',\n              gridFields: Helpers.generateBatchGridFields(this.goodsActionType),\n              allowClear: true,\n              subMenuWidth: '800px',\n            },\n          },\n        });\n      else {\n        this.internalColumns.push({\n          binding: undefined,\n          title: 'سری ساخت',\n          width: '100px',\n          editConfig: {\n            type: 'button',\n            config: (row: ProductDataGridRowDataInterface) => {\n              const batches = row.prizeType\n                ? this.returnBatchesMap.awards[row.goodsRef]\n                : this.returnBatchesMap.items[row.goodsRef];\n              if (batches == undefined) return { text: 'ندارد', onClick: () => { } };\n              else if (batches.length == 1) return { text: batches[0].batchNo, onClick: () => { } };\n              else\n                return {\n                  icon: 'dots',\n                  text: 'سری ساخت',\n                  onClick: () => {\n                    this.modalService\n                      .openT(ProductSeriesModalComponent, ModalSizeEnum.ExtraLarge, {\n                        product: row,\n                        batches,\n                        disabled: this.disabled,\n                        returnMode: this.returnMode,\n                      })\n                      .then((data: ReturnBatchInfoProductRow) => {\n                        if (data) this.returnBatchSelectCallback.emit({ data, row });\n                      })\n                      .catch(() => { });\n                  },\n                };\n            },\n          },\n        });\n      }\n    }\n\n    this.internalColumns.push(\n      {\n        title:\n          this.goodsActionType == '1' || this.goodsActionType == '6' || this.goodsActionType == '7'\n            ? 'واحد بسته بندی'\n            : this.goodsActionType == '3'\n              ? 'واحد برگشتی'\n              : 'واحد سفارش', // TODO: add translation\n        binding: propertyOf<ProductDataGridRowDataInterface>('packUnitRef'),\n        width: '100px',\n\n        displayBindingFields: [propertyOf<ProductDataGridRowDataInterface>('packUnitName')],\n        editConfig: {\n          type: 'identity-selector',\n          validators: [{ type: Validators.min(0) }],\n          disabled: ({ row }) => {\n            if (this.disabled) return true;\n            if (this.packageIsDisabled) return true;\n            if (!row.goodsRef) return true;\n            if (this.batchIsRequired && this.batchColumn) return !row.batchNo && row.isBatch;\n            else return false;\n          },\n          changeCallback: ({ selectedItem, row }) => {\n            this.selectPackage(selectedItem, row);\n          },\n          config: {\n            oDataServer: this.oDataServer,\n            oDataTable: GeneralODataTableName,\n            oDataEntity: 'PackageModel',\n            oDataService: this.packageModelODataService,\n            oDataHttpHeaders: ({ row }) => this.generatePackageHttpHeaders(row),\n            inputField: this.goodsActionType == '7' ? 'qty' : 'unitName',\n            secondInputField: this.goodsActionType == '7' ? 'unitName' : null,\n            resultField: 'unitRef',\n            gridFields: Helpers.generatePackageGridFields(this.goodsActionType, this.translate),\n            allowClear: true,\n          },\n        },\n      },\n      ...this.columns\n    );\n  }\n\n  private getBarcodeSearchService(keyword: string) {\n    return this.generalODataService.getByEntity(\n      this.goodsEntiyName,\n      null,\n      new HttpHeaders(this.generateGoodsHttpHeaders(keyword))\n    ) as Observable<ODataResponse<StockGoodsModelInterface>>;\n  }\n\n  private selectDefaultPackage(row: ProductDataGridRowDataInterface) {\n    const query = new QueryBuilder()\n      .top(1)\n      .filter(f =>\n        f.filterExpression(\n          propertyOf<PackageModelInterface>(\n            this.goodsActionType == '1' ||\n              this.goodsActionType == '6' ||\n              this.goodsActionType == '7'\n              ? 'defaultForInventory'\n              : 'defaultForSale'\n          ),\n          'eq',\n          true\n        )\n      )\n      .toQuery();\n\n    this.packageModelODataServiceSubcribtion?.unsubscribe();\n    const rowIndex = this.dataGrid.selectedCell.row;\n    const columnIndex = this.dataGrid.getColumIndexByBindingProperty(\n      propertyOf<ProductDataGridRowDataInterface>(row.isBatch ? 'batchNo' : 'goodsRef')\n    );\n    this.dataGrid.setCellIsProgressingState(rowIndex, columnIndex, true);\n    this.packageModelODataServiceSubcribtion = this.packageModelODataService\n      .get(query, new HttpHeaders(this.generatePackageHttpHeaders(row)))\n      .subscribe({\n        next: res => {\n          this.dataGrid.setCellIsProgressingState(rowIndex, columnIndex, false);\n          if (res.value?.length) {\n            const data = res.value[0];\n            row.packUnitRef = data.unitRef;\n            row.packUnitName = data.unitName;\n\n            this.selectPackage(data, row, true);\n          } else {\n            this.dataGrid.setCellIsProgressingState(rowIndex, columnIndex, false);\n            delete row.packUnitRef;\n            delete row.packUnitName;\n          }\n        },\n        error: () => {\n          this.dataGrid.setCellIsProgressingState(rowIndex, columnIndex, false);\n        },\n      });\n  }\n\n  private generateGoodsHttpHeaders(barcode?: string) {\n    const finalParams: ParamsInterface = {\n      ...this.params,\n      goodsActionType: this.goodsActionType,\n    };\n    if (barcode) {\n      finalParams['Barcode'] = barcode;\n    }\n    return {\n      [HttpHeaderNames.FETCH_REASON]: this.goodsFetchReason,\n      [HttpHeaderNames.PARAM]: createParamHttpHeaderValue(\n        Object.keys(finalParams).map(key => ({\n          keyName: key,\n          keyValue: finalParams[key],\n        }))\n      ),\n    };\n  }\n\n  private generateBatchHttpHeaders(row: ProductDataGridRowDataInterface) {\n    const finalParams: ParamsInterface = {\n      ...this.params,\n      goodsActionType: this.goodsActionType,\n      [propertyOf<ProductDataGridRowDataInterface>('goodsRef')]: row.goodsRef?.toString(),\n    };\n    return {\n      [HttpHeaderNames.FETCH_REASON]: this.batchFetchReason,\n      [HttpHeaderNames.PARAM]: createParamHttpHeaderValue(\n        Object.keys(finalParams).map(key => ({\n          keyName: key,\n          keyValue: finalParams[key],\n        }))\n      ),\n    };\n  }\n\n  private generatePackageHttpHeaders(row: ProductDataGridRowDataInterface) {\n    return {\n      [HttpHeaderNames.FETCH_REASON]: this.packageFetchReason,\n      [HttpHeaderNames.PARAM]: createParamHttpHeaderValue([\n        {\n          keyName: 'goodsActionType',\n          keyValue: this.goodsActionType,\n        },\n        {\n          keyName: propertyOf<ProductDataGridRowDataInterface>('goodsRef'),\n          keyValue: row.goodsRef?.toString(),\n        },\n      ]),\n    };\n  }\n\n  private selectBarcode(value: any, row: ProductDataGridRowDataInterface) {\n    return new Promise<boolean>(resolve => {\n      const keyword = (value?.toString() || '').trim();\n      if (!keyword) {\n        resolve(true);\n        return;\n      }\n      this.getGoodsByBarcodeSubcribtion?.unsubscribe();\n      this.getGoodsByBarcodeSubcribtion = this.getBarcodeSearchService(keyword).subscribe({\n        next: async res => {\n          const data = res.value.length ? res.value[0] : null;\n          try {\n            if (data) {\n              data.barcode = keyword;\n              if (\n                !this.productSelectByBarcodeCallback ||\n                (await this.productSelectByBarcodeCallback({ data, row })) === true\n              ) {\n                this.selectGoods(data, row);\n                resolve(true);\n              }\n            } else {\n              this.toastService.show({\n                type: 'warning',\n                text: 'بارکد یافت نشد.', // TODO: add translation\n              });\n              resolve(false);\n            }\n          } catch {\n            resolve(false);\n          }\n        },\n        error: () => {\n          resolve(false);\n        },\n      });\n    });\n  }\n\n  private selectGoods(data: StockGoodsModelInterface | null, row: ProductDataGridRowDataInterface) {\n    if (data) {\n      row.isBatch = data.isBatch;\n      row.goodsRef = data.goodsRef;\n      row.goodsCode = data.goodsCode;\n      row.goodsName = data.goodsName;\n      row.accYear = data.accYear;\n      row.barcode = data.defaultGoodsBarcode;\n      row.goodsTypeRef = data.goodsTypeRef;\n\n      if (!data.isBatch) {\n        delete row.batchNo;\n        delete row.batchRef;\n        this.selectDefaultPackage(row);\n      }\n    } else {\n      delete row.isBatch;\n      delete row.batchNo;\n      delete row.batchRef;\n      delete row.goodsRef;\n      delete row.goodsCode;\n      delete row.goodsName;\n      delete row.packUnitRef;\n      delete row.packUnitName;\n      delete row.accYear;\n      delete row.barcode;\n    }\n    this.productSelectCallback.emit({ data, row });\n  }\n\n  private selectBatch(data: BatchModelInterface | null, row: ProductDataGridRowDataInterface) {\n    if (data) {\n      row.batchNo = data.batchNo;\n      row.batchRef = data.id;\n      this.selectDefaultPackage(row);\n    }\n    this.batchSelectCallback.emit({ data, row });\n  }\n\n  private selectPackage(\n    data: PackageModelInterface | null,\n    row: ProductDataGridRowDataInterface,\n    isDefaultSelection?: boolean\n  ) {\n    if (data) {\n      row.packUnitName = data.unitName;\n    } else {\n      delete row.packUnitName;\n    }\n    this.packageSelectCallback.emit({\n      data,\n      row,\n      isDefaultSelection: !!isDefaultSelection,\n    });\n  }\n}\n","<ui-data-grid\n  #dataGrid\n  [columns]=\"internalColumns\"\n  [items]=\"items\"\n  [addable]=\"addable\"\n  [checkable]=\"checkable\"\n  [removable]=\"removable\"\n  [disabled]=\"disabled\"\n  [tabIndex]=\"tabIndex\"\n  [cellEditCallback]=\"cellEditCallback\"\n  [rowDeleteCallback]=\"rowDeleteCallback\"\n  [rowFormatCallback]=\"rowFormatCallback\"\n  [rowPreCheckedCallback]=\"rowPreCheckedCallback\"\n  (onRowSelected)=\"rowSelected($event)\"\n  (checkedCallback)=\"onCheckedCallback($event)\"\n  (rowAddCallback)=\"onRowAddCallback($event)\"\n></ui-data-grid>\n","import { ValidationCallbackData, ValidationRule } from 'devextreme-angular/common';\n\nexport function convertFararuValidationRuleToDevExtreamRule<T>(\n  title: string,\n  currentValues: T,\n  validator: FararuDataGridValidatorInterface<T>\n): ValidationRule | null {\n  switch (validator.type) {\n    case 'required':\n      return {\n        type: 'custom',\n        message: renderMessage(validator, currentValues) ?? requiredMessage(title),\n        validationCallback: (options: ValidationCallbackData) => {\n          return options.value != null;\n        },\n      };\n    case 'range':\n      return {\n        type: 'range',\n        message:\n          renderMessage(validator, currentValues) ??\n          rangeMessage(title, validator.min, validator.max),\n        min: validator.min,\n        max: validator.max,\n      };\n    case 'custom':\n      return {\n        type: 'custom',\n        message: renderMessage(validator, currentValues) ?? 'خطا در فیلد ' + title,\n        validationCallback: (options: ValidationCallbackData) => {\n          return validator.validationCallback(options.data, options.value);\n        },\n      };\n    case 'stringLength':\n      return {\n        type: 'stringLength',\n        message:\n          renderMessage(validator, currentValues) ??\n          stringLengthMessage(title, validator.min, validator.max),\n        min: validator.min ?? 0,\n        max: validator.max ?? 100,\n      };\n    case 'pattern':\n      return {\n        type: 'pattern',\n        message:\n          renderMessage(validator, currentValues) ?? patternMessage(title, validator.pattern),\n        pattern: validator.pattern,\n      };\n    case 'async':\n      return {\n        type: 'async',\n        message: renderMessage(validator, currentValues) ?? 'خطا در فیلد ' + title,\n        validationCallback: (options: ValidationCallbackData) => {\n          return validator.validationCallback(options.data, options.value);\n        },\n      };\n    default:\n      return null;\n  }\n}\n\nfunction renderMessage<T>(validator: FararuDataGridValidatorInterface<T>, currentValues: T) {\n  if (validator.message) {\n    if (typeof validator.message === 'function') {\n      return validator.message(currentValues);\n    }\n    return validator.message;\n  }\n  return null;\n}\n\nfunction requiredMessage(title: string): string {\n  return `فیلد ${title} الزامی است.`;\n}\n\nfunction rangeMessage(title: string, min: number, max: number): string {\n  if (min != undefined && max != undefined) {\n    return `فیلد ${title} باید بین ${min} و ${max} باشد.`;\n  } else if (min != undefined) {\n    return `فیلد ${title} باید بیشتر از ${min} باشد.`;\n  } else if (max != undefined) {\n    return `فیلد ${title} باید کمتر از ${max} باشد.`;\n  }\n  return `فیلد ${title} باید بین ${min} و ${max} باشد.`;\n}\n\nfunction stringLengthMessage(title: string, min: number, max: number): string {\n  if (min != undefined && max != undefined) {\n    return `فیلد ${title} باید بین ${min} و ${max} کاراکتر باشد.`;\n  } else if (min != undefined) {\n    return `فیلد ${title} باید بیشتر از ${min} کاراکتر باشد.`;\n  } else if (max != undefined) {\n    return `فیلد ${title} باید کمتر از ${max} کاراکتر باشد.`;\n  }\n  return `فیلد ${title} باید بین ${min} و ${max} کاراکتر باشد.`;\n}\n\nfunction patternMessage(title: string, pattern: RegExp): string {\n  return `فیلد ${title} باید به فرمت ${pattern.source} باشد.`;\n}\n\nexport type FararuDataGridValidatorInterface<T> =\n  | {\n      type: 'required' | 'range' | 'custom' | 'stringLength' | 'pattern' | 'async';\n      message?: string | ((currentValues: T) => string);\n    } & (\n      | {\n          type: 'required';\n        }\n      | {\n          type: 'range';\n          min?: number;\n          max?: number;\n        }\n      | {\n          type: 'custom';\n          validationCallback: (currentValues: T, newValue: unknown) => boolean;\n        }\n      | {\n          type: 'stringLength';\n          min?: number;\n          max?: number;\n        }\n      | {\n          type: 'pattern';\n          pattern: RegExp;\n        }\n      | {\n          type: 'async';\n          validationCallback: (currentValues: T, newValue: unknown) => Promise<boolean>;\n        }\n    );\n\nexport type ValidationEventResult = {\n  isValid: boolean;\n  errorText: string;\n};\n","export function inputFormat(decimal: number): { format: string } {\n  const format = { format: '#,##' };\n  if (decimal != undefined) {\n    if (decimal == 0) {\n      format.format = '#,##0';\n    } else {\n      format.format = format.format + '0.';\n      for (let i = 0; i < decimal; i++) {\n        format.format = format.format + '0';\n      }\n    }\n  }\n  return format;\n}\n","import { createAction, props } from '@ngrx/store';\nimport { AccYearItemInterface } from '../../models/general/acc-year-item.interface';\nimport { CenterItemInterface } from '../../models/general/center-item.interface';\nimport { SaleOfficeItemInterface } from '../../models/general/sale-office-item.interface';\nimport { StatusbarInfoInterface } from '../../models/general/statusbar-info.interface';\nimport { checkActionType } from '../../utils/check-action-type';\n\nexport const AuthActionTypes = {\n  LOGIN_DATA_LOAD_REQUESTS: checkActionType('[Auth] Login data load requets'),\n  ACCYEAR_LOAD_SUCCESS: checkActionType('[Auth] AccYear load success'),\n  SALEOFFICE_LOAD_SUCCESS: checkActionType('[Auth] SaleOffice data load requets'),\n  CENTER_LOAD_SUCCESS: checkActionType('[Auth] CenterItems data load requets'),\n  STATUSBAR_INFO_LOAD_REQUEST: checkActionType('[Auth] Statusbar Info load requets'),\n  STATUSBAR_INFO_LOAD_SUCCESS: checkActionType('[Auth] Statusbar Info load success'),\n  LOGIN_REQUEST: checkActionType('[Auth] Login request'),\n  LOGIN_SUCCESS: checkActionType('[Auth] Login success'),\n  LOGIN_FAIL: checkActionType('[Auth] Login fail'),\n  RESTORE_USER: checkActionType('[Auth] Restore user'),\n  LOGOUT: checkActionType('[Auth] Logout'),\n\n  CHANGE_ACCYEAR: checkActionType('[Auth] Change Acc year'),\n  CHANGE_CENTER: checkActionType('[Auth] Change Center'),\n};\n\nexport const loginRequest = createAction(\n  AuthActionTypes.LOGIN_REQUEST,\n  props<{\n    username: string;\n    password: string;\n    rememberMe: boolean;\n    accYear: number;\n    centerId: number;\n  }>()\n);\n\nexport const loginSuccess = createAction(\n  AuthActionTypes.LOGIN_SUCCESS,\n  props<{\n    token: string;\n    accYear: number;\n    center: number;\n    username: string;\n  }>()\n);\n\nexport const loginFail = createAction(AuthActionTypes.LOGIN_FAIL, props<{ error: string }>());\n\nexport const restoreUser = createAction(AuthActionTypes.RESTORE_USER, props<{ token: string }>());\n\nexport const loginDataLoad = createAction(AuthActionTypes.LOGIN_DATA_LOAD_REQUESTS);\n\nexport const accYearLoad = createAction(\n  AuthActionTypes.ACCYEAR_LOAD_SUCCESS,\n  props<{ items: AccYearItemInterface[] }>()\n);\n\nexport const saleOfficeLoad = createAction(\n  AuthActionTypes.SALEOFFICE_LOAD_SUCCESS,\n  props<{ items: SaleOfficeItemInterface[] }>()\n);\n\nexport const centerLoad = createAction(\n  AuthActionTypes.CENTER_LOAD_SUCCESS,\n  props<{ items: CenterItemInterface[] }>()\n);\n\nexport const changeAccYear = createAction(\n  AuthActionTypes.CHANGE_ACCYEAR,\n  props<{ accYear: number }>()\n);\n\nexport const changeCenter = createAction(\n  AuthActionTypes.CHANGE_CENTER,\n  props<{ centerId: number }>()\n);\n\nexport const logout = createAction(AuthActionTypes.LOGOUT);\n\nexport const loadStatusbarInfo = createAction(AuthActionTypes.STATUSBAR_INFO_LOAD_REQUEST);\n\nexport const statusbarInfoIsLoaded = createAction(\n  AuthActionTypes.STATUSBAR_INFO_LOAD_SUCCESS,\n  props<{ item: StatusbarInfoInterface }>()\n);\n","import { Injectable } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport { Sandbox } from './base.sandbox';\nimport * as AuthActions from '../actions/auth.actions';\nimport * as ConfigActions from '../actions/config.actions';\nimport { AppState } from '../app-state.interface';\nimport * as authSelectors from '../selectors/auth.selectors';\nimport { SigninRequest } from '../../api/app-user/requests/signin-request';\nimport { User } from '../../models';\nimport { SessionNames } from '../../constants';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class AuthSandbox extends Sandbox {\n  public loggedUser: User;\n  public loggedUser$ = this.appState$.select(authSelectors.getLoggedUser);\n  public loginLoading$ = this.appState$.select(authSelectors.getAuthLoading);\n  public loginLoaded$ = this.appState$.select(authSelectors.getAuthLoaded);\n  public loginFailed$ = this.appState$.select(authSelectors.getAuthFailed);\n  public accYearItems$ = this.appState$.select(authSelectors.getAccYearItems);\n  public saleOfficeItems$ = this.appState$.select(authSelectors.getSaleOfficeItems);\n  public centerItems$ = this.appState$.select(authSelectors.getCenterItems);\n  public selectedAccYear$ = this.appState$.select(authSelectors.getSelectedAccYear);\n  public selectedCenter$ = this.appState$.select(authSelectors.getSelectedCenter);\n\n  public statusbarInfo$ = this.appState$.select(authSelectors.getStatusbarInfo);\n\n  constructor(protected override appState$: Store<AppState>) {\n    super(appState$);\n    this.loggedUser$.subscribe(user => {\n      this.loggedUser = user;\n    });\n    this.restoreUser();\n  }\n\n  login(form: SigninRequest): void {\n    this.appState$.dispatch(AuthActions.loginRequest(form));\n  }\n\n  logout(): void {\n    this.appState$.dispatch(AuthActions.logout());\n    this.appState$.dispatch(ConfigActions.accessNodeIdsReset());\n  }\n\n  restoreUser(): void {\n    const session = sessionStorage.getItem(SessionNames.USER);\n    if (session) {\n      this.appState$.dispatch(AuthActions.restoreUser({ token: session }));\n    }\n  }\n\n  getLoginData(): void {\n    this.appState$.dispatch(AuthActions.loginDataLoad());\n  }\n\n  changeAccYear(accYear: number) {\n    this.appState$.dispatch(AuthActions.changeAccYear({ accYear: accYear }));\n  }\n\n  changeCenter(centerId: number) {\n    this.appState$.dispatch(AuthActions.changeCenter({ centerId: centerId }));\n  }\n\n  loadStatusbarInfo() {\n    this.appState$.dispatch(AuthActions.loadStatusbarInfo());\n  }\n}\n","import {\n  Component,\n  EventEmitter,\n  Input,\n  OnChanges,\n  OnDestroy,\n  OnInit,\n  Output,\n  SimpleChanges,\n  TemplateRef,\n  ViewChild,\n  ViewContainerRef,\n} from '@angular/core';\nimport { DxDataGridComponent } from 'devextreme-angular';\nimport { DataType } from 'devextreme/common';\nimport CustomStore from 'devextreme/data/custom_store';\nimport ODataStore from 'devextreme/data/odata/store';\nimport {\n  ColumnCellTemplateData,\n  ColumnEditCellTemplateData,\n  dxDataGridColumn,\n  EditingStartEvent,\n  EditorPreparingEvent,\n  FocusedRowChangedEvent,\n  InitNewRowEvent,\n  RowInsertedEvent,\n  RowRemovedEvent,\n  RowUpdatedEvent,\n  RowValidatingEvent,\n} from 'devextreme/ui/data_grid';\nimport dxValidator from 'devextreme/ui/validator';\nimport { combineLatest, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport {\n  FararuDataGridColumnInterface,\n  FararuDataGridDetailColumnInterface,\n  GridFieldConfigInterface,\n  GridPropFieldConfig,\n} from './fararu-data-grid-column.interface';\nimport { convertFararuValidationRuleToDevExtreamRule } from './fararu-data-grid.validations';\nimport { inputFormat } from './fararu-grid-column.helpers';\nimport { OdataHttpHeaders } from '../../../../models/odata-http-header.interface';\nimport { GeneralActionInterface } from '../../../../models/general-action.interface';\nimport { AppConfigService } from '../../../../services/app-config.service';\nimport { AuthSandbox } from '../../../../store/sandboxes/auth.sandbox';\nimport { ConfigSandbox } from '../../../../store/sandboxes/config.sandbox';\nimport { FararuToastService } from '../../../toast/fararu-toast.service';\nimport { SessionNames } from '../../../../constants/session-names';\n\n@Component({\n  selector: 'ui-fararu-data-grid',\n  templateUrl: './fararu-data-grid.component.html',\n  styleUrl: './fararu-data-grid.component.css',\n})\nexport class FararuDataGridComponent<T> implements OnInit, OnChanges, OnDestroy {\n  @ViewChild('dataGrid', { static: false }) dataGrid!: DxDataGridComponent;\n  @ViewChild('moreMenuTemplate', { static: true }) moreMenuTemplate: TemplateRef<any>;\n  @ViewChild('dataGrid', { static: false, read: ViewContainerRef })\n  dataGridViewContainer: ViewContainerRef;\n\n  @Input() identityFieldName: string = '__uid';\n  @Input() oDataServer: string = this._appConfig.config.api.baseUrl;\n  @Input() oDataEntity: string;\n  @Input() oDataHttpHeaders: OdataHttpHeaders;\n  @Input() columns: FararuDataGridColumnInterface<T>;\n  @Input() items: T[];\n  @Input() moreMenuItems: GeneralActionInterface[] = [];\n  @Input() hasRowNumber: boolean = true;\n  @Input() allowSelectAll?: boolean = false;\n  @Input() selectionMode?: 'single' | 'multiple' | 'none' = 'single';\n  @Input() selectAllMode?: 'allPages' | 'page' = 'allPages';\n  @Input() selectedItems: T[] = [];\n  @Input() selectedRowKeys: (number | string)[] = [];\n  @Input() allowUpdating: boolean = false;\n  @Input() allowDeleting: boolean = false;\n  @Input() allowAdding: boolean = false;\n  @Input() rtlEnabled: boolean = true;\n\n  @Output() selectionChanged = new EventEmitter<T[]>();\n  @Output() rowClick = new EventEmitter<T>();\n  @Output() rowDoubleClick = new EventEmitter<T>();\n  @Output() selectedRowKeysChanged = new EventEmitter<(number | string)[]>();\n  @Output() rowInserted = new EventEmitter<T>();\n  @Output() rowRemoved = new EventEmitter<T>();\n  @Output() rowUpdated = new EventEmitter<T>();\n  @Output() onInitNewRow = new EventEmitter<T>();\n\n  dataSource: any;\n  dxColumns: dxDataGridColumn[] = [];\n  summaryStore: CustomStore<any, any>;\n\n  private _odataUrl: string;\n  private _accYear: number;\n  private _centerId: number;\n\n  private _rowValues: T = {} as T;\n  private _rowOldValues: T = {} as T;\n  private _dynamicValues: Record<keyof T, any> = {} as Record<keyof T, any>;\n\n  rowDisabledFieldsMap: Record<keyof T, boolean> = {} as Record<keyof T, boolean>;\n  rowReadonlyFieldsMap: Record<keyof T, boolean> = {} as Record<keyof T, boolean>;\n\n  rowDisabledDynamicFieldsMap: Record<keyof T, boolean> = {} as Record<keyof T, boolean>;\n  rowReadonlyDynamicFieldsMap: Record<keyof T, boolean> = {} as Record<keyof T, boolean>;\n\n  destroy$: Subject<void> = new Subject<void>();\n  focusedKey: any;\n  loading: boolean = false;\n\n  constructor(\n    private _appConfig: AppConfigService,\n    private _authSandbox: AuthSandbox,\n    private _configSandbox: ConfigSandbox,\n    private _toastService: FararuToastService\n  ) {\n    this._odataUrl = `${this.oDataServer}/api/general/OData`;\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (changes['columns']) {\n      this._loadConfigColumns();\n    }\n    if (changes['items']) {\n      this._loadDataSource();\n    }\n    if (changes['selectedItems']) {\n      if (this.dataGrid)\n        this._selectRowsByKeys(\n          changes['selectedItems'].currentValue.map(item => item[this.identityFieldName])\n        );\n    }\n    if (changes['selectedRowKeys']) {\n      if (this.dataGrid) this._selectRowsByKeys(changes['selectedRowKeys'].currentValue, false);\n    }\n  }\n\n  private _selectRowsByKeys(keys: (number | string)[], preserve: boolean = true) {\n    this.dataGrid.instance.selectRows(keys, preserve);\n  }\n\n  isUsingItems(): boolean {\n    return this.items != undefined;\n  }\n\n  ngOnDestroy() {\n    this.destroy$.next();\n    this.destroy$.complete();\n  }\n\n  ngOnInit() {\n    // If using OData, wait for auth data\n    combineLatest({\n      accYear: this._authSandbox.selectedAccYear$,\n      centerId: this._authSandbox.selectedCenter$,\n    })\n      .pipe(takeUntil(this.destroy$))\n      .subscribe(({ accYear, centerId }) => {\n        this._accYear = accYear;\n        this._centerId = centerId;\n        this._loadDataSource();\n      });\n  }\n\n  onRowInserted($event: RowInsertedEvent) {\n    this.rowInserted.emit($event.data);\n    if (this.allowAdding) {\n      this.addPlaceholderRow();\n    }\n  }\n\n  onRowRemoved($event: RowRemovedEvent) {\n    this.rowRemoved.emit($event.data);\n  }\n\n  onRowUpdated($event: RowUpdatedEvent) {\n    this.rowUpdated.emit($event.data);\n  }\n\n  onEditingStart($event: EditingStartEvent) {\n    if (this.loading) $event.cancel = true;\n  }\n\n  onContentReady(e: any) {\n    e.component.updateDimensions();\n    if (this.selectedRowKeys && this.selectedRowKeys.length > 0) {\n      this._selectRowsByKeys(this.selectedRowKeys, false);\n    }\n    if (this.selectedItems && this.selectedItems.length > 0) {\n      this._selectRowsByKeys(this.selectedItems.map(item => item[this.identityFieldName]));\n    }\n  }\n\n  onToolbarPreparing(e: any) {\n    e.toolbarOptions.items = [];\n  }\n\n  onSelectionChanged(e: any) {\n    const selectedItems = e.selectedRowsData as T[];\n    const selectedRowKeys = e.selectedRowKeys as (number | string)[];\n\n    this.selectedItems = selectedItems;\n    this.selectedRowKeys = selectedRowKeys;\n\n    this.selectionChanged.emit(selectedItems);\n    this.selectedRowKeysChanged.emit(selectedRowKeys);\n  }\n\n  onRowClick(e: any) {\n    this.rowClick.emit(e.data);\n  }\n\n  onRowDoubleClick(e: any) {\n    this.rowDoubleClick.emit(e.data);\n  }\n\n  onEditorPreparing(e: EditorPreparingEvent) {\n    if (e.parentType === 'dataRow') {\n      const prev = e.editorOptions.onValueChanged;\n      e.editorOptions.onValueChanged = (valueChangedEvent: any) => {\n        prev?.(valueChangedEvent);\n        if (e.dataField) {\n          this._updateRowFieldValue(\n            e.dataField as keyof T,\n            valueChangedEvent.value,\n            true,\n            e,\n            EventTypeEnum.EditorPreparingEvent\n          );\n        }\n      };\n    }\n  }\n\n  onInitNewRowCallback(e: InitNewRowEvent) {\n    e.data[this.identityFieldName] ??= crypto.randomUUID();\n    this.focusedKey = e.data[this.identityFieldName];\n    this.onInitNewRow.emit(e.data);\n  }\n\n  onFocusedRowChanged(e: FocusedRowChangedEvent) {\n    if (this.dataGrid && this.dataGrid.instance) {\n      if (!e.row.isNewRow) {\n        this._setupCurrentRow(e.row.data);\n        this._applyColumnConfigsForRow();\n      } else {\n        this._setupCurrentRow();\n        Object.keys(this.columns).forEach(key => {\n          const defaultValue = this.columns[key].formConfig?.defaultValue;\n          if (defaultValue !== undefined) {\n            e.row.data[key] = defaultValue;\n            this._updateRowFieldValue(\n              key as keyof T,\n              defaultValue,\n              false,\n              e,\n              EventTypeEnum.FocusedRowChangedEvent\n            );\n          }\n\n          if (key in this._dynamicValues) {\n            this._updateRowFieldValue(\n              key as keyof T,\n              this._dynamicValues[key],\n              false,\n              e,\n              EventTypeEnum.FocusedRowChangedEvent\n            );\n\n            this.columns[key].formConfig.value$.subscribe(value => {\n              this._dynamicValues[key] = value;\n              this._updateRowFieldValue(\n                key as keyof T,\n                value,\n                false,\n                e,\n                EventTypeEnum.FocusedRowChangedEvent\n              );\n            });\n          }\n        });\n      }\n    }\n  }\n\n  onRowValidating($event: RowValidatingEvent) {\n    if (!$event.isValid) {\n      this._toastService.show({\n        type: 'error',\n        text: $event.brokenRules?.map(rule => rule.message).join('\\n'),\n      });\n    }\n  }\n\n  isFieldEditable(column: dxDataGridColumn): boolean {\n    return !(\n      this.rowReadonlyFieldsMap[column.dataField] === true ||\n      this.rowDisabledFieldsMap[column.dataField] === true ||\n      this.rowReadonlyDynamicFieldsMap[column.dataField] === true ||\n      this.rowDisabledDynamicFieldsMap[column.dataField] === true\n    );\n  }\n\n  private _showLoading() {\n    this.loading = true;\n    const rowIndex = this.dataGrid.instance.getRowIndexByKey(this.focusedKey);\n    this.dataGrid.instance.getRowElement(rowIndex)[0].classList.add('dx-row-loading');\n    this._configSandbox.showGlobalLoading('DATA_GRID_LOADING');\n  }\n\n  private _hideLoading() {\n    this.loading = false;\n    const rowIndex = this.dataGrid.instance.getRowIndexByKey(this.focusedKey);\n    this.dataGrid.instance.getRowElement(rowIndex)[0].classList.remove('dx-row-loading');\n    this._configSandbox.hideGlobalLoading('DATA_GRID_LOADING');\n  }\n\n  private async _processDependencies(\n    causeColumnKey: keyof T,\n    rowValues: any,\n    rowOldValues: any,\n    userChanged: boolean,\n    e?: FocusedRowChangedEvent | EditorPreparingEvent | ColumnEditCellTemplateData,\n    eventType?: EventTypeEnum\n  ) {\n    this.dataGrid.instance.beginUpdate();\n    const keys = Object.keys(this.columns).filter(key => key != causeColumnKey);\n    for (const effectColumnKey of keys) {\n      const columnConfig = this.columns[effectColumnKey] as FararuDataGridDetailColumnInterface<T>;\n      if (columnConfig.formConfig && 'dynamicConfig' in columnConfig.formConfig) {\n        const dynamicConfig = columnConfig.formConfig?.dynamicConfig;\n        if (dynamicConfig && typeof dynamicConfig === 'object') {\n          if (dynamicConfig.dependencies?.includes(causeColumnKey)) {\n            const dynamicConfigValue = await this._handleSetupFunction(\n              dynamicConfig.setup(\n                rowValues,\n                rowOldValues,\n                columnConfig.formConfig as any,\n                userChanged\n              )\n            );\n            if (dynamicConfigValue !== undefined) {\n              this._setupColumn(effectColumnKey as keyof T, dynamicConfigValue);\n            }\n          }\n        }\n      }\n\n      const conditionalValue = columnConfig.formConfig?.value;\n      if (\n        conditionalValue &&\n        typeof conditionalValue === 'object' &&\n        conditionalValue.dependencies?.includes(causeColumnKey)\n      ) {\n        const newValue = await this._handleSetupFunction(\n          conditionalValue.setup(rowValues, rowOldValues, userChanged)\n        );\n        if (newValue !== undefined && newValue !== rowValues[effectColumnKey]) {\n          if (e != null && eventType === EventTypeEnum.FocusedRowChangedEvent) {\n            e.row.data[effectColumnKey] = newValue;\n          } else if (\n            e != null &&\n            (eventType === EventTypeEnum.EditorPreparingEvent ||\n              eventType === EventTypeEnum.ColumnEditCellTemplateDataEvent)\n          ) {\n            this.dataGrid.instance.cellValue(e.row.rowIndex, effectColumnKey, newValue);\n          }\n          this._updateRowFieldValue(\n            effectColumnKey as keyof T,\n            newValue,\n            userChanged,\n            e,\n            eventType\n          );\n        }\n      }\n\n      const disabled = columnConfig.formConfig?.disabled;\n\n      if (disabled && typeof disabled === 'object') {\n        if (disabled.dependencies.includes(causeColumnKey)) {\n          const isDisabled = await this._handleSetupFunction(\n            disabled.setup(rowValues, rowOldValues, userChanged)\n          );\n          if (isDisabled === true) {\n            this.rowDisabledDynamicFieldsMap[effectColumnKey] = true;\n          } else {\n            this.rowDisabledDynamicFieldsMap[effectColumnKey] = false;\n          }\n        }\n      }\n\n      const readonly = columnConfig.formConfig?.readonly;\n      if (readonly && typeof readonly === 'object') {\n        if (readonly.dependencies.includes(causeColumnKey)) {\n          const isReadonly = await this._handleSetupFunction(\n            readonly.setup(rowValues, rowOldValues, userChanged)\n          );\n          if (isReadonly === true) {\n            this.rowReadonlyDynamicFieldsMap[effectColumnKey] = true;\n          } else {\n            this.rowReadonlyDynamicFieldsMap[effectColumnKey] = false;\n          }\n        }\n      }\n    }\n    this.dataGrid.instance.endUpdate();\n  }\n\n  private async _handleSetupFunction(setupResult: any) {\n    let newValue = undefined;\n    if (setupResult instanceof Promise) {\n      try {\n        this._showLoading();\n        newValue = await setupResult;\n      } catch (error) {\n        this._hideLoading();\n      } finally {\n        this._hideLoading();\n      }\n    } else newValue = setupResult;\n    return newValue;\n  }\n\n  private _applyColumnConfigsForRow() {\n    Object.keys(this.columns).forEach(columnKey => {\n      const rowValues = { ...this._rowValues, ...this._dynamicValues };\n      const columnConfig = this.columns[columnKey] as FararuDataGridDetailColumnInterface<T>;\n      if (columnConfig.formConfig && 'dynamicConfig' in columnConfig.formConfig) {\n        const dynamicConfig = columnConfig.formConfig?.dynamicConfig;\n        if (dynamicConfig && typeof dynamicConfig === 'object') {\n          const dynamicConfigValue = dynamicConfig.setup(\n            rowValues,\n            this._rowOldValues,\n            columnConfig.formConfig as any,\n            false\n          );\n          if (dynamicConfigValue !== undefined) {\n            this._setupColumn(columnKey as keyof T, dynamicConfigValue);\n          }\n        }\n      }\n\n      const disabled = columnConfig.formConfig?.disabled;\n\n      if (disabled && typeof disabled === 'object') {\n        const isDisabled = disabled.setup(rowValues, this._rowOldValues, false);\n        if (isDisabled === true) {\n          this.rowDisabledDynamicFieldsMap[columnKey] = true;\n        } else {\n          this.rowDisabledDynamicFieldsMap[columnKey] = false;\n        }\n      }\n\n      const readonly = columnConfig.formConfig?.readonly;\n      if (readonly && typeof readonly === 'object') {\n        const isReadonly = readonly.setup(rowValues, this._rowOldValues, false);\n        if (isReadonly === true) {\n          this.rowReadonlyDynamicFieldsMap[columnKey] = true;\n        } else {\n          this.rowReadonlyDynamicFieldsMap[columnKey] = false;\n        }\n      }\n    });\n  }\n\n  private _setupColumn(columnKey: keyof T, newConfig: any) {\n    if (!this.dataGrid || !this.dataGrid.instance) return;\n\n    if (newConfig.validators) {\n      this.dataGrid.instance.columnOption(\n        columnKey as string,\n        'validationRules',\n        newConfig.validators\n          .map(validator =>\n            convertFararuValidationRuleToDevExtreamRule(\n              this.columns[columnKey].title,\n              this._rowValues,\n              validator\n            )\n          )\n          .filter(rule => rule != null)\n      );\n    }\n\n    if (newConfig.placeholder !== undefined) {\n      this.dataGrid.instance.columnOption(\n        columnKey as string,\n        'placeholder',\n        newConfig.placeholder\n      );\n    }\n\n    if (newConfig.type == 'textbox') {\n      const format = inputFormat(newConfig.decimal);\n      const editorOptions = this.dataGrid.instance.columnOption(\n        columnKey as string,\n        'editorOptions'\n      );\n      if (format != editorOptions?.format) {\n        this.dataGrid.instance.columnOption(columnKey as string, 'editorOptions', {\n          ...editorOptions,\n          format: format.format,\n        });\n      }\n    }\n  }\n\n  private _loadConfigColumns() {\n    const columnKeys =\n      this.allowAdding || this.allowUpdating\n        ? Object.keys(this.columns).filter(column => this.columns[column].formConfig != null)\n        : Object.keys(this.columns);\n    columnKeys.sort(\n      (a, b) => this.columns[a].formConfig?.order - this.columns[b].formConfig?.order\n    );\n\n    const clmns: dxDataGridColumn[] = columnKeys.map(column => {\n      const columnConfig: FararuDataGridDetailColumnInterface<T> = this.columns[column];\n      if (columnConfig.formConfig?.value$ != null) {\n        columnConfig.formConfig.value$.subscribe(value => {\n          this._dynamicValues[column] = value;\n        });\n      }\n      const dxColumn: dxDataGridColumn = {\n        dataField: column,\n        caption: columnConfig.title,\n        width: columnConfig.width,\n        visible: this._isFieldVisible(columnConfig),\n        dataType: this._getColumnnDataType(columnConfig.formConfig),\n        validationRules: columnConfig.formConfig?.validators\n          ? columnConfig.formConfig?.validators\n              .map(validator =>\n                convertFararuValidationRuleToDevExtreamRule(\n                  columnConfig.title,\n                  this._rowValues,\n                  validator\n                )\n              )\n              .filter(rule => rule != null)\n          : [],\n      };\n      if (columnConfig.formConfig?.type === 'identity-selector') {\n        dxColumn.cellTemplate = 'identitySelectorTemplate';\n        dxColumn.editCellTemplate = 'identitySelectorEditTemplate';\n        dxColumn.cssClass = 'devextream-cell-template';\n      }\n\n      if (columnConfig.formConfig?.type == 'textbox') {\n        const format = inputFormat(columnConfig.formConfig?.decimal);\n        dxColumn.editorOptions = { format };\n      }\n\n      if (\n        columnConfig.formConfig?.disabled != undefined &&\n        typeof columnConfig.formConfig?.disabled === 'boolean'\n      ) {\n        this.rowDisabledFieldsMap[column] = columnConfig.formConfig?.disabled;\n      }\n\n      if (\n        columnConfig.formConfig?.readonly != undefined &&\n        typeof columnConfig.formConfig?.readonly === 'boolean'\n      ) {\n        this.rowReadonlyFieldsMap[column] = columnConfig.formConfig?.readonly;\n      }\n\n      return dxColumn;\n    });\n\n    // if (this.moreMenuItems && this.moreMenuItems.length > 0) {\n    //   clmns.unshift({\n    //     caption: '',\n    //     width: 40,\n    //     cellTemplate: (cellElement, cellInfo) => {\n    //       // Create an Angular embedded view inside the cell\n    //       const view = this.dataGridViewContainer.createEmbeddedView(this.moreMenuTemplate, {\n    //         cellData: cellInfo.data,\n    //       });\n    //       // Attach the view's root nodes to the cell\n    //       view.rootNodes.forEach(node => cellElement.appendChild(node));\n    //     },\n    //   });\n    // }\n\n    this.dxColumns = clmns || [];\n  }\n\n  private _isFieldVisible(columnConfig: FararuDataGridDetailColumnInterface<T>): boolean {\n    return (\n      columnConfig.formConfig?.type != 'hiddenField' &&\n      columnConfig.formConfig?.hidden != true &&\n      columnConfig.formConfig.type !== 'prop'\n    );\n  }\n\n  private _setupCurrentRow(data?: T) {\n    this.rowDisabledDynamicFieldsMap = {} as Record<keyof T, boolean>;\n    this.rowReadonlyDynamicFieldsMap = {} as Record<keyof T, boolean>;\n    this._rowValues = data ? { ...data } : ({} as T);\n    this._rowOldValues = { ...this._rowValues };\n  }\n\n  private _updateRowFieldValue(\n    columnKey: keyof T,\n    value: any,\n    userChanged: boolean,\n    e?: FocusedRowChangedEvent | EditorPreparingEvent | ColumnEditCellTemplateData,\n    eventType?: EventTypeEnum\n  ) {\n    if (this._rowValues[columnKey] !== value) {\n      this._rowOldValues = { ...this._rowValues };\n      this._rowValues[columnKey] = value;\n      this._processDependencies(\n        columnKey,\n        this._rowValues,\n        this._rowOldValues,\n        userChanged,\n        e,\n        eventType\n      );\n    }\n  }\n\n  addPlaceholderRow() {\n    this.dataGrid.instance.addRow();\n  }\n\n  private _loadDataSource() {\n    // Use items array if provided, otherwise use OData\n    if (this.isUsingItems()) {\n      this.dataSource = this.items;\n    } else if (this.oDataEntity) {\n      this.dataSource = this._createODataStore(\n        this._odataUrl,\n        this.oDataEntity,\n        this.oDataHttpHeaders,\n        this.identityFieldName\n      );\n    }\n  }\n\n  private _createODataStore(\n    oDataUrl: string,\n    oDataEntity: string,\n    oDataHttpHeaders: OdataHttpHeaders,\n    identityFieldName: string\n  ) {\n    const token = sessionStorage.getItem(SessionNames.USER) || '';\n    const dataSource = new ODataStore({\n      url: oDataUrl,\n      key: identityFieldName,\n      beforeSend: request => {\n        request.headers = {\n          AccYear: this._accYear,\n          Authorization: `Bearer ${token}`,\n          CenterId: this._centerId,\n          Entity: oDataEntity,\n          ...oDataHttpHeaders,\n        };\n      },\n    });\n    return dataSource;\n  }\n\n  private _getColumnnDataType<T>(fieldConfig?: GridFieldConfigInterface<T>): DataType {\n    if (!fieldConfig) return 'string';\n\n    switch (fieldConfig.type) {\n      case 'textbox':\n        switch (fieldConfig.inputType) {\n          case 'number':\n          case 'currency':\n          case 'time':\n            return 'number';\n          case 'date':\n            return 'date';\n          default:\n            return 'string';\n        }\n      case 'checkbox':\n        return fieldConfig.checkBoxConfig?.bindNumberValue ? 'number' : 'boolean';\n      case 'select':\n      case 'prop':\n      case 'identity-selector':\n      default:\n        return 'string';\n    }\n  }\n\n  isIdentitySelectorDisabled(d: ColumnEditCellTemplateData): boolean {\n    if (!this.isFieldEditable(d.column)) return true;\n    if (d.row.isNewRow && !this.allowAdding) return true;\n    if (!d.row.isNewRow && !this.allowUpdating) return true;\n    return false;\n  }\n\n  onIdentitySelectorChange(selectedItem: any, d: ColumnEditCellTemplateData) {\n    const columnKey = d.column.dataField as keyof T;\n    const columnConfig = this.columns[columnKey];\n    if (selectedItem && columnConfig?.formConfig?.type === 'identity-selector') {\n      const changedValue =\n        selectedItem[columnConfig.formConfig.identitySelectorConfig.resultField] ?? null;\n\n      // Let the grid set the value and run its built-in validation\n      d.setValue(changedValue);\n\n      const proceed = () => {\n        this._updateRowFieldValue(\n          columnKey,\n          changedValue,\n          true,\n          d,\n          EventTypeEnum.ColumnEditCellTemplateDataEvent\n        );\n        this.updateProps(d, selectedItem);\n        if (this.dataGrid && this.dataGrid.instance) {\n          this.dataGrid.instance.focus(\n            this.dataGrid.instance.getCellElement(d.row.rowIndex, columnKey as string)\n          );\n        }\n      };\n\n      const cellEl = this.dataGrid?.instance?.getCellElement(\n        d.row.rowIndex,\n        columnKey as string\n      ) as any;\n      const validator = (dxValidator as any)?.getInstance?.(cellEl);\n      if (validator) {\n        const res = validator.validate();\n        if (res?.complete) {\n          res.complete.then((finalRes: any) => {\n            if (finalRes?.isValid) proceed();\n          });\n        } else if (res?.isValid) {\n          setTimeout(proceed, 0);\n        }\n      }\n    }\n  }\n\n  updateProps(d: ColumnEditCellTemplateData, selectedItem: any) {\n    for (const key of Object.keys(this.columns)) {\n      const field = this.columns[key];\n      if (field.formConfig?.type == 'prop') {\n        const f = field.formConfig as GridPropFieldConfig;\n        if (f.ref == d.column.dataField) {\n          this._updateRowFieldValue(\n            key as keyof T,\n            selectedItem,\n            false,\n            d,\n            EventTypeEnum.ColumnEditCellTemplateDataEvent\n          );\n        }\n      }\n    }\n  }\n\n  getRowNumber(d: ColumnCellTemplateData): number {\n    if (!this.dataGrid || !this.dataGrid.instance) {\n      return 0;\n    }\n    return this.dataGrid.instance.getRowIndexByKey(d.data[this.identityFieldName]) + 1;\n  }\n}\n\nenum EventTypeEnum {\n  EditorPreparingEvent,\n  FocusedRowChangedEvent,\n  ColumnEditCellTemplateDataEvent,\n  ColumnDynamicValueEvent,\n}\n","<div class=\"grid-container\">\n  <dx-data-grid\n    #dataGrid\n    [autoNavigateToFocusedRow]=\"false\"\n    [focusedRowEnabled]=\"true\"\n    [focusedRowKey]=\"focusedKey\"\n    [keyExpr]=\"identityFieldName\"\n    [dataSource]=\"dataSource\"\n    [height]=\"'100%'\"\n    [rtlEnabled]=\"rtlEnabled\"\n    (onContentReady)=\"onContentReady($event)\"\n    [allowColumnResizing]=\"true\"\n    [columnResizingMode]=\"'widget'\"\n    [rowAlternationEnabled]=\"true\"\n    [showRowLines]=\"true\"\n    [filterRow]=\"{ visible: true }\"\n    [headerFilter]=\"{ visible: true }\"\n    [selection]=\"{\n      mode: this.selectionMode,\n      allowSelectAll: this.allowSelectAll,\n      selectAllMode: this.selectAllMode,\n      showCheckBoxesMode: 'always',\n    }\"\n    (onSelectionChanged)=\"onSelectionChanged($event)\"\n    (onRowClick)=\"onRowClick($event)\"\n    (onRowDblClick)=\"onRowDoubleClick($event)\"\n    [remoteOperations]=\"!isUsingItems()\"\n    [scrolling]=\"{\n      mode: 'virtual',\n      rowRenderingMode: 'virtual',\n      columnRenderingMode: 'standard',\n      preloadEnabled: true\n    }\"\n    [columnAutoWidth]=\"true\"\n    [editing]=\"{\n      mode: 'cell',\n      allowUpdating: this.allowUpdating,\n      allowDeleting: this.allowDeleting,\n      allowAdding: this.allowAdding,\n      useIcons: true,\n      refreshMode: 'reshape',\n      newRowPosition: 'last'\n    }\"\n    (onRowUpdated)=\"onRowUpdated($event)\"\n    (onRowRemoved)=\"onRowRemoved($event)\"\n    (onRowInserted)=\"onRowInserted($event)\"\n    (onEditorPreparing)=\"onEditorPreparing($event)\"\n    (onInitNewRow)=\"onInitNewRowCallback($event)\"\n    (onFocusedRowChanged)=\"onFocusedRowChanged($event)\"\n    (onToolbarPreparing)=\"onToolbarPreparing($event)\"\n    (onRowValidating)=\"onRowValidating($event)\"\n    (onEditingStart)=\"onEditingStart($event)\"\n  >\n    >\n    <dxo-scrolling [useNative]=\"false\"></dxo-scrolling>\n\n    <dxi-column\n      *ngIf=\"hasRowNumber\"\n      [fixed]=\"true\"\n      [fixedPosition]=\"rtlEnabled ? 'right' : 'left'\"\n      [showInColumnChooser]=\"false\"\n      caption=\"#\"\n      [allowSorting]=\"false\"\n      [allowFiltering]=\"false\"\n      [allowEditing]=\"false\"\n      cellTemplate=\"rowNumberTemplate\"\n    >\n    </dxi-column>\n\n    <dxi-column\n      type=\"buttons\"\n      [fixed]=\"true\"\n      [fixedPosition]=\"rtlEnabled ? 'right' : 'left'\"\n      [showInColumnChooser]=\"false\"\n    >\n      <dxi-button name=\"delete\"></dxi-button>\n    </dxi-column>\n\n    <dxi-column\n      *ngFor=\"let column of dxColumns\"\n      [dataField]=\"column.dataField\"\n      [caption]=\"column.caption\"\n      [visible]=\"column.visible\"\n      [dataType]=\"column.dataType\"\n      [validationRules]=\"column.validationRules\"\n      [allowEditing]=\"isFieldEditable(column)\"\n      [width]=\"column.width\"\n      [cellTemplate]=\"column.cellTemplate\"\n      [editCellTemplate]=\"column.editCellTemplate\"\n      [cssClass]=\"column.cssClass\"\n      [editorOptions]=\"column.editorOptions\"\n    >\n    </dxi-column>\n\n    <div *dxTemplate=\"let d of 'identitySelectorTemplate'\">\n      <ui-identity-selector\n        [border]=\"false\"\n        [value]=\"d.value\"\n        [valueData]=\"d.data\"\n        [oDataServer]=\"columns[d.column.dataField].formConfig.identitySelectorConfig.oDataServer\"\n        [oDataTable]=\"columns[d.column.dataField].formConfig.identitySelectorConfig.oDataTable\"\n        [oDataEntity]=\"columns[d.column.dataField].formConfig.identitySelectorConfig.oDataEntity\"\n        [oDataHttpHeaders]=\"\n          columns[d.column.dataField].formConfig.identitySelectorConfig.oDataHttpHeaders\n        \"\n        [inputField]=\"columns[d.column.dataField].formConfig.identitySelectorConfig.inputField\"\n        [secondInputField]=\"\n          columns[d.column.dataField].formConfig.identitySelectorConfig.secondInputField\n        \"\n        [resultField]=\"columns[d.column.dataField].formConfig.identitySelectorConfig.resultField\"\n        [displayField]=\"columns[d.column.dataField].formConfig.identitySelectorConfig.displayField\"\n        [gridFields]=\"columns[d.column.dataField].formConfig.identitySelectorConfig.gridFields\"\n        [allowClear]=\"columns[d.column.dataField].formConfig.identitySelectorConfig.allowClear\"\n        readonly=\"readonly\"\n      ></ui-identity-selector>\n    </div>\n    <div *dxTemplate=\"let d of 'identitySelectorEditTemplate'\">\n      <ui-identity-selector\n        [border]=\"false\"\n        [value]=\"d.value\"\n        [valueData]=\"d.data\"\n        [oDataServer]=\"columns[d.column.dataField].formConfig.identitySelectorConfig.oDataServer\"\n        [oDataTable]=\"columns[d.column.dataField].formConfig.identitySelectorConfig.oDataTable\"\n        [oDataEntity]=\"columns[d.column.dataField].formConfig.identitySelectorConfig.oDataEntity\"\n        [oDataHttpHeaders]=\"\n          columns[d.column.dataField].formConfig.identitySelectorConfig.oDataHttpHeaders\n        \"\n        [inputField]=\"columns[d.column.dataField].formConfig.identitySelectorConfig.inputField\"\n        [secondInputField]=\"\n          columns[d.column.dataField].formConfig.identitySelectorConfig.secondInputField\n        \"\n        [resultField]=\"columns[d.column.dataField].formConfig.identitySelectorConfig.resultField\"\n        [displayField]=\"columns[d.column.dataField].formConfig.identitySelectorConfig.displayField\"\n        [gridFields]=\"columns[d.column.dataField].formConfig.identitySelectorConfig.gridFields\"\n        [allowClear]=\"columns[d.column.dataField].formConfig.identitySelectorConfig.allowClear\"\n        [disabled]=\"isIdentitySelectorDisabled(d) || loading\"\n        (changeCallback)=\"onIdentitySelectorChange($event, d)\"\n      ></ui-identity-selector>\n    </div>\n    <!-- <ng-template #moreMenuTemplate let-cellData>\n      <ui-button\n        [dropdownTriggerFor]=\"dropdown\"\n        [isIcon]=\"true\"\n        varient=\"fill\"\n        size=\"small\"\n        [buttonType]=\"'button'\"\n      >\n        <ui-icon group=\"navigation\" name=\"expand_more\"></ui-icon>\n      </ui-button>\n      <ui-dropdown #dropdown [contentTemplateRef]=\"dropdownTemplate\"> </ui-dropdown>\n\n      <ng-template #dropdownTemplate>\n        <div class=\"m-2\">drop down content</div>\n      </ng-template>\n    </ng-template> -->\n\n    <div *dxTemplate=\"let d of 'rowNumberTemplate'\">\n      {{ getRowNumber(d) }}\n    </div>\n  </dx-data-grid>\n  <ui-button\n    class=\"add-row-button\"\n    varient=\"outline\"\n    color=\"primary\"\n    [disabled]=\"!allowAdding\"\n    (clickCallback)=\"addPlaceholderRow()\"\n    ><ui-fararu-icon name=\"plus\"></ui-fararu-icon\n  ></ui-button>\n</div>\n","import { Component, Input, OnChanges, OnInit, SimpleChanges } from '@angular/core';\n\nimport { OverflowType } from '../../../../types/overflow.type';\n\n@Component({\n  selector: 'ui-general-panel',\n  templateUrl: './general-panel.component.html',\n  styleUrls: ['./general-panel.component.scss'],\n})\nexport class GeneralPanelComponent {\n  @Input() height?: string = '100%';\n  @Input() overflow?: OverflowType = 'auto';\n  @Input() hideGutter?: boolean;\n}\n","<section\n  class=\"general-panel\"\n  [class.general-panel--hide-gutter]=\"hideGutter\"\n  [style.height]=\"height\"\n  [style.overflow]=\"overflow\"\n>\n  <ng-content></ng-content>\n</section>\n","import {\n  AfterViewInit,\n  Component,\n  ElementRef,\n  HostListener,\n  Input,\n  OnChanges,\n  OnInit,\n  SimpleChanges,\n  ViewChild,\n} from '@angular/core';\nimport { FullscreenTypes } from '../../../enums/fullscreen-types';\n\n@Component({\n  selector: 'ui-screen-vertical-separator',\n  templateUrl: './screen-vertical-separator.component.html',\n  styleUrls: ['./screen-vertical-separator.component.scss'],\n})\nexport class ScreenVerticalSeparatorComponent implements AfterViewInit, OnChanges, OnInit {\n  @Input() hideArrowButtons: boolean;\n  @Input() fullscreenType: FullscreenTypes | string = FullscreenTypes.NONE;\n  @Input() startSlicePercent?: number;\n  @Input() autoSize?: 'start' | 'end';\n  @Input() sideSpacing?: 'start' | 'end' | 'both';\n  @Input() hiddenOverflow?: 'start' | 'end' | 'both';\n  @Input() noAutoSizeInWindowResize?: boolean;\n\n  @ViewChild('startSection', { static: false })\n  startSectionRef: ElementRef<HTMLDivElement>;\n  @ViewChild('endSection', { static: false })\n  endSectionRef: ElementRef<HTMLDivElement>;\n  @ViewChild('knopWrap', { static: false })\n  knopWrapRef: ElementRef<HTMLDivElement>;\n\n  isDragging: boolean;\n  hostElementRec: any;\n  knopDraggingX: number;\n  direction: 'rtl' | 'ltr';\n\n  private _resizeTimeoutRef?: any;\n\n  constructor(private hostElementRef: ElementRef) {}\n\n  ngOnInit(): void {\n    this.direction =\n      getComputedStyle(this.hostElementRef.nativeElement)?.getPropertyValue('direction') == 'rtl'\n        ? 'rtl'\n        : 'ltr';\n\n    const resizeObserver = new ResizeObserver(entries => {\n      if (this.noAutoSizeInWindowResize) return;\n      clearTimeout(this._resizeTimeoutRef);\n      this._resizeTimeoutRef = setTimeout(() => {\n        this._adjustAutoSize();\n      }, 200);\n    });\n    resizeObserver.observe(this.hostElementRef.nativeElement);\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (!this.autoSize && !this.startSlicePercent) {\n      this.startSlicePercent = 50;\n    }\n  }\n\n  ngAfterViewInit(): void {\n    setTimeout(() => {\n      this._adjustAutoSize();\n    }, 0);\n  }\n\n  public get FullscreenTypes(): typeof FullscreenTypes {\n    return FullscreenTypes;\n  }\n\n  mouseDown(event: any) {\n    const knobRec = event.target.getBoundingClientRect();\n    this.isDragging = true;\n    this.hostElementRec = this.hostElementRef.nativeElement.getBoundingClientRect();\n    this.knopDraggingX = knobRec.width / 2 - (event.pageX - knobRec.x);\n    event.preventDefault();\n  }\n\n  @HostListener('document:mousemove', ['$event'])\n  mouseMove(event: any) {\n    if (!this.isDragging) return;\n\n    const deltaX = event.pageX + this.knopDraggingX - this.hostElementRec.x;\n    const percent = Math.min(\n      100,\n      Math.max(0, parseFloat(((deltaX / this.hostElementRec.width) * 100).toFixed(2)))\n    );\n    if (this.direction == 'rtl') {\n      this.startSlicePercent = 100 - percent;\n    } else {\n      this.startSlicePercent = percent;\n    }\n  }\n\n  @HostListener('document:mouseup')\n  mouseUp(event: any) {\n    this.isDragging = false;\n  }\n\n  changeFullscreenMode(fullscreenMode: FullscreenTypes) {\n    if (this.fullscreenType == fullscreenMode) {\n      this.fullscreenType = FullscreenTypes.NONE;\n    } else {\n      this.fullscreenType = fullscreenMode;\n    }\n  }\n\n  toggleFullscreenMode(fullscreenMode: FullscreenTypes) {\n    if (this.fullscreenType == FullscreenTypes.NONE) {\n      this.fullscreenType = fullscreenMode;\n    } else {\n      this.fullscreenType = FullscreenTypes.NONE;\n    }\n  }\n\n  private _adjustAutoSize() {\n    if (!this.autoSize) return;\n    const percent = this._getSizePercent();\n    this.startSlicePercent = this.autoSize == 'start' ? percent : 100 - percent;\n  }\n\n  private _getSizePercent() {\n    const element =\n      this.autoSize == 'start'\n        ? this.startSectionRef.nativeElement\n        : this.endSectionRef.nativeElement;\n    let padding = 0;\n\n    if (this.sideSpacing == 'both' || this.sideSpacing == this.autoSize) {\n      const styles = getComputedStyle(element);\n      padding = parseInt(styles.paddingRight) + parseInt(styles.paddingLeft);\n    }\n    const scrollWidth = element.querySelector(':scope > *').scrollWidth + padding;\n    const hostheight =\n      this.hostElementRef.nativeElement.offsetWidth - this.knopWrapRef.nativeElement.offsetWidth;\n    return Math.min((scrollWidth / hostheight) * 100, 100);\n  }\n}\n","<div\n  (mousemove)=\"mouseMove($event)\"\n  class=\"screen-vertical-separator\"\n  [class.screen-vertical-separator--start-full]=\"fullscreenType == FullscreenTypes.START\"\n  [class.screen-vertical-separator--end-full]=\"fullscreenType == FullscreenTypes.END\"\n  [class.screen-vertical-separator--start-auto-size]=\"autoSize === 'start'\"\n  [class.screen-vertical-separator--end-auto-size]=\"autoSize === 'end'\"\n>\n  <div\n    class=\"screen-vertical-separator__row\"\n    [style.flex-basis.%]=\"startSlicePercent\"\n    [hidden]=\"startSlicePercent === 0 || fullscreenType == FullscreenTypes.END\"\n  >\n    <div\n      #startSection\n      class=\"screen-vertical-separator__content\"\n      [class.screen-vertical-separator__content--has-side-spacing]=\"\n        sideSpacing === 'start' || sideSpacing === 'both'\n      \"\n      [class.screen-vertical-separator__content--has-hidden-overflow]=\"\n        hiddenOverflow === 'start' || hiddenOverflow === 'both'\n      \"\n    >\n      <ng-content select=\"[start]\"></ng-content>\n    </div>\n  </div>\n  <div #knopWrap class=\"screen-vertical-separator__knob-wrap\">\n    <span\n      class=\"screen-vertical-separator__knob\"\n      [hidden]=\"fullscreenType != FullscreenTypes.NONE\"\n      (mousedown)=\"mouseDown($event)\"\n    ></span>\n    <ng-container *ngIf=\"!hideArrowButtons\">\n      <ui-fararu-icon\n        class=\"screen-vertical-separator__max-min-button screen-vertical-separator__max-min-button--start\"\n        [class.screen-vertical-separator__max-min-button--active]=\"\n          fullscreenType != FullscreenTypes.NONE\n        \"\n        [class.reverse]=\"direction == 'ltr'\"\n        [name]=\"'section-left'\"\n        [size]=\"'x2'\"\n        [hidden]=\"\n          fullscreenType == FullscreenTypes.START ||\n          (fullscreenType == FullscreenTypes.NONE && startSlicePercent > 95)\n        \"\n        (click)=\"toggleFullscreenMode(FullscreenTypes.START)\"\n      ></ui-fararu-icon>\n      <ui-fararu-icon\n        class=\"screen-vertical-separator__max-min-button screen-vertical-separator__max-min-button--end\"\n        [class.screen-vertical-separator__max-min-button--active]=\"\n          fullscreenType != FullscreenTypes.NONE\n        \"\n        [class.reverse]=\"direction == 'ltr'\"\n        [name]=\"'section-right'\"\n        [size]=\"'x2'\"\n        [hidden]=\"\n          fullscreenType == FullscreenTypes.END ||\n          (fullscreenType == FullscreenTypes.NONE && startSlicePercent < 5)\n        \"\n        (click)=\"toggleFullscreenMode(FullscreenTypes.END)\"\n      ></ui-fararu-icon>\n    </ng-container>\n  </div>\n  <div\n    #endSection\n    class=\"screen-vertical-separator__row\"\n    [style.flex-basis.%]=\"100 - startSlicePercent\"\n    [hidden]=\"startSlicePercent === 100 || fullscreenType == FullscreenTypes.START\"\n  >\n    <div\n      class=\"screen-vertical-separator__content\"\n      [class.screen-vertical-separator__content--has-side-spacing]=\"\n        sideSpacing === 'end' || sideSpacing === 'both'\n      \"\n      [class.screen-vertical-separator__content--has-hidden-overflow]=\"\n        hiddenOverflow === 'end' || hiddenOverflow === 'both'\n      \"\n    >\n      <ng-content select=\"[end]\"></ng-content>\n    </div>\n  </div>\n</div>\n","export enum GeneralSaveReasonsEnum {\n  NEW = 1,\n  UPDATE = 2,\n  DELETE = 3,\n  PARTIAL_UPDATE = 4,\n}\n","import { HttpClient, HttpHeaders, HttpParams } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { firstValueFrom, Observable, of } from 'rxjs';\nimport { GeneralODataService } from '../api/general-odata.service';\nimport { GeneralSaveApi } from '../api/general-save-api';\nimport { GeneralODataTableName } from '../constants/general-odata-table-name';\nimport { HttpHeaderNames } from '../constants/http-header-names';\nimport { ReviewLoadResponse } from '../design-systems/general-templates/general-report-form/responses/review-load-response.interface';\nimport { ODataResponse } from '../models/general-odata-service.interface';\nimport { SaveBodyV2, SaveResponse } from '../models/general-save-result.interface';\nimport { ReviewTab, TabColumnName } from '../models/review/review-tab.model';\nimport {\n  GeneralFieldConfigInterface,\n  ParamHttpHeaderItemInterface,\n  ReportXParameterModel,\n  ReviewDataInterface,\n} from '../models';\nimport { createParamHttpHeaderValue } from '../utils';\nimport { FararuToastService } from '../design-systems/toast';\nimport { TranslateService } from '@ngx-translate/core';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class ReportFormService {\n  constructor(\n    private _http: HttpClient,\n    private _generalSaveApi: GeneralSaveApi,\n    private _generalODataService: GeneralODataService,\n    private _toast: FararuToastService,\n    private _translateService: TranslateService\n  ) {}\n\n  load(request: any, baseUrl: string): Observable<ReviewLoadResponse> {\n    const url = `${baseUrl}/load`;\n    return this._http.post<ReviewLoadResponse>(url, request);\n  }\n\n  // To DO: Base Filters Must be passed to LoadReport\n  loadReport(\n    request: any,\n    baseUrl: string,\n    params: ParamHttpHeaderItemInterface[]\n  ): Observable<ReviewLoadResponse> {\n    const url = `${baseUrl}/general/PDFAndReport`;\n    return this._http.post<ReviewLoadResponse>(\n      url,\n      { SpName: request?.ReviewModel?.ReviewTabs?.[0].SpName},\n      { headers: { param: params.length > 0 ? createParamHttpHeaderValue(params) : '', \"OutputType\":\"1\" } }\n    );\n  }\n\n  getAggregate(\n    filter: string,\n    data: { name: string; tabName: string }\n  ): Observable<{ [key: string]: number }> {\n    let url = `/api/general/Aggregated`;\n    if (filter) {\n      url += `?$filter=${filter}`;\n    }\n\n    return this._http.post<{ [key: string]: number }>(url, data);\n  }\n\n  getReviewColumnNames(\n    request: {\n      tabName: string;\n      Name: string;\n    },\n    baseUrl: string\n  ): Observable<TabColumnName[]> {\n    const url = `${baseUrl}/ReviewColumnNames`;\n    return this._http.post<TabColumnName[]>(url, request);\n  }\n\n  getRequest<ResultType = ODataResponse<any>>(\n    entity?: string,\n    query?: string,\n    fetchReason?: string,\n    headers?: HttpHeaders,\n    params?: HttpParams\n  ): Observable<ODataResponse<ResultType>> {\n    if (!headers) {\n      headers = new HttpHeaders();\n    }\n    if (entity) {\n      headers = headers.append(HttpHeaderNames.ENTITY, entity);\n    }\n\n    if (fetchReason) {\n      headers = headers.append(HttpHeaderNames.FETCH_REASON, fetchReason);\n    }\n    return this._http.get<ODataResponse<ResultType>>('/' + GeneralODataTableName + (query || ''), {\n      headers,\n      params,\n    });\n  }\n\n  postRequest(\n    url: string,\n    data: SaveBodyV2,\n    fetchReason?: number,\n    headers?: HttpHeaders,\n    params?: HttpParams\n  ): Observable<SaveResponse> {\n    return this._generalSaveApi.saveV2(url, data, fetchReason, headers, params);\n  }\n\n  getReportParamById(reportId: string | number): Observable<ODataResponse<ReportXParameterModel>> {\n    let headers: HttpHeaders = new HttpHeaders({ [HttpHeaderNames.FETCH_REASON]: '1' });\n    headers = headers.append(\n      HttpHeaderNames.PARAM,\n      JSON.stringify([{ keyName: 'ReportId', keyValue: reportId.toString() }])\n    );\n    return this._generalODataService.getByEntity('ReportXParameterModel ', null, headers);\n  }\n\n  async loadReportData(reportId: string | number): Promise<{\n    reviewData: ReviewDataInterface;\n    reviewTab: ReviewTab<string>;\n    isAutoRun: boolean;\n  }> {\n    let reviewData: ReviewDataInterface;\n    let reviewTab: ReviewTab<string>;\n    let isAutoRun: boolean = true;\n    let headers = new HttpHeaders().append('fetchReason', '1');\n    headers = headers.append(\n      'param',\n      JSON.stringify([{ keyName: 'ReportId', keyValue: reportId }])\n    );\n    return firstValueFrom(\n      this._generalODataService.getByEntity('ReportModel', undefined, headers)\n    ).then((result: ODataResponse<any>) => {\n      if (result.value[0].modelJSON && result.value[0].configJSON) {\n        reviewData = {\n          InputParameter: {},\n          ReviewModel: JSON.parse(result.value[0].modelJSON),\n        };\n        reviewTab = JSON.parse(result.value[0].configJSON)[0];\n        isAutoRun = result.value[0].isAutoRun ?? true;\n      } else {\n        this._toast.show({\n          type: 'error',\n          text: this._translateService.instant(\n            'general.generalReportForm.errorMessages.additionalReportError'\n          ),\n          closeByUser: true,\n        });\n      }\n      return { reviewData, reviewTab, isAutoRun };\n    });\n  }\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport * as XLSX from 'xlsx';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class ExcelService {\n  constructor(private http: HttpClient) {}\n\n  csvToExcel(csvData: string, fileName: string = 'exportedFile', save = true) {\n    const array = this.csvToArray(csvData);\n    const worksheet: XLSX.WorkSheet = XLSX.utils.json_to_sheet(array);\n    const workbook: XLSX.WorkBook = { Sheets: { data: worksheet }, SheetNames: ['data'] };\n    const excelBuffer: any = XLSX.write(workbook, {\n      bookType: 'xlsx',\n      type: 'array',\n    });\n    if (save) {\n      this.saveAsExcelFile(excelBuffer, fileName);\n    } else {\n      return excelBuffer;\n    }\n  }\n\n  private saveAsExcelFile(buffer: any, fileName: string): void {\n    const data: Blob = new Blob([buffer], { type: 'application/octet-stream' });\n    const a = document.createElement('a');\n    const objectUrl = URL.createObjectURL(data);\n    a.href = objectUrl;\n    a.download = fileName + '_export_' + new Date().getTime() + '.xlsx';\n    a.click();\n    URL.revokeObjectURL(objectUrl);\n  }\n\n  private csvToArray(csv: string): any[] {\n    const lines = csv.split('\\n');\n    const headers = lines[0].split(',');\n    if (lines.length > 1) {\n      return lines.slice(1,100).map((line) => {\n        const values = line.split(',');\n        return headers.reduce((obj, header, index) => {\n          obj[header] = values[index];\n          return obj;\n        }, {});\n      });\n    } else {\n      const csvObj = headers.reduce((obj, header, index) => {\n        obj[header] = '';\n        return obj;\n      }, {});\n      return [csvObj];\n    }\n  }\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport { GeneralODataService } from '../../../api/general-odata.service';\nimport { FararuPrintService } from '../../../api/print/fararu-print-service';\nimport { AppConfigService } from '../../../services/app-config.service';\nimport { AppMenuApiService } from '../../../services/app-menu-api.service';\nimport { UserAccessService } from '../../../services/user-access.service';\nimport { ConfigSandbox } from '../../../store/sandboxes/config.sandbox';\nimport { FararuLayoutService } from '../../layouts/fararu-layout.service';\nimport { ModalService } from '../../modal/modal.service';\nimport { FararuToastService } from '../../toast/fararu-toast.service';\nimport { LoadRemoteAssetService } from '../../../services/load-remote-asset.service';\nimport { ReportFormService } from '../../../services/report-form.service';\nimport { ExcelService } from '../../../services/excel.service';\nimport { GeneralSaveApi } from '../../../api/general-save-api';\n\n@Injectable({\n  providedIn: 'any',\n})\nexport class GeneralListDepsService {\n  constructor(\n    public printService: FararuPrintService,\n    public http: HttpClient,\n    public translateService: TranslateService,\n    public layoutService: FararuLayoutService,\n    public modalService: ModalService,\n    public appConfigService: AppConfigService,\n    public userAccessService: UserAccessService,\n    public toastService: FararuToastService,\n    public configSandBox: ConfigSandbox,\n    public generalOdataService: GeneralODataService,\n    public appMenuApiService: AppMenuApiService,\n    public _loadRemoteAssetService: LoadRemoteAssetService,\n    public _reportFormService: ReportFormService,\n    public _excelService: ExcelService,\n    public generalSaveApi: GeneralSaveApi\n  ) {}\n}\n","import {\n  Component,\n  ContentChild,\n  Input,\n  OnChanges,\n  SimpleChanges,\n  TemplateRef,\n} from '@angular/core';\nimport { UserAccessService } from '../../../services/user-access.service';\n\n@Component({\n  selector: 'ui-access-node',\n  templateUrl: './access-node.component.html',\n  styleUrl: './access-node.component.css',\n})\nexport class AccessNodeComponent implements OnChanges {\n  @Input({ required: true }) accessNodeId: number | string;\n  @ContentChild(TemplateRef) contentTemplate: TemplateRef<any>;\n\n  hasAccess: boolean = false;\n  constructor(private _userAccessService: UserAccessService) {}\n  ngOnChanges(changes: SimpleChanges): void {\n    if (changes['accessNodeId'])\n      this.hasAccess =\n        !this.accessNodeId || this._userAccessService.userHasAccess(this.accessNodeId);\n  }\n}\n","<ng-container *ngTemplateOutlet=\"hasAccess ? contentTemplate : noAccessTmpl\"></ng-container>\n\n<ng-template #noAccessTmpl>\n  <app-message\n    type=\"error\"\n    [hasActionButton]=\"false\"\n    [hasCloseButton]=\"false\"\n    [description]=\"'unauthorizedMessage' | translate\"\n    [title]=\"'general.error' | translate\"\n  ></app-message>\n</ng-template>\n","import { HttpEventType } from '@angular/common/http';\nimport {\n  Component,\n  DestroyRef,\n  EventEmitter,\n  Input,\n  OnChanges,\n  OnDestroy,\n  OnInit,\n  Output,\n  SimpleChanges,\n  TemplateRef,\n  ViewChild,\n} from '@angular/core';\nimport { Buffer } from 'buffer';\nimport {\n  concatMap,\n  exhaustMap,\n  filter,\n  finalize,\n  lastValueFrom,\n  map,\n  mergeMap,\n  Observable,\n  of,\n  filter as rxFilter,\n  Subject,\n  Subscription,\n  switchMap,\n  tap,\n} from 'rxjs';\nimport { catchError } from 'rxjs/operators';\nimport {\n  ClickSubscription,\n  GeneralActionButtonInterface,\n  GeneralActionInterface,\n  GeneralIconActionInterface,\n} from '../../../models/general-action.interface';\nimport { GeneralFieldConfigInterface } from '../../../models/general-field-config.interface';\nimport { ODataResponse } from '../../../models/general-odata-service.interface';\nimport { GeneralSaveApiInterface } from '../../../models/general-save-api.interface';\nimport { GeneralSaveReasonsEnum } from '../../../models/general-save-reasons.enum';\nimport { isSaveResponse } from '../../../models/general-save-result.interface';\nimport { GridConfigInterface } from '../../../models/grid-config.interface';\nimport { GridDetailColumnInterface } from '../../../models/grid-detail-column.interface';\nimport { GridNameInterface } from '../../../models/grid-name.interface';\nimport { InterSystemGridRowActionResponse } from '../../../models/inter-system-response.interface';\nimport { OdataHttpHeaders } from '../../../models/odata-http-header.interface';\nimport { Utility } from '../../../utils/utility';\nimport { GridComponent } from '../../ui/grid/grid.component';\nimport { GridColumnFilterInterface } from './../../../models/grid-column-filter.interface';\nimport { GeneralListDepsService } from './general-list-deps.service';\nimport { HttpHeaderNames } from '../../../constants';\nimport { propertyOf } from '../../../utils/property-of';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n@Component({\n  selector: 'app-general-simple-list',\n  templateUrl: './general-simple-list.component.html',\n  styleUrls: ['./general-simple-list.component.scss'],\n})\nexport class GeneralSimpleListComponent implements OnInit, OnChanges, OnDestroy {\n  @Input() identityFieldName: string = 'id';\n  @Input() title?: string;\n  @Input() uniquePageName?: string;\n  @Input() gridName?: GridNameInterface;\n  @Input() loadingIsShow?: boolean = false;\n  @Input() disabled?: boolean;\n  @Input() fields?: GeneralFieldConfigInterface[];\n  @Input() oDataServer?: string;\n  @Input() oDataTable?: string;\n  @Input() oDataEntity?: string;\n  @Input() hasRelatedOrigins?: boolean = false;\n  @Input() oDataHttpHeaders: OdataHttpHeaders;\n  @Input() oDataFilters?: GridColumnFilterInterface[];\n  @Input() items?: any[];\n  @Input() childItemsPath?: string[] | string;\n  @Input() isMultipleSelect?: boolean = false;\n  @Input() gridRowMoreActions?: GeneralActionInterface[] = [];\n  @Input() gridRowIconActions?: GeneralIconActionInterface[] = [];\n  @Input() gridCustomActions?: GeneralActionButtonInterface[] = [];\n  @Input() gridCollapseRows?: boolean = true;\n  @Input() gridCollapseLevel?: number = 0;\n  @Input() removeApi?: GeneralSaveApiInterface<any>;\n  @Input() hideRemoveButton?: boolean = false;\n  @Input() hideEditButton?: boolean;\n  @Input() hiddenData?: { [key: string]: string };\n  @Input() reload?: any;\n  @Input() downloadCallback?: (filter: any) => any;\n  @Input() beforeRemoveCallback?: (data: any) => any;\n  @Input() removeCallback?: (data: any) => any;\n  @Input() afterRemoveCallback?: (data: any) => any;\n  @Input() beforeEditCallback?: (data: any) => Promise<boolean> | boolean;\n  @Input() editCallback?: (data: any) => any;\n  @Input() selectCallback?: (data: any) => any;\n  @Input() showDownloadBtn: boolean = true;\n  @Input() hideCheckboxInCheckableGrid: boolean;\n  @Input() transformer?: (response: any) => any;\n  @Input() apiServer?: string;\n  @Input() apiUrl?: string;\n  @Input() apiHeaders?: { [name: string]: string };\n  @Input() showFilters: boolean = true;\n  @Input() getDetailItemsCallBack: (data: any, rowIndex: number) => any[];\n  @Input() rowHasDetailCallBack: (data: any) => boolean;\n  @Input() detailColumnsConfig: GridDetailColumnInterface[] = [];\n  @Input() multiExpand: boolean = true;\n  @Input() reorderCondition: (item: any, item2: any) => boolean;\n  @Input() isActive: boolean = true;\n  @Input() rowFormatCallback?: GridComponent['rowFormatCallback'];\n  @Input() cellFormatCallback?: GridComponent['cellFormatCallback'];\n  @Input() isReorderActive: boolean = false;\n  @Input() reorderFieldName: string = 'rowIndex';\n  @Input() viewAccessNodeId?: number;\n  @Input() newAccessNodeId?: number;\n  @Input() editAccessNodeId?: number;\n  @Input() deleteAccessNodeId?: number;\n  @Input() downloadAccessNodeId?: number;\n  @Input() treeIdBinding?: string;\n  @Input() treeTitleBinding?: string;\n  @Input() treeExpandedBinding?: string;\n  @Input() treeChildrenBinding?: string;\n  @Input() treeExpandDepth?: number = 0;\n  @Input() treeSelectedNode?: any;\n  @Input() treeSideIconTemplate!: TemplateRef<any>;\n\n  @Output() gridLoaded: EventEmitter<void> = new EventEmitter<void>();\n  @Output() gridLoadStarted: EventEmitter<void> = new EventEmitter<void>();\n  @Output() onItemChecked: EventEmitter<any[]> = new EventEmitter<any[]>();\n  @Output() onRowOrderChange = new EventEmitter<{ [key: number | string]: any }>();\n  @Output() gridItemClickCallback = new EventEmitter<any>();\n  @Output() gridItemDoubleClicked = new EventEmitter<any>();\n  @Output() gridColumnsChangeCallback = new EventEmitter<any>();\n\n  @ViewChild('grid') gridComponent: GridComponent;\n\n  gridConfig?: GridConfigInterface;\n  hasEditButton?: boolean = false;\n  hasRemoveButton?: boolean = false;\n  selectedRows?: any;\n  downloadLoadingIsShow: boolean = false;\n  progress: number = 0;\n  clickMap = new Map<string, ClickSubscription>();\n  protected subscriptions = new Subscription();\n  hasViewAccess: boolean = false;\n  hasAddAccess: boolean = false;\n  hasDeleteAccess: boolean = false;\n  hasEditAccess: boolean = false;\n  hasDownloadAccess: boolean = false;\n  hasTree?: boolean;\n  treeRemoteData?: any[];\n  treeIsLoading?: boolean;\n\n  private _treeSubscription?: Subscription;\n  @Input() footerAggregateData: { [key: string]: number };\n\n  constructor(protected deps: GeneralListDepsService, private readonly _destroyRef?: DestroyRef) {}\n\n  public refresh() {\n    if (this.hasTree) {\n      this._loadTreeData();\n    } else {\n      this.gridComponent?.reload();\n    }\n  }\n\n  ngOnInit(): void {\n    this.checkPermissions();\n    if (!this.hasViewAccess) return;\n    this.reloadOnSuccess();\n    if (this.childItemsPath) this.hideCheckboxInCheckableGrid = true;\n    this.updateGridConfig();\n    if (this.hasRelatedOrigins) {\n      this.deps.appMenuApiService\n        .getGridRowActionsByEntityModel(this.oDataEntity)\n        .subscribe((response: ODataResponse<InterSystemGridRowActionResponse>) => {\n          if (response?.value?.length > 0) {\n            const gridRowRelatedActions = response.value.map(\n              (item: InterSystemGridRowActionResponse) => ({\n                text: item.caption,\n                click: (event: any, args: any) => {\n                  this.deps._loadRemoteAssetService.openInterSystemForm2(\n                    item,\n                    'view',\n                    args[Utility.toCamelCase(item.fkColumnName)]\n                    // e.args[this.resultField]\n                  );\n                },\n              })\n            );\n            this.gridRowMoreActions.push(...gridRowRelatedActions);\n          }\n        });\n    }\n  }\n\n  checkPermissions() {\n    this.hasViewAccess = this.viewAccessNodeId\n      ? this.deps.userAccessService.userHasAccess(this.viewAccessNodeId)\n      : true;\n    this.hasAddAccess = this.newAccessNodeId\n      ? this.deps.userAccessService.userHasAccess(this.newAccessNodeId)\n      : true;\n    this.hasDeleteAccess = this.deleteAccessNodeId\n      ? this.deps.userAccessService.userHasAccess(this.deleteAccessNodeId)\n      : true;\n    this.hasEditAccess = this.editAccessNodeId\n      ? this.deps.userAccessService.userHasAccess(this.editAccessNodeId)\n      : true;\n    this.hasDownloadAccess = this.downloadAccessNodeId\n      ? this.deps.userAccessService.userHasAccess(this.downloadAccessNodeId)\n      : true;\n  }\n\n  updateGridConfig() {\n    this.gridConfig = {\n      columns: {\n        columns:\n          this.fields\n            ?.filter(x => !x.listConfig?.hidden)\n            ?.map(data => ({\n              ...(data.listConfig || {}),\n              binding: data?.listConfig?.binding || data.name,\n              header: data.label,\n              filteringOptions: data.filteringOptions,\n            })) || [],\n      },\n    };\n  }\n\n  gridLoadStartHandler() {\n    this.gridLoadStarted.emit();\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    this.hasTree = !!this.treeChildrenBinding || !!this.treeIdBinding || !!this.treeTitleBinding;\n    if (changes['reload'] && this.reload) {\n      this.refresh();\n    }\n    if (changes['gridCustomActions']) {\n      this.clickMap = new Map<string, ClickSubscription>();\n      this.gridCustomActions?.forEach(customAction => {\n        if (customAction?.actionId) {\n          this.clickMap.set(customAction?.actionId, {\n            subject: new Subject<any>(),\n            event: null,\n            selectedRow: null,\n          });\n          this.onClickResultHandler(customAction);\n        }\n      });\n    }\n\n    if (changes['fields']) this.updateGridConfig();\n    if (\n      changes['viewAccessNodeId'] ||\n      changes['newAccessNodeId'] ||\n      changes['editAccessNodeId'] ||\n      changes['deleteAccessNodeId']\n    ) {\n      this.checkPermissions();\n      this.configureButtons();\n    }\n\n    if (this.hasTree) {\n      if (\n        (changes[propertyOf<GeneralSimpleListComponent>('apiServer')] ||\n          changes[propertyOf<GeneralSimpleListComponent>('apiUrl')] ||\n          changes[propertyOf<GeneralSimpleListComponent>('apiHeaders')]) &&\n        this.apiServer &&\n        this.apiUrl\n      ) {\n        this._loadTreeData();\n      }\n      if (this.removeCallback && !this.gridRowMoreActions?.some(x => x.id == 'treeDeleteAction')) {\n        if (!this.gridRowMoreActions) this.gridRowMoreActions = [];\n        this.gridRowMoreActions.push({\n          id: 'treeDeleteAction',\n          type: 'delete',\n          click: (event, args) => {\n            this.removeCallback(args);\n          },\n        });\n      }\n    }\n  }\n\n  configureButtons() {\n    this.hasRemoveButton =\n      (!!this.removeCallback || !!this.removeApi) && !this.hideRemoveButton && this.hasDeleteAccess;\n    this.hasEditButton =\n      !!this.editCallback &&\n      (this.hideEditButton === undefined || !this.hideEditButton) &&\n      this.hasEditAccess;\n  }\n\n  selectHandler(selectedRows: any) {\n    this.selectedRows = selectedRows;\n    this.selectCallback && this.selectCallback(selectedRows);\n  }\n\n  gridItemClickHandler(clickedRow: any) {\n    this.gridItemClickCallback.emit(clickedRow);\n  }\n\n  gridItemDoubleClickHandler(clickedRow: any) {\n    this.gridItemDoubleClicked.emit(clickedRow);\n  }\n\n  gridColumnsChange(columns: any) {\n    this.gridColumnsChangeCallback.emit(columns);\n  }\n\n  async editHandlerAsync(data: any) {\n    if (this.beforeEditCallback && (await this.beforeEditCallback(data)) === false) {\n      return;\n    }\n    this.editHandler(data);\n  }\n\n  editHandler(data: any) {\n    this.editCallback && this.editCallback(data);\n  }\n\n  async removeHandler(data: any) {\n    let itemToStringValue = '';\n    if (this.gridName?.itemToString) {\n      const itemToString = this.gridName.itemToString;\n      itemToStringValue = Array.isArray(itemToString)\n        ? itemToString\n            .map(\n              (item: string) => `${this.fields.find(it => it.name == item).label}: ${data[item]}`\n            )\n            .join(' ')\n        : itemToString(data);\n    }\n    const message = this.gridName\n      ? this.deps.translateService.instant('general.removeConfirmWithEntityName', {\n          entity: this.gridName.single,\n        }) +\n        '<br/>' +\n        itemToStringValue\n      : this.deps.translateService.instant('general.removeConfirm');\n    const result = await this.deps.modalService.showConfirm({\n      type: 'delete',\n      description: message,\n      icon: 'delete',\n    });\n    if (result) {\n      if (this.beforeRemoveCallback && (await this.beforeRemoveCallback(data)) === false) {\n        return;\n      }\n\n      if (this.removeCallback) {\n        const finalData = {\n          ...data,\n          ...(this.hiddenData ? this.hiddenData : {}),\n        };\n        if ((await this.removeCallback(finalData)) === false) return;\n\n        if (this.afterRemoveCallback) this.afterRemoveCallback(data);\n        else this.refresh();\n      } else if (this.removeApi) {\n        this.loadingIsShow = true;\n        try {\n          const response = await lastValueFrom(\n            this.removeApi.save({\n              collection: data,\n              saveReason: GeneralSaveReasonsEnum.DELETE,\n            })\n          );\n          if (isSaveResponse(response)) {\n            if (response.saved) {\n              this.deps.toastService.show({\n                type: 'success',\n                text: response.message,\n              });\n              if (this.afterRemoveCallback) this.afterRemoveCallback(data);\n              else this.refresh();\n            }\n          } else {\n            this.deps.toastService.show({\n              type: 'success',\n              text: generateInformationMessage(response),\n            });\n\n            if (this.afterRemoveCallback) this.afterRemoveCallback(data);\n            else this.refresh();\n          }\n        } finally {\n          this.loadingIsShow = false;\n        }\n      }\n    }\n  }\n\n  downloadSubscription: Subscription = null;\n\n  cancelDownload() {\n    this.downloadSubscription?.unsubscribe();\n  }\n\n  async downloadHandler(gridComponent?: GridComponent) {\n    let gridComponentIns = gridComponent ? gridComponent : this.gridComponent;\n    let filter = gridComponentIns.getVirtualODataFilterDefinition();\n    if (this.downloadCallback) {\n      this.downloadCallback(filter);\n    } else {\n      this.downloadLoadingIsShow = true;\n      this.progress = 0;\n\n      const fieldNames = this.fields.map(f => f.name);\n      const columns = gridComponentIns.grid.columns\n        .filter(\n          f =>\n            f.visible &&\n            f.header &&\n            fieldNames.includes(f.binding) &&\n            f.binding != 'note' &&\n            f.binding != 'attachment'\n        )\n        .map(f => ({ KeyName: f.binding, KeyValue: f.header }));\n      const select = columns.map(c => c.KeyName).reduce((p, c, i) => `${p},${c}`);\n\n      const columnsHeaderValue = JSON.stringify(columns);\n      const buffer = Buffer.from(columnsHeaderValue, 'utf-8');\n      const columnsHeaderValueBase64 = buffer.toString('base64');\n      const dlndPath = this.childItemsPath ? '/api/tree/get' : '/api/general/Odata';\n\n      this.downloadSubscription = this.deps.http\n        .get(`${dlndPath}?$select=${select}` + (filter ? '&$filter=' + filter : ''), {\n          headers: {\n            ...(this.oDataHttpHeaders ? this.oDataHttpHeaders : this.apiHeaders),\n            Entity:\n              this.oDataEntity ??\n              this.oDataHttpHeaders?.[HttpHeaderNames.ENTITY] ??\n              this.apiHeaders?.[HttpHeaderNames.ENTITY],\n            flow: 'Excel',\n            Column: columnsHeaderValueBase64,\n          },\n          responseType: 'blob',\n          observe: 'events',\n          reportProgress: true,\n        })\n        .pipe(\n          finalize(() => {\n            this.downloadLoadingIsShow = false;\n            this.progress = 0;\n          }),\n          tap(event => {\n            if (event.type == HttpEventType.DownloadProgress) {\n              this.progress = Math.round((100 * event.loaded) / event.total);\n            }\n          }),\n          rxFilter(event => event.type === HttpEventType.Response),\n          map(event => {\n            if (event.type == HttpEventType.Response) {\n              const contentDispositionHeader = event.headers.get('content-disposition');\n              let filename = null;\n              if (contentDispositionHeader) {\n                const matches = contentDispositionHeader.match(\n                  /filename[^;=\\n]*=(['\"]?)([^'\"\\n]*)\\1?/\n                );\n                if (matches && matches.length > 2) {\n                  filename = matches[2];\n                }\n              }\n              return { data: event.body, filename };\n            } else return null;\n          })\n        )\n        .subscribe({\n          next: (respone: { data: any; filename: string | null }) => {\n            this.downloadLoadingIsShow = false;\n            const blob = new Blob([respone.data], { type: 'text/csv' });\n            let filename = new Date().toLocaleDateString('en-US') + '.xlsx';\n            if (respone.filename) filename = respone.filename;\n            this.saveBlobAsFile(blob, filename);\n          },\n          error: e => {\n            console.error('GeneralSimpleListComponent ~ downloadHandler ~ error:', e);\n            this.downloadLoadingIsShow = false;\n          },\n        });\n    }\n  }\n\n  saveBlobAsFile(blob: Blob, filename: string) {\n    const link = document.createElement('a');\n    link.href = window.URL.createObjectURL(blob);\n    link.target = '_blank';\n    link.download = filename;\n    link.click();\n    window.URL.revokeObjectURL(link.href);\n  }\n\n  showPlanProgressHandler(state: boolean) {\n    this.loadingIsShow = state;\n  }\n\n  gridLoadHandler() {\n    this.gridLoaded.emit();\n  }\n\n  checkCallback($event: any) {\n    this.onItemChecked.emit($event);\n  }\n\n  getOdataCount() {\n    return this.gridComponent.getOdataCount();\n  }\n\n  getCheckedRows() {\n    return this.gridComponent.getSelectedRows();\n  }\n\n  getOdataFilters(): GridColumnFilterInterface[] {\n    return this.gridComponent.getODataFilters();\n  }\n\n  ngOnDestroy(): void {\n    this.subscriptions.unsubscribe();\n  }\n\n  getOdataFiltersEncoded(): string {\n    return this.gridComponent?.getODataFiltersEncoded() ?? '';\n  }\n\n  onClick(event: Event, selectedRows: any, action: GeneralActionButtonInterface): void {\n    if (!action?.actionId) {\n      action.click(event, selectedRows);\n    } else {\n      action.disabled = action.mapFunction === 'disabled';\n      try {\n        this.clickMap.get(action.actionId).event = event;\n        this.clickMap.get(action.actionId).selectedRow = selectedRows;\n        this.clickMap.get(action.actionId).subject.next(this.clickMap.get(action.actionId));\n      } catch (e) {\n        console.log('the header actions are not properly initialized.');\n      }\n    }\n  }\n\n  onClickResultHandler(action: GeneralActionButtonInterface): void {\n    switch (action?.mapFunction) {\n      case 'switch': {\n        this.subscriptions.add(\n          this.clickMap\n            .get(action.actionId)\n            .subject.pipe(\n              switchMap((data: ClickSubscription) =>\n                (action.click(data.event, data.selectedRow) as Observable<any>).pipe(\n                  catchError(error => {\n                    action.onFailure(error);\n                    return of(null);\n                  })\n                )\n              )\n            )\n            .subscribe({\n              next: (response: any) => {\n                if (response !== null) {\n                  action.onSuccess(response);\n                }\n              },\n            })\n        );\n        break;\n      }\n      case 'concat': {\n        this.subscriptions.add(\n          this.clickMap\n            .get(action.actionId)\n            .subject.pipe(\n              concatMap((data: ClickSubscription) =>\n                (action.click(data.event, data.selectedRow) as Observable<any>).pipe(\n                  catchError(error => {\n                    action.onFailure(error);\n                    return of(null);\n                  })\n                )\n              )\n            )\n            .subscribe({\n              next: (response: any) => {\n                if (response !== null) {\n                  action.onSuccess(response);\n                }\n              },\n            })\n        );\n        break;\n      }\n      case 'merge': {\n        this.subscriptions.add(\n          this.clickMap\n            .get(action.actionId)\n            .subject.pipe(\n              mergeMap((data: ClickSubscription) =>\n                (action.click(data.event, data.selectedRow) as Observable<any>).pipe(\n                  catchError(error => {\n                    action.onFailure(error);\n                    return of(null);\n                  })\n                )\n              )\n            )\n            .subscribe({\n              next: (response: any) => {\n                if (response !== null) {\n                  action.onSuccess(response);\n                }\n              },\n            })\n        );\n        break;\n      }\n      case 'exhaust': {\n        this.subscriptions.add(\n          this.clickMap\n            .get(action.actionId)\n            .subject.pipe(\n              exhaustMap((data: ClickSubscription) =>\n                (action.click(data.event, data.selectedRow) as Observable<any>).pipe(\n                  catchError(error => {\n                    action.onFailure(error);\n                    return of(null);\n                  })\n                )\n              )\n            )\n            .subscribe({\n              next: (response: any) => {\n                if (response !== null) {\n                  action.onSuccess(response);\n                }\n              },\n            })\n        );\n        break;\n      }\n      case 'disabled': {\n        this.subscriptions.add(\n          this.clickMap\n            .get(action.actionId)\n            .subject.pipe(\n              exhaustMap((data: ClickSubscription) =>\n                (action.click(data.event, data.selectedRow) as Observable<any>).pipe(\n                  catchError(error => {\n                    action.onFailure(error);\n                    action.disabled = false;\n                    return of(null);\n                  })\n                )\n              )\n            )\n            .subscribe({\n              next: (response: any) => {\n                if (response !== null) {\n                  action.onSuccess(response);\n                  action.disabled = false;\n                }\n              },\n            })\n        );\n        break;\n      }\n    }\n  }\n\n  reloadOnSuccess(): void {\n    this.subscriptions.add(\n      this.deps.layoutService.onReload$.pipe(filter(x => !!x)).subscribe(pageKey => {\n        if (pageKey === this.uniquePageName) {\n          this.refresh();\n        }\n      })\n    );\n  }\n\n  onOrderOfItemsChange($event: { [key: number | string]: any }) {\n    this.onRowOrderChange.emit($event);\n  }\n\n  private _loadTreeData() {\n    this._treeSubscription?.unsubscribe();\n    this.treeIsLoading = true;\n    this._treeSubscription = this.deps.http\n      .get(this.apiUrl, { headers: this.apiHeaders || {} })\n      .pipe(\n        takeUntilDestroyed(this._destroyRef),\n        finalize(() => {\n          this.treeIsLoading = false;\n        })\n      )\n      .subscribe((res: any) => {\n        this.treeRemoteData = Array.isArray(res) ? res : [res];\n      });\n  }\n\n  checkRowsByIndex(rows: number[]) {\n    this.gridComponent?.checkRowsByIndex(rows);\n  }\n\n  checkRowsByCondition(condition: (row: any) => boolean) {\n    this.gridComponent?.checkRowsByCondition(condition);\n  }\n\n  uncheckRowsByIndex(rows: number[]) {\n    this.gridComponent?.uncheckRowsByIndex(rows);\n  }\n}\n\nfunction generateInformationMessage(result: any): string {\n  if (result.informations) {\n    const arr = uniqueItemsFromArray(result.informations, 'informationMessage');\n    return arr.length > 0\n      ? arr\n          .map((i: any) => `${i.informationMessage} \\n `)\n          .reduce((p: any, c: any) => p + '\\n\\n' + c)\n      : 'آیتم با موفقیت حذف شد';\n  } else return 'آیتم با موفقیت حذف شد';\n}\n\nfunction uniqueItemsFromArray(array: any[], key: string) {\n  return Array.from(new Set(array.map(obj => obj[key]))).map(\n    k => array.find(obj => obj[key] === k)!\n  );\n}\n","<ui-access-node [accessNodeId]=\"viewAccessNodeId\">\n  <ng-template>\n    <section class=\"general-simple-list\">\n      <div class=\"general-simple-list__content\">\n        @if(hasTree){\n        <ui-tree\n          [nodes]=\"items || treeRemoteData\"\n          [idBinding]=\"treeIdBinding\"\n          [titleBinding]=\"treeTitleBinding\"\n          [expandedBinding]=\"treeExpandedBinding\"\n          [childrenBinding]=\"treeChildrenBinding\"\n          [expandDepth]=\"treeExpandDepth\"\n          [selectedNode]=\"treeSelectedNode\"\n          [sideIconTemplate]=\"treeSideIconTemplate\"\n          [moreMenuItems]=\"gridRowMoreActions\"\n          [hasGutter]=\"true\"\n          [showLoading]=\"treeIsLoading\"\n          [showEditButton]=\"!!editCallback\"\n          (editCallback)=\"editCallback($event)\"\n          (selectNodeCallback)=\"selectCallback($event)\"\n        ></ui-tree>\n        }@else{\n        <ui-grid\n          #grid\n          [config]=\"gridConfig\"\n          [identityFieldName]=\"identityFieldName\"\n          [items]=\"items\"\n          [showEditButton]=\"hasEditButton\"\n          [showDeleteButton]=\"hasRemoveButton\"\n          [childItemsPath]=\"childItemsPath\"\n          [hideODataDefaultLoading]=\"loadingIsShow\"\n          [oDataServer]=\"oDataServer\"\n          [oDataTable]=\"oDataTable\"\n          [oDataEntity]=\"oDataEntity\"\n          [oDataHttpHeaders]=\"oDataHttpHeaders\"\n          [oDataFilters]=\"oDataFilters\"\n          [multipleSelect]=\"isMultipleSelect\"\n          [moreMenuItems]=\"gridRowMoreActions\"\n          [iconActions]=\"gridRowIconActions\"\n          [gridHasColumnPicker]=\"true\"\n          [columnPickerInMenu]=\"true\"\n          (rowSelectCallback)=\"selectHandler($event)\"\n          (editCallback)=\"editHandlerAsync($event)\"\n          (deleteCallback)=\"removeHandler($event)\"\n          (loadCallback)=\"gridLoadHandler()\"\n          (loadStartCallback)=\"gridLoadStartHandler()\"\n          [hideCheckboxInCheckableGrid]=\"hideCheckboxInCheckableGrid\"\n          (checkCallback)=\"checkCallback($event)\"\n          [apiServer]=\"apiServer\"\n          [apiHeaders]=\"apiHeaders\"\n          [apiUrl]=\"apiUrl\"\n          [transformer]=\"transformer\"\n          [showFilters]=\"showFilters\"\n          [getDetailItemsCallBack]=\"getDetailItemsCallBack\"\n          [rowHasDetailCallBack]=\"rowHasDetailCallBack\"\n          [detailColumnsConfig]=\"detailColumnsConfig\"\n          [multiExpand]=\"multiExpand\"\n          [isReorderActive]=\"isReorderActive\"\n          [reorderCondition]=\"reorderCondition\"\n          [collapseRows]=\"gridCollapseRows\"\n          [collapseLevel]=\"gridCollapseLevel\"\n          (onRowOrderChange)=\"onOrderOfItemsChange($event)\"\n          [reorderFieldName]=\"reorderFieldName\"\n          [isActive]=\"isActive\"\n          [rowFormatCallback]=\"rowFormatCallback\"\n          [cellFormatCallback]=\"cellFormatCallback\"\n          (rowsClickedItemCalback)=\"gridItemClickHandler($event)\"\n          (rowsDoubleClicked)=\"gridItemDoubleClickHandler($event)\"\n          (columnsListChange)=\"gridColumnsChange($event)\"\n          [footerAggregateData]=\"footerAggregateData\"\n        ></ui-grid>\n        }\n        <ng-content></ng-content>\n      </div>\n      <span\n        class=\"general-simple-list__overlay\"\n        [class.general-simple-list__overlay--show]=\"disabled || loadingIsShow\"\n        ><ui-spinner [show]=\"loadingIsShow\"></ui-spinner\n      ></span>\n    </section>\n  </ng-template>\n</ui-access-node>\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { NgxIndexedDBService } from 'ngx-indexed-db';\nimport { Observable, forkJoin, map, mergeMap, of } from 'rxjs';\nimport { AppConfigService } from './app-config.service';\n\n@Injectable({ providedIn: 'root' })\nexport class FararuLogService {\n  constructor(\n    private dbService: NgxIndexedDBService,\n    private httpClient: HttpClient,\n    private appConfigService: AppConfigService\n  ) {}\n\n  public sendToServer(): Observable<any> {\n    return this.dbService\n      .getAllByIndex('log', 'is_sent', IDBKeyRange.only(0))\n      .pipe(\n        mergeMap((items) =>\n          this.httpClient.post('/api/support/log', items).pipe(mergeMap(() => of(items)))\n        ),\n        mergeMap((items) => {\n          if (items.length == 0) return of(true);\n          else\n            return forkJoin(\n              items.map((item: any) =>\n                this.dbService.update('log', { ...item, is_sent: 1 })\n              )\n            );\n        })\n      );\n  }\n\n  public deleteOldLogs(): Observable<any> {\n    const today = new Date();\n    const tenDaysBefore = new Date(\n      today.getFullYear(),\n      today.getMonth(),\n      today.getDate() - 10\n    );\n    return this.dbService\n      .getAllKeysByIndex(\n        'log',\n        'unixtime',\n        IDBKeyRange.upperBound(tenDaysBefore.getTime(), true)\n      )\n      .pipe(\n        map((keys) => keys.map((k) => k.primaryKey)),\n        mergeMap((keys) => this.dbService.bulkDelete('log', keys))\n      );\n  }\n\n  public getLogs(): Observable<LoggerMetaData[]> {\n    const today = new Date();\n    const tenDaysBefore = new Date(\n      today.getFullYear(),\n      today.getMonth(),\n      today.getDate() - 10\n    );\n\n    return this.dbService.getAllByIndex<LoggerMetaData>(\n      'log',\n      'unixtime',\n      IDBKeyRange.lowerBound(tenDaysBefore.getTime(), true)\n    );\n  }\n}\n\nexport type LoggerMetaData = {\n  message?: any;\n  is_sent: boolean;\n  level: LoggerLevel;\n  timestamp?: string;\n  fileName?: string;\n  lineNumber?: number;\n  columnNumber?: number;\n};\n\nexport enum LoggerLevel {\n  TRACE = 0,\n  DEBUG = 1,\n  INFO = 2,\n  LOG = 3,\n  WARN = 4,\n  ERROR = 5,\n  FATAL = 6,\n  OFF = 7,\n}\n","import { HttpClient, HttpEvent, HttpEventType, HttpResponse } from '@angular/common/http';\nimport { Component, ElementRef, OnInit, ViewChild } from '@angular/core';\nimport * as wjcSheet from '@grapecity/wijmo.grid.sheet';\nimport { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap';\nimport { GeneralODataTableName, HttpHeaderNames } from '../../../constants';\nimport { GridColumnDataTypes } from '../../../enums';\nimport { GeneralActionButtonInterface, OdataHttpHeaders } from '../../../models';\nimport { ExcelTemplate } from '../../../models/aditional-report';\nimport { GridConfigInterface } from '../../../models/grid-config.interface';\nimport { AppConfigService } from '../../../services';\nimport { ExcelService } from '../../../services/excel.service';\nimport { createParamHttpHeaderValue } from '../../../utils';\nimport { ModalComponentInterface, ModalService } from '../../modal/modal.service';\nimport { BehaviorSubject, finalize, Observable, of, Subscription } from 'rxjs';\nimport { ConfigSandbox } from '../../../store/sandboxes/config.sandbox';\nimport { FararuToastService } from '../../toast';\n\nexport type WorksheetPickerDataType = {\n  templates: ExcelTemplate[];\n  selectedTemplate?: ExcelTemplate;\n};\n\n@Component({\n  selector: 'app-general-worksheet-picker-modal',\n  templateUrl: './general-worksheet-picker-modal.component.html',\n  styleUrls: ['./general-worksheet-picker-modal.component.scss'],\n})\nexport class GeneralWorksheetPickerModalComponent\n  implements OnInit, ModalComponentInterface<WorksheetPickerDataType>\n{\n  fieldItems: any[];\n  gridConfig: GridConfigInterface;\n  gridODataHttpHeaders?: OdataHttpHeaders;\n  uploadProgress: BehaviorSubject<number | undefined> = new BehaviorSubject(undefined);\n  uploadRequest: Subscription | undefined;\n  selectedFile: File;\n  menuItemExcelTemplateActions: { text: string; click: (event: any, args: any) => void }[];\n  selectedTemplate: ExcelTemplate;\n  generalOdataTable = GeneralODataTableName;\n  oDataServer = this._config.config.api.baseUrl;\n  cancelBtnText: string;\n\n  constructor(\n    private modalService: ModalService,\n    private activeModal: NgbActiveModal,\n    private excelService: ExcelService,\n    private http: HttpClient,\n    private _config: AppConfigService,\n    private _configSandbox: ConfigSandbox,\n    private _toast: FararuToastService\n  ) {}\n  data: WorksheetPickerDataType;\n\n  onTemplateChanged($event: ExcelTemplate) {\n    this.selectedTemplate = $event;\n    if ($event)\n      this.gridODataHttpHeaders = {\n        [HttpHeaderNames.FETCH_REASON]: '1',\n        [HttpHeaderNames.PARAM]: createParamHttpHeaderValue([\n          { keyName: 'ImportFileId', keyValue: this.selectedTemplate?.importFileId },\n        ]),\n      };\n    else this.gridODataHttpHeaders = undefined;\n  }\n\n  onChangeHandler($event: Event) {\n    this.selectedFile = this.input.nativeElement.files[0];\n    if (!this.selectedFile) return;\n    const fileName = this.selectedFile.name;\n    const fileExtension = fileName.split('.').pop()?.toLowerCase();\n\n    if (fileExtension === 'csv') {\n      this.selectedFile.text().then(csvString => {\n        this.flex.loadAsync(this.excelService.csvToExcel(csvString, 'test', false));\n      });\n    } else if (fileExtension === 'xlsx') {\n      this.flex.loadAsync(this.selectedFile);\n    } else {\n      this.flex.clear();\n    }\n  }\n\n  ngOnInit(): void {\n    this.uploadProgress.subscribe(p => {\n      if (p == undefined) this.cancelBtnText = `بستن`;\n      else if (p < 100) {\n        this.cancelBtnText = `انصراف (${p}٪)`;\n      } else {\n        this.cancelBtnText = 'انصراف';\n      }\n    });\n    this.gridConfig = {\n      columns: {\n        columns: [\n          { binding: 'fieldName', header: 'نام فیلد', dataType: GridColumnDataTypes.STRING },\n          { binding: 'fieldTitle', header: 'عنوان فیلد', dataType: GridColumnDataTypes.STRING },\n          { binding: 'priority', header: 'اولویت', dataType: GridColumnDataTypes.NUMBER },\n          { binding: 'isMandatory', header: 'اجباری', dataType: GridColumnDataTypes.BOOLEAN },\n          { binding: 'dataTypeTitle', header: 'نوع فیلد', dataType: GridColumnDataTypes.STRING },\n        ],\n      },\n    };\n\n    if (this.data.selectedTemplate) this.onTemplateChanged(this.data.selectedTemplate);\n  }\n\n  @ViewChild('flex', { static: true }) flex: wjcSheet.FlexSheet;\n  initializeFlexSheet(flex: any) {}\n\n  @ViewChild('input') input: ElementRef<HTMLInputElement>;\n  load() {\n    this.input.nativeElement.click();\n  }\n\n  beforeCloseCallBack: () => boolean | Promise<boolean> = () => {\n    const p = this.uploadProgress.getValue();\n    if (p != undefined) {\n      if (p < 100) {\n        this.uploadRequest?.unsubscribe();\n        this.uploadProgress.next(undefined);\n        return false;\n      } else {\n        this.modalService.showAlert({\n          type: 'warning',\n          description: 'فایل ۱۰۰درصد بارگزاری شده است لطفا منتظر بمانید',\n        });\n        return false;\n      }\n    } else return true;\n  };\n\n  onFileSelected() {\n    this.load();\n  }\n\n  onTemplateCreated($event: any) {\n    this.http\n      .get(`/api/general/downloadtemplate?fileId=${this.selectedTemplate.importFileId}`, {\n        responseType: 'blob',\n        observe: 'response',\n      })\n      .subscribe((response: HttpResponse<Blob>) => {\n        const contentDisposition = response.headers.get('content-disposition');\n        let filename = this.selectedTemplate.importFileId + '.xlsx';\n\n        if (contentDisposition) {\n          const filenameStarMatch = contentDisposition.match(/filename\\*\\s*=\\s*UTF-8''([^;]*)/i);\n          if (filenameStarMatch && filenameStarMatch[1]) {\n            filename = decodeURIComponent(filenameStarMatch[1]);\n          } else {\n            // Fallback to filename=\"example.csv\"\n            const filenameMatch = contentDisposition.match(/filename\\s*=\\s*\"?([^\"]+)\"?/i);\n            if (filenameMatch && filenameMatch[1]) {\n              filename = filenameMatch[1];\n            }\n          }\n        }\n\n        const blob = new Blob([response.body!], { type: 'text/csv;charset=utf-8;' });\n        const objectUrl = URL.createObjectURL(blob);\n\n        const a = document.createElement('a');\n        a.href = objectUrl;\n        a.download = filename;\n        document.body.appendChild(a); // For Firefox\n        a.click();\n        document.body.removeChild(a);\n        URL.revokeObjectURL(objectUrl);\n      });\n  }\n\n  saveClickCallback = async () => {\n    if (!this.selectedFile) {\n      this.modalService.showAlert({ type: 'error', description: 'لطفا ابتدا یک فایل انتخاب کنید' });\n      return;\n    }\n\n    let fd = new FormData();\n    fd.append('spname', this.selectedTemplate.importFileSPName);\n    fd.append('hasresultmsg', 'true');\n    fd.append('file', this.selectedFile);\n    this._configSandbox.showGlobalLoading();\n    this.uploadRequest = this.http\n      .post('/api/general/post', fd, { reportProgress: true, observe: 'events' })\n      .pipe(finalize(() => this._configSandbox.hideGlobalLoading()))\n      .subscribe({\n        next: (\n          event: HttpEvent<{ messageType: number; resultCode: number; resultMessage: string }[]>\n        ) => {\n          if (event.type === HttpEventType.UploadProgress) {\n            this.uploadProgress.next(Math.round((event.loaded / event.total) * 100));\n          } else if (event.type === HttpEventType.Response) {\n            this.uploadProgress.next(undefined);\n            const result = event.body;\n            if (result[0].resultCode == 1) {\n              this._toast.show({ type: 'error', text: result[0].resultMessage });\n            } else {\n              this._toast.show({ type: 'success', text: result[0].resultMessage });\n              this.activeModal.close();\n            }\n          }\n        },\n        error: err => {\n          this.uploadProgress.next(undefined);\n        },\n      });\n  };\n}\n","<modal-wrapper\n  [beforeCloseCallback]=\"beforeCloseCallBack\"\n  [saveButtonText]=\"'بارگزاری'\"\n  [cancelButtonText]=\"cancelBtnText\"\n  (saveClickCallback)=\"saveClickCallback()\"\n  [title]=\"'ثبت از فایل'\"\n  [showSaveButtonLoading]=\"(uploadProgress | async) != undefined\"\n>\n  <div class=\"header\">\n    <ui-identity-selector\n      [disabled]=\"uploadProgress != undefined\"\n      labelType=\"float\"\n      [inputField]=\"'importFileId'\"\n      [secondInputField]=\"'importFileTitle'\"\n      [resultField]=\"'importFileId'\"\n      [gridFields]=\"[\n        {\n          header: 'شناسه',\n          binding: 'importFileId'\n        },\n        {\n          header: 'نام قالب',\n          binding: 'importFileTitle'\n        }\n      ]\"\n      [items]=\"data.templates\"\n      [label]=\"'قالب فایل'\"\n      [value]=\"selectedTemplate?.importFileId\"\n      [valueData]=\"selectedTemplate\"\n      (changeCallback)=\"onTemplateChanged($event)\"\n    />\n    <ui-button\n      [matchParent]=\"true\"\n      (clickCallback)=\"onTemplateCreated($event)\"\n      [color]=\"'primary'\"\n      varient=\"outline\"\n      [disabled]=\"!this.selectedTemplate || (uploadProgress | async) != undefined\"\n      >ساخت قالب</ui-button\n    >\n\n    <ui-textbox\n      readonly=\"true\"\n      [direction]=\"'ltr'\"\n      labelType=\"float\"\n      [label]=\"'مسیر فایل'\"\n      [value]=\"this.selectedFile?.name || ''\"\n      (changeCallback)=\"onTemplateChanged($event)\"\n    />\n    <ui-button\n      [disabled]=\"!this.selectedTemplate || (uploadProgress | async) != undefined\"\n      [matchParent]=\"true\"\n      (clickCallback)=\"onFileSelected()\"\n      [color]=\"'primary'\"\n      varient=\"outline\"\n      >انتخاب فایل</ui-button\n    >\n  </div>\n\n  <app-message\n    [hasActionButton]=\"false\"\n    [hasCloseButton]=\"false\"\n    [type]=\"'info'\"\n    [description]=\"'اولین سطر باید شامل نام فیلدها باشد'\"\n  ></app-message>\n  <section class=\"sheet-container my-2\">\n    <wj-flex-sheet\n      #flex\n      [isReadOnly]=\"true\"\n      [allowAddNew]=\"false\"\n      [allowResizing]=\"false\"\n      [allowDelete]=\"false\"\n      [allowMerging]=\"false\"\n      [allowSorting]=\"false\"\n      [isTabHolderVisible]=\"false\"\n      [headersVisibility]=\"false\"\n      (initialized)=\"initializeFlexSheet(flex)\"\n    >\n    </wj-flex-sheet>\n  </section>\n\n  <section class=\"grid-container mb-1\">\n    <ui-grid\n      [config]=\"gridConfig\"\n      [oDataServer]=\"oDataServer\"\n      [oDataEntity]=\"'ImportFileFieldModel'\"\n      [oDataHttpHeaders]=\"gridODataHttpHeaders\"\n      [oDataTable]=\"gridODataHttpHeaders ? generalOdataTable : null\"\n    >\n    </ui-grid>\n  </section>\n\n  <input #input type=\"file\" id=\"importFile\" (change)=\"onChangeHandler($event)\" />\n</modal-wrapper>\n","import {\n  Component,\n  ElementRef,\n  EventEmitter,\n  Input,\n  OnInit,\n  Output,\n  TemplateRef,\n} from '@angular/core';\n\n@Component({\n  selector: 'ui-pull-down',\n  templateUrl: './pull-down.component.html',\n  styleUrls: ['./pull-down.component.scss'],\n})\nexport class PullDownComponent implements OnInit {\n  @Input() toggler: TemplateRef<any>;\n  @Input() content: TemplateRef<any>;\n  @Input() alignment: string = 'right';\n  @Input() reverseAlign: boolean = false;\n  @Input() closeByContentClick: boolean = false;\n\n  @Output() changeCallback = new EventEmitter<boolean>();\n\n  isOpen?: boolean;\n\n  private readyToClose: boolean;\n\n  constructor(private _eref: ElementRef) {}\n\n  ngOnInit(): void {}\n\n  onDocumentClick(event: any) {\n    if (this.isOpen) {\n      if (this.readyToClose) {\n        this.isOpen = false;\n        this.readyToClose = false;\n      } else {\n        this.readyToClose = true;\n      }\n    }\n  }\n\n  togglerHandler() {\n    this.isOpen = !this.isOpen;\n    if (this.isOpen) {\n      setTimeout(() => {\n        document.addEventListener('click', this.documentClickHandler);\n      }, 10);\n    }\n    this.changeCallback.emit(this.isOpen);\n  }\n\n  contentClickHandler(event: Event) {\n    if (!this.closeByContentClick) {\n      event.stopPropagation();\n    }\n  }\n\n  private documentClickHandler = () => {\n    this.isOpen = false;\n    this.changeCallback.emit(false);\n    document.removeEventListener('click', this.documentClickHandler);\n  };\n}\n","<div class=\"ui-pulldown\" [class.ui-pulldown--open]=\"isOpen\">\n  <div (click)=\"togglerHandler()\">\n    <ng-container *ngTemplateOutlet=\"toggler\"></ng-container>\n  </div>\n  <div\n    class=\"ui-pulldown__content\"\n    (click)=\"contentClickHandler($event)\"\n    [ngClass]=\"{\n      'ui-pulldown__content--start': alignment === 'right' && !reverseAlign,\n      'ui-pulldown__content--end': alignment === 'left' || reverseAlign\n    }\"\n  >\n    <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n  </div>\n</div>\n","import {\n  AfterViewInit,\n  Component,\n  ElementRef,\n  EventEmitter,\n  HostListener,\n  Input,\n  OnChanges,\n  OnInit,\n  Output,\n  SimpleChanges,\n  ViewChild,\n} from '@angular/core';\nimport { FullscreenTypes } from '../../../enums/fullscreen-types';\n\n@Component({\n  selector: 'ui-screen-separator',\n  templateUrl: './screen-separator.component.html',\n  styleUrls: ['./screen-separator.component.scss'],\n})\nexport class ScreenSeparatorComponent implements AfterViewInit, OnChanges, OnInit {\n  @Input() hideArrowButtons: boolean;\n  @Input() fullscreenType: FullscreenTypes | string = FullscreenTypes.NONE;\n  @Input() topSlicePercent?: number;\n  @Input() autoSize?: 'top' | 'bottom';\n  @Input() sideSpacing?: 'top' | 'bottom' | 'both';\n  @Input() hiddenOverflow?: 'top' | 'bottom' | 'both';\n  @Input() noAutoSizeInWindowResize?: boolean;\n\n  @Output() changeCallback = new EventEmitter<FullscreenTypes>();\n\n  @ViewChild('topSection', { static: false })\n  topSectionRef: ElementRef<HTMLDivElement>;\n  @ViewChild('bottomSection', { static: false })\n  bottomSectionRef: ElementRef<HTMLDivElement>;\n  @ViewChild('knopWrap', { static: false })\n  knopWrapRef: ElementRef<HTMLDivElement>;\n\n  isDragging: boolean;\n  hostElementRec: any;\n  knopDraggingY: number;\n\n  private _resizeTimeoutRef?: any;\n\n  constructor(private hostElementRef: ElementRef<HTMLDivElement>) {}\n\n  ngOnInit(): void {\n    const resizeObserver = new ResizeObserver(entries => {\n      if (this.noAutoSizeInWindowResize) return;\n      clearTimeout(this._resizeTimeoutRef);\n      this._resizeTimeoutRef = setTimeout(() => {\n        this._adjustAutoSize();\n      }, 200);\n    });\n    resizeObserver.observe(this.hostElementRef.nativeElement);\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (!this.autoSize && !this.topSlicePercent) {\n      this.topSlicePercent = 50;\n    }\n  }\n\n  ngAfterViewInit(): void {\n    setTimeout(() => {\n      this._adjustAutoSize();\n    }, 0);\n  }\n\n  public get FullscreenTypes(): typeof FullscreenTypes {\n    return FullscreenTypes;\n  }\n\n  mouseDown(event: any) {\n    const knobRec = event.target.getBoundingClientRect();\n    this.isDragging = true;\n    this.hostElementRec = this.hostElementRef.nativeElement.getBoundingClientRect();\n    this.knopDraggingY = knobRec.height / 2 - (event.pageY - knobRec.y);\n    event.preventDefault();\n  }\n\n  @HostListener('document:mousemove', ['$event'])\n  mouseMove(event: any) {\n    if (!this.isDragging) return;\n    const deltaY = event.pageY + this.knopDraggingY - this.hostElementRec.y;\n    const percent = Math.min(\n      100,\n      Math.max(0, parseFloat(((deltaY / this.hostElementRec.height) * 100).toFixed(2)))\n    );\n    this.topSlicePercent = percent;\n  }\n\n  @HostListener('document:mouseup')\n  mouseUp() {\n    this.isDragging = false;\n  }\n\n  toggleFullscreenMode(fullscreenMode: FullscreenTypes) {\n    if (this.fullscreenType == FullscreenTypes.NONE) {\n      this.fullscreenType = fullscreenMode;\n    } else {\n      this.fullscreenType = FullscreenTypes.NONE;\n    }\n    this.changeCallback.emit(this.fullscreenType);\n  }\n\n  private _adjustAutoSize() {\n    if (!this.autoSize) return;\n    const percent = this._getSizePercent();\n    this.topSlicePercent = this.autoSize == 'top' ? percent : 100 - percent;\n  }\n\n  private _getSizePercent() {\n    const element =\n      this.autoSize == 'top'\n        ? this.topSectionRef.nativeElement\n        : this.bottomSectionRef.nativeElement;\n    let padding = 0;\n    if (this.sideSpacing == 'both' || this.sideSpacing == this.autoSize) {\n      const styles = getComputedStyle(element);\n      padding = parseInt(styles.paddingTop) + parseInt(styles.paddingBottom);\n    }\n    const scrollHeight = element.querySelector(':scope > *').scrollHeight + padding;\n    const hostheight =\n      this.hostElementRef.nativeElement.offsetHeight - this.knopWrapRef.nativeElement.offsetHeight;\n    return Math.min((scrollHeight / hostheight) * 100, 100);\n  }\n}\n","<div\n  (mousemove)=\"mouseMove($event)\"\n  class=\"screen-separator\"\n  [class.screen-separator--top-full]=\"fullscreenType == FullscreenTypes.TOP\"\n  [class.screen-separator--bottom-full]=\"fullscreenType == FullscreenTypes.BOTTOM\"\n  [class.screen-separator--top-auto-size]=\"autoSize === 'top'\"\n  [class.screen-separator--bottom-auto-size]=\"autoSize === 'bottom'\"\n>\n  <div class=\"screen-separator__row\" [style.flex-basis.%]=\"topSlicePercent\">\n    <div\n      #topSection\n      class=\"screen-separator__content\"\n      [class.screen-separator__content--has-side-spacing]=\"\n        sideSpacing === 'top' || sideSpacing === 'both'\n      \"\n      [class.screen-separator__content--has-hidden-overflow]=\"\n        hiddenOverflow === 'top' || hiddenOverflow === 'both'\n      \"\n    >\n      <ng-content select=\"[top]\"></ng-content>\n    </div>\n  </div>\n  <div #knopWrap class=\"screen-separator__knob-wrap\">\n    <span\n      class=\"screen-separator__knob\"\n      (mousedown)=\"mouseDown($event)\"\n      [hidden]=\"fullscreenType != FullscreenTypes.NONE\"\n    ></span>\n    <ng-container *ngIf=\"!hideArrowButtons\">\n      <ui-fararu-icon\n        class=\"screen-separator__max-min-button screen-separator__max-min-button--top\"\n        [class.screen-separator__max-min-button--active]=\"fullscreenType != FullscreenTypes.NONE\"\n        [name]=\"'section-up'\"\n        [size]=\"'x2'\"\n        [hidden]=\"\n          fullscreenType == FullscreenTypes.BOTTOM ||\n          (fullscreenType == FullscreenTypes.NONE && topSlicePercent < 7)\n        \"\n        (click)=\"toggleFullscreenMode(FullscreenTypes.BOTTOM)\"\n      ></ui-fararu-icon>\n      <ui-fararu-icon\n        class=\"screen-separator__max-min-button screen-separator__max-min-button--bottom\"\n        [class.screen-separator__max-min-button--active]=\"fullscreenType != FullscreenTypes.NONE\"\n        [name]=\"'section-down'\"\n        [size]=\"'x2'\"\n        [hidden]=\"\n          fullscreenType == FullscreenTypes.TOP ||\n          (fullscreenType == FullscreenTypes.NONE && topSlicePercent > 93)\n        \"\n        (click)=\"toggleFullscreenMode(FullscreenTypes.TOP)\"\n      ></ui-fararu-icon>\n    </ng-container>\n  </div>\n  <div class=\"screen-separator__row\" [style.flex-basis.%]=\"100 - topSlicePercent\">\n    <div\n      #bottomSection\n      class=\"screen-separator__content\"\n      [class.screen-separator__content--has-side-spacing]=\"\n        sideSpacing === 'bottom' || sideSpacing === 'both'\n      \"\n      [class.screen-separator__content--has-hidden-overflow]=\"\n        hiddenOverflow === 'bottom' || hiddenOverflow === 'both'\n      \"\n    >\n      <ng-content select=\"[bottom]\"></ng-content>\n    </div>\n  </div>\n</div>\n","import {\n  AfterContentInit,\n  Component,\n  ContentChild,\n  Input,\n  OnChanges,\n  OnInit,\n  SimpleChanges,\n  TemplateRef,\n} from '@angular/core';\nimport { OverflowType } from '../../../../types/overflow.type';\nimport { IconNameType } from '../../../../types/icon-name.type';\n\nexport interface TabComponentInterface {\n  id?: string;\n  text: string;\n  iconName?: IconNameType;\n  subTitle?: string;\n}\n\n@Component({\n  selector: 'ui-tab',\n  templateUrl: './tab.component.html',\n})\nexport class TabComponent implements TabComponentInterface, OnInit, OnChanges, AfterContentInit {\n  @Input() id: string;\n  @Input() text: string;\n  @Input() iconName: IconNameType;\n  @Input() subTitle: string;\n  @Input() active: boolean = false;\n  @Input() data: any;\n  @Input() contentHeight?: string;\n  @Input() contentOverflow?: OverflowType;\n  @Input() lazy: boolean = false;\n  activatedBefore: boolean = false;\n  activated: boolean = false;\n  @ContentChild(TemplateRef) contentTemplate?: TemplateRef<any>;\n\n  constructor() {}\n\n  ngOnInit(): void {}\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (changes['active']) {\n      this.activate(this.active);\n    }\n  }\n\n  activate(active: boolean) {\n    if (active) {\n      this.activatedBefore = true;\n      this.activated = true;\n    } else {\n      this.activated = false;\n    }\n  }\n\n  ngAfterContentInit(): void {\n    // if (this.contentTemplate instanceof TemplateRef) this.lazy = true;\n    // if (!this.contentTemplate && this.implicitTemplateRef) {\n    //   // If no explicit <ng-template>, use the implicit template\n    //   this.contentTemplate = this.implicitTemplateRef;\n    // }\n  }\n}\n","<div\n  [hidden]=\"!activated\"\n  class=\"ui-tab__content\"\n  [style.height]=\"contentHeight\"\n  [style.overflow]=\"contentOverflow\"\n>\n  <ng-container *ngIf=\"activatedBefore && lazy\">\n    <ng-container *ngTemplateOutlet=\"contentTemplate\"></ng-container>\n  </ng-container>\n\n  <ng-container *ngIf=\"!lazy\"> <ng-content></ng-content> </ng-container>\n</div>\n","import {\n  AfterContentInit,\n  AfterViewInit,\n  Component,\n  ContentChildren,\n  ElementRef,\n  EventEmitter,\n  Input,\n  OnChanges,\n  Output,\n  QueryList,\n  SimpleChanges,\n  ViewChild,\n} from '@angular/core';\nimport { OverflowType } from '../../../types/overflow.type';\nimport { propertyOf } from '../../../utils/property-of';\nimport { TabComponent } from './tab/tab.component';\n\n@Component({\n  selector: 'ui-tabs',\n  templateUrl: './tabs.component.html',\n  styleUrls: ['./tabs.component.scss'],\n})\nexport class TabsComponent implements AfterContentInit, OnChanges, AfterViewInit {\n  @Input() tabEllipsis: boolean;\n  @Input() selectedTabIndexFromOutside: number;\n  @Input() height?: string;\n  @Input() overflow?: OverflowType;\n  @Input() hideBorder?: boolean;\n  @Input() hideGutter?: boolean;\n  @Input() hideBackground?: boolean;\n\n  @ContentChildren(TabComponent)\n  tabs: QueryList<TabComponent>;\n\n  @Output() tabSelectedCallback = new EventEmitter<any>();\n\n  @ViewChild('container') container!: ElementRef<HTMLDivElement>;\n\n  scrollStep: number = 200; // Adjust the scroll step as needed\n\n  hasOverFlowButtons = false;\n\n  isRtl = document.body.getAttribute('dir') == 'rtl';\n\n  isPrevScrollButtonDisabled = true;\n  isNextScrollButtonDisabled = true;\n\n  private _checkButtonDisabledTimeout: any;\n\n  // contentChildren are set\n  ngAfterContentInit() {\n    // get all active tabs\n    let activeTabs = this.tabs.filter(tab => tab.activated);\n\n    // if there is no active tab set, activate the first\n    if (activeTabs.length === 0 && this.tabs.length > 0) {\n      setTimeout(() => {\n        this.selectTab(this.tabs.first);\n      }, 0);\n    }\n  }\n\n  ngAfterViewInit(): void {\n    setTimeout(() => {\n      this.checkOverflow();\n      this.checkButtonDisabled();\n    }, 0);\n    const resizeObserver = new ResizeObserver(() => {\n      this.checkOverflow();\n      this.checkButtonDisabled();\n    });\n\n    resizeObserver.observe(this.container.nativeElement);\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    const selectedTabIndexFromOutside =\n      changes[propertyOf<TabsComponent>('selectedTabIndexFromOutside')];\n    if (selectedTabIndexFromOutside && selectedTabIndexFromOutside.currentValue != undefined) {\n      setTimeout(() => {\n        this.activeSelectedTabFromOutside(selectedTabIndexFromOutside.currentValue);\n      }, 0);\n    }\n  }\n\n  selectTab(tab: TabComponent) {\n    // deactivate all tabs\n    this.tabs.toArray().forEach(tab => tab.activate(false));\n\n    // activate the tab the user has clicked on.\n    tab.activate(true);\n    this.tabSelectedCallback.emit(tab);\n  }\n\n  activeSelectedTabFromOutside = (selectedTabIndex: number) => {\n    this.tabs?.toArray().forEach((tab, index) => {\n      tab.activate(index == selectedTabIndex ? true : false);\n    });\n  };\n\n  checkOverflow() {\n    const element = this.container.nativeElement;\n    this.hasOverFlowButtons = element.clientWidth < element.scrollWidth;\n  }\n\n  prevHandler() {\n    this.container.nativeElement.scroll({\n      top: 0,\n      left: this.container.nativeElement.scrollLeft + this.scrollStep * (this.isRtl ? 1 : -1),\n      behavior: 'smooth',\n    });\n    clearTimeout(this._checkButtonDisabledTimeout);\n    this._checkButtonDisabledTimeout = setTimeout(() => {\n      this.checkButtonDisabled();\n    }, 400);\n  }\n\n  nextHandler() {\n    this.container.nativeElement.scroll({\n      top: 0,\n      left: this.container.nativeElement.scrollLeft - this.scrollStep * (this.isRtl ? 1 : -1),\n      behavior: 'smooth',\n    });\n    clearTimeout(this._checkButtonDisabledTimeout);\n    this._checkButtonDisabledTimeout = setTimeout(() => {\n      this.checkButtonDisabled();\n    }, 400);\n  }\n\n  private checkButtonDisabled() {\n    const element = this.container.nativeElement;\n    const scrollLeft = Math.abs(element.scrollLeft);\n    const scrollWidth = element.scrollWidth;\n    const offsetWidth = element.offsetWidth;\n\n    this.isPrevScrollButtonDisabled = true;\n    this.isNextScrollButtonDisabled = true;\n\n    if (scrollLeft - 1 > 0) {\n      this.isPrevScrollButtonDisabled = false;\n    }\n\n    if (scrollWidth - 1 > offsetWidth + scrollLeft) {\n      this.isNextScrollButtonDisabled = false;\n    }\n  }\n}\n","<section\n  class=\"ui-tab\"\n  [class.ui-tab--hide-border]=\"hideBorder\"\n  [class.ui-tab--hide-gutter]=\"hideGutter\"\n  [class.ui-tab--hide-background]=\"hideBackground\"\n  [style.height]=\"height\"\n  [style.overflow]=\"overflow\"\n>\n  <div class=\"ui-tab__header\">\n    <div\n      class=\"ui-tab__header-button-wrap ui-tab__header-button-wrap--start\"\n      *ngIf=\"hasOverFlowButtons\"\n    >\n      <button\n        type=\"button\"\n        class=\"ui-tab__header-button\"\n        [class.ui-tab__header-button--disabled]=\"isPrevScrollButtonDisabled\"\n        (click)=\"prevHandler()\"\n      >\n        <ui-fararu-icon\n          class=\"flip-in-rtl\"\n          [name]=\"'arrow-left'\"\n          [size]=\"'x2'\"\n          [color]=\"'content-tertiary'\"\n        ></ui-fararu-icon>\n      </button>\n    </div>\n    <div class=\"ui-tab__actions\" #container>\n      <div class=\"ui-tab__buttons\" [class.ui-tab__buttons--show-side-spacing]=\"hasOverFlowButtons\">\n        <button\n          type=\"button\"\n          class=\"ui-tab__button\"\n          [title]=\"tab.text\"\n          *ngFor=\"let tab of tabs\"\n          (click)=\"selectTab(tab)\"\n          [class.ui-tab__button--active]=\"tab.activated\"\n          [class.ui-tab__button--ellipsis]=\"tabEllipsis\"\n        >\n          <ui-fararu-icon\n            *ngIf=\"tab.iconName\"\n            [name]=\"tab.iconName\"\n            [size]=\"'x2'\"\n            [color]=\"tab.activated ? 'primary' : null\"\n          ></ui-fararu-icon>\n          <span class=\"ui-tab__button-content\">\n            <span class=\"ui-tab__button-title\">{{ tab.text }}</span>\n            <span class=\"ui-tab__button-sub-title\" *ngIf=\"tab.subTitle\">{{ tab.subTitle }}</span>\n          </span>\n        </button>\n      </div>\n    </div>\n    <div\n      class=\"ui-tab__header-button-wrap ui-tab__header-button-wrap--end\"\n      *ngIf=\"hasOverFlowButtons\"\n    >\n      <button\n        type=\"button\"\n        class=\"ui-tab__header-button\"\n        [class.ui-tab__header-button--disabled]=\"isNextScrollButtonDisabled\"\n        (click)=\"nextHandler()\"\n      >\n        <ui-fararu-icon\n          class=\"flip-in-rtl\"\n          [name]=\"'arrow-right'\"\n          [size]=\"'x2'\"\n          [color]=\"'content-tertiary'\"\n        ></ui-fararu-icon>\n      </button>\n    </div>\n  </div>\n\n  <ng-container\n    ><section class=\"ui-tab__container\">\n      <ng-content></ng-content></section\n  ></ng-container>\n</section>\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { map, Observable } from 'rxjs';\nimport { GeneralShowPlanInterface } from '../models/general-show-plan.interface';\n\n@Injectable({ providedIn: 'root' })\nexport class GridLayoutApiService {\n  constructor(private readonly _http: HttpClient) {}\n\n  list(gridName: string, uniquePageName: string): Observable<GeneralShowPlanInterface[]> {\n    return this._http.get<GeneralShowPlanInterface[]>(\n      `/api/gridlayout/getLayout?GridName=${gridName}&type=${uniquePageName}`\n    );\n  }\n\n  add(data: GeneralShowPlanInterface): Observable<number> {\n    return this._http.post('/api/gridlayout/add', [{ ...data }]).pipe(\n      map((res: any) => {\n        let id: number | null = null;\n        if (res?.data && res.data instanceof Array && res.data.length > 0) {\n          id = res.data[0];\n        } else if (res.data.item1 && res.data.item1 > 0) {\n          id = res.data.item1[0];\n        }\n        return id;\n      })\n    );\n  }\n\n  update(data: GeneralShowPlanInterface) {\n    return this._http.post('/api/gridlayout/update', { ...data });\n  }\n\n  remove(data: GeneralShowPlanInterface) {\n    return this._http.post(`/api/gridlayout/delete`, { id: data.id });\n  }\n}\n","import {\n  Component,\n  OnInit,\n  Input,\n  Output,\n  EventEmitter,\n  ViewChild,\n  ElementRef,\n  OnDestroy,\n} from '@angular/core';\nimport { Router } from '@angular/router';\nimport { GridComponent } from '../../ui/grid/grid.component';\nimport { GeneralShowPlanInterface } from '../../../models/general-show-plan.interface';\nimport { finalize, Subscription } from 'rxjs';\nimport { TextboxComponent } from '../../ui/textbox/textbox.component';\nimport { GridLayoutApiService } from '../../../api/grid-layout-api.service';\n\n@Component({\n  selector: 'app-simple-list-show-plan',\n  templateUrl: './simple-list-show-plan.component.html',\n  styleUrls: ['./simple-list-show-plan.component.scss'],\n})\nexport class SimpleListShowPlanComponent implements OnInit, OnDestroy {\n  @Input() uniquePageName: string;\n  @Input() gridName: string;\n  @Input() gridComponent: GridComponent;\n\n  @Output() progressCallback: EventEmitter<boolean> = new EventEmitter<boolean>();\n  @Output()\n  currentShowPlanChangeCallback: EventEmitter<GeneralShowPlanInterface> =\n    new EventEmitter<GeneralShowPlanInterface>();\n  @Output() updateCurrentShowPlanProgressCallback = new EventEmitter<boolean>();\n\n  @ViewChild('textboxRef', { static: false }) textboxRef: TextboxComponent;\n  @ViewChild('listRef', { static: false }) listRef: ElementRef<HTMLUListElement>;\n\n  list: GeneralShowPlanInterface[] = [];\n  currentShowPlan?: GeneralShowPlanInterface | null;\n  isNewMode?: boolean;\n  newShowPlanName?: string;\n  editedShowPlan?: GeneralShowPlanInterface;\n  loadingIsShow: boolean = true;\n  saveIsProgressing?: boolean;\n  removeIsProgressing?: { [key: GeneralShowPlanInterface['id']]: boolean } = {};\n  updateIsProgressing?: { [key: GeneralShowPlanInterface['id']]: boolean } = {};\n\n  private _loadSubscription?: Subscription;\n  private _newSaveSubscription?: Subscription;\n  private _editSaveSubscription?: Subscription;\n  private _lastUpdateedTime?: { [key: GeneralShowPlanInterface['id']]: number } = {};\n  private _selectEventFiredDic?: { [key: GeneralShowPlanInterface['id']]: boolean } = {};\n  private _isSelecting?: boolean;\n\n  constructor(\n    private readonly _router: Router,\n    private readonly _gridLayoutApiService: GridLayoutApiService\n  ) {}\n\n  ngOnInit(): void {\n    if (!this.uniquePageName) this.uniquePageName = btoa(this._router.url);\n\n    this._loadlist(true);\n  }\n\n  ngOnDestroy(): void {\n    this._loadSubscription?.unsubscribe();\n  }\n\n  selectItemHandler(selectedItem: GeneralShowPlanInterface) {\n    if (this._isSelecting || selectedItem.id === this.currentShowPlan?.id) return;\n    this._selectEventFiredDic[selectedItem.id] = true;\n    this._isSelecting = true;\n    this._setCurrentShowPlan(selectedItem);\n    this._setAsDefault(selectedItem);\n    setTimeout(() => {\n      this._selectEventFiredDic[selectedItem.id] = false;\n      this._isSelecting = false;\n    }, 500);\n  }\n\n  saveHandler() {\n    if (this.loadingIsShow) return;\n    const gridLayout = this.gridComponent.getGridLayout();\n    const data: GeneralShowPlanInterface = {\n      type: this.uniquePageName,\n      gridName: this.gridName,\n      layoutName: this.newShowPlanName,\n      jsonLayout: gridLayout ? JSON.stringify(gridLayout) : '{}',\n      isDefault: true,\n    };\n    this.saveIsProgressing = true;\n    this._newSaveSubscription = this._gridLayoutApiService\n      .add(data)\n      .pipe(\n        finalize(() => {\n          this.saveIsProgressing = false;\n        })\n      )\n      .subscribe({\n        next: res => {\n          data.id = res;\n          this.currentShowPlan = data;\n          this._closeNewForm();\n          this._loadlist();\n        },\n      });\n  }\n\n  updateHandler() {\n    if (!this.editedShowPlan) return;\n    const gridLayout = this.gridComponent.getGridLayout();\n    this.editedShowPlan.jsonLayout = gridLayout ? JSON.stringify(gridLayout) : '{}';\n    this._update(this.editedShowPlan);\n  }\n\n  removeHandler(data: GeneralShowPlanInterface) {\n    if (this.removeIsProgressing[data.id]) return;\n    this.removeIsProgressing[data.id] = true;\n    this._gridLayoutApiService\n      .remove(data)\n      .pipe(\n        finalize(() => {\n          this.removeIsProgressing[data.id] = false;\n        })\n      )\n      .subscribe({\n        next: () => {\n          const findedIndex = this.list.findIndex(x => x.id == data.id);\n          if (findedIndex != -1) {\n            this.list.splice(findedIndex, 1);\n            this.list = [...this.list];\n            if (this.currentShowPlan?.id === data.id) {\n              this._setCurrentShowPlan(null);\n            }\n          }\n        },\n      });\n  }\n\n  updateCurrentShowPlan() {\n    if (!this.currentShowPlan) return;\n    if (!this.gridComponent || this.gridComponent.showLoading) return;\n    const gridLayout = this.gridComponent.getGridLayout();\n    this.currentShowPlan.jsonLayout = gridLayout ? JSON.stringify(gridLayout) : '{}';\n    if (!this._selectEventFiredDic[this.currentShowPlan.id]) {\n      this._update(this.currentShowPlan, true);\n    }\n  }\n\n  editHandler(showPlan: GeneralShowPlanInterface) {\n    if (this.loadingIsShow) return;\n    this.editedShowPlan = { ...showPlan };\n    setTimeout(() => {\n      (this.listRef.nativeElement.querySelector('INPUT') as HTMLElement)?.focus();\n    }, 0);\n  }\n\n  cancelEditHandler() {\n    this.editedShowPlan = undefined;\n    this._editSaveSubscription?.unsubscribe();\n  }\n\n  newHandler() {\n    this.isNewMode = true;\n    setTimeout(() => {\n      this.textboxRef.focus();\n    }, 0);\n  }\n\n  cancelHandler() {\n    this._closeNewForm();\n    this._newSaveSubscription?.unsubscribe();\n  }\n\n  refreshHandler() {\n    this._setCurrentShowPlan(null);\n  }\n\n  private _closeNewForm() {\n    this.isNewMode = false;\n    this.newShowPlanName = '';\n  }\n\n  private _setAsDefault(data: GeneralShowPlanInterface) {\n    this._update({ ...data, isDefault: true });\n  }\n\n  private _setCurrentShowPlan(item: GeneralShowPlanInterface | null) {\n    this.currentShowPlan = item;\n    this.currentShowPlanChangeCallback.emit(item);\n\n    try {\n      if (item?.jsonLayout) {\n        this.gridComponent.restoreGridLayout(JSON.parse(item.jsonLayout));\n      } else {\n        this.gridComponent.restoreGridLayout(null);\n      }\n    } catch (e) {\n      console.error(e);\n    }\n  }\n\n  private _loadlist(isInitialLoad?: boolean) {\n    this.loadingIsShow = true;\n    if (isInitialLoad) this.progressCallback.emit(true);\n    this._loadSubscription = this._gridLayoutApiService\n      .list(this.gridName, this.uniquePageName)\n      .pipe(\n        finalize(() => {\n          this.loadingIsShow = false;\n          if (isInitialLoad) this.progressCallback.emit(false);\n        })\n      )\n      .subscribe({\n        next: res => {\n          this.list = res;\n          if (isInitialLoad) {\n            const defaultItem = res?.find(x => x.isDefault);\n            if (defaultItem) {\n              this._setCurrentShowPlan(defaultItem);\n            }\n          }\n        },\n      });\n  }\n\n  private _update(data: GeneralShowPlanInterface, emitProgress?: boolean) {\n    const time = new Date().getTime();\n    if (this._lastUpdateedTime[data.id] && time - this._lastUpdateedTime[data.id] < 200) return;\n    this._lastUpdateedTime[data.id] = time;\n    this.updateIsProgressing[data.id] = true;\n    if (emitProgress) {\n      this.updateCurrentShowPlanProgressCallback.emit(true);\n    }\n    this._editSaveSubscription = this._gridLayoutApiService\n      .update(data)\n      .pipe(\n        finalize(() => {\n          this.updateIsProgressing[data.id] = false;\n          if (emitProgress) {\n            this.updateCurrentShowPlanProgressCallback.emit(false);\n          }\n        })\n      )\n      .subscribe(() => {\n        const index = this.list.findIndex(x => x.id === data.id);\n        if (index != -1) {\n          this.list[index] = data;\n          if (data.id === this.currentShowPlan?.id) {\n            this.editedShowPlan = undefined;\n          }\n        }\n      });\n  }\n}\n","<section class=\"simple-list-show-plan\">\n  <header class=\"simple-list-show-plan__header\">\n    <ui-button varient=\"text\" color=\"primary\" (clickCallback)=\"refreshHandler()\">\n      <ui-fararu-icon [name]=\"'reload'\"></ui-fararu-icon>\n      {{ 'general.simpleList.layoutMenu.reset' | translate }}\n    </ui-button>\n\n    <ng-container *ngIf=\"isNewMode; else addButtonTemplate\">\n      <section class=\"simple-list-show-plan__header-form\">\n        <ui-textbox\n          #textboxRef\n          class=\"flex-grow-1\"\n          [labelType]=\"'float'\"\n          [placeholder]=\"'general.simpleList.layoutMenu.inputPlaceholder' | translate\"\n          [(ngModel)]=\"newShowPlanName\"\n          (keydown.enter)=\"saveHandler()\"\n        ></ui-textbox>\n        <ui-button\n          [varient]=\"'fill'\"\n          [color]=\"'primary'\"\n          [title]=\"'general.simpleList.layoutMenu.save' | translate\"\n          [isIcon]=\"true\"\n          [disabled]=\"!newShowPlanName?.trim()?.length\"\n          [loading]=\"saveIsProgressing\"\n          (clickCallback)=\"saveHandler()\"\n        >\n          <ui-fararu-icon [name]=\"'save'\"></ui-fararu-icon>\n        </ui-button>\n        <ui-button\n          [varient]=\"'fill'\"\n          [color]=\"'secondary'\"\n          [title]=\"'general.simpleList.layoutMenu.cancel' | translate\"\n          [isIcon]=\"true\"\n          (clickCallback)=\"cancelHandler()\"\n        >\n          <ui-fararu-icon [name]=\"'exit'\"></ui-fararu-icon>\n        </ui-button>\n      </section>\n    </ng-container>\n    <ng-template #addButtonTemplate>\n      <ui-button varient=\"text\" color=\"primary\" (clickCallback)=\"newHandler()\">\n        <ui-fararu-icon name=\"plus\"></ui-fararu-icon>\n        {{ 'general.simpleList.layoutMenu.newLayout' | translate }}\n      </ui-button>\n    </ng-template>\n  </header>\n\n  <ng-container *ngIf=\"list\">\n    <ul class=\"simple-list-show-plan-list\" *ngIf=\"list.length; else emptyTemplate\" #listRef>\n      <li class=\"simple-list-show-plan-list__item\" *ngFor=\"let listItem of list\">\n        <ng-container\n          *ngIf=\"\n            editedShowPlan?.id === listItem.id;\n            else deleteButtonTemplate;\n            else: contentTemplate\n          \"\n        >\n          <ui-textbox\n            class=\"simple-list-show-plan-list__textbox\"\n            [label]=\"'general.simpleList.layoutMenu.layoutName' | translate\"\n            [labelType]=\"'float'\"\n            [(ngModel)]=\"editedShowPlan.layoutName\"\n            (keydown.enter)=\"updateHandler()\"\n          ></ui-textbox>\n        </ng-container>\n        <ng-template #contentTemplate>\n          <div\n            class=\"simple-list-show-plan-list__content\"\n            [class.simple-list-show-plan-list__content--selected]=\"\n              listItem.id === currentShowPlan?.id\n            \"\n            (click)=\"selectItemHandler(listItem)\"\n          >\n            <span class=\"simple-list-show-plan-list__icon\">\n              <ui-fararu-icon\n                *ngIf=\"listItem.id === currentShowPlan?.id\"\n                [name]=\"'success'\"\n                [color]=\"'on-success'\"\n                [size]=\"'x1'\"\n              ></ui-fararu-icon>\n            </span>\n            <strong class=\"simple-list-show-plan-list__title\">{{ listItem.layoutName }}</strong>\n            <ui-fararu-icon\n              class=\"simple-list-show-plan-list__edit-button\"\n              [color]=\"'content-secondary'\"\n              [name]=\"'edit-pen'\"\n              [appTooltip]=\"'general.simpleList.layoutMenu.edit' | translate\"\n              (click)=\"editHandler(listItem)\"\n            ></ui-fararu-icon>\n          </div>\n        </ng-template>\n        <div class=\"simple-list-show-plan-list__actions\">\n          <ng-container *ngIf=\"editedShowPlan?.id === listItem.id; else deleteButtonTemplate\">\n            <ui-button\n              [varient]=\"'fill'\"\n              [color]=\"'primary'\"\n              [title]=\"'general.simpleList.layoutMenu.save' | translate\"\n              [isIcon]=\"true\"\n              [disabled]=\"!editedShowPlan.layoutName.length\"\n              [loading]=\"updateIsProgressing[listItem.id]\"\n              (clickCallback)=\"updateHandler()\"\n            >\n              <ui-fararu-icon [name]=\"'save'\"></ui-fararu-icon>\n            </ui-button>\n            <ui-button\n              [varient]=\"'fill'\"\n              [color]=\"'secondary'\"\n              [title]=\"'general.simpleList.layoutMenu.cancel' | translate\"\n              [isIcon]=\"true\"\n              (click)=\"cancelEditHandler()\"\n            >\n              <ui-fararu-icon [name]=\"'exit'\"></ui-fararu-icon> </ui-button\n          ></ng-container>\n          <ng-template #deleteButtonTemplate>\n            <ui-button\n              [varient]=\"'text'\"\n              [color]=\"'danger'\"\n              [title]=\"'general.simpleList.layoutMenu.remove' | translate\"\n              [isIcon]=\"true\"\n              [loading]=\"removeIsProgressing[listItem.id]\"\n              (clickCallback)=\"removeHandler(listItem)\"\n            >\n              <ui-fararu-icon [name]=\"'delete'\"></ui-fararu-icon>\n            </ui-button>\n          </ng-template>\n        </div>\n      </li>\n    </ul>\n    <ng-template #emptyTemplate>\n      <app-message\n        [type]=\"'info'\"\n        [description]=\"'general.searchEmptyMessage' | translate\"\n        [hasActionButton]=\"false\"\n        [hasCloseButton]=\"false\"\n      ></app-message>\n    </ng-template>\n  </ng-container>\n\n  <span\n    class=\"simple-list-show-plan__overlay\"\n    [class.simple-list-show-plan__overlay--show]=\"loadingIsShow\"\n  >\n  </span>\n  <ui-spinner [show]=\"loadingIsShow\" [hideText]=\"true\" size=\"small\"></ui-spinner>\n</section>\n","import { HttpHeaders, HttpResponse } from '@angular/common/http';\nimport {\n  Component,\n  ContentChild,\n  ElementRef,\n  EventEmitter,\n  Input,\n  OnChanges,\n  OnDestroy,\n  OnInit,\n  Output,\n  SimpleChanges,\n  TemplateRef,\n  ViewChild,\n} from '@angular/core';\nimport {\n  concatMap,\n  exhaustMap,\n  finalize,\n  firstValueFrom,\n  lastValueFrom,\n  mergeMap,\n  Observable,\n  of,\n  Subject,\n  Subscription,\n  switchMap,\n} from 'rxjs';\nimport { catchError } from 'rxjs/operators';\nimport { HttpHeaderNames } from '../../../constants/http-header-names';\nimport { ButtonColors } from '../../../enums/button-colors';\nimport { FullscreenTypes } from '../../../enums/fullscreen-types';\n\nimport { ActivatedRoute } from '@angular/router';\nimport {\n  ClickSubscription,\n  GeneralActionButtonInterface,\n  GeneralActionInterface,\n} from '../../../models/general-action.interface';\nimport { ODataResponse } from '../../../models/general-odata-service.interface';\nimport { ParamHttpHeaderItemInterface } from '../../../models/general/param-http-header-item.interface';\nimport { ReportXParameterModel } from '../../../models/report-parameter-model.interface';\nimport { Utility } from '../../../utils/utility';\nimport { ModalSizeEnum } from '../../modal/modal-size-enum';\nimport { TabComponentInterface } from '../../ui/tabs/tab/tab.component';\nimport { GeneralListDepsService } from '../general-simple-list/general-list-deps.service';\nimport { GeneralSimpleListComponent } from '../general-simple-list/general-simple-list.component';\nimport { GeneralWorksheetPickerModalComponent } from '../general-worksheet-picker-modal/general-worksheet-picker-modal.component';\nimport { SimpleListShowPlanComponent } from '../simple-list-show-plan/simple-list-show-plan.component';\nimport { AdditionalPrint, AdditionalReport, ExcelTemplate } from '../../../models/aditional-report';\nimport { MenuItem } from '../../../models/menu-items';\nimport { propertyOf } from '../../../utils';\nimport { GeneralSaveReasonsEnum } from '../../../models/general-save-reasons.enum';\n\n@Component({\n  selector: 'app-general-list-management',\n  templateUrl: './general-list-management.component.html',\n  styleUrls: ['./general-list-management.component.scss'],\n})\nexport class GeneralListManagementComponent\n  extends GeneralSimpleListComponent\n  implements OnInit, OnDestroy, OnChanges\n{\n  pdfDownloadSubscription: Subscription = null;\n  private orderMap: { [key: number | string]: number };\n  itemsQty: number = 0;\n  menuItemId: string;\n  menuItems: MenuItem;\n  downloadExcelTemplateActions: GeneralActionInterface[];\n  deleteActions: GeneralActionInterface[] = [];\n  cancelPdfDownload() {\n    this.pdfDownloadSubscription?.unsubscribe();\n  }\n  reportLoading: boolean;\n  reportProgress: number;\n  showHeaderExtraItems: boolean = false;\n  progressSubscription: Subscription;\n  onRowSelected(data: any) {\n    this.selectedRows = data;\n  }\n  @Input() headerCustomActions: GeneralActionButtonInterface[];\n  @Input() filterActions?: GeneralActionButtonInterface[];\n  @Input() operationActions?: GeneralActionButtonInterface[];\n  @Input() additionalReportActions?: GeneralActionButtonInterface[];\n  @Input() addNewActions?: GeneralActionInterface[];\n  @Input() addNewCallback: () => any;\n  @Input() beforeAddCallback?: (data: any) => Promise<boolean> | boolean;\n  @Input() beforeReloadCallback: () => any;\n  @Input() reloadCallback: () => any;\n  @Input() multipleRemoveCallback: (selectedRows: any[]) => Promise<any> | void;\n  @Input() saveRowIndexCallback: (orderMap: { [key: number | string]: any }) => Promise<any>;\n  @Input() menuItemActionCallback: (\n    reportId: number,\n    checkedItems: any[],\n    reportParam?: ParamHttpHeaderItemInterface[]\n  ) => ParamHttpHeaderItemInterface[];\n  @Input() fullscreenType?: FullscreenTypes;\n  @Input() printParams: ParamHttpHeaderItemInterface[];\n  @Input() floatToolbar?: boolean;\n  @Input() allowReorder: boolean;\n  @Input() bulkRemove: boolean = false;\n  @Input() multipleRemove: boolean = false;\n\n  @Output() managementGridLoaded: EventEmitter<void> = new EventEmitter<void>();\n  @Output() managementGridLoadStarted: EventEmitter<void> = new EventEmitter<void>();\n\n  @ViewChild('columnPickerContainer') columnPickerContainerRef?: ElementRef<HTMLElement>;\n  @ViewChild('simpleListShowPlanRef', { static: false })\n  simpleListShowPlanRef: SimpleListShowPlanComponent;\n\n  readonly columnPickerTabId = 'columnPickerTabId';\n  printActions: GeneralActionButtonInterface[] = [];\n  additionalprintActions: GeneralActionButtonInterface[] = [];\n  override clickMap = new Map<string, ClickSubscription>();\n  inReorderMode: boolean = false;\n  isFirstSelection?: boolean = true;\n  isLayoutSelectionOpen?: boolean = false;\n  showShowPlanSaveMessage?: boolean;\n  currentShowPlanIsProgressing?: boolean;\n\n  // #region reorder actions\n\n  orderUpAction: GeneralActionButtonInterface = {\n    varient: 'outline',\n    color: 'primary',\n    fararuIcon: {\n      name: 'order-up',\n    },\n\n    click: (event, args) => {\n      this.generalSimpleList.gridComponent.reorder('up');\n    },\n  };\n  orderDownAction: GeneralActionButtonInterface = {\n    varient: 'outline',\n    color: 'primary',\n    fararuIcon: {\n      name: 'order-down',\n    },\n\n    click: (event, args) => {\n      this.generalSimpleList.gridComponent.reorder('down');\n    },\n  };\n  enableReorderButton: GeneralActionButtonInterface = {\n    tooltip: 'اولویت بندی',\n    id: 'reordering',\n    fararuIcon: { name: 'reorder', color: 'content-primary', size: 'x1' },\n    color: ButtonColors.PRIMARY,\n    varient: 'outline',\n    click: async (event, args) => {\n      // enter reorder mode\n      this.inReorderMode = true;\n    },\n  };\n  saveReorderButton: GeneralActionButtonInterface = {\n    tooltip: 'ذخیره اولویت بندی',\n    id: 'reordering',\n    fararuIcon: {\n      name: 'save',\n      color: 'content-primary',\n      size: 'x1',\n    },\n    color: ButtonColors.PRIMARY,\n    varient: 'fill',\n    click: async (event, args) => {\n      // exit reorder mode\n      try {\n        await this.saveRowIndexCallback(this.orderMap);\n        this.exitReorderMode();\n        this.reloadHandler();\n      } catch (error) {}\n    },\n  };\n\n  // #endregion reorder action\n\n  @ContentChild('footer', { static: false })\n  footer?: TemplateRef<any>;\n\n  @ViewChild('simpleList') generalSimpleList: GeneralSimpleListComponent;\n\n  private _columnPickerIsAppneded?: boolean;\n  private _showShowPlanSaveMessageTimeout?: any;\n\n  public get FullscreenTypes(): typeof FullscreenTypes {\n    return FullscreenTypes;\n  }\n\n  constructor(deps: GeneralListDepsService, public route?: ActivatedRoute) {\n    super(deps);\n  }\n\n  simpleListLoadStarted($event: void) {\n    this.managementGridLoadStarted.emit();\n  }\n\n  simpleListLoaded($event: void) {\n    this.itemsQty = this.generalSimpleList.getOdataCount().all;\n    this.createOrUpdateBulkDeleteBtn();\n    this.managementGridLoaded.emit();\n  }\n\n  async createOrUpdateBulkDeleteBtn() {\n    this.deleteActions = [];\n    if (this.bulkRemove && this.hasDeleteAccess)\n      this.deleteActions.push({\n        text:\n          this.deps.translateService.instant('general.listManagement.removeAll') +\n          (this.itemsQty > 0 ? ` (${this.itemsQty})` : ''),\n        tooltip:\n          this.deps.translateService.instant('general.listManagement.removeAllTooltip') +\n          (this.itemsQty > 0 ? ` (${this.itemsQty})` : ''),\n        disabled: this.itemsQty == 0,\n        click: () => {\n          this._bulkDeleteHandler();\n        },\n      });\n    if (this.multipleRemove && this.hasDeleteAccess) {\n      const count = this.checkedItems?.length ?? 0;\n      this.deleteActions.push({\n        text:\n          this.deps.translateService.instant('general.listManagement.removeGroup') +\n          (count > 0 ? ` (${count})` : ''),\n        disabled: count == 0,\n        tooltip:\n          this.deps.translateService.instant('general.listManagement.removeGroupTooltip') +\n          (count > 0 ? ` (${count})` : ''),\n        click: () => {\n          this.multipleDeleteHandler();\n        },\n      });\n    }\n  }\n\n  protected async multipleDeleteHandler() {\n    // This method deletes only the selected items (not all filtered items)\n    if (!this.checkedItems || this.checkedItems.length === 0) {\n      this.deps.toastService.show({\n        type: 'warning',\n        text: this.deps.translateService.instant('general.selectionEmptyMessage'),\n      });\n      return;\n    }\n\n    // Show confirmation dialog before deleting\n    const confirmed = await this._showBulkDeleteConfirmation(this.checkedItems.length);\n\n    if (!confirmed) {\n      return;\n    }\n\n    try {\n      this.deps.configSandBox.showGlobalLoading('DELETE_SELECTED');\n      await this._executeBulkDeletion(this.checkedItems);\n      this.reloadGrid();\n      this._showBulkDeleteSuccessMessage(this.checkedItems.length);\n    } finally {\n      this.deps.configSandBox.hideGlobalLoading('DELETE_SELECTED');\n    }\n  }\n\n  /**\n   * Handles bulk deletion of items based on current filters\n   * Fetches items to be deleted, shows confirmation dialog, and executes deletion\n   */\n  private async _bulkDeleteHandler(): Promise<void> {\n    try {\n      this.deps.configSandBox.showGlobalLoading('DELETE_ALL');\n      const filters = this.generalSimpleList.getOdataFiltersEncoded();\n      const itemsToDelete = await this._fetchItemsForBulkDeletion(filters);\n      if (!itemsToDelete || itemsToDelete.length === 0) {\n        this.deps.toastService.show({\n          type: 'warning',\n          text: this.deps.translateService.instant('general.selectionEmptyMessage'),\n        });\n        return;\n      }\n\n      const confirmed = await this._showBulkDeleteConfirmation(itemsToDelete.length);\n\n      if (!confirmed) {\n        return;\n      }\n\n      await this._executeBulkDeletion(itemsToDelete);\n      this.reloadGrid();\n      this._showBulkDeleteSuccessMessage(itemsToDelete.length);\n    } catch (error) {\n      console.log(error);\n    } finally {\n      this.deps.configSandBox.hideGlobalLoading('DELETE_ALL');\n    }\n  }\n\n  private async _fetchItemsForBulkDeletion(filters: string): Promise<any[]> {\n    try {\n      const result = await firstValueFrom(\n        this.deps.generalOdataService.get(\n          `?$select=${this.identityFieldName}&$filter=${filters}`,\n          new HttpHeaders({\n            ...this.oDataHttpHeaders,\n            [HttpHeaderNames.ENTITY]: this.oDataEntity,\n          })\n        )\n      );\n\n      return result?.value || [];\n    } catch (error) {\n      throw new Error('Failed to fetch items for deletion. Please try again.');\n    }\n  }\n\n  private async _showBulkDeleteConfirmation(itemCount: number): Promise<boolean> {\n    try {\n      const entityName = this.gridName?.single || 'مورد';\n      const description = this.deps.translateService.instant(\n        'general.listManagement.removeAllConfirm',\n        { entity: entityName, count: itemCount }\n      );\n\n      return await this.deps.modalService.showConfirm({\n        type: 'delete',\n        icon: 'delete',\n        description,\n      });\n    } catch (error) {\n      return false;\n    }\n  }\n\n  private async _executeBulkDeletion(itemsToDelete: any[]) {\n    if (this.multipleRemoveCallback) {\n      await this._executeCustomBulkDeleteCallback(itemsToDelete);\n    } else {\n      throw new Error('No deletion method available');\n    }\n  }\n\n  private async _executeCustomBulkDeleteCallback(itemsToDelete: any[]) {\n    await this.multipleRemoveCallback(itemsToDelete);\n  }\n\n  private reloadGrid(): void {\n    this.reload = Math.random();\n  }\n\n  private _showBulkDeleteSuccessMessage(deletedCount: number): void {\n    const entityName = this.gridName?.single || 'مورد';\n    this.deps.toastService.show({\n      type: 'success',\n      text:\n        this.deps.translateService.instant('general.listManagement.bulkDeleteSuccess', {\n          entity: entityName,\n          count: deletedCount,\n        }) || `${deletedCount} ${entityName} successfully deleted`,\n    });\n  }\n\n  override ngOnInit(): void {\n    this.checkPermissions();\n    if (!this.hasViewAccess) return;\n\n    if (this.bulkRemove) this.multipleRemove = true;\n\n    this.isMultipleSelect = this.isMultipleSelect || this.multipleRemove;\n\n    this.progressSubscription = this.deps.printService.progress.subscribe(p => (this.progress = p));\n\n    this.createOrUpdateBulkDeleteBtn();\n\n    this.menuItemId =\n      this.route.snapshot.data?.['menuItemId'] ?? this.route.snapshot.data?.['accessNodeId'];\n\n    this.fetchMenuItemActions();\n  }\n\n  public fetchMenuItemActions() {\n    if (this.menuItemId) {\n      this.deps.appMenuApiService\n        .getPageMenuItemsV3(this.menuItemId)\n        .subscribe((menuItems: MenuItem) => {\n          this.menuItems = menuItems;\n          this._handleMenuItems();\n        });\n    }\n  }\n\n  private _handleMenuItems() {\n    if (this.menuItems) {\n      if (this.menuItems.additionalReports.length > 0) {\n        const menuItemReportActions: GeneralActionButtonInterface[] =\n          this.menuItems.additionalReports\n            .filter((reportItem: AdditionalReport) => reportItem.modelName === this.oDataEntity)\n            .map((reportItem: AdditionalReport) => ({\n              text: reportItem.reportName,\n              click: (event: any, args: any) => {\n                if (this.checkedItems.length > 0) {\n                  this._openAdditionalReportOnClick(reportItem, this.checkedItems);\n                } else if (this.selectedRows && this.hideCheckboxInCheckableGrid) {\n                  this._openAdditionalReportOnClick(reportItem, this.selectedRows);\n                } else {\n                  this.deps.modalService.showAlert({\n                    description: this.deps.translateService.instant(\n                      'general.listManagement.select_at_least_one_item'\n                    ),\n                    buttonText: 'بستن',\n                    type: 'error',\n                  });\n                }\n              },\n            }));\n\n        if (!this.additionalReportActions) {\n          this.additionalReportActions = [];\n        }\n        this.additionalReportActions.push({\n          fararuIcon: { name: 'document' },\n          items: menuItemReportActions,\n        });\n      }\n\n      if (this.menuItems.prints.length > 0) {\n        const menuItemPrintActions = this.menuItems.prints\n          .filter((printItem: AdditionalPrint) => printItem.modelName === this.oDataEntity)\n          .map((addPrintItem: AdditionalPrint) => ({\n            text: addPrintItem.reportName,\n            click: (event: any, args: any) => {\n              if (this.checkedItems.length > 0) {\n                this._callPrintOnClick(addPrintItem, this.checkedItems);\n              } else if (this.hideCheckboxInCheckableGrid && this.selectedRows) {\n                this._callPrintOnClick(addPrintItem, this.selectedRows);\n              } else\n                this.deps.modalService.showAlert({\n                  description: this.deps.translateService.instant(\n                    'general.listManagement.select_at_least_one_item'\n                  ),\n                  buttonText: 'بستن',\n                  type: 'error',\n                });\n            },\n          }));\n        if (menuItemPrintActions.length > 0) {\n          if (!this.printActions) this.printActions = [];\n          this.printActions.push({\n            text: 'چاپ',\n            items: menuItemPrintActions,\n          });\n        }\n      }\n\n      if (this.menuItems.importFiles?.length > 0) {\n        this.downloadExcelTemplateActions = this.menuItems.importFiles.map(item => ({\n          text: item.importFileTitle,\n          click: () => {\n            this.openUploadFromExcelModal(item);\n          },\n        }));\n      }\n    }\n  }\n\n  private _callPrintOnClick(addPrintItem: AdditionalPrint, items: any) {\n    this.reportLoading = true;\n    this.reportProgress = 0;\n    let keyValueExtraParam: ParamHttpHeaderItemInterface[] = [];\n\n    firstValueFrom(\n      this.deps._reportFormService.getReportParamById(addPrintItem.reportId.toString())\n    ).then((result: ODataResponse<ReportXParameterModel>) => {\n      let reportDefaultparams = result.value?.map(x => ({\n        keyName: x.parameterName,\n        keyValue: x.defaultValue1,\n      }));\n      if (this.menuItemActionCallback) {\n        keyValueExtraParam = this.menuItemActionCallback(\n          addPrintItem.reportId,\n          Array.isArray(items) ? items : [items],\n          reportDefaultparams\n        );\n      } else {\n        if (addPrintItem.parameterMappings.length > 0) {\n          keyValueExtraParam = addPrintItem.parameterMappings.map(p => ({\n            keyName: p['target'],\n            keyValue: Array.isArray(items)\n              ? items.map(it => it[p['source']]).toString()\n              : items[p['source']].toString(),\n          }));\n        } else\n          keyValueExtraParam = [\n            {\n              keyName: this.identityFieldName,\n              keyValue: Array.isArray(items)\n                ? items.map(it => it[this.identityFieldName]).toString()\n                : items[this.identityFieldName].toString(),\n            },\n          ];\n      }\n      return this.deps.printService\n        .printDev(addPrintItem.reportFilePath, addPrintItem.spName, keyValueExtraParam)\n        .pipe(\n          finalize(() => {\n            this.reportLoading = false;\n            this.reportProgress = 0;\n          })\n        )\n        .subscribe();\n    });\n  }\n\n  private _openAdditionalReportOnClick(reportItem: AdditionalReport, items: any) {\n    let extraQueryString;\n    if (this.menuItemActionCallback) {\n      let customFilterValues = this.menuItemActionCallback(\n        reportItem.reportId,\n        Array.isArray(items) ? items : [items]\n      );\n      extraQueryString = Utility.buildQueryString(customFilterValues);\n    } else {\n      let params = {};\n      if (reportItem.parameterMappings?.length > 0) {\n        reportItem.parameterMappings.forEach(p => {\n          params[p['target']] = Array.isArray(items)\n            ? items.map(it => it[p['source']]).toString()\n            : items[p['source']].toString();\n        });\n      } else\n        params = {\n          [this.identityFieldName]: Array.isArray(items)\n            ? items.map(it => it[this.identityFieldName]).toString()\n            : items[this.identityFieldName].toString(),\n        };\n\n      extraQueryString = Utility.buildQueryString(params);\n    }\n\n    this.deps.layoutService.addWindow(\n      {\n        link: `review/reports/${reportItem.reportId}?${extraQueryString}`,\n        title: reportItem.reportName,\n      },\n      true\n    );\n  }\n\n  exitReorderMode() {\n    this.inReorderMode = false;\n  }\n\n  override ngOnChanges(changes: SimpleChanges): void {\n    this.hasTree = !!this.treeChildrenBinding || !!this.treeIdBinding || !!this.treeTitleBinding;\n    if (changes['headerCustomActions']) {\n      this.clickMap = new Map<string, ClickSubscription>();\n      this.headerCustomActions?.forEach(customAction => {\n        if (customAction?.actionId) {\n          this.clickMap.set(customAction?.actionId, {\n            subject: new Subject<any>(),\n            event: null,\n            selectedRow: null,\n          });\n          this.onClickResultHandler(customAction);\n        }\n      });\n    }\n    const oDataEntityField = propertyOf<GeneralListManagementComponent>('oDataEntity');\n    if (\n      changes[oDataEntityField] &&\n      changes[oDataEntityField].currentValue != changes[oDataEntityField].previousValue &&\n      this.menuItems != null\n    )\n      this._handleMenuItems();\n  }\n\n  gridLayoutTabChangeHandler(data: TabComponentInterface) {\n    if (data.id === this.columnPickerTabId) {\n      this._appendColumnPicker();\n    }\n  }\n\n  multipleRemoveHandler(selectedRows: any[]) {\n    this.multipleRemoveCallback && this.multipleRemoveCallback(selectedRows);\n  }\n\n  async addNewHandlerAsync(data?: any) {\n    if (this.beforeAddCallback && (await this.beforeAddCallback(data)) === false) {\n      return;\n    }\n    this.addNewHandler();\n  }\n\n  addNewHandler(): void {\n    this.addNewCallback && this.addNewCallback();\n  }\n\n  reloadHandler(): void {\n    this.exitReorderMode();\n    this.isFirstSelection = true;\n    this.selectedRows = null;\n    this.beforeReloadCallback && this.beforeReloadCallback();\n    if (this.reloadCallback) {\n      this.reloadCallback();\n    } else {\n      this.reload = {};\n    }\n  }\n\n  updateCurrentShowPlanProgressHandler(state: boolean) {\n    if (this.currentShowPlanIsProgressing && !state) {\n      this.showShowPlanSaveMessage = true;\n      clearTimeout(this._showShowPlanSaveMessageTimeout);\n      this._showShowPlanSaveMessageTimeout = setTimeout(() => {\n        this.showShowPlanSaveMessage = false;\n      }, 2000);\n    }\n    if (state) {\n      this.showShowPlanSaveMessage = false;\n      clearTimeout(this._showShowPlanSaveMessageTimeout);\n    }\n    this.currentShowPlanIsProgressing = state;\n  }\n\n  override selectHandler = (selectedRows: any): void => {\n    this.selectedRows = selectedRows;\n    this.selectCallback && this.selectCallback(selectedRows);\n    if (!selectedRows) return;\n    if (this.isFirstSelection) {\n      this.isFirstSelection = false;\n    } else if (!this.fullscreenType) {\n      this.fullscreenType = FullscreenTypes.NONE;\n    }\n  };\n\n  override gridItemClickHandler(clickedRow: any): void {\n    if (!this.fullscreenType) {\n      this.fullscreenType = FullscreenTypes.NONE;\n    }\n\n    this.gridItemClickCallback.emit(clickedRow);\n  }\n\n  afterRemoveHandler = (data: any) => {\n    this.reloadHandler();\n    this.afterRemoveCallback && this.afterRemoveCallback(data);\n  };\n\n  onItemCheckedHandler($event: any[]) {\n    this.checkedItems = $event;\n    this.onItemChecked?.emit($event);\n    this.createOrUpdateBulkDeleteBtn();\n  }\n\n  onGridLoaded() {\n    this.gridLoaded.emit();\n  }\n\n  onGridLoadStarted() {\n    this.gridLoadStarted.emit();\n  }\n\n  checkedItems: any[] = [];\n  override checkCallback($event: any): void {\n    this.checkedItems = $event;\n  }\n\n  override onClick(event: Event, selectedRows: any, action: GeneralActionButtonInterface): void {\n    if (!action?.actionId) {\n      action.click(event, selectedRows);\n    } else {\n      action.disabled = action.mapFunction === 'disabled';\n      try {\n        this.clickMap.get(action.actionId).event = event;\n        this.clickMap.get(action.actionId).selectedRow = selectedRows;\n        this.clickMap.get(action.actionId).subject.next(this.clickMap.get(action.actionId));\n      } catch (e) {\n        console.log('the header actions are not properly initialized.');\n      }\n    }\n  }\n\n  override onClickResultHandler(action: GeneralActionButtonInterface): void {\n    switch (action?.mapFunction) {\n      case 'switch': {\n        this.subscriptions.add(\n          this.clickMap\n            .get(action.actionId)\n            .subject.pipe(\n              switchMap((data: ClickSubscription) =>\n                (action.click(data.event, data.selectedRow) as Observable<any>).pipe(\n                  catchError(error => {\n                    action.onFailure(error);\n                    return of(null);\n                  })\n                )\n              )\n            )\n            .subscribe({\n              next: (response: any) => {\n                if (response !== null) {\n                  action.onSuccess(response);\n                }\n              },\n            })\n        );\n        break;\n      }\n      case 'concat': {\n        this.subscriptions.add(\n          this.clickMap\n            .get(action.actionId)\n            .subject.pipe(\n              concatMap((data: ClickSubscription) =>\n                (action.click(data.event, data.selectedRow) as Observable<any>).pipe(\n                  catchError(error => {\n                    action.onFailure(error);\n                    return of(null);\n                  })\n                )\n              )\n            )\n            .subscribe({\n              next: (response: any) => {\n                if (response !== null) {\n                  action.onSuccess(response);\n                }\n              },\n            })\n        );\n        break;\n      }\n      case 'merge': {\n        this.subscriptions.add(\n          this.clickMap\n            .get(action.actionId)\n            .subject.pipe(\n              mergeMap((data: ClickSubscription) =>\n                (action.click(data.event, data.selectedRow) as Observable<any>).pipe(\n                  catchError(error => {\n                    action.onFailure(error);\n                    return of(null);\n                  })\n                )\n              )\n            )\n            .subscribe({\n              next: (response: any) => {\n                if (response !== null) {\n                  action.onSuccess(response);\n                }\n              },\n            })\n        );\n        break;\n      }\n      case 'exhaust': {\n        this.subscriptions.add(\n          this.clickMap\n            .get(action.actionId)\n            .subject.pipe(\n              exhaustMap((data: ClickSubscription) =>\n                (action.click(data.event, data.selectedRow) as Observable<any>).pipe(\n                  catchError(error => {\n                    action.onFailure(error);\n                    return of(null);\n                  })\n                )\n              )\n            )\n            .subscribe({\n              next: (response: any) => {\n                if (response !== null) {\n                  action.onSuccess(response);\n                }\n              },\n            })\n        );\n        break;\n      }\n      case 'disabled': {\n        this.subscriptions.add(\n          this.clickMap\n            .get(action.actionId)\n            .subject.pipe(\n              exhaustMap((data: ClickSubscription) =>\n                (action.click(data.event, data.selectedRow) as Observable<any>).pipe(\n                  catchError(error => {\n                    action.onFailure(error);\n                    action.disabled = false;\n                    return of(null);\n                  })\n                )\n              )\n            )\n            .subscribe({\n              next: (response: any) => {\n                if (response !== null) {\n                  action.onSuccess(response);\n                  action.disabled = false;\n                }\n              },\n            })\n        );\n        break;\n      }\n    }\n  }\n\n  override ngOnDestroy(): void {\n    this.subscriptions.unsubscribe();\n  }\n\n  toggleHeaderExtraItems(): void {\n    this.showHeaderExtraItems = !!!this.showHeaderExtraItems;\n  }\n\n  onRowOrderChanged($event: { [key: number | string]: any }) {\n    this.orderMap = $event;\n    this.onRowOrderChange.emit($event);\n  }\n\n  onPulldownChange(isOpen: boolean): void {\n    this.isLayoutSelectionOpen = isOpen;\n  }\n\n  gridColumnsChangeHandler() {\n    this.simpleListShowPlanRef?.updateCurrentShowPlan();\n  }\n\n  private _appendColumnPicker() {\n    if (this._columnPickerIsAppneded) return;\n    this._columnPickerIsAppneded = true;\n    this.generalSimpleList.gridComponent.appendColumnPickerMenuIn(\n      this.columnPickerContainerRef.nativeElement\n    );\n  }\n\n  openUploadFromExcelModal(e?: ExcelTemplate) {\n    this.deps.modalService.openT(GeneralWorksheetPickerModalComponent, ModalSizeEnum.ExtraLarge, {\n      templates: this.menuItems.importFiles,\n      selectedTemplate: e,\n    });\n  }\n\n  override getOdataFiltersEncoded = (): string =>\n    this.generalSimpleList?.getOdataFiltersEncoded() ?? '';\n\n  override checkRowsByIndex = (rows: number[]) => this.generalSimpleList?.checkRowsByIndex(rows);\n\n  override checkRowsByCondition = (condition: (row: any) => boolean) =>\n    this.generalSimpleList?.checkRowsByCondition(condition);\n\n  override uncheckRowsByIndex = (rows: number[]) =>\n    this.generalSimpleList?.uncheckRowsByIndex(rows);\n}\n","<ui-access-node [accessNodeId]=\"viewAccessNodeId\">\n  <ng-template>\n    <ng-container *ngIf=\"footer\">\n      <ui-screen-separator\n        [fullscreenType]=\"fullscreenType == undefined ? FullscreenTypes.TOP : fullscreenType\"\n        [topSlicePercent]=\"50\"\n      >\n        <ng-container *ngIf=\"content\" top [ngTemplateOutlet]=\"content\"></ng-container>\n        <ng-container *ngIf=\"footer\" bottom [ngTemplateOutlet]=\"footer\"></ng-container>\n      </ui-screen-separator>\n    </ng-container>\n    <ng-container *ngIf=\"!footer\" [ngTemplateOutlet]=\"content\"></ng-container>\n\n    <ng-template #content>\n      <section class=\"general-list-management\">\n        <header\n          class=\"general-list-management__header\"\n          [class.general-list-management__header--float]=\"floatToolbar\"\n        >\n          <section class=\"general-list-management__header-col-wrap\">\n            <ng-container\n              *ngIf=\"\n                !!addNewCallback ||\n                addNewActions?.length ||\n                headerCustomActions?.length ||\n                filterActions?.length ||\n                operationActions?.length ||\n                printActions?.length ||\n                (allowReorder &&\n                  enableReorderButton &&\n                  (enableReorderButton?.nodeAccessId | accessNode)) ||\n                reportLoading\n              \"\n            >\n              <ui-fararu-icon\n                *ngIf=\"floatToolbar\"\n                class=\"general-list-management__header-float-button\"\n                [name]=\"'dots'\"\n                [size]=\"'x2'\"\n                [color]=\"'primary'\"\n              ></ui-fararu-icon>\n              <div class=\"general-list-management__header-col\">\n                <ng-container *ngIf=\"!inReorderMode; else reorderModeHeader\">\n                  <ng-container *ngIf=\"hasAddAccess && (!!addNewCallback || addNewActions?.length)\">\n                    <ng-container *ngIf=\"addNewActions?.length > 0; else addNewButtonTemplate\">\n                      <ui-button\n                        [tabIndex]=\"1\"\n                        varient=\"fill\"\n                        color=\"primary\"\n                        [appShortcut]=\"'control+m'\"\n                        [title]=\"('general.listManagement.add' | translate) + ' Control+M'\"\n                        [dropdownTriggerFor]=\"addNewMoreMenu\"\n                      >\n                        <ui-fararu-icon name=\"plus\"></ui-fararu-icon>\n                        <ui-icon\n                          class=\"general-list-management__header-icon\"\n                          group=\"navigation\"\n                          name=\"expand_more\"\n                        ></ui-icon\n                      ></ui-button>\n                      <ui-dropdown #addNewMoreMenu [tabIndex]=\"-1\" [hidden]=\"true\">\n                        <ui-sub-menu [items]=\"addNewActions\" [args]=\"selectedRows\"></ui-sub-menu>\n                      </ui-dropdown>\n                    </ng-container>\n                    <ng-template #addNewButtonTemplate>\n                      <ui-button\n                        [tabIndex]=\"1\"\n                        varient=\"fill\"\n                        color=\"primary\"\n                        [appShortcut]=\"'control+m'\"\n                        [title]=\"('general.listManagement.add' | translate) + ' Control+M'\"\n                        (clickCallback)=\"addNewHandlerAsync(selectedRows)\"\n                        ><ui-fararu-icon name=\"plus\"></ui-fararu-icon\n                      ></ui-button>\n                    </ng-template>\n                  </ng-container>\n\n                  <ng-container *ngIf=\"headerCustomActions?.length > 0\">\n                    <ng-container *ngFor=\"let action of headerCustomActions\">\n                      <ng-container *ngIf=\"action.items?.length > 0; else buttonTemplate\">\n                        <ui-button\n                          *ngIf=\"action?.nodeAccessId | accessNode\"\n                          [tabIndex]=\"1\"\n                          [dropdownTriggerFor]=\"moreMenu\"\n                          [varient]=\"action.varient || 'fill'\"\n                          [appShortcut]=\"action.shortcut\"\n                          [color]=\"action.color || 'secondary'\"\n                          [title]=\"action.tooltip\"\n                        >\n                          <ui-fararu-icon\n                            *ngIf=\"action.fararuIcon\"\n                            [name]=\"action.fararuIcon.name\"\n                            [size]=\"action.fararuIcon.size\"\n                            [color]=\"action.fararuIcon.color\"\n                          ></ui-fararu-icon>\n\n                          {{ action.text }}\n                          <ui-icon\n                            class=\"general-list-management__header-icon\"\n                            *ngIf=\"action.text\"\n                            group=\"navigation\"\n                            name=\"expand_more\"\n                          ></ui-icon>\n                        </ui-button>\n                        <ui-dropdown #moreMenu [tabIndex]=\"-1\" [hidden]=\"true\">\n                          <ui-sub-menu [items]=\"action.items\" [args]=\"selectedRows\"></ui-sub-menu>\n                        </ui-dropdown>\n                      </ng-container>\n                      <ng-template #buttonTemplate>\n                        <ui-button\n                          [tabIndex]=\"1\"\n                          *ngIf=\"action?.nodeAccessId | accessNode\"\n                          [varient]=\"action.varient || 'fill'\"\n                          [color]=\"action.color || 'secondary'\"\n                          [appShortcut]=\"action.shortcut\"\n                          [title]=\"action.tooltip\"\n                          [disabled]=\"!!action.disabled\"\n                          (clickCallback)=\"onClick($event, selectedRows, action)\"\n                        >\n                          <ng-container *ngIf=\"action.icon\">\n                            <ui-fararu-icon\n                              *ngIf=\"action.icon.fararuIcon; else oldIconTemplate\"\n                              [name]=\"action.icon.fararuIcon.name\"\n                              [size]=\"action.icon.fararuIcon.size\"\n                              [color]=\"action.icon.fararuIcon.color\"\n                            ></ui-fararu-icon>\n                            <ng-template #oldIconTemplate>\n                              <ui-icon\n                                [group]=\"action.icon.group\"\n                                [name]=\"action.icon.name\"\n                                [type]=\"action.icon.type\"\n                              ></ui-icon>\n                            </ng-template>\n                          </ng-container>\n                          {{ action.text }}\n                        </ui-button>\n                      </ng-template>\n                    </ng-container>\n                  </ng-container>\n\n                  <ng-container *ngIf=\"filterActions?.length > 0\">\n                    <ng-container *ngFor=\"let action of filterActions\">\n                      <ng-container *ngIf=\"action.items?.length > 0; else buttonTemplate\">\n                        <ui-button\n                          *ngIf=\"action?.nodeAccessId | accessNode\"\n                          [tabIndex]=\"1\"\n                          [disabled]=\"reportLoading\"\n                          [dropdownTriggerFor]=\"moreMenu\"\n                          [varient]=\"action.varient || 'fill'\"\n                          [color]=\"action.color || 'secondary'\"\n                          [title]=\"'general.listManagement.filterInformation' | translate\"\n                        >\n                          <ui-fararu-icon [name]=\"'filter'\"></ui-fararu-icon>\n                          <ui-icon\n                            class=\"general-list-management__header-icon\"\n                            group=\"navigation\"\n                            name=\"expand_more\"\n                          ></ui-icon>\n                        </ui-button>\n                        <ui-dropdown #moreMenu [tabIndex]=\"-1\" [hidden]=\"true\">\n                          <ui-sub-menu\n                            [items]=\"action.items\"\n                            [args]=\"selectedRows\"\n                            [keepSelectedRow]=\"true\"\n                          ></ui-sub-menu>\n                        </ui-dropdown>\n                      </ng-container>\n                      <ng-template #buttonTemplate>\n                        <ui-button\n                          [tabIndex]=\"1\"\n                          [varient]=\"action.varient || 'fill'\"\n                          [color]=\"action.color || 'secondary'\"\n                          (clickCallback)=\"action.click($event, selectedRows)\"\n                        >\n                          <ui-fararu-icon [name]=\"'filter'\"></ui-fararu-icon>\n                          {{ action.text }}</ui-button\n                        >\n                      </ng-template>\n                    </ng-container>\n                  </ng-container>\n\n                  <ng-container *ngIf=\"operationActions?.length > 0\">\n                    <ng-container *ngFor=\"let action of operationActions\">\n                      <ng-container *ngIf=\"action.items?.length > 0; else buttonTemplate\">\n                        <ui-button\n                          *ngIf=\"action?.nodeAccessId | accessNode\"\n                          [tabIndex]=\"1\"\n                          [disabled]=\"reportLoading\"\n                          [dropdownTriggerFor]=\"moreMenu\"\n                          [varient]=\"action.varient || 'fill'\"\n                          [color]=\"action.color || 'secondary'\"\n                          [title]=\"'general.listManagement.complementaryOperation' | translate\"\n                        >\n                          <ui-fararu-icon [name]=\"'tool'\"></ui-fararu-icon>\n                          <ui-icon\n                            class=\"general-list-management__header-icon\"\n                            group=\"navigation\"\n                            name=\"expand_more\"\n                          ></ui-icon>\n                        </ui-button>\n                        <ui-dropdown #moreMenu [tabIndex]=\"-1\" [hidden]=\"true\">\n                          <ui-sub-menu [items]=\"action.items\" [args]=\"selectedRows\"></ui-sub-menu>\n                        </ui-dropdown>\n                      </ng-container>\n                      <ng-template #buttonTemplate>\n                        <ui-button\n                          [tabIndex]=\"1\"\n                          [varient]=\"action.varient || 'fill'\"\n                          [color]=\"action.color || 'secondary'\"\n                          (clickCallback)=\"action.click($event, selectedRows)\"\n                        >\n                          <ui-fararu-icon [name]=\"'document'\"></ui-fararu-icon>\n                          {{ action.text }}</ui-button\n                        >\n                      </ng-template>\n                    </ng-container>\n                  </ng-container>\n\n                  <ng-container *ngIf=\"additionalReportActions?.length > 0\">\n                    <ng-container *ngFor=\"let action of additionalReportActions\">\n                      <ng-container\n                        *ngIf=\"action.items?.length > 0; else additionalReportButtonTemplate\"\n                      >\n                        <ui-button\n                          [tabIndex]=\"1\"\n                          [disabled]=\"reportLoading\"\n                          [dropdownTriggerFor]=\"moreMenu\"\n                          [varient]=\"action.varient || 'fill'\"\n                          [color]=\"action.color || 'secondary'\"\n                          [title]=\"'general.listManagement.complementaryReports' | translate\"\n                        >\n                          <ui-fararu-icon [name]=\"'trello'\"></ui-fararu-icon>\n                          <ui-icon\n                            class=\"general-list-management__header-icon\"\n                            group=\"navigation\"\n                            name=\"expand_more\"\n                          ></ui-icon>\n                        </ui-button>\n                        <ui-dropdown #moreMenu [tabIndex]=\"-1\" [hidden]=\"true\">\n                          <ui-sub-menu [items]=\"action.items\" [args]=\"selectedRows\"></ui-sub-menu>\n                        </ui-dropdown>\n                      </ng-container>\n                      <ng-template #additionalReportButtonTemplate>\n                        <ui-button\n                          [tabIndex]=\"1\"\n                          [varient]=\"action.varient || 'fill'\"\n                          [color]=\"action.color || 'secondary'\"\n                          (clickCallback)=\"action.click($event, selectedRows)\"\n                        >\n                          <ui-fararu-icon [name]=\"'document'\"></ui-fararu-icon>\n                          {{ action.text }}</ui-button\n                        >\n                      </ng-template>\n                    </ng-container>\n                  </ng-container>\n\n                  <ng-container *ngIf=\"printActions?.length > 0\">\n                    <ng-container *ngFor=\"let action of printActions\">\n                      <ng-container *ngIf=\"action.items?.length > 0; else buttonTemplate\">\n                        <ui-button\n                          *ngIf=\"action?.nodeAccessId | accessNode\"\n                          [tabIndex]=\"1\"\n                          [disabled]=\"reportLoading\"\n                          [dropdownTriggerFor]=\"moreMenu\"\n                          [varient]=\"action.varient || 'fill'\"\n                          [color]=\"action.color || 'secondary'\"\n                          [title]=\"'general.listManagement.print' | translate\"\n                        >\n                          <ui-fararu-icon [name]=\"'print'\"></ui-fararu-icon>\n                          <ui-icon\n                            class=\"general-list-management__header-icon\"\n                            group=\"navigation\"\n                            name=\"expand_more\"\n                          ></ui-icon>\n                        </ui-button>\n                        <ui-dropdown #moreMenu [tabIndex]=\"-1\" [hidden]=\"true\">\n                          <ui-sub-menu [items]=\"action.items\" [args]=\"selectedRows\"></ui-sub-menu>\n                        </ui-dropdown>\n                      </ng-container>\n                      <ng-template #buttonTemplate>\n                        <ui-button\n                          [tabIndex]=\"1\"\n                          [varient]=\"action.varient || 'fill'\"\n                          [color]=\"action.color || 'secondary'\"\n                          (clickCallback)=\"action.click($event, selectedRows)\"\n                          ><ui-icon\n                            *ngIf=\"action.icon\"\n                            [group]=\"action.icon.group\"\n                            [name]=\"action.icon.name\"\n                            [type]=\"action.icon.type\"\n                          ></ui-icon\n                          >{{ action.text }}</ui-button\n                        >\n                      </ng-template>\n                    </ng-container>\n                  </ng-container>\n\n                  <ng-container *ngIf=\"additionalprintActions?.length > 0\">\n                    <ng-container *ngFor=\"let action of additionalprintActions\">\n                      <ng-container\n                        *ngIf=\"action.items?.length > 0; else additionalprintbuttonTemplate\"\n                      >\n                        <ui-button\n                          *ngIf=\"action?.nodeAccessId | accessNode\"\n                          [tabIndex]=\"1\"\n                          [disabled]=\"reportLoading\"\n                          [dropdownTriggerFor]=\"moreMenu\"\n                          [varient]=\"action.varient || 'fill'\"\n                          [color]=\"action.color || 'secondary'\"\n                          [title]=\"'general.listManagement.print' | translate\"\n                        >\n                          <ui-fararu-icon [name]=\"'docs'\"></ui-fararu-icon>\n                          <ui-icon\n                            class=\"general-list-management__header-icon\"\n                            group=\"navigation\"\n                            name=\"expand_more\"\n                          ></ui-icon>\n                        </ui-button>\n                        <ui-dropdown #moreMenu [tabIndex]=\"-1\" [hidden]=\"true\">\n                          <ui-sub-menu [items]=\"action.items\" [args]=\"selectedRows\"></ui-sub-menu>\n                        </ui-dropdown>\n                      </ng-container>\n                      <ng-template #additionalprintbuttonTemplate>\n                        <ui-button\n                          [tabIndex]=\"1\"\n                          [varient]=\"action.varient || 'fill'\"\n                          [color]=\"action.color || 'secondary'\"\n                          (clickCallback)=\"action.click($event, selectedRows)\"\n                          ><ui-icon\n                            *ngIf=\"action.icon\"\n                            [group]=\"action.icon.group\"\n                            [name]=\"action.icon.name\"\n                            [type]=\"action.icon.type\"\n                          ></ui-icon\n                          >{{ action.text }}</ui-button\n                        >\n                      </ng-template>\n                    </ng-container>\n                  </ng-container>\n\n                  <ng-container *ngIf=\"menuItems?.importFiles.length > 0\">\n                    <ui-button\n                      [tabIndex]=\"1\"\n                      [varient]=\"'fill'\"\n                      [color]=\"'secondary'\"\n                      (clickCallback)=\"openUploadFromExcelModal()\"\n                      [appShortcut]=\"'control+u'\"\n                      [tagName]=\"'button-group'\"\n                      [groupTemplate]=\"downloadExcelTemplateActionTemplate\"\n                      [title]=\"\n                        ('general.listManagement.uploadFromExcelOperation' | translate) +\n                        ' ctrl + u'\n                      \"\n                    >\n                      <ui-fararu-icon [name]=\"'excel'\" [color]=\"'on-primary'\"></ui-fararu-icon>\n                    </ui-button>\n                    <ng-template #downloadExcelTemplateActionTemplate>\n                      <ui-sub-menu [items]=\"downloadExcelTemplateActions\"></ui-sub-menu>\n                    </ng-template>\n                  </ng-container>\n\n                  <ng-container *ngIf=\"allowReorder && (hasEditAccess || hasAddAccess)\">\n                    <ui-button\n                      *ngIf=\"inReorderMode && enableReorderButton?.nodeAccessId | accessNode\"\n                      [tabIndex]=\"1\"\n                      [varient]=\"enableReorderButton.varient || 'fill'\"\n                      [appShortcut]=\"enableReorderButton.shortcut\"\n                      [color]=\"enableReorderButton.color || 'secondary'\"\n                      [title]=\"enableReorderButton.tooltip\"\n                      (clickCallback)=\"enableReorderButton.click($event)\"\n                    >\n                      <ui-fararu-icon\n                        [name]=\"enableReorderButton.fararuIcon.name\"\n                        [size]=\"enableReorderButton.fararuIcon.size\"\n                        [color]=\"enableReorderButton.fararuIcon.color\"\n                      ></ui-fararu-icon>\n\n                      {{ enableReorderButton.text }}\n                    </ui-button>\n                  </ng-container>\n\n                  <ui-button *ngIf=\"reportLoading\" [varient]=\"'fill'\" [color]=\"'secondary'\">\n                    <ui-icon\n                      (click)=\"cancelPdfDownload()\"\n                      color=\"success\"\n                      type=\"outline\"\n                      group=\"content\"\n                      name=\"clear\"\n                    ></ui-icon>\n                    {{ 'general.listManagement.downloading_print_file' | translate }}\n                    {{ reportProgress }} %\n                  </ui-button>\n\n                  <ng-container *ngIf=\"deleteActions?.length > 0\">\n                    <ng-container\n                      *ngIf=\"deleteActions?.length > 1; else singleDeleteButtonTemplate\"\n                    >\n                      <ui-button\n                        [dropdownTriggerFor]=\"deleteMenu\"\n                        [varient]=\"'fill'\"\n                        [color]=\"'secondary'\"\n                        [title]=\"'general.listManagement.remove' | translate\"\n                      >\n                        <ui-fararu-icon [name]=\"'delete'\"></ui-fararu-icon>\n                        <ui-icon\n                          class=\"general-list-management__header-icon\"\n                          group=\"navigation\"\n                          name=\"expand_more\"\n                        ></ui-icon>\n                      </ui-button>\n                      <ui-dropdown #deleteMenu [hidden]=\"true\">\n                        <ui-sub-menu [items]=\"deleteActions\" [args]=\"selectedRows\"></ui-sub-menu>\n                      </ui-dropdown>\n                    </ng-container>\n                    <ng-template #singleDeleteButtonTemplate>\n                      <ui-button\n                        [varient]=\"'fill'\"\n                        [color]=\"'secondary'\"\n                        [title]=\"'general.listManagement.delete' | translate\"\n                        (clickCallback)=\"multipleDeleteHandler()\"\n                      >\n                        <ui-fararu-icon [name]=\"'delete'\"></ui-fararu-icon>\n                      </ui-button>\n                    </ng-template>\n                  </ng-container>\n                </ng-container>\n\n                <ng-template #reorderModeHeader>\n                  <ng-container *ngIf=\"inReorderMode\">\n                    <ui-button\n                      *ngIf=\"inReorderMode\"\n                      [tabIndex]=\"1\"\n                      [varient]=\"saveReorderButton.varient || 'fill'\"\n                      [appShortcut]=\"saveReorderButton.shortcut\"\n                      [color]=\"saveReorderButton.color || 'secondary'\"\n                      [title]=\"saveReorderButton.tooltip\"\n                      (clickCallback)=\"saveReorderButton.click($event)\"\n                    >\n                      <ui-fararu-icon\n                        [name]=\"saveReorderButton.fararuIcon.name\"\n                        [size]=\"saveReorderButton.fararuIcon.size\"\n                        [color]=\"saveReorderButton.fararuIcon.color\"\n                      ></ui-fararu-icon>\n\n                      {{ saveReorderButton.text }}\n                    </ui-button>\n\n                    <ui-button\n                      [tabIndex]=\"1\"\n                      [varient]=\"orderUpAction.varient\"\n                      [appShortcut]=\"orderUpAction.shortcut\"\n                      [color]=\"orderUpAction.color\"\n                      [title]=\"orderUpAction.tooltip\"\n                      (clickCallback)=\"orderUpAction.click($event)\"\n                    >\n                      <ui-fararu-icon\n                        [name]=\"orderUpAction.fararuIcon.name\"\n                        [size]=\"orderUpAction.fararuIcon.size\"\n                        [color]=\"orderUpAction.fararuIcon.color\"\n                      ></ui-fararu-icon>\n\n                      {{ orderUpAction.text }}\n                    </ui-button>\n\n                    <ui-button\n                      [tabIndex]=\"1\"\n                      [varient]=\"orderDownAction.varient\"\n                      [appShortcut]=\"orderDownAction.shortcut\"\n                      [color]=\"orderDownAction.color\"\n                      [title]=\"orderDownAction.tooltip\"\n                      (clickCallback)=\"orderDownAction.click($event)\"\n                    >\n                      <ui-fararu-icon\n                        [name]=\"orderDownAction.fararuIcon.name\"\n                        [size]=\"orderDownAction.fararuIcon.size\"\n                        [color]=\"orderDownAction.fararuIcon.color\"\n                      ></ui-fararu-icon>\n\n                      {{ orderDownAction.text }}\n                    </ui-button>\n\n                    <ui-button\n                      [tabIndex]=\"1\"\n                      [varient]=\"'fill'\"\n                      [color]=\"'secondary'\"\n                      [title]=\"'btns_text.cancel' | translate\"\n                      (clickCallback)=\"reloadHandler()\"\n                    >\n                      <ui-fararu-icon\n                        [name]=\"'exit'\"\n                        [size]=\"'x1'\"\n                        [color]=\"'content-secondary'\"\n                      ></ui-fararu-icon>\n                    </ui-button>\n                  </ng-container>\n                </ng-template>\n              </div>\n            </ng-container>\n          </section>\n\n          <section class=\"general-list-management__header-col-wrap\">\n            <ui-fararu-icon\n              *ngIf=\"floatToolbar\"\n              class=\"general-list-management__header-float-button\"\n              [name]=\"'dots'\"\n              [size]=\"'x2'\"\n              [color]=\"'primary'\"\n            ></ui-fararu-icon>\n            <div class=\"general-list-management__header-col\">\n              <span\n                class=\"general-list-management__save-badge\"\n                [class.general-list-management__save-badge--show]=\"showShowPlanSaveMessage\"\n              >\n                <ui-fararu-icon [name]=\"'save'\" [size]=\"'x1'\"></ui-fararu-icon>\n                {{ 'general.simpleList.layoutUpdatingMessage' | translate }}\n              </span>\n              <ui-button\n                [tabIndex]=\"1\"\n                (clickCallback)=\"reloadHandler()\"\n                [appShortcut]=\"'control+shift+r'\"\n                [title]=\"('general.listManagement.refresh' | translate) + ' Control+Shift+R'\"\n                [varient]=\"'text'\"\n                [color]=\"'secondary'\"\n                [isIcon]=\"true\"\n              >\n                <ui-fararu-icon [name]=\"'reload'\"></ui-fararu-icon>\n              </ui-button>\n              @if(!hasTree){\n              <ui-button\n                [title]=\"'general.simpleList.download' | translate\"\n                [varient]=\"'text'\"\n                [color]=\"'secondary'\"\n                (clickCallback)=\"downloadHandler(generalSimpleList.gridComponent)\"\n                [isIcon]=\"true\"\n                *ngIf=\"\n                  showDownloadBtn && hasDownloadAccess && !downloadLoadingIsShow;\n                  else downloadProgress\n                \"\n              >\n                <ui-fararu-icon [name]=\"'excel'\"></ui-fararu-icon>\n              </ui-button>\n              <ng-template #downloadProgress>\n                <ui-button\n                  *ngIf=\"showDownloadBtn && hasDownloadAccess\"\n                  [varient]=\"'text'\"\n                  [color]=\"'secondary'\"\n                >\n                  <ui-icon\n                    (click)=\"cancelDownload()\"\n                    color=\"success\"\n                    type=\"outline\"\n                    group=\"content\"\n                    name=\"clear\"\n                  ></ui-icon>\n                  {{ 'general.simpleList.downloading' | translate }} {{ progress }} %\n                </ui-button>\n              </ng-template>\n              }\n              <ng-container *ngIf=\"gridCustomActions?.length > 0\">\n                <ng-container *ngFor=\"let action of gridCustomActions\">\n                  <ng-container *ngIf=\"action.items?.length > 0; else buttonTemplate\">\n                    <ui-button\n                      [dropdownTriggerFor]=\"moreMenu\"\n                      [dropdownAlignment]=\"'end'\"\n                      [varient]=\"action.varient || 'text'\"\n                      [color]=\"action.color || 'secondary'\"\n                      [isIcon]=\"!action.text\"\n                      >{{ action.text }}\n                      <ui-fararu-icon [name]=\"'arrow-bottom'\"></ui-fararu-icon>\n                    </ui-button>\n                    <ui-dropdown #moreMenu>\n                      <ui-sub-menu\n                        [items]=\"action.items\"\n                        [args]=\"selectedRows\"\n                        [keepSelectedRow]=\"true\"\n                      ></ui-sub-menu>\n                    </ui-dropdown>\n                  </ng-container>\n                  <ng-template #buttonTemplate>\n                    <ui-button\n                      [varient]=\"action.varient || 'text'\"\n                      [color]=\"action.color || 'secondary'\"\n                      [disabled]=\"!!action.disabled\"\n                      [isIcon]=\"action.icon && !action.text\"\n                      (clickCallback)=\"onClick($event, selectedRows, action)\"\n                      ><ui-icon\n                        *ngIf=\"action.icon\"\n                        [group]=\"action.icon.group\"\n                        [name]=\"action.icon.name\"\n                        [type]=\"action.icon.type\"\n                      ></ui-icon\n                      >{{ action.text }}</ui-button\n                    >\n                  </ng-template>\n                </ng-container>\n              </ng-container>\n              <ng-container *ngIf=\"!hasTree\">\n                <ui-pull-down\n                  [toggler]=\"showPlanButton\"\n                  [content]=\"showPlanContent\"\n                  [reverseAlign]=\"true\"\n                >\n                  <ng-template #showPlanButton>\n                    <ui-button [varient]=\"'text'\" [color]=\"'secondary'\" [isIcon]=\"true\">\n                      <ui-fararu-icon [name]=\"'dots'\"></ui-fararu-icon>\n                    </ui-button>\n                  </ng-template>\n                  <ng-template #showPlanContent>\n                    <section class=\"general-list-management-grid-layout-menu\">\n                      <ui-tabs\n                        [height]=\"'100%'\"\n                        [overflow]=\"'hidden'\"\n                        [hideBorder]=\"true\"\n                        [hideBackground]=\"true\"\n                        (tabSelectedCallback)=\"gridLayoutTabChangeHandler($event)\"\n                      >\n                        <ui-tab\n                          [text]=\"'general.simpleList.selectColumn' | translate\"\n                          [iconName]=\"'table-col'\"\n                          [id]=\"columnPickerTabId\"\n                          [contentHeight]=\"'100%'\"\n                        >\n                          <section #columnPickerContainer class=\"h-100 w-100\"></section>\n                        </ui-tab>\n                        <ui-tab\n                          [text]=\"'general.simpleList.layout' | translate\"\n                          [iconName]=\"'table-layout'\"\n                          [active]=\"true\"\n                          [contentHeight]=\"'100%'\"\n                        >\n                          <app-simple-list-show-plan\n                            *ngIf=\"generalSimpleList?.gridComponent\"\n                            #simpleListShowPlanRef\n                            [gridName]=\"gridName?.single || oDataEntity || oDataTable\"\n                            [uniquePageName]=\"uniquePageName\"\n                            [gridComponent]=\"generalSimpleList?.gridComponent\"\n                            (progressCallback)=\"showPlanProgressHandler($event)\"\n                            (updateCurrentShowPlanProgressCallback)=\"\n                              updateCurrentShowPlanProgressHandler($event)\n                            \"\n                          ></app-simple-list-show-plan>\n                        </ui-tab>\n                      </ui-tabs>\n                    </section>\n                  </ng-template>\n                </ui-pull-down>\n              </ng-container>\n            </div>\n          </section>\n        </header>\n        <div class=\"general-list-management__content\">\n          <app-general-simple-list\n            *ngIf=\"fields || hasTree\"\n            #simpleList\n            [title]=\"title\"\n            [uniquePageName]=\"uniquePageName\"\n            [identityFieldName]=\"identityFieldName\"\n            [gridName]=\"gridName\"\n            [loadingIsShow]=\"loadingIsShow\"\n            [hideRemoveButton]=\"hideRemoveButton\"\n            [hideEditButton]=\"hideEditButton\"\n            [disabled]=\"disabled\"\n            [fields]=\"fields\"\n            [items]=\"items\"\n            [oDataServer]=\"oDataServer\"\n            [oDataTable]=\"oDataTable\"\n            [oDataEntity]=\"oDataEntity\"\n            [hasRelatedOrigins]=\"hasRelatedOrigins\"\n            [oDataHttpHeaders]=\"oDataHttpHeaders\"\n            [oDataFilters]=\"oDataFilters\"\n            [childItemsPath]=\"childItemsPath\"\n            [hiddenData]=\"hiddenData\"\n            [reload]=\"reload\"\n            [isMultipleSelect]=\"isMultipleSelect\"\n            [gridCustomActions]=\"gridCustomActions\"\n            [gridRowMoreActions]=\"gridRowMoreActions\"\n            [gridRowIconActions]=\"gridRowIconActions\"\n            [gridCollapseRows]=\"gridCollapseRows\"\n            [gridCollapseLevel]=\"gridCollapseLevel\"\n            [removeApi]=\"removeApi\"\n            [downloadCallback]=\"downloadCallback\"\n            [beforeRemoveCallback]=\"beforeRemoveCallback\"\n            [removeCallback]=\"removeCallback\"\n            [afterRemoveCallback]=\"afterRemoveHandler\"\n            [editCallback]=\"editCallback\"\n            [selectCallback]=\"selectHandler\"\n            (gridLoaded)=\"simpleListLoaded($event)\"\n            (gridLoadStarted)=\"simpleListLoadStarted($event)\"\n            [showDownloadBtn]=\"showDownloadBtn\"\n            (onItemChecked)=\"onItemCheckedHandler($event)\"\n            [hideCheckboxInCheckableGrid]=\"hideCheckboxInCheckableGrid\"\n            [apiServer]=\"apiServer\"\n            [apiHeaders]=\"apiHeaders\"\n            [apiUrl]=\"apiUrl\"\n            [transformer]=\"transformer\"\n            [isReorderActive]=\"inReorderMode\"\n            (onRowOrderChange)=\"onRowOrderChanged($event)\"\n            [reorderFieldName]=\"reorderFieldName\"\n            [reorderCondition]=\"reorderCondition\"\n            [isActive]=\"isActive\"\n            [beforeEditCallback]=\"beforeEditCallback\"\n            [rowFormatCallback]=\"rowFormatCallback\"\n            [cellFormatCallback]=\"cellFormatCallback\"\n            (gridItemClickCallback)=\"gridItemClickHandler($event)\"\n            (gridItemDoubleClicked)=\"gridItemDoubleClickHandler($event)\"\n            [rowHasDetailCallBack]=\"rowHasDetailCallBack\"\n            [getDetailItemsCallBack]=\"getDetailItemsCallBack\"\n            [detailColumnsConfig]=\"detailColumnsConfig\"\n            (gridColumnsChangeCallback)=\"gridColumnsChangeHandler()\"\n            [viewAccessNodeId]=\"viewAccessNodeId\"\n            [deleteAccessNodeId]=\"deleteAccessNodeId\"\n            [editAccessNodeId]=\"editAccessNodeId\"\n            [newAccessNodeId]=\"newAccessNodeId\"\n            [downloadAccessNodeId]=\"downloadAccessNodeId\"\n            [treeIdBinding]=\"treeIdBinding\"\n            [treeTitleBinding]=\"treeTitleBinding\"\n            [treeExpandedBinding]=\"treeExpandedBinding\"\n            [treeChildrenBinding]=\"treeChildrenBinding\"\n            [treeExpandDepth]=\"treeExpandDepth\"\n            [treeSelectedNode]=\"treeSelectedNode\"\n            [treeSideIconTemplate]=\"treeSideIconTemplate\"\n            (gridLoaded)=\"onGridLoaded()\"\n            (gridLoadStarted)=\"onGridLoadStarted()\"\n            [footerAggregateData]=\"footerAggregateData\"\n          >\n          </app-general-simple-list>\n          <ng-content></ng-content>\n        </div>\n        <span\n          *ngIf=\"loadingIsShow\"\n          class=\"general-list-management__overlay\"\n          [class.general-list-management__overlay--show]=\"disabled\"\n          ><ui-spinner [show]=\"loadingIsShow\"></ui-spinner\n        ></span>\n      </section>\n    </ng-template>\n  </ng-template>\n</ui-access-node>\n","import { HttpHeaders } from '@angular/common/http';\nimport { QueryBuilder } from 'odata-query-builder';\nimport { GeneralODataService } from '../../../api/general-odata.service';\nimport {\n  GeneralFieldConfigInterface,\n  GeneralODataServiceInterface,\n  SelectFormFieldConfig,\n} from '../../../models';\n\nexport async function bindForm(\n  generalOdataService: GeneralODataService,\n  formFields: GeneralFieldConfigInterface[],\n  data?: any,\n  primaryFields?: any\n): Promise<GeneralFieldConfigInterface[]> {\n  const fields = [...formFields];\n  await Promise.all(\n    fields.map(async field => {\n      const primaryData = primaryFields[field.name];\n      field.readonly = primaryData?.readonly;\n      const formConfig = field.formConfig;\n      if (formConfig) {\n        if (primaryData?.formConfig) {\n          formConfig.hidden = primaryData.formConfig.hidden;\n          formConfig.disabled = primaryData.formConfig.disabled;\n        }\n        if (formConfig.type == 'checkbox' && formConfig.checkBoxConfig?.bindNumberValue) {\n          if (formConfig.value != null && formConfig.defaultValue != null) {\n            formConfig.value = formConfig.defaultValue;\n          }\n        }\n\n        if (data) {\n          const value = data[formConfig.binding || field.name];\n          if (value == undefined) return;\n          formConfig.value = value;\n\n          if (\n            formConfig.type == 'select' &&\n            (!formConfig.options?.length ||\n              (formConfig.selectConfig?.oDataService && !formConfig.selectConfig?.isLoaded))\n          ) {\n            let fieldNameValue = null;\n            if (formConfig.value != null && formConfig.selectConfig?.oDataService) {\n              fieldNameValue = await getRefFieldDataFromOData(\n                formConfig.selectConfig.oDataService,\n                generalOdataService,\n                formConfig.selectConfig.oDataEntity,\n                {},\n                formConfig.value,\n                [formConfig.selectConfig?.bindLabel || 'text'],\n                formConfig.selectConfig?.bindValue || 'id'\n              );\n            } else if (\n              formConfig.type == 'select' &&\n              formConfig.value != null &&\n              formConfig.selectConfig?.oDataEntity\n            ) {\n              fieldNameValue = await getRefFieldDataFromOData(\n                formConfig.selectConfig.oDataService,\n                generalOdataService,\n                formConfig.selectConfig.oDataEntity,\n                formConfig.selectConfig.oDataHttpHeaders,\n                formConfig.value,\n                [formConfig.selectConfig?.bindLabel || 'text'],\n                formConfig.selectConfig?.bindValue || 'id'\n              );\n            }\n            const options: any[] = [\n              {\n                [formConfig.selectConfig?.bindValue || 'id']: formConfig.value,\n                [formConfig.selectConfig?.bindLabel || 'text']: fieldNameValue\n                  ? fieldNameValue[formConfig.selectConfig?.bindLabel || 'text']\n                  : data[field.name] || '...',\n              },\n            ];\n            (field.formConfig as SelectFormFieldConfig).options = options;\n          }\n\n          if (\n            formConfig.type == 'identity-selector' &&\n            formConfig.identitySelectorConfig &&\n            formConfig.value != null\n          ) {\n            const valueData = await getRefFieldDataFromOData(\n              formConfig.identitySelectorConfig.oDataService,\n              generalOdataService,\n              formConfig.identitySelectorConfig.oDataEntity,\n              formConfig.identitySelectorConfig.oDataHttpHeaders,\n              formConfig.value,\n              [\n                formConfig.identitySelectorConfig.inputField,\n                formConfig.identitySelectorConfig.secondInputField,\n                formConfig.identitySelectorConfig.displayField,\n              ],\n              formConfig.identitySelectorConfig.resultField\n            );\n            formConfig.identitySelectorConfig.valueData = valueData;\n          }\n        } else {\n          formConfig.value = formConfig?.defaultValue;\n          if (formConfig.type == 'identity-selector' && formConfig.identitySelectorConfig) {\n            if (formConfig.defaultValue != null)\n              formConfig.value =\n                formConfig.defaultValue[formConfig.identitySelectorConfig.resultField];\n            formConfig.identitySelectorConfig.valueData = formConfig.defaultValue;\n          }\n        }\n      }\n    })\n  );\n  return fields;\n}\n\nexport async function getRefFieldDataFromOData(\n  oDataService: GeneralODataServiceInterface,\n  generalOdataService: GeneralODataService,\n  oDataEntity: string,\n  oDataHttpHeaders: { [key: string]: string },\n  refFieldValue: any,\n  selectFields: string[],\n  bindValue: string\n): Promise<any | null> {\n  return new Promise<string>(resolve => {\n    const query = new QueryBuilder()\n      .top(1)\n      .filter(f => f.filterExpression(bindValue, 'eq', refFieldValue))\n      .toQuery();\n\n    if (oDataService)\n      oDataService.get(query).subscribe({\n        next: data => {\n          const output = data?.value?.length ? data.value[0] : null;\n          resolve(output);\n        },\n        error: () => {\n          resolve(null);\n        },\n      });\n    else {\n      generalOdataService\n        .getByEntity(oDataEntity, query, new HttpHeaders(oDataHttpHeaders))\n        .subscribe({\n          next: (data: any) => {\n            const output = data?.value?.length ? data.value[0] : null;\n            resolve(output);\n          },\n          error: () => {\n            resolve(null);\n          },\n        });\n    }\n  });\n}\n\nexport async function handleBeforeSaveCallBack(\n  data: any,\n  beforeSaveCallback?: Function\n): Promise<null | string> {\n  let result = null;\n  if (beforeSaveCallback) result = beforeSaveCallback(data);\n  if (result == null) return null;\n  else {\n    if (result instanceof String) {\n      return result as string;\n    } else {\n      try {\n        const r = await result;\n        if (r == null) return null;\n        else {\n          return r;\n        }\n      } catch (error) {\n        return error.toString();\n      }\n    }\n  }\n}\n","export const searchTree = <TYPE = any>(\n  list: TYPE[],\n  predicate: (item: TYPE) => boolean,\n  childrenBinding: string = 'children',\n  parent: TYPE = null\n): { item: TYPE; parent: TYPE }[] => {\n  const results: { item: TYPE; parent: TYPE }[] = [];\n\n  for (const item of list) {\n    if (predicate(item)) {\n      results.push({ item, parent });\n    }\n\n    if (item[childrenBinding]?.length) {\n      const childResults = searchTree(item[childrenBinding], predicate, childrenBinding, item);\n      results.push(...childResults);\n    }\n  }\n\n  return results;\n};\n","import { Component, Input, OnInit } from \"@angular/core\";\n\n@Component({\n  selector: \"ui-validation\",\n  templateUrl: \"./validation.component.html\",\n  styleUrls: [\"./validation.component.scss\"],\n})\nexport class ValidationComponent implements OnInit {\n  @Input() visible: boolean = true;\n  @Input() message: string;\n\n  constructor() {}\n\n  ngOnInit(): void {}\n}\n","<p class=\"validation\" [ngClass]=\"{ 'validation--show': visible }\">\n  {{ message }}<ng-content></ng-content>\n</p>\n","import { Component, Input, OnInit } from '@angular/core';\n\n@Component({\n  selector: 'ui-fieldset',\n  templateUrl: './fieldset.component.html',\n  styleUrls: ['./fieldset.component.scss'],\n})\nexport class FieldsetComponent implements OnInit {\n  @Input() title: string;\n  constructor() {}\n\n  ngOnInit(): void {}\n}\n","<fieldset class=\"fieldset\">\n  <legend class=\"fieldset__title\">{{ title }}</legend>\n  <section class=\"fieldset__content\"><ng-content></ng-content></section>\n</fieldset>\n","import {\n  Component,\n  EventEmitter,\n  Input,\n  OnChanges,\n  OnDestroy,\n  OnInit,\n  Output,\n  SimpleChanges,\n} from '@angular/core';\nimport { AbstractControl, FormBuilder, FormGroup, ValidatorFn, Validators } from '@angular/forms';\nimport { TranslateService } from '@ngx-translate/core';\nimport { Subscription } from 'rxjs';\nimport { GeneralODataService } from '../../../api/general-odata.service';\nimport {\n  IdentitySelectorFormFieldConfig,\n  PropFormFieldConfig,\n  SelectFormFieldConfig,\n  TreeSelectFormFieldConfig,\n} from '../../../models';\nimport { GeneralFieldConfigInterface } from '../../../models/general-field-config.interface';\nimport { GeneralFormFieldValidatorInterface } from '../../../models/general-form-field-validator.interface';\nimport {\n  GeneralFormFieldsetConfigInterface,\n  GeneralFormFieldsetSectionInterface,\n} from '../../../models/general-form-fieldset-config.interface';\nimport { deepCopy, deepEqual } from '../../../utils';\nimport { propertyOf } from '../../../utils/property-of';\nimport { searchTree } from '../../../utils/search-tree';\nimport { ModalService } from '../../modal/modal.service';\nimport { FararuToastService } from '../../toast';\nimport { getRefFieldDataFromOData } from '../general-list-data-entry/list-data-entry-functions';\n\nexport interface SimpleDataEntrySubmitEvent<T> extends SubmitEvent {\n  reactiveForm: FormGroup;\n  data: T;\n  formIsValid: boolean;\n}\nexport type DataEntryFieldConfigInterface = {\n  [key: string]: string | number | boolean | null | object;\n};\n\nexport type DataEntryConfigInterface<T> = {\n  [K in keyof T]: Omit<GeneralFieldConfigInterface<T, T[K]>, 'name'>;\n};\n\ninterface FieldsetFields<T> extends GeneralFormFieldsetSectionInterface {\n  fields?: GeneralFieldConfigInterface<T>[];\n}\n\n@Component({\n  selector: 'app-general-simple-data-entry',\n  templateUrl: './general-simple-data-entry.component.html',\n  styleUrls: ['./general-simple-data-entry.component.scss'],\n})\nexport class GeneralSimpleDataEntryComponent<T extends DataEntryFieldConfigInterface = any>\n  implements OnInit, OnChanges, OnDestroy\n{\n  @Input() config?: DataEntryConfigInterface<T>;\n  @Input() header: string = null;\n  @Input() id?: string;\n  @Input() disabled: boolean;\n  @Input() fields: GeneralFieldConfigInterface<T>[];\n  @Input() columnCount: number = 2;\n  @Input() formGroup: FormGroup;\n  @Input() saveButtonFor?: string;\n  @Input() cancelButtonFor?: string;\n  @Input() fieldsetConfig?: GeneralFormFieldsetConfigInterface;\n  @Input() noTopGutter?: boolean;\n  @Input() noGutter?: boolean;\n  @Input() noScroll?: boolean;\n  @Input() hideCancelButton?: boolean = false;\n  @Input() hideReloadButton?: boolean = true;\n  @Input() hideSaveButton?: boolean = false;\n  @Input() hideBorder?: boolean;\n  @Input() hideFooter?: boolean;\n  @Input() hideSideSpacing?: boolean;\n  @Input() modalMode?: boolean;\n  @Input() showFooterOnTop?: boolean;\n\n  @Output() saveCallback = new EventEmitter<T>();\n  @Output() formReadyCallback = new EventEmitter<any>();\n  @Output() submitCallback = new EventEmitter<SimpleDataEntrySubmitEvent<T>>();\n  @Output() cancelCallback = new EventEmitter();\n  @Output() reloadCallback = new EventEmitter();\n  @Output() formChanged: EventEmitter<{\n    values: T;\n    errors: string[];\n  }> = new EventEmitter();\n\n  Math = Math;\n\n  /**\n   * @internal\n   * This property is internal and may become `private` in future versions.\n   * Avoid using it directly in your code.\n   */\n  reactiveForm?: FormGroup = null;\n  submitted: boolean = false;\n  nowTime?: string;\n  adjustedFieldsets?: FieldsetFields<T>[] = [];\n  notAdjustedFields?: GeneralFieldConfigInterface<T>[] = [];\n  needToAutoFocus?: boolean | null = null;\n  readOnlyMap: { [key: string]: boolean } = {};\n  hiddenMap: { [key: string]: boolean } = {};\n  userChangedMap: { [key: string]: boolean } = {};\n  readyToBindFields: { [key: string]: { value?: any; config?: GeneralFieldConfigInterface } } = {};\n  validationMessages: { [fieldName: string]: { [validatorType: string]: string } } = {};\n\n  private _initialModelStringify: string = null;\n  valueSubscription: Subscription;\n  private dataForBinding: any;\n\n  // @ViewChild('myForm', { static: false }) myForm: NgForm;\n  constructor(\n    protected fb: FormBuilder,\n    protected toastService: FararuToastService,\n    protected translateService?: TranslateService,\n    protected generalOdataService?: GeneralODataService,\n    protected modalService?: ModalService\n  ) {}\n\n  ngOnInit(): void {}\n\n  ngOnDestroy(): void {\n    this.valueSubscription?.unsubscribe();\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    const configChanges = changes[propertyOf<GeneralSimpleDataEntryComponent>('config')];\n    if (configChanges && configChanges.currentValue) {\n      const cnfg: DataEntryConfigInterface<T> = configChanges.currentValue;\n      const fieldsTmp = [];\n      Object.keys(cnfg).forEach(key => {\n        const val = cnfg[key];\n        if (val.formConfig) {\n          const field = { name: key, ...cnfg[key] };\n          if (!field.formConfig.label) field.formConfig.label = field.label;\n          if (field.formConfig?.type == 'select' && field.formConfig.options == null)\n            field.formConfig.options = [];\n          fieldsTmp.push(field);\n        }\n      });\n\n      fieldsTmp.sort((cfg1, cfg2) => {\n        const order1 = cfg1.formConfig?.order != null ? cfg1.formConfig?.order : 100;\n        const order2 = cfg2.formConfig?.order != null ? cfg2.formConfig?.order : 100;\n        return order1 - order2;\n      });\n      this.fields = [...fieldsTmp];\n    }\n\n    if (changes[propertyOf<GeneralSimpleDataEntryComponent<any>>('modalMode')]) {\n      if (this.modalMode) {\n        this.noGutter = typeof this.noGutter === 'undefined' ? true : this.noGutter;\n        this.noScroll = typeof this.noScroll === 'undefined' ? true : this.noScroll;\n        this.hideBorder = typeof this.hideBorder === 'undefined' ? true : this.hideBorder;\n        this.hideFooter = typeof this.hideFooter === 'undefined' ? true : this.hideFooter;\n      }\n    }\n    this.nowTime = new Date().getTime().toString();\n    this.submitted = false;\n\n    const formGroupChanges = changes['formGroup'];\n    if (formGroupChanges && formGroupChanges.currentValue !== formGroupChanges.previousValue) {\n      this.reactiveForm = this.formGroup;\n      this.reactiveForm?.valueChanges.subscribe(values => {\n        this.formChanged?.emit({\n          values,\n          errors: this.getFieldErrors(this.fields, this.reactiveForm),\n        });\n      });\n    }\n\n    const fieldsetConfigChanges = changes['fieldsetConfig'];\n    if (fieldsetConfigChanges && this.fieldsetConfig) {\n      this.adjustFieldsInFieldsets();\n    }\n\n    const fieldsChanges = changes['fields'];\n    if (fieldsChanges || configChanges?.currentValue) {\n      if (!this.formGroup) this.reactiveForm = null;\n      this.addControls(this.fields);\n      this._initialModelStringify = JSON.stringify(this.reactiveForm.value);\n    }\n\n    //#region autoFocus\n    if (this.needToAutoFocus === null) {\n      this.needToAutoFocus = !this.disabled;\n    }\n    const disabledChanges = changes['disabled'];\n    if (disabledChanges && disabledChanges.currentValue != disabledChanges.previousValue) {\n      this.needToAutoFocus = !this.disabled;\n    }\n\n    if (this.needToAutoFocus) {\n      this.autoFocus(this.fields, this.adjustedFieldsets);\n      this.needToAutoFocus = false;\n    }\n    //#endregion autoFocus\n\n    if (\n      changes['disabled'] &&\n      changes['disabled'].currentValue !== changes['disabled'].previousValue\n    ) {\n      if (this.disabled) this.reactiveForm?.disable({ onlySelf: true, emitEvent: false });\n      else {\n        this.fields.forEach(field => {\n          const formConfig = field.formConfig;\n          if (formConfig && formConfig.binding) {\n            const fc = field.formConfig.binding\n              ? this.reactiveForm?.get(field.formConfig.binding)\n              : this.reactiveForm?.get(field.name);\n            if (fc && !formConfig.disabled) {\n              if (formConfig?.disabled2 && typeof formConfig?.disabled2 === 'object') {\n                const mappingObj = formConfig.disabled2;\n                const ss = mappingObj.setup(\n                  this.formDataWithFieldNamesAndBindings,\n                  this.oldValues2\n                    ? {\n                        ...this.oldValues2,\n                      }\n                    : undefined\n                );\n                if (!ss && !fc.enabled) fc.enable({ onlySelf: true, emitEvent: false });\n              } else fc.enable({ onlySelf: true, emitEvent: false });\n            }\n          }\n        });\n      }\n    }\n  }\n\n  oldValues2: any = undefined;\n  observeFieldChanges(values: any, fieldConfig: GeneralFieldConfigInterface<T>) {\n    if (deepEqual(this.oldValues2, values)) return;\n\n    this.fields.forEach(field => {\n      if (field.formConfig?.disabled2 && typeof field.formConfig?.disabled2 === 'object') {\n        const mappingObj = field.formConfig.disabled2;\n\n        if (mappingObj.dependencies.includes(fieldConfig.name)) {\n          const ss = mappingObj.setup(values, this.oldValues2 && { ...this.oldValues2 });\n          const fc = field.formConfig.binding\n            ? this.reactiveForm.get(field.formConfig.binding)\n            : this.reactiveForm.get(field.name);\n          if (ss && !fc.disabled) fc.disable();\n          else if (!ss && fc.disabled) fc.enable();\n        }\n      }\n\n      if (typeof field.formConfig?.hidden2 === 'object') {\n        const mappingObj = field.formConfig.hidden2;\n\n        if (mappingObj.dependencies.includes(fieldConfig.name)) {\n          const hidden = mappingObj.setup(values, this.oldValues2 && { ...this.oldValues2 });\n          this.hiddenMap[field.name] = hidden;\n        }\n      }\n\n      if (typeof field.formConfig?.readonly2 === 'object') {\n        const mappingObj = field.formConfig.readonly2;\n        if (mappingObj.dependencies.includes(fieldConfig.name)) {\n          const readonly = mappingObj.setup(values, this.oldValues2 && { ...this.oldValues2 });\n          this.readOnlyMap[field.name] = readonly;\n        }\n      }\n\n      if (typeof field.formConfig?.conditionalValue == 'function') {\n        const mappingObj = field.formConfig.conditionalValue(\n          this.userChangedMap[field.name] ?? false\n        );\n\n        if (mappingObj?.dependencies?.includes(fieldConfig.name)) {\n          const val = mappingObj.setup(values, this.oldValues2 && { ...this.oldValues2 });\n          if (val !== undefined) {\n            const cn = field.formConfig.binding || field.name;\n            const control = this.reactiveForm.get(cn);\n            if (control) control.setValue(val);\n            field.formConfig.value = val;\n          }\n        }\n      }\n\n      if (field.formConfig && typeof field.formConfig['dynamicConfig'] == 'object') {\n        const mappingObj = field.formConfig['dynamicConfig'];\n        if (mappingObj?.dependencies?.includes(fieldConfig.name) && field.formConfig) {\n          const val = mappingObj.setup(\n            values,\n            this.oldValues2 && { ...this.oldValues2 },\n            field.formConfig\n          );\n          if (val !== undefined) {\n            this.updateReadyForBinding(field.name, undefined, field);\n            this.setupControl(field);\n          }\n        }\n      }\n    });\n\n    setTimeout(() => {\n      this.oldValues2 = { ...values };\n    }, 0);\n  }\n\n  oldValues: any = {};\n  handleFormValueChanges(values: any) {\n    if (deepEqual(this.oldValues, values)) return;\n    this.oldValues = { ...values };\n    const controlNames = Object.keys(this.reactiveForm.controls);\n    for (const controlName of controlNames) {\n      const field = this.fields.find(\n        f => f.name == controlName || f.formConfig?.binding == controlName\n      );\n      if (field.formConfig?.disabled && typeof field.formConfig?.disabled == 'function') {\n        const disabled = field.formConfig.disabled(values);\n        const fc = field.formConfig.binding\n          ? this.reactiveForm.get(field.formConfig.binding)\n          : this.reactiveForm.get(field.name);\n        if (disabled) fc.disable();\n        else fc.enable();\n      }\n\n      if (field.formConfig?.readonly && typeof field.formConfig?.readonly == 'function') {\n        const readonly = field.formConfig.readonly(values);\n        this.readOnlyMap[controlName] = readonly;\n      }\n\n      if (field.formConfig?.hidden && typeof field.formConfig?.hidden == 'function') {\n        const hidden = field.formConfig.hidden(values);\n        this.hiddenMap[controlName] = hidden;\n      }\n    }\n  }\n\n  save(data: T): void {\n    this.saveCallback.emit(data);\n  }\n\n  submit(event: SubmitEvent) {\n    this.submitted = true;\n    const sev = event as SimpleDataEntrySubmitEvent<T>;\n    sev.data = this.formData;\n    sev.formIsValid = this.reactiveForm.valid;\n    sev.reactiveForm = this.reactiveForm;\n    this.submitCallback.emit(sev);\n    event.preventDefault();\n    event.stopPropagation();\n    if (this.reactiveForm.valid) {\n      this.save(this.reactiveForm.value);\n    } else {\n      this.validateAllFormFields();\n    }\n  }\n\n  cancel(): void {\n    if (Object.keys(this.userChangedMap).length > 0) {\n      this.modalService\n        .showConfirm({ description: 'آیا مطمئن هستید؟', title: 'انصراف' })\n        .then(response => {\n          if (response) {\n            this.cancelCallback.emit();\n            this.submitted = false;\n          }\n        });\n    } else {\n      this.cancelCallback.emit();\n      this.submitted = false;\n    }\n  }\n\n  reloadHandler(): void {\n    this.reloadCallback.emit();\n    this.submitted = false;\n  }\n\n  selectChanged(changedValue: any, fieldConfig: GeneralFieldConfigInterface<T>) {\n    let changedItem = null;\n    if (fieldConfig.formConfig.type == 'select') {\n      const selectConfig = fieldConfig.formConfig.selectConfig;\n      if (selectConfig?.multiple) {\n        changedItem = fieldConfig.formConfig.options?.filter(opt =>\n          changedValue.some(x => x == opt[selectConfig?.bindValue ?? 'id'])\n        );\n      } else\n        changedItem = fieldConfig.formConfig.options?.find(\n          (x: any) =>\n            x[(fieldConfig.formConfig as SelectFormFieldConfig).selectConfig?.bindValue ?? 'id'] ==\n            changedValue\n        );\n    } else if (fieldConfig.formConfig.type == 'tree') {\n      const config = fieldConfig.formConfig as TreeSelectFormFieldConfig;\n      const f = searchTree(\n        fieldConfig.formConfig.treeConfig.data,\n        (x: any) =>\n          config.treeConfig.multiple\n            ? changedValue.some(v => v == x[config.treeConfig?.bindValue ?? 'id'])\n            : changedValue == x[config.treeConfig?.bindValue ?? 'id'],\n        fieldConfig.formConfig.treeConfig.bindItems || 'items'\n      );\n      if (!config.treeConfig.multiple) changedItem = f && f.length == 1 ? f[0].item : null;\n      else {\n        changedItem = f.length > 0 ? f.map(it => it.item) : [];\n      }\n    }\n\n    if (typeof fieldConfig?.formConfig?.onChange == 'function') {\n      fieldConfig.formConfig.onChange(changedItem || null, this.reactiveForm, fieldConfig);\n    }\n\n    this.updateProps(fieldConfig, changedItem);\n  }\n\n  identitySelectorChanged(changedValue: any, fieldConfig: GeneralFieldConfigInterface<T>) {\n    this.userChanged(fieldConfig);\n    (fieldConfig.formConfig as IdentitySelectorFormFieldConfig).identitySelectorConfig.valueData =\n      changedValue;\n    if (typeof fieldConfig?.formConfig?.onChange == 'function') {\n      fieldConfig.formConfig.onChange(changedValue, this.reactiveForm, fieldConfig);\n    }\n\n    this.updateProps(fieldConfig, changedValue);\n  }\n\n  selectMenuOpened(field: GeneralFieldConfigInterface<T>) {\n    const formConfig = field.formConfig as SelectFormFieldConfig;\n    if (\n      !formConfig.selectConfig ||\n      !formConfig.selectConfig.oDataService ||\n      formConfig.selectConfig.isLoaded ||\n      formConfig.selectConfig.isLoading\n    )\n      return;\n\n    if (!formConfig.options?.length) {\n      const options: any[] = [\n        {\n          [formConfig.selectConfig?.bindValue || 'id']: ' ',\n          [formConfig.selectConfig?.bindLabel || 'text']: '...',\n        },\n      ];\n      formConfig.options = options;\n    }\n\n    formConfig.selectConfig.isLoading = true;\n\n    formConfig.selectConfig.oDataService.get('').subscribe({\n      next: res => {\n        formConfig.selectConfig.isLoading = false;\n        formConfig.selectConfig.isLoaded = true;\n        const options: any[] = res.value?.map(item => ({\n          [formConfig.selectConfig.bindValue || 'id']:\n            item[formConfig.selectConfig.bindValue || 'id'],\n          [formConfig.selectConfig.bindLabel || 'text']:\n            item[formConfig.selectConfig.bindLabel || 'text'],\n        }));\n        formConfig.options = options;\n      },\n      error: () => {\n        formConfig.selectConfig.isLoading = false;\n      },\n    });\n  }\n\n  textboxChanged(\n    changedValue: string | number | undefined,\n    fieldConfig: GeneralFieldConfigInterface<T>\n  ) {\n    if (typeof fieldConfig?.formConfig?.onChange == 'function') {\n      fieldConfig.formConfig.onChange(changedValue, this.reactiveForm, fieldConfig);\n    }\n\n    this.updateProps(fieldConfig, changedValue);\n  }\n\n  checkboxChanged(changedValue: any, fieldConfig: GeneralFieldConfigInterface<T>) {\n    if (typeof fieldConfig?.formConfig?.onChange == 'function') {\n      fieldConfig.formConfig.onChange(changedValue, this.reactiveForm, fieldConfig);\n    }\n\n    this.updateProps(fieldConfig, changedValue);\n  }\n\n  userChanged(fieldConfig: GeneralFieldConfigInterface<T>) {\n    this.userChangedMap[fieldConfig.name] = true;\n  }\n\n  updateProps(fieldConfig: GeneralFieldConfigInterface<T, any>, changedValue: any) {\n    if (!this.fields) return;\n    for (const field of this.fields) {\n      if (field?.formConfig?.type == 'prop') {\n        const f = field.formConfig as PropFormFieldConfig;\n        if (f.ref == fieldConfig.name) {\n          f.value = changedValue;\n          this.reactiveForm.get(field.name).setValue(changedValue);\n        }\n      }\n    }\n  }\n\n  getIdFromField(field: GeneralFieldConfigInterface<T>): string {\n    return field.formConfig?.id || field.name + '_' + this.nowTime;\n  }\n\n  getExpandableSize(fieldCount: number): string {\n    return Math.ceil(fieldCount / 6).toString();\n  }\n\n  getFieldsetErrorCount(fields: GeneralFieldConfigInterface<T>[]): string {\n    if (!this.submitted) return '';\n    const errorsCount = this.getFieldErrors(fields, this.reactiveForm).length;\n\n    return errorsCount > 0 ? ` (${errorsCount} خطا)` : '';\n  }\n\n  hasRequiredValidator(validators: GeneralFormFieldValidatorInterface[]): boolean {\n    if (!validators?.length) return false;\n    return !!validators.find(x => x.validator == Validators.required);\n  }\n\n  applyBooleanPropery(input: boolean | (() => boolean)): boolean {\n    return typeof input == 'function' ? input() : input;\n  }\n\n  resetForm(type: 'hard' | 'soft' = 'hard') {\n    this.submitted = false;\n    this.autoFocus(this.fields, this.adjustedFieldsets);\n    if (type == 'hard') {\n      this.reactiveForm.reset();\n      setTimeout(() => {\n        this.reactiveForm.reset();\n      }, 10);\n    } else {\n      this.fields.forEach(field => {\n        if (field.formConfig && !field.formConfig.value$) {\n          const fc = field.formConfig.binding\n            ? this.reactiveForm.get(field.formConfig.binding)\n            : this.reactiveForm.get(field.name);\n          if (fc) fc.setValue(field.formConfig.defaultValue);\n          this.reactiveForm.markAsUntouched();\n        }\n      });\n    }\n  }\n\n  get formHasChanges() {\n    return this._initialModelStringify !== JSON.stringify(this.reactiveForm.value);\n  }\n\n  get formIsValid() {\n    return !this.reactiveForm.invalid;\n  }\n\n  get formData() {\n    return this.reactiveForm.value;\n  }\n\n  private get formDataWithFieldNamesAndBindings() {\n    const values = this.reactiveForm.value;\n    Object.keys(values).forEach(key => {\n      const field = this.fields.find(f => f.formConfig?.binding == key);\n      if (field) values[field.name] = values[key];\n    });\n    return values;\n  }\n\n  private setupControl(field: GeneralFieldConfigInterface) {\n    const formConfig = field.formConfig;\n    if (formConfig && formConfig.hidden !== true) {\n      if (!formConfig.binding) formConfig.binding = field.name;\n      const control = this.reactiveForm.get(formConfig.binding);\n      control.setValidators(this.bindValidations(field, formConfig.validators));\n      control.updateValueAndValidity({\n        onlySelf: true,\n        emitEvent: false,\n      });\n    }\n  }\n\n  private addControls(fields: GeneralFieldConfigInterface<T>[]) {\n    if (!this.reactiveForm) {\n      this.reactiveForm = this.fb.group({});\n      this.reactiveForm.valueChanges.subscribe(data => {\n        this.handleFormValueChanges(data);\n        for (const name in data) {\n          if (Object.prototype.hasOwnProperty.call(data, name)) {\n            const formConfig = this.fields.find(\n              x => x.name == name || x.formConfig?.binding == name\n            )?.formConfig;\n\n            if (formConfig) {\n              formConfig.value = data[formConfig.binding];\n            }\n          }\n        }\n      });\n    }\n\n    fields?.forEach(field => {\n      const formConfig = field.formConfig;\n      if (formConfig && formConfig.hidden !== true) {\n        if (!formConfig.binding) formConfig.binding = field.name;\n        if (!formConfig.label) formConfig.label = field.label;\n        const control = this.fb.control(\n          formConfig.value != null ? formConfig.value : formConfig.defaultValue,\n          this.bindValidations(field, formConfig.validators || [])\n        );\n\n        if (formConfig.type == 'identity-selector') {\n          this.bindFormConfig(field, formConfig.defaultValue);\n        }\n\n        if (this.applyBooleanPropery(formConfig.disabled)) {\n          control.disable();\n        }\n\n        this.reactiveForm.addControl(formConfig.binding, control);\n      }\n    });\n\n    this.valueSubscription = new Subscription();\n    if (this.fields)\n      this.fields.forEach(fieldConfig => {\n        if (fieldConfig.formConfig?.value$) {\n          this.valueSubscription.add(\n            fieldConfig.formConfig.value$.subscribe(value => {\n              fieldConfig.formConfig.value = value;\n              const cn = fieldConfig.formConfig.binding || fieldConfig.name;\n              this.reactiveForm.get(cn)?.setValue(value);\n            })\n          );\n        }\n      });\n\n    fields?.forEach(field => {\n      const formConfig = field.formConfig;\n      if (formConfig && formConfig.hidden !== true) {\n        this.observeFieldChanges(this.formDataWithFieldNamesAndBindings, field);\n      }\n    });\n\n    Object.keys(this.reactiveForm.controls).forEach(k => {\n      const control = this.reactiveForm.get(k);\n      const field = this.fields.find(f => f.name == k || f.formConfig?.binding == k);\n      if (field)\n        control.valueChanges.subscribe(value => {\n          if ((field.formConfig as any).dynamicConfig)\n            this.updateReadyForBinding(field.name, value);\n          else {\n            this.updateReadyForBinding(field.name, value, field);\n          }\n          this.observeFieldChanges(\n            {\n              ...this.formDataWithFieldNamesAndBindings,\n              [k]: value,\n              [field.name]: value,\n            },\n            field\n          );\n        });\n    });\n\n    if (this.reactiveForm)\n      this.reactiveForm.valueChanges.subscribe(values => {\n        this.handleFormValueChanges(values);\n        this.formChanged?.emit({\n          values,\n          errors: this.getFieldErrors(this.fields, this.reactiveForm),\n        });\n      });\n    this.formReadyCallback.emit(this.reactiveForm);\n  }\n\n  bindValues(data: any) {\n    this.dataForBinding = data;\n    Object.keys(this.config).forEach(key => {\n      const field = this.config[key];\n      if (field.formConfig) {\n        const cn = field.formConfig.binding || key;\n        if (data != null || field.formConfig.defaultValue != null) {\n          if (field.formConfig.type == 'select' && field.formConfig.selectConfig?.multiple) {\n            let val: string = data ? data[cn] : field.formConfig.defaultValue;\n            if (val) {\n              const vals = val.split(',');\n              (field.formConfig.value as any) = vals;\n              const control = this.reactiveForm.get(cn);\n              if (control) control.setValue(vals);\n            }\n          } else if (!field.formConfig.value$) {\n            field.formConfig.value =\n              data && cn in data\n                ? data[cn]\n                : field.formConfig.defaultValue ?? field.formConfig.value;\n            const control = this.reactiveForm.get(cn);\n            if (control) control.setValue(field.formConfig.value);\n          }\n        }\n      }\n    });\n  }\n\n  private async bindFormConfig(field: GeneralFieldConfigInterface<T>, defaultValue?: any) {\n    const formConfig = field.formConfig;\n    if (formConfig) {\n      // if (formConfig.type == 'checkbox' && formConfig.checkBoxConfig?.bindNumberValue) {\n      //   if (formConfig.value != null && formConfig.defaultValue != null) {\n      //     formConfig.value = formConfig.defaultValue;\n      //   }\n      // }\n\n      // if (\n      //   formConfig.type == 'select' &&\n      //   (!formConfig.options?.length ||\n      //     (formConfig.selectConfig?.oDataService && !formConfig.selectConfig?.isLoaded))\n      // ) {\n      //   let fieldNameValue = null;\n      //   if (formConfig.value != null && formConfig.selectConfig?.oDataService) {\n      //     fieldNameValue = await getRefFieldDataFromOData(\n      //       formConfig.selectConfig.oDataService,\n      //       this.generalOdataService,\n      //       formConfig.selectConfig.oDataEntity,\n      //       {},\n      //       formConfig.value,\n      //       [formConfig.selectConfig?.bindLabel || 'text'],\n      //       formConfig.selectConfig?.bindValue || 'id'\n      //     );\n      //   } else if (\n      //     formConfig.type == 'select' &&\n      //     formConfig.value != null &&\n      //     formConfig.selectConfig?.oDataEntity\n      //   ) {\n      //     fieldNameValue = await getRefFieldDataFromOData(\n      //       formConfig.selectConfig.oDataService,\n      //       this.generalOdataService,\n      //       formConfig.selectConfig.oDataEntity,\n      //       formConfig.selectConfig.oDataHttpHeaders,\n      //       formConfig.value,\n      //       [formConfig.selectConfig?.bindLabel || 'text'],\n      //       formConfig.selectConfig?.bindValue || 'id'\n      //     );\n      //   }\n      //   const options: any[] = [\n      //     {\n      //       [formConfig.selectConfig?.bindValue || 'id']: formConfig.value,\n      //       [formConfig.selectConfig?.bindLabel || 'text']: fieldNameValue\n      //         ? fieldNameValue[formConfig.selectConfig?.bindLabel || 'text']\n      //         : formConfig.value || '...',\n      //     },\n      //   ];\n      //   (field.formConfig as SelectFormFieldConfig).options = options;\n      // }\n\n      const value = defaultValue ?? formConfig.value;\n      if (\n        formConfig.type == 'identity-selector' &&\n        formConfig.identitySelectorConfig &&\n        value != null &&\n        formConfig.identitySelectorConfig.valueData == null\n      ) {\n        if (\n          typeof formConfig.identitySelectorConfig.valueDataBinding == 'function' &&\n          this.dataForBinding\n        ) {\n          formConfig.identitySelectorConfig.valueData =\n            formConfig.identitySelectorConfig.valueDataBinding(this.dataForBinding);\n        } else if (\n          this.dataForBinding?.[field.name] != null &&\n          this.dataForBinding?.[formConfig.binding] != null\n        ) {\n          formConfig.identitySelectorConfig.valueData = {\n            [formConfig.identitySelectorConfig.inputField]: this.dataForBinding[field.name],\n          };\n        } else {\n          const valueData = await getRefFieldDataFromOData(\n            formConfig.identitySelectorConfig.oDataService,\n            this.generalOdataService,\n            formConfig.identitySelectorConfig.oDataEntity,\n            formConfig.identitySelectorConfig.oDataHttpHeaders,\n            value,\n            [\n              formConfig.identitySelectorConfig.inputField,\n              formConfig.identitySelectorConfig.secondInputField,\n              formConfig.identitySelectorConfig.displayField,\n            ],\n            formConfig.identitySelectorConfig.resultField\n          );\n          formConfig.identitySelectorConfig.valueData = valueData;\n        }\n      }\n    }\n  }\n\n  unbindValues() {\n    Object.keys(this.config).forEach(key => {\n      const field: GeneralFieldConfigInterface = this.config[key] as any;\n      if (field.formConfig && !field.formConfig.value$) {\n        field.formConfig.value = null;\n        const cn = field.formConfig.binding || key;\n        const control = this.reactiveForm.get(cn);\n        if (control) control.setValue(null);\n        if (field.formConfig.type == 'identity-selector') {\n          field.formConfig.identitySelectorConfig.valueData = null;\n        }\n      }\n    });\n  }\n\n  updateReadyForBinding(name: string, value?: any, config?: GeneralFieldConfigInterface) {\n    if (value != null) {\n      if (this.readyToBindFields[name]) this.readyToBindFields[name].value = value;\n      else this.readyToBindFields[name] = { value };\n    }\n\n    if (config) {\n      if (this.readyToBindFields[name]) this.readyToBindFields[name].config = config;\n      else this.readyToBindFields[name] = { config };\n    }\n\n    if (this.readyToBindFields[name].value != null && this.readyToBindFields[name].config != null)\n      this.bindFormConfig(this.readyToBindFields[name].config);\n  }\n\n  private getFieldErrors(\n    fields: GeneralFieldConfigInterface<T>[],\n    formGroup: FormGroup,\n    onCheck?: (control: AbstractControl) => void\n  ): string[] {\n    const errors: string[] = [];\n    fields\n      ?.filter(x => x.formConfig && x.formConfig.hidden !== true)\n      .forEach(field => {\n        if (typeof field.formConfig?.hidden == 'function')\n          if (field.formConfig.hidden(this.reactiveForm.value)) return;\n        if (this.hiddenMap[field.name]) return;\n        const formConfig = field.formConfig;\n        const fieldName = formConfig.binding || field.name;\n        const control = formGroup.get(fieldName);\n        if (control) {\n          onCheck && onCheck(control);\n          if (formConfig.validators?.length) {\n            formConfig.validators.forEach(validator => {\n              if (control.hasError(validator.name)) {\n                errors.push(this.validationMessages?.[field.name]?.[validator.name]);\n              }\n            });\n          }\n        } else {\n          // console.error(fieldName + ' not found in form');\n        }\n      });\n    return errors;\n  }\n\n  public validateAllFormFields(): void {\n    this.submitted = true;\n    this.reactiveForm.updateValueAndValidity();\n    const errors: string[] = this.getFieldErrors(this.fields, this.reactiveForm, control => {\n      control.markAsTouched({ onlySelf: true });\n    });\n    // if (errors.length) {\n    //   this.toastService.show({\n    //     type: 'error',\n    //     text: `<div>${errors.map(error => `<span>- ${error}</span>`).join('<br />')}</div>`,\n    //     closeByUser: true,\n    //   });\n    // }\n  }\n\n  private bindValidations(\n    field: GeneralFieldConfigInterface,\n    validators: GeneralFormFieldValidatorInterface[]\n  ): ValidatorFn {\n    if (validators?.length > 0) {\n      const validList: ValidatorFn[] = [];\n      this.checkValidatorMessage(field, validators).forEach(valid => {\n        validList.push(valid.validator);\n      });\n      return Validators.compose(validList);\n    }\n    return null;\n  }\n\n  private fieldIsFocusable(field: GeneralFieldConfigInterface<T>) {\n    const isFocusable =\n      !field.readonly &&\n      field.formConfig &&\n      !field.formConfig.readonly == true &&\n      !(field.formConfig.type == 'hiddenField' || field.formConfig.type == 'label');\n    if (!isFocusable) return false;\n    else if (typeof field.formConfig.readonly == 'function')\n      return field.formConfig.readonly(this.reactiveForm?.value);\n    else return true;\n  }\n\n  private autoFocus(\n    fields: GeneralFieldConfigInterface<T>[],\n    adjustedFieldsets: FieldsetFields<T>[]\n  ) {\n    setTimeout(() => {\n      try {\n        adjustedFieldsets?.forEach(fieldset => {\n          const autoFocusField = fieldset.fields.find(\n            x => x.formConfig?.autoFocus && this.fieldIsFocusable(x)\n          );\n          if (autoFocusField) {\n            this.setFocus(autoFocusField);\n            throw 'break';\n          }\n          fieldset?.fields?.forEach(field => {\n            if (this.fieldIsFocusable(field)) {\n              this.setFocus(field);\n              throw 'break';\n            }\n          });\n        });\n\n        const autoFocusField = fields.find(\n          x => x.formConfig?.autoFocus && this.fieldIsFocusable(x)\n        );\n        if (autoFocusField) {\n          this.setFocus(autoFocusField);\n          throw 'break';\n        }\n\n        fields?.forEach(field => {\n          if (this.fieldIsFocusable(field)) {\n            this.setFocus(field);\n            throw 'break';\n          }\n        });\n      } catch {}\n    }, 0);\n  }\n\n  private setFocus(field: GeneralFieldConfigInterface<T>) {\n    const formElement = document.getElementById(this.getIdFromField(field));\n    formElement?.focus();\n  }\n\n  private adjustFieldsInFieldsets() {\n    this.adjustedFieldsets = deepCopy(this.fieldsetConfig.sections);\n    this.notAdjustedFields = [];\n    if (this.fields?.length > 0) {\n      this.fields.forEach(field => {\n        const fieldset = this.adjustedFieldsets.find(\n          x => x.slug == field.formConfig?.fieldsetSectionSlug\n        );\n        if (fieldset) {\n          if (!fieldset.fields?.length) fieldset.fields = [];\n          fieldset.fields.push({ ...field });\n        } else if (field.formConfig && field.formConfig.type != 'hiddenField') {\n          this.notAdjustedFields.push({ ...field });\n        }\n      });\n    }\n  }\n\n  private checkValidatorMessage(\n    field: GeneralFieldConfigInterface,\n    input: GeneralFormFieldValidatorInterface[]\n  ): GeneralFormFieldValidatorInterface[] {\n    if (this.config) {\n      const fieldTitle = field.formConfig.label;\n      const validators = [...input];\n      validators.forEach(item => {\n        if (!this.validationMessages[field.name]) this.validationMessages[field.name] = {};\n        if (!this.validationMessages[field.name][item.name] && item.message)\n          this.validationMessages[field.name][item.name] = item.message;\n        else if (!this.validationMessages[field.name][item.name] && !item.message)\n          switch (item.name) {\n            case 'required':\n              this.validationMessages[field.name][item.name] = this.translateService.instant(\n                field.formConfig.type == 'textbox' || field.formConfig.type == 'textarea'\n                  ? 'general.simpleDataEntry.validation.required.text'\n                  : 'general.simpleDataEntry.validation.required.select',\n                { title: fieldTitle }\n              );\n              break;\n            case 'pattern':\n              this.validationMessages[field.name][item.name] = this.translateService.instant(\n                'general.simpleDataEntry.validation.pattern',\n                { title: fieldTitle }\n              );\n              break;\n            default:\n              this.validationMessages[field.name][item.name] = this.translateService.instant(\n                'general.simpleDataEntry.validation.other',\n                {\n                  title: fieldTitle,\n                }\n              );\n              break;\n          }\n      });\n      return validators;\n    } else if (this.fields) {\n      const validators = [...input];\n\n      validators.forEach(item => {\n        switch (item.name) {\n          case 'required':\n            item.message = this.translateService.instant(\n              field.formConfig.type == 'textbox' || field.formConfig.type == 'textarea'\n                ? 'general.simpleDataEntry.validation.required.text'\n                : 'general.simpleDataEntry.validation.required.select',\n              { title: field.label }\n            );\n            break;\n          case 'pattern':\n            item.message = this.translateService.instant(\n              'general.simpleDataEntry.validation.pattern',\n              { title: field.label }\n            );\n            break;\n          default:\n            item.message = this.translateService.instant(\n              'general.simpleDataEntry.validation.other',\n              {\n                title: field.label,\n              }\n            );\n            break;\n        }\n      });\n      return validators;\n    } else return [];\n  }\n\n  getField(name: string): GeneralFieldConfigInterface | null {\n    return this.fields.find(f => f.name == name || f.formConfig?.binding == name);\n  }\n}\n","<form\n  [attr.id]=\"id\"\n  class=\"general-data-entry\"\n  [class.general-data-entry--scrollable]=\"!noScroll\"\n  [class.general-data-entry--no-border]=\"hideBorder\"\n  *ngIf=\"reactiveForm; else formFakeTemplate\"\n  #myForm=\"ngForm\"\n  [formGroup]=\"reactiveForm\"\n  (submit)=\"submit($event)\"\n>\n  <ng-container *ngIf=\"showFooterOnTop\" [ngTemplateOutlet]=\"footerTemplate\"></ng-container>\n  <header class=\"general-data-entry__header\" *ngIf=\"header\">\n    {{ header }}\n  </header>\n  <section\n    class=\"general-data-entry__content\"\n    [class.container-fluid]=\"!adjustedFieldsets?.length && !noGutter\"\n    [class.general-data-entry__content--scrollable]=\"!noScroll\"\n    [class.general-data-entry__content--no-top-gutter]=\"\n      adjustedFieldsets?.length || noTopGutter || noGutter\n    \"\n  >\n    <ng-container [ngSwitch]=\"fieldsetConfig.type\" *ngIf=\"adjustedFieldsets?.length; else formRows\">\n      <ng-container *ngSwitchCase=\"'tab'\">\n        <ui-tabs [hideBorder]=\"true\" [hideGutter]=\"modalMode\">\n          <ui-tab\n            [text]=\"item.title + getFieldsetErrorCount(item.fields)\"\n            *ngFor=\"let item of adjustedFieldsets\"\n          >\n            <span class=\"general-data-entry__description\" *ngIf=\"item.description\">{{\n              item.description\n            }}</span>\n            <div class=\"row\">\n              <ng-container\n                [ngTemplateOutlet]=\"fieldsTemplate\"\n                [ngTemplateOutletContext]=\"{\n                  fields: item.fields,\n                  reactiveForm: reactiveForm\n                }\"\n              ></ng-container>\n            </div>\n          </ui-tab>\n          <ui-tab\n            [text]=\"'general.simpleDataEntry.notAdjustedFields' | translate\"\n            *ngIf=\"notAdjustedFields?.length\"\n          >\n            <div class=\"row\">\n              <ng-container\n                [ngTemplateOutlet]=\"fieldsTemplate\"\n                [ngTemplateOutletContext]=\"{\n                  fields: notAdjustedFields,\n                  reactiveForm: reactiveForm\n                }\"\n              ></ng-container>\n            </div>\n          </ui-tab>\n        </ui-tabs>\n      </ng-container>\n\n      <ng-container *ngSwitchCase=\"'fieldset'\">\n        <ui-fieldset\n          class=\"general-data-entry__fieldset\"\n          [title]=\"item.title\"\n          *ngFor=\"let item of adjustedFieldsets\"\n        >\n          <span class=\"general-data-entry__description\" *ngIf=\"item.description\">{{\n            item.description\n          }}</span>\n          <div class=\"container-fluid\">\n            <div class=\"row\">\n              <ng-container\n                [ngTemplateOutlet]=\"fieldsTemplate\"\n                [ngTemplateOutletContext]=\"{\n                  fields: item.fields,\n                  reactiveForm: reactiveForm\n                }\"\n              ></ng-container>\n            </div>\n          </div>\n        </ui-fieldset>\n        <ui-fieldset\n          class=\"general-data-entry__fieldset\"\n          [title]=\"'general.simpleDataEntry.notAdjustedFields' | translate\"\n          *ngIf=\"notAdjustedFields?.length\"\n        >\n          <div class=\"container-fluid\">\n            <div class=\"row\">\n              <ng-container\n                [ngTemplateOutlet]=\"fieldsTemplate\"\n                [ngTemplateOutletContext]=\"{\n                  fields: notAdjustedFields,\n                  reactiveForm: reactiveForm\n                }\"\n              ></ng-container>\n            </div>\n          </div>\n        </ui-fieldset>\n      </ng-container>\n      <ng-container *ngSwitchCase=\"'expandable'\">\n        <section class=\"general-data-entry-expandable\" *ngFor=\"let item of adjustedFieldsets\">\n          <input #chk type=\"checkbox\" class=\"general-data-entry-expandable__input\" checked />\n          <header\n            class=\"general-data-entry-expandable__header\"\n            (click)=\"chk.checked = !chk.checked\"\n          >\n            <strong>{{ item.title + getFieldsetErrorCount(item.fields) }}</strong>\n            <ui-icon\n              class=\"general-data-entry-expandable__header-icon\"\n              group=\"navigation\"\n              name=\"expand_more\"\n            ></ui-icon>\n          </header>\n          <div\n            class=\"general-data-entry-expandable__content general-data-entry-expandable__content--{{\n              getExpandableSize(item.fields?.length || 0)\n            }}x\"\n          >\n            <div class=\"container-fluid\">\n              <span class=\"general-data-entry__description\" *ngIf=\"item.description\">{{\n                item.description\n              }}</span>\n              <div class=\"row\">\n                <ng-container\n                  [ngTemplateOutlet]=\"fieldsTemplate\"\n                  [ngTemplateOutletContext]=\"{\n                    fields: item.fields,\n                    reactiveForm: reactiveForm\n                  }\"\n                ></ng-container>\n              </div>\n            </div>\n          </div>\n        </section>\n        <section class=\"general-data-entry-expandable\" *ngIf=\"notAdjustedFields?.length\">\n          <input #chk type=\"checkbox\" class=\"general-data-entry-expandable__input\" checked />\n          <header\n            class=\"general-data-entry-expandable__header\"\n            (click)=\"chk.checked = !chk.checked\"\n          >\n            <strong\n              >{{ 'general.simpleDataEntry.notAdjustedFields' | translate }}\n              {{ getFieldsetErrorCount(notAdjustedFields) }}</strong\n            >\n            <ui-icon\n              class=\"general-data-entry-expandable__header-icon\"\n              group=\"navigation\"\n              name=\"expand_more\"\n            ></ui-icon>\n          </header>\n          <div\n            class=\"general-data-entry-expandable__content general-data-entry-expandable__content--{{\n              getExpandableSize(notAdjustedFields.length || 0)\n            }}x\"\n          >\n            <div class=\"container-fluid\">\n              <div class=\"row\">\n                <ng-container\n                  [ngTemplateOutlet]=\"fieldsTemplate\"\n                  [ngTemplateOutletContext]=\"{\n                    fields: notAdjustedFields,\n                    reactiveForm: reactiveForm\n                  }\"\n                ></ng-container>\n              </div>\n            </div>\n          </div>\n        </section>\n      </ng-container>\n    </ng-container>\n    <ng-template #formRows>\n      <div class=\"row\">\n        <ng-container\n          [ngTemplateOutlet]=\"fieldsTemplate\"\n          [ngTemplateOutletContext]=\"{\n            fields: fields,\n            reactiveForm: reactiveForm\n          }\"\n        ></ng-container>\n        <ng-container [ngTemplateOutlet]=\"content\"></ng-container>\n      </div>\n    </ng-template>\n  </section>\n  <ng-container *ngIf=\"!showFooterOnTop\" [ngTemplateOutlet]=\"footerTemplate\"></ng-container>\n</form>\n<ng-template #formFakeTemplate>\n  <section class=\"general-data-entry\" [class.general-data-entry--scrollable]=\"!noScroll\">\n    <section\n      class=\"general-data-entry__content\"\n      [class.general-data-entry__content--scrollable]=\"!noScroll\"\n      [class.general-data-entry__content--no-top-gutter]=\"noTopGutter\"\n    >\n      <ng-container [ngTemplateOutlet]=\"content\"></ng-container>\n    </section>\n    <footer\n      class=\"general-data-entry__footer\"\n      [class.general-data-entry__footer--show]=\"!disabled\"\n      [hidden]=\"disabled\"\n    >\n      <ui-button\n        *ngIf=\"!hideSaveButton\"\n        [varient]=\"'fill'\"\n        color=\"primary\"\n        [tagName]=\"'label'\"\n        [for]=\"saveButtonFor\"\n        >{{ 'general.simpleDataEntry.save' | translate }}</ui-button\n      >\n      <ui-button\n        *ngIf=\"!hideCancelButton\"\n        [varient]=\"'fill'\"\n        [tagName]=\"'label'\"\n        [for]=\"cancelButtonFor\"\n        >{{ 'general.simpleDataEntry.cancel' | translate }}</ui-button\n      >\n    </footer>\n  </section>\n</ng-template>\n<ng-template #content>\n  <ng-content></ng-content>\n</ng-template>\n<ng-template #fieldsTemplate let-fields=\"fields\" let-reactiveForm=\"reactiveForm\">\n  <ng-container *ngFor=\"let field of fields\" [formGroup]=\"reactiveForm\">\n    <!-- <ui-form-group\n      *ngIf=\"\n        field.formConfig &&\n        !applyBooleanPropery(field.formConfig.hidden) &&\n        field.formConfig.type != 'hiddenField'\n      \"\n      [label]=\"\n        field.formConfig.type != 'checkbox' && field.formConfig.labelType !== 'float'\n          ? field.label\n          : null\n      \"\n      [labelColNumber]=\"\n        field.formConfig.columnWidth && field.formConfig.labelType !== 'float'\n          ? 24 /\n            (field.formConfig.columnWidthInside\n              ? field.formConfig.columnWidthInside\n              : field.formConfig.columnWidth)\n          : 4\n      \"\n      [for]=\"getIdFromField(field)\"\n      class=\"col-{{\n        field.formConfig.columnWidth ? field.formConfig.columnWidth : 12 / columnCount || 6\n      }}\"\n      [contentMaxWidth]=\"!!field.formConfig.columnWidth ? '100%' : null\"\n    > -->\n    <section\n      *ngIf=\"\n        hiddenMap[field.name] !== true &&\n        field.formConfig &&\n        !applyBooleanPropery(field.formConfig.hidden) &&\n        field.formConfig.type != 'hiddenField' &&\n        field.formConfig.type != 'prop'\n      \"\n      class=\"general-data-entry__form-group col-{{\n        field.formConfig.columnWidth ? field.formConfig.columnWidth : 12 / columnCount || 6\n      }}\"\n    >\n      <ng-container [ngSwitch]=\"field.formConfig.type\">\n        <span *ngSwitchCase=\"'label'\" class=\"general-data-entry__label-value\"\n          >{{ field.formConfig.label ? field.formConfig.label + ': ' : '' }}\n          <strong\n            [class.text-color-primary]=\"field.formConfig.color === 'primary'\"\n            [class.text-color-success]=\"field.formConfig.color === 'success'\"\n            [class.text-color-error]=\"field.formConfig.color === 'error'\"\n            [class.text-color-warning]=\"field.formConfig.color === 'warning'\"\n            [class.text-color-alert]=\"field.formConfig.color === 'alert'\"\n            [class.text-color-info]=\"field.formConfig.color === 'info'\"\n            >{{ reactiveForm.controls[field.formConfig.binding].value }}</strong\n          ></span\n        >\n\n        <ui-textbox\n          [label]=\"field.formConfig.label\"\n          [labelType]=\"'float'\"\n          *ngSwitchCase=\"'textbox'\"\n          [type]=\"field.formConfig.inputType\"\n          [formControlName]=\"field.formConfig.binding\"\n          [direction]=\"field.formConfig.direction\"\n          [minYear]=\"field.formConfig.minYear\"\n          [maxYear]=\"field.formConfig.maxYear\"\n          [maxlength]=\"field.formConfig.maxlength\"\n          [currencyConfig]=\"field.formConfig.currencyConfig\"\n          [mask]=\"field.formConfig.mask\"\n          [formGroup]=\"reactiveForm\"\n          [inputId]=\"getIdFromField(field)\"\n          (ngModelChange)=\"textboxChanged($event, field)\"\n          (keyDownCallback)=\"userChanged(field)\"\n          [disabled]=\"\n            readOnlyMap[field.name] === false\n              ? null\n              : readOnlyMap[field.name] === true ||\n                field.readonly == true ||\n                field.formConfig.readonly == true\n              ? true\n              : null\n          \"\n          [readonly]=\"\n            readOnlyMap[field.name] === false\n              ? null\n              : readOnlyMap[field.name] === true ||\n                field.readonly == true ||\n                field.formConfig.readonly == true\n              ? 'readonly'\n              : null\n          \"\n        ></ui-textbox>\n        <ui-textbox\n          *ngSwitchCase=\"'textarea'\"\n          [label]=\"field.formConfig.label\"\n          [size]=\"field.formConfig.size\"\n          [labelType]=\"'float'\"\n          [type]=\"field.formConfig.inputType\"\n          [formControlName]=\"field.formConfig.binding\"\n          [direction]=\"field.formConfig.direction\"\n          [multiline]=\"true\"\n          [formGroup]=\"reactiveForm\"\n          [inputId]=\"getIdFromField(field)\"\n          (ngModelChange)=\"textboxChanged($event, field)\"\n          (keyDownCallback)=\"userChanged(field)\"\n          [disabled]=\"\n            readOnlyMap[field.name] === false\n              ? null\n              : readOnlyMap[field.name] === true ||\n                field.readonly == true ||\n                field.formConfig.readonly == true\n              ? true\n              : null\n          \"\n          [readonly]=\"\n            readOnlyMap[field.name] === false\n              ? null\n              : readOnlyMap[field.name] === true ||\n                field.readonly == true ||\n                field.formConfig.readonly == true\n              ? 'readonly'\n              : null\n          \"\n        ></ui-textbox>\n        <ui-select\n          *ngSwitchCase=\"'select'\"\n          [label]=\"field.formConfig.label\"\n          [labelType]=\"'float'\"\n          [multiple]=\"field.formConfig.selectConfig?.multiple\"\n          [bindValue]=\"field.formConfig.selectConfig?.bindValue\"\n          [bindLabel]=\"field.formConfig.selectConfig?.bindLabel\"\n          [spinnerIsShow]=\"field.formConfig.selectConfig?.isLoading\"\n          [formControlName]=\"field.formConfig.binding\"\n          [formGroup]=\"reactiveForm\"\n          [inputId]=\"getIdFromField(field)\"\n          [allowClear]=\"\n            field.formConfig?.selectConfig?.allowClear ||\n            !hasRequiredValidator(field.formConfig?.validators)\n          \"\n          [placeholder]=\"field.formConfig.placeholder || ''\"\n          [options]=\"field.formConfig.options\"\n          (ngModelChange)=\"selectChanged($event, field)\"\n          (openCallback)=\"selectMenuOpened(field)\"\n          (selectCallback)=\"userChanged(field)\"\n          [readonly]=\"\n            readOnlyMap[field.name] === false\n              ? null\n              : readOnlyMap[field.name] === true ||\n                field.readonly == true ||\n                field.formConfig.readonly == true\n              ? 'readonly'\n              : null\n          \"\n          [oDataServer]=\"field.formConfig?.selectConfig?.oDataServer\"\n          [oDataEntity]=\"field.formConfig?.selectConfig?.oDataEntity\"\n          [oDataTable]=\"field.formConfig?.selectConfig?.oDataTable\"\n          [oDataHttpHeaders]=\"field.formConfig?.selectConfig?.oDataHttpHeaders\"\n        ></ui-select>\n        <ui-identity-selector\n          *ngSwitchCase=\"'identity-selector'\"\n          [label]=\"field.formConfig.label\"\n          [labelType]=\"'float'\"\n          [value]=\"field.formConfig.value\"\n          [placeholder]=\"field.formConfig.placeholder\"\n          [valueData]=\"field.formConfig.identitySelectorConfig.valueData\"\n          [inputField]=\"field.formConfig.identitySelectorConfig.inputField\"\n          [secondInputField]=\"field.formConfig.identitySelectorConfig.secondInputField\"\n          [resultField]=\"field.formConfig.identitySelectorConfig.resultField\"\n          [displayField]=\"field.formConfig.identitySelectorConfig.displayField\"\n          [gridFields]=\"field.formConfig.identitySelectorConfig.gridFields\"\n          [oDataService]=\"field.formConfig.identitySelectorConfig.oDataService\"\n          [oDataServer]=\"field.formConfig.identitySelectorConfig.oDataServer\"\n          [oDataTable]=\"field.formConfig.identitySelectorConfig.oDataTable\"\n          [oDataEntity]=\"field.formConfig.identitySelectorConfig.oDataEntity\"\n          [hasCrudOrigin]=\"field.formConfig.identitySelectorConfig.hasCrudOrigin\"\n          [oDataHttpHeaders]=\"field.formConfig.identitySelectorConfig.oDataHttpHeaders\"\n          [oDataFilters]=\"field.formConfig.identitySelectorConfig.oDataFilters\"\n          [formControlName]=\"field.formConfig.binding\"\n          [formGroup]=\"reactiveForm\"\n          [id]=\"getIdFromField(field)\"\n          [beforeChangeCallback]=\"field.formConfig.beforeChangeCallback\"\n          (changeCallback)=\"identitySelectorChanged($event, field)\"\n          [readonly]=\"\n            readOnlyMap[field.name] === false\n              ? null\n              : readOnlyMap[field.name] === true ||\n                field.readonly == true ||\n                field.formConfig.readonly == true\n              ? 'readonly'\n              : null\n          \"\n          [allowClear]=\"\n            field.formConfig?.identitySelectorConfig?.allowClear ||\n            !hasRequiredValidator(field.formConfig?.validators)\n          \"\n        ></ui-identity-selector>\n        <ui-checkbox\n          *ngSwitchCase=\"'checkbox'\"\n          class=\"general-data-entry__checkbox\"\n          [formControlName]=\"field.formConfig.binding\"\n          [formGroup]=\"reactiveForm\"\n          [text]=\"field.formConfig.label\"\n          [readonly]=\"\n            readOnlyMap[field.name] === false\n              ? null\n              : readOnlyMap[field.name] === true ||\n                field.readonly == true ||\n                field.formConfig.readonly == true\n          \"\n          [bindNumberValue]=\"field.formConfig.checkBoxConfig?.bindNumberValue\"\n          [checked]=\"field.formConfig.value\"\n          (onChangeValue)=\"checkboxChanged($event, field)\"\n          [beforeChangeValueCallback]=\"field.formConfig.beforeChangeCallback\"\n        ></ui-checkbox>\n        <ui-tree-select\n          *ngSwitchCase=\"'tree'\"\n          [label]=\"field.formConfig.label\"\n          [labelType]=\"'float'\"\n          [bindValue]=\"field.formConfig.treeConfig?.bindValue\"\n          [bindLabel]=\"field.formConfig.treeConfig?.bindLabel\"\n          [bindItems]=\"field.formConfig.treeConfig?.bindItems ?? 'items'\"\n          [multiple]=\"field.formConfig.treeConfig?.multiple\"\n          [formControlName]=\"field.formConfig.binding\"\n          [formGroup]=\"reactiveForm\"\n          [inputId]=\"getIdFromField(field)\"\n          [allowClear]=\"\n            field.formConfig?.treeConfig?.allowClear ||\n            !hasRequiredValidator(field.formConfig?.validators)\n          \"\n          [placeholder]=\"field.formConfig.placeholder || ''\"\n          [data]=\"field.formConfig.treeConfig.data\"\n          (ngModelChange)=\"selectChanged($event, field)\"\n          [readonly]=\"\n            readOnlyMap[field.name] === false\n              ? null\n              : readOnlyMap[field.name] === true ||\n                field.readonly == true ||\n                field.formConfig.readonly == true\n              ? 'readonly'\n              : null\n          \"\n        ></ui-tree-select>\n        <ng-container\n          *ngIf=\"!disabled && (submitted || reactiveForm.get(field.formConfig.binding).touched)\"\n        >\n          <ng-container *ngFor=\"let validation of field.formConfig.validators\">\n            <ui-validation\n              *ngIf=\"reactiveForm.get(field.formConfig.binding).hasError(validation.name)\"\n              [visible]=\"true\"\n              [message]=\"config ? validationMessages?.[field.name]?.[validation.name] : validation.message\"\n            ></ui-validation>\n          </ng-container>\n        </ng-container>\n      </ng-container>\n      <p\n        *ngIf=\"field.formConfig.hint\"\n        class=\"general-data-entry__hint\"\n        [class.text-color-primary]=\"field.formConfig.hint.color === 'primary'\"\n        [class.text-color-success]=\"field.formConfig.hint.color === 'success'\"\n        [class.text-color-error]=\"field.formConfig.hint.color === 'error'\"\n        [class.text-color-warning]=\"field.formConfig.hint.color === 'warning'\"\n        [class.text-color-alert]=\"field.formConfig.hint.color === 'alert'\"\n        [class.text-color-info]=\"field.formConfig.hint.color === 'info'\"\n      >\n        {{ field.formConfig.hint.message }}\n      </p>\n      <!-- </ui-form-group> -->\n    </section>\n  </ng-container>\n</ng-template>\n\n<ng-template #footerTemplate>\n  <footer\n    *ngIf=\"!hideFooter\"\n    class=\"general-data-entry__footer\"\n    [class.general-data-entry__footer--show]=\"!disabled\"\n    [class.general-data-entry__footer--no-gutter]=\"noGutter\"\n    [class.general-data-entry__footer--top]=\"showFooterOnTop\"\n    [hidden]=\"disabled\"\n  >\n    <ui-button\n      *ngIf=\"!hideSaveButton\"\n      [varient]=\"'fill'\"\n      color=\"primary\"\n      [buttonType]=\"'submit'\"\n      [title]=\"showFooterOnTop ? ('general.simpleDataEntry.save' | translate) : null\"\n    >\n      <ui-fararu-icon *ngIf=\"showFooterOnTop\" [name]=\"'save'\"></ui-fararu-icon>\n      {{ !showFooterOnTop ? ('general.simpleDataEntry.save' | translate) : null }}</ui-button\n    >\n    <ui-button\n      *ngIf=\"!hideReloadButton\"\n      [varient]=\"'fill'\"\n      [buttonType]=\"'button'\"\n      [title]=\"showFooterOnTop ? ('general.listManagement.refresh' | translate) : null\"\n      (clickCallback)=\"reloadHandler()\"\n    >\n      <ui-fararu-icon *ngIf=\"showFooterOnTop\" [name]=\"'reload'\"></ui-fararu-icon>\n      {{ !showFooterOnTop ? ('general.listManagement.refresh' | translate) : null }}</ui-button\n    >\n    <ui-button\n      *ngIf=\"!hideCancelButton\"\n      [buttonType]=\"'button'\"\n      [varient]=\"showFooterOnTop ? 'fill' : 'outline'\"\n      [color]=\"'secondary'\"\n      [title]=\"showFooterOnTop ? ('general.simpleDataEntry.cancel' | translate) : null\"\n      (clickCallback)=\"cancel()\"\n    >\n      <ui-fararu-icon *ngIf=\"showFooterOnTop\" [name]=\"'exit'\"></ui-fararu-icon>\n      {{ !showFooterOnTop ? ('general.simpleDataEntry.cancel' | translate) : null }}</ui-button\n    >\n  </footer>\n</ng-template>\n","import {\n  Component,\n  EventEmitter,\n  Input,\n  OnChanges,\n  OnDestroy,\n  OnInit,\n  Output,\n  SimpleChanges,\n  ViewChild,\n} from '@angular/core';\nimport { GeneralFormFieldsetConfigInterface } from '../../../../models/general-form-fieldset-config.interface';\n\nimport { lastValueFrom } from 'rxjs';\nimport { GeneralODataService } from '../../../../api/general-odata.service';\n\nimport { ModalWrapperComponent } from '../../../modal/modal-wrapper/modal-wrapper.component';\nimport { FararuToastService } from '../../../toast/fararu-toast.service';\nimport {\n  DataEntryFieldConfigInterface,\n  GeneralSimpleDataEntryComponent,\n} from '../../general-simple-data-entry/general-simple-data-entry.component';\nimport { GeneralDataEntryConfig } from '../general-data-entry-config';\nimport { bindForm, handleBeforeSaveCallBack } from '../list-data-entry-functions';\nimport { GeneralFieldConfigInterface } from '../../../../models/general-field-config.interface';\nimport { GeneralSaveApiInterface } from '../../../../models/general-save-api.interface';\nimport { isSaveResponse } from '../../../../models/general-save-result.interface';\nimport { OutletCloserService } from '../../../../services/outlet-closer.service';\nimport { ModalService } from '../../../../design-systems/modal/modal.service';\nimport { TranslateService } from '@ngx-translate/core';\nimport { GeneralFormFieldConfigInterface } from '../../../../models/general-form-field-config.interface';\n\n@Component({\n  selector: 'cmn-general-list-modal-data-entry',\n  templateUrl: './general-list-modal-data-entry.component.html',\n  styleUrls: ['./general-list-modal-data-entry.component.scss'],\n})\nexport class GeneralListModalDataEntryComponent<T extends DataEntryFieldConfigInterface>\n  implements OnInit, OnChanges, OnDestroy\n{\n  @Input() isTree: boolean = false;\n  @Input() config: GeneralDataEntryConfig<T>;\n  @Input() formColumnCount?: number;\n  @Input() fieldsetConfig: GeneralFormFieldsetConfigInterface;\n  @Input() fields: GeneralFieldConfigInterface[];\n  @Input() data: any;\n  @Input() title: string;\n  @Input() entityId?: number | string;\n  @Input() entityIdName?: string;\n  @Input() saveApi: GeneralSaveApiInterface<any>;\n  @Input() saveCallback: (data: any, state: 'edit' | 'new', parentItem?: any) => Promise<any>;\n  @Input() editCallBack: (data: any, parentItem?: any) => Promise<any>;\n  @Input() parentItem: any; // when a data tree opens the modal\n  @Input() beforeSaveCallback: (values: any) => string | null | Promise<string | null>;\n\n  @Output() valuesChanged = new EventEmitter();\n  @Output() bindEvent = new EventEmitter<any>();\n  errors: string[];\n  @Input() primaryFields: { [name: string]: GeneralFieldConfigInterface } = {};\n  loading: boolean;\n\n  @ViewChild('wrapper') modalWrapper: ModalWrapperComponent;\n  @ViewChild('simpleDataEntry', { static: false }) simpleDataEntry: GeneralSimpleDataEntryComponent;\n  beforeCloseCallBack: () => boolean | Promise<boolean> = () => {\n    let changed = false;\n\n    const formData = this.simpleDataEntry.formData;\n    const initialData = this._initialData;\n\n    changed = Object.keys(formData).some(key => {\n      try {\n        const cfg = this.simpleDataEntry?.getField(key);\n        if (cfg?.formConfig?.type == 'hiddenField' || cfg?.formConfig?.type == 'prop') return false;\n        if (this.isEdit()) return formData[key] !== initialData?.[key];\n        else {\n          return (\n            formData[key] !== initialData?.[key] && formData[key] != cfg?.formConfig.defaultValue\n          );\n        }\n      } catch (error) {\n        return false;\n      }\n    });\n\n    if (changed) {\n      return this._modalService.showConfirm({\n        type: 'warning',\n        description: this._translateService.instant(\n          'general.standardModalForm.areYouSureForCancel'\n        ),\n      });\n    } else {\n      return true;\n    }\n  };\n  private _initialData: any;\n\n  constructor(\n    private generalOdataService: GeneralODataService,\n    private toastService: FararuToastService,\n    readonly outletCloser: OutletCloserService,\n    private _modalService: ModalService,\n    private _translateService: TranslateService\n  ) {}\n\n  async ngOnInit() {\n    this._initialData = { ...this.data };\n    // await this.bind();\n\n    // if (this.config) {\n    //   const tmpConfig = Object.fromEntries(\n    //     Object.entries(this.config.formConfig).filter(([key, value]) => value.formConfig)\n    //   );\n    //   Object.keys(tmpConfig).forEach(key => {\n    //     if (tmpConfig[key].formConfig.value == null) {\n    //       tmpConfig[key].formConfig.value = this.data?.[key]\n    //       // tmpConfig[key].formConfig.value$ = this.data$.pipe(\n    //       //   map(d => {\n    //       //     if (d == null) return null;\n    //       //     const k = tmpConfig[key].formConfig.binding || key;\n    //       //     return d[k] ? d[k] : null;\n    //       //   })\n    //       // );\n    //     }\n    //   });\n    //   this.finalConfig = { ...tmpConfig };\n    // }\n  }\n\n  async ngOnDestroy() {\n    if (this.config) {\n      await this.simpleDataEntry.unbindValues();\n    }\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (changes['data']) {\n      if (this.config) {\n        this.simpleDataEntry.bindValues(this.data);\n      }\n      if (this.fields && !this.config) this.bind();\n    }\n  }\n\n  async ngAfterViewInit() {\n    if (this.config) {\n      this.simpleDataEntry.bindValues(this.data);\n    }\n    if (this.fields && !this.config) this.bind();\n  }\n\n  async change(changes: string[]) {\n    if (changes.includes('fields')) {\n      // this.data = this.values;\n      await this.bind();\n    }\n  }\n\n  onValuesChanged({ values, errors }: { values: any; errors: string[] }) {\n    // if (this.values != undefined && !deepEqual(values, this.values)) {\n    this.valuesChanged.emit(values);\n    // }\n    this.errors = errors;\n    this.data = values;\n    // this.values = values;\n  }\n\n  private async bind() {\n    this.fields = await bindForm(\n      this.generalOdataService,\n      [...(this.fields || [])],\n      this.data,\n      this.primaryFields\n    );\n    this.bindEvent.emit(this.fields);\n  }\n\n  saveHandler = async (data: any, saveEndNew: boolean) => {\n    if (!this.simpleDataEntry.formIsValid) return;\n    this.loading = true;\n    const result = await handleBeforeSaveCallBack(\n      data,\n      this.config?.beforeSaveCallback ?? this.beforeSaveCallback\n    );\n    if (result == null) {\n      try {\n        const response = await this.save(data);\n        if (isSaveResponse(response)) {\n          if (response.saved) {\n            this.toastService.show({\n              type: 'success',\n              text: response.message,\n            });\n            this.handleAfterSave(saveEndNew);\n          }\n          this.loading = false;\n          return;\n        } else {\n          response?.informations?.forEach((i: any) => {\n            this.toastService.show({\n              type: 'success',\n              text: i.informationMessage,\n            });\n          });\n          this.handleAfterSave(saveEndNew);\n          this.loading = false;\n          return;\n        }\n      } finally {\n        this.loading = false;\n        return;\n      }\n    } else {\n      this.loading = false;\n      this.toastService.show({ type: 'error', text: result });\n    }\n  };\n\n  public isEdit(): boolean {\n    return this.entityId != undefined;\n  }\n\n  private save(values: any): any {\n    let collection: any = {\n      ...Object.fromEntries(Object.entries(values).filter(it => it[0] != 'id' || it[1] != null)),\n    };\n\n    if (this.isTree && !this.isEdit()) {\n      collection.parentRef = this.parentItem?.id;\n      collection.type = this.parentItem.type + 1;\n    }\n\n    if (this.entityIdName && this.isEdit()) collection[this.entityIdName] = this.entityId;\n\n    if (this.isEdit()) {\n      const finalData: any = {\n        collection,\n        saveReason: 2,\n      };\n      if (this.editCallBack) return this.editCallBack(collection);\n      else if (this.saveApi) return lastValueFrom(this.saveApi.save(finalData));\n      else if (this.config?.saveApi) return lastValueFrom(this.config.saveApi.save(finalData));\n      else if (this.config?.saveCallback)\n        return this.config.saveCallback(collection, 'edit', this.parentItem);\n      else if (this.saveCallback) return this.saveCallback(collection, 'edit', this.parentItem);\n    } else {\n      const finalData: any = {\n        collection,\n        saveReason: 1,\n      };\n      if (this.saveApi) return lastValueFrom(this.saveApi.save(finalData));\n      else if (this.config?.saveApi) return lastValueFrom(this.config.saveApi.save(finalData));\n      else if (this.config?.saveCallback)\n        return this.config.saveCallback(collection, 'new', this.parentItem);\n      else if (this.saveCallback) return this.saveCallback(collection, 'new', this.parentItem);\n    }\n  }\n\n  handleAfterSave(saveEndExit: boolean): Promise<any> {\n    if (saveEndExit) {\n      this.modalWrapper.close();\n    } else if (!saveEndExit && !this.isEdit()) {\n      this.simpleDataEntry?.resetForm('soft');\n    }\n    return Promise.resolve();\n  }\n\n  onSaveClicked($event: boolean) {\n    this.simpleDataEntry.validateAllFormFields();\n    if (this.simpleDataEntry.formIsValid) this.saveHandler(this.simpleDataEntry.formData, $event);\n  }\n}\n","<modal-wrapper\n  #wrapper\n  [beforeCloseCallback]=\"beforeCloseCallBack\"\n  [title]=\"title\"\n  [showSaveButtonLoading]=\"loading\"\n  [hideSaveButton]=\"isEdit()\"\n  [showAlternativeSaveButton]=\"true\"\n  (saveClickCallback)=\"onSaveClicked($event)\"\n>\n  <app-general-simple-data-entry\n    #simpleDataEntry\n    *ngIf=\"config?.formConfig\"\n    [disabled]=\"loading\"\n    [modalMode]=\"true\"\n    [class.general-list-data-entry-modal__form--fieldset]=\"fieldsetConfig?.type == 'fieldset'\"\n    [config]=\"config.formConfig\"\n    [fieldsetConfig]=\"fieldsetConfig\"\n    [columnCount]=\"formColumnCount\"\n    (formChanged)=\"onValuesChanged($event)\"\n  ></app-general-simple-data-entry>\n\n  <app-general-simple-data-entry\n    #simpleDataEntry\n    *ngIf=\"fields?.length && !config\"\n    [disabled]=\"loading\"\n    [modalMode]=\"true\"\n    [class.general-list-data-entry-modal__form--fieldset]=\"fieldsetConfig?.type == 'fieldset'\"\n    [fields]=\"fields\"\n    [fieldsetConfig]=\"fieldsetConfig\"\n    [columnCount]=\"formColumnCount\"\n    (formChanged)=\"onValuesChanged($event)\"\n  ></app-general-simple-data-entry>\n</modal-wrapper>\n","import { GridColumnInterface } from '../../models/grid-column.interface';\n\nexport class ReviewGridLayout {\n  title?: string;\n  column: { columns: GridColumnInterface[] };\n  filter: any;\n}\n","export class ReviewTab<T> {\n  title?: string;\n  Key: T;\n  AccessNodeId?: number;\n\n  isSubMenu?: boolean;\n  children?: ReviewTabChildren[];\n}\n\nexport class ReviewTabChildren {\n  title?: string;\n  Key?: string;\n  AccessNodeId?: number;\n  OrderNumber?: number;\n  hideAggregateData?: boolean;\n  formName?: string;\n  imgUri?: string;\n  active?: boolean;\n}\n\nexport interface TabColumnName {\n  columnName: string;\n  columnTitle: string;\n}\n","export class User {\n  id: string;\n  displayName: string;\n  email: string;\n\n  constructor(id: string, displayName: string) {\n    this.id = id;\n    this.displayName = displayName;\n  }\n}\n","import { GeneralSaveReasonsEnum } from './general-save-reasons.enum';\n\nexport class GeneralPostRequestInterface<T> {\n  collection: T;\n  saveReason: GeneralSaveReasonsEnum;\n}\n","import { GridColumnDataTypes } from '../enums/grid-column-data-types';\nimport { GridColumnAggregationTypes } from '../enums/grid-column-aggregation-types';\n\nexport interface GridNumberColumnConfig {\n  base?: number;\n  style?: 'color' | 'back' | 'both';\n}\n\nexport class GridColumnInterface {\n  constructor() {\n    this.visible = true;\n  }\n\n  name?: string;\n  header?: string;\n  binding?: string;\n  autoSize?: boolean;\n  align?: 'left' | 'right' | 'center' | 'justify';\n  width?: string | number;\n  minWidth?: number;\n  isLtr?: boolean;\n  dataType?: GridColumnDataTypes;\n  // cellTemplate?: (item: GridColumnInterface) => GridLinkOptions;\n  format?:\n    | '0' /** Decimal Format */\n    | 'n1' /** Number Format - Accuracy to 1 decimal place - trailing zero*/\n    | 'n2' /** Number Format - Accuracy to 2 decimal place - trailing zero */\n    | 'n3' /** Number Format - Accuracy to 3 decimal place - trailing zero */\n    | 'n4' /** Number Format - Accuracy to 4 decimal place - trailing zero */\n    | 'g1' /** Number Format - Accuracy to 1 decimal place - No trailing zero - Without thousand delimiter*/\n    | 'g2' /** Number Format - Accuracy to 2 decimal place - No trailing zero - Without thousand delimiter*/\n    | 'g3' /** Number Format - Accuracy to 3 decimal place - No trailing zero - Without thousand delimiter*/\n    | 'g4' /** Number Format - Accuracy to 4 decimal place - No trailing zero - Without thousand delimiter*/\n    | 'G1' /** Number Format - Accuracy to 1 decimal place - No trailing zero */\n    | 'G2' /** Number Format - Accuracy to 2 decimal place - No trailing zero */\n    | 'G3' /** Number Format - Accuracy to 3 decimal place - No trailing zero */\n    | 'G4' /** Number Format - Accuracy to 4 decimal place - No trailing zero */\n    | 'p' /** Percentage Format */\n    | 'c2' /** Currency Format */\n    | 'd' /** Short Date */\n    | 'D' /** Long Date */\n    | 'f' /** Full Date/TIme (short time) */\n    | 'F' /** Full Date/TIme (long time) */\n    | (string & {});\n  isReadOnly?: boolean;\n  aggregate?: GridColumnAggregationTypes;\n  visible?: boolean;\n  numberConfig?: {\n    hasHightStyles?: GridNumberColumnConfig | boolean;\n    hasLowStyles?: GridNumberColumnConfig | boolean;\n  };\n  dataMap?: {\n    value: string;\n    label: string;\n    parentKeyName?: string;\n    items?: any[];\n  };\n  filteringOptions?: string[];\n}\n\nexport interface GridLinkOptions {\n  href?: string;\n  text?: string;\n  /** Template string used to set the element's CSS class names. */\n  cssClass?: string;\n  /** Template string used to set the element's \"aria-label\" attribute. */\n  label?: string;\n  /** Object with attributes to apply to the cell content element. */\n  attributes?: object;\n  /** Function to be executed when the element is clicked. */\n  click?: (e: MouseEvent, args: GridLinkOptionArgs) => void;\n}\n\nexport interface GridLinkOptionArgs{\n  row: any;\n  /** {@link Column} that contains the cell. */\n  col: any;\n  /** Data item bound to the cell. */\n  item: any;\n  /** Raw value of the property bound to the cell. */\n  value: any;\n  /** Formatted/mapped value of the property bound to the cell. */\n  text: string;\n}\n","export enum FormStateEnum {\n  NEW = 'new',\n  EDIT = 'edit',\n  VIEW = 'view',\n}\n","import {\n  Component,\n  EventEmitter,\n  Input,\n  OnChanges,\n  OnDestroy,\n  OnInit,\n  Output,\n  SimpleChanges,\n  ViewChild,\n} from '@angular/core';\nimport { filter, Subscription } from 'rxjs';\nimport { FullscreenTypes } from '../../../enums/fullscreen-types';\nimport { GeneralGetApiInterface } from '../../../models/general-get-api.interface';\nimport { GeneralListDataEntryStateType } from '../../../models/general-list-data-entry-state.type';\nimport { GeneralSaveApiInterface } from '../../../models/general-save-api.interface';\nimport { GeneralSaveReasonsEnum } from '../../../models/general-save-reasons.enum';\nimport { deepEqual, propertyOf } from '../../../utils';\nimport { ModalSizeEnum } from '../../modal/modal-size-enum';\nimport { GeneralListManagementComponent } from '../general-list-management/general-list-management.component';\nimport { GeneralListDepsService } from '../general-simple-list/general-list-deps.service';\nimport { GeneralFieldConfigInterface } from './../../../models/general-field-config.interface';\nimport { GeneralFormFieldsetConfigInterface } from './../../../models/general-form-fieldset-config.interface';\nimport { GeneralDataEntryConfig } from './general-data-entry-config';\nimport { GeneralListModalDataEntryComponent } from './general-list-modal-data-entry/general-list-modal-data-entry.component';\nimport { ModalStatus } from './general-list-modal-data-entry/modal-status';\nimport { bindForm, handleBeforeSaveCallBack } from './list-data-entry-functions';\nimport {\n  DataEntryFieldConfigInterface,\n  GeneralSimpleDataEntryComponent,\n} from '../general-simple-data-entry/general-simple-data-entry.component';\nimport { ActivatedRoute, NavigationEnd, Params, Router } from '@angular/router';\nimport { QueryBuilder } from 'odata-query-builder';\nimport { HttpHeaders } from '@angular/common/http';\nimport { isSaveResult } from '../../../models';\n\n@Component({\n  selector: 'app-general-list-data-entry',\n  templateUrl: './general-list-data-entry.component.html',\n  styleUrls: ['./general-list-data-entry.component.scss'],\n})\nexport class GeneralListDataEntryComponent<T extends DataEntryFieldConfigInterface = any>\n  extends GeneralListManagementComponent\n  implements OnInit, OnChanges, OnDestroy\n{\n  onRowOrderChangeHandler($event: any) {\n    this.onRowOrderChange.emit($event);\n  }\n  @Input() config: GeneralDataEntryConfig<T> | undefined = undefined;\n  @Input() formHeader: string = null;\n  @Input() saveApi: GeneralSaveApiInterface<any>;\n  @Input() getApi: GeneralGetApiInterface<any>;\n  @Input() fieldsetConfig: GeneralFormFieldsetConfigInterface;\n  @Input() formColumnCount?: number;\n  @Input() beforeSaveCallback: (data: any) => string | null | Promise<string | null>;\n  @Input() saveCallback: (data: any, state: 'edit' | 'new', parentItem?: any) => any;\n  @Input() afterSaveCallback: (data: any) => any;\n  @Input() hideAddNewButton?: boolean;\n  @Input() currentState?: GeneralListDataEntryStateType;\n  @Input() topSlicePercent?: number;\n  @Input() modalMode: boolean = false;\n  @Input() modalSize: ModalSizeEnum = ModalSizeEnum.Large;\n  @Input() hasNew: boolean | ((row: any) => string);\n  @Input() dataEntryFields: GeneralFieldConfigInterface[] = undefined;\n\n  @Output() bindCallback: EventEmitter<any> = new EventEmitter();\n  @Output() changeStateCallback: EventEmitter<GeneralListDataEntryStateType> =\n    new EventEmitter<GeneralListDataEntryStateType>();\n  @Output() modalClosed: EventEmitter<boolean> = new EventEmitter<boolean>();\n  @Output() modalType: EventEmitter<ModalStatus> = new EventEmitter();\n\n  @ViewChild('grid') grid: GeneralListManagementComponent;\n  @ViewChild('simpleDataEntry', { static: false }) simpleDataEntry: GeneralSimpleDataEntryComponent;\n  state: GeneralListDataEntryStateType = 'view';\n  hasCustomForm: boolean = false;\n  lastFindedData?: any;\n  formValuesSubscription: Subscription;\n  modalInstance: { instance: any };\n\n  innerFields: GeneralFieldConfigInterface[];\n  mode: 'list' | 'modal' = 'list';\n  identityId: any;\n  data: any;\n\n  @Output() valuesChanged = new EventEmitter();\n  private values: any;\n  emit: boolean = false;\n\n  private getRefLoadingTimeoutId: any = null;\n  private getApiLoadingTimeoutId: any = null;\n  private getApiSubscribtion?: Subscription;\n  public primaryFields: { [name: string]: GeneralFieldConfigInterface } = {};\n  private allowReorderInitial;\n\n  selectedItem: any;\n  finalFields: GeneralFieldConfigInterface[];\n\n  constructor(deps: GeneralListDepsService, private _route?: ActivatedRoute, router?: Router) {\n    super(deps);\n  }\n\n  override ngOnInit(): void {\n    this.checkPermissions();\n    if (!this.hasViewAccess) return;\n    this.updateFields();\n\n    this._route.data.subscribe(data => {\n      this.mode = data['intersystem'] == true ? 'modal' : 'list';\n    });\n\n    this._route.params.subscribe((params: Params) => {\n      if (this.mode == 'modal') {\n        this.identityId = params['id'];\n        const mode: 'view' | 'edit' | 'new' = params['mode'] ?? 'new';\n        this.changeState(this.identityId ? mode : 'new');\n      }\n    });\n  }\n\n  updateFields() {\n    if (this.mode == 'modal') return;\n    if (this.fields == undefined && this.config) {\n      this.fields = [];\n      Object.keys(this.config?.formConfig).forEach(key => {\n        this.fields.push({ name: key, ...this.config.formConfig[key] });\n      });\n    }\n    // this.fields = [...this.fields]\n    this.finalFields = this.dataEntryFields != undefined ? this.dataEntryFields : this.fields;\n    this.hasCustomForm = !this.finalFields?.some(x => x.formConfig);\n    this.finalFields?.forEach(item => {\n      this.primaryFields[item.name] = {\n        ...item,\n        formConfig: item.formConfig ? { ...item.formConfig } : undefined,\n      };\n    });\n    if (!this.modalMode)\n      setTimeout(() => {\n        if (this.state == 'view') {\n          const data =\n            this.selectedRows instanceof Array ? this.selectedRows[0] : this.selectedRows;\n          this.bind(data).then(() => {\n            this.emit = true;\n          });\n        }\n      }, 0);\n  }\n\n  onValuesChanged({ values }: { values: any }) {\n    if (this.emit && this.state != 'view') {\n      if (this.values != undefined && !deepEqual(values, this.values))\n        this.valuesChanged.emit(values);\n      this.values = values;\n    }\n  }\n\n  override ngOnChanges(changes: SimpleChanges): void {\n    this.hasTree = !!this.treeChildrenBinding || !!this.treeIdBinding || !!this.treeTitleBinding;\n    if (changes.hasOwnProperty(propertyOf<GeneralListDataEntryComponent>('allowReorder')))\n      this.allowReorderInitial = this.allowReorder;\n    if (this.modalMode) {\n      if (\n        changes[propertyOf<GeneralListDataEntryComponent<T>>('dataEntryFields')] ||\n        changes['fields'] ||\n        changes['config']\n      ) {\n        this.updateFields();\n        if (this.modalInstance?.instance) {\n          this.modalInstance.instance.fields = this.finalFields;\n          // if (!deepEqual(changes['fields'].currentValue, changes['fields'].previousValue))\n          this.modalInstance.instance?.change('fields');\n        }\n      }\n    } else {\n      if (\n        changes[propertyOf<GeneralListDataEntryComponent<T>>('dataEntryFields')] ||\n        changes['fields'] ||\n        changes['config']\n      ) {\n        this.updateFields();\n      }\n      const currentState = changes['currentState'];\n      if (currentState && currentState.currentValue && this.mode != 'modal') {\n        this.state = this.currentState;\n      }\n    }\n  }\n\n  override ngOnDestroy(): void {\n    this.getApiSubscribtion?.unsubscribe();\n    // this.refFieldSubscriptions?.forEach(sb => sb.unsubscribe());\n    this.formValuesSubscription?.unsubscribe();\n  }\n\n  override addNewHandler = (): void => {\n    this.allowReorder = false;\n    if (this.config) this.simpleDataEntry?.unbindValues();\n    if (!this.finalFields || this.finalFields.length == 0) return;\n    if (this.modalMode) {\n      const parentItem = this.grid?.selectedRows;\n      if (typeof this.hasNew == 'function') {\n        const text = this.hasNew(parentItem);\n        if (text != null) {\n          this.deps.toastService.show({ type: 'error', text });\n          return;\n        }\n      }\n      this.modalType.emit('new');\n      this.changeState('new');\n      this.modalInstance = { instance: undefined };\n      this.deps.modalService\n        .open(\n          GeneralListModalDataEntryComponent,\n          this.modalSize,\n          {\n            isTree: !!this.transformer,\n            fields: this.finalFields,\n            config: this.config,\n            fieldsetConfig: this.fieldsetConfig,\n            formColumnCount: this.formColumnCount,\n            entityIdName: this.identityFieldName,\n            title: this.gridName ? this.gridName.single + ' جدید' : 'جدید',\n            saveApi: this.saveApi,\n            parentItem,\n            beforeSaveCallback: this.beforeSaveCallback,\n            saveCallback: this.saveCallback,\n            editCallBack: this.editCallback,\n            primaryFields: this.primaryFields,\n          },\n          undefined,\n          this.modalInstance\n        )\n        .then(() => {\n          this.onModalClosed(true);\n        })\n        .catch(() => {\n          this.onModalClosed(false);\n        });\n      this.formValuesSubscription = new Subscription();\n      this.formValuesSubscription.add(\n        this.modalInstance.instance.valuesChanged.subscribe((values: any) => {\n          this.valuesChanged.emit(values);\n        })\n      );\n      this.formValuesSubscription.add(\n        this.modalInstance.instance.bindEvent.subscribe((values: any) => {\n          this.bindCallback.emit(values);\n        })\n      );\n    } else {\n      this.fullscreenType = FullscreenTypes.NONE;\n      this.changeState('new');\n      this.bind();\n      this.addNewCallback && this.addNewCallback();\n    }\n  };\n\n  override editHandler = (data: any) => {\n    if (!this.finalFields || this.finalFields.length == 0) return;\n    if (this.modalMode) {\n      this.modalType.emit('edit');\n      this.changeState('edit');\n      this.modalInstance = { instance: undefined };\n      setTimeout(async () => {\n        this.deps.modalService\n          .open(\n            GeneralListModalDataEntryComponent,\n            this.modalSize,\n            {\n              isTree: !!this.transformer,\n              fields: this.finalFields,\n              config: this.config,\n              fieldsetConfig: this.fieldsetConfig,\n              formColumnCount: this.formColumnCount,\n              entityId: data[this.identityFieldName],\n              entityIdName: this.identityFieldName,\n              data: data,\n              title: 'ویرایش',\n              saveApi: this.saveApi,\n              parentItem: this.selectedItem,\n              beforeSaveCallback: this.beforeSaveCallback,\n              saveCallback: this.saveCallback,\n              editCallBack: this.editCallback,\n              primaryFields: this.primaryFields,\n            },\n            undefined,\n            this.modalInstance\n          )\n          .then(() => {\n            this.onModalClosed(true);\n          })\n          .catch(() => {\n            this.onModalClosed(false);\n          });\n        this.formValuesSubscription = new Subscription();\n        this.formValuesSubscription.add(\n          this.modalInstance.instance.valuesChanged.subscribe((values: any) => {\n            this.valuesChanged.emit(values);\n          })\n        );\n        this.formValuesSubscription.add(\n          this.modalInstance.instance.bindEvent.subscribe((values: any) => {\n            this.bindCallback.emit(values);\n          })\n        );\n      });\n    } else {\n      this.fullscreenType = FullscreenTypes.NONE;\n      this.changeState('edit');\n      if (this.getApi) {\n        this.getDataFromApi(data).then(res => {\n          this.lastFindedData = { ...res };\n          this.editCallback && this.editCallback(data);\n          if (this.state == 'edit') {\n            this.bind(res);\n          }\n        });\n      } else {\n        setTimeout(async () => {\n          await this.bind(data);\n          this.editCallback && this.editCallback(data);\n        }, 0);\n      }\n    }\n  };\n\n  beforeReloadHandler = (): void => {\n    this.isFirstSelection = true;\n    this.beforeReloadCallback && this.beforeReloadCallback();\n    this.selectedRows = null;\n  };\n\n  override selectHandler = (selectedRows: any): void => {\n    this.selectedRows = selectedRows;\n    if (\n      !this.selectedRows ||\n      (this.selectedRows instanceof Array && this.selectedRows?.length != 1)\n    ) {\n      setTimeout(() => {\n        this.bind(null);\n      }, 0);\n\n      return;\n    }\n    this.selectedItem =\n      this.selectedRows instanceof Array ? this.selectedRows[0] : this.selectedRows;\n\n    if (this.modalMode) {\n      this.selectCallback && this.selectCallback(selectedRows);\n    } else {\n      if (this.isFirstSelection) {\n        this.isFirstSelection = false;\n      } else if (!this.fullscreenType) {\n        this.fullscreenType = FullscreenTypes.NONE;\n      }\n\n      if (this.getApi) {\n        // این تام اوت به دلیل همزمانی فراخوانی متد انتخاب و ویرایش قرار داده شده تا از ارسال دو درخواست گت جلوگیری کند\n        setTimeout(() => {\n          if (this.state == 'view') {\n            this.getDataFromApi(this.selectedItem).then(res => {\n              this.lastFindedData = { ...res };\n              this.selectCallback && this.selectCallback(res);\n              if (this.state == 'view') {\n                this.bind(res);\n              }\n            });\n          }\n        }, 100);\n      } else {\n        setTimeout(async () => {\n          await this.bind(this.selectedItem);\n          this.selectCallback && this.selectCallback(this.selectedItem);\n        }, 0);\n      }\n    }\n  };\n\n  async saveHandler(data: any): Promise<any> {\n    let finalData = {\n      [this.identityFieldName]: data[this.identityFieldName],\n      ...data,\n      ...(this.hiddenData ? this.hiddenData : {}),\n    };\n\n    if (this.transformer && this.state === 'new') {\n      finalData.parentRef = this.selectedItem?.id;\n      finalData.type = this.selectedItem.type + 1;\n    }\n\n    const result = await handleBeforeSaveCallBack(\n      this.values,\n      this.config?.beforeSaveCallback ?? this.beforeSaveCallback\n    );\n    if (result !== null) {\n      this.deps.toastService.show({ type: 'error', text: result });\n      return Promise.reject(result);\n    }\n\n    const svclbk = this.config?.saveCallback ?? this.saveCallback;\n    const aftrsvclbk = this.config?.afterSaveCallback ?? this.afterSaveCallback;\n    if (svclbk) {\n      const saveCallbackResult = await svclbk(\n        finalData,\n        this.state == 'edit' ? 'edit' : 'new',\n        this.selectedItem\n      );\n      if (saveCallbackResult !== false) {\n        this.changeState('view');\n        this.reloadHandler();\n        this.selectHandler(this.selectedRows);\n        if (isSaveResult(saveCallbackResult)) {\n          this.deps.toastService.show({\n            type: 'success',\n            text: saveCallbackResult.informations[0].informationMessage,\n          });\n        }\n        if (aftrsvclbk) aftrsvclbk(finalData);\n      } else return;\n    } else if (this.saveApi || this.config?.saveApi) {\n      const svApi = this.config?.saveApi ?? this.saveApi;\n      this.loadingIsShow = true;\n      svApi\n        .save({\n          collection: finalData,\n          saveReason: data[this.identityFieldName]\n            ? GeneralSaveReasonsEnum.UPDATE\n            : GeneralSaveReasonsEnum.NEW,\n        })\n        .subscribe({\n          next: result => {\n            this.loadingIsShow = false;\n            this.changeState('view');\n            this.reloadHandler();\n            this.selectHandler(this.selectedRows);\n            if (isSaveResult(result)) {\n              this.deps.toastService.show({\n                type: 'success',\n                text: result.informations[0].informationMessage,\n              });\n            }\n            if (aftrsvclbk) aftrsvclbk(finalData);\n          },\n          error: () => {\n            this.loadingIsShow = false;\n          },\n        });\n    }\n  }\n\n  cancelHandler(): void {\n    this.changeState('view');\n    setTimeout(() => {\n      if (this.lastFindedData) this.bind(this.lastFindedData);\n      else {\n        const data = this.selectedRows instanceof Array ? this.selectedRows[0] : this.selectedRows;\n        this.bind(data);\n      }\n    }, 0);\n  }\n\n  private getDataFromApi(data: any): Promise<any> {\n    return new Promise(resolve => {\n      clearTimeout(this.getApiLoadingTimeoutId);\n      this.getApiLoadingTimeoutId = setTimeout(() => {\n        this.loadingIsShow = true;\n      }, 500);\n      this.getApiSubscribtion?.unsubscribe();\n      this.getApiSubscribtion = this.getApi.get(data.id).subscribe({\n        next: (res: any) => {\n          clearTimeout(this.getApiLoadingTimeoutId);\n          this.loadingIsShow = false;\n          resolve(res);\n        },\n        error: () => {\n          clearTimeout(this.getApiLoadingTimeoutId);\n          this.loadingIsShow = false;\n        },\n      });\n    });\n  }\n\n  private async bind(data?: any) {\n    // commit\n    // this.refFieldSubscriptions?.forEach(sb => sb.unsubscribe());\n    // this.refFieldSubscriptions = [];\n    clearTimeout(this.getRefLoadingTimeoutId);\n    this.getRefLoadingTimeoutId = setTimeout(() => {\n      this.loadingIsShow = true;\n    }, 500);\n    if (this.config) {\n      this.simpleDataEntry?.unbindValues();\n      this.simpleDataEntry?.bindValues(data);\n    } else {\n      this.finalFields = await bindForm(\n        this.deps.generalOdataService,\n        [...(this.finalFields || [])],\n        data,\n        this.primaryFields\n      );\n    }\n    clearTimeout(this.getRefLoadingTimeoutId);\n    this.loadingIsShow = false;\n    this.bindCallback.emit(this.finalFields);\n  }\n\n  private changeState(state: GeneralListDataEntryStateType) {\n    this.values = undefined;\n    this.state = state;\n    if (this.mode == 'modal') {\n      if (this.identityId && this.state != 'new') {\n        const query = new QueryBuilder()\n          .top(1)\n          .filter(fb => fb.filterExpression(this.identityFieldName, 'eq', this.identityId));\n        this.deps.generalOdataService\n          .getByEntity(this.oDataEntity, query.toQuery(), new HttpHeaders(this.oDataHttpHeaders))\n          .subscribe(response => {\n            this.data = response.value[0];\n          });\n      }\n    } else {\n      if (state == 'view') this.allowReorder = this.allowReorderInitial;\n      else this.allowReorder = false;\n    }\n    this.changeStateCallback.emit(state);\n  }\n\n  onModalClosed(submit: boolean) {\n    this.allowReorder = this.allowReorderInitial;\n    this.formValuesSubscription?.unsubscribe();\n    this.modalInstance.instance = undefined;\n    if (submit) this.reloadHandler();\n    this.modalType.emit('closed');\n    this.changeState('view');\n    this.modalClosed.emit(submit);\n  }\n}\n","<ng-container *ngIf=\"mode == 'list'; else modal\">\n  <ng-container *ngIf=\"modalMode; else footerMode\">\n    <app-general-list-management\n      *ngIf=\"fields?.length > 0 && oDataTable\"\n      [title]=\"title\"\n      [uniquePageName]=\"uniquePageName\"\n      [identityFieldName]=\"identityFieldName\"\n      [printParams]=\"printParams\"\n      [gridName]=\"gridName\"\n      [fields]=\"fields\"\n      [disabled]=\"state != 'view'\"\n      [oDataServer]=\"oDataServer\"\n      [oDataTable]=\"oDataTable\"\n      [oDataEntity]=\"oDataEntity\"\n      [hasRelatedOrigins]=\"hasRelatedOrigins\"\n      [oDataHttpHeaders]=\"oDataHttpHeaders\"\n      [oDataFilters]=\"oDataFilters\"\n      [items]=\"items\"\n      [hiddenData]=\"hiddenData\"\n      [isMultipleSelect]=\"isMultipleSelect\"\n      [headerCustomActions]=\"headerCustomActions\"\n      [filterActions]=\"filterActions\"\n      [gridCustomActions]=\"gridCustomActions\"\n      [gridRowMoreActions]=\"gridRowMoreActions\"\n      [gridRowIconActions]=\"gridRowIconActions\"\n      [gridCollapseRows]=\"gridCollapseRows\"\n      [gridCollapseLevel]=\"gridCollapseLevel\"\n      [removeApi]=\"config?.saveApi ?? saveApi\"\n      [hideRemoveButton]=\"hideRemoveButton\"\n      [selectCallback]=\"selectHandler\"\n      [afterRemoveCallback]=\"afterRemoveCallback\"\n      [removeCallback]=\"removeCallback\"\n      [beforeRemoveCallback]=\"beforeRemoveCallback\"\n      [addNewCallback]=\"hideAddNewButton ? null : addNewHandler\"\n      [addNewActions]=\"hideAddNewButton ? null : addNewActions\"\n      [editCallback]=\"hideEditButton ? null : editHandler\"\n      [multipleRemoveCallback]=\"multipleRemoveCallback\"\n      [bulkRemove]=\"bulkRemove\"\n      [beforeReloadCallback]=\"beforeReloadCallback\"\n      [reloadCallback]=\"reloadCallback\"\n      [showDownloadBtn]=\"showDownloadBtn\"\n      [reload]=\"reload\"\n      [isMultipleSelect]=\"isMultipleSelect\"\n      [hideCheckboxInCheckableGrid]=\"hideCheckboxInCheckableGrid\"\n      [allowReorder]=\"allowReorder\"\n      [saveRowIndexCallback]=\"saveRowIndexCallback\"\n      (onRowOrderChange)=\"onRowOrderChangeHandler($event)\"\n      [reorderFieldName]=\"reorderFieldName\"\n      [reorderCondition]=\"reorderCondition\"\n      [beforeEditCallback]=\"beforeEditCallback\"\n      [beforeAddCallback]=\"beforeAddCallback\"\n      [rowFormatCallback]=\"rowFormatCallback\"\n      [cellFormatCallback]=\"cellFormatCallback\"\n      [viewAccessNodeId]=\"viewAccessNodeId\"\n      [newAccessNodeId]=\"newAccessNodeId\"\n      [deleteAccessNodeId]=\"deleteAccessNodeId\"\n      [editAccessNodeId]=\"editAccessNodeId\"\n      [downloadAccessNodeId]=\"downloadAccessNodeId\"\n      [treeIdBinding]=\"treeIdBinding\"\n      [treeTitleBinding]=\"treeTitleBinding\"\n      [treeExpandedBinding]=\"treeExpandedBinding\"\n      [treeChildrenBinding]=\"treeChildrenBinding\"\n      [treeExpandDepth]=\"treeExpandDepth\"\n      [treeSelectedNode]=\"treeSelectedNode\"\n      [treeSideIconTemplate]=\"treeSideIconTemplate\"\n    >\n    </app-general-list-management>\n    <app-general-list-management\n      #grid\n      *ngIf=\"(fields?.length > 0 || hasTree) && apiServer && apiUrl\"\n      [fields]=\"fields\"\n      [oDataEntity]=\"oDataEntity\"\n      [apiServer]=\"apiServer\"\n      [apiHeaders]=\"apiHeaders\"\n      [apiUrl]=\"apiUrl\"\n      [transformer]=\"transformer\"\n      [childItemsPath]=\"childItemsPath\"\n      [title]=\"title\"\n      [uniquePageName]=\"uniquePageName\"\n      [gridName]=\"gridName\"\n      [disabled]=\"state != 'view'\"\n      [headerCustomActions]=\"headerCustomActions\"\n      [filterActions]=\"filterActions\"\n      [gridCustomActions]=\"gridCustomActions\"\n      [gridRowMoreActions]=\"gridRowMoreActions\"\n      [gridRowIconActions]=\"gridRowIconActions\"\n      [gridCollapseRows]=\"gridCollapseRows\"\n      [gridCollapseLevel]=\"gridCollapseLevel\"\n      [removeApi]=\"config?.saveApi ?? saveApi\"\n      [hideRemoveButton]=\"hideRemoveButton\"\n      [selectCallback]=\"selectHandler\"\n      [afterRemoveCallback]=\"afterRemoveCallback\"\n      [removeCallback]=\"removeCallback\"\n      [beforeRemoveCallback]=\"beforeRemoveCallback\"\n      [addNewCallback]=\"hideAddNewButton ? null : addNewHandler\"\n      [addNewActions]=\"hideAddNewButton ? null : addNewActions\"\n      [editCallback]=\"hideEditButton ? null : editHandler\"\n      [multipleRemoveCallback]=\"multipleRemoveCallback\"\n      [bulkRemove]=\"bulkRemove\"\n      [beforeReloadCallback]=\"beforeReloadCallback\"\n      [reloadCallback]=\"reloadCallback\"\n      [showDownloadBtn]=\"showDownloadBtn\"\n      [reload]=\"reload\"\n      [isMultipleSelect]=\"isMultipleSelect\"\n      [uniquePageName]=\"uniquePageName\"\n      [identityFieldName]=\"identityFieldName\"\n      [hideCheckboxInCheckableGrid]=\"true\"\n      [allowReorder]=\"allowReorder\"\n      [saveRowIndexCallback]=\"saveRowIndexCallback\"\n      (onRowOrderChange)=\"onRowOrderChangeHandler($event)\"\n      [reorderFieldName]=\"reorderFieldName\"\n      [reorderCondition]=\"reorderCondition\"\n      [beforeEditCallback]=\"beforeEditCallback\"\n      [beforeAddCallback]=\"beforeAddCallback\"\n      [viewAccessNodeId]=\"viewAccessNodeId\"\n      [newAccessNodeId]=\"newAccessNodeId\"\n      [deleteAccessNodeId]=\"deleteAccessNodeId\"\n      [editAccessNodeId]=\"editAccessNodeId\"\n      [downloadAccessNodeId]=\"downloadAccessNodeId\"\n      [treeIdBinding]=\"treeIdBinding\"\n      [treeTitleBinding]=\"treeTitleBinding\"\n      [treeExpandedBinding]=\"treeExpandedBinding\"\n      [treeChildrenBinding]=\"treeChildrenBinding\"\n      [treeExpandDepth]=\"treeExpandDepth\"\n      [treeSelectedNode]=\"treeSelectedNode\"\n      [treeSideIconTemplate]=\"treeSideIconTemplate\"\n    >\n    </app-general-list-management>\n  </ng-container>\n\n  <ng-template #footerMode class=\"general-list-data-entry\">\n    <ui-screen-separator\n      [fullscreenType]=\"fullscreenType == undefined ? FullscreenTypes.TOP : fullscreenType\"\n      [topSlicePercent]=\"topSlicePercent\"\n    >\n      <app-general-list-management\n        *ngIf=\"fields?.length > 0 && oDataTable\"\n        top\n        [title]=\"title\"\n        [uniquePageName]=\"uniquePageName\"\n        [identityFieldName]=\"identityFieldName\"\n        [printParams]=\"printParams\"\n        [gridName]=\"gridName\"\n        [fields]=\"fields\"\n        [disabled]=\"state != 'view'\"\n        [oDataServer]=\"oDataServer\"\n        [oDataTable]=\"oDataTable\"\n        [oDataEntity]=\"oDataEntity\"\n        [oDataHttpHeaders]=\"oDataHttpHeaders\"\n        [oDataFilters]=\"oDataFilters\"\n        [items]=\"items\"\n        [hiddenData]=\"hiddenData\"\n        [isMultipleSelect]=\"isMultipleSelect\"\n        [headerCustomActions]=\"headerCustomActions\"\n        [filterActions]=\"filterActions\"\n        [gridCustomActions]=\"gridCustomActions\"\n        [gridRowMoreActions]=\"gridRowMoreActions\"\n        [gridRowIconActions]=\"gridRowIconActions\"\n        [removeApi]=\"config?.saveApi ?? saveApi\"\n        [hideRemoveButton]=\"hideRemoveButton\"\n        [selectCallback]=\"selectHandler\"\n        [afterRemoveCallback]=\"afterRemoveCallback\"\n        [removeCallback]=\"removeCallback\"\n        [beforeRemoveCallback]=\"beforeRemoveCallback\"\n        [addNewCallback]=\"hideAddNewButton ? null : addNewHandler\"\n        [addNewActions]=\"hideAddNewButton ? null : addNewActions\"\n        [editCallback]=\"hideEditButton ? null : editHandler\"\n        [multipleRemoveCallback]=\"multipleRemoveCallback\"\n        [bulkRemove]=\"bulkRemove\"\n        [beforeReloadCallback]=\"beforeReloadCallback\"\n        [reloadCallback]=\"reloadCallback\"\n        [reload]=\"reload\"\n        [beforeReloadCallback]=\"beforeReloadHandler\"\n        [filterActions]=\"filterActions\"\n        [operationActions]=\"operationActions\"\n        (onItemChecked)=\"onItemCheckedHandler($event)\"\n        [beforeEditCallback]=\"beforeEditCallback\"\n        [beforeAddCallback]=\"beforeAddCallback\"\n        [allowReorder]=\"allowReorder\"\n        [saveRowIndexCallback]=\"saveRowIndexCallback\"\n        (onRowOrderChange)=\"onRowOrderChangeHandler($event)\"\n        [reorderFieldName]=\"reorderFieldName\"\n        [reorderCondition]=\"reorderCondition\"\n        [rowFormatCallback]=\"rowFormatCallback\"\n        [cellFormatCallback]=\"cellFormatCallback\"\n        [showDownloadBtn]=\"showDownloadBtn\"\n        (gridItemClickCallback)=\"gridItemClickHandler($event)\"\n        [viewAccessNodeId]=\"viewAccessNodeId\"\n        [newAccessNodeId]=\"newAccessNodeId\"\n        [deleteAccessNodeId]=\"deleteAccessNodeId\"\n        [editAccessNodeId]=\"editAccessNodeId\"\n        [downloadAccessNodeId]=\"downloadAccessNodeId\"\n        [treeIdBinding]=\"treeIdBinding\"\n        [treeTitleBinding]=\"treeTitleBinding\"\n        [treeExpandedBinding]=\"treeExpandedBinding\"\n        [treeChildrenBinding]=\"treeChildrenBinding\"\n        [treeExpandDepth]=\"treeExpandDepth\"\n        [treeSelectedNode]=\"treeSelectedNode\"\n        [treeSideIconTemplate]=\"treeSideIconTemplate\"\n      >\n      </app-general-list-management>\n      <app-general-list-management\n        #grid\n        top\n        *ngIf=\"(fields?.length > 0 || hasTree) && apiServer && apiUrl\"\n        [fields]=\"fields\"\n        [oDataEntity]=\"oDataEntity\"\n        [apiServer]=\"apiServer\"\n        [apiHeaders]=\"apiHeaders\"\n        [apiUrl]=\"apiUrl\"\n        [transformer]=\"transformer\"\n        [childItemsPath]=\"childItemsPath\"\n        [title]=\"title\"\n        [uniquePageName]=\"uniquePageName\"\n        [gridName]=\"gridName\"\n        [disabled]=\"state != 'view'\"\n        [headerCustomActions]=\"headerCustomActions\"\n        [filterActions]=\"filterActions\"\n        [gridCustomActions]=\"gridCustomActions\"\n        [gridRowMoreActions]=\"gridRowMoreActions\"\n        [gridRowIconActions]=\"gridRowIconActions\"\n        [removeApi]=\"config?.saveApi ?? saveApi\"\n        [hideRemoveButton]=\"hideRemoveButton\"\n        [selectCallback]=\"selectHandler\"\n        [afterRemoveCallback]=\"afterRemoveCallback\"\n        [removeCallback]=\"removeCallback\"\n        [beforeRemoveCallback]=\"beforeRemoveCallback\"\n        [addNewCallback]=\"hideAddNewButton ? null : addNewHandler\"\n        [addNewActions]=\"hideAddNewButton ? null : addNewActions\"\n        [editCallback]=\"hideEditButton ? null : editHandler\"\n        [multipleRemoveCallback]=\"multipleRemoveCallback\"\n        [bulkRemove]=\"bulkRemove\"\n        [beforeReloadCallback]=\"beforeReloadCallback\"\n        [reloadCallback]=\"reloadCallback\"\n        [showDownloadBtn]=\"showDownloadBtn\"\n        [reload]=\"reload\"\n        [isMultipleSelect]=\"isMultipleSelect\"\n        [uniquePageName]=\"uniquePageName\"\n        [identityFieldName]=\"identityFieldName\"\n        [hideCheckboxInCheckableGrid]=\"true\"\n        [allowReorder]=\"allowReorder\"\n        [saveRowIndexCallback]=\"saveRowIndexCallback\"\n        (onRowOrderChange)=\"onRowOrderChangeHandler($event)\"\n        [reorderFieldName]=\"reorderFieldName\"\n        [reorderCondition]=\"reorderCondition\"\n        [beforeEditCallback]=\"beforeEditCallback\"\n        [beforeAddCallback]=\"beforeAddCallback\"\n        [rowFormatCallback]=\"rowFormatCallback\"\n        [cellFormatCallback]=\"cellFormatCallback\"\n        (gridItemClickCallback)=\"gridItemClickHandler($event)\"\n        [viewAccessNodeId]=\"viewAccessNodeId\"\n        [newAccessNodeId]=\"newAccessNodeId\"\n        [deleteAccessNodeId]=\"deleteAccessNodeId\"\n        [editAccessNodeId]=\"editAccessNodeId\"\n        [downloadAccessNodeId]=\"downloadAccessNodeId\"\n        [treeIdBinding]=\"treeIdBinding\"\n        [treeTitleBinding]=\"treeTitleBinding\"\n        [treeExpandedBinding]=\"treeExpandedBinding\"\n        [treeChildrenBinding]=\"treeChildrenBinding\"\n        [treeExpandDepth]=\"treeExpandDepth\"\n        [treeSelectedNode]=\"treeSelectedNode\"\n        [treeSideIconTemplate]=\"treeSideIconTemplate\"\n      >\n      </app-general-list-management>\n      <app-general-simple-data-entry\n        class=\"general-list-data-entry__form\"\n        [header]=\"formHeader\"\n        [class.general-list-data-entry__form--fieldset]=\"fieldsetConfig?.type == 'fieldset'\"\n        *ngIf=\"!hasCustomForm && finalFields?.length > 0 && !config\"\n        bottom\n        [fields]=\"finalFields\"\n        [fieldsetConfig]=\"fieldsetConfig\"\n        [columnCount]=\"formColumnCount\"\n        [disabled]=\"state == 'view'\"\n        [showFooterOnTop]=\"true\"\n        (saveCallback)=\"saveHandler($event)\"\n        (cancelCallback)=\"cancelHandler()\"\n        (formChanged)=\"onValuesChanged($event)\"\n      ></app-general-simple-data-entry>\n      <app-general-simple-data-entry\n        class=\"general-list-data-entry__form\"\n        #simpleDataEntry\n        [header]=\"formHeader\"\n        [class.general-list-data-entry__form--fieldset]=\"fieldsetConfig?.type == 'fieldset'\"\n        *ngIf=\"!hasCustomForm && config\"\n        bottom\n        [config]=\"config.formConfig\"\n        [fieldsetConfig]=\"fieldsetConfig\"\n        [columnCount]=\"formColumnCount\"\n        [disabled]=\"state == 'view'\"\n        [showFooterOnTop]=\"true\"\n        (saveCallback)=\"saveHandler($event)\"\n        (cancelCallback)=\"cancelHandler()\"\n        (formChanged)=\"onValuesChanged($event)\"\n      ></app-general-simple-data-entry>\n      <ng-content bottom select=\"[form]\"></ng-content>\n    </ui-screen-separator>\n    <span\n      class=\"general-list-data-entry__overlay\"\n      [class.general-list-data-entry__overlay--show]=\"disabled || loadingIsShow\"\n      ><ui-spinner [show]=\"loadingIsShow\"></ui-spinner\n    ></span>\n  </ng-template>\n</ng-container>\n\n<ng-template #modal>\n  <cmn-general-list-modal-data-entry\n    [isTree]=\"!!transformer\"\n    [fields]=\"finalFields\"\n    [config]=\"config\"\n    [fieldsetConfig]=\"fieldsetConfig\"\n    [formColumnCount]=\"formColumnCount\"\n    [entityIdName]=\"identityFieldName\"\n    [saveApi]=\"saveApi\"\n    [beforeSaveCallback]=\"beforeSaveCallback\"\n    [saveCallback]=\"saveCallback\"\n    [editCallBack]=\"editCallback\"\n    [entityId]=\"data ? data[this.identityFieldName] : null\"\n    [data]=\"data\"\n  >\n    <!-- parentItem: this.selectedItem, -->\n    <!-- [parentItem], -->\n  </cmn-general-list-modal-data-entry>\n</ng-template>\n","import { Component, Input, OnChanges, OnInit, SimpleChanges } from '@angular/core';\n\nimport { GeneralODataTableName, HttpHeaderNames } from '../../../constants';\nimport { GeneralListDataEntryStateType } from '../../../models/general-list-data-entry-state.type';\nimport { GridColumnFilterInterface } from '../../../models/grid-column-filter.interface';\nimport { createParamHttpHeaderValue } from '../../../utils';\nimport { GeneralDataEntryConfig } from '../general-list-data-entry/general-data-entry-config';\nimport { GeneralFieldConfigInterface } from '../../../models/general-field-config.interface';\nimport {\n  GeneralActionButtonInterface,\n  GeneralActionInterface,\n  GeneralIconActionInterface,\n} from '../../../models/general-action.interface';\nimport { GeneralSaveApiInterface } from '../../../models/general-save-api.interface';\nimport { GeneralGetApiInterface } from '../../../models/general-get-api.interface';\nimport { GeneralFormFieldsetConfigInterface } from '../../../models/general-form-fieldset-config.interface';\nimport { DataEntryFieldConfigInterface } from '../general-simple-data-entry/general-simple-data-entry.component';\n\n@Component({\n  selector: 'app-general-dual-list-data-entry',\n  templateUrl: './general-dual-list-data-entry.component.html',\n  styleUrls: ['./general-dual-list-data-entry.component.scss'],\n})\nexport class GeneralDualListDataEntryComponent<T extends DataEntryFieldConfigInterface> implements OnInit, OnChanges {\n  createDetailHttpHeaders() {\n    this._detailODataHttpHeaders = {\n      [HttpHeaderNames.PARAM]: createParamHttpHeaderValue([\n        { keyName: this.itemRefFieldName, keyValue: this.selectedRows[this.identityFieldName] },\n      ]),\n    };\n\n    if (this.detailODataHttpHeaders)\n      this._detailODataHttpHeaders = {\n        ...this._detailODataHttpHeaders,\n        ...this.detailODataHttpHeaders,\n      };\n  }\n\n  @Input() identityFieldName: string = 'id';\n  @Input() title?: string;\n  @Input() uniquePageName?: string;\n  @Input() fields?: GeneralFieldConfigInterface[];\n  @Input() oDataServer?: string;\n  @Input() oDataTable?: string;\n  @Input() oDataEntity?: string;\n  @Input() oDataHttpHeaders: { [key: string]: string };\n  @Input() oDataFilters?: GridColumnFilterInterface[];\n  @Input() childItemsPath?: string[] | string;\n  @Input() gridRowMoreActions?: GeneralActionInterface[] = [];\n  @Input() gridRowIconActions?: GeneralIconActionInterface[] = [];\n  @Input() gridCustomActions?: GeneralActionButtonInterface[] = [];\n\n  @Input() transformer?: (response: any) => any;\n  @Input() apiServer?: string;\n  @Input() apiUrl?: string;\n  @Input() apiHeaders?: { [name: string]: string };\n\n  @Input() itemRefFieldName: string = 'hdrRef';\n\n  state: GeneralListDataEntryStateType = 'view';\n  selectedRows: any;\n\n  @Input() detailODataServer?: string;\n  @Input() detailODataTable?: string;\n  @Input() detailODataEntity?: string;\n  @Input() detailODataHttpHeaders?: { [key: string]: string };\n  @Input() detailODataFilters?: GridColumnFilterInterface[];\n  @Input() detailGridRowMoreActions?: GeneralActionInterface[];\n  @Input() detailGridRowIconActions?: GeneralIconActionInterface[];\n  @Input() detailGridCustomActions?: GeneralActionButtonInterface[];\n  @Input() detailGridFilterActions?: GeneralActionButtonInterface[];\n  @Input() removeApi?: GeneralSaveApiInterface<any>;\n  @Input() hideRemoveButtonForDetail?: boolean;\n  @Input() hideEditButtonForDetail?: boolean;\n  @Input() detailConfig: GeneralDataEntryConfig<T>;\n  @Input() formHeader?: string;\n  @Input() saveApiForDetail?: GeneralSaveApiInterface<any>;\n  @Input() getApiForDetail?: GeneralGetApiInterface<any>;\n  @Input() fieldsetConfig?: GeneralFormFieldsetConfigInterface;\n  @Input() formColumnCount?: number;\n  @Input() showDownloadBtnForDetail: boolean = true;\n  beforeSaveCallback?: (data: any) => string | null | Promise<string | null>;\n  saveCallback?: (data: any, state: 'edit' | 'new', parentItem?: any) => any;\n  afterSaveCallback?: (data: any) => any;\n  hideAddNewButton?: boolean;\n  currentState?: GeneralListDataEntryStateType;\n  topSlicePercent?: number;\n  modalMode?: boolean;\n  hasNewForDetail?: boolean | ((row: any) => string);\n\n  protected _detailODataHttpHeaders: any;\n\n  ngOnInit(): void {}\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (changes['detailODataHttpHeaders']) {\n      this.createDetailHttpHeaders();\n    }\n  }\n\n  mainListSelectHandler = (selectedRows: any) => {\n    this.selectedRows = selectedRows;\n\n    this.createDetailHttpHeaders();\n  };\n\n  changeStateHandler(state: GeneralListDataEntryStateType) {\n    this.state = state;\n  }\n}\n","<div class=\"general-dual-list-data-entry\">\n  <ui-screen-vertical-separator>\n    <app-general-list-management\n      [hideCheckboxInCheckableGrid]=\"true\"\n      [isMultipleSelect]=\"false\"\n      start\n      class=\"general-dual-list-data-entry__start\"\n      [title]=\"title\"\n      [uniquePageName]=\"uniquePageName\"\n      [loadingIsShow]=\"true\"\n      [disabled]=\"state != 'view'\"\n      [fields]=\"fields\"\n      [oDataServer]=\"oDataServer\"\n      [oDataTable]=\"oDataTable\"\n      [oDataEntity]=\"oDataEntity\"\n      [oDataHttpHeaders]=\"oDataHttpHeaders\"\n      [oDataFilters]=\"oDataFilters\"\n      [headerCustomActions]=\"gridCustomActions\"\n      [gridRowMoreActions]=\"gridRowMoreActions\"\n      [gridRowIconActions]=\"gridRowIconActions\"\n      [removeApi]=\"removeApi\"\n      [selectCallback]=\"mainListSelectHandler\"\n    ></app-general-list-management>\n    <app-general-list-data-entry\n      *ngIf=\"selectedRows\"\n      end\n      class=\"general-dual-list-data-entry__end\"\n      [title]=\"title\"\n      [config]=\"detailConfig\"\n      [oDataServer]=\"detailODataServer || oDataServer\"\n      [oDataTable]=\"detailODataTable || oDataTable\"\n      [oDataEntity]=\"detailODataEntity\"\n      [oDataHttpHeaders]=\"_detailODataHttpHeaders\"\n      [filterActions]=\"detailGridFilterActions\"\n      [oDataFilters]=\"oDataFilters\"\n      [isMultipleSelect]=\"false\"\n      [hideCheckboxInCheckableGrid]=\"true\"\n      [gridCustomActions]=\"gridCustomActions || []\"\n      [gridRowMoreActions]=\"gridRowMoreActions || []\"\n      [gridRowIconActions]=\"gridRowIconActions || []\"\n      [removeApi]=\"saveApiForDetail\"\n      [topSlicePercent]=\"topSlicePercent\"\n      [saveApi]=\"saveApiForDetail\"\n      [getApi]=\"getApiForDetail\"\n      [beforeSaveCallback]=\"beforeSaveCallback\"\n      [saveCallback]=\"saveCallback\"\n      [afterSaveCallback]=\"afterSaveCallback\"\n      [fieldsetConfig]=\"fieldsetConfig\"\n      [formColumnCount]=\"formColumnCount\"\n      (changeStateCallback)=\"changeStateHandler($event)\"\n      [showDownloadBtn]=\"showDownloadBtnForDetail\"\n      [modalMode]=\"true\"\n      ><ng-content form select=\"[form]\"></ng-content\n    ></app-general-list-data-entry>\n  </ui-screen-vertical-separator>\n</div>\n\n<!-- [selectCallback]=\"selectCallback\"\n    [afterRemoveCallback]=\"afterRemoveCallback\"\n    [removeCallback]=\"removeCallback\"\n    [beforeRemoveCallback]=\"beforeRemoveCallback\"\n    [addNewCallback]=\"addNewCallback\"\n    [addNewActions]=\"addNewActions\"\n    [editCallback]=\"editCallback\"\n    [multipleRemoveCallback]=\"multipleRemoveCallback\"\n    [beforeReloadCallback]=\"beforeReloadCallback\"\n    [reloadCallback]=\"reloadCallback\" -->\n","import { Component, OnInit, Input } from '@angular/core';\nimport { Validators } from '@angular/forms';\nimport { lastValueFrom } from 'rxjs';\nimport { Router } from '@angular/router';\nimport { GeneralFieldConfigInterface } from '../../../../models/general-field-config.interface';\nimport { TranslateService } from '@ngx-translate/core';\n\n@Component({\n  selector: 'app-attachments-modal',\n  templateUrl: './attachments-modal.component.html',\n  styleUrls: ['./attachments-modal.component.scss'],\n})\nexport class AttachmentsModalComponent implements OnInit {\n  @Input() data: any;\n\n  fields: GeneralFieldConfigInterface[];\n  uniquePageName: string;\n\n  constructor(\n    private readonly _translateService: TranslateService,\n    private router: Router\n  ) {}\n\n  async ngOnInit() {\n    this.uniquePageName = btoa(this.router.url + '/attachments-modal');\n\n    this.fields = [\n      {\n        label: await lastValueFrom(\n          this._translateService.get('general.attachmentsModal.fields.title')\n        ),\n        name: 'title',\n        formConfig: {\n          type: 'textbox',\n          validators: [\n            {\n              name: 'required',\n              validator: Validators.required,\n            },\n          ],\n        },\n      },\n      {\n        label: this._translateService.instant(\n          'general.attachmentsModal.fields.type'\n        ),\n        name: 'type',\n        formConfig: {\n          type: 'select',\n          validators: [\n            {\n              name: 'required',\n              validator: Validators.required,\n            },\n          ],\n        },\n      },\n      {\n        label: this._translateService.instant(\n          'general.attachmentsModal.fields.selectFile'\n        ),\n        name: 'file',\n        formConfig: {\n          type: 'textbox',\n          validators: [\n            {\n              name: 'required',\n              validator: Validators.required,\n            },\n          ],\n        },\n        listConfig: {\n          hidden: true,\n        },\n      },\n      {\n        label: this._translateService.instant(\n          'general.attachmentsModal.fields.user'\n        ),\n        name: 'user',\n      },\n      {\n        label: this._translateService.instant(\n          'general.attachmentsModal.fields.date'\n        ),\n        name: 'date',\n      },\n      {\n        label: this._translateService.instant(\n          'general.attachmentsModal.fields.fileName'\n        ),\n        name: 'fileName',\n      },\n    ];\n  }\n}\n","<modal-wrapper [title]=\"'general.attachmentsModal.title' | translate\">\n  <app-general-list-data-entry\n    [uniquePageName]=\"uniquePageName\"\n    *ngIf=\"fields?.length\"\n    [fields]=\"fields\"\n    [topSlicePercent]=\"55\"\n    class=\"attchments-modal\"\n  ></app-general-list-data-entry>\n</modal-wrapper>\n","import { Component, Input, OnInit } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { lastValueFrom } from 'rxjs';\nimport { Validators } from '@angular/forms';\nimport { TranslateService } from '@ngx-translate/core';\nimport { GeneralFieldConfigInterface } from '../../../../models/general-field-config.interface';\n\n@Component({\n  selector: 'app-notes-modal',\n  templateUrl: './notes-modal.component.html',\n  styleUrls: ['./notes-modal.component.scss'],\n})\nexport class NotesModalComponent implements OnInit {\n  @Input() data: any;\n\n  fields: GeneralFieldConfigInterface[];\n  uniquePageName: string;\n\n  constructor(\n    private readonly _translateService: TranslateService,\n    private router: Router\n  ) {}\n\n  async ngOnInit() {\n    this.uniquePageName = btoa(this.router.url + '/notes-modal');\n\n    this.fields = [\n      {\n        label: await lastValueFrom(\n          this._translateService.get('general.notesModal.fields.title')\n        ),\n        name: 'title',\n        formConfig: {\n          type: 'textbox',\n          validators: [\n            {\n              name: 'required',\n              validator: Validators.required,\n            },\n          ],\n        },\n      },\n      {\n        label: this._translateService.instant('general.notesModal.fields.type'),\n        name: 'type',\n        formConfig: {\n          type: 'select',\n          validators: [\n            {\n              name: 'required',\n              validator: Validators.required,\n            },\n          ],\n        },\n      },\n      {\n        label: this._translateService.instant(\n          'general.notesModal.fields.description'\n        ),\n        name: 'description',\n        formConfig: {\n          type: 'textarea',\n          validators: [\n            {\n              name: 'required',\n              validator: Validators.required,\n            },\n          ],\n        },\n      },\n      {\n        label: this._translateService.instant('general.notesModal.fields.user'),\n        name: 'user',\n      },\n      {\n        label: this._translateService.instant('general.notesModal.fields.date'),\n        name: 'date',\n      },\n    ];\n  }\n}\n","<modal-wrapper [title]=\"'general.notesModal.title' | translate\">\n  <app-general-list-data-entry\n    [uniquePageName]=\"uniquePageName\"\n    *ngIf=\"fields?.length\"\n    [fields]=\"fields\"\n    [topSlicePercent]=\"55\"\n    class=\"notes-modal\"\n  ></app-general-list-data-entry>\n</modal-wrapper>\n","import {\n  Component,\n  EventEmitter,\n  Input,\n  OnChanges,\n  OnInit,\n  Output,\n  SimpleChanges,\n  ViewChild,\n} from '@angular/core';\nimport { lastValueFrom } from 'rxjs';\nimport { HttpHeaderNames } from '../../../constants/http-header-names';\nimport { FullscreenTypes } from '../../../enums/fullscreen-types';\nimport { GridColumnDataTypes } from '../../../enums/grid-column-data-types';\nimport { GridColumnFilterConditionTypes } from '../../../enums/grid-column-filter-condition-types';\nimport { GeneralActionInterface } from '../../../models/general-action.interface';\nimport { GeneralFieldConfigInterface } from '../../../models/general-field-config.interface';\nimport { GridNameInterface } from '../../../models/grid-name.interface';\nimport { createParamHttpHeaderValue } from '../../../utils/create-param-http-header-value';\nimport { ModalSizeEnum } from '../../modal/modal-size-enum';\nimport { GeneralListManagementComponent } from '../general-list-management/general-list-management.component';\nimport { GeneralListDepsService } from '../general-simple-list/general-list-deps.service';\nimport { AttachmentsModalComponent } from '../modals/attachments-modal/attachments-modal.component';\nimport { NotesModalComponent } from '../modals/notes-modal/notes-modal.component';\nimport { GridColumnFilterInterface } from './../../../models/grid-column-filter.interface';\n\n@Component({\n  selector: 'app-general-dual-list',\n  templateUrl: './general-dual-list.component.html',\n  styleUrls: ['./general-dual-list.component.scss'],\n})\nexport class GeneralDualListComponent\n  extends GeneralListManagementComponent\n  implements OnInit, OnChanges\n{\n  @Input() filterType?: 'oDataFilter' | 'header' = 'oDataFilter';\n  @Input() detailUniquePageName?: string;\n  @Input() detailGridName?: GridNameInterface;\n  @Input() detailFields?: GeneralFieldConfigInterface[];\n  @Input() detailODataServer?: string;\n  @Input() detailODataTable?: string;\n  @Input() detailODataEntity?: string;\n  @Input() detailODataHttpHeaders: { [key: string]: string };\n  @Input() detailODataFilters?: GridColumnFilterInterface[];\n  @Input() detailItems?: any[];\n  @Input() detailRowFormatCallback?: GeneralListManagementComponent['rowFormatCallback'];\n  @Input() detailCellFormatCallback?: GeneralListManagementComponent['cellFormatCallback'];\n  @Input() datailRefFieldName: string = 'hdrRef';\n  @Input() addNewPageUrl: string;\n  @Input() hideAddNewButton?: boolean;\n  @Input() editPageUrl: string;\n  @Input() beforeAddNewCallback?: () => any;\n  @Input() showCallback?: (event: Event, args: any) => any;\n  @Input() detailIsCheckable: boolean = true;\n  @Input() hideMoreButton: boolean = false;\n  @Input() detailGridRowMoreActions?: GeneralActionInterface[] = [];\n\n  @Output() mainlListSelectCallBack: EventEmitter<any> = new EventEmitter();\n\n  @ViewChild('header', { static: false }) headerGrid: GeneralListManagementComponent;\n  @ViewChild('detail', { static: false }) detailGrid: GeneralListManagementComponent;\n  loading: boolean = true;\n\n  innerGridRowMoreActions: GeneralActionInterface[] = [];\n  showDetailGrid: boolean = false;\n\n  mainListLoadStart($event: void) {\n    this.loading = true;\n  }\n  mainListLoaded($event: any) {\n    this.loading = false;\n  }\n  modifiedDetailODataTable?: string = null;\n  _detailODataHttpHeaders: { [key: string]: string };\n\n  constructor(deps: GeneralListDepsService) {\n    super(deps);\n  }\n\n  override ngOnInit() {\n    this.checkPermissions();\n    if (!this.hasViewAccess) return;\n\n    if (this.hideMoreButton) {\n      this.hideRemoveButton = true;\n    }\n    // if (this.fields?.length && !this.hideMoreButton) {\n    //   if (\n    //     !this.fields.find(\n    //       x => x.label == this.deps.translateService.instant('general.dualList.note')\n    //     )\n    //   ) {\n    //     this.fields.splice(2, 0, {\n    //       name: 'note',\n    //       label: this.deps.translateService.instant('general.dualList.note'),\n    //       listConfig: {\n    //         dataType: GridColumnDataTypes.BOOLEAN,\n    //         width: 110,\n    //       },\n    //     });\n    //   }\n    //   if (\n    //     !this.fields.find(\n    //       x => x.label == this.deps.translateService.instant('general.dualList.attachment')\n    //     )\n    //   ) {\n    //     this.fields.splice(3, 0, {\n    //       name: 'attachment',\n    //       label: this.deps.translateService.instant('general.dualList.attachment'),\n    //       listConfig: {\n    //         dataType: GridColumnDataTypes.BOOLEAN,\n    //         width: 110,\n    //       },\n    //     });\n    //   }\n    // }\n  }\n\n  override async ngOnChanges(changes: SimpleChanges) {\n    this.gridRowIconActions = [];\n    if (this.showCallback) {\n      this.gridRowIconActions = [\n        {\n          icon: {\n            type: 'fill',\n            name: 'preview',\n            group: 'action',\n          },\n          title: await lastValueFrom(this.deps.translateService.get('general.dualList.show')),\n          callback: (event: Event, args: any) => {\n            this.showCallback && this.showCallback(event, args);\n          },\n        },\n      ];\n    }\n    if (!this.hideMoreButton) {\n      this.innerGridRowMoreActions = [\n        ...(this.gridRowMoreActions || []),\n        // {\n        //   type: 'note',\n        //   click: (event, args) => {\n        //     this.showNoteModal(args);\n        //   },\n        // },\n        // {\n        //   type: 'attachment',\n        //   click: (event, args: any) => {\n        //     this.showAttachmentModal(args);\n        //   },\n        // },\n      ];\n    }\n  }\n\n  override addNewHandler = async () => {\n    let beforeAddNewCallbackRes: any;\n    if (this.beforeAddNewCallback) {\n      beforeAddNewCallbackRes = await this.beforeAddNewCallback();\n      if (beforeAddNewCallbackRes === false) return;\n    }\n    if (this.addNewCallback) {\n      this.addNewCallback();\n    } else {\n      this.deps.layoutService.addWindow(\n        {\n          title: this.deps.translateService.instant('general.dualList.add', {\n            title: this.title,\n          }),\n          link: this.addNewPageUrl + (beforeAddNewCallbackRes || ''),\n        },\n        true\n      );\n    }\n  };\n\n  override editHandler = (data: any) => {\n    if (this.editCallback) {\n      this.editCallback(data);\n    } else {\n      this.deps.layoutService.addWindow(\n        {\n          title: this.title + ' ' + data[this.identityFieldName],\n          link: this.editPageUrl.replace(\n            '{' + this.identityFieldName + '}',\n            data[this.identityFieldName]\n          ),\n        },\n        true\n      );\n    }\n  };\n\n  beforeReloadHandler = (): void => {\n    this.isFirstSelection = true;\n    this.beforeReloadCallback && this.beforeReloadCallback();\n    this.selectedRows = null;\n  };\n\n  override selectHandler = (selectedRows: any) => {\n    this.detailGrid?.generalSimpleList?.gridComponent.clear();\n    this.selectedRows = selectedRows;\n    this.mainlListSelectCallBack?.emit(selectedRows);\n    if (\n      !this.selectedRows ||\n      (this.selectedRows instanceof Array && this.selectedRows?.length != 1)\n    ) {\n      return;\n    }\n\n    if (this.isFirstSelection) {\n      this.isFirstSelection = false;\n    } else if (!this.fullscreenType) {\n      this.fullscreenType = FullscreenTypes.NONE;\n    }\n\n    if (this.fullscreenType != FullscreenTypes.TOP) {\n      this._loadDetail();\n    }\n  };\n\n  showNoteModal(data: any) {\n    this.deps.modalService.open(NotesModalComponent, ModalSizeEnum.Large, { data }).then(\n      () => {},\n      () => {}\n    );\n  }\n\n  showAttachmentModal(data: any) {\n    this.deps.modalService.open(AttachmentsModalComponent, ModalSizeEnum.Large, { data }).then(\n      () => {},\n      () => {}\n    );\n  }\n\n  screenSeparatorChangeHandler(type: FullscreenTypes) {\n    if (type !== FullscreenTypes.TOP && this.fullscreenType === FullscreenTypes.TOP) {\n      this._loadDetail();\n    }\n    this.fullscreenType = type;\n  }\n\n  private _loadDetail() {\n    const selectedRow =\n      this.selectedRows instanceof Array ? this.selectedRows[0] : this.selectedRows;\n\n    if (selectedRow == null || selectedRow[this.identityFieldName] == null) return;\n\n    if (this.filterType == 'header') {\n      this._detailODataHttpHeaders = {\n        ...(this.detailODataHttpHeaders ? this.detailODataHttpHeaders : {}),\n        [HttpHeaderNames.PARAM]: createParamHttpHeaderValue([\n          {\n            keyName: this.datailRefFieldName,\n            keyValue: selectedRow?.[this.identityFieldName] ?? '',\n          },\n        ]),\n      };\n    } else {\n      this.detailODataFilters = [\n        {\n          type: 'condition',\n          binding: this.datailRefFieldName,\n          condition1: {\n            operator: GridColumnFilterConditionTypes.EQUAL,\n            value: selectedRow?.[this.identityFieldName] ?? '',\n          },\n          and: false,\n        },\n      ];\n    }\n  }\n}\n","<ui-access-node [accessNodeId]=\"viewAccessNodeId\">\n  <ng-template>\n    <ui-screen-separator\n      [fullscreenType]=\"fullscreenType == undefined ? FullscreenTypes.TOP : fullscreenType\"\n      (changeCallback)=\"screenSeparatorChangeHandler($event)\"\n    >\n      <app-general-list-management\n        #header\n        top\n        [title]=\"title\"\n        [uniquePageName]=\"uniquePageName\"\n        [identityFieldName]=\"identityFieldName\"\n        [printParams]=\"printParams\"\n        [gridName]=\"gridName\"\n        [fields]=\"fields\"\n        [disabled]=\"disabled\"\n        [oDataServer]=\"oDataServer\"\n        [oDataTable]=\"oDataTable\"\n        [oDataEntity]=\"oDataEntity\"\n        [hasRelatedOrigins]=\"hasRelatedOrigins\"\n        [oDataHttpHeaders]=\"oDataHttpHeaders\"\n        [oDataFilters]=\"oDataFilters\"\n        [items]=\"items\"\n        [isMultipleSelect]=\"isMultipleSelect\"\n        [headerCustomActions]=\"headerCustomActions\"\n        [gridCustomActions]=\"gridCustomActions\"\n        [gridRowMoreActions]=\"innerGridRowMoreActions\"\n        [gridRowIconActions]=\"gridRowIconActions\"\n        [gridCollapseRows]=\"gridCollapseRows\"\n        [gridCollapseLevel]=\"gridCollapseLevel\"\n        [removeApi]=\"removeApi\"\n        [selectCallback]=\"selectHandler\"\n        [afterRemoveCallback]=\"afterRemoveCallback\"\n        [removeCallback]=\"removeCallback\"\n        [beforeRemoveCallback]=\"beforeRemoveCallback\"\n        [addNewCallback]=\"hideAddNewButton ? null : addNewHandler\"\n        [addNewActions]=\"hideAddNewButton ? null : addNewActions\"\n        [editCallback]=\"hideEditButton ? null : editHandler\"\n        [multipleRemoveCallback]=\"multipleRemoveCallback\"\n        [beforeReloadCallback]=\"beforeReloadHandler\"\n        [reloadCallback]=\"reloadCallback\"\n        [reload]=\"reload\"\n        (managementGridLoaded)=\"mainListLoaded($event)\"\n        (managementGridLoadStarted)=\"mainListLoadStart($event)\"\n        [showDownloadBtn]=\"showDownloadBtn\"\n        [hideRemoveButton]=\"hideRemoveButton\"\n        [hideCheckboxInCheckableGrid]=\"hideCheckboxInCheckableGrid\"\n        [filterActions]=\"filterActions\"\n        [operationActions]=\"operationActions\"\n        [rowFormatCallback]=\"rowFormatCallback\"\n        [cellFormatCallback]=\"cellFormatCallback\"\n        [menuItemActionCallback]=\"menuItemActionCallback\"\n        (gridItemClickCallback)=\"gridItemClickHandler($event)\"\n        (gridItemDoubleClicked)=\"gridItemDoubleClickHandler($event)\"\n        [newAccessNodeId]=\"newAccessNodeId\"\n        [deleteAccessNodeId]=\"deleteAccessNodeId\"\n        [editAccessNodeId]=\"editAccessNodeId\"\n        [downloadAccessNodeId]=\"downloadAccessNodeId\"\n        [multipleRemoveCallback]=\"multipleRemoveCallback\"\n        (onItemChecked)=\"onItemChecked.emit($event)\"\n        [bulkRemove]=\"bulkRemove\"\n      >\n      </app-general-list-management>\n      <app-general-list-management\n        *ngIf=\"fullscreenType != undefined && fullscreenType != FullscreenTypes.TOP\"\n        #detail\n        class=\"general-dual-list__detail\"\n        bottom\n        [uniquePageName]=\"detailUniquePageName\"\n        [gridName]=\"detailGridName\"\n        [fields]=\"detailFields\"\n        [disabled]=\"false\"\n        [oDataServer]=\"selectedRows ? detailODataServer : null\"\n        [oDataTable]=\"selectedRows ? detailODataTable : null\"\n        [oDataEntity]=\"selectedRows ? detailODataEntity : null\"\n        [oDataHttpHeaders]=\"selectedRows ? _detailODataHttpHeaders : null\"\n        [oDataFilters]=\"detailODataFilters\"\n        [items]=\"detailItems\"\n        [showDownloadBtn]=\"showDownloadBtn\"\n        [hideCheckboxInCheckableGrid]=\"!detailIsCheckable\"\n        [getDetailItemsCallBack]=\"getDetailItemsCallBack\"\n        [rowHasDetailCallBack]=\"rowHasDetailCallBack\"\n        [detailColumnsConfig]=\"detailColumnsConfig\"\n        [multiExpand]=\"multiExpand\"\n        [gridRowMoreActions]=\"detailGridRowMoreActions\"\n        [rowFormatCallback]=\"detailRowFormatCallback\"\n        [cellFormatCallback]=\"detailCellFormatCallback\"\n      ></app-general-list-management>\n    </ui-screen-separator>\n  </ng-template>\n</ui-access-node>\n","import {\n  Component,\n  OnInit,\n  Input,\n  OnChanges,\n  SimpleChanges,\n  ContentChild,\n  TemplateRef,\n  ViewChild,\n  ElementRef,\n  OnDestroy,\n  Output,\n} from '@angular/core';\nimport { Router } from '@angular/router';\nimport { FararuLayoutService } from './../../layouts/fararu-layout.service';\nimport {\n  ClickSubscription,\n  GeneralActionButtonInterface,\n} from '../../../models/general-action.interface';\nimport {\n  concatMap,\n  exhaustMap,\n  mergeMap,\n  Observable,\n  of,\n  Subject,\n  Subscription,\n  switchMap,\n} from 'rxjs';\nimport { catchError } from 'rxjs/operators';\n\ntype PanelExpandingStateType = 'top' | 'bottom';\n\n@Component({\n  selector: 'app-general-header-content-aside-footer',\n  templateUrl: './general-header-content-aside-footer.component.html',\n  styleUrls: ['./general-header-content-aside-footer.component.scss'],\n})\nexport class GeneralHeaderContentAsideFooterComponent implements OnInit, OnChanges, OnDestroy {\n  @Input() headerCustomActions?: GeneralActionButtonInterface[];\n  @Input() backUrl?: string;\n  @Input() saveCallback?: () => Promise<any>;\n  @Input() saveAndNewCallback?: () => Promise<any>;\n  @Input() saveAndReturnCallback?: () => Promise<any>;\n  @Input() topSlicePercent?: number; /** This is obsoleted, don't use */\n  @Input() contentAutoSize?: boolean;\n  @Input() startSlicePercent?: number;\n  @Input() bottomSheetExpanded = true;\n  @Input() bottomSheetTitle?: string;\n  @Input() showMessage: boolean = false;\n  @Input() informationMessage: string ='';\n\n  @ContentChild('header', { static: false })\n  header?: TemplateRef<any>;\n  @ContentChild('aside', { static: false })\n  aside?: TemplateRef<any>;\n  @ContentChild('footer', { static: false })\n  footer?: TemplateRef<any>;\n  @ContentChild('bottomSheet', { static: false })\n  bottomSheet?: TemplateRef<any>;\n\n  @ViewChild('bottomSheetElememt') bottomSheetElememt?: ElementRef;\n\n  hasSaveButton: boolean = false;\n  hasSaveAndNewButton: boolean = false;\n  hasSaveAndReturnButton: boolean = false;\n  bottomSheetMaxHeight?: string;\n\n  panelExpandingState?: PanelExpandingStateType | null = null;\n\n  private bottomSheetIsBusy = false;\n  clickMap = new Map<string, ClickSubscription>();\n  private subscriptions = new Subscription();\n  constructor(\n    private router: Router,\n    private layoutService: FararuLayoutService,\n  ) {}\n\n  ngOnInit(): void {}\n\n  ngOnChanges(changes: SimpleChanges): void {\n    this.hasSaveButton = !!this.saveCallback;\n    this.hasSaveAndNewButton = !!this.saveAndNewCallback;\n    this.hasSaveAndReturnButton = !!this.saveAndReturnCallback;\n    if (changes['headerCustomActions']) {\n      this.clickMap = new Map<string, ClickSubscription>();\n      this.headerCustomActions?.forEach(customAction => {\n        if (customAction?.actionId) {\n          this.clickMap.set(customAction?.actionId, {\n            subject: new Subject<any>(),\n            event: null,\n            selectedRow: null,\n          });\n          this.onClickResultHandler(customAction);\n        }\n      });\n    }\n  }\n\n  saveHandler() {\n    this.saveCallback && this.saveCallback();\n  }\n\n  saveAndNewHandler() {\n    this.saveAndNewCallback && this.saveAndNewCallback();\n  }\n\n  async saveAndReturnHandler() {\n    if (this.saveAndReturnCallback) {\n      const currentUrl = this.router.url;\n      const res = await this.saveAndReturnCallback();\n      if (!(res === false)) {\n        this.closeTab(currentUrl);\n      }\n    } else {\n      this.closeTab();\n    }\n  }\n\n  bottomSheetExpandHandler() {\n    if (this.bottomSheetIsBusy) return;\n    this.bottomSheetIsBusy = true;\n    if (this.bottomSheetExpanded) {\n      this.bottomSheetMaxHeight = this.bottomSheetMaxHeight =\n        this.bottomSheetElememt.nativeElement.scrollHeight + 'px';\n      setTimeout(() => {\n        this.bottomSheetMaxHeight = '0';\n        this.bottomSheetIsBusy = false;\n      }, 0);\n    } else {\n      this.bottomSheetMaxHeight = this.bottomSheetElememt.nativeElement.scrollHeight + 'px';\n      setTimeout(() => {\n        this.bottomSheetMaxHeight = 'none';\n        this.bottomSheetIsBusy = false;\n      }, 300);\n    }\n    this.bottomSheetExpanded = !this.bottomSheetExpanded;\n  }\n\n  expandingButtonClickHandler(state: PanelExpandingStateType) {\n    if (this.panelExpandingState) {\n      this.panelExpandingState = null;\n      return;\n    }\n    this.panelExpandingState = state;\n  }\n\n  private closeTab(beforeSendUrl?: string) {\n    if (this.backUrl) {\n      this.layoutService.removeWindowByLink(beforeSendUrl, this.backUrl);\n    }\n  }\n\n  onClick(event: Event, action: GeneralActionButtonInterface): void {\n    if (!action?.actionId) {\n      action.click(event);\n    } else {\n      action.disabled = action.mapFunction === 'disabled';\n      try {\n        this.clickMap.get(action.actionId).event = event;\n        this.clickMap.get(action.actionId).subject.next(this.clickMap.get(action.actionId));\n      } catch (e) {\n        console.log('the header actions are not properly initialized.');\n      }\n    }\n  }\n  onClickResultHandler(action: GeneralActionButtonInterface): void {\n    switch (action?.mapFunction) {\n      case 'switch': {\n        this.subscriptions.add(\n          this.clickMap\n            .get(action.actionId)\n            .subject.pipe(\n              switchMap((data: ClickSubscription) =>\n                (action.click(data.event) as Observable<any>).pipe(\n                  catchError(error => {\n                    action.onFailure(error);\n                    return of(null);\n                  }),\n                ),\n              ),\n            )\n            .subscribe({\n              next: (response: any) => {\n                if (response !== null) {\n                  action.onSuccess(response);\n                }\n              },\n            }),\n        );\n        break;\n      }\n      case 'concat': {\n        this.subscriptions.add(\n          this.clickMap\n            .get(action.actionId)\n            .subject.pipe(\n              concatMap((data: ClickSubscription) =>\n                (action.click(data.event) as Observable<any>).pipe(\n                  catchError(error => {\n                    action.onFailure(error);\n                    return of(null);\n                  }),\n                ),\n              ),\n            )\n            .subscribe({\n              next: (response: any) => {\n                if (response !== null) {\n                  action.onSuccess(response);\n                }\n              },\n            }),\n        );\n        break;\n      }\n      case 'merge': {\n        this.subscriptions.add(\n          this.clickMap\n            .get(action.actionId)\n            .subject.pipe(\n              mergeMap((data: ClickSubscription) =>\n                (action.click(data.event) as Observable<any>).pipe(\n                  catchError(error => {\n                    action.onFailure(error);\n                    return of(null);\n                  }),\n                ),\n              ),\n            )\n            .subscribe({\n              next: (response: any) => {\n                if (response !== null) {\n                  action.onSuccess(response);\n                }\n              },\n            }),\n        );\n        break;\n      }\n      case 'exhaust': {\n        this.subscriptions.add(\n          this.clickMap\n            .get(action.actionId)\n            .subject.pipe(\n              exhaustMap((data: ClickSubscription) =>\n                (action.click(data.event) as Observable<any>).pipe(\n                  catchError(error => {\n                    action.onFailure(error);\n                    return of(null);\n                  }),\n                ),\n              ),\n            )\n            .subscribe({\n              next: (response: any) => {\n                if (response !== null) {\n                  action.onSuccess(response);\n                }\n              },\n            }),\n        );\n        break;\n      }\n      case 'disabled': {\n        this.subscriptions.add(\n          this.clickMap\n            .get(action.actionId)\n            .subject.pipe(\n              exhaustMap((data: ClickSubscription) =>\n                (action.click(data.event) as Observable<any>).pipe(\n                  catchError(error => {\n                    action.onFailure(error);\n                    action.disabled = false;\n                    return of(null);\n                  }),\n                ),\n              ),\n            )\n            .subscribe({\n              next: (response: any) => {\n                if (response !== null) {\n                  action.onSuccess(response);\n                  action.disabled = false;\n                }\n              },\n            }),\n        );\n        break;\n      }\n    }\n  }\n\n  messageCloseClicked(e: any){\n    this.showMessage= false;\n  }\n\n  ngOnDestroy(): void {\n    this.subscriptions.unsubscribe();\n  }\n}\n","<section class=\"gacaf\">\n  <header class=\"gacaf__header\">\n    <ui-button\n      *ngIf=\"hasSaveButton\"\n      [tabIndex]=\"1\"\n      [varient]=\"'fill'\"\n      [color]=\"'primary'\"\n      (clickCallback)=\"saveHandler()\"\n      [appShortcut]=\"'control+s'\"\n      [title]=\"('general.headerContentAsideFooter.save' | translate) + ' Control+S'\"\n      >{{ 'general.headerContentAsideFooter.save' | translate }}</ui-button\n    >\n    <ui-button\n      *ngIf=\"hasSaveAndNewButton\"\n      [tabIndex]=\"1\"\n      [varient]=\"'fill'\"\n      [color]=\"'secondary'\"\n      (clickCallback)=\"saveAndNewHandler()\"\n      [appShortcut]=\"'control+l'\"\n      [title]=\"('general.headerContentAsideFooter.saveAndNew' | translate) + ' Control+L'\"\n      >{{ 'general.headerContentAsideFooter.saveAndNew' | translate }}</ui-button\n    >\n    <ui-button\n      *ngIf=\"hasSaveAndReturnButton\"\n      [tabIndex]=\"1\"\n      [varient]=\"'fill'\"\n      [color]=\"'secondary'\"\n      (clickCallback)=\"saveAndReturnHandler()\"\n      [appShortcut]=\"'control+k'\"\n      [title]=\"('general.headerContentAsideFooter.saveAndReturn' | translate) + ' Control+K'\"\n      >{{ 'general.headerContentAsideFooter.saveAndReturn' | translate }}</ui-button\n    >\n    <ng-container *ngIf=\"headerCustomActions?.length > 0\">\n      <ng-container *ngFor=\"let action of headerCustomActions\">\n        <ng-container *ngIf=\"action.items?.length > 0; else buttonTemplate\">\n          <ui-button\n            [tabIndex]=\"1\"\n            *ngIf=\"action?.nodeAccessId | accessNode\"\n            [dropdownTriggerFor]=\"moreMenu\"\n            [varient]=\"action.varient || 'fill'\"\n            [color]=\"action.color || 'secondary'\"\n            [appShortcut]=\"action.shortcut\"\n            [title]=\"action.tooltip\"\n            [disabled]=\"action.disabled\"\n            >{{ action.text }}\n            <ui-icon style=\"display: inline-flex\" group=\"navigation\" name=\"expand_more\"></ui-icon>\n          </ui-button>\n          <ui-dropdown #moreMenu [tabIndex]=\"-1\" [hidden]=\"true\">\n            <ui-sub-menu [items]=\"action.items\"></ui-sub-menu>\n          </ui-dropdown>\n        </ng-container>\n        <ng-template #buttonTemplate>\n          <ui-button\n            *ngIf=\"action?.nodeAccessId | accessNode\"\n            [tabIndex]=\"1\"\n            [varient]=\"action.varient || 'fill'\"\n            [color]=\"action.color || 'secondary'\"\n            [for]=\"action.for\"\n            [appShortcut]=\"action.shortcut\"\n            [title]=\"action.tooltip\"\n            [disabled]=\"action.disabled\"\n            [tagName]=\"action.for ? 'label' : 'button'\"\n            [disabled]=\"!!action.disabled\"\n            (clickCallback)=\"onClick($event, action)\"\n            ><ui-icon\n              *ngIf=\"action.icon\"\n              class=\"button-icon\"\n              [group]=\"action.icon.group\"\n              [name]=\"action.icon.name\"\n              [type]=\"action.icon.type\"\n            ></ui-icon\n            >{{ action.text }}</ui-button\n          >\n        </ng-template>\n      </ng-container>\n    </ng-container>\n    <ng-container [ngTemplateOutlet]=\"header\"></ng-container>\n    <ng-content select=\"[header]\"></ng-content>\n  </header>\n  <app-message  class=\"gacaf__message\" type=\"info\" *ngIf=\"showMessage && informationMessage\" [hasActionButton]=\"false\" \n  [description]=\"informationMessage\" (closeClicked)=\"messageCloseClicked($event)\"> </app-message>\n  <section\n    class=\"gacaf__content\"\n    [class.gacaf__content--wide]=\"!footer || panelExpandingState == 'top'\"\n    [hidden]=\"panelExpandingState == 'bottom'\"\n  >\n    <ng-container [ngTemplateOutlet]=\"container\"></ng-container>\n  </section>\n  <ng-container *ngIf=\"footer\">\n    <div class=\"gacaf__knob-wrap\">\n      <span class=\"gacaf__knob\" [hidden]=\"panelExpandingState\"></span>\n      <ui-fararu-icon\n        class=\"gacaf__max-min-button gacaf__max-min-button--top\"\n        [name]=\"'collapse'\"\n        [size]=\"'x2'\"\n        [hidden]=\"panelExpandingState == 'bottom'\"\n        (click)=\"expandingButtonClickHandler('bottom')\"\n      ></ui-fararu-icon>\n      <ui-fararu-icon\n        class=\"gacaf__max-min-button gacaf__max-min-button--bottom\"\n        [name]=\"'collapse'\"\n        [size]=\"'x2'\"\n        [hidden]=\"panelExpandingState == 'top'\"\n        (click)=\"expandingButtonClickHandler('top')\"\n      ></ui-fararu-icon>\n    </div>\n    <section class=\"gacaf__footer\" [hidden]=\"panelExpandingState == 'top'\">\n      <ng-container [ngTemplateOutlet]=\"footer\"></ng-container>\n    </section>\n  </ng-container>\n  <ng-container *ngIf=\"bottomSheet\">\n    <footer class=\"gacaf-bottom-sheet\">\n      <button class=\"gacaf-bottom-sheet__button\" (click)=\"bottomSheetExpandHandler()\">\n        <ui-icon\n          class=\"gacaf-bottom-sheet__button-icon\"\n          [class.gacaf-bottom-sheet__button-icon--expanded]=\"bottomSheetExpanded\"\n          name=\"expand_more\"\n          type=\"fill\"\n          group=\"navigation\"\n        ></ui-icon>\n      </button>\n      <ng-container *ngIf=\"bottomSheetTitle\">\n        <h6 class=\"gacaf-bottom-sheet__title\">{{ bottomSheetTitle }}</h6>\n      </ng-container>\n      <div\n        class=\"gacaf-bottom-sheet__content\"\n        #bottomSheetElememt\n        [class.gacaf-bottom-sheet__content--expanded]=\"bottomSheetExpanded\"\n        [style.max-height]=\"bottomSheetMaxHeight\"\n      >\n        <ng-container [ngTemplateOutlet]=\"bottomSheet\"></ng-container>\n      </div>\n    </footer>\n  </ng-container>\n</section>\n<ng-template #container>\n  <ng-container *ngIf=\"aside\">\n    <ui-screen-vertical-separator [startSlicePercent]=\"startSlicePercent\">\n      <ng-container start [ngTemplateOutlet]=\"content\"></ng-container>\n      <ng-container end [ngTemplateOutlet]=\"aside\"></ng-container>\n    </ui-screen-vertical-separator>\n  </ng-container>\n  <ng-container *ngIf=\"!aside\" [ngTemplateOutlet]=\"content\"></ng-container>\n</ng-template>\n<ng-template #content>\n  <ng-content></ng-content>\n</ng-template>\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { SigninRequest } from './requests/signin-request';\nimport { SigninResponse } from './responses/signin-response';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class AppUserApiService {\n  constructor(private http: HttpClient) {}\n\n  signin(request: SigninRequest): Observable<SigninResponse> {\n    return this.http.post<SigninResponse>('/api/AppUser/signin', request);\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\nimport { NGXLogger } from 'ngx-logger';\nimport { of } from 'rxjs';\nimport { catchError, map, switchMap, tap } from 'rxjs/operators';\nimport { AppUserApiService } from '../../api/app-user/app-user-api.service';\nimport { AccYearODataService } from '../../api/odata/accyear-odata.service';\nimport { CenterODataService } from '../../api/odata/center-odata.service';\nimport { StatusbarInfoODataService } from '../../api/odata/statusbar-info-odata.service';\nimport { SessionNames } from '../../constants';\nimport { Paths } from '../../utils';\nimport * as AuthActions from '../actions/auth.actions';\nimport { ConfigSandbox } from '../sandboxes/config.sandbox';\n\n@Injectable()\nexport class AuthEffects {\n  $loginRequest = createEffect(() =>\n    this.actions$.pipe(\n      ofType(AuthActions.loginRequest),\n      switchMap((action) =>\n        this.appUserApiService\n          .signin({\n            username: action.username,\n            password: action.password,\n            rememberMe: action.rememberMe,\n            accYear: action.accYear,\n            centerId: action.centerId,\n          })\n          .pipe(\n            map((response) => {\n              this.logger.info('User logged in. Token = ' + response.token);\n              return AuthActions.loginSuccess({\n                token: response.token,\n                center: action.centerId,\n                accYear: action.accYear,\n                username: action.username\n              });\n            }),\n            catchError((error) =>\n              of(AuthActions.loginFail({ error: error?.statusText }))\n            )\n          )\n      )\n    )\n  );\n\n  $loginSuccess = createEffect(\n    () =>\n      this.actions$.pipe(\n        ofType(AuthActions.loginSuccess),\n        tap((action) => {\n          sessionStorage.setItem(SessionNames.USER, action.token);\n          sessionStorage.setItem(\n            SessionNames.ACC_YEAR,\n            action.accYear.toString()\n          );\n          sessionStorage.setItem(SessionNames.CENTER, action.center.toString());\n          sessionStorage.setItem(SessionNames.USER_NAME, action.username);\n          //this.router.navigate([\"/\"]);\n        })\n      ),\n    { dispatch: false }\n  );\n\n  $logout = createEffect(\n    () =>\n      this.actions$.pipe(\n        ofType(AuthActions.logout),\n        tap(() => {\n          sessionStorage.removeItem(SessionNames.USER);\n          sessionStorage.removeItem(SessionNames.ACC_YEAR);\n          sessionStorage.removeItem(SessionNames.CENTER);\n          sessionStorage.removeItem(SessionNames.USER_NAME);\n          this.router.navigateByUrl(Paths.app.auth.login().url);\n        })\n      ),\n    { dispatch: false }\n  );\n\n  $loginLoadDataYear = createEffect(() =>\n    this.actions$.pipe(\n      ofType(AuthActions.loginDataLoad),\n      switchMap((action) => {\n        this.configSandbox.showGlobalLoading();\n        return this.accYearService.get().pipe(\n          map((res) => AuthActions.accYearLoad({ items: res.value })),\n          tap(() => this.configSandbox.hideGlobalLoading())\n        );\n      }),\n      catchError(() => {\n        throw this.configSandbox.hideGlobalLoading();\n      })\n    )\n  );\n\n  $loginLoadDataCenter = createEffect(() =>\n    this.actions$.pipe(\n      ofType(AuthActions.loginDataLoad),\n      switchMap((action) => {\n        this.configSandbox.showGlobalLoading();\n        return this.centerService.get().pipe(\n          map((res) => AuthActions.centerLoad({ items: res.value })),\n          tap(() => this.configSandbox.hideGlobalLoading())\n        );\n      }),\n      catchError(() => {\n        throw this.configSandbox.hideGlobalLoading();\n      })\n    )\n  );\n\n  $loginLoadStatusbarInfo = createEffect(() =>\n    this.actions$.pipe(\n      ofType(AuthActions.loadStatusbarInfo),\n      switchMap((action) => {\n        this.configSandbox.showGlobalLoading();\n        return this.statusbarInfoService.getStatusbarInfo().pipe(\n          map((res) => AuthActions.statusbarInfoIsLoaded({ item: res.value[0] })),\n          tap(() => this.configSandbox.hideGlobalLoading())\n        );\n      }),\n      catchError(() => {\n        throw this.configSandbox.hideGlobalLoading();\n      })\n    )\n  );\n\n  constructor(\n    private actions$: Actions,\n    private accYearService: AccYearODataService,\n    private centerService: CenterODataService,\n    private statusbarInfoService: StatusbarInfoODataService,\n    private configSandbox: ConfigSandbox,\n    private appUserApiService: AppUserApiService,\n    private router: Router,\n    private logger: NGXLogger\n  ) {}\n}\n","import { Injectable } from '@angular/core';\nimport { UserRightApiService } from '../../api/user-right/user-right-api.service';\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\nimport { catchError, map, mergeMap, switchMap } from 'rxjs/operators';\nimport { configActions } from '../actions/config.actions';\n// import { CustTypeODataService } from \"../../api/odata/cust-type-odata.service\";\nimport { of } from 'rxjs';\n// import { CustCategoryODataService } from \"../../api/odata/cust-category-odata.service\";\n// import { CustActionODataService } from \"../../api/odata/cust-action-odata.service\";\n// import { CustLevelODataService } from \"../../api/odata/cust-level-odata.service\";\n// import { OwnerTypeODataService } from \"../../api/odata/owner-type-odata.service\";\n// import { LookupODataService } from \"../../api/odata/lookup-odata.service\";\n// import { getLookupQuery } from \"../../utilities/get-lookup-query\";\n// import { LookupTypes } from \"../../enum/lookup-types\";\n// import { CustomerGroupApiService } from \"../../api/customer-group/customer-group-api.service\";\n// import { PayTypeODataService } from \"../../api/odata/pay-type-odata.service\";\n// import { DynamicCustGroupApiService } from \"../../api/dynamic-cust-group/dynamic-cust-group-api.service\";\n// import { InActiveCauseODataService } from \"../../api/odata/in-active-cause-odata.service\";\n// import { BankODataService } from \"../../api/odata/bank-odata.service\";\n// import { AreaOdataService } from \"../../api/odata/area-odata.service\";\n// import { UserRightApiService } from \"../../api/user-right/user-right-api.service\";\n\n@Injectable()\nexport class ConfigEffects {\n  // $customerTypesRequest = createEffect(() =>\n  //   this.$actions.pipe(\n  //     ofType(configActions.customerTypesRequest),\n  //     switchMap(() =>\n  //       this.custTypeODataService.get('').pipe(\n  //         map((response) =>\n  //           configActions.customerTypesSuccess({ list: response.value })\n  //         ),\n  //         catchError((error) =>\n  //           of(configActions.customerTypesFail({ error: error?.statusText }))\n  //         )\n  //       )\n  //     )\n  //   )\n  // );\n\n  // $customerCategoriesRequest = createEffect(() =>\n  //   this.$actions.pipe(\n  //     ofType(configActions.customerCategoriesRequest),\n  //     switchMap(() =>\n  //       this.custCategoryODataService.get('').pipe(\n  //         map((response) =>\n  //           configActions.customerCategoriesSuccess({\n  //             list: response.value,\n  //           })\n  //         ),\n  //         catchError((error) =>\n  //           of(\n  //             configActions.customerCategoriesFail({ error: error?.statusText })\n  //           )\n  //         )\n  //       )\n  //     )\n  //   )\n  // );\n\n  // $customerActionsRequest = createEffect(() =>\n  //   this.$actions.pipe(\n  //     ofType(configActions.customerActionsRequest),\n  //     switchMap(() =>\n  //       this.custActionODataService.get('').pipe(\n  //         map((response) =>\n  //           configActions.customerActionsSuccess({\n  //             list: response.value,\n  //           })\n  //         ),\n  //         catchError((error) =>\n  //           of(configActions.customerActionsFail({ error: error?.statusText }))\n  //         )\n  //       )\n  //     )\n  //   )\n  // );\n\n  // $customerLevelsRequest = createEffect(() =>\n  //   this.$actions.pipe(\n  //     ofType(configActions.customerLevelsRequest),\n  //     switchMap(() =>\n  //       this.custLevelODataService.get('').pipe(\n  //         map((response) =>\n  //           configActions.customerLevelsSuccess({\n  //             list: response.value,\n  //           })\n  //         ),\n  //         catchError((error) =>\n  //           of(configActions.customerLevelsFail({ error: error?.statusText }))\n  //         )\n  //       )\n  //     )\n  //   )\n  // );\n\n  // $ownerTypesRequest = createEffect(() =>\n  //   this.$actions.pipe(\n  //     ofType(configActions.ownerTypesRequest),\n  //     switchMap(() =>\n  //       this.ownerTypeODataService.get('').pipe(\n  //         map((response) =>\n  //           configActions.ownerTypesSuccess({\n  //             list: response.value,\n  //           })\n  //         ),\n  //         catchError((error) =>\n  //           of(configActions.ownerTypesFail({ error: error?.statusText }))\n  //         )\n  //       )\n  //     )\n  //   )\n  // );\n\n  // $customerRegisterTypesRequest = createEffect(() =>\n  //   this.$actions.pipe(\n  //     ofType(configActions.customerRegisterTypesRequest),\n  //     switchMap(() =>\n  //       this.lookupODataService\n  //         .get(getLookupQuery(LookupTypes.CUSTOMER_REGISTER_TYPE))\n  //         .pipe(\n  //           map((response) =>\n  //             configActions.customerRegisterTypesSuccess({\n  //               list: response.value,\n  //             })\n  //           ),\n  //           catchError((error) =>\n  //             of(\n  //               configActions.customerRegisterTypesFail({\n  //                 error: error?.statusText,\n  //               })\n  //             )\n  //           )\n  //         )\n  //     )\n  //   )\n  // );\n\n  // $customerGroupsRequest = createEffect(() =>\n  //   this.$actions.pipe(\n  //     ofType(configActions.customerGroupsRequest),\n  //     switchMap(() =>\n  //       this.customerGroupApiService.getTree().pipe(\n  //         map((response) =>\n  //           configActions.customerGroupsSuccess({\n  //             list: response.items || [],\n  //           })\n  //         ),\n  //         catchError((error) =>\n  //           of(\n  //             configActions.customerGroupsFail({\n  //               error: error?.statusText,\n  //             })\n  //           )\n  //         )\n  //       )\n  //     )\n  //   )\n  // );\n\n  // $payTypesRequest = createEffect(() =>\n  //   this.$actions.pipe(\n  //     ofType(configActions.payTypesRequest),\n  //     switchMap(() =>\n  //       this.payTypeODataService.get('').pipe(\n  //         map((response) =>\n  //           configActions.payTypesSuccess({\n  //             list: response.value,\n  //           })\n  //         ),\n  //         catchError((error) =>\n  //           of(configActions.payTypesFail({ error: error?.statusText }))\n  //         )\n  //       )\n  //     )\n  //   )\n  // );\n\n  // $dynamicCustomerGroupsRequest = createEffect(() =>\n  //   this.$actions.pipe(\n  //     ofType(configActions.dynamicCustomerGroupsRequest),\n  //     switchMap(() =>\n  //       this.dynamicCustGroupApiService.getTree().pipe(\n  //         map((response) =>\n  //           configActions.dynamicCustomerGroupsSuccess({\n  //             list: response.items || [],\n  //           })\n  //         ),\n  //         catchError((error) =>\n  //           of(\n  //             configActions.dynamicCustomerGroupsFail({\n  //               error: error?.statusText,\n  //             })\n  //           )\n  //         )\n  //       )\n  //     )\n  //   )\n  // );\n\n  // $inActiverCausesRequest = createEffect(() =>\n  //   this.$actions.pipe(\n  //     ofType(configActions.inActiveCausesRequest),\n  //     switchMap(() =>\n  //       this.inActiveCauseODataService.get('').pipe(\n  //         map((response) =>\n  //           configActions.inActiveCausesSuccess({\n  //             list: response.value || [],\n  //           })\n  //         ),\n  //         catchError((error) =>\n  //           of(\n  //             configActions.inActiveCausesFail({\n  //               error: error?.statusText,\n  //             })\n  //           )\n  //         )\n  //       )\n  //     )\n  //   )\n  // );\n\n  // $bankTypesRequest = createEffect(() =>\n  //   this.$actions.pipe(\n  //     ofType(configActions.bankTypesRequest),\n  //     switchMap(() =>\n  //       this.bankODataService.get('').pipe(\n  //         map((response) =>\n  //           configActions.bankTypesSuccess({\n  //             list: response.value,\n  //           })\n  //         ),\n  //         catchError((error) =>\n  //           of(configActions.bankTypesFail({ error: error?.statusText }))\n  //         )\n  //       )\n  //     )\n  //   )\n  // );\n\n  // $areaCitiesRequest = createEffect(() =>\n  //   this.$actions.pipe(\n  //     ofType(configActions.areaCitiesRequest),\n  //     switchMap(() =>\n  //       this.areaODataService.get('').pipe(\n  //         map((response) =>\n  //           configActions.areaCitiesSuccess({\n  //             list: response.value,\n  //           })\n  //         ),\n  //         catchError((error) =>\n  //           of(configActions.areaCitiesFail({ error: error?.statusText }))\n  //         )\n  //       )\n  //     )\n  //   )\n  // );\n\n  $accessNodeIdsRequest = createEffect(() =>\n    this.$actions.pipe(\n      ofType(configActions.accessNodeIdsRequest),\n      switchMap(() =>\n        this.userRightApiService.getAccessNodeIds().pipe(\n          map((response) =>\n            configActions.accessNodeIdsSuccess({\n              items: response?.results?.map((data) => data.id) || [],\n            })\n          ),\n          catchError((error) =>\n            of(configActions.accessNodeIdsFail({ error: error?.statusText }))\n          )\n        )\n      )\n    )\n  );\n\n  constructor(\n    private $actions: Actions,\n    private userRightApiService: UserRightApiService // private custCategoryODataService: CustCategoryODataService, // private custTypeODataService: CustTypeODataService, // , // private custActionODataService: CustActionODataService, // private custLevelODataService: CustLevelODataService, // private ownerTypeODataService: OwnerTypeODataService, // private lookupODataService: LookupODataService,\n  ) // private customerGroupApiService: CustomerGroupApiService,\n  // private payTypeODataService: PayTypeODataService,\n  // private dynamicCustGroupApiService: DynamicCustGroupApiService,\n  // private inActiveCauseODataService: InActiveCauseODataService,\n  // private bankODataService: BankODataService,\n  // private areaODataService: AreaOdataService,\n  // ,\n  {}\n}\n","import { createAction, props } from '@ngrx/store';\n\nconst HistoryActionTypes = {\n  UPSERT_HISTORY: '[HISTORY] ADD OR UPDATE HISTORY',\n  DELETE_HISTORY: '[HISTORY] DELETE FROM HISTORY',\n  HISTORY_SAVED: '[HISTORY] HISTORY WAS PERMANENTLY SAVED',\n  LOAD_HISTORY: '[HISTORY] LOAD HISTORY FROM LOCAL STORAGE',\n  LOAD_HISTORY_SUCCESS: \"[HISTORY] HISTORY LOAD SUCCESS\"\n};\nexport const addOrUpdateHistory = createAction(\n  HistoryActionTypes.UPSERT_HISTORY,\n  props<{ key: string; value: any }>()\n);\n\nexport const deleteHistory = createAction(\n  HistoryActionTypes.DELETE_HISTORY,\n  props<{ key: string }>()\n);\n\nexport const historySaved = createAction(\n  HistoryActionTypes.HISTORY_SAVED,\n);\n\nexport const loadHistory = createAction(\n  HistoryActionTypes.LOAD_HISTORY,\n);\n\nexport const loadHistorySuccess = createAction(\n  HistoryActionTypes.LOAD_HISTORY_SUCCESS,\n  props<{items: {[key: string]: any}}>()\n);\n\nexport const historyActions = {\n  addOrUpdateHistory,\n  deleteHistory,\n  historySaved,\n  loadHistory,\n  loadHistorySuccess\n};\n","import { Injectable } from '@angular/core';\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\nimport { map, tap } from 'rxjs/operators';\nimport { SessionNames } from '../../constants';\nimport { loginSuccess, logout } from '../actions/auth.actions';\nimport { historyActions } from '../actions/history.actions';\n\n@Injectable()\nexport class HistoryEffects {\n  constructor(private $actions: Actions) {}\n\n  $saveHistory = createEffect(() =>\n    this.$actions.pipe(\n      ofType(historyActions.addOrUpdateHistory),\n      tap(action => {\n        const username = sessionStorage.getItem(SessionNames.USER_NAME)\n          ? sessionStorage.getItem(SessionNames.USER_NAME)\n          : 'anonymous';\n        localStorage.setItem(`history--${username}--${action.key}`, JSON.stringify(action.value));\n      }),\n      map(() => historyActions.historySaved())\n    )\n  );\n\n  $loadHistory = createEffect(() =>\n    this.$actions.pipe(\n      ofType(historyActions.loadHistory, loginSuccess, logout),\n      map(() => historyActions.loadHistorySuccess({ items: this.readAllLocalStorage() }))\n    )\n  );\n\n  readAllLocalStorage() {\n    const localStorageKeys = Object.keys(localStorage); // Get all keys in local storage\n    const localStorageData: { [key: string]: any } = {}; // Object to store key-value pairs\n    const username = sessionStorage.getItem(SessionNames.USER_NAME)\n      ? sessionStorage.getItem(SessionNames.USER_NAME)\n      : 'anonymous';\n    localStorageKeys.forEach(key => {\n      if (key.startsWith(`history--${username}--`)) {\n        const value = localStorage.getItem(key);\n        localStorageData[key.replace(`history--${username}--`, '')] = JSON.parse(value); // Store key-value pair in the object\n      }\n    });\n\n    return localStorageData;\n  }\n}\n","import { AuthEffects } from './auth.effects';\nimport { ConfigEffects } from './config.effects';\nimport { HistoryEffects } from './history.effects';\n\nexport const effects = [AuthEffects, ConfigEffects, HistoryEffects];\n","import { Action, createReducer, on } from '@ngrx/store';\nimport jwtDecode from 'jwt-decode';\nimport { SessionNames } from '../../constants';\nimport { User } from '../../models/users/user.model';\nimport * as AuthActions from '../actions/auth.actions';\nimport { StatusbarInfoInterface } from '../../models/general/statusbar-info.interface';\n\nexport interface AuthState {\n  user: User;\n  isLoggedIn: boolean;\n  loading: boolean;\n  loaded: boolean;\n  failed: boolean;\n  centerItems: any[];\n  centerItemsIsLoaded: boolean;\n  saleOfficeItems: any[];\n  saleOfficeItemsIsLoaded: boolean;\n  accYearItems: any[];\n  accYearItemsIsLoaded: boolean;\n  selectedAccYear: number;\n  selectedCenter: number;\n  statusbarInfo: StatusbarInfoInterface;\n  statusbarInfoIsLoaded: boolean;\n}\n\nconst initialState: AuthState = {\n  user: null,\n  isLoggedIn: false,\n  loading: false,\n  loaded: false,\n  failed: false,\n  accYearItems: [],\n  accYearItemsIsLoaded: false,\n  centerItems: [],\n  centerItemsIsLoaded: false,\n  saleOfficeItems: [],\n  saleOfficeItemsIsLoaded: false,\n  selectedAccYear: Number(sessionStorage.getItem(SessionNames.ACC_YEAR)) || 0,\n  selectedCenter: Number(sessionStorage.getItem(SessionNames.CENTER)) || 0,\n  statusbarInfo: null,\n  statusbarInfoIsLoaded: false,\n};\n\nconst decodeToken = (token: string): User => {\n  const decodedToken: any = jwtDecode(token);\n  return new User(decodedToken.id, decodedToken.fullname);\n};\n\nconst reducer = createReducer(\n  initialState,\n\n  on(AuthActions.loginRequest, (state, action) => {\n    return {\n      ...state,\n      loading: true,\n      loaded: false,\n      failed: false,\n      selectedAccYear: action.accYear,\n      selectedCenter: action.centerId,\n    };\n  }),\n\n  on(AuthActions.loginSuccess, (state, action) => {\n    return {\n      ...state,\n      loading: false,\n      loaded: true,\n      failed: false,\n      isLoggedIn: true,\n      user: decodeToken(action.token),\n    };\n  }),\n\n  on(AuthActions.loginFail, state => {\n    return { ...state, loading: false, failed: true };\n  }),\n\n  on(AuthActions.restoreUser, (state, action) => {\n    return {\n      ...state,\n      isLoggedIn: true,\n      user: decodeToken(action.token),\n    };\n  }),\n\n  on(AuthActions.logout, state => {\n    return {\n      ...initialState,\n      accYearItems: state.accYearItems,\n      saleOfficeItems: state.saleOfficeItems,\n      centerItems: state.centerItems,\n    };\n  }),\n\n  on(AuthActions.accYearLoad, (state, action) => {\n    return {\n      ...state,\n      accYearItems: [...action.items].sort((a, b) => (a.accYear > b.accYear ? -1 : 1)),\n      accYearItemsIsLoaded: true,\n    };\n  }),\n\n  on(AuthActions.saleOfficeLoad, (state, action) => {\n    return {\n      ...state,\n      saleOfficeItems: [...action.items],\n      saleOfficeItemsIsLoaded: true,\n    };\n  }),\n\n  on(AuthActions.centerLoad, (state, action) => {\n    return {\n      ...state,\n      centerItems: [...action.items],\n      centerItemsIsLoaded: true,\n    };\n  }),\n\n  on(AuthActions.changeAccYear, (state, action) => {\n    return {\n      ...state,\n      selectedAccYear: action.accYear,\n    };\n  }),\n\n  on(AuthActions.changeCenter, (state, action) => {\n    return {\n      ...state,\n      selectedCenter: action.centerId,\n    };\n  }),\n\n  on(AuthActions.loadStatusbarInfo, (state, action) => {\n    return {\n      ...state,\n      statusbarInfo: null,\n      statusbarInfoIsLoaded: false,\n    };\n  }),\n\n  on(AuthActions.statusbarInfoIsLoaded, (state, action) => {\n    return {\n      ...state,\n      statusbarInfo: action.item,\n      statusbarInfoIsLoaded: true,\n    };\n  })\n);\n\nexport function authReducer(state: AuthState | undefined, action: Action) {\n  return reducer(state, action);\n}\n","import { Action, createReducer, on } from '@ngrx/store';\nimport { ToolbarCalculateDateTypes } from '../../enums/toolbar-calculate-date-types';\nimport { ToolbarExtractTypes } from '../../enums/toolbar-extract-type';\nimport { ToolbarFetchReasonTypes } from '../../enums/toolbar-fetch-reason';\nimport { ToolbarReportTypes } from '../../enums/toolbar-report-types';\nimport { ToolbarStockCardexReportTypes } from '../../enums/toolbar-stock-cardex-report-types';\n// import { Bank } from \"../../models/customers/bank.model\";\n// import { City } from \"../../models/customers/city.model\";\n// import { CustomerActionInterface } from \"../../models/customers/customer-action.interface\";\n// import { CustomerCategoryInterface } from \"../../models/customers/customer-category.interface\";\n// import { CustomerGroupInterface } from \"../../models/customers/customer-group.interface\";\n// import { CustomerLevelInterface } from \"../../models/customers/customer-level.interface\";\n// import { CustomerRegisterTypeInterface } from \"../../models/customers/customer-register-type.interface\";\n// import { CustomerTypeInterface } from \"../../models/customers/customer-type.interface\";\n// import { DynamicCustomerGroup } from \"../../models/customers/dynamic-customer-group.model\";\n// import { InActiveCause } from \"../../models/customers/in-active-cause.model\";\n// import { OwnerTypeInterface } from \"../../models/customers/owner-type.interface\";\n// import { PayTypeInterface } from \"../../models/customers/pay-type.interface\";\nimport { ReviewToolbarAction } from '../../models/review/review-toolbar-action.interface';\nimport { ReviewToolbarState } from '../../models/review/review-toolbar-state.interface';\nimport { ReviewToolbar } from '../../models/review/review-toolbar.interface';\nimport { configActions } from '../actions/config.actions';\nimport { ToolbarTreasuryReportTypes } from '../../enums/toolbar-treasury-report-types';\n\n// const initialReviewToolbars = (): ReviewToolbar[] => {\n//   try {\n//     const list = JSON.parse(localStorage.getItem(SessionNames.REVIEW_TOOLBARS));\n//     if (list instanceof Array) return list;\n//     else return [];\n//   } catch {\n//     return [];\n//   }\n// };\n\nexport interface ConfigState {\n  globalLoadingShowState: boolean;\n  globalLoadingStateQue: string[];\n\n  // customerTypes: CustomerTypeInterface[];\n  // customerTypesLoading: boolean;\n  // customerTypesLoaded: boolean;\n  // customerTypesFailed: boolean;\n  // customerTypesError: string;\n\n  // customerCategories: CustomerCategoryInterface[];\n  // customerCategoriesLoading: boolean;\n  // customerCategoriesLoaded: boolean;\n  // customerCategoriesFailed: boolean;\n  // customerCategoriesError: string;\n\n  // customerActions: CustomerActionInterface[];\n  // customerActionsLoading: boolean;\n  // customerActionsLoaded: boolean;\n  // customerActionsFailed: boolean;\n  // customerActionsError: string;\n\n  // customerLevels: CustomerLevelInterface[];\n  // customerLevelsLoading: boolean;\n  // customerLevelsLoaded: boolean;\n  // customerLevelsFailed: boolean;\n  // customerLevelsError: string;\n\n  // ownerTypes: OwnerTypeInterface[];\n  // ownerTypesLoading: boolean;\n  // ownerTypesLoaded: boolean;\n  // ownerTypesFailed: boolean;\n  // ownerTypesError: string;\n\n  // customerRegisterTypes: CustomerRegisterTypeInterface[];\n  // customerRegisterTypesLoading: boolean;\n  // customerRegisterTypesLoaded: boolean;\n  // customerRegisterTypesFailed: boolean;\n  // customerRegisterTypesError: string;\n\n  // customerGroups: CustomerGroupInterface[];\n  // customerGroupsLoading: boolean;\n  // customerGroupsLoaded: boolean;\n  // customerGroupsFailed: boolean;\n  // customerGroupsError: string;\n\n  // payTypes: PayTypeInterface[];\n  // payTypesLoading: boolean;\n  // payTypesLoaded: boolean;\n  // payTypesFailed: boolean;\n  // payTypesError: string;\n\n  // dynamicCustomerGroups: DynamicCustomerGroup[];\n  // dynamicCustomerGroupsLoading: boolean;\n  // dynamicCustomerGroupsLoaded: boolean;\n  // dynamicCustomerGroupsFailed: boolean;\n  // dynamicCustomerGroupsError: string;\n\n  // inActiveCauses: InActiveCause[];\n  // inActiveCausesLoading: boolean;\n  // inActiveCausesLoaded: boolean;\n  // inActiveCausesFailed: boolean;\n  // inActiveCausesError: string;\n\n  // bankTypes: Bank[];\n  // bankTypesLoading: boolean;\n  // bankTypesLoaded: boolean;\n  // bankTypesFailed: boolean;\n  // bankTypesError: string;\n\n  // areaCities: City[];\n  // areaCitiesLoading: boolean;\n  // areaCitiesLoaded: boolean;\n  // areaCitiesFailed: boolean;\n  // areaCitiesError: string;\n\n  reviewToolbarAction: ReviewToolbarAction;\n  reviewCurrentToolbarKey: string;\n  reviewToolbars: ReviewToolbar[];\n  reviewToolbar: ReviewToolbarState;\n\n  accessNodeIds: string[];\n  accessNodeIdsLoading: boolean;\n  accessNodeIdsLoaded: boolean;\n  accessNodeIdsFailed: boolean;\n  accessNodeIdsError: string;\n}\n\nconst initialState: ConfigState = {\n  globalLoadingShowState: false,\n  globalLoadingStateQue: [],\n\n  // customerTypes: [],\n  // customerTypesLoading: false,\n  // customerTypesLoaded: false,\n  // customerTypesFailed: false,\n  // customerTypesError: null,\n\n  // customerCategories: [],\n  // customerCategoriesLoading: false,\n  // customerCategoriesLoaded: false,\n  // customerCategoriesFailed: false,\n  // customerCategoriesError: null,\n\n  // customerActions: [],\n  // customerActionsLoading: false,\n  // customerActionsLoaded: false,\n  // customerActionsFailed: false,\n  // customerActionsError: null,\n\n  // customerLevels: [],\n  // customerLevelsLoading: false,\n  // customerLevelsLoaded: false,\n  // customerLevelsFailed: false,\n  // customerLevelsError: null,\n\n  // ownerTypes: [],\n  // ownerTypesLoading: false,\n  // ownerTypesLoaded: false,\n  // ownerTypesFailed: false,\n  // ownerTypesError: null,\n\n  // customerRegisterTypes: [],\n  // customerRegisterTypesLoading: false,\n  // customerRegisterTypesLoaded: false,\n  // customerRegisterTypesFailed: false,\n  // customerRegisterTypesError: null,\n\n  // customerGroups: [],\n  // customerGroupsLoading: false,\n  // customerGroupsLoaded: false,\n  // customerGroupsFailed: false,\n  // customerGroupsError: null,\n\n  // payTypes: [],\n  // payTypesLoading: false,\n  // payTypesLoaded: false,\n  // payTypesFailed: false,\n  // payTypesError: null,\n\n  // dynamicCustomerGroups: [],\n  // dynamicCustomerGroupsLoading: false,\n  // dynamicCustomerGroupsLoaded: false,\n  // dynamicCustomerGroupsFailed: false,\n  // dynamicCustomerGroupsError: null,\n\n  // inActiveCauses: [],\n  // inActiveCausesLoading: false,\n  // inActiveCausesLoaded: false,\n  // inActiveCausesFailed: false,\n  // inActiveCausesError: null,\n\n  // bankTypes: [],\n  // bankTypesLoading: false,\n  // bankTypesLoaded: false,\n  // bankTypesFailed: false,\n  // bankTypesError: null,\n\n  // areaCities: [],\n  // areaCitiesLoading: false,\n  // areaCitiesLoaded: false,\n  // areaCitiesFailed: false,\n  // areaCitiesError: null,\n\n  reviewToolbarAction: null,\n  reviewCurrentToolbarKey: null,\n  reviewToolbars: [], //initialReviewToolbars(),\n  reviewToolbar: {\n    sections: {\n      showLoanSection: false,\n      showRcvAccountSection: false,\n      showGeneralLedgerSection: false,\n      showStockSection: false,\n      showSaleSection: false,\n      showTreasurySection: false,\n      showWhAccountSection: false,\n      showBuySection: false,\n      showFreeInvoiceSection: false,\n      showTreasuryFundSection: false,\n    },\n    parameters: {\n      extractType: ToolbarExtractTypes.CIRCULATING,\n      fetchReason: ToolbarFetchReasonTypes.ALL,\n      reportType: ToolbarReportTypes.PAY_DATE,\n      stockCardexReportType: ToolbarStockCardexReportTypes.HEALTHY_CARDEX,\n      calculateDateType: ToolbarCalculateDateTypes.LOAN_DATE,\n      treasuryReportType: ToolbarTreasuryReportTypes.NONE,\n      showCartonDigit: false,\n      showSellInitialValue: false,\n      showRcvAccountInitialValue: false,\n      isActiveCustomer: false,\n      closingShow: true,\n      openingShow: true,\n      showClosingTempraryAccounts: true,\n    },\n  },\n\n  accessNodeIds: [],\n  accessNodeIdsLoading: false,\n  accessNodeIdsLoaded: false,\n  accessNodeIdsFailed: false,\n  accessNodeIdsError: '',\n};\n\nconst reducer = createReducer(\n  initialState,\n\n  on(configActions.changeGlobalLoadingState, (state, action) => {\n    const section = action.sectionName || 'untitled';\n    const que = [...state.globalLoadingStateQue];\n    if (!action.state || action.sectionName) {\n      const findedIndex = que.findIndex(x => x == section);\n      if (findedIndex != -1) {\n        que.splice(findedIndex, 1);\n      }\n    }\n    if (action.state) {\n      que.push(section);\n    }\n    return {\n      ...state,\n      globalLoadingShowState: !!que.length,\n      globalLoadingStateQue: [...que],\n    };\n  }),\n\n  // customer types\n\n  // on(configActions.customerTypesRequest, (state) => {\n  //   return {\n  //     ...state,\n  //     customerTypesLoading: true,\n  //   };\n  // }),\n\n  // on(configActions.customerTypesSuccess, (state, action) => {\n  //   return {\n  //     ...state,\n  //     customerTypes: action.list,\n  //     customerTypesLoading: false,\n  //     customerTypesLoaded: true,\n  //     customerTypesFailed: false,\n  //     customerTypesError: null,\n  //   };\n  // }),\n\n  // on(configActions.customerTypesFail, (state, action) => {\n  //   return {\n  //     ...state,\n  //     customerTypes: [],\n  //     customerTypesLoading: false,\n  //     customerTypesLoaded: false,\n  //     customerTypesFailed: true,\n  //     customerTypesError: action.error,\n  //   };\n  // }),\n\n  // on(configActions.customerTypesClear, (state) => {\n  //   return {\n  //     ...state,\n  //     customerTypes: [],\n  //     customerTypesLoading: false,\n  //     customerTypesLoaded: false,\n  //     customerTypesFailed: false,\n  //     customerTypesError: null,\n  //   };\n  // }),\n\n  // // customer categories\n\n  // on(configActions.customerCategoriesRequest, (state) => {\n  //   return {\n  //     ...state,\n  //     customerCategoriesLoading: true,\n  //   };\n  // }),\n\n  // on(configActions.customerCategoriesSuccess, (state, action) => {\n  //   return {\n  //     ...state,\n  //     customerCategories: action.list,\n  //     customerCategoriesLoading: false,\n  //     customerCategoriesLoaded: true,\n  //     customerCategoriesFailed: false,\n  //     customerCategoriesError: null,\n  //   };\n  // }),\n\n  // on(configActions.customerCategoriesFail, (state, action) => {\n  //   return {\n  //     ...state,\n  //     customerCategories: [],\n  //     customerCategoriesLoading: false,\n  //     customerCategoriesLoaded: false,\n  //     customerCategoriesFailed: true,\n  //     customerCategoriesError: action.error,\n  //   };\n  // }),\n\n  // on(configActions.customerCategoriesClear, (state) => {\n  //   return {\n  //     ...state,\n  //     customerCategories: [],\n  //     customerCategoriesLoading: false,\n  //     customerCategoriesLoaded: false,\n  //     customerCategoriesFailed: false,\n  //     customerCategoriesError: null,\n  //   };\n  // }),\n\n  // // customer actions\n\n  // on(configActions.customerActionsRequest, (state) => {\n  //   return {\n  //     ...state,\n  //     customerActionsLoading: true,\n  //   };\n  // }),\n\n  // on(configActions.customerActionsSuccess, (state, action) => {\n  //   return {\n  //     ...state,\n  //     customerActions: action.list,\n  //     customerActionsLoading: false,\n  //     customerActionsLoaded: true,\n  //     customerActionsFailed: false,\n  //     customerActionsError: null,\n  //   };\n  // }),\n\n  // on(configActions.customerActionsFail, (state, action) => {\n  //   return {\n  //     ...state,\n  //     customerActions: [],\n  //     customerActionsLoading: false,\n  //     customerActionsLoaded: false,\n  //     customerActionsFailed: true,\n  //     customerActionsError: action.error,\n  //   };\n  // }),\n\n  // on(configActions.customerActionsClear, (state) => {\n  //   return {\n  //     ...state,\n  //     customerActions: [],\n  //     customerActionsLoading: false,\n  //     customerActionsLoaded: false,\n  //     customerActionsFailed: false,\n  //     customerActionsError: null,\n  //   };\n  // }),\n\n  // // customer levels\n\n  // on(configActions.customerLevelsRequest, (state) => {\n  //   return {\n  //     ...state,\n  //     customerLevelsLoading: true,\n  //   };\n  // }),\n\n  // on(configActions.customerLevelsSuccess, (state, action) => {\n  //   return {\n  //     ...state,\n  //     customerLevels: action.list,\n  //     customerLevelsLoading: false,\n  //     customerLevelsLoaded: true,\n  //     customerLevelsFailed: false,\n  //     customerLevelsError: null,\n  //   };\n  // }),\n\n  // on(configActions.customerLevelsFail, (state, action) => {\n  //   return {\n  //     ...state,\n  //     customerLevels: [],\n  //     customerLevelsLoading: false,\n  //     customerLevelsLoaded: false,\n  //     customerLevelsFailed: true,\n  //     customerLevelsError: action.error,\n  //   };\n  // }),\n\n  // on(configActions.customerLevelsClear, (state) => {\n  //   return {\n  //     ...state,\n  //     customerLevels: [],\n  //     customerLevelsLoading: false,\n  //     customerLevelsLoaded: false,\n  //     customerLevelsFailed: false,\n  //     customerLevelsError: null,\n  //   };\n  // }),\n\n  // // owner types\n\n  // on(configActions.ownerTypesRequest, (state) => {\n  //   return {\n  //     ...state,\n  //     ownerTypesLoading: true,\n  //   };\n  // }),\n\n  // on(configActions.ownerTypesSuccess, (state, action) => {\n  //   return {\n  //     ...state,\n  //     ownerTypes: action.list,\n  //     ownerTypesLoading: false,\n  //     ownerTypesLoaded: true,\n  //     ownerTypesFailed: false,\n  //     ownerTypesError: null,\n  //   };\n  // }),\n\n  // on(configActions.ownerTypesFail, (state, action) => {\n  //   return {\n  //     ...state,\n  //     ownerTypes: [],\n  //     ownerTypesLoading: false,\n  //     ownerTypesLoaded: false,\n  //     ownerTypesFailed: true,\n  //     ownerTypesError: action.error,\n  //   };\n  // }),\n\n  // on(configActions.ownerTypesClear, (state) => {\n  //   return {\n  //     ...state,\n  //     ownerTypes: [],\n  //     ownerTypesLoading: false,\n  //     ownerTypesLoaded: false,\n  //     ownerTypesFailed: false,\n  //     ownerTypesError: null,\n  //   };\n  // }),\n\n  // // customer register types\n\n  // on(configActions.customerRegisterTypesRequest, (state) => {\n  //   return {\n  //     ...state,\n  //     customerRegisterTypesLoading: true,\n  //   };\n  // }),\n\n  // on(configActions.customerRegisterTypesSuccess, (state, action) => {\n  //   return {\n  //     ...state,\n  //     customerRegisterTypes: action.list,\n  //     customerRegisterTypesLoading: false,\n  //     customerRegisterTypesLoaded: true,\n  //     customerRegisterTypesFailed: false,\n  //     customerRegisterTypesError: null,\n  //   };\n  // }),\n\n  // on(configActions.customerRegisterTypesFail, (state, action) => {\n  //   return {\n  //     ...state,\n  //     customerRegisterTypes: [],\n  //     customerRegisterTypesLoading: false,\n  //     customerRegisterTypesLoaded: false,\n  //     customerRegisterTypesFailed: true,\n  //     customerRegisterTypesError: action.error,\n  //   };\n  // }),\n\n  // on(configActions.customerRegisterTypesClear, (state) => {\n  //   return {\n  //     ...state,\n  //     customerRegisterTypes: [],\n  //     customerRegisterTypesLoading: false,\n  //     customerRegisterTypesLoaded: false,\n  //     customerRegisterTypesFailed: false,\n  //     customerRegisterTypesError: null,\n  //   };\n  // }),\n\n  // // customer groups\n\n  // on(configActions.customerGroupsRequest, (state) => {\n  //   return {\n  //     ...state,\n  //     customerGroupsLoading: true,\n  //   };\n  // }),\n\n  // on(configActions.customerGroupsSuccess, (state, action) => {\n  //   return {\n  //     ...state,\n  //     customerGroups: action.list,\n  //     customerGroupsLoading: false,\n  //     customerGroupsLoaded: true,\n  //     customerGroupsFailed: false,\n  //     customerGroupsError: null,\n  //   };\n  // }),\n\n  // on(configActions.customerGroupsFail, (state, action) => {\n  //   return {\n  //     ...state,\n  //     customerGroups: [],\n  //     customerGroupsLoading: false,\n  //     customerGroupsLoaded: false,\n  //     customerGroupsFailed: true,\n  //     customerGroupsError: action.error,\n  //   };\n  // }),\n\n  // on(configActions.customerGroupsClear, (state) => {\n  //   return {\n  //     ...state,\n  //     customerGroups: [],\n  //     customerGroupsLoading: false,\n  //     customerGroupsLoaded: false,\n  //     customerGroupsFailed: false,\n  //     customerGroupsError: null,\n  //   };\n  // }),\n\n  // // pay types\n\n  // on(configActions.payTypesRequest, (state) => {\n  //   return {\n  //     ...state,\n  //     payTypesLoading: true,\n  //   };\n  // }),\n\n  // on(configActions.payTypesSuccess, (state, action) => {\n  //   return {\n  //     ...state,\n  //     payTypes: action.list,\n  //     payTypesLoading: false,\n  //     payTypesLoaded: true,\n  //     payTypesFailed: false,\n  //     payTypesError: null,\n  //   };\n  // }),\n\n  // on(configActions.payTypesFail, (state, action) => {\n  //   return {\n  //     ...state,\n  //     payTypes: [],\n  //     payTypesLoading: false,\n  //     payTypesLoaded: false,\n  //     payTypesFailed: true,\n  //     payTypesError: action.error,\n  //   };\n  // }),\n\n  // on(configActions.payTypesClear, (state) => {\n  //   return {\n  //     ...state,\n  //     payTypes: [],\n  //     payTypesLoading: false,\n  //     payTypesLoaded: false,\n  //     payTypesFailed: false,\n  //     payTypesError: null,\n  //   };\n  // }),\n\n  // // dynamic customer groups\n\n  // on(configActions.dynamicCustomerGroupsRequest, (state) => {\n  //   return {\n  //     ...state,\n  //     dynamicCustomerGroupsLoading: true,\n  //   };\n  // }),\n\n  // on(configActions.dynamicCustomerGroupsSuccess, (state, action) => {\n  //   return {\n  //     ...state,\n  //     dynamicCustomerGroups: action.list,\n  //     dynamicCustomerGroupsLoading: false,\n  //     dynamicCustomerGroupsLoaded: true,\n  //     dynamicCustomerGroupsFailed: false,\n  //     dynamicCustomerGroupsError: null,\n  //   };\n  // }),\n\n  // on(configActions.dynamicCustomerGroupsFail, (state, action) => {\n  //   return {\n  //     ...state,\n  //     dynamicCustomerGroups: [],\n  //     dynamicCustomerGroupsLoading: false,\n  //     dynamicCustomerGroupsLoaded: false,\n  //     dynamicCustomerGroupsFailed: true,\n  //     dynamicCustomerGroupsError: action.error,\n  //   };\n  // }),\n\n  // on(configActions.dynamicCustomerGroupsClear, (state) => {\n  //   return {\n  //     ...state,\n  //     dynamicCustomerGroups: [],\n  //     dynamicCustomerGroupsLoading: false,\n  //     dynamicCustomerGroupsLoaded: false,\n  //     dynamicCustomerGroupsFailed: false,\n  //     dynamicCustomerGroupsError: null,\n  //   };\n  // }),\n\n  // // inactive causes\n\n  // on(configActions.inActiveCausesRequest, (state) => {\n  //   return {\n  //     ...state,\n  //     inActiveCausesLoading: true,\n  //   };\n  // }),\n\n  // on(configActions.inActiveCausesSuccess, (state, action) => {\n  //   return {\n  //     ...state,\n  //     inActiveCauses: action.list,\n  //     inActiveCausesLoading: false,\n  //     inActiveCausesLoaded: true,\n  //     inActiveCausesFailed: false,\n  //     inActiveCausesError: null,\n  //   };\n  // }),\n\n  // on(configActions.inActiveCausesFail, (state, action) => {\n  //   return {\n  //     ...state,\n  //     inActiveCauses: [],\n  //     inActiveCausesLoading: false,\n  //     inActiveCausesLoaded: false,\n  //     inActiveCausesFailed: true,\n  //     inActiveCausesError: action.error,\n  //   };\n  // }),\n\n  // on(configActions.inActiveCausesClear, (state) => {\n  //   return {\n  //     ...state,\n  //     inActiveCauses: [],\n  //     inActiveCausesLoading: false,\n  //     inActiveCausesLoaded: false,\n  //     inActiveCausesFailed: false,\n  //     inActiveCausesError: null,\n  //   };\n  // }),\n\n  // // bank types\n\n  // on(configActions.bankTypesRequest, (state) => {\n  //   return {\n  //     ...state,\n  //     bankTypesLoading: true,\n  //   };\n  // }),\n\n  // on(configActions.bankTypesSuccess, (state, action) => {\n  //   return {\n  //     ...state,\n  //     bankTypes: action.list,\n  //     bankTypesLoading: false,\n  //     bankTypesLoaded: true,\n  //     bankTypesFailed: false,\n  //     bankTypesError: null,\n  //   };\n  // }),\n\n  // on(configActions.bankTypesFail, (state, action) => {\n  //   return {\n  //     ...state,\n  //     bankTypes: [],\n  //     bankTypesLoading: false,\n  //     bankTypesLoaded: false,\n  //     bankTypesFailed: true,\n  //     bankTypesError: action.error,\n  //   };\n  // }),\n\n  // on(configActions.bankTypesClear, (state) => {\n  //   return {\n  //     ...state,\n  //     bankTypes: [],\n  //     bankTypesLoading: false,\n  //     bankTypesLoaded: false,\n  //     bankTypesFailed: false,\n  //     bankTypesError: null,\n  //   };\n  // }),\n\n  // // area cities\n\n  // on(configActions.areaCitiesRequest, (state) => {\n  //   return {\n  //     ...state,\n  //     areaCitiesLoading: true,\n  //   };\n  // }),\n\n  // on(configActions.areaCitiesSuccess, (state, action) => {\n  //   return {\n  //     ...state,\n  //     areaCities: action.list,\n  //     areaCitiesLoading: false,\n  //     areaCitiesLoaded: true,\n  //     areaCitiesFailed: false,\n  //     areaCitiesError: null,\n  //   };\n  // }),\n\n  // on(configActions.areaCitiesFail, (state, action) => {\n  //   return {\n  //     ...state,\n  //     areaCities: [],\n  //     areaCitiesLoading: false,\n  //     areaCitiesLoaded: false,\n  //     areaCitiesFailed: true,\n  //     areaCitiesError: action.error,\n  //   };\n  // }),\n\n  // on(configActions.areaCitiesClear, (state) => {\n  //   return {\n  //     ...state,\n  //     areaCities: [],\n  //     areaCitiesLoading: false,\n  //     areaCitiesLoaded: false,\n  //     areaCitiesFailed: false,\n  //     areaCitiesError: null,\n  //   };\n  // }),\n\n  on(configActions.toolbarActionTrigger, (state, action) => {\n    return {\n      ...state,\n      reviewToolbarAction: action.payload,\n    };\n  }),\n\n  on(configActions.toolbarCurrentTab, (state, action) => {\n    return {\n      ...state,\n      reviewCurrentToolbarKey: action.key,\n    };\n  }),\n\n  on(configActions.toolbarChangeRcvAccountSectionState, (state, action) => {\n    return {\n      ...state,\n      reviewToolbar: {\n        ...state.reviewToolbar,\n        sections: {\n          ...state.reviewToolbar.sections,\n          showRcvAccountSection: action.state,\n        },\n      },\n    };\n  }),\n\n  on(configActions.toolbarChangeLoanSectionState, (state, action) => {\n    return {\n      ...state,\n      reviewToolbar: {\n        ...state.reviewToolbar,\n        sections: {\n          ...state.reviewToolbar.sections,\n          showLoanSection: action.state,\n        },\n      },\n    };\n  }),\n\n  on(configActions.toolbarChangeGeneralLedgerSectionState, (state, action) => {\n    return {\n      ...state,\n      reviewToolbar: {\n        ...state.reviewToolbar,\n        sections: {\n          ...state.reviewToolbar.sections,\n          showGeneralLedgerSection: action.state,\n        },\n      },\n    };\n  }),\n\n  on(configActions.toolbarChangeStockSectionState, (state, action) => {\n    return {\n      ...state,\n      reviewToolbar: {\n        ...state.reviewToolbar,\n        sections: {\n          ...state.reviewToolbar.sections,\n          showStockSection: action.state,\n        },\n      },\n    };\n  }),\n\n  on(configActions.toolbarChangeSaleSectionState, (state, action) => {\n    return {\n      ...state,\n      reviewToolbar: {\n        ...state.reviewToolbar,\n        sections: {\n          ...state.reviewToolbar.sections,\n          showSaleSection: action.state,\n        },\n      },\n    };\n  }),\n\n  on(configActions.toolbarChangeTreasurySectionState, (state, action) => {\n    return {\n      ...state,\n      reviewToolbar: {\n        ...state.reviewToolbar,\n        sections: {\n          ...state.reviewToolbar.sections,\n          showTreasurySection: action.state,\n        },\n      },\n    };\n  }),\n\n  on(configActions.toolbarChangeWhAccountSectionState, (state, action) => {\n    return {\n      ...state,\n      reviewToolbar: {\n        ...state.reviewToolbar,\n        sections: {\n          ...state.reviewToolbar.sections,\n          showWhAccountSection: action.state,\n        },\n      },\n    };\n  }),\n\n  on(configActions.toolbarChangeBuySectionState, (state, action) => {\n    return {\n      ...state,\n      reviewToolbar: {\n        ...state.reviewToolbar,\n        sections: {\n          ...state.reviewToolbar.sections,\n          showBuySection: action.state,\n        },\n      },\n    };\n  }),\n\n  on(configActions.toolbarChangeFreeInvoiceSectionState, (state, action) => {\n    return {\n      ...state,\n      reviewToolbar: {\n        ...state.reviewToolbar,\n        sections: {\n          ...state.reviewToolbar.sections,\n          showFreeInvoiceSection: action.state,\n        },\n      },\n    };\n  }),\n\n  on(configActions.toolbarChangeTreasuryFundSectionState, (state, action) => {\n    return {\n      ...state,\n      reviewToolbar: {\n        ...state.reviewToolbar,\n        sections: {\n          ...state.reviewToolbar.sections,\n          showFreeTreasuryFundSection: action.state,\n        },\n      },\n    };\n  }),\n\n  on(configActions.accessNodeIdsRequest, (state, action) => {\n    return {\n      ...state,\n      accessNodeIdsLoading: true,\n    };\n  }),\n\n  on(configActions.accessNodeIdsSuccess, (state, action) => {\n    return {\n      ...state,\n      accessNodeIdsLoading: false,\n      accessNodeIdsLoaded: true,\n      accessNodeIds: action.items,\n    };\n  }),\n\n  on(configActions.accessNodeIdsFail, (state, action) => {\n    return {\n      ...state,\n      accessNodeIdsLoading: false,\n      accessNodeIdsFailed: true,\n      accessNodeIdsError: action.error,\n    };\n  }),\n\n  on(configActions.accessNodeIdsReset, state => {\n    return {\n      ...state,\n      accessNodeIds: [],\n      accessNodeIdsLoaded: false,\n      accessNodeIdsLoading: false,\n      accessNodeIdsFailed: false,\n      accessNodeIdsError: null,\n    };\n  }),\n\n  // showplans\n  on(configActions.toolbarShowPlan.set, (state, action) => {\n    const reviewToolbars = [...state.reviewToolbars];\n    const findedIndex = reviewToolbars.findIndex(x => x.key == action.payload.key);\n\n    if (findedIndex == -1) {\n      reviewToolbars.push(action.payload);\n    } else {\n      reviewToolbars[findedIndex] = action.payload;\n    }\n\n    return {\n      ...state,\n      reviewToolbars: reviewToolbars,\n    };\n  })\n);\n\nexport function configReducer(state: ConfigState | undefined, action: Action) {\n  return reducer(state, action);\n}\n","import { Action, createReducer, on } from '@ngrx/store';\n\nimport { historyActions } from '../actions/history.actions';\n\nexport interface HistoryState {\n  [key: string]: any;\n}\n\nconst initialState: HistoryState = {};\n\nconst reducer = createReducer(\n  initialState,\n\n  on(historyActions.addOrUpdateHistory, (state, action) => ({\n    ...state,\n    [action.key]: action.value,\n  })),\n\n  on(historyActions.deleteHistory, (state, action) => {\n    delete state[action.key];\n    return {\n      ...state,\n    };\n  }),\n\n  on(historyActions.loadHistorySuccess, (state, action) => ({\n    ...state,\n    ...action.items,\n  }))\n);\n\nexport function historyReducer(state: HistoryState | undefined, action: Action) {\n  return reducer(state, action);\n}\n","import { authReducer } from './auth.reducer';\nimport { configReducer } from './config.reducer';\nimport { historyReducer } from './history.reducer';\n\nexport const reducers = {\n  auth: authReducer,\n  config: configReducer,\n  history: historyReducer\n};\n","import { Injectable } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport { AppState } from '../app-state.interface';\nimport { Sandbox } from './base.sandbox';\nimport { historyActions } from '../actions/history.actions';\nimport { Observable } from 'rxjs';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class HistorySandbox extends Sandbox {\n  constructor(protected override appState$: Store<AppState>) {\n    super(appState$);\n  }\n\n  history$: Observable<{ [key: string]: any }> = this.appState$.select(store => store.history);\n\n  addOrUpdateHistory(key: string, value: any) {\n    this.appState$.dispatch(historyActions.addOrUpdateHistory({ key, value }));\n  }\n}\n","import { Overlay, OverlayRef } from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport {\n  Component,\n  ContentChild,\n  ElementRef,\n  EventEmitter,\n  Input,\n  OnInit,\n  Output,\n  SimpleChanges,\n  TemplateRef,\n  ViewChild,\n  ViewContainerRef,\n} from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { TranslateService } from '@ngx-translate/core';\nimport { catchError, concatMap, finalize, Observable, of, Subscription } from 'rxjs';\nimport { FararuPrintService, PrintInterface } from '../../../api/print/fararu-print-service';\nimport {\n  GeneralActionButtonInterface,\n  GeneralActionInterface,\n  ParamHttpHeaderItemInterface,\n  SaveResponse,\n} from '../../../models';\nimport { ConfigSandbox } from '../../../store';\nimport { FararuLayoutService } from '../../layouts/fararu-layout.service';\nimport { FormStateEnum } from '../../../models/form-state.enum';\nimport { ModalService } from '../../modal/modal.service';\nimport { FararuToastService } from '../../toast';\n\n@Component({\n  selector: 'app-general-custom-form',\n  templateUrl: './general-custom-form.component.html',\n  styleUrl: './general-custom-form.component.scss',\n})\nexport class GeneralCustomFormComponent implements OnInit {\n  @ViewChild('mainContainer') mainContainerElementRef: ElementRef<any>;\n  @ViewChild('asideContainer') asideContainerTemplateRef: TemplateRef<any>;\n  @Input() headerCustomActions?: GeneralActionButtonInterface[] = [];\n  @Input() operationActions?: GeneralActionButtonInterface[];\n  @Input() backUrl?: string;\n  @Input() uniquePageName?: string;\n  @Input() printActions?: GeneralActionInterface[] = [];\n  @Input() identityFieldName: string = 'id';\n  @Input() printParams: ParamHttpHeaderItemInterface[];\n  @Input() startSlicePercentforTwinFooter: number = 50;\n  @Input() hideFooterBorder: boolean = false;\n  /**\n   * Message Inputs\n   */\n  @Input() showMessage: boolean = false;\n  @Input() informationMessage: string = '';\n  @ContentChild('header', { static: false })\n  headerTemplate?: TemplateRef<any>;\n  @ContentChild('aside', { static: false })\n  asideTemplate?: TemplateRef<any>;\n  @ContentChild('footer', { static: false })\n  footerTemplate?: TemplateRef<any>;\n  @ContentChild('bottomSheet', { static: false })\n  bottomSheetTemplate?: TemplateRef<any>;\n  @ContentChild('leftFooter', { static: false })\n  leftFooterTemplate?: TemplateRef<any>;\n\n  @Input() bottomSheetMaxHeight?: number;\n  @Input() bottomSheetExpanded?: boolean = false;\n  @Input() bottomSheetTitle?: string;\n  @Input() asideTitle?: string;\n\n  /**\n   * Header Configuration\n   */\n  @Input() hasSaveButton: boolean = true;\n  @Input() hasSaveAndNewButton: boolean = true;\n  @Input() hasSaveAndConfirmButton: boolean = true;\n  @Input() hasSaveAndExitButton: boolean = true;\n  @Input() hasSaveAndPrintButton: boolean = false;\n  @Input() hasAsideToggleButton: boolean = true;\n  @Input() hasExitButton: boolean = true;\n  @Input() hasGiftButton: boolean = true;\n  @Input() giftButtonDisabled: boolean = false;\n  @Input() hasPrintButton: boolean = true;\n  @Input() hasHeader: Boolean = true;\n  @Input() asideOverlay: boolean = false;\n  @Input() asideShow: boolean = false;\n  @Input() isLoading: boolean = false;\n  @Input() hasFormStateManagement: boolean = false;\n  @Input() saveAction: () => Observable<SaveResponse | Error>;\n  @Input() resetAction: () => void;\n  @Input() confirmAction: (saveResult: SaveResponse) => Observable<SaveResponse>;\n  @Input() printAction: (saveResult: SaveResponse) => Observable<any>;\n  /**\n   * Header Outputs\n   */\n  @Output() saveAndNewClicked: EventEmitter<any> = new EventEmitter<any>();\n  @Output() saveAndConfirmClicked: EventEmitter<any> = new EventEmitter<any>();\n  @Output() saveAndPrintClicked: EventEmitter<any> = new EventEmitter<any>(); // unused because print options is list\n  @Output() saveAndExitClicked: EventEmitter<any> = new EventEmitter<any>();\n  @Output() saveClicked: EventEmitter<any> = new EventEmitter<any>();\n  @Output() sidebarReloadClicked: EventEmitter<any> = new EventEmitter<any>();\n  @Output() exitClicked: EventEmitter<any> = new EventEmitter<any>();\n  @Output() giftClicked: EventEmitter<any> = new EventEmitter<any>();\n  @Output() printClicked: EventEmitter<any> = new EventEmitter<any>();\n  @Output() stateDetected: EventEmitter<{\n    state: FormStateEnum;\n    entityId: string | number | null;\n  }> = new EventEmitter<{ state: FormStateEnum; entityId: string | number | null }>();\n\n  translationPath = 'general.generalCustomForm';\n  panelExpandingState?: 'top' | 'bottom' | 'side' = 'side';\n  actions?: GeneralActionButtonInterface[] = [];\n  sideActions?: GeneralActionButtonInterface[] = [];\n  private _overlayRef: OverlayRef;\n  selectedRows: any = [];\n  checkedItems: any[] = [];\n  reportLoading: boolean = false;\n  reportProgress: number = 0;\n  downloadSubscription: Subscription = null;\n  state: FormStateEnum | undefined = undefined;\n  entityId: string | number | null = null;\n  isSaving: boolean = false;\n\n  constructor(\n    private readonly _overlay: Overlay,\n    private readonly _viewContainerRef: ViewContainerRef,\n    private _translateService: TranslateService,\n    private _modalService: ModalService,\n    private _layoutService: FararuLayoutService,\n    private _printService: FararuPrintService,\n    private router: Router,\n    private _activatedRoute: ActivatedRoute,\n    private _configSandbox: ConfigSandbox,\n    private _toastService: FararuToastService\n  ) {}\n\n  ngOnInit(): void {\n    this.detectFormStateAndId();\n\n    this._translateService\n      .get([\n        this.translationPath + '.reload',\n        this.translationPath + '.pin',\n        this.translationPath + '.unpin',\n      ])\n      .subscribe(result => {\n        this.actions.push({\n          fararuIcon: { name: 'reload' },\n          tooltip: result[this.translationPath + '.reload'],\n          varient: 'text',\n          click: (event: Event, args?: any) => {\n            this.sidebarReloadClicked.emit();\n          },\n        });\n        this.sideActions.push(\n          {\n            fararuIcon: { name: this.asideOverlay ? 'pin-2' : 'pin-1' },\n            tooltip: this.asideOverlay\n              ? result[this.translationPath + '.unpin']\n              : result[this.translationPath + '.pin'],\n            click: (event: Event, args?: any) => {\n              this.toggleAsideOverlay(!this.asideOverlay);\n              if (!this.asideOverlay) {\n                this.sideActions[0].fararuIcon.name = 'pin-2';\n                this.sideActions[0].tooltip = result[this.translationPath + '.unpin'];\n              } else {\n                this.sideActions[0].fararuIcon.name = 'pin-1';\n                this.sideActions[0].tooltip = result[this.translationPath + '.pin'];\n              }\n            },\n          },\n          {\n            fararuIcon: { name: 'close' },\n            tooltip: 'close',\n            click: (event: Event, args?: any) => {\n              this.toggleAsideShow(!this.asideShow);\n            },\n          }\n        );\n      });\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (changes['operationActions']) {\n      const operationActions = changes['operationActions'].currentValue;\n      if (operationActions && operationActions.length > 0) {\n        if (!this.headerCustomActions) this.headerCustomActions = [];\n        this.headerCustomActions.splice(0, 0, {\n          text: 'عملیات تکمیلی',\n          items: operationActions,\n          fararuIcon: {\n            name: 'tool',\n          },\n        });\n      }\n    }\n  }\n  handleSaveFunction(btn: 'new' | 'exit' | 'print' | 'confirm' | 'save') {\n    if (this.saveAction) {\n      if (this.isSaving) return;\n\n      this.isSaving = true;\n      this._configSandbox.showGlobalLoading();\n      this.saveAction()\n        .pipe(\n          concatMap((result: SaveResponse | Error) => {\n            if (result instanceof Error) {\n              if (result.message)\n                this._toastService.show({\n                  text: result.message,\n                  type: 'error',\n                });\n              return of();\n            } else if (result && result.saved) {\n              this._toastService.show({\n                type: 'success',\n                text: result.message,\n              });\n              if (btn == 'confirm') {\n                return this.confirmAction(result).pipe(\n                  concatMap((result: SaveResponse) => {\n                    if (result.saved) {\n                      this._toastService.show({\n                        type: 'success',\n                        text: result.message,\n                      });\n                    } else if (result.canceledByUser) {\n                      this._toastService.show({\n                        type: 'warning',\n                        text: 'کاربر از درخواست خود انصراف داد!',\n                      });\n                    }\n                    return of('confirm');\n                  }),\n                  catchError(() => of('confirm'))\n                );\n              } else if (btn == 'new') {\n                return of('new');\n              } else if (btn == 'exit') {\n                return of('exit');\n              } else if (btn == 'print') {\n                return this.printAction(result).pipe(\n                  concatMap(() => of('print')),\n                  catchError(() => of('print'))\n                );\n              } else return of('print');\n            } else if (result.canceledByUser) {\n              this._toastService.show({\n                text: 'کاربر از درخواست خود انصراف داد!',\n                type: 'warning',\n              });\n              return of();\n            } else return of();\n          }),\n          finalize(() => {\n            this._configSandbox.hideGlobalLoading();\n            this.isSaving = false;\n          })\n        )\n        .subscribe({\n          next: result => {\n            if (result == 'new') {\n              this.resetAction();\n            } else {\n              this.closePage();\n            }\n          },\n          error: (error: Error) => {\n            if (error.name !== 'HttpErrorResponse') {\n              this._toastService.show({\n                text: typeof error == 'string' ? error : error.message || 'خطایی رخ داده است',\n                type: 'error',\n              });\n            }\n          },\n        });\n    } else if (btn == 'new') {\n      this.saveAndNewClicked.emit();\n    } else if (btn == 'exit') {\n      this.saveAndExitClicked.emit();\n    } else if (btn == 'print') {\n      this.saveAndPrintClicked.emit();\n    } else if (btn == 'confirm') {\n      this.saveAndConfirmClicked.emit();\n    } else if (btn == 'save') {\n      this.saveClicked.emit();\n      if (!this.saveClicked.observed) {\n        this.saveAndExitClicked.emit();\n      }\n    }\n  }\n\n  cancelPdfDownload() {\n    this.downloadSubscription?.unsubscribe();\n    this.reportLoading = false;\n  }\n\n  messageCloseClicked(e: any) {\n    this.showMessage = false;\n  }\n\n  expandingButtonClickHandler(state: 'top' | 'bottom') {\n    if (this.panelExpandingState === 'side') {\n      this.panelExpandingState = state;\n      return;\n    } else {\n      this.panelExpandingState = 'side';\n    }\n  }\n\n  bottomSheetExpandHandler() {\n    this.bottomSheetExpanded = !this.bottomSheetExpanded;\n  }\n\n  toggleAsideOverlay(isOveraly: boolean = true) {\n    // this.asideOverlay = isOveraly;\n    if (isOveraly) {\n      this.asideOverlay = isOveraly;\n      this._openAsideMenu();\n    } else {\n      this.asideOverlay = isOveraly;\n      this._closeAsideMenu();\n      this.asideShow = true;\n    }\n  }\n\n  toggleAsideShow(isShow: boolean = true) {\n    if (isShow) {\n      this._openAsideMenu();\n    } else {\n      this._closeAsideMenu();\n    }\n  }\n\n  asideToggleButtonClicked(e: any) {\n    e.preventDefault();\n    e.stopPropagation();\n    this.toggleAsideShow(!this.asideShow);\n  }\n  clickOutsideOverlay(e: any) {\n    e.stopPropagation();\n    this.toggleAsideShow(false);\n  }\n\n  private _openAsideMenu() {\n    this.asideShow = true;\n    this.asideOverlay = true;\n    this._overlayRef = this._createAsideMenuOverlay();\n    this._overlayRef.attach(\n      new TemplatePortal(this.asideContainerTemplateRef, this._viewContainerRef)\n    );\n\n    this._overlayRef.backdropClick().subscribe(() => {\n      this._closeAsideMenu();\n    });\n  }\n\n  private _createAsideMenuOverlay() {\n    return this._overlay.create({\n      hasBackdrop: true,\n      backdropClass: ['custom-cdk-overlay-dark-backdrop'],\n\n      scrollStrategy: this._overlay.scrollStrategies.block(),\n      positionStrategy: this._overlay\n        .position()\n        // .global()\n        .flexibleConnectedTo(this.mainContainerElementRef)\n        .withPositions([\n          {\n            originX: 'start',\n            originY: 'top',\n            overlayX: 'start',\n            overlayY: 'top',\n          },\n        ]),\n    });\n  }\n\n  private _closeAsideMenu() {\n    if (!this.asideShow) return;\n    this.asideShow = false;\n    this._overlayRef?.detach();\n  }\n\n  exitClickHandler(e: any) {\n    let translationPath = 'general.standardModalForm.';\n    this._translateService\n      .get([translationPath + 'areYouSureForCancel', 'confirm', 'cancel'])\n      .subscribe(titles => {\n        this._modalService\n          .showConfirm({\n            type: 'warning',\n            description: titles[translationPath + 'areYouSureForCancel'],\n            acceptText: titles[translationPath + 'confirm'],\n            declineText: titles[translationPath + 'cancel'],\n          })\n          .then(result => {\n            if (result) this.closePage();\n          });\n      });\n  }\n\n  closePage() {\n    this._layoutService.removeWindow(\n      {\n        link: this.router.url,\n        title: '',\n      },\n      this.backUrl\n    );\n  }\n\n  addHeaderPrintActions() {\n    this._printService.loadPrintDocs(this.uniquePageName).subscribe(printOptions => {\n      if (printOptions.length > 0) {\n        const subItems = printOptions.map((opt: PrintInterface) => ({\n          text: opt.title,\n          click: (event: any, args: any) => {\n            if (this.checkedItems.length > 0) {\n              this.reportLoading = true;\n              this.reportProgress = 0;\n              this.downloadSubscription = this._printService\n                .print(\n                  opt.address,\n                  this.checkedItems.map(it => it[this.identityFieldName]),\n                  this.printParams\n                )\n                .pipe(\n                  finalize(() => {\n                    this.reportLoading = false;\n                    // this.reportProgress = 0;\n                  })\n                )\n                .subscribe();\n            } else\n              this._modalService.showAlert({\n                description: this._translateService.instant(\n                  this.translationPath + '.select_at_least_one_item'\n                ),\n                buttonText: 'بستن',\n                type: 'error',\n              });\n          },\n        }));\n\n        // if (!this.headerCustomActions) this.headerCustomActions = [];\n        this.printActions.push({\n          text: 'چاپ',\n          items: subItems,\n        });\n      } else {\n        this.printActions = [];\n      }\n    });\n  }\n\n  /**\n   * Detects the form state and entity ID from Angular route parameters\n   */\n  private detectFormStateAndId(): void {\n    if (!this.hasFormStateManagement) return;\n\n    const idParam = this._activatedRoute.snapshot.queryParamMap.get('id');\n    this.entityId = idParam || null;\n    const stateParam = this._activatedRoute.snapshot.paramMap.get('state');\n    this.state = this._getStateFromValue(stateParam);\n    if (this.state) {\n      this.stateDetected.emit({ state: this.state, entityId: this.entityId });\n    }\n  }\n\n  private _getStateFromValue(value: string | null): FormStateEnum | undefined {\n    if (!value) return undefined;\n\n    const valueLower = value.toLowerCase();\n\n    switch (valueLower) {\n      case 'new':\n        return FormStateEnum.NEW;\n      case 'edit':\n        return FormStateEnum.EDIT;\n      case 'view':\n        return FormStateEnum.VIEW;\n      default:\n        return undefined;\n    }\n  }\n\n  get isCustomFormLoading() {\n    return (this.state === undefined && this.hasFormStateManagement === true) || this.isLoading;\n  }\n}\n","<section\n  #mainContainer\n  cdkOverlayOrigin\n  class=\"ghcaf ghcaf__main\"\n  [class.ghcaf__main--aside-closed]=\"asideOverlay || !asideShow\"\n>\n  <ng-container *ngIf=\"hasHeader\" [ngTemplateOutlet]=\"headerContainer\"></ng-container>\n  <ng-container *ngIf=\"footerTemplate; else noHorizontalSeparator\">\n    <!-- <ui-screen-separator class=\"ghcaf__body\" [autoSize]=\"'top'\" >\n      <ng-container top [ngTemplateOutlet]=\"contentContainer\"></ng-container>\n      <ng-container bottom [ngTemplateOutlet]=\"footerContainer\"> </ng-container>\n    </ui-screen-separator> -->\n    <ng-container [ngTemplateOutlet]=\"contentContainer\"></ng-container>\n    <ng-container [ngTemplateOutlet]=\"footerContainer\"> </ng-container>\n  </ng-container>\n\n  <ng-template #noHorizontalSeparator>\n    <ng-container [ngTemplateOutlet]=\"contentContainer\"></ng-container>\n  </ng-template>\n\n  <ng-container [ngTemplateOutlet]=\"bottomSheetContainer\"></ng-container>\n</section>\n<!-- <span #asidePlaceholder *ngIf=\"asideShow && asideOverlay\" style=\"position: relative;\"></span> -->\n<!-- <ng-template #asidePlaceholder  >\n</ng-template> -->\n\n<ng-container *ngIf=\"!asideOverlay && asideShow\" [ngTemplateOutlet]=\"asideContainer\"></ng-container>\n\n<ng-template #asideContainer>\n  <section\n    class=\"ghcaf ghcaf__aside ghcaf__container\"\n    [ngClass]=\"asideOverlay ? 'ghcaf__aside--overlay' : 'ghcaf__aside--embed'\"\n    [dir]=\"'rtl'\"\n    *ngIf=\"hasAsideToggleButton\"\n  >\n    <!-- <ui-button\n      *ngIf=\"hasAsideToggleButton && !asideShow\"\n      [tabIndex]=\"1\"\n      [varient]=\"'text'\"\n      [color]=\"'secondary'\"\n      class=\"ghcaf__header__side-col\"\n      (clickCallback)=\"asideToggleButtonClicked($event)\"\n      [title]=\"'general.headerContentAsideFooter.toggleAsideButton' | translate\"\n    >\n      <ui-fararu-icon [name]=\"'docs'\" [size]=\"'x3'\"></ui-fararu-icon>\n      {{ 'general.headerContentAsideFooter.toggleAsideButton' | translate }}</ui-button\n    > -->\n    <ui-toolbar\n      [actions]=\"actions\"\n      [sideActions]=\"sideActions\"\n      [hideReloadButton]=\"false\"\n      [toolbarTitle]=\"asideTitle\"\n    ></ui-toolbar>\n    <ng-container [ngTemplateOutlet]=\"asideTemplate\"></ng-container>\n  </section>\n</ng-template>\n\n<ng-template #headerContainer>\n  <header class=\"ghcaf__header ghcaf__top-container\">\n    <ui-button\n      *ngIf=\"hasSaveButton\"\n      [tabIndex]=\"1\"\n      [varient]=\"'fill'\"\n      [color]=\"'primary'\"\n      (clickCallback)=\"handleSaveFunction('save')\"\n      [appShortcut]=\"'control+s'\"\n      [tagName]=\"'button-group'\"\n      [groupTemplate]=\"\n        hasSaveAndConfirmButton ||\n        hasSaveAndExitButton ||\n        hasSaveAndNewButton ||\n        hasSaveAndPrintButton\n          ? saveTemplate\n          : undefined\n      \"\n      [title]=\"('general.headerContentAsideFooter.save' | translate) + ' ctrl + s'\"\n    >\n      <ui-fararu-icon [name]=\"'save-and-exit'\" [color]=\"'on-primary'\"></ui-fararu-icon>\n    </ui-button>\n    <ng-template #saveTemplate>\n      <a\n        *ngIf=\"hasSaveAndNewButton\"\n        class=\"button__button-group__menu__item\"\n        [appShortcut]=\"'control+l'\"\n        (click)=\"handleSaveFunction('new')\"\n        [appTooltip]=\"(translationPath + '.saveAndNew' | translate) + ' ctrl + l'\"\n      >\n        <ui-fararu-icon\n          [name]=\"'save-and-new'\"\n          [size]=\"'x3'\"\n          [color]=\"'content-secondary'\"\n        ></ui-fararu-icon>\n        {{ translationPath + '.saveAndNew' | translate }}\n      </a>\n      <a\n        *ngIf=\"hasSaveAndConfirmButton\"\n        class=\"button__button-group__menu__item\"\n        [appShortcut]=\"'control+b'\"\n        (click)=\"handleSaveFunction('confirm')\"\n        [appTooltip]=\"(translationPath + '.saveAndConfirm' | translate) + ' ctrl + b'\"\n      >\n        <ui-fararu-icon\n          [name]=\"'save-and-confirm'\"\n          [size]=\"'x3'\"\n          [color]=\"'content-secondary'\"\n        ></ui-fararu-icon>\n        {{ translationPath + '.saveAndConfirm' | translate }}\n      </a>\n      <a\n        *ngIf=\"hasSaveAndExitButton\"\n        class=\"button__button-group__menu__item\"\n        [appShortcut]=\"'control+k'\"\n        (click)=\"handleSaveFunction('exit')\"\n        [appTooltip]=\"(translationPath + '.saveAndExit' | translate) + ' ctrl + k'\"\n      >\n        <ui-fararu-icon\n          [name]=\"'save-and-exit'\"\n          [size]=\"'x3'\"\n          [color]=\"'content-secondary'\"\n        ></ui-fararu-icon>\n        {{ translationPath + '.saveAndExit' | translate }}\n      </a>\n    </ng-template>\n\n    <ng-container *ngIf=\"hasSaveAndPrintButton\">\n      <ui-button\n        [tabIndex]=\"1\"\n        [varient]=\"'fill'\"\n        [color]=\"'secondary'\"\n        (clickCallback)=\"handleSaveFunction('print')\"\n        [appShortcut]=\"'control+p'\"\n        [title]=\"(translationPath + '.saveAndPrint' | translate) + ' Control+P'\"\n        [dropdownTriggerFor]=\"printMoreMenu\"\n      >\n        <ui-fararu-icon name=\"print\"></ui-fararu-icon>\n        <ui-icon group=\"navigation\" name=\"expand_more\"></ui-icon>\n      </ui-button>\n      <ui-dropdown #printMoreMenu [tabIndex]=\"-1\" [hidden]=\"true\">\n        <ui-sub-menu\n          [items]=\"printActions\"\n          *ngIf=\"printActions\"\n          [args]=\"selectedRows\"\n        ></ui-sub-menu>\n      </ui-dropdown>\n    </ng-container>\n\n    <ui-button\n      *ngIf=\"hasGiftButton\"\n      [disabled]=\"giftButtonDisabled\"\n      [tabIndex]=\"1\"\n      [varient]=\"'fill'\"\n      [color]=\"'secondary'\"\n      (clickCallback)=\"giftClicked.emit()\"\n      [appShortcut]=\"'control+g'\"\n      [title]=\"(translationPath + '.giftAndDiscountPreview' | translate) + ' Control+G'\"\n      ><ui-fararu-icon [name]=\"'gift'\" [size]=\"'x3'\"></ui-fararu-icon\n    ></ui-button>\n\n    <ng-container *ngIf=\"headerCustomActions?.length > 0\">\n      <ng-container *ngFor=\"let action of headerCustomActions\">\n        <ng-container *ngIf=\"action.items?.length > 0; else singleButtonTemplate\">\n          <ui-button\n            [tabIndex]=\"1\"\n            *ngIf=\"action?.nodeAccessId | accessNode\"\n            [dropdownTriggerFor]=\"moreMenu\"\n            [varient]=\"action.varient || 'fill'\"\n            [color]=\"action.color || 'secondary'\"\n            [appShortcut]=\"action.shortcut\"\n            [title]=\"action.tooltip\"\n            [disabled]=\"!!action.disabled\"\n          >\n            <ui-fararu-icon\n              *ngIf=\"action.fararuIcon; else oldIconTemplate\"\n              [name]=\"action.fararuIcon.name\"\n              [size]=\"action.fararuIcon.size\"\n              [color]=\"action.fararuIcon.color\"\n            ></ui-fararu-icon>\n            <ng-template #oldIconTemplate>\n              <ui-icon\n                *ngIf=\"action.icon\"\n                [group]=\"action.icon.group\"\n                [name]=\"action.icon.name\"\n                [type]=\"action.icon.type\"\n              ></ui-icon>\n            </ng-template>\n            {{ action.text }}\n\n            <ui-icon style=\"display: inline-flex\" group=\"navigation\" name=\"expand_more\"></ui-icon>\n          </ui-button>\n          <ui-dropdown #moreMenu [tabIndex]=\"-1\" [hidden]=\"true\">\n            <ui-sub-menu [items]=\"action.items\"></ui-sub-menu>\n          </ui-dropdown>\n        </ng-container>\n        <ng-template #singleButtonTemplate>\n          <ui-button\n            [tabIndex]=\"1\"\n            *ngIf=\"action?.nodeAccessId | accessNode\"\n            [varient]=\"action.varient || 'fill'\"\n            [color]=\"action.color || 'secondary'\"\n            [appShortcut]=\"action.shortcut\"\n            [appTooltip]=\"action.tooltip\"\n            [appTooltipPosition]=\"'bottom'\"\n            [disabled]=\"!!action.disabled\"\n            [for]=\"action.for\"\n            [form]=\"action.formAttr\"\n            [idAttr]=\"action.idAttr\"\n            [tagName]=\"action.for ? 'label' : 'button'\"\n            [isIcon]=\"(action.fararuIcon || action.icon) && !action.text\"\n            (clickCallback)=\"action.click ? action.click($event, action) : null\"\n          >\n            <ui-fararu-icon\n              *ngIf=\"action.fararuIcon; else oldIconTemplate\"\n              [name]=\"action.fararuIcon.name\"\n              [size]=\"action.fararuIcon.size\"\n              [color]=\"action.fararuIcon.color\"\n            ></ui-fararu-icon>\n            <ng-template #oldIconTemplate>\n              <ui-icon\n                *ngIf=\"action.icon\"\n                [group]=\"action.icon.group\"\n                [name]=\"action.icon.name\"\n                [type]=\"action.icon.type\"\n              ></ui-icon></ng-template\n            >{{ action.text }}</ui-button\n          >\n        </ng-template>\n      </ng-container>\n    </ng-container>\n    <ui-button\n      *ngIf=\"hasExitButton\"\n      [tabIndex]=\"1\"\n      [varient]=\"'fill'\"\n      [color]=\"'secondary'\"\n      (clickCallback)=\"exitClickHandler($event)\"\n      [appShortcut]=\"'control+e'\"\n      [title]=\"(translationPath + '.return' | translate) + ' ctrl + e'\"\n      ><ui-fararu-icon [name]=\"'exit'\" [size]=\"'x3'\"></ui-fararu-icon\n    ></ui-button>\n    <ui-button *ngIf=\"reportLoading\" [varient]=\"'fill'\" [color]=\"'secondary'\">\n      <ui-icon\n        (click)=\"cancelPdfDownload()\"\n        color=\"success\"\n        type=\"outline\"\n        group=\"content\"\n        name=\"clear\"\n      ></ui-icon>\n      {{ translationPath + '.downloading_print_file' | translate }}\n      {{ reportProgress }} %\n    </ui-button>\n    <ng-container [ngTemplateOutlet]=\"headerTemplate\"></ng-container>\n\n    <ui-button\n      *ngIf=\"hasAsideToggleButton && !asideShow\"\n      #asideToggleButton\n      [tabIndex]=\"1\"\n      [varient]=\"'text'\"\n      [color]=\"'secondary'\"\n      class=\"ghcaf__header__side-col\"\n      (clickCallback)=\"asideToggleButtonClicked($event)\"\n      [title]=\"asideTitle\"\n    >\n      <ui-fararu-icon [name]=\"'docs'\" [size]=\"'x3'\"></ui-fararu-icon>\n      {{ asideTitle }}</ui-button\n    >\n  </header>\n  <app-message\n    class=\"ghcaf__message\"\n    type=\"info\"\n    *ngIf=\"showMessage && informationMessage\"\n    [hasActionButton]=\"false\"\n    [description]=\"informationMessage\"\n    (closeClicked)=\"messageCloseClicked($event)\"\n  >\n  </app-message>\n</ng-template>\n\n<ng-template #contentContainer>\n  <section\n    class=\"ghcaf__bottom-container\"\n    [ngClass]=\"footerTemplate ? 'ghcaf__content' : 'ghcaf__body'\"\n    [class.ghcaf__content--wide]=\"!footerTemplate || panelExpandingState == 'top'\"\n    [hidden]=\"panelExpandingState == 'bottom'\"\n  >\n    <ng-content></ng-content>\n  </section>\n</ng-template>\n\n<ng-template #footerContainer>\n  <div class=\"ghcaf__knob-wrap\">\n    <span class=\"ghcaf__knob\" *ngIf=\"panelExpandingState !== 'top'\"></span>\n    <ui-fararu-icon\n      class=\"ghcaf__max-min-button ghcaf__max-min-button--top\"\n      [name]=\"'section-up'\"\n      [size]=\"'x2'\"\n      [hidden]=\"panelExpandingState == 'bottom'\"\n      (click)=\"expandingButtonClickHandler('bottom')\"\n    ></ui-fararu-icon>\n    <ui-fararu-icon\n      class=\"ghcaf__max-min-button ghcaf__max-min-button--bottom\"\n      [name]=\"'section-down'\"\n      [size]=\"'x2'\"\n      [hidden]=\"panelExpandingState == 'top'\"\n      (click)=\"expandingButtonClickHandler('top')\"\n    ></ui-fararu-icon>\n  </div>\n  <section\n    class=\"ghcaf__footer\"\n    [ngClass]=\"{ ghcaf__container: !hideFooterBorder }\"\n    [hidden]=\"panelExpandingState == 'top'\"\n  >\n    <ng-container *ngIf=\"leftFooterTemplate; else justFooterTemplate\">\n      <ui-screen-vertical-separator [startSlicePercent]=\"startSlicePercentforTwinFooter\">\n        <ng-container start [ngTemplateOutlet]=\"footerTemplate\"></ng-container>\n        <ng-container end [ngTemplateOutlet]=\"leftFooterTemplate\"></ng-container>\n      </ui-screen-vertical-separator>\n    </ng-container>\n    <ng-template #justFooterTemplate>\n      <ng-container [ngTemplateOutlet]=\"footerTemplate\"></ng-container>\n    </ng-template>\n    <ui-button\n      class=\"ghcaf__bottom-sheet__expand-button\"\n      (click)=\"bottomSheetExpandHandler()\"\n      *ngIf=\"!bottomSheetExpanded && bottomSheetTemplate\"\n      color=\"secondary\"\n      varient=\"text\"\n    >\n      <ui-fararu-icon name=\"arrow-top\" size=\"x2\" color=\"content-secondary\"></ui-fararu-icon>\n    </ui-button>\n  </section>\n</ng-template>\n\n<ng-template #bottomSheetContainer>\n  <footer\n    class=\"ghcaf ghcaf__container ghcaf__bottom-sheet\"\n    [class.ghcaf__bottom-sheet--expanded]=\"bottomSheetExpanded\"\n    *ngIf=\"bottomSheetExpanded\"\n  >\n    <ui-button\n      class=\"ghcaf__bottom-sheet__expand-button\"\n      (click)=\"bottomSheetExpandHandler()\"\n      *ngIf=\"!bottomSheetExpanded\"\n      color=\"secondary\"\n      varient=\"text\"\n    >\n      <ui-fararu-icon name=\"arrow-top\" size=\"x2\" color=\"content-secondary\"></ui-fararu-icon>\n    </ui-button>\n\n    <ui-button\n      class=\"ghcaf__bottom-sheet__close-button\"\n      (click)=\"bottomSheetExpandHandler()\"\n      *ngIf=\"bottomSheetExpanded\"\n      color=\"secondary\"\n      varient=\"text\"\n      [class.ghcaf__bottom-sheet__button-icon--expanded]=\"bottomSheetExpanded\"\n    >\n      <ui-fararu-icon name=\"arrow-bottom\" size=\"x2\"></ui-fararu-icon>\n    </ui-button>\n    <div\n      class=\"ghcaf__bottom-sheet__content\"\n      #bottomSheetElememt\n      [style.max-height]=\"bottomSheetMaxHeight\"\n    >\n      <ng-container [ngTemplateOutlet]=\"bottomSheetTemplate\"></ng-container>\n    </div>\n  </footer>\n</ng-template>\n<ng-container *ngIf=\"isCustomFormLoading\">\n  <span class=\"ghcaf__overlay\" [class.ghcaf__overlay--show]=\"isCustomFormLoading\">\n    <ui-spinner [show]=\"true\"></ui-spinner>\n  </span>\n</ng-container>\n","import { HttpHeaders } from '@angular/common/http';\nimport { Component, Input, OnInit, ViewChild } from '@angular/core';\nimport { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap';\nimport { finalize } from 'rxjs';\nimport { HttpHeaderNames } from '../../../../constants/http-header-names';\nimport { GeneralActionButtonInterface } from '../../../../models/general-action.interface';\nimport { GeneralListDepsService } from '../../general-simple-list/general-list-deps.service';\nimport { GeneralSimpleListComponent } from './../../general-simple-list/general-simple-list.component';\nimport { ModalComponentInterface } from '../../../modal/modal.service';\nimport { OdataHttpHeaders } from '../../../../models/odata-http-header.interface';\nimport { GridNameInterface } from '../../../../models/grid-name.interface';\nimport { GeneralODataTableName } from '../../../../constants/general-odata-table-name';\nimport { GeneralFieldConfigInterface } from '../../../../models/general-field-config.interface';\nimport { ParamHttpHeaderItemInterface } from '../../../../models/general/param-http-header-item.interface';\nimport { createParamHttpHeaderValue } from '../../../../utils/create-param-http-header-value';\n\nexport interface SelectModalInterface {\n  modalTitle?: string;\n  fields: GeneralFieldConfigInterface[];\n  oDataServer?: string;\n  oDataEntity?: string;\n  oDataHttpHeaders?: OdataHttpHeaders;\n  addAll?: boolean;\n  identityFieldName?: string;\n  gridName?: GridNameInterface;\n  items?: any[];\n}\n\n@Component({\n  templateUrl: './general-select-list-modal.component.html',\n  styleUrls: ['./general-select-list-modal.component.scss'],\n})\nexport class GeneralSelectListModalComponent\n  implements OnInit, ModalComponentInterface<SelectModalInterface>\n{\n  @ViewChild('simpleListComponent') simpleListComponent: GeneralSimpleListComponent;\n  actions: GeneralActionButtonInterface[] = [];\n  spinner: boolean = false;\n  selectedRows: any[];\n  modalTitle: string;\n  oDataTable = GeneralODataTableName;\n  oDataHttpHeaders: OdataHttpHeaders = {};\n\n  constructor(private activeModal: NgbActiveModal, private deps: GeneralListDepsService) {}\n\n  data: SelectModalInterface;\n\n  ngOnInit(): void {\n    console.log('🚀 ~ ngOnInit ~ ngOnInit:');\n\n    const oDataHttpHeaders = { ...this.data.oDataHttpHeaders };\n    if (this.data.items && this.data.items.length > 0) {\n      let params: ParamHttpHeaderItemInterface[] = [];\n      if (oDataHttpHeaders[HttpHeaderNames.PARAM])\n        params = JSON.parse(oDataHttpHeaders[HttpHeaderNames.PARAM]);\n      params.push({\n        keyName: 'reduce',\n        keyValue: this.data.items.map(it => it[this.data.identityFieldName]).join(','),\n      });\n      const newParams = createParamHttpHeaderValue(params);\n      oDataHttpHeaders[HttpHeaderNames.PARAM] = newParams;\n    }\n    this.oDataHttpHeaders = { ...oDataHttpHeaders };\n    if (this.data.modalTitle) this.modalTitle = this.data.modalTitle;\n    else if (this.data.gridName) {\n      this.modalTitle = 'افزودن ' + this.data.gridName.single;\n    } else this.modalTitle = 'افزودن';\n\n    if (this.data.addAll) {\n      this.actions.push({\n        text: this.deps.translateService.instant('general.listDataEntryAssignment.addAll'),\n        click: () => {\n          this.spinner = true;\n          const filters = this.simpleListComponent.getOdataFiltersEncoded();\n          const query = !this.data.items\n            ? `?$select=${this.data.identityFieldName}&$filter=${filters}`\n            : `?$filter=${filters}`;\n          this.deps.generalOdataService\n            .get(\n              query,\n              new HttpHeaders({\n                ...this.data.oDataHttpHeaders,\n                [HttpHeaderNames.ENTITY]: this.data.oDataEntity,\n              })\n            )\n            .pipe(finalize(() => (this.spinner = false)))\n            .subscribe(result => {\n              if (result.value.length > 0) {\n                this.deps.modalService\n                  .showConfirm({\n                    type: 'warning',\n                    icon: 'warning',\n                    description: this.deps.translateService.instant(\n                      'general.listDataEntryAssignment.addAllConfirm',\n                      { entity: this.data.gridName?.single || 'مورد', count: result.value.length }\n                    ),\n                  })\n                  .then(response => {\n                    if (response) this.activeModal.close(result.value);\n                  });\n              } else {\n                this.deps.toastService.show({\n                  type: 'warning',\n                  text: this.deps.translateService.instant('general.selectionEmptyMessage'),\n                });\n              }\n            });\n        },\n      });\n    }\n  }\n\n  selectHandler(selectedRows: any[]): void {\n    this.selectedRows = selectedRows;\n  }\n\n  saveHandler() {\n    if (this.selectedRows instanceof Array && this.selectedRows.length > 0) {\n      this.activeModal.close(this.selectedRows);\n    } else {\n      this.deps.toastService.show({\n        type: 'warning',\n        text: this.deps.translateService.instant('general.selectionEmptyMessage'),\n      });\n    }\n  }\n\n  beforeCloseCallback = (): Promise<boolean> => {\n    if (this.selectedRows instanceof Array && this.selectedRows.length > 0) {\n      return this.deps.modalService.showConfirm({\n        type: 'warning',\n        icon: 'warning',\n        acceptText: this.deps.translateService.instant('btns_text.yes'),\n        declineText: this.deps.translateService.instant('btns_text.no'),\n        description: this.deps.translateService.instant('general.cancelAreYouSure'),\n      });\n    } else {\n      return Promise.resolve(true);\n    }\n  };\n}\n","<modal-wrapper\n  [title]=\"modalTitle\"\n  [beforeCloseCallback]=\"beforeCloseCallback\"\n  (saveClickCallback)=\"saveHandler()\"\n  saveButtonText=\"انتخاب\"\n  [actions]=\"actions\"\n>\n  <div class=\"gsslm\">\n    <app-general-simple-list\n      #simpleListComponent\n      [fields]=\"data.fields\"\n      [oDataServer]=\"data.oDataServer\"\n      [oDataTable]=\"oDataTable\"\n      [oDataEntity]=\"data.oDataEntity\"\n      [oDataHttpHeaders]=\"oDataHttpHeaders\"\n      (onItemChecked)=\"selectHandler($event)\"\n    ></app-general-simple-list>\n  </div>\n  <ui-spinner\n    class=\"data-grid__edit-box-spinner\"\n    [hideText]=\"true\"\n    [show]=\"spinner\"\n    [size]=\"'tiny'\"\n  ></ui-spinner>\n</modal-wrapper>\n","import {\n  Component,\n  EventEmitter,\n  Input,\n  OnChanges,\n  OnInit,\n  Output,\n  ViewChild,\n} from '@angular/core';\nimport {\n  GeneralListDataEntryStateType,\n  generateInformationMessage,\n  isSaveResponse,\n  isSaveResult,\n  OdataHttpHeaders,\n} from '../../../models';\nimport { GeneralIconActionInterface } from '../../../models/general-action.interface';\nimport { GeneralFieldConfigInterface } from '../../../models/general-field-config.interface';\nimport { ModalSizeEnum } from '../../modal/modal-size-enum';\nimport { GeneralListManagementComponent } from '../general-list-management/general-list-management.component';\nimport { GeneralListDepsService } from '../general-simple-list/general-list-deps.service';\nimport { GeneralSelectListModalComponent } from '../modals/general-select-list-modal/general-select-list-modal.component';\nimport { GridColumnFilterInterface } from './../../../models/grid-column-filter.interface';\n\n@Component({\n  selector: 'app-general-list-assignment',\n  templateUrl: './general-list-assignment.component.html',\n  styleUrls: ['./general-list-assignment.component.scss'],\n})\nexport class GeneralListAssignmentComponent\n  extends GeneralListManagementComponent\n  implements OnInit, OnChanges\n{\n  @ViewChild('listManagement') listManagement: GeneralListManagementComponent;\n  @Input() bulkAssignment: boolean = false;\n  @Input() parent: any;\n  @Input() modalODataServer?: string;\n  @Input() modalODataTable?: string;\n  @Input() modalODataEntity?: string;\n  @Input() modalODataHttpHeaders: OdataHttpHeaders;\n  @Input() modalODataFilters?: GridColumnFilterInterface[];\n  @Input() modalFields?: GeneralFieldConfigInterface[];\n  @Input() modalArrayRefFieldName: string = 'id';\n\n  @Input() beforeAssignCallback: (parent: any) => Promise<any>;\n  @Input() beforeUnassignCallback: (parent: any) => Promise<any>;\n  @Input() assignCallback: (parent: any) => Promise<any>;\n  @Input() removeAssignedItemsCallback: (items: any[], parent?: any) => Promise<any>;\n  @Input() selectAssignedItemsCallback: (items: any[], parent?: any) => Promise<any>;\n  @Input() assignedAllowReorder: boolean;\n  @Input() assignedSaveRowIndexCallBack: (orderMap: {\n    [key: string]: any;\n    [key: number]: any;\n  }) => Promise<any>;\n  @Input() assignedReorderCondition: (item: any, item2: any) => boolean;\n\n  @Output() mainListChangeStateCallback: EventEmitter<GeneralListDataEntryStateType> =\n    new EventEmitter<GeneralListDataEntryStateType>();\n\n  constructor(deps: GeneralListDepsService) {\n    super(deps);\n  }\n\n  override ngOnInit(): void {\n    this.checkPermissions();\n    if (!this.hasViewAccess) return;\n\n    if (!this.modalODataServer) {\n      this.modalODataServer = this.oDataServer;\n    }\n    if (!this.modalODataTable) {\n      this.modalODataTable = this.oDataTable;\n    }\n    if (!this.modalODataEntity) {\n      this.modalODataEntity = this.oDataEntity;\n    }\n    if (!this.modalODataHttpHeaders) {\n      this.modalODataHttpHeaders = this.oDataHttpHeaders;\n    }\n    if (!this.modalFields) {\n      this.modalFields = this.fields;\n    }\n\n    this.headerCustomActions = [];\n    if (this.hasAddAccess)\n      this.headerCustomActions.push({\n        tooltip: this.deps.translateService.instant('general.listDataEntryAssignment.addButton'),\n        varient: 'fill',\n        color: 'primary',\n        icon: {\n          fararuIcon: {\n            name: 'add',\n          },\n        },\n        click: this.assignHandler,\n      });\n\n    if (this.hasDeleteAccess) {\n      this.headerCustomActions.push({\n        tooltip: this.deps.translateService.instant('general.listDataEntryAssignment.removeButton'),\n        icon: {\n          fararuIcon: {\n            name: 'delete',\n          },\n        },\n        click: this.headerUnassignHandler,\n      });\n\n      this.gridRowIconActions.map((rowAction: GeneralIconActionInterface) => {\n        if (rowAction.icon.name == 'delete') {\n          rowAction.callback = (event: any, args) => {\n            this.rowUnassignHandler(event.item);\n          };\n        }\n      });\n    }\n  }\n\n  assignHandler = async () => {\n    if (this.assignCallback) {\n      await this.assignCallback(this.parent);\n      this.reloadHandler();\n    } else {\n      let beforeResult = true;\n      if (this.beforeAssignCallback) beforeResult = await this.beforeAssignCallback(this.parent);\n      if (beforeResult)\n        this.deps.modalService\n          .openT(GeneralSelectListModalComponent, ModalSizeEnum.Large, {\n            modalTitle:\n              this.deps.translateService.instant('general.listDataEntryAssignment.addButton') +\n              ' ' +\n              this.gridName?.single,\n            fields: this.modalFields,\n            oDataServer: this.modalODataServer,\n            oDataEntity: this.modalODataEntity,\n            oDataHttpHeaders: this.modalODataHttpHeaders,\n            // oDataFilters: this.modalODataFilters,\n            addAll: this.bulkAssignment,\n            identityFieldName: this.identityFieldName,\n            gridName: this.gridName,\n            items: this.items,\n          })\n          .then(\n            selectedRows => {\n              if (selectedRows instanceof Array) {\n                this.saveSelectedRowsFromModalAsAssigned(selectedRows);\n              }\n            },\n            () => {}\n          );\n    }\n  };\n\n  rowUnassignHandler(data: any) {\n    this._unassign([data]);\n  }\n\n  headerUnassignHandler = async () => {\n    if (!this.selectedRows?.length) {\n      this.deps.toastService.show({\n        type: 'warning',\n        text: this.gridName\n          ? this.deps.translateService.instant(\n              'general.listDataEntryAssignment.unassignEmptyMessageWithName',\n              {\n                entity: this.gridName.plural,\n              }\n            )\n          : this.deps.translateService.instant(\n              'general.listDataEntryAssignment.unassignEmptyMessage'\n            ),\n      });\n      return;\n    }\n    this._unassign(this.selectedRows);\n  };\n\n  override reloadHandler(): void {\n    this.listManagement.reload = Math.random();\n    this.selectedRows = [];\n  }\n\n  assignedItemCheckedHandler(selectedRows: any[]) {\n    this.selectedRows = selectedRows;\n  }\n\n  private async saveSelectedRowsFromModalAsAssigned(list: any[]) {\n    if (this.selectAssignedItemsCallback) {\n      const result = await this.selectAssignedItemsCallback(list, this.parent);\n      if (result !== false) this.reloadHandler();\n      if (isSaveResult(result))\n        this.deps.toastService.show({\n          type: 'success',\n          text: generateInformationMessage(result),\n        });\n      if (isSaveResponse(result) && result.saved)\n        this.deps.toastService.show({\n          type: 'success',\n          text: result.message,\n        });\n    }\n  }\n\n  private async removeSelectedRowsFromAssigned(list: any[]) {\n    if (this.removeAssignedItemsCallback) {\n      const result = await this.removeAssignedItemsCallback(list, this.parent);\n      if (result !== false) this.reloadHandler();\n      if (isSaveResult(result))\n        this.deps.toastService.show({\n          type: 'success',\n          text: generateInformationMessage(result),\n        });\n      if (isSaveResponse(result) && result.saved)\n        this.deps.toastService.show({\n          type: 'success',\n          text: result.message,\n        });\n    }\n  }\n\n  private async _unassign(assignedSelectedRows: any[]) {\n    let beforeResult = true;\n    if (this.beforeUnassignCallback) beforeResult = await this.beforeUnassignCallback(this.parent);\n    if (beforeResult === true) {\n      let itemToStringValue = '';\n      if (this.gridName?.itemToString && assignedSelectedRows.length == 1) {\n        const itemToString = this.gridName.itemToString;\n        itemToStringValue = Array.isArray(itemToString)\n          ? itemToString\n              .map(\n                (item: string) =>\n                  `${this.fields.find(it => it.name == item).label}: ${\n                    assignedSelectedRows[0][item]\n                  }`\n              )\n              .join(' ')\n          : itemToString(assignedSelectedRows[0]);\n      }\n      const message = this.gridName\n        ? assignedSelectedRows.length == 1\n          ? this.deps.translateService.instant('general.removeConfirmWithEntityName', {\n              entity: this.gridName.single,\n            }) +\n            '<br/>' +\n            itemToStringValue\n          : this.deps.translateService.instant('general.removeConfirmWithEntityName', {\n              entity: this.gridName.plural,\n            }) +\n            ' ' +\n            this.deps.translateService.instant('general.removeCount', {\n              entity: this.gridName.single,\n              count: assignedSelectedRows.length,\n            })\n        : this.deps.translateService.instant('general.removeConfirm');\n\n      const result = await this.deps.modalService.showConfirm({\n        type: 'delete',\n        icon: 'delete',\n        description: message,\n      });\n      if (result) {\n        this.removeSelectedRowsFromAssigned(assignedSelectedRows);\n      }\n    }\n  }\n}\n","<ui-access-node [accessNodeId]=\"viewAccessNodeId\">\n  <ng-template>\n    <app-general-list-management\n      *ngIf=\"(oDataEntity && oDataServer) || items\"\n      #listManagement\n      [uniquePageName]=\"uniquePageName\"\n      [identityFieldName]=\"identityFieldName\"\n      [gridName]=\"gridName\"\n      [fields]=\"fields\"\n      [disabled]=\"!selectedRows\"\n      [oDataServer]=\"oDataServer\"\n      [oDataTable]=\"oDataTable\"\n      [oDataEntity]=\"oDataEntity\"\n      [oDataHttpHeaders]=\"oDataHttpHeaders\"\n      [oDataFilters]=\"oDataFilters\"\n      [items]=\"items\"\n      [headerCustomActions]=\"headerCustomActions\"\n      [gridRowIconActions]=\"gridRowIconActions\"\n      [reload]=\"reload\"\n      [isActive]=\"isActive\"\n      [allowReorder]=\"allowReorder\"\n      [reorderCondition]=\"reorderCondition\"\n      [saveRowIndexCallback]=\"saveRowIndexCallback\"\n      [reorderFieldName]=\"reorderFieldName\"\n      (onItemChecked)=\"assignedItemCheckedHandler($event)\"\n      [showDownloadBtn]=\"showDownloadBtn\"\n      [newAccessNodeId]=\"newAccessNodeId\"\n      [deleteAccessNodeId]=\"deleteAccessNodeId\"\n      [editAccessNodeId]=\"editAccessNodeId\"\n      [downloadAccessNodeId]=\"downloadAccessNodeId\"\n      [disabled]=\"disabled\"\n      [multipleRemoveCallback]=\"removeAssignedItemsCallback\"\n      [bulkRemove]=\"bulkRemove\"\n      [reloadCallback]=\"reloadCallback\"\n    ></app-general-list-management>\n  </ng-template>\n</ui-access-node>\n","import {\n  Component,\n  EventEmitter,\n  Input,\n  OnChanges,\n  OnInit,\n  Output,\n  SimpleChanges,\n} from '@angular/core';\nimport { GridColumnFilterConditionTypes } from '../../../enums/grid-column-filter-condition-types';\nimport { GeneralListDataEntryStateType, OdataHttpHeaders } from '../../../models';\nimport {\n  GeneralActionButtonInterface,\n  GeneralIconActionInterface,\n} from '../../../models/general-action.interface';\nimport { GeneralFieldConfigInterface } from '../../../models/general-field-config.interface';\nimport { GridNameInterface } from '../../../models/grid-name.interface';\nimport { GeneralListDataEntryComponent } from '../general-list-data-entry/general-list-data-entry.component';\nimport { GeneralListDepsService } from '../general-simple-list/general-list-deps.service';\nimport { GridColumnFilterInterface } from './../../../models/grid-column-filter.interface';\n\n@Component({\n  selector: 'app-general-list-data-entry-assignment',\n  templateUrl: './general-list-data-entry-assignment.component.html',\n  styleUrls: ['./general-list-data-entry-assignment.component.scss'],\n})\nexport class GeneralListDataEntryAssignmentComponent\n  extends GeneralListDataEntryComponent\n  implements OnInit, OnChanges\n{\n  @Input() assignedUniquePageName?: string;\n  @Input() assignedGridName?: GridNameInterface;\n  @Input() assignedFields?: GeneralFieldConfigInterface[];\n  @Input() assignedODataServer?: string;\n  @Input() assignedGridIsActive?: boolean = true;\n  @Input() assignedODataTable?: string;\n  @Input() assignedODataEntity?: string;\n  @Input() assignedODataHttpHeaders: OdataHttpHeaders;\n  @Input() modalODataServer?: string;\n  @Input() modalODataTable?: string;\n  @Input() modalODataEntity?: string;\n  @Input() modalODataHttpHeaders: OdataHttpHeaders;\n  @Input() modalODataFilterArray?: any[];\n  @Input() modalFields?: GeneralFieldConfigInterface[];\n  @Input() assignedODataFilters?: GridColumnFilterInterface[];\n  @Input() assignedItems?: any[];\n  @Input() assignedRefFieldName: string = undefined;\n  @Input() modalArrayRefFieldName: string = 'id';\n  @Input() assignedModalTitle?: string;\n  @Input() assignedRowIconActions?: GeneralIconActionInterface[] = [];\n  @Input() assignmentHasDelete: boolean = true;\n  @Input() assignmentHasAdd: boolean = true;\n  @Input() assignedReorderFieldName: string;\n  @Input() bulkAssignment: boolean = false;\n  @Input() bulkRemoveAssigned: boolean;\n  @Input() assignedIdentityFieldName: string = 'id';\n\n  @Input() beforeAssignCallback: (parent: any) => Promise<any>;\n  @Input() beforeUnassignCallback: (parent: any) => Promise<any>;\n  @Input() assignCallback: (parent: any) => Promise<any>;\n  @Input() removeAssignedItemsCallback: (items: any[], parent?: any) => Promise<any>;\n  @Input() selectAssignedItemsCallback: (items: any[], parent?: any) => Promise<any>;\n  @Input() assignedAllowReorder: boolean;\n  @Input() assignedSaveRowIndexCallBack: (orderMap: {\n    [key: string]: any;\n    [key: number]: any;\n  }) => Promise<any>;\n  @Input() assignedReorderCondition: (item: any, item2: any) => boolean;\n\n  @Output() mainListChangeStateCallback: EventEmitter<GeneralListDataEntryStateType> =\n    new EventEmitter<GeneralListDataEntryStateType>();\n\n  assignedCustomButtons: GeneralActionButtonInterface[] = [];\n  assignedSelectedRows: any[];\n\n  constructor(deps: GeneralListDepsService) {\n    super(deps);\n  }\n\n  override ngOnChanges(changes: SimpleChanges): void {\n    if (changes['assignedFields'] && this.assignedFields != undefined) {\n      this.assignedFields = [...this.assignedFields];\n    }\n  }\n\n  override ngOnInit(): void {\n    this.checkPermissions();\n    if (!this.hasViewAccess) return;\n  }\n\n  override selectHandler = (selectedRows: any) => {\n    this.selectedRows = selectedRows;\n    if (!selectedRows || selectedRows instanceof Array) return;\n\n    if (this.assignedRefFieldName != undefined)\n      this.assignedODataFilters = [\n        {\n          binding: this.assignedRefFieldName,\n          type: 'condition',\n          condition1: {\n            operator: GridColumnFilterConditionTypes.EQUAL,\n            value: selectedRows[this.identityFieldName],\n          },\n          and: false,\n          condition2: {},\n        },\n      ];\n\n    this.selectCallback && this.selectCallback(selectedRows);\n  };\n\n  override reloadHandler(): void {\n    if (this.assignedODataTable && this.assignedODataServer) {\n      const assignedODataTable = this.assignedODataTable;\n      this.assignedODataTable = null;\n      setTimeout(() => {\n        this.assignedODataTable = assignedODataTable;\n      }, 0);\n    }\n  }\n\n  changeStateHandler(state: GeneralListDataEntryStateType) {\n    this.state = state;\n    this.mainListChangeStateCallback.emit(state);\n  }\n\n  assignedGridLoadHandler() {\n    this.assignedSelectedRows = [];\n  }\n}\n","<ui-access-node [accessNodeId]=\"viewAccessNodeId\">\n  <ng-template>\n    <div class=\"general-list-data-entry-assignment\">\n      <ui-screen-vertical-separator>\n        <app-general-list-data-entry\n          class=\"general-list-data-entry-assignment__start\"\n          start\n          [title]=\"title\"\n          [uniquePageName]=\"uniquePageName\"\n          [identityFieldName]=\"identityFieldName\"\n          [printParams]=\"printParams\"\n          [gridName]=\"gridName\"\n          [fields]=\"fields\"\n          [oDataServer]=\"oDataServer\"\n          [config]=\"config\"\n          [oDataTable]=\"oDataTable\"\n          [oDataFilters]=\"oDataFilters\"\n          [oDataEntity]=\"oDataEntity\"\n          [oDataHttpHeaders]=\"oDataHttpHeaders\"\n          [topSlicePercent]=\"topSlicePercent\"\n          [fullscreenType]=\"fullscreenType\"\n          [items]=\"items\"\n          [isMultipleSelect]=\"isMultipleSelect\"\n          [headerCustomActions]=\"headerCustomActions\"\n          [gridCustomActions]=\"gridCustomActions\"\n          [gridRowMoreActions]=\"gridRowMoreActions\"\n          [gridRowIconActions]=\"gridRowIconActions\"\n          [gridCollapseRows]=\"gridCollapseRows\"\n          [gridCollapseLevel]=\"gridCollapseLevel\"\n          [removeApi]=\"saveApi\"\n          [selectCallback]=\"selectHandler\"\n          [afterRemoveCallback]=\"afterRemoveCallback\"\n          [removeCallback]=\"removeCallback\"\n          [beforeRemoveCallback]=\"beforeRemoveCallback\"\n          [addNewCallback]=\"addNewCallback\"\n          [addNewActions]=\"addNewActions\"\n          [editCallback]=\"editCallback\"\n          [multipleRemoveCallback]=\"multipleRemoveCallback\"\n          [bulkRemove]=\"bulkRemove\"\n          [beforeReloadCallback]=\"beforeReloadCallback\"\n          [reloadCallback]=\"reloadCallback\"\n          [reload]=\"reload\"\n          [saveApi]=\"saveApi\"\n          [getApi]=\"getApi\"\n          [beforeSaveCallback]=\"beforeSaveCallback\"\n          [saveCallback]=\"saveCallback\"\n          [afterSaveCallback]=\"afterSaveCallback\"\n          (changeStateCallback)=\"changeStateHandler($event)\"\n          [apiUrl]=\"apiUrl\"\n          [apiServer]=\"apiServer\"\n          [apiHeaders]=\"apiHeaders\"\n          [modalMode]=\"modalMode\"\n          [childItemsPath]=\"childItemsPath\"\n          [transformer]=\"transformer\"\n          [dataEntryFields]=\"dataEntryFields\"\n          [hideRemoveButton]=\"hideRemoveButton\"\n          [hideAddNewButton]=\"hideAddNewButton\"\n          [hideEditButton]=\"hideEditButton\"\n          [formHeader]=\"formHeader\"\n          [beforeEditCallback]=\"beforeEditCallback\"\n          [beforeAddCallback]=\"beforeAddCallback\"\n          [allowReorder]=\"allowReorder\"\n          [reorderCondition]=\"reorderCondition\"\n          [saveRowIndexCallback]=\"saveRowIndexCallback\"\n          [reorderFieldName]=\"reorderFieldName\"\n          [showDownloadBtn]=\"showDownloadBtn\"\n          [newAccessNodeId]=\"newAccessNodeId\"\n          [deleteAccessNodeId]=\"deleteAccessNodeId\"\n          [editAccessNodeId]=\"editAccessNodeId\"\n          [downloadAccessNodeId]=\"downloadAccessNodeId\"\n          [treeIdBinding]=\"treeIdBinding\"\n          [treeTitleBinding]=\"treeTitleBinding\"\n          [treeExpandedBinding]=\"treeExpandedBinding\"\n          [treeChildrenBinding]=\"treeChildrenBinding\"\n          [treeExpandDepth]=\"treeExpandDepth\"\n          [treeSelectedNode]=\"treeSelectedNode\"\n          [treeSideIconTemplate]=\"treeSideIconTemplate\"\n        >\n          <ng-content form select=\"[form]\"></ng-content>\n        </app-general-list-data-entry>\n        <app-general-list-assignment\n          class=\"general-list-data-entry-assignment__end\"\n          end\n          [allowReorder]=\"assignedAllowReorder\"\n          [identityFieldName]=\"assignedIdentityFieldName\"\n          [apiHeaders]=\"apiHeaders\"\n          [apiServer]=\"apiServer\"\n          [apiUrl]=\"apiUrl\"\n          [beforeAssignCallback]=\"beforeAssignCallback\"\n          [beforeUnassignCallback]=\"beforeUnassignCallback\"\n          [bulkAssignment]=\"bulkAssignment\"\n          [childItemsPath]=\"'items'\"\n          [deleteAccessNodeId]=\"deleteAccessNodeId\"\n          [disabled]=\"state != 'view'\"\n          [downloadAccessNodeId]=\"downloadAccessNodeId\"\n          [fields]=\"assignedFields\"\n          [gridName]=\"assignedGridName\"\n          [gridRowIconActions]=\"assignedRowIconActions\"\n          [headerCustomActions]=\"assignedCustomButtons\"\n          [isActive]=\"assignedGridIsActive\"\n          [items]=\"assignedItems\"\n          [modalFields]=\"modalFields\"\n          [modalODataEntity]=\"modalODataEntity\"\n          [modalODataHttpHeaders]=\"modalODataHttpHeaders\"\n          [modalODataServer]=\"modalODataServer\"\n          [modalODataTable]=\"modalODataTable\"\n          [newAccessNodeId]=\"newAccessNodeId\"\n          [oDataEntity]=\"selectedRows ? assignedODataEntity : null\"\n          [oDataFilters]=\"assignedODataFilters\"\n          [oDataHttpHeaders]=\"selectedRows ? assignedODataHttpHeaders : null\"\n          [oDataServer]=\"selectedRows ? assignedODataServer : null\"\n          [oDataTable]=\"selectedRows ? assignedODataTable : null\"\n          [parent]=\"selectedRows\"\n          [reorderCondition]=\"assignedReorderCondition\"\n          [reorderFieldName]=\"assignedReorderFieldName\"\n          [reload]=\"reload\"\n          [removeAssignedItemsCallback]=\"removeAssignedItemsCallback\"\n          [saveRowIndexCallback]=\"assignedSaveRowIndexCallBack\"\n          [selectAssignedItemsCallback]=\"selectAssignedItemsCallback\"\n          [showDownloadBtn]=\"showDownloadBtn\"\n          [title]=\"title\"\n          [uniquePageName]=\"assignedUniquePageName\"\n          (managementGridLoaded)=\"assignedGridLoadHandler()\"\n          (onItemChecked)=\"(onItemChecked)\"\n          [bulkRemove]=\"bulkRemoveAssigned\"\n          [multipleRemoveCallback]=\"removeAssignedItemsCallback\"\n        >\n        </app-general-list-assignment>\n\n        <!-- <app-general-list-management\n          class=\"general-list-data-entry-assignment__end\"\n          end\n          [disabled]=\"state != 'view'\"\n          [uniquePageName]=\"assignedUniquePageName\"\n          [gridName]=\"assignedGridName\"\n          [fields]=\"assignedFields\"\n          [disabled]=\"!selectedRows\"\n          [oDataServer]=\"selectedRows ? assignedODataServer : null\"\n          [oDataTable]=\"selectedRows ? assignedODataTable : null\"\n          [oDataEntity]=\"selectedRows ? assignedODataEntity : null\"\n          [oDataHttpHeaders]=\"selectedRows ? assignedODataHttpHeaders : null\"\n          [oDataFilters]=\"assignedODataFilters\"\n          [items]=\"assignedItems\"\n          [headerCustomActions]=\"assignedCustomButtons\"\n          [gridRowIconActions]=\"assignedRowIconActions\"\n          [reload]=\"reload\"\n          [isActive]=\"assignedGridIsActive\"\n          [allowReorder]=\"assignedAllowReorder\"\n          [reorderCondition]=\"assignedReorderCondition\"\n          [saveRowIndexCallback]=\"assignedSaveRowIndexCallBack\"\n          [reorderFieldName]=\"assignedReorderFieldName\"\n          (onItemChecked)=\"assignedItemCheckedHandler($event)\"\n          (managementGridLoaded)=\"assignedGridLoadHandler()\"\n          [showDownloadBtn]=\"showDownloadBtn\"\n          [newAccessNodeId]=\"newAccessNodeId\"\n          [deleteAccessNodeId]=\"deleteAccessNodeId\"\n          [editAccessNodeId]=\"editAccessNodeId\"\n          [downloadAccessNodeId]=\"downloadAccessNodeId\"\n        ></app-general-list-management> -->\n      </ui-screen-vertical-separator>\n      <span\n        class=\"general-list-data-entry-assignment__overlay\"\n        [class.general-list-data-entry-assignment__overlay--show]=\"disabled || loadingIsShow\"\n        ><ui-spinner [show]=\"loadingIsShow\"></ui-spinner\n      ></span>\n    </div>\n  </ng-template>\n</ui-access-node>\n","import {\n  Component,\n  ContentChild,\n  ElementRef,\n  Input,\n  OnChanges,\n  OnInit,\n  SimpleChanges,\n  TemplateRef,\n  ViewChild,\n} from '@angular/core';\nimport { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap';\nimport {\n  ClickSubscription,\n  GeneralActionButtonInterface,\n} from '../../../models/general-action.interface';\nimport { FararuToastService } from '../../toast';\nimport { ModalService } from '../../modal/modal.service';\nimport { TranslateService } from '@ngx-translate/core';\nimport {\n  concatMap,\n  exhaustMap,\n  mergeMap,\n  Observable,\n  of,\n  Subject,\n  Subscription,\n  switchMap,\n} from 'rxjs';\nimport { catchError } from 'rxjs/operators';\n\n@Component({\n  selector: 'app-general-standard-modal-form',\n  templateUrl: './general-standard-modal-form.component.html',\n  styleUrls: ['./general-standard-modal-form.component.scss'],\n})\nexport class GeneralStandardModalForm implements OnInit, OnChanges {\n  @Input() title?: string;\n  @Input() height?: string;\n  @Input() headerCustomActions?: GeneralActionButtonInterface[];\n  @Input() applyCallback?: () => Promise<any>;\n  @Input() cancelCallback?: () => Promise<boolean>;\n  @Input() reloadCallback?: () => Promise<any>;\n  @Input() confirmBeforeCancel: boolean = false;\n  @Input() topSlicePercent = 60;\n  @Input() startSlicePercent = 80;\n  @Input() bottomSheetExpanded = true;\n  @Input() bottomSheetTitle?: string;\n  @Input() applyButtonFor?: string;\n  @Input() reloadButtonFor?: string;\n  @Input() hideScreeanSeparatorArrowButtons?: boolean;\n  @Input() form: string;\n  @Input() applyBtnTitle: string = undefined;\n  @Input() showTopBottomDividers: boolean = true;\n\n  @ContentChild('header', { static: false })\n  header?: TemplateRef<any>;\n  @ContentChild('aside', { static: false })\n  aside?: TemplateRef<any>;\n  @ContentChild('footer', { static: false })\n  footer?: TemplateRef<any>;\n  @ContentChild('bottomSheet', { static: false })\n  bottomSheet?: TemplateRef<any>;\n\n  @ViewChild('bottomSheetElememt') bottomSheetElememt?: ElementRef;\n\n  bottomSheetMaxHeight?: string;\n  private bottomSheetIsBusy = false;\n  isProgressing = false;\n  clickMap = new Map<string, ClickSubscription>();\n  private subscriptions = new Subscription();\n  constructor(\n    private activeModal?: NgbActiveModal,\n    private modalSertvice?: ModalService,\n    protected translate?: TranslateService,\n    protected toastService?: FararuToastService\n  ) {}\n\n  ngOnInit(): void {\n    if (this.applyBtnTitle == undefined)\n      this.applyBtnTitle = this.translate.instant('general.standardModalForm.apply');\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (changes['headerCustomActions']) {\n      this.clickMap = new Map<string, ClickSubscription>();\n      this.headerCustomActions?.forEach(customAction => {\n        if (customAction?.actionId) {\n          this.clickMap.set(customAction?.actionId, {\n            subject: new Subject<any>(),\n            event: null,\n            selectedRow: null,\n          });\n          this.onClickResultHandler(customAction);\n        }\n      });\n    }\n  }\n\n  async applyHandler() {\n    if (this.applyCallback) {\n      this.activeModal.close(await this.applyCallback());\n    }\n  }\n\n  async reloadHandler() {\n    if (this.reloadCallback) {\n      this.isProgressing = true;\n      await this.reloadCallback();\n      this.isProgressing = false;\n    }\n  }\n\n  cencelHandler() {\n    if (this.cancelCallback)\n      this.cancelCallback()\n        .then(close => {\n          if (close) this.activeModal.dismiss();\n        })\n        .catch(error => this.toastService.show({ type: 'error', text: error }));\n    else {\n      if (this.confirmBeforeCancel) {\n        this.modalSertvice\n          .showConfirm({\n            type: 'warning',\n            description: this.translate.instant('general.standardModalForm.areYouSureForCancel'),\n            acceptText: this.translate.instant('btns_text.yes'),\n            declineText: this.translate.instant('btns_text.no'),\n          })\n          .then(response => {\n            if (response) this.activeModal.dismiss();\n          });\n      } else this.activeModal.dismiss();\n    }\n  }\n\n  bottomSheetExpandHandler() {\n    if (this.bottomSheetIsBusy) return;\n    this.bottomSheetIsBusy = true;\n    if (this.bottomSheetExpanded) {\n      this.bottomSheetMaxHeight = this.bottomSheetMaxHeight =\n        this.bottomSheetElememt.nativeElement.scrollHeight + 'px';\n      setTimeout(() => {\n        this.bottomSheetMaxHeight = '0';\n        this.bottomSheetIsBusy = false;\n      }, 0);\n    } else {\n      this.bottomSheetMaxHeight = this.bottomSheetElememt.nativeElement.scrollHeight + 'px';\n      setTimeout(() => {\n        this.bottomSheetMaxHeight = 'none';\n        this.bottomSheetIsBusy = false;\n      }, 300);\n    }\n    this.bottomSheetExpanded = !this.bottomSheetExpanded;\n  }\n\n  onClick(event: Event, action: GeneralActionButtonInterface): void {\n    if (!action?.actionId) {\n      action.click(event);\n    } else {\n      action.disabled = action.mapFunction === 'disabled';\n      try {\n        this.clickMap.get(action.actionId).event = event;\n        this.clickMap.get(action.actionId).subject.next(this.clickMap.get(action.actionId));\n      } catch (e) {\n        console.log('the header actions are not properly initialized.');\n      }\n    }\n  }\n  onClickResultHandler(action: GeneralActionButtonInterface): void {\n    switch (action?.mapFunction) {\n      case 'switch': {\n        this.subscriptions.add(\n          this.clickMap\n            .get(action.actionId)\n            .subject.pipe(\n              switchMap((data: ClickSubscription) =>\n                (action.click(data.event) as Observable<any>).pipe(\n                  catchError(error => {\n                    action.onFailure(error);\n                    return of(null);\n                  })\n                )\n              )\n            )\n            .subscribe({\n              next: (response: any) => {\n                if (response !== null) {\n                  action.onSuccess(response);\n                }\n              },\n            })\n        );\n        break;\n      }\n      case 'concat': {\n        this.subscriptions.add(\n          this.clickMap\n            .get(action.actionId)\n            .subject.pipe(\n              concatMap((data: ClickSubscription) =>\n                (action.click(data.event) as Observable<any>).pipe(\n                  catchError(error => {\n                    action.onFailure(error);\n                    return of(null);\n                  })\n                )\n              )\n            )\n            .subscribe({\n              next: (response: any) => {\n                if (response !== null) {\n                  action.onSuccess(response);\n                }\n              },\n            })\n        );\n        break;\n      }\n      case 'merge': {\n        this.subscriptions.add(\n          this.clickMap\n            .get(action.actionId)\n            .subject.pipe(\n              mergeMap((data: ClickSubscription) =>\n                (action.click(data.event) as Observable<any>).pipe(\n                  catchError(error => {\n                    action.onFailure(error);\n                    return of(null);\n                  })\n                )\n              )\n            )\n            .subscribe({\n              next: (response: any) => {\n                if (response !== null) {\n                  action.onSuccess(response);\n                }\n              },\n            })\n        );\n        break;\n      }\n      case 'exhaust': {\n        this.subscriptions.add(\n          this.clickMap\n            .get(action.actionId)\n            .subject.pipe(\n              exhaustMap((data: ClickSubscription) =>\n                (action.click(data.event) as Observable<any>).pipe(\n                  catchError(error => {\n                    action.onFailure(error);\n                    return of(null);\n                  })\n                )\n              )\n            )\n            .subscribe({\n              next: (response: any) => {\n                if (response !== null) {\n                  action.onSuccess(response);\n                }\n              },\n            })\n        );\n        break;\n      }\n      case 'disabled': {\n        this.subscriptions.add(\n          this.clickMap\n            .get(action.actionId)\n            .subject.pipe(\n              exhaustMap((data: ClickSubscription) =>\n                (action.click(data.event) as Observable<any>).pipe(\n                  catchError(error => {\n                    action.onFailure(error);\n                    action.disabled = false;\n                    return of(null);\n                  })\n                )\n              )\n            )\n            .subscribe({\n              next: (response: any) => {\n                if (response !== null) {\n                  action.onSuccess(response);\n                  action.disabled = false;\n                }\n              },\n            })\n        );\n        break;\n      }\n    }\n  }\n\n  ngOnDestroy(): void {\n    this.subscriptions.unsubscribe();\n  }\n\n  closeModalHandler = () => {\n    this.activeModal.dismiss();\n  };\n}\n","<section class=\"mdl-content\">\n  <header class=\"mdl-content__head\" [class.dividerTop]=\"!showTopBottomDividers\">\n    <h1 class=\"mdl-content__title\">\n      {{ title }}\n    </h1>\n    <span (click)=\"closeModalHandler()\" class=\"cursor-pointer\">\n      <ui-fararu-icon class=\"d-flex\" name=\"close\"></ui-fararu-icon\n    ></span>\n  </header>\n  <hr *ngIf=\"showTopBottomDividers\" />\n  <section class=\"gsmf\" [style.height]=\"height\">\n    <ng-container *ngIf=\"footer\">\n      <ui-screen-separator\n        class=\"gsmf__content\"\n        [topSlicePercent]=\"topSlicePercent\"\n        [hideArrowButtons]=\"hideScreeanSeparatorArrowButtons\"\n      >\n        <section top class=\"gsmf__form\">\n          <ng-container [ngTemplateOutlet]=\"container\"></ng-container>\n        </section>\n        <ng-container bottom [ngTemplateOutlet]=\"footer\"></ng-container>\n      </ui-screen-separator>\n    </ng-container>\n    <ng-container *ngIf=\"!footer\">\n      <section class=\"gsmf__content\">\n        <ng-container [ngTemplateOutlet]=\"container\"></ng-container>\n      </section>\n    </ng-container>\n    <ng-container *ngIf=\"bottomSheet\">\n      <footer class=\"gsmf-bottom-sheet\">\n        <button class=\"gsmf-bottom-sheet__button\" (click)=\"bottomSheetExpandHandler()\">\n          <ui-icon\n            class=\"gsmf-bottom-sheet__button-icon\"\n            [class.gsmf-bottom-sheet__button-icon--expanded]=\"bottomSheetExpanded\"\n            name=\"expand_more\"\n            type=\"fill\"\n            group=\"navigation\"\n          ></ui-icon>\n        </button>\n        <ng-container *ngIf=\"bottomSheetTitle\">\n          <h6 class=\"gsmf-bottom-sheet__title\">{{ bottomSheetTitle }}</h6>\n        </ng-container>\n        <div\n          class=\"gsmf-bottom-sheet__content\"\n          #bottomSheetElememt\n          [class.gsmf-bottom-sheet__content--expanded]=\"bottomSheetExpanded\"\n          [style.max-height]=\"bottomSheetMaxHeight\"\n        >\n          <ng-container [ngTemplateOutlet]=\"bottomSheet\"></ng-container>\n        </div>\n      </footer>\n    </ng-container>\n    <hr *ngIf=\"showTopBottomDividers\" />\n\n    <div class=\"gsmf__buttons\" [class.dividerBottom]=\"!showTopBottomDividers\">\n      <div class=\"gsmf__header\">\n        <ui-button\n          *ngIf=\"reloadHandler\"\n          [buttonType]=\"'button'\"\n          [varient]=\"'fill'\"\n          [color]=\"'secondary'\"\n          [for]=\"reloadButtonFor\"\n          (clickCallback)=\"reloadHandler()\"\n          ><ui-icon\n            style=\"display: inline-flex\"\n            [group]=\"'navigation'\"\n            [name]=\"'refresh'\"\n            [type]=\"'outline'\"\n          ></ui-icon\n        ></ui-button>\n        <ng-container *ngIf=\"headerCustomActions?.length > 0\">\n          <ng-container *ngFor=\"let action of headerCustomActions\">\n            <ng-container *ngIf=\"action.items?.length > 0; else buttonTemplate\">\n              <ui-pull-down\n                [toggler]=\"moreToggle\"\n                [content]=\"moreContent\"\n                [closeByContentClick]=\"true\"\n              >\n                <ng-template #moreToggle>\n                  <ui-button\n                    *ngIf=\"action?.nodeAccessId | accessNode\"\n                    [varient]=\"action.varient\"\n                    [color]=\"action.color\"\n                    [disabled]=\"action.disabled\"\n                    >{{ action.text }}\n                    <ui-icon\n                      style=\"display: inline-flex\"\n                      group=\"navigation\"\n                      name=\"expand_more\"\n                    ></ui-icon>\n                  </ui-button>\n                </ng-template>\n                <ng-template #moreContent>\n                  <div class=\"general-list-management__more-menu\">\n                    <a\n                      class=\"general-list-management__more-button\"\n                      *ngFor=\"let item of action.items\"\n                      (click)=\"onClick($event, action)\"\n                      >{{ item.text }}</a\n                    >\n                  </div>\n                </ng-template>\n              </ui-pull-down>\n            </ng-container>\n            <ng-template #buttonTemplate>\n              <ui-button\n                *ngIf=\"action?.nodeAccessId | accessNode\"\n                [varient]=\"action.varient\"\n                [color]=\"action.color\"\n                [for]=\"action.for\"\n                [tagName]=\"action.for ? 'label' : 'button'\"\n                [disabled]=\"!!action.disabled\"\n                (clickCallback)=\"onClick($event, action)\"\n                [disabled]=\"action.disabled\"\n                >{{ action.text }}</ui-button\n              >\n            </ng-template>\n          </ng-container>\n        </ng-container>\n        <ng-container [ngTemplateOutlet]=\"header\"></ng-container>\n        <ng-content select=\"[header]\"></ng-content>\n      </div>\n\n      <div>\n        <ui-button\n          [form]=\"form\"\n          [varient]=\"'fill'\"\n          [color]=\"'primary'\"\n          [tagName]=\"'button'\"\n          [for]=\"applyButtonFor\"\n          (clickCallback)=\"applyHandler()\"\n          >{{ applyBtnTitle }}</ui-button\n        >\n\n        <ui-button\n          [buttonType]=\"'button'\"\n          [color]=\"'secondary'\"\n          varient=\"outline\"\n          (clickCallback)=\"cencelHandler()\"\n          >{{ 'general.standardModalForm.cancel' | translate }}</ui-button\n        >\n      </div>\n    </div>\n  </section>\n  <ng-template #container>\n    <ng-container *ngIf=\"aside\">\n      <ui-screen-vertical-separator\n        [startSlicePercent]=\"startSlicePercent\"\n        [hideArrowButtons]=\"hideScreeanSeparatorArrowButtons\"\n      >\n        <ng-container start [ngTemplateOutlet]=\"content\"></ng-container>\n        <ng-container end [ngTemplateOutlet]=\"aside\"></ng-container>\n      </ui-screen-vertical-separator>\n    </ng-container>\n    <ng-container *ngIf=\"!aside\" [ngTemplateOutlet]=\"content\"></ng-container>\n  </ng-template>\n  <ng-template #content>\n    <ng-content></ng-content>\n  </ng-template>\n  <ui-spinner [show]=\"isProgressing\" [showBackground]=\"true\"></ui-spinner>\n</section>\n","import {\n  Directive,\n  ElementRef,\n  EventEmitter,\n  HostListener,\n  Output,\n} from '@angular/core';\n\n@Directive({\n  selector: '[appClickOutside]',\n})\nexport class ClickOutsideDirective {\n  @Output() clickOutside = new EventEmitter<void>();\n\n  constructor(private elementRef: ElementRef) {}\n\n  @HostListener('document:click', ['$event.target'])\n  public onClick(target: any) {\n    const clickedInside = this.elementRef.nativeElement.contains(target);\n    if (!clickedInside) {\n      this.clickOutside.emit();\n    }\n  }\n}\n","import { Directive, ElementRef, HostListener, OnInit } from '@angular/core';\n\n@Directive({\n  selector: '[appCheckHasScroll]',\n  exportAs: 'appCheckHasScroll',\n})\nexport class CheckHasScrollDirective implements OnInit {\n  constructor(private elementRef: ElementRef) {}\n\n  ngOnInit(): void {\n    this.adjust();\n    new MutationObserver(() => {\n      this.adjust();\n    }).observe(this.elementRef.nativeElement, {\n      childList: true,\n      subtree: true,\n    });\n  }\n\n  @HostListener('window:resize')\n  private resize() {\n    this.adjust();\n  }\n\n  adjust() {\n    const element = this.elementRef.nativeElement as HTMLElement;\n    if (element.offsetHeight < element.scrollHeight) {\n      element.setAttribute('has-scroll', 'true');\n    } else {\n      element.removeAttribute('has-scroll');\n    }\n  }\n}\n","import {\n  Directive,\n  Output,\n  EventEmitter,\n  HostBinding,\n  HostListener,\n} from '@angular/core';\n\n@Directive({\n  selector: '[uploadDropzone]',\n})\nexport class UploadDropzoneDirective {\n  @HostBinding('class.fileover') fileOver: boolean;\n  @Output() fileDropped = new EventEmitter<FileList>();\n\n  // Dragover listener\n  @HostListener('dragover', ['$event']) onDragOver(evt: DragEvent) {\n    evt.preventDefault();\n    evt.stopPropagation();\n    this.fileOver = true;\n  }\n\n  // Dragleave listener\n  @HostListener('dragleave', ['$event']) public onDragLeave(evt: DragEvent) {\n    evt.preventDefault();\n    evt.stopPropagation();\n    this.fileOver = false;\n  }\n\n  // Drop listener\n  @HostListener('drop', ['$event']) public ondrop(evt: DragEvent) {\n    evt.preventDefault();\n    evt.stopPropagation();\n    this.fileOver = false;\n    const files = evt.dataTransfer.files;\n    if (files.length > 0) {\n      this.fileDropped.emit(files);\n    }\n  }\n}\n","import {AbstractControl, NG_VALIDATORS, ValidationErrors, Validator} from \"@angular/forms\";\nimport {Directive, Input} from \"@angular/core\";\nimport {CalendarType, checkShamsi} from \"../utils\";\n\n@Directive({\n  selector: '[dateValidation]',\n  providers: [\n    {\n      provide: NG_VALIDATORS,\n      useExisting: DateValidatorDirective,\n      multi: true,\n    },\n  ],\n})\nexport class DateValidatorDirective implements Validator {\n  @Input() isDateRequired: boolean = false;\n  @Input() dateMask: string = '____/__/__';\n  @Input() dateType: CalendarType = 'jalali';\n  validate(control: AbstractControl): ValidationErrors | null {\n    const { value } = control;\n    if (!value || value == this.dateMask) {\n      return this.isDateRequired ? { required: true } : null;\n    }\n   if (this.dateType === 'jalali') {\n     return this.persianValidation(value);\n   } else {\n     return null;\n   }\n  }\n\n  private persianValidation(value: string): {invalid : boolean} | null {\n    const year = parseInt(value.substring(0, 4));\n    const month = parseInt(value.substring(5, 7));\n    const day = parseInt(value.substring(8, 10));\n    if (\n      !year ||\n      !month ||\n      !day ||\n      year < 1300 ||\n      year > 1450 ||\n      month < 1 ||\n      month > 12 ||\n      day < 1 ||\n      day > 31\n    ) {\n      return { invalid: true };\n    }\n\n    return checkShamsi(value) ? null : { invalid: true };\n  }\n}\n","import {Directive, HostListener, Input} from \"@angular/core\";\nimport {NgControl} from \"@angular/forms\";\n\n@Directive({\n  selector: '[escapeMask]'\n})\nexport class EscapeMaskDirective {\n  @Input('escapeMask') escapeMask: string;\n\n  constructor(private ngControl: NgControl) {}\n\n  @HostListener('input', ['$event'])\n  onInput(event: any) {\n    if(event.target.value === this.escapeMask) {\n      this.ngControl?.control?.setValue(null)\n    }\n  }\n}\n","import { Directive, HostListener, Input } from '@angular/core';\n\n@Directive({\n  selector: '[usePattern]',\n  exportAs: 'usePattern',\n})\nexport class ApplyPatternDirective {\n  @Input('applyPattern') pattern: RegExp = /^(\\d)+$/;\n\n  @HostListener('keypress', ['$event'])\n  onKeyPress(event: any) {\n    return RegExp(this.pattern).test(event.key);\n  }\n\n  @HostListener('paste', ['$event'])\n  blockPaste(event: ClipboardEvent) {\n    if (event.clipboardData?.getData('text/plain')) {\n      return RegExp(this.pattern).test(event.clipboardData?.getData('text/plain'));\n    } else {\n      return false;\n    }\n  }\n\n  @HostListener('input', ['$event'])\n  onInput(event: any) {\n    if (!RegExp(this.pattern).test(event.target.value)) {\n      event.preventDefault();\n    }\n  }\n}\n","import { NgModule } from '@angular/core';\nimport { ShortcutDirective } from '../directives';\n\n@NgModule({\n  exports: [ShortcutDirective],\n  declarations: [ShortcutDirective],\n})\nexport class ShortcutModule {}\n","import { HttpEvent, HttpHandler, HttpInterceptor, HttpRequest } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { ApiUrlFlags } from '../constants/api-url-flags';\nimport { AppConfigService } from '../services/app-config.service';\n\n@Injectable()\nexport class ApiInterceptor implements HttpInterceptor {\n  constructor(private appConfigService: AppConfigService) {}\n  intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\n    // Get the request url\n    let requestUrl = req.url;\n\n    if (requestUrl.indexOf('http://') != -1 || requestUrl.indexOf('https://') != -1)\n      return next.handle(req);\n    // if the request URL have the string prefix,\n    // then make the replace by the correct url\n\n    const isInnerHttpPath = !![\n      '/config/',\n      '/i18n/',\n      '/assets/fararu-icons',\n      '/assets/media/',\n      '/assets/logo.svg',\n    ].find(x => requestUrl.indexOf(x) != -1);\n\n    if (!isInnerHttpPath) {\n      if (requestUrl.indexOf('@tracer-api') !== -1) {\n        requestUrl = requestUrl.replace(\n          '@tracer-api',\n          this.appConfigService.config.tracerApi.baseUrl\n        );\n      } else if (requestUrl.indexOf(ApiUrlFlags.NGT) !== -1) {\n        requestUrl = requestUrl\n          .replace(ApiUrlFlags.NGT, this.appConfigService.config.ngtApi.baseUrl)\n          .replace(ApiUrlFlags.NGT_VERSION, 'v2')\n          .replace(ApiUrlFlags.NGT_PROJECT, 'ngt');\n      } else {\n        requestUrl =\n          this.appConfigService.config.api.baseUrl +\n          (requestUrl.startsWith('/') ? requestUrl : '/' + requestUrl);\n      }\n    }\n    // clone the http request\n    req = req.clone({\n      url: requestUrl,\n    });\n    // move to next HttpClient request life cycle\n    return next.handle(req);\n  }\n}\n","import {\n  HttpErrorResponse,\n  HttpEvent,\n  HttpHandler,\n  HttpInterceptor,\n  HttpRequest,\n} from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { NGXLogger } from 'ngx-logger';\nimport { Observable, throwError } from 'rxjs';\nimport { catchError } from 'rxjs/operators';\nimport { HttpErrorInterface } from '../models/http-error.interface';\nimport { AuthSandbox } from '../store';\nimport { FararuToastService } from '../design-systems/toast';\n\n@Injectable()\nexport class ErrorInterceptor implements HttpInterceptor {\n  constructor(\n    private toastService: FararuToastService,\n    private authSandbox: AuthSandbox,\n    private logger: NGXLogger\n  ) {}\n\n  intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\n    return next.handle(req).pipe(\n      catchError((response: HttpErrorResponse) => {\n        const log = this.stringify(req, response);\n        this.logger.error('Http Error Message:' + JSON.stringify(log));\n        const output: HttpErrorInterface = { ...response };\n\n        if (response.error) {\n          let errorsArray = response.error.errors;\n\n          if (errorsArray) {\n            errorsArray = errorsArray.map((errorItem: any) => {\n              return errorItem.errorMessage;\n            });\n            errorsArray = errorsArray.join(' - ');\n\n            output.error = {\n              message: errorsArray,\n              data: response.error.modelState ? { ...response.error.modelState } : null,\n            };\n          } else {\n            output.error = {\n              message: response.error.message,\n              data: response.error.modelState ? { ...response.error.modelState } : null,\n            };\n          }\n        }\n        if (response instanceof HttpErrorResponse) {\n          if (response.error instanceof ErrorEvent) {\n          } else {\n            switch (response.status) {\n              case 400: // bad request\n                this.showErrorMessage(\n                  output?.error?.message || 'درخواست ارسال شده معتبر نمی باشد.'\n                );\n                break;\n\n              case 401: // unauthorize\n                this.authSandbox.logout();\n                break;\n\n              case 403: // forbidden\n                this.showErrorMessage('مجوز دسترسی به این برای شما وجود ندارد.');\n                break;\n\n              case 404: // not found\n                this.showErrorMessage(\n                  'خطا در برقراری ارتباط به دلیل عدم وجود درخواست رخ داده است.'\n                );\n                break;\n\n              case 500: // server side error\n                this.showErrorMessage('خطای پیش بینی نشده از سمت سرور رخ داده است.');\n                break;\n\n              case 0:\n                this.showErrorMessage('خطا در برقراری ارتباط رخ داده است.');\n                break;\n            }\n          }\n        } else {\n          console.error('some thing else happened');\n        }\n\n        return throwError(output);\n      })\n    );\n  }\n\n  stringify(req: HttpRequest<any>, response: HttpErrorResponse) {\n    const strBody = JSON.stringify(req.body);\n\n    const responseBody = JSON.stringify(response.error);\n\n    return {\n      request: {\n        method: req.method,\n        url: req.url,\n        headers: req.headers?.keys().map(key => key + ':' + req.headers.getAll(key)),\n        body: strBody?.length > 50000 ? 'Body is too large! ...' : req.body,\n      },\n      response: {\n        headers: response.headers?.keys().map(key => key + ':' + response.headers.getAll(key)),\n        error: responseBody?.length > 50000 ? 'Error is too large! ...' : response.error,\n        message: response.message,\n        status: response.status,\n        statusText: response.statusText,\n      },\n    };\n  }\n\n  private showErrorMessage(message: string): void {\n    this.toastService.show({ type: 'error', text: message, closeByUser: true });\n  }\n}\n","import {\n  HttpEvent,\n  HttpHandler,\n  HttpHeaders,\n  HttpInterceptor,\n  HttpRequest,\n} from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { ApiUrlFlags } from '../constants/api-url-flags';\nimport { SessionNames } from '../constants/session-names';\nimport { HttpHeaderNames } from '../constants/http-header-names';\n\n@Injectable()\nexport class TokenInterceptor implements HttpInterceptor {\n  constructor() {}\n\n  intercept(\n    req: HttpRequest<any>,\n    next: HttpHandler\n  ): Observable<HttpEvent<any>> {\n    let headers: HttpHeaders;\n\n    if (req.headers.has('Authorization')) return next.handle(req);\n    if (req.url.indexOf(ApiUrlFlags.NGT) !== -1) {\n      const token =\n        'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6IjEiLCJ1c2VybmFtZSI6InZhcmFuZWdhciIsImZ1bGxuYW1lIjoi2YjYsdin2Ybar9ixIiwibmJmIjoxNzMwNjE2ODMyLCJleHAiOjE3MzMyMDg4MzIsImlhdCI6MTczMDYxNjgzMiwiaXNzIjoiaHR0cHM6Ly9mYXJhcnUudmFyYW5lZ2FyLmNvbSIsImF1ZCI6ImFwcFVzZXIifQ.kIL5nGXD-exuh-WpYntV-tjijZL7OFdJtIyGTwJPI5A';\n      headers = req.headers\n        .set('Authorization', `Bearer ${token}`)\n        .set('OwnerKey', '79A0D598-0BD2-45B1-BAAA-0A9CF9EFF240')\n        .set('DataOwnerKey', '553EFDF0-7C00-4705-9557-E3EE69D5B3B9')\n        .set('DataOwnerCenterKey', '25ABC9F8-A6E4-4929-97BB-DDBB2A2CEC40');\n    } else {\n      headers = req.headers\n        .set(\n          'Authorization',\n          `Bearer ${sessionStorage.getItem(SessionNames.USER)}`\n        )\n        .set('AccYear', sessionStorage.getItem(SessionNames.ACC_YEAR) || '')\n        .set('CenterId', sessionStorage.getItem(SessionNames.CENTER) || '')\n        .set('Language', localStorage.getItem(SessionNames.LANGUAGE) || 'fa')\n        .set(\n          HttpHeaderNames.ACCESS_NODE_ID,\n          sessionStorage.getItem(SessionNames.CURRENT_ROUTE_ACCESS_NODE_ID) ||\n            ''\n        );\n    }\n\n    const newReq = req.clone({\n      headers: headers,\n    });\n    return next.handle(newReq);\n  }\n}\n","import { HTTP_INTERCEPTORS } from '@angular/common/http';\nimport { ApiInterceptor } from './api-interceptor';\nimport { ErrorInterceptor } from './error-interceptor';\nimport { TokenInterceptor } from './token-interceptor';\n\nexport const interceptorProviders = [\n  {\n    provide: HTTP_INTERCEPTORS,\n    useClass: TokenInterceptor,\n    multi: true,\n  },\n  {\n    provide: HTTP_INTERCEPTORS,\n    useClass: ApiInterceptor,\n    multi: true,\n  },\n  {\n    provide: HTTP_INTERCEPTORS,\n    useClass: ErrorInterceptor,\n    multi: true,\n  },\n];\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport jwtDecode from 'jwt-decode';\nimport { NgxIndexedDBService } from 'ngx-indexed-db';\nimport {\n  INGXLoggerConfig,\n  INGXLoggerMetadata,\n  NGXLoggerWriterService,\n} from 'ngx-logger';\nimport { SessionNames } from '../constants';\nimport { AppConfigService } from './app-config.service';\n\n@Injectable()\nexport class LogWriterService extends NGXLoggerWriterService {\n  constructor(\n    private dbService: NgxIndexedDBService,\n    private httpClient: HttpClient,\n    private appConfigService: AppConfigService\n  ) {\n    super('browser');\n  }\n  override writeMessage(\n    metadata: INGXLoggerMetadata,\n    config: INGXLoggerConfig\n  ): void {\n    if (this.appConfigService.config?.logIsEnabled === false) return;\n    let username = '';\n    let userId = 0;\n    try {\n      const decoded: any = jwtDecode(sessionStorage.getItem(SessionNames.USER));\n      username = decoded['fullname'];\n      userId = decoded['id'];\n    } catch (error) {}\n    this.dbService\n      .add('log', {\n        message: metadata.message,\n        columnNumber: metadata.columnNumber,\n        fileName: metadata.fileName,\n        level: metadata.level,\n        lineNumber: metadata.lineNumber,\n        timestamp: new Date().toLocaleString(),\n        unixtime: new Date().getTime(),\n        is_sent: 0,\n        username: username,\n        userId: userId,\n        centerId: sessionStorage.getItem(SessionNames.CENTER),\n        accYear: sessionStorage.getItem(SessionNames.ACC_YEAR),\n      })\n      .subscribe();\n  }\n}\n","import { ErrorHandler, Injectable } from '@angular/core';\nimport { NGXLogger } from 'ngx-logger';\n\n@Injectable()\nexport class GlobalErrorHandler implements ErrorHandler {\n  lastError: any;\n  constructor(private logger: NGXLogger) {}\n  handleError(error: any): void {\n    // Your error handling logic here\n    if (error != this.lastError) {\n      this.logger.error(\"Unhandled Error: \" + error);\n      this.lastError = error;\n      \n    }\n    throw error\n    // You can log the error, send it to a remote server, or perform any other action\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport { AppState } from '../store/app-state.interface';\nimport { historyActions } from '../store/actions/history.actions';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class StartupService {\n  constructor(private store: Store<AppState>) {}\n  start() {\n    this.store.dispatch(historyActions.loadHistory());\n  }\n}\n","import { CommonModule } from '@angular/common';\nimport { HttpClientModule } from '@angular/common/http';\nimport { APP_INITIALIZER, ErrorHandler, NgModule } from '@angular/core';\nimport { BrowserModule } from '@angular/platform-browser';\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\nimport { RouteReuseStrategy } from '@angular/router';\nimport { interceptorProviders } from '../http-interceptors';\nimport { AppConfigService } from '../services/app-config.service';\nimport { RouteCachingService } from '../services/route-caching.service';\nimport { CacheRouteReuseStrategy } from '../utils/cache-route-reuse-strategy';\n\nimport { DBConfig, NgxIndexedDBModule } from 'ngx-indexed-db';\nimport {\n  LoggerModule,\n  NgxLoggerLevel,\n  TOKEN_LOGGER_WRITER_SERVICE,\n} from 'ngx-logger';\nimport { LogWriterService } from '../services/log-writer-service';\nimport { GlobalErrorHandler } from './global-error-handler';\nimport { StartupService } from '../services/startup.service';\n\nconst dbConfig: DBConfig = {\n  name: 'NGX-LOGGER',\n  version: 1,\n  objectStoresMeta: [\n    {\n      store: 'log',\n      storeConfig: { keyPath: 'id', autoIncrement: true },\n      storeSchema: [\n        { name: 'username', keypath: 'username', options: { unique: false } },\n        { name: 'userId', keypath: 'userId', options: { unique: false } },\n        { name: 'centerId', keypath: 'centerId', options: { unique: false } },\n        { name: 'accYear', keypath: 'accYear', options: { unique: false } },\n        { name: 'message', keypath: 'message', options: { unique: false } },\n        { name: 'level', keypath: 'level', options: { unique: false } },\n        { name: 'timestamp', keypath: 'timestamp', options: { unique: false } },\n        { name: 'unixtime', keypath: 'unixtime', options: { unique: false } },\n        { name: 'fileName', keypath: 'fileName', options: { unique: false } },\n        {\n          name: 'lineNumber',\n          keypath: 'lineNumber',\n          options: { unique: false },\n        },\n        {\n          name: 'columnNumber',\n          keypath: 'columnNumber',\n          options: { unique: false },\n        },\n        { name: 'is_sent', keypath: 'is_sent', options: { unique: false } },\n      ],\n    },\n  ],\n};\n\n// export const DEFAULT_HTTP_CONFIG: HttpConfig = {\n//   Url: '',\n//   Headers: {\n//     Accept: 'application/json',\n//     'Content-Type': 'application/json',\n//     DataType: 'application/json',\n//   },\n// };\n\n@NgModule({\n  declarations: [],\n  imports: [\n    BrowserModule,\n    BrowserAnimationsModule,\n    CommonModule,\n    HttpClientModule,\n    LoggerModule.forRoot(\n      {\n        level: NgxLoggerLevel.DEBUG,\n        serverLogLevel: NgxLoggerLevel.OFF,\n        enableSourceMaps: true,\n      },\n      {\n        writerProvider: {\n          provide: TOKEN_LOGGER_WRITER_SERVICE,\n          useClass: LogWriterService,\n        },\n      }\n    ),\n    NgxIndexedDBModule.forRoot(dbConfig),\n    //FararuToastModule.forRoot(),\n  ],\n  exports: [],\n  providers: [\n    {\n      provide: APP_INITIALIZER,\n      useFactory: (appConfigService: AppConfigService) => {\n        return () => appConfigService.load();\n      },\n      deps: [AppConfigService],\n      multi: true,\n    },\n    {\n      provide: APP_INITIALIZER,\n      useFactory: (appConfigService: StartupService) => {\n        return () => appConfigService.start();\n      },\n      deps: [StartupService],\n      multi: true,\n    },\n    {\n      provide: RouteReuseStrategy,\n      useClass: CacheRouteReuseStrategy,\n      deps: [RouteCachingService],\n    },\n    // { provide: HTTP_CONFIG, useValue: DEFAULT_HTTP_CONFIG },\n    { provide: ErrorHandler, useClass: GlobalErrorHandler },\n    interceptorProviders,\n  ],\n})\nexport class FararuCoreModule {}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport {\n  ClickOutsideDirective,\n  CheckHasScrollDirective,\n  DateValidatorDirective,\n  EscapeMaskDirective,\n  ApplyPatternDirective,\n} from '../directives';\nimport { AngularSvgIconModule } from 'angular-svg-icon';\n\nconst EXPORTS = [\n  CommonModule,\n  FormsModule,\n  ReactiveFormsModule,\n  ClickOutsideDirective,\n  CheckHasScrollDirective,\n  AngularSvgIconModule,\n  DateValidatorDirective,\n  EscapeMaskDirective,\n  ApplyPatternDirective,\n];\n\n@NgModule({\n  exports: EXPORTS,\n  declarations: [\n    ClickOutsideDirective,\n    CheckHasScrollDirective,\n    DateValidatorDirective,\n    EscapeMaskDirective,\n    ApplyPatternDirective,\n  ],\n})\nexport class FararuSharedModule {}\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\n\n@Component({\n  selector: 'app-file-picker',\n  templateUrl: './file-picker.component.html',\n  styleUrls: ['./file-picker.component.css'],\n})\nexport class FilePickerComponent implements OnInit {\n  @Input() id: any;\n  @Input() accept: any;\n  @Output() onChange = new EventEmitter();\n  constructor() {}\n\n  ngOnInit(): void {}\n  onChangeHandler($event: Event) {\n    const input = $event.target as HTMLInputElement;\n    this.onChange.emit(input.files[0]);\n  }\n\n  btnClick(input: HTMLInputElement) {\n    input.click();\n  }\n}\n","<input #input type=\"file\" [id]=\"id\" [accept]=\"accept\" (change)=\"onChangeHandler($event)\" />\n<ui-button\n  title=\"choose file\"\n  [varient]=\"'fill'\"\n  [color]=\"'primary'\"\n  [size]=\"'normal'\"\n  (clickCallback)=\"btnClick(input)\"\n  >Choose file</ui-button\n>\n","import { Component, Input, OnInit } from '@angular/core';\n\n@Component({\n  selector: 'ui-form-group',\n  templateUrl: './form-group.component.html',\n  styleUrls: ['./form-group.component.scss'],\n})\nexport class FormGroupComponent implements OnInit {\n  @Input() for: string;\n  @Input() label: string;\n  @Input() labelColNumber: number = 4;\n  @Input() value: string;\n  @Input() secondColWidth: string;\n  @Input() alignCenter: boolean;\n  @Input() isVertical: boolean;\n  @Input() contentMaxWidth?: string | null;\n  constructor() {}\n\n  ngOnInit(): void {}\n}\n","<ng-template #content>\n  <ng-content></ng-content>\n  <div\n    class=\"form-group__secondCol\"\n    *ngIf=\"!!secondColWidth\"\n    [style.flex-basis]=\"secondColWidth || '50%'\"\n  >\n    <ng-content select=\"[secondCol]\"></ng-content>\n  </div>\n</ng-template>\n\n<div\n  class=\"form-group row\"\n  [class.align-items-center]=\"alignCenter\"\n  *ngIf=\"!isVertical; else verticalTemplate\"\n>\n  <div class=\"col-sm-{{ labelColNumber }}\" style=\"padding-inline-end: 0\">\n    <label\n      class=\"form-group__label form-group__label--is-horizontal\"\n      [for]=\"for\"\n      >{{ label }}</label\n    >\n  </div>\n  <div class=\"col-sm-{{ (12 - labelColNumber).toString() }}\">\n    <div\n      class=\"form-group__content\"\n      [class.d-flex]=\"!!secondColWidth\"\n      [style.max-width]=\"contentMaxWidth\"\n    >\n      <strong\n        *ngIf=\"value\"\n        class=\"form-group__value form-group__value--is-horizontal\"\n        >{{ value }}</strong\n      >\n      <ng-container [ngTemplateOutlet]=\"content\"></ng-container>\n    </div>\n  </div>\n</div>\n<ng-template #verticalTemplate>\n  <div class=\"form-group\">\n    <label class=\"form-group__label\" [for]=\"for\">{{ label }}</label>\n    <div class=\"form-group__content\" [class.d-flex]=\"!!secondColWidth\">\n      <strong *ngIf=\"value\" class=\"form-group__value\">{{ value }}</strong>\n      <ng-container [ngTemplateOutlet]=\"content\"></ng-container>\n    </div>\n  </div>\n</ng-template>\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport * as _ from 'lodash';\nimport { GridColumnFilterConditionTypes } from '../../../../enums/grid-column-filter-condition-types';\nimport { lastValueFrom } from 'rxjs';\nimport { GridColumnInterface } from './../../../../models/grid-column.interface';\n\ninterface Filter {\n  binding: string;\n  filterType?: number;\n  type?: 'condition' | 'value';\n  showValues?: any[];\n  and?: boolean;\n  condition1?: {\n    operator: GridColumnFilterConditionTypes | null;\n    operatorTitle: string;\n    value?: string;\n  };\n  condition2?: {\n    operator: GridColumnFilterConditionTypes | null;\n    operatorTitle: string;\n    value?: string;\n  };\n}\ninterface FilterDefinition {\n  defaultFilterType: number;\n  filters: Filter[];\n}\n\nclass FilterObject {\n  constructor(filter: Filter, column: GridColumnInterface) {\n    this.binding = filter.binding;\n    if (filter.type == 'value') {\n      this.label = `${column.header}: ${_.size(filter.showValues)} آیتم`;\n    } else {\n      let condition1 = '';\n      let condition2 = '';\n      if (filter.condition1.operatorTitle) {\n        condition1 = `${filter.condition1.operatorTitle} ${filter.condition1.value}`;\n      }\n      if (filter.condition2.operatorTitle) {\n        condition2 = `${filter.condition2.operatorTitle} ${filter.condition2.value}`;\n      }\n      this.label = `${column.header}: `;\n      if (condition1 && condition2) {\n        this.label =\n          this.label + `${condition1} ${filter.and ? 'و' : 'یا'} ${condition2}`;\n      } else {\n        if (condition1) {\n          this.label = this.label + `${condition1}`;\n        }\n        if (condition2) {\n          this.label = this.label + `${condition2}`;\n        }\n      }\n    }\n  }\n  label: string;\n  binding: string;\n}\n\n@Component({\n  selector: 'ui-grid-active-filters',\n  templateUrl: './grid-active-filters.component.html',\n  styleUrls: ['./grid-active-filters.component.scss'],\n})\nexport class GridActiveFiltersComponent {\n  @Input() filterDefinition: string;\n  @Input() columns: GridColumnInterface[];\n  _filterDefinition: FilterDefinition;\n  filterObjects: FilterObject[] = [];\n  @Output() filterRemoved = new EventEmitter<string>();\n  isRemoveHandled = false;\n\n  constructor(private translateService: TranslateService) {}\n\n  ngOnInit() {\n    this.isRemoveHandled = this.filterRemoved.observed;\n  }\n\n  async fillFilterObjects(filter: Filter) {\n    if (filter.type == 'condition' || filter.type == 'value') {\n      const column = this.columns.find((column) => {\n        return column.binding == filter.binding;\n      });\n      filter = await this.translateFilterOperator(filter);\n      const filterObject = new FilterObject(filter, column);\n      this.filterObjects.push(filterObject);\n    }\n  }\n\n  async translateFilterOperator(filter: Filter): Promise<Filter> {\n    if (filter.type == 'condition') {\n      let op1 = GridColumnFilterConditionTypes[filter.condition1.operator];\n      let op2 = GridColumnFilterConditionTypes[filter.condition2.operator];\n      if (op1) {\n        filter.condition1.operatorTitle = await lastValueFrom(\n          this.translateService.get(`filterTypes.${op1}`)\n        );\n      }\n      if (op2) {\n        filter.condition2.operatorTitle = await lastValueFrom(\n          this.translateService.get(`filterTypes.${op2}`)\n        );\n      }\n    }\n    return filter;\n  }\n\n  ngOnChanges() {\n    if (this.filterDefinition && this.columns) {\n      this._filterDefinition = JSON.parse(this.filterDefinition);\n      this.filterObjects = [];\n      this._filterDefinition.filters.map((filter) => {\n        this.fillFilterObjects(filter);\n      });\n    }\n  }\n\n  removeFilter(filter: FilterObject): void {\n    this._filterDefinition.filters = this._filterDefinition.filters.filter(\n      (item) => {\n        return item.binding != filter.binding;\n      }\n    );\n    this.filterRemoved.emit(JSON.stringify(this._filterDefinition));\n  }\n}\n","<div class=\"ui-grid-active-filters\">\n  <span\n    class=\"ui-grid-active-filters__filter-item\"\n    [ngClass]=\"{\n      'ui-grid-active-filters__filter-item--has-remove': isRemoveHandled\n    }\"\n    *ngFor=\"let filter of filterObjects\"\n  >\n    <ui-icon\n      (click)=\"removeFilter(filter)\"\n      *ngIf=\"isRemoveHandled\"\n      class=\"ui-grid-active-filters__filter-item__remove-btn\"\n      style=\"display: inline-flex\"\n      group=\"content\"\n      name=\"remove\"\n      color=\"danger\"\n      size=\"x1\"\n    ></ui-icon>\n    {{ filter.label }}\n  </span>\n</div>\n","import { Component, EventEmitter, forwardRef, Input, OnInit, Output } from '@angular/core';\nimport { NG_VALUE_ACCESSOR, ControlValueAccessor } from '@angular/forms';\nimport { SizeType } from '../../../types/size.type';\n\n@Component({\n  selector: 'ui-radio-button',\n  templateUrl: './radio-button.component.html',\n  styleUrls: ['./radio-button.component.scss'],\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => RadioButtonComponent),\n      multi: true,\n    },\n  ],\n})\nexport class RadioButtonComponent implements ControlValueAccessor {\n  @Input() type: string = 'radio';\n  @Input() value: string;\n  @Input() name: string;\n  @Input() size: SizeType;\n  @Input() text: string;\n  @Input() checked: boolean;\n  @Input() disabled: boolean;\n  @Output() onChangeValue: EventEmitter<any> = new EventEmitter();\n\n  constructor() {}\n\n  onChange: any = () => {};\n  onTouched: any = () => {};\n\n  change(value: any) {\n    if (this.onChangeValue) this.onChangeValue.emit(value);\n    this.onChange(value);\n  }\n\n  writeValue(value: any) {\n    this.checked = value == this.value;\n  }\n\n  registerOnChange(fn: any): void {\n    this.onChange = fn;\n  }\n\n  registerOnTouched(fn: any): void {\n    this.onTouched = fn;\n  }\n\n  setDisabledState?(isDisabled: boolean): void {\n    this.disabled = isDisabled;\n  }\n}\n","<label class=\"radion-button\">\n  <input\n    class=\"radion-button__input\"\n    #rdo\n    type=\"radio\"\n    [name]=\"name\"\n    [value]=\"value\"\n    [checked]=\"checked\"\n    [disabled]=\"disabled\"\n    (change)=\"change(rdo.value)\"\n  />\n\n  <ng-container *ngIf=\"type == 'radio'\">\n    <span class=\"radion-button__icon\" [ngClass]=\"{ 'radion-button--disabled': disabled }\"></span>\n    <span\n      class=\"radion-button__text\"\n      [ngClass]=\"{ 'radion-button--disabled': disabled }\"\n      *ngIf=\"text\"\n      >{{ text }}</span\n    >\n  </ng-container>\n  <ng-container *ngIf=\"type == 'button'\">\n    <ui-button\n      class=\"radion-button__button--checked\"\n      color=\"primary\"\n      buttonType=\"button\"\n      [size]=\"size\"\n      varient=\"fill\"\n      (clickCallback)=\"rdo.click()\"\n      [disabled]=\"disabled\"\n      >{{ text }}</ui-button\n    >\n    <ui-button\n      class=\"radion-button__button--unchecked\"\n      color=\"primary\"\n      [size]=\"size\"\n      buttonType=\"button\"\n      varient=\"outline\"\n      (clickCallback)=\"rdo.click()\"\n      [disabled]=\"disabled\"\n      >{{ text }}</ui-button\n    >\n  </ng-container>\n\n  <ng-content></ng-content>\n</label>\n","import { Component, OnInit } from \"@angular/core\";\n\n@Component({\n  selector: \"ui-summary-validation\",\n  templateUrl: \"./summary-validation.component.html\",\n  styleUrls: [\"./summary-validation.component.scss\"],\n})\nexport class SummaryValidationComponent implements OnInit {\n  constructor() {}\n\n  ngOnInit(): void {}\n}\n","<div class=\"summary-validation\">\n  <div class=\"summary-validation__content\">\n    <ng-content></ng-content>\n  </div>\n</div>\n","import { Component, Input, OnInit } from '@angular/core';\n\n@Component({\n  selector: 'ui-tab-vertical',\n  templateUrl: './tab-vertical.component.html',\n})\nexport class TabVerticalComponent implements OnInit {\n  @Input() id: string;\n  @Input() text: string;\n  @Input() subTitle: string;\n  @Input() active: boolean = false;\n  @Input() data: any;\n  @Input() contentHeight?: string;\n  constructor() {}\n\n  ngOnInit(): void {}\n}\n","<div [hidden]=\"!active\" class=\"ui-tab__content\" [style.height]=\"contentHeight\">\n  <ng-content></ng-content>\n</div>\n","import {\n  AfterContentInit,\n  Component,\n  ContentChildren,\n  EventEmitter,\n  Input,\n  OnChanges,\n  Output,\n  QueryList,\n  SimpleChanges,\n} from '@angular/core';\nimport { TabVerticalComponent } from './tab-vertical/tab-vertical.component';\n\n@Component({\n  selector: 'ui-tabs-vertical',\n  templateUrl: './tabs-vertical.component.html',\n  styleUrls: ['./tabs-vertical.component.scss'],\n})\nexport class TabsVerticalComponent implements AfterContentInit, OnChanges {\n  @Input() tabWidth: string;\n  @Input() tabEllipsis: boolean;\n  @Input() minHeight: string;\n  @Input() selectedTabIndexFromOutside: number;\n  @Input() type: 'Horizontal' | 'Vertical' = 'Vertical';\n  @Input() separatedScroll: boolean = false;\n  @ContentChildren(TabVerticalComponent) tabs: QueryList<TabVerticalComponent>;\n\n  @Output() tabSelectedCallback = new EventEmitter<any>();\n  // contentChildren are set\n  ngAfterContentInit() {\n    // get all active tabs\n    let activeTabs = this.tabs.filter(tab => tab.active);\n\n    // if there is no active tab set, activate the first\n    if (activeTabs.length === 0 && this.tabs.length > 0) {\n      setTimeout(() => {\n        this.selectTab(this.tabs.first);\n      }, 0);\n    }\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    const selectedTabIndexFromOutside = changes['selectedTabIndexFromOutside'];\n    if (\n      changes.hasOwnProperty('selectedTabIndexFromOutside') &&\n      selectedTabIndexFromOutside.currentValue != undefined\n    ) {\n      this.activeSelectedTabFromOutside(selectedTabIndexFromOutside.currentValue);\n    }\n  }\n\n  selectTab(tab: TabVerticalComponent) {\n    // deactivate all tabs\n    this.tabs.toArray().forEach(tab => (tab.active = false));\n\n    // activate the tab the user has clicked on.\n    tab.active = true;\n    this.tabSelectedCallback.emit(tab);\n  }\n\n  activeSelectedTabFromOutside = (selectedTabIndex: number) => {\n    this.tabs?.toArray().forEach((tab, index) => {\n      tab.active = index == selectedTabIndex ? true : false;\n    });\n  };\n}\n","<section class=\"ui-tab\" [style.min-height]=\"minHeight\" [class.ui-tab--scroll]=\"separatedScroll\">\n  <header\n    class=\"ui-tab__actions\"\n    [style.flex-basis]=\"tabWidth\"\n    [style.padding-bottom]=\"tabWidth == '100%' ? 0 : null\"\n  >\n    <div\n      class=\"ui-tab__buttons\"\n      [ngClass]=\"{ 'ui-tab__buttons--horizontal': type == 'Horizontal' }\"\n      [ngClass]=\"{ 'ui-tab__buttons--vertical': type == 'Vertical' }\"\n    >\n      <button\n        type=\"button\"\n        class=\"ui-tab__button\"\n        [title]=\"tab.text\"\n        *ngFor=\"let tab of tabs\"\n        (click)=\"selectTab(tab)\"\n        [class.ui-tab__button--active]=\"tab.active\"\n        [class.ui-tab__button--ellipsis]=\"tabEllipsis\"\n      >\n        <span class=\"ui-tab__button-title\">{{ tab.text }}</span>\n        <span class=\"ui-tab__button-sub-title\" *ngIf=\"tab.subTitle\">{{ tab.subTitle }}</span>\n      </button>\n    </div>\n  </header>\n  <ng-container *ngIf=\"tabWidth != '100%'\"\n    ><section class=\"ui-tab__container\">\n      <ng-content></ng-content></section\n  ></ng-container>\n</section>\n","import {\n  Component,\n  ElementRef,\n  EventEmitter,\n  Input,\n  OnChanges,\n  OnInit,\n  Output,\n  SimpleChanges,\n  ViewChild,\n} from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { finalize, lastValueFrom } from 'rxjs';\nimport {\n  ImagesInputInterface,\n  UploadImageApiInterface,\n  UploadImageResponseInterface,\n  UploadMultiImageHookRequestInterface,\n} from '../../../models/upload-image/upload-image-api.interface';\n\n@Component({\n  selector: 'ui-upload',\n  templateUrl: './upload.component.html',\n  styleUrls: ['./upload.component.scss'],\n})\nexport class UploadComponent implements OnInit, OnChanges {\n  @ViewChild('fileInput', { static: false })\n  fileInput: ElementRef<HTMLInputElement>;\n\n  @Input() images: ImagesInputInterface[] = [];\n  @Input() hideCancelButton?: boolean = false;\n  @Input() isMultiple: boolean = true;\n  @Input() entityName: string;\n  @Input() entityId: number;\n  @Input() uploadService: UploadImageApiInterface;\n  @Input() hideActionButtons: boolean = false;\n  @Input() readonly: boolean = false;\n\n  @Output() uploadSuccess: EventEmitter<UploadImageResponseInterface[]> = new EventEmitter();\n  @Output() unhookSuccess: EventEmitter<string> = new EventEmitter();\n  @Output() cancelCallback: EventEmitter<void> = new EventEmitter();\n  @Output() fileSelected: EventEmitter<File[]> = new EventEmitter();\n\n  imageSources: string[] = [];\n  imageFiles: File[] = [];\n  loading: boolean = false;\n\n  defaultImage: string = '0';\n\n  totalImageAllowed: number = 8;\n\n  imagesSrc: { [key: string]: string } = {};\n\n  priorities: number[] = [];\n  hasChangedPriority: boolean = false;\n\n  constructor(private sanitizer: DomSanitizer) {}\n\n  ngOnInit(): void {\n    this.getImages();\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (changes['images']) {\n      this.getImages();\n    }\n  }\n\n  getImages() {\n    if (this.images && this.images.length > 0) {\n      this.loading = true;\n      this.images.forEach((image, index) => {\n        this.priorities.push(image.Priority);\n\n        this.uploadService\n          .download(image.name)\n          .pipe(finalize(() => (this.loading = false)))\n          .subscribe((data: any) => {\n            const myFile = new File([data], 'image.jpeg', {\n              type: data.type,\n            });\n            const reader = new FileReader();\n            reader.onload = (event: any) => {\n              this.imagesSrc[image.name] = event.target.result;\n              // this.imageSources.push(reader.result as string);\n            };\n            // this.imageFiles.push(myFile);\n            // if (image.isDefault) this.defaultImage = this.imagesSrc[image.name];\n            reader.readAsDataURL(myFile);\n          });\n      });\n    }\n  }\n\n  get showDeleteAllBtn(): boolean {\n    if (this.images && this.images.length > 0) {\n      return true;\n    }\n    return false;\n  }\n\n  get hasContent(): boolean {\n    if (this.imageSources.length > 0) {\n      return true;\n    }\n    if (this.images && this.images.length > 0) {\n      return true;\n    }\n    return false;\n  }\n  get canAddImage(): boolean {\n    const imagesCount = this.imageSources.length + this.images.length;\n\n    if (this.isMultiple) {\n      return imagesCount < this.totalImageAllowed ? true : false;\n    }\n\n    return imagesCount > 0 ? false : true;\n  }\n\n  unhook(image: string): void {\n    if (confirm('آیا مطمئن هستید؟')) {\n      this.loading = true;\n      this.uploadService.unhook(image).subscribe({\n        next: () => {\n          this.loading = false;\n          this.unhookSuccess.emit(image);\n        },\n      });\n    }\n  }\n  removeAllImages(): void {\n    this.imageSources = [];\n\n    if (confirm('آیا مطمئن هستید؟')) {\n      this.images.forEach(image => {\n        this.loading = true;\n        this.uploadService.unhook(image.name).subscribe({\n          next: () => {\n            this.unhookSuccess.emit(image.name);\n          },\n        });\n      });\n      this.loading = false;\n    }\n  }\n\n  cancel(): void {\n    this.cancelCallback.emit();\n  }\n\n  onFileDropped(files: FileList): void {\n    if (this.readonly) return;\n    this.prepareFilesList(files);\n  }\n\n  fileBrowseHandler(event: Event): void {\n    const target = event.target as HTMLInputElement;\n    this.prepareFilesList(target.files);\n  }\n\n  removeImage(i: number): void {\n    this.imageSources.splice(i, 1);\n    // this.imageFiles.splice(i, 1);\n\n    if (this.isMultiple) {\n      this.priorities.splice(i, 1);\n\n      this.priorities.forEach((p, index) => {\n        if (index >= i) this.priorities[index] = this.priorities[index] - 1;\n      });\n    }\n  }\n\n  async multiUpload(res: any) {\n    const mediumItems: UploadMultiImageHookRequestInterface = {\n      mediumItems: [],\n    };\n\n    res.forEach((item: any, index: number) => {\n      mediumItems.mediumItems.push({\n        entity: this.entityName,\n        entityId: this.entityId,\n        isDefault: this.priorities[index] ? this.priorities[index] == 1 : index == 0,\n        mediumType: this.entityName,\n        name: item.data ? item.data : item.name,\n        state: 2,\n        Priority: this.priorities[index] ? this.priorities[index] : 1,\n      });\n    });\n\n    await lastValueFrom(this.uploadService.uploadHook(mediumItems));\n  }\n\n  async upload(): Promise<void> {\n    this.loading = true;\n    const formData = new FormData();\n    Array.from(this.imageFiles).forEach((file, index) => {\n      formData.append(`file${index + 1}`, file);\n    });\n\n    if (!this.imageSources.length && this.hasChangedPriority) {\n      const tempRes = [...this.images];\n      this.multiUpload(tempRes);\n      this.loading = false;\n      this.hasChangedPriority = false;\n      this.uploadSuccess.emit([]);\n    } else {\n      this.uploadService.upload(formData, this.entityId).subscribe(res => {\n        if (this.isMultiple) {\n          const tempRes = [...this.images, ...res];\n          this.multiUpload(tempRes);\n        } else {\n          this.multiUpload(res);\n        }\n\n        this.loading = false;\n        this.hasChangedPriority = false;\n        this.uploadSuccess.emit(res);\n      });\n    }\n  }\n\n  async prepareFilesList(files: FileList): Promise<void> {\n    Array.from(files).forEach(file => {\n      const reader = new FileReader();\n      reader.onload = () => {\n        if (this.isMultiple) {\n          this.imageSources.push(reader.result as string);\n        } else {\n          this.imageSources[0] = reader.result as string;\n        }\n      };\n      reader.readAsDataURL(file);\n\n      if (this.isMultiple) {\n        this.priorities.push(this.priorities.length + 1);\n        this.imageFiles.push(file);\n      } else {\n        this.imageFiles[0] = file;\n      }\n    });\n    this.fileSelected.emit(this.imageFiles);\n    this.fileInput.nativeElement.value = '';\n  }\n\n  increasePriority(index: number) {\n    if (this.priorities[index] < this.priorities.length) {\n      this.priorities[index] = this.priorities[index] + 1;\n      this.hasChangedPriority = true;\n    }\n  }\n  decreasePriority(index: number) {\n    if (this.priorities[index] > 1) {\n      this.priorities[index] = this.priorities[index] - 1;\n      this.hasChangedPriority = true;\n    }\n  }\n}\n","<div class=\"ui-upload\">\n  <ui-spinner [show]=\"loading\"></ui-spinner>\n  <div\n    class=\"ui-upload__content\"\n    [ngClass]=\"{\n      'ui-upload__content--loading': loading\n    }\"\n  >\n    <input\n      *ngIf=\"!readonly\"\n      type=\"file\"\n      #fileInput\n      class=\"d-none\"\n      id=\"fileInput\"\n      accept=\"images/*\"\n      [multiple]=\"false\"\n      (change)=\"fileBrowseHandler($event)\"\n    />\n\n    <div uploadDropzone (fileDropped)=\"onFileDropped($event)\" class=\"ui-upload__content__drop-zone\">\n      <div class=\"ui-upload__content__drop-zone__no-content\" *ngIf=\"!hasContent\">\n        <ui-icon\n          class=\"ui-upload__content__drop-zone__no-content__icon mb-2\"\n          style=\"display: inline-flex\"\n          group=\"file\"\n          name=\"cloud_upload\"\n          size=\"x3\"\n        ></ui-icon>\n        <span>فایل خود را درگ-دراپ کنید، یا در</span>\n        <label for=\"fileInput\" class=\"ui-upload__content__drop-zone__no-content__upload-btn m-0\"\n          >کامپیوتر جستجو کنید</label\n        >\n      </div>\n      <div\n        class=\"ui-upload__content__drop-zone__has-content\"\n        [ngStyle]=\"{ 'justify-content': isMultiple ? 'start' : 'center' }\"\n        *ngIf=\"hasContent\"\n      >\n        <div\n          *ngFor=\"let image of images; let i = index\"\n          class=\"ui-upload__content__drop-zone__has-content__preview-container\"\n        >\n          <img\n            class=\"ui-upload__content__drop-zone__has-content__preview-container__image\"\n            [src]=\"imagesSrc[image.name]\"\n          />\n          <ui-icon\n            *ngIf=\"!readonly\"\n            class=\"ui-upload__content__drop-zone__has-content__preview-container__image__remove-btn\"\n            style=\"display: inline-flex\"\n            group=\"content\"\n            name=\"clear\"\n            size=\"x1\"\n            (click)=\"unhook(image.name)\"\n          ></ui-icon>\n          <div\n            class=\"d-flex justify-content-between align-items-center mx-2 my-2\"\n            *ngIf=\"isMultiple\"\n          >\n            <span>اولویت: </span>\n            <div class=\"d-flex justify-content-between align-items-center\">\n              <ui-icon\n                *ngIf=\"!readonly\"\n                class=\"ui-upload__content__drop-zone__has-content__preview-container__image__priority-btn\"\n                group=\"navigation\"\n                name=\"arrow_upward\"\n                (click)=\"increasePriority(i)\"\n              ></ui-icon>\n\n              <ui-text class=\"mx-2 bg-light rounded-lg px-2 py-1\">\n                {{ priorities[i] }}\n              </ui-text>\n\n              <ui-icon\n                *ngIf=\"!readonly\"\n                class=\"ui-upload__content__drop-zone__has-content__preview-container__image__priority-btn\"\n                group=\"navigation\"\n                name=\"arrow_downward\"\n                (click)=\"decreasePriority(i)\"\n              ></ui-icon>\n            </div>\n          </div>\n        </div>\n        <div\n          *ngFor=\"let imageSrouce of imageSources; let i = index\"\n          class=\"ui-upload__content__drop-zone__has-content__preview-container\"\n        >\n          <img\n            class=\"ui-upload__content__drop-zone__has-content__preview-container__image\"\n            [src]=\"imageSrouce\"\n          />\n          <ui-icon\n            class=\"ui-upload__content__drop-zone__has-content__preview-container__image__remove-btn\"\n            style=\"display: inline-flex\"\n            group=\"content\"\n            name=\"clear\"\n            size=\"x1\"\n            *ngIf=\"!readonly\"\n            (click)=\"removeImage(i)\"\n          ></ui-icon>\n\n          <div\n            class=\"d-flex justify-content-between align-items-center mx-2 my-2\"\n            *ngIf=\"isMultiple\"\n          >\n            <span>اولویت: </span>\n            <div class=\"d-flex justify-content-between align-items-center\">\n              <ui-icon\n                *ngIf=\"!readonly\"\n                class=\"ui-upload__content__drop-zone__has-content__preview-container__image__priority-btn\"\n                group=\"navigation\"\n                name=\"arrow_upward\"\n                (click)=\"increasePriority(i + images.length)\"\n              ></ui-icon>\n\n              <ui-text class=\"mx-2 bg-light rounded-lg px-2 py-1\">{{\n                priorities[i + images.length]\n              }}</ui-text>\n\n              <ui-icon\n                *ngIf=\"!readonly\"\n                class=\"ui-upload__content__drop-zone__has-content__preview-container__image__priority-btn\"\n                group=\"navigation\"\n                name=\"arrow_downward\"\n                (click)=\"decreasePriority(i + images.length)\"\n              ></ui-icon>\n            </div>\n          </div>\n        </div>\n\n        <label\n          *ngIf=\"canAddImage\"\n          for=\"fileInput\"\n          class=\"ui-upload__content__drop-zone__has-content__upload-btn\"\n        >\n          <ui-icon\n            class=\"ui-upload__content__drop-zone__has-content__upload-btn__icon\"\n            style=\"display: inline-flex\"\n            group=\"content\"\n            name=\"add\"\n            size=\"x3\"\n          ></ui-icon>\n        </label>\n      </div>\n    </div>\n    <div *ngIf=\"hasContent && !hideActionButtons && !readonly\" class=\"ui-upload__content__actions\">\n      <ui-button\n        *ngIf=\"imageSources.length\"\n        (clickCallback)=\"upload()\"\n        varient=\"fill\"\n        color=\"primary\"\n        >بارگذاری</ui-button\n      >\n      <ui-button\n        *ngIf=\"!imageSources.length && hasChangedPriority\"\n        (clickCallback)=\"upload()\"\n        varient=\"fill\"\n        color=\"primary\"\n        >ذخیره</ui-button\n      >\n      <ui-button\n        *ngIf=\"showDeleteAllBtn\"\n        (clickCallback)=\"removeAllImages()\"\n        varient=\"fill\"\n        color=\"danger\"\n        >حذف\n      </ui-button>\n\n      <ui-button *ngIf=\"!hideCancelButton\" (clickCallback)=\"cancel()\" varient=\"fill\"\n        >انصراف</ui-button\n      >\n    </div>\n  </div>\n</div>\n","import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';\nimport { WjGridModule } from '@grapecity/wijmo.angular2.grid';\nimport { WjGridDetailModule } from '@grapecity/wijmo.angular2.grid.detail';\nimport { WjGridFilterModule } from '@grapecity/wijmo.angular2.grid.filter';\nimport { WjGridGrouppanelModule } from '@grapecity/wijmo.angular2.grid.grouppanel';\nimport { WjGridSheetModule } from '@grapecity/wijmo.angular2.grid.sheet';\nimport { WjInputModule } from '@grapecity/wijmo.angular2.input';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { AngularSvgIconModule } from 'angular-svg-icon';\nimport { UploadDropzoneDirective } from '../directives/upload-dropzone.directive';\nimport { FararuSharedModule } from '../modules';\nimport { AccessNodePipe } from '../pipes/access-node.pipe';\nimport { IsBooleanPipe } from '../pipes/is-boolean.pipe';\nimport { HighlightKeywordPipe } from '../pipes/highlight-keyword.pipe';\nimport {\n  DataGridComponent,\n  DatePickerComponent,\n  FararuIconComponent,\n  GeneralPanelComponent,\n  KeyValueComponent,\n  NoteComponent,\n  NoteIconComponent,\n  ProductDataGridComponent,\n  SectionTitleComponent,\n  SubMenuComponent,\n  SwitchComponent,\n  ToolbarComponent,\n  TreeComponent,\n  UiTooltipComponent,\n} from './components';\nimport { LabelComponent } from './components/atoms/label/label.component';\nimport { LoadingComponent } from './components/atoms/loading/loading.component';\nimport { NoDataComponent } from './components/atoms/no-data/no-data.component';\nimport { TooltipDirective } from './components/atoms/tooltip/tooltip.directive';\nimport { DropdownTextInputComponent } from './components/molecules/dropdown-text-input/dropdown-text-input.component';\nimport { MessageComponent } from './components/molecules/message/message.component';\nimport { DataGridBtnComponent } from './components/organisms/data-grid/data-grid-btn/data-grid-btn.component';\nimport { DataGridCellAggregateTypeTitlePipe } from './components/organisms/data-grid/data-grid-cell-aggregate-type-title.pipe';\nimport { DataGridCellDisplayObjectPipe } from './components/organisms/data-grid/data-grid-cell-display-object.pipe';\nimport { DataGridCellDisplayValuePipe } from './components/organisms/data-grid/data-grid-cell-display-value.pipe';\nimport { DataGridColumnClassNamePipe } from './components/organisms/data-grid/data-grid-column-class-name.pipe';\nimport { DataGridRowClassNamePipe } from './components/organisms/data-grid/data-grid-row-class-name.pipe';\nimport { ButtonComponent } from './ui/button/button.component';\nimport { CheckboxComponent } from './ui/checkbox/checkbox.component';\nimport { DropdownTriggerForDirective } from './ui/dropdown/dropdown-trigger-for.directive';\nimport { DropdownComponent } from './ui/dropdown/dropdown.component';\nimport { FieldsetComponent } from './ui/fieldset/fieldset.component';\nimport { FilePickerComponent } from './ui/file-picker/file-picker.component';\nimport { FormGroupComponent } from './ui/form-group/form-group.component';\nimport { GridActiveFiltersComponent } from './ui/grid/grid-active-filters/grid-active-filters.component';\nimport { GridCustomFilterComponent } from './ui/grid/grid-custom-filter/grid-custom-filter.component';\nimport { GridComponent } from './ui/grid/grid.component';\nimport { IconComponent } from './ui/icon/icon.component';\nimport { IdentitySelectorComponent } from './ui/indentity-selector/identity-selector.component';\nimport { PullDownComponent } from './ui/pull-down/pull-down.component';\nimport { RadioButtonComponent } from './ui/radio-button/radio-button.component';\nimport { ScreenSeparatorComponent } from './ui/screen-separator/screen-separator.component';\nimport { ScreenVerticalSeparatorComponent } from './ui/screen-vertical-separator/screen-vertical-separator.component';\nimport { SelectMenuItemIsSelectedPipe } from './ui/select/select-menu-item-is-selected.pipe';\nimport { SelectComponent } from './ui/select/select.component';\nimport { SpinnerComponent } from './ui/spinner/spinner.component';\nimport { SummaryValidationComponent } from './ui/summary-validation/summary-validation.component';\nimport { TabVerticalComponent } from './ui/tabs-vertical/tab-vertical/tab-vertical.component';\nimport { TabsVerticalComponent } from './ui/tabs-vertical/tabs-vertical.component';\nimport { TabComponent } from './ui/tabs/tab/tab.component';\nimport { TabsComponent } from './ui/tabs/tabs.component';\nimport { TextboxComponent } from './ui/textbox/textbox.component';\nimport { TreeSelectComponent } from './ui/tree-select/tree-select.component';\nimport { UploadComponent } from './ui/upload/upload.component';\nimport { ValidationComponent } from './ui/validation/validation.component';\nimport { IConfig, NgxMaskDirective, NgxMaskPipe, provideNgxMask } from 'ngx-mask';\nimport { AccessNodeComponent } from './ui/access-node/access-node.component';\nimport { GridActionColumnWidthPipe } from './ui/grid/grid-action-column-width.pipe';\nimport { DxDataGridModule } from 'devextreme-angular';\nimport { FararuDataGridComponent } from './components/organisms/fararu-data-grid/fararu-data-grid.component';\nimport { DataGridColumnWidthPipe } from './components/organisms/data-grid/data-grid-column-width.pipe';\n\nconst maskConfig: Partial<IConfig> = {\n  decimalMarker: ',',\n};\n\nconst EXPORTS = [\n  ButtonComponent,\n  TextboxComponent,\n  IconComponent,\n  IdentitySelectorComponent,\n  GridComponent,\n  SelectComponent,\n  CheckboxComponent,\n  FormGroupComponent,\n  PullDownComponent,\n  RadioButtonComponent,\n  ScreenSeparatorComponent,\n  ScreenVerticalSeparatorComponent,\n  SpinnerComponent,\n  SummaryValidationComponent,\n  TabsComponent,\n  TabComponent,\n  TreeSelectComponent,\n  ValidationComponent,\n  DropdownComponent,\n  DropdownTriggerForDirective,\n  FieldsetComponent,\n  UploadComponent,\n  UploadDropzoneDirective,\n  GridActiveFiltersComponent,\n  DatePickerComponent,\n  SubMenuComponent,\n  DataGridComponent,\n  ProductDataGridComponent,\n  FararuIconComponent,\n  // TooltipComponent,\n  UiTooltipComponent,\n  SectionTitleComponent,\n  TooltipDirective,\n  SwitchComponent,\n  DropdownTextInputComponent,\n  LabelComponent,\n  AccessNodePipe,\n  ToolbarComponent,\n  TabsVerticalComponent,\n  TabVerticalComponent,\n  GeneralPanelComponent,\n  FilePickerComponent,\n  NoDataComponent,\n  DataGridBtnComponent,\n  KeyValueComponent,\n  MessageComponent,\n  NoteIconComponent,\n  NoteComponent,\n  AccessNodeComponent,\n  HighlightKeywordPipe,\n  TreeComponent,\n  FararuDataGridComponent,\n];\n\n@NgModule({\n  imports: [\n    FararuSharedModule,\n    WjGridModule,\n    WjGridGrouppanelModule,\n    WjGridFilterModule,\n    WjGridDetailModule,\n    WjGridSheetModule,\n    WjInputModule,\n    TranslateModule,\n    AngularSvgIconModule.forRoot(),\n    NgxMaskDirective,\n    NgxMaskPipe,\n    DxDataGridModule,\n  ],\n  declarations: [\n    ...EXPORTS,\n    GridCustomFilterComponent,\n    DataGridCellDisplayValuePipe,\n    DataGridCellDisplayObjectPipe,\n    IsBooleanPipe,\n    ButtonComponent,\n    LoadingComponent,\n    DataGridCellAggregateTypeTitlePipe,\n    DataGridRowClassNamePipe,\n    DataGridColumnClassNamePipe,\n    DataGridColumnWidthPipe,\n    SelectMenuItemIsSelectedPipe,\n    GridActionColumnWidthPipe,\n  ],\n  exports: [...EXPORTS],\n  schemas: [CUSTOM_ELEMENTS_SCHEMA],\n  providers: [provideNgxMask(maskConfig)],\n})\nexport class FararuDesignSystemLibModule {}\n","import { CommonModule } from '@angular/common';\nimport { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';\nimport { NgbModule } from '@ng-bootstrap/ng-bootstrap';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { AngularSvgIconModule } from 'angular-svg-icon';\nimport { ShortcutModule } from '../../modules';\nimport { FararuDesignSystemLibModule } from '../fararu-design-system-lib.module';\nimport { AlertComponent } from './alert/alert.component';\nimport { ConfirmComponent } from './confirm/confirm.component';\nimport { ModalWrapperComponent } from './modal-wrapper/modal-wrapper.component';\nimport { ModalService } from './modal.service';\nimport { DialogIconNamePipe } from './pipes/dialog-icon-name.pipe';\nimport { DragDropModule } from '@angular/cdk/drag-drop';\n\n@NgModule({\n  imports: [\n    CommonModule,\n    NgbModule,\n    FararuDesignSystemLibModule,\n    TranslateModule,\n    AngularSvgIconModule.forRoot(),\n    ShortcutModule,\n    DragDropModule,\n  ],\n  providers: [ModalService],\n  declarations: [ModalWrapperComponent, AlertComponent, ConfirmComponent, DialogIconNamePipe],\n  exports: [ModalWrapperComponent],\n  schemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class ModalModule {}\n","import { Component, EventEmitter, OnInit, Output, input } from '@angular/core';\nimport { UntypedFormGroup, Validators } from '@angular/forms';\nimport { TranslateService } from '@ngx-translate/core';\nimport { combineLatest, finalize } from 'rxjs';\nimport { GeneralODataService } from '../../../api/general-odata.service';\nimport { HttpHeaderNames } from '../../../constants/http-header-names';\nimport {\n  GeneralFormFieldValidatorInterface,\n  ODataResponse,\n  ReportXParameterModel,\n} from '../../../models';\nimport { GeneralFieldConfigInterface } from '../../../models/general-field-config.interface';\nimport { AppConfigService } from '../../../services/app-config.service';\nimport { ReportFormService } from '../../../services/report-form.service';\nimport { AuthSandbox } from '../../../store/sandboxes';\nimport { GeneralODataTableName } from '../../../constants/general-odata-table-name';\nimport { FararuToastService } from '../../toast/fararu-toast.service';\n\n@Component({\n  selector: 'app-general-filter-form',\n  templateUrl: './general-filter-form.component.html',\n  styleUrl: './general-filter-form.component.scss',\n})\nexport class GeneralFilterFormComponent implements OnInit {\n  formfields: GeneralFieldConfigInterface[] = [];\n  formId = input<string>('Filter-Form');\n  modalMode = input<boolean>(false);\n  columnCount = input<number>(6);\n  reportId = input.required<number>();\n  hideFooter = input<boolean>(false);\n  hideBorder = input<boolean>(false);\n  noGutter = input<boolean>(false);\n  hideSideSpacing = input<boolean>(false);\n  hideSaveButton = input<boolean>(true);\n  hideCancelButton = input<boolean>(true);\n  showFooterOnTop = input<boolean>(false);\n  extraDefaultValues = input<Record<string, any>>({});\n  @Output() reportSubmit: EventEmitter<any> = new EventEmitter();\n  @Output() filterFormInit: EventEmitter<any> = new EventEmitter<any>();\n  isLoading: boolean = false;\n  reactiveFormRef: UntypedFormGroup;\n  externalValueNotProvided: boolean = false;\n  externalValueNotProvidedError: string =\n    'general.generalReportForm.toolbar.externalValueNotProvidedError';\n  accyear: number;\n  accYearItems: any[];\n  selectedAccYear: any;\n  startDate: any;\n  endDate: any;\n\n  /**\n   *\n   */\n  constructor(\n    private _generalODataService: GeneralODataService<ReportXParameterModel>,\n    private _appConfigService: AppConfigService,\n    private _fararuToastService: FararuToastService,\n    private _translateService: TranslateService,\n    private _reportFormService: ReportFormService,\n    private _authSandbox: AuthSandbox\n  ) { }\n\n  async ngOnInit() {\n    this.isLoading = true;\n    await this.getAccYearDetail();\n    this._reportFormService\n      .getReportParamById(this.reportId())\n      .pipe(\n        finalize(() => {\n          this.isLoading = false;\n        })\n      )\n      .subscribe((result: ODataResponse<ReportXParameterModel>) => {\n        if (result?.value?.length > 0) {\n          let fields: GeneralFieldConfigInterface[] = [];\n          result.value\n            .sort((a: ReportXParameterModel, b: ReportXParameterModel) => a.ordering - b.ordering)\n            .forEach((filterElement: ReportXParameterModel) => {\n              fields.push(...this.mapParameterType(filterElement));\n            });\n          if (this.externalValueNotProvided) {\n            this._fararuToastService.show({\n              type: 'error',\n              text: this._translateService.instant(this.externalValueNotProvidedError),\n              closeByUser: true,\n            });\n          }\n          this.formfields = fields;\n        }\n      });\n  }\n\n  submit(e: any) {\n    e.preventDefault();\n    if (this.externalValueNotProvided) {\n      this._fararuToastService.show({\n        type: 'error',\n        text: this._translateService.instant(this.externalValueNotProvidedError),\n        closeByUser: true,\n      });\n      return;\n    }\n    if (this.reactiveFormRef.valid) {\n      let finalFilter = this.extractHiddenFilters();\n      this.reportSubmit.emit(finalFilter);\n    }\n  }\n\n  private extractHiddenFilters() {\n    let finalFilter = Object.assign({}, this.reactiveFormRef.value);\n    for (const formfield of this.formfields.filter(ff => ff.formConfig?.hidden)) {\n      if (this.extraDefaultValues()[formfield.name]) {\n        finalFilter[formfield.name] = this.extraDefaultValues()[formfield.name];\n      }\n    }\n    return finalFilter;\n  }\n\n  abort() { }\n\n  mapParameterType(parameterModel: ReportXParameterModel): GeneralFieldConfigInterface[] {\n    switch (parameterModel.parameterType) {\n      case 'ReportSelector':\n        return [\n          {\n            label: parameterModel.parameterTitle,\n            name: parameterModel.parameterName,\n            hasTranslation: false,\n            readonly: false,\n            formConfig: {\n              type: 'select',\n              value: this.getExtraDefaultValue(parameterModel)?.defaultValue1,\n              //  columnWidth: 2,\n              options: [\n                { id: 1, name: 'تفصیلی' },\n                { id: 2, name: 'خلاصه' },\n              ],\n              selectConfig: {\n                bindLabel: 'name',\n                bindValue: 'id',\n                multiple: false,\n                allowClear: true,\n              },\n              validators: parameterModel.isMandatory ? this.getRequiredValidator() : undefined,\n            },\n          },\n        ];\n      case 'CheckListStringArray':\n      case 'ComboBox':\n        return [\n          {\n            label: parameterModel.parameterTitle,\n            name: parameterModel.parameterName,\n            hasTranslation: false,\n            readonly: false,\n            formConfig: {\n              type: 'identity-selector',\n              value: this.getExtraDefaultValue(parameterModel)?.defaultValue1,\n              //  columnWidth: 2,\n              identitySelectorConfig: {\n                allowClear: true,\n                hasCrudOrigin: false,\n                oDataServer: this._appConfigService.config.api.baseUrl,\n                // oDataService: this.stockGoodsODataService,\n                oDataTable: GeneralODataTableName,\n                oDataEntity: parameterModel.modelName,\n                oDataHttpHeaders: { [HttpHeaderNames.FETCH_REASON]: parameterModel.fetchReason + '' },\n                inputField: 'code',\n                secondInputField: 'name',\n                resultField: 'id',\n                gridFields: [\n                  {\n                    header: 'شناسه',\n                    binding: 'id',\n                    format: 'd',\n                    visible: false,\n                  },\n                  {\n                    header: 'کد',\n                    binding: 'code',\n                  },\n                  {\n                    header: 'نام',\n                    binding: 'name',\n                  },\n                ],\n              },\n              validators: parameterModel.isMandatory ? this.getRequiredValidator() : undefined,\n            },\n          },\n        ];\n      case 'MultiColumnComboBox':\n        return [\n          {\n            label: parameterModel.parameterTitle,\n            name: parameterModel.parameterName,\n            hasTranslation: false,\n            readonly: false,\n            formConfig: {\n              type: 'identity-selector',\n              value: this.getExtraDefaultValue(parameterModel)?.defaultValue1,\n              //  columnWidth: 2,\n              identitySelectorConfig: {\n                allowClear: true,\n                hasCrudOrigin: false,\n                oDataServer: this._appConfigService.config.api.baseUrl,\n                // oDataService: this.stockGoodsODataService,\n                oDataTable: GeneralODataTableName,\n                oDataEntity: parameterModel.modelName,\n                oDataHttpHeaders: { [HttpHeaderNames.FETCH_REASON]: parameterModel.fetchReason + '' },\n                inputField: 'code',\n                secondInputField: 'name',\n                resultField: 'id',\n                gridFields: [\n                  {\n                    header: 'شناسه',\n                    binding: 'id',\n                    format: 'd',\n                  },\n                  {\n                    header: 'کد',\n                    binding: 'code',\n                  },\n                  {\n                    header: 'نام',\n                    binding: 'name',\n                  },\n                ],\n              },\n              validators: parameterModel.isMandatory ? this.getRequiredValidator() : undefined,\n            },\n          },\n        ];\n      case 'CheckList':\n        return [\n          {\n            label: parameterModel.parameterTitle,\n            name: parameterModel.parameterName,\n            hasTranslation: false,\n            readonly: false,\n            formConfig: {\n              type: 'select',\n              value: this.getExtraDefaultValue(parameterModel)?.defaultValue1,\n              // columnWidth: 3,\n              selectConfig: {\n                oDataServer: this._appConfigService.config.api.baseUrl,\n                oDataTable: GeneralODataTableName,\n                oDataEntity: parameterModel.modelName,\n                oDataHttpHeaders: { fetchreason: parameterModel.fetchReason + '' },\n                bindLabel: 'name',\n                bindValue: 'id',\n                multiple: true,\n              },\n              validators: parameterModel.isMandatory ? this.getRequiredValidator() : undefined,\n            },\n          },\n        ];\n      case 'TextBox':\n        return [\n          {\n            label: parameterModel.parameterTitle,\n            name: parameterModel.parameterName,\n            hasTranslation: false,\n            readonly: false,\n            formConfig: {\n              type: 'textbox',\n              value: parameterModel.defaultValue1,\n              validators: parameterModel.isMandatory ? this.getRequiredValidator() : undefined,\n            },\n          },\n        ];\n      case 'TextRangeBox':\n        return [\n          {\n            label: 'از ' + parameterModel.parameterTitle,\n            name: parameterModel.parameterName + '1',\n            hasTranslation: false,\n            readonly: false,\n            formConfig: {\n              type: 'textbox',\n              inputType: 'text',\n              value: this.getExtraDefaultValue(parameterModel, '1')?.defaultValue1,\n              //  columnWidth: 2,\n              validators: parameterModel.isMandatory ? this.getRequiredValidator() : undefined,\n            },\n          },\n          {\n            label: 'تا ' + parameterModel.parameterTitle,\n            name: parameterModel.parameterName + '2',\n            hasTranslation: false,\n            readonly: false,\n            formConfig: {\n              type: 'textbox',\n              inputType: 'text',\n              value: this.getExtraDefaultValue(parameterModel, '2')?.defaultValue2,\n              validators: parameterModel.isMandatory ? this.getRequiredValidator() : undefined,\n              //  columnWidth: 2,\n            },\n          },\n        ];\n      case 'CheckBox':\n        return [\n          {\n            label: parameterModel.parameterTitle,\n            name: parameterModel.parameterName,\n            hasTranslation: false,\n            readonly: false,\n            formConfig: {\n              type: 'checkbox',\n              value: this.getExtraDefaultValue(parameterModel)?.defaultValue1,\n              //  columnWidth: 2,\n            },\n          },\n        ];\n      case 'DoubleListBox':\n        return [\n          {\n            label: parameterModel.parameterTitle,\n            name: parameterModel.parameterName,\n            hasTranslation: false,\n            readonly: false,\n            formConfig: {\n              type: 'select',\n              value: this.getExtraDefaultValue(parameterModel)?.defaultValue1,\n              selectConfig: {\n                oDataServer: this._appConfigService.config.api.baseUrl,\n                oDataTable: GeneralODataTableName,\n                oDataEntity: parameterModel.modelName,\n                oDataHttpHeaders: { fetchreason: parameterModel.fetchReason + '' },\n                bindLabel: 'name',\n                bindValue: 'paramter',\n                multiple: true,\n              },\n              validators: parameterModel.isMandatory ? this.getRequiredValidator() : undefined,\n            },\n          },\n        ];\n      case 'DateBox':\n        return [\n          {\n            label: parameterModel.parameterTitle,\n            name: parameterModel.parameterName,\n            hasTranslation: false,\n            readonly: false,\n            formConfig: {\n              type: 'textbox',\n              inputType: 'date',\n              value: this.getExtraDefaultValue(parameterModel)?.defaultValue1,\n              //  columnWidth: 2,\n              validators: parameterModel.isMandatory ? this.getRequiredValidator() : undefined,\n            },\n          },\n        ];\n      case 'DateRangeBox':\n        return [\n          {\n            label: 'از ' + parameterModel.parameterTitle,\n            name: parameterModel.parameterName + '1',\n            hasTranslation: false,\n            readonly: false,\n            formConfig: {\n              type: 'textbox',\n              inputType: 'date',\n              value: this.getExtraDefaultValue(parameterModel, '1')?.defaultValue1,\n              //  columnWidth: 2,\n              validators: parameterModel.isMandatory ? this.getRequiredValidator() : undefined,\n            },\n          },\n          {\n            label: 'تا ' + parameterModel.parameterTitle,\n            name: parameterModel.parameterName + '2',\n            hasTranslation: false,\n            readonly: false,\n            formConfig: {\n              type: 'textbox',\n              inputType: 'date',\n              value: this.getExtraDefaultValue(parameterModel, '2')?.defaultValue2,\n              //  columnWidth: 2,\n              validators: parameterModel.isMandatory ? this.getRequiredValidator() : undefined,\n            },\n          },\n        ];\n      case 'CurrencyRangeBox':\n        return [\n          {\n            label: 'از ' + parameterModel.parameterTitle,\n            name: parameterModel.parameterName + '1',\n            hasTranslation: false,\n            readonly: false,\n            formConfig: {\n              type: 'textbox',\n              inputType: 'currency',\n              value: this.getExtraDefaultValue(parameterModel)?.defaultValue1,\n              //  columnWidth: 2,\n              validators: parameterModel.isMandatory ? this.getRequiredValidator() : undefined,\n            },\n          },\n          {\n            label: 'تا ' + parameterModel.parameterTitle,\n            name: parameterModel.parameterName + '2',\n            hasTranslation: false,\n            readonly: false,\n            formConfig: {\n              type: 'textbox',\n              inputType: 'currency',\n              value: this.getExtraDefaultValue(parameterModel)?.defaultValue2,\n              //  columnWidth: 2,\n              validators: parameterModel.isMandatory ? this.getRequiredValidator() : undefined,\n            },\n          },\n        ];\n      case 'NumericBox':\n        return [\n          {\n            label: parameterModel.parameterTitle,\n            name: parameterModel.parameterName,\n            hasTranslation: false,\n            readonly: false,\n            formConfig: {\n              type: 'textbox',\n              inputType: 'number',\n              value: this.getExtraDefaultValue(parameterModel)?.defaultValue1,\n              //  columnWidth: 2,\n              validators: parameterModel.isMandatory ? this.getRequiredValidator() : undefined,\n            },\n          },\n        ];\n      // case 'NumerixBox':\n      //   return [\n      //     {\n      //       label: parameterModel.parameterTitle,\n      //       name: parameterModel.parameterName,\n      //       hasTranslation: false,\n      //       readonly: false,\n      //       formConfig: {\n      //         type: 'textbox',\n      //         inputType: 'number',\n      //         value: parameterModel.defaultValue1,\n      //         //  columnWidth: 2,\n      //       },\n      //     },\n      //   ];\n      case 'NumericRangeBox':\n        return [\n          {\n            label: 'از ' + parameterModel.parameterTitle,\n            name: parameterModel.parameterName + '1',\n            hasTranslation: false,\n            readonly: false,\n            formConfig: {\n              type: 'textbox',\n              inputType: 'number',\n              value: this.getExtraDefaultValue(parameterModel, '1')?.defaultValue1,\n              //  columnWidth: 2,\n              validators: parameterModel.isMandatory ? this.getRequiredValidator() : undefined,\n            },\n          },\n          {\n            label: 'تا ' + parameterModel.parameterTitle,\n            name: parameterModel.parameterName + '2',\n            hasTranslation: false,\n            readonly: false,\n            formConfig: {\n              type: 'textbox',\n              inputType: 'number',\n              value: this.getExtraDefaultValue(parameterModel, '2')?.defaultValue2,\n              //  columnWidth: 2,\n              validators: parameterModel.isMandatory ? this.getRequiredValidator() : undefined,\n            },\n          },\n        ];\n      case 'Hidden':\n        return [\n          {\n            label: parameterModel.parameterTitle,\n            name: parameterModel.parameterName,\n            hasTranslation: false,\n            readonly: false,\n            formConfig: {\n              type: 'textbox',\n              value: this.getExtraDefaultValue(parameterModel)?.defaultValue1,\n              hidden: true,\n              validators: parameterModel.isMandatory ? this.getRequiredValidator() : undefined,\n            },\n          },\n        ];\n      default:\n        return [\n          {\n            label: parameterModel.parameterTitle,\n            name: parameterModel.parameterName,\n            hasTranslation: false,\n            readonly: false,\n            formConfig: {\n              type: 'textbox',\n              value: this.getExtraDefaultValue(parameterModel)?.defaultValue1,\n            },\n          },\n        ];\n    }\n  }\n\n  formReadyCallback(e: any): void {\n    this.reactiveFormRef = e;\n    let finalFilter = this.extractHiddenFilters();\n    this.filterFormInit.emit(finalFilter);\n  }\n\n  getRequiredValidator(): GeneralFormFieldValidatorInterface[] {\n    return [\n      {\n        name: 'required',\n        validator: Validators.required,\n      },\n    ];\n  }\n\n  getExtraDefaultValue = (\n    parameterModel: ReportXParameterModel,\n    namePostfix: string = ''\n  ): { defaultValue1: any; defaultValue2: any } => {\n    if (this.extraDefaultValues()[parameterModel.parameterName.replace(/@/g, '') + namePostfix]) {\n      return this.extraDefaultValues()[\n        parameterModel.parameterName.replace(/@/g, '') + namePostfix\n      ];\n    } else {\n      if (parameterModel.isExternalValue) {\n        this.externalValueNotProvided = true;\n      }\n      if (\n        parameterModel.parameterType === 'CheckList' ||\n        parameterModel.parameterType === 'CheckListStringArray' ||\n        parameterModel.parameterType === 'ComboBox'\n      ) {\n        return {\n          defaultValue1: parameterModel.defaultValue1?.split(','),\n          defaultValue2: undefined\n        };\n      } else if (\n        parameterModel.parameterType === 'DateRangeBox' &&\n        (parameterModel.defaultValue1 === 'FiscalStartDate' || parameterModel.defaultValue2 === 'FiscalEndDate')\n      ) {\n        return {\n          defaultValue1: this.startDate,\n          defaultValue2: this.endDate,\n        };\n      } else {\n        return {\n          defaultValue1: parameterModel.defaultValue1,\n          defaultValue2: parameterModel.defaultValue2,\n        };\n      }\n    }\n  };\n\n  async getAccYearDetail() {\n    await combineLatest([\n      this._authSandbox.accYearItems$,\n      this._authSandbox.selectedAccYear$,\n    ]).subscribe(([items, item]) => {\n      this.accyear = item;\n\n      this.accYearItems = items;\n      this.selectedAccYear = this.accYearItems.find(x => x.accYear == item);\n\n      if (this.selectedAccYear) {\n        this.startDate = this.selectedAccYear.startDate;\n        this.endDate = this.selectedAccYear.endDate;\n      }\n    });\n  }\n}\n","<app-general-simple-data-entry\n  class=\"general-filter-form\"\n  *ngIf=\"formfields\"\n  [id]=\"formId()\"\n  [columnCount]=\"columnCount()\"\n  [fields]=\"formfields\"\n  [hideFooter]=\"hideFooter()\"\n  [hideBorder]=\"hideBorder()\"\n  [noGutter]=\"noGutter()\"\n  [hideSideSpacing]=\"hideSideSpacing()\"\n  [hideSaveButton]=\"hideSaveButton()\"\n  [hideCancelButton]=\"hideCancelButton()\"\n  [showFooterOnTop]=\"showFooterOnTop()\"\n  [modalMode]=\"modalMode()\"\n  (formReadyCallback)=\"formReadyCallback($event)\"\n  (submitCallback)=\"submit($event)\"\n  (cancelCallback)=\"abort()\"\n></app-general-simple-data-entry>\n\n<ng-container *ngIf=\"isLoading\">\n  <span class=\"general-filter-form__overlay\" [class.ghcaf__overlay--show]=\"isLoading\">\n    <ui-spinner [show]=\"true\"></ui-spinner>\n  </span>\n</ng-container>\n\n","import { Component, Input, OnInit, ViewChild } from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport { Subscription } from 'rxjs';\nimport { AppConfigService } from '../../../services';\nimport { ConfigSandbox } from '../../../store';\nimport { GeneralListDataEntryComponent } from '../general-list-data-entry/general-list-data-entry.component';\nimport { ModalStatus } from '../general-list-data-entry/general-list-modal-data-entry/modal-status';\nimport { GeneralListDepsService } from '../general-simple-list/general-list-deps.service';\nimport { MasterDataPageInputStrategy } from './master-data-page-input-strategy';\n\n@Component({\n  selector: 'app-general-master-data-list',\n  templateUrl: './general-master-data-list.component.html',\n  styleUrls: ['./general-master-data-list.component.css'],\n})\nexport class GeneralMasterDataListComponent\n  extends GeneralListDataEntryComponent\n  implements OnInit\n{\n  @Input() dataInput: MasterDataPageInputStrategy;\n  subscription: Subscription;\n  id: string;\n  fieldsSubscription: Subscription;\n  constructor(\n    private appConfigService: AppConfigService,\n    deps: GeneralListDepsService,\n    private translateService: TranslateService,\n    private configSandBox: ConfigSandbox\n  ) {\n    super(deps);\n  }\n\n  runOnmodalClosed(submit: boolean) {\n    if (submit) this.dataInput.reset();\n  }\n\n  onFormValuesChanged = (values: any) => {\n    if (this.dataInput?.formValuesChange) this.dataInput?.formValuesChange(values);\n  };\n\n  onModalTypeChanged($event: ModalStatus) {\n    this.dataInput.modalType = $event;\n    if ($event == 'new' || $event == 'edit') {\n      this.dataInput.onModalOpened();\n    }\n  }\n\n  override ngOnDestroy(): void {\n    this.subscription?.unsubscribe();\n    this.fieldsSubscription?.unsubscribe();\n  }\n\n  override removeCallback = (data: any) => {\n    this.dataInput.removeCallBack(data).subscribe(() => (this.reload = Math.random()));\n  };\n\n  @ViewChild('component') component: GeneralListDataEntryComponent;\n  override async ngOnInit() {\n    this.dataInput.config(this.deps, this.configSandBox);\n    this.fieldsSubscription = this.dataInput.finalFields.subscribe(fields => {\n      this.fields = fields;\n    });\n    await this.dataInput.onInit();\n\n    this.allowReorder = this.dataInput.allowReorder;\n    this.showDownloadBtn = !!this.dataInput.oDataEntity;\n    this.oDataEntity = this.dataInput.oDataEntity;\n    this.oDataHttpHeaders = this.dataInput.oDataHttpHeaders;\n    this.saveApi = this.dataInput.saveApi;\n    this.hideEditButton = this.dataInput.hideEditButton;\n    this.hideRemoveButton = this.dataInput.hideRemoveButton;\n    this.beforeSaveCallback = this.dataInput.beforeSaveCallback;\n    this.oDataServer = this.deps.appConfigService.config.api.baseUrl;\n    this.oDataTable = 'api/general/odata';\n\n    this.id = this.dataInput.id;\n    this.isMultipleSelect = false;\n  }\n\n  override selectHandler: (selectedRows: any) => void = selectedRows => {\n    if (this.dataInput) this.dataInput.setSelectedRow(selectedRows);\n  };\n}\n","<app-general-list-data-entry\n  *ngIf=\"id\"\n  [uniquePageName]=\"this.dataInput.uniquePageName\"\n  [oDataTable]=\"oDataTable\"\n  [oDataServer]=\"oDataServer\"\n  [oDataEntity]=\"oDataEntity\"\n  [oDataHttpHeaders]=\"oDataHttpHeaders\"\n  [addNewCallback]=\"addNewHandler\"\n  [hideAddNewButton]=\"!dataInput.hasNewAccess\"\n  [saveApi]=\"saveApi\"\n  [fields]=\"fields\"\n  [formColumnCount]=\"formColumnCount\"\n  [fieldsetConfig]=\"fieldsetConfig\"\n  [gridRowMoreActions]=\"dataInput.rowMoreActions\"\n  (valuesChanged)=\"onFormValuesChanged($event)\"\n  (modalClosed)=\"runOnmodalClosed($event)\"\n  [identityFieldName]=\"dataInput.identityField\"\n  [hideEditButton]=\"hideEditButton\"\n  [hideRemoveButton]=\"hideRemoveButton\"\n  [showDownloadBtn]=\"showDownloadBtn\"\n  [isMultipleSelect]=\"isMultipleSelect\"\n  [hideCheckboxInCheckableGrid]=\"!this.dataInput.uniquePageName\"\n  (modalType)=\"onModalTypeChanged($event)\"\n  [gridCustomActions]=\"gridCustomActions\"\n  [gridCollapseRows]=\"gridCollapseRows\"\n  [gridCollapseLevel]=\"gridCollapseLevel\"\n  [allowReorder]=\"allowReorder\"\n  [reorderFieldName]=\"reorderFieldName\"\n  [saveRowIndexCallback]=\"saveRowIndexCallback\"\n  [selectCallback]=\"selectHandler\"\n  [beforeSaveCallback]=\"beforeSaveCallback\"\n  [hasNew]=\"this.dataInput.hasNew\"\n  [modalMode]=\"true\"\n>\n</app-general-list-data-entry>\n","import { Component, Input, OnInit } from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { ModalStatus } from '../general-list-data-entry/general-list-modal-data-entry/modal-status';\nimport { MasterDataSaveApi } from '../general-master-data-list/master-data-save-api';\nimport { GeneralListDepsService } from '../general-simple-list/general-list-deps.service';\nimport { ConfigSandbox } from '../../../store/sandboxes/config.sandbox';\nimport { GeneralListDataEntryComponent } from '../general-list-data-entry/general-list-data-entry.component';\nimport { MasterDataPageInputStrategy } from '../general-master-data-list/master-data-page-input-strategy';\n\n@Component({\n  selector: 'app-general-master-data-tree',\n  templateUrl: './general-master-data-tree.component.html',\n  styleUrls: ['./general-master-data-tree.component.css'],\n})\nexport class GeneralMasterDataTreeComponent\n  extends GeneralListDataEntryComponent\n  implements OnInit\n{\n  @Input() dataInput: MasterDataPageInputStrategy;\n  mapObjectToList: (response: any) => any = response => [{ ...response }];\n  subscription: Subscription;\n  id: string;\n  fieldsSubscription: Subscription;\n  constructor(deps: GeneralListDepsService, private configSandBox: ConfigSandbox) {\n    super(deps);\n    this.apiServer = this.deps.appConfigService.config.api.baseUrl;\n  }\n\n  runOnmodalClosed(submit: boolean) {\n    if (submit) this.dataInput.reset();\n  }\n\n  onFormValuesChanged = (values: any) => {\n    if (this.dataInput?.formValuesChange) this.dataInput?.formValuesChange(values);\n  };\n\n  onModalTypeChanged($event: ModalStatus) {\n    this.dataInput.modalType = $event;\n    if ($event == 'new' || $event == 'edit') {\n      this.dataInput.onModalOpened();\n    }\n  }\n\n  override ngOnDestroy(): void {\n    this.subscription?.unsubscribe();\n    this.fieldsSubscription?.unsubscribe();\n  }\n\n  override removeCallback = (data: any) => {\n    this.dataInput.removeCallBack(data).subscribe(() => (this.reload = Math.random()));\n  };\n\n  override async ngOnInit() {\n    this.dataInput.config(this.deps, this.configSandBox);\n    this.fieldsSubscription = this.dataInput.finalFields.subscribe(fields => {\n      this.fields = fields;\n    });\n    await this.dataInput.onInit();\n\n    this.allowReorder = this.dataInput.allowReorder;\n    this.showDownloadBtn = !!this.dataInput.oDataEntity;\n    this.oDataEntity = this.dataInput.oDataEntity;\n    this.oDataHttpHeaders = this.dataInput.oDataHttpHeaders;\n    this.apiHeaders = this.dataInput.apiHttpHeaders;\n    this.saveApi = this.dataInput.saveApi;\n    this.hideEditButton = this.dataInput.hideEditButton;\n    this.hideRemoveButton = this.dataInput.hideRemoveButton;\n    this.beforeSaveCallback = this.dataInput.beforeSaveCallback;\n    this.oDataServer = this.deps.appConfigService.config.api.baseUrl;\n    this.oDataTable = 'api/general/odata';\n\n    this.id = this.dataInput.id;\n    this.isMultipleSelect = false;\n  }\n\n  override selectHandler: (selectedRows: any) => void = selectedRows => {\n    if (this.dataInput) this.dataInput.setSelectedRow(selectedRows);\n  };\n}\n","<app-general-list-data-entry\n  *ngIf=\"id\"\n  [uniquePageName]=\"this.dataInput.uniquePageName\"\n  [fields]=\"fields\"\n  [addNewCallback]=\"addNewHandler\"\n  [hideAddNewButton]=\"!dataInput.hasNewAccess\"\n  [hideCheckboxInCheckableGrid]=\"!this.dataInput.uniquePageName\"\n  [apiServer]=\"apiServer\"\n  [apiUrl]=\"'api/tree/get'\"\n  [apiHeaders]=\"apiHeaders\"\n  [transformer]=\"mapObjectToList\"\n  [childItemsPath]=\"'items'\"\n  [hideEditButton]=\"hideEditButton\"\n  [hideRemoveButton]=\"hideRemoveButton\"\n  (modalType)=\"onModalTypeChanged($event)\"\n  [gridCustomActions]=\"gridCustomActions\"\n  [gridCollapseRows]=\"gridCollapseRows\"\n  [gridCollapseLevel]=\"gridCollapseLevel\"\n  [allowReorder]=\"allowReorder\"\n  [reorderFieldName]=\"reorderFieldName\"\n  [saveRowIndexCallback]=\"saveRowIndexCallback\"\n  [selectCallback]=\"selectHandler\"\n  [saveApi]=\"saveApi\"\n  [formColumnCount]=\"formColumnCount\"\n  [fieldsetConfig]=\"fieldsetConfig\"\n  [gridRowMoreActions]=\"dataInput.rowMoreActions\"\n  (valuesChanged)=\"onFormValuesChanged($event)\"\n  (modalClosed)=\"runOnmodalClosed($event)\"\n  [identityFieldName]=\"dataInput.identityField\"\n  [oDataEntity]=\"oDataEntity\"\n  [showDownloadBtn]=\"showDownloadBtn\"\n  [isMultipleSelect]=\"isMultipleSelect\"\n  [beforeSaveCallback]=\"beforeSaveCallback\"\n  [hasNew]=\"this.dataInput.hasNew\"\n  [modalMode]=\"true\"\n  [treeIdBinding]=\"treeIdBinding\"\n  [treeTitleBinding]=\"treeTitleBinding\"\n  [treeExpandedBinding]=\"treeExpandedBinding\"\n  [treeChildrenBinding]=\"treeChildrenBinding\"\n  [treeExpandDepth]=\"treeExpandDepth\"\n  [treeSelectedNode]=\"treeSelectedNode\"\n  [treeSideIconTemplate]=\"treeSideIconTemplate\"\n>\n</app-general-list-data-entry>\n","import { Component, Input, OnInit, ViewChild } from '@angular/core';\nimport {\n  MissingTranslationHandler,\n  MissingTranslationHandlerParams,\n  TranslateService,\n} from '@ngx-translate/core';\nimport { finalize, firstValueFrom, map, Observable } from 'rxjs';\nimport { GeneralODataTableName } from '../../../constants';\nimport {\n  GridColumnAggregationTypes,\n  GridColumnDataTypes,\n  ToolbarCalculateDateTypes,\n  ToolbarExtractTypes,\n  ToolbarFetchReasonTypes,\n  ToolbarReportTypes,\n  ToolbarStockCardexReportTypes,\n} from '../../../enums';\nimport {\n  AccYearItemInterface,\n  GeneralActionButtonInterface,\n  GeneralActionInterface,\n  GeneralFieldConfigInterface,\n  GridConfigInterface,\n  InterSystemGridRowActionResponse,\n  ODataResponse,\n} from '../../../models';\nimport { ReviewDataInterface } from '../../../models/review/review-data.interface';\nimport { ReviewTabChildren, TabColumnName } from '../../../models/review/review-tab.model';\nimport { AppConfigService } from '../../../services/app-config.service';\nimport { AppMenuApiService } from '../../../services/app-menu-api.service';\nimport { LoadRemoteAssetService } from '../../../services/load-remote-asset.service';\nimport { ReportFormService } from '../../../services/report-form.service';\nimport { Utility } from '../../../utils';\nimport { FararuToastService } from '../../toast/fararu-toast.service';\nimport { GeneralListManagementComponent } from '../general-list-management/general-list-management.component';\n\nexport class MyMissingTranslationHandler implements MissingTranslationHandler {\n  handle(params: MissingTranslationHandlerParams) {\n    return params.key.split('.')[params.key.split('.').length - 1];\n  }\n}\n\n@Component({\n  selector: 'app-general-report-form',\n  templateUrl: './general-report-form.component.html',\n  styleUrl: './general-report-form.component.scss',\n})\nexport class GeneralReportFormComponent implements OnInit {\n  private readonly baseUrl = '/api/Review';\n  private filterFormDefaultValue: any;\n  fields: GeneralFieldConfigInterface[];\n  getConfigData: GridConfigInterface;\n  progress: number = 0;\n  accYearItems: AccYearItemInterface[] = [];\n  headerCustomActions: GeneralActionButtonInterface[] = [];\n  extractType: ToolbarExtractTypes;\n  fetchReason: ToolbarFetchReasonTypes;\n  reportType: ToolbarReportTypes;\n  stockCardexReportType: ToolbarStockCardexReportTypes;\n  calculateDateType: ToolbarCalculateDateTypes;\n  showCartonDigit: boolean;\n  rcvAccounthowInitialValue: boolean;\n  selectedActiveTabIndexFromTabGrid: number;\n  @Input({ required: true }) reviewData: ReviewDataInterface;\n  @Input({ required: true }) reviewTab: ReviewTabChildren;\n  @Input({ required: true }) reportId: number;\n  @Input() extraDefaultValues: Record<string, any> = {};\n  @Input() isAutoRun = true;\n  filterFormValues: Record<string, any> = {};\n  gridRelatedLinkActions: any = {};\n  gridCheckedRows: any = {};\n  gridAggregateData: Record<string, number> = {};\n  loadSubscriptions: any = {};\n  isLoading: boolean = false;\n\n  selectedAccYear: AccYearItemInterface;\n  selectedCenterId: number;\n  showGroupingPanel: boolean = false;\n  @ViewChild('grid', { static: false }) gridComponent: GeneralListManagementComponent;\n  columnNames: TabColumnName[];\n  oDataTable: string | undefined = undefined;\n  reload: number = new Date().getTime();\n  tabKey: string;\n\n  constructor(\n    public appConfigService: AppConfigService,\n    private translateService: TranslateService,\n    private reportFormService: ReportFormService,\n    private toast: FararuToastService,\n    private _appMenuApiService: AppMenuApiService,\n    private _loadRemoteAssetService: LoadRemoteAssetService\n  ) {}\n\n  async ngOnInit() {\n    this.translateService.missingTranslationHandler = new MyMissingTranslationHandler();\n    this.headerCustomActions.push({\n      formAttr: 'Filter-Report-Form-' + this.reportId,\n      tooltip: 'اجرای گزارش',\n      text: 'اجرا',\n      varient: 'fill',\n      color: 'primary',\n    });\n\n    if (this.reviewTab) {\n      this.tabKey = this.reviewTab.Key;\n      await this.loadGridColumns();\n      await this.loadGridRelatedLinkActions();\n\n      this.reportFormService\n        .getReviewColumnNames(\n          {\n            tabName: this.tabKey,\n            Name: this.tabKey,\n          },\n          this.baseUrl\n        )\n        .subscribe({\n          next: cn => (this.columnNames = cn),\n          error: () => {\n            this.toast.show({\n              type: 'error',\n              text: this.translateService.instant('review.loadColumnsError'),\n            });\n          },\n        });\n\n      if (this.isAutoRun && this.filterFormDefaultValue) {\n        this.loadGridData();\n      }\n    }\n  }\n\n  saveBlobAsFile(blob: Blob, filename: string) {\n    const link = document.createElement('a');\n    link.href = window.URL.createObjectURL(blob);\n    link.target = '_blank';\n    link.download = filename;\n    link.click();\n    window.URL.revokeObjectURL(link.href);\n  }\n\n  ngOnDestroy() {}\n\n  private generateApiData(): ReviewDataInterface {\n    const data: ReviewDataInterface = this.reviewData;\n    data.TabName = this.tabKey;\n    for (const key in this.filterFormValues) {\n      if (this.filterFormValues[key] != undefined) {\n        data.InputParameter[key] = this.filterFormValues[key];\n      }\n    }\n    return data;\n  }\n\n  gridLoadStarted() {\n    this.getGridAggregateData();\n  }\n\n  public findCurrentTabServerModeValue = (tabItem: ReviewTabChildren): boolean => {\n    return this.reviewData.ReviewModel.ReviewTabs.find(x => x.Key == tabItem.formName)\n      ?.isServerMode;\n  };\n\n  private async loadGridData() {\n    this.isLoading = true;\n\n    for (let rowKey in this.loadSubscriptions) {\n      this.loadSubscriptions[rowKey]?.unsubscribe();\n    }\n\n    const apiData = this.generateApiData();\n    if (!apiData) return;\n\n    const params = Object.entries(this.filterFormValues).map(([key, value]) => ({\n      keyName: key,\n      keyValue: value.toString(),\n    }));\n    this.loadSubscriptions[this.tabKey] = this.reportFormService\n      .loadReport(apiData, 'api', params)\n      .pipe(\n        finalize(() => {\n          this.isLoading = false;\n        })\n      )\n      .subscribe(() => {\n        this.oDataTable = GeneralODataTableName;\n        this.reload = new Date().getTime();\n      });\n  }\n\n  private async loadGridRelatedLinkActions() {\n    try {\n      if (!this.gridRelatedLinkActions[this.tabKey]) {\n        const relatedLinkActions = await firstValueFrom(this.getGridRowMoreActions());\n        this.gridRelatedLinkActions[this.tabKey] = [...relatedLinkActions];\n      }\n      return Promise.resolve([]);\n    } catch (e) {\n      console.error(`unable to load \"${this.tabKey}\" properties`);\n      return Promise.reject();\n    }\n  }\n\n  private async loadGridColumns() {\n    const reviewTab = this.reviewData.ReviewModel.ReviewTabs.find(\n      x => x.DataEntityName == this.tabKey\n    );\n\n    if (!reviewTab) {\n      this.toast.show({\n        type: 'error',\n        text: this.translateService.instant('review.tabKeyIncompatibleError', {\n          key: this.tabKey,\n        }),\n        closeByUser: true,\n      });\n    }\n\n    const columns = reviewTab.GridInfo.Columns.filter((col: any) => col.ShowPlace !== 2);\n    const titles = await this.getColumnTitles(columns);\n    const props = columns\n      .filter(\n        x =>\n          x.FieldName != 'FilterID' &&\n          x.FieldName != 'FilterId' &&\n          x.FieldName != 'FilterName' &&\n          x.FieldName != 'IsSelected' &&\n          x.FieldName != 'ID'\n      )\n      .sort((c1, c2) => {\n        if (c1.VisibleIndex == c2.VisibleIndex) {\n          return titles.get(c1.FieldName) < titles.get(c2.FieldName) ? -1 : 1;\n        } else if (c1.VisibleIndex == 0) return 1;\n        else if (c2.VisibleIndex == 0) return 0;\n        else {\n          return c1.VisibleIndex - c2.VisibleIndex;\n        }\n      });\n\n    this.fields = props.map(item => {\n      const header: string = item.FieldTitle ?? item.FieldName;\n      if (item.ColumnSummaries.length != 0) {\n        var aggregateType: number =\n          item.ColumnSummaries[0].SummaryType == 0\n            ? GridColumnAggregationTypes.Sum\n            : item.ColumnSummaries[0].SummaryType == 3\n            ? GridColumnAggregationTypes.Count\n            : null;\n      }\n\n      const dataType = Utility.maptVaranegarDataTypeToWijmoGridDataType(item.DataType);\n      return {\n        label: header,\n        name: Utility.toCamelCase(item.FieldName),\n        listConfig: {\n          dataType: dataType,\n          format: dataType == GridColumnDataTypes.NUMBER ? 'G3' : undefined,\n          hidden: !item.IsVisible,\n          aggregate: aggregateType,\n        },\n      };\n    });\n  }\n\n  async getColumnTitles(columns: any[]): Promise<Map<string, string>> {\n    const translations = new Map();\n    for (let index = 0; index < columns.length; index++) {\n      const element = columns[index];\n      translations.set(element.FieldName, element.FieldTitle);\n    }\n    return translations;\n  }\n\n  private getGridAggregateData = () => {\n    if (this.gridComponent) {\n      const filter = this.gridComponent.getOdataFiltersEncoded()?.trim() ?? '';\n      this.reportFormService\n        .getAggregate(filter, {\n          name: this.reviewData.ReviewModel.ReviewName,\n          tabName: this.tabKey,\n        })\n        .subscribe({\n          next: res => {\n            this.gridAggregateData = res;\n          },\n          error: () => {\n            this.gridAggregateData = {};\n          },\n        });\n    }\n  };\n\n  getGridRowMoreActions = (): Observable<GeneralActionInterface[]> => {\n    return this._appMenuApiService.getGridRowActionsByEntityModel(this.tabKey).pipe(\n      map((response: ODataResponse<InterSystemGridRowActionResponse>) => {\n        if (response?.value?.length > 0) {\n          const gridRowRelatedActions = response.value.map(\n            (item: InterSystemGridRowActionResponse) => ({\n              text: item.caption,\n              click: (event: any, args: any) => {\n                this._loadRemoteAssetService.openInterSystemForm2(\n                  item,\n                  'view',\n                  args[Utility.toCamelCase(item.fkColumnName)]\n                  // e.args[this.resultField]\n                );\n              },\n            })\n          );\n          return [...gridRowRelatedActions];\n        } else {\n          return [];\n        }\n      })\n    );\n  };\n\n  submit(e: any) {\n    for (const key in e) {\n      if (e[key] != undefined) {\n        this.filterFormValues[key] = e[key];\n      }\n    }\n    this.loadGridData();\n  }\n\n  filterFormInitialized(e: any) {\n    this.filterFormDefaultValue = e;\n    for (const key in e) {\n      if (e[key] != undefined) {\n        this.filterFormValues[key] = e[key];\n      }\n    }\n    if (this.isAutoRun) {\n      this.loadGridData();\n    }\n  }\n\n  getFieldsFromGridConfig(gridConfig: GridConfigInterface): GeneralFieldConfigInterface[] {\n    if (!gridConfig?.columns?.columns) {\n      return [];\n    }\n\n    return gridConfig.columns.columns.map(column => ({\n      label: column.header,\n      name: column.binding,\n      listConfig: {\n        dataType: column.dataType,\n        hidden: !column.visible,\n        aggregate: column.aggregate,\n      },\n    }));\n  }\n}\n","<app-general-custom-form\n  [hasGiftButton]=\"false\"\n  [hasAsideToggleButton]=\"false\"\n  [hasSaveButton]=\"false\"\n  [hasPrintButton]=\"false\"\n  [hasSaveAndPrintButton]=\"false\"\n  [bottomSheetExpanded]=\"false\"\n  [headerCustomActions]=\"headerCustomActions\"\n  [hideFooterBorder]=\"true\"\n  [isLoading]=\"isLoading\"\n>\n  <app-general-filter-form\n    [reportId]=\"reportId\"\n    [extraDefaultValues]=\"extraDefaultValues\"\n    [showFooterOnTop]=\"true\"\n    [hideSideSpacing]=\"true\"\n    [hideBorder]=\"true\"\n    [hideFooter]=\"true\"\n    [formId]=\"'Filter-Report-Form-' + this.reportId\"\n    (reportSubmit)=\"submit($event)\"\n    (filterFormInit)=\"filterFormInitialized($event)\"\n  >\n  </app-general-filter-form>\n\n  <ng-template #footer>\n    <app-general-list-management\n      #grid\n      [floatToolbar]=\"true\"\n      [oDataServer]=\"appConfigService.config.api.baseUrl\"\n      [oDataTable]=\"oDataTable\"\n      [oDataEntity]=\"tabKey\"\n      [gridRowMoreActions]=\"gridRelatedLinkActions?.[reviewTab.Key] ?? []\"\n      [hideCheckboxInCheckableGrid]=\"true\"\n      [showFilters]=\"true\"\n      [fields]=\"fields\"\n      [reload]=\"reload\"\n      [footerAggregateData]=\"gridAggregateData\"\n      (gridLoadStarted)=\"gridLoadStarted()\"\n    ></app-general-list-management>\n  </ng-template>\n</app-general-custom-form>\n","import { HttpHeaders } from '@angular/common/http';\nimport { Component } from '@angular/core';\nimport { ActivatedRoute, Params } from '@angular/router';\nimport { FararuToastService } from '../../../toast';\nimport { GeneralODataService } from './../../../../api/general-odata.service';\nimport { ReviewDataInterface } from './../../../../models/review/review-data.interface';\nimport { ReviewTab } from './../../../../models/review/review-tab.model';\nimport { TranslateService } from '@ngx-translate/core';\nimport { ReportFormService } from './../../../../services/report-form.service';\n@Component({\n  selector: 'app-general-aditional-report',\n  templateUrl: './general-aditional-report.component.html',\n  styleUrl: './general-aditional-report.component.scss',\n})\nexport class GeneralAditionalReportComponent {\n  reviewData: ReviewDataInterface;\n  reviewTab: ReviewTab<string>;\n  reportId: number;\n  extraDefaultValues: Record<string, any> = {};\n  isAutoRun: boolean = true;\n\n  /**\n   *\n   */\n  constructor(\n    private _route: ActivatedRoute,\n    private _generalODataService: GeneralODataService,\n    private _toast: FararuToastService,\n    private _translateService: TranslateService,\n    private _reportFormService: ReportFormService\n  ) {}\n\n  async ngOnInit() {\n    this._route.params.subscribe(async (params: Params) => {\n      if (params['id']) {\n        this.reportId = params['id'];\n        let result = await this._reportFormService.loadReportData(this.reportId);\n        this.reviewData = result.reviewData;\n        this.reviewTab = result.reviewTab;\n        this.isAutoRun = result.isAutoRun;\n      }\n    });\n\n    this._route.queryParams.subscribe((params: Params) => {\n      for (const key in params) {\n        this.extraDefaultValues[key] = decodeURIComponent(params[key]);\n      }\n    });\n  }\n\n}\n","@if (reviewData && reviewTab) {\n<app-general-report-form\n  [reviewData]=\"reviewData\"\n  [reviewTab]=\"reviewTab\"\n  [reportId]=\"reportId\"\n  [extraDefaultValues]=\"extraDefaultValues\"\n  [isAutoRun]=\"isAutoRun\"\n></app-general-report-form>\n}\n","import { OverlayModule } from '@angular/cdk/overlay';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { RouterModule } from '@angular/router';\nimport { WjGridSheetModule } from '@grapecity/wijmo.angular2.grid.sheet';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { AngularSvgIconModule } from 'angular-svg-icon';\nimport { ShortcutModule } from '../../modules/shortcut.module';\nimport { FararuDesignSystemLibModule } from '../fararu-design-system-lib.module';\nimport { ModalModule } from '../modal/modal.module';\nimport { GeneralCustomFormComponent } from './general-custom-form/general-custom-form.component';\nimport { GeneralDualListDataEntryComponent } from './general-dual-list-data-entry/general-dual-list-data-entry.component';\nimport { GeneralDualListComponent } from './general-dual-list/general-dual-list.component';\nimport { GeneralFilterFormComponent } from './general-filter-form/general-filter-form.component';\nimport { GeneralHeaderContentAsideFooterComponent } from './general-header-content-aside-footer/general-header-content-aside-footer.component';\nimport { GeneralListAssignmentComponent } from './general-list-assignment/general-list-assignment.component';\nimport { GeneralListDataEntryAssignmentComponent } from './general-list-data-entry-assignment/general-list-data-entry-assignment.component';\nimport { GeneralListDataEntryComponent } from './general-list-data-entry/general-list-data-entry.component';\nimport { GeneralListModalDataEntryComponent } from './general-list-data-entry/general-list-modal-data-entry/general-list-modal-data-entry.component';\nimport { GeneralListManagementComponent } from './general-list-management/general-list-management.component';\nimport { GeneralMasterDataListComponent } from './general-master-data-list/general-master-data-list.component';\nimport { GeneralMasterDataTreeComponent } from './general-master-data-tree/general-master-data-tree.component';\nimport { GeneralAditionalReportComponent } from './general-report-form/general-aditional-report/general-aditional-report.component';\nimport { GeneralReportFormComponent } from './general-report-form/general-report-form.component';\nimport { GeneralSimpleDataEntryComponent } from './general-simple-data-entry/general-simple-data-entry.component';\nimport { GeneralSimpleListComponent } from './general-simple-list/general-simple-list.component';\nimport { GeneralStandardModalForm } from './general-standard-modal-form/general-standard-modal-form.component';\nimport { GeneralWorksheetPickerModalComponent } from './general-worksheet-picker-modal/general-worksheet-picker-modal.component';\nimport { AttachmentsModalComponent } from './modals/attachments-modal/attachments-modal.component';\nimport { GeneralSelectListModalComponent } from './modals/general-select-list-modal/general-select-list-modal.component';\nimport { NotesModalComponent } from './modals/notes-modal/notes-modal.component';\nimport { ProductSeriesModalComponent } from './modals/product-series-modal/product-series-modal.component';\nimport { SimpleListShowPlanComponent } from './simple-list-show-plan/simple-list-show-plan.component';\n\nconst GeneralTemplates = [\n  GeneralSimpleListComponent,\n  GeneralListDataEntryComponent,\n  GeneralSimpleDataEntryComponent,\n  GeneralListManagementComponent,\n  GeneralDualListComponent,\n  GeneralListDataEntryAssignmentComponent,\n  GeneralDualListDataEntryComponent,\n  GeneralHeaderContentAsideFooterComponent,\n  GeneralStandardModalForm,\n  GeneralMasterDataListComponent,\n  GeneralMasterDataTreeComponent,\n  GeneralWorksheetPickerModalComponent,\n  GeneralCustomFormComponent,\n  GeneralListAssignmentComponent,\n  GeneralFilterFormComponent,\n  GeneralReportFormComponent,\n  GeneralAditionalReportComponent,\n];\n\n@NgModule({\n  imports: [\n    WjGridSheetModule,\n    CommonModule,\n    FormsModule,\n    ReactiveFormsModule,\n    AngularSvgIconModule.forRoot(),\n    RouterModule,\n    FararuDesignSystemLibModule,\n    ModalModule,\n    TranslateModule,\n    ShortcutModule,\n    OverlayModule,\n  ],\n  declarations: [\n    ...GeneralTemplates,\n    SimpleListShowPlanComponent,\n    NotesModalComponent,\n    AttachmentsModalComponent,\n    ProductSeriesModalComponent,\n    GeneralListModalDataEntryComponent,\n    GeneralMasterDataListComponent,\n    GeneralMasterDataTreeComponent,\n    GeneralWorksheetPickerModalComponent,\n    GeneralSelectListModalComponent,\n  ],\n  exports: GeneralTemplates,\n  providers: [],\n})\nexport class FararuGenralTemplatesModule {}\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { GeneralPostRequestInterface, GeneralSaveApiInterface } from '../../../models';\nimport { HttpClient } from '@angular/common/http';\n\nexport class MasterDataSaveApi implements GeneralSaveApiInterface<any> {\n  constructor(private _http: HttpClient) {}\n  url: string;\n  save(request: GeneralPostRequestInterface<any>): Observable<any> {\n    return this._http.post(this.url, request);\n  }\n}\n","import { Observable, Subject, Subscription, finalize, lastValueFrom } from 'rxjs';\nimport { HttpHeaderNames } from '../../../constants';\nimport { GeneralActionInterface, GeneralFieldConfigInterface } from '../../../models';\nimport { ConfigSandbox } from '../../../store/sandboxes';\nimport { arraysAreEqual, deepCopy } from '../../../utils';\nimport { ModalStatus } from '../general-list-data-entry/general-list-modal-data-entry/modal-status';\nimport { GeneralListDepsService } from '../general-simple-list/general-list-deps.service';\nimport { MasterDataFieldConfig } from './master-data-field-config';\nimport { MasterDataSaveApi } from './master-data-save-api';\n\nexport abstract class MasterDataPageInputStrategy {\n  public modalType: ModalStatus;\n  public onModalOpened() {}\n\n  public onRowSelected() {}\n  public get selectedRow(): any {\n    return this._selectedRow;\n  }\n  private _selectedRow: any;\n  public setSelectedRow(row: any) {\n    this._selectedRow = row;\n    this.onRowSelected();\n  }\n\n  beforeSaveCallback(values: any): string | null | Promise<string | null> {\n    return null;\n  }\n\n  allowReorder: boolean = false;\n  uniquePageName: string;\n  private subscription: Subscription;\n  abstract oDataEntity: string | undefined;\n  abstract dataEntity: string | undefined;\n  httpHeaderEntity: string | undefined;\n  abstract fields: MasterDataFieldConfig[];\n  private initialFields: MasterDataFieldConfig[];\n  private init: boolean = true;\n\n  private _hasNewAccess: boolean = true;\n  public get hasNewAccess(): boolean {\n    return this._hasNewAccess;\n  }\n\n  private _hideEditButton: boolean;\n  public get hideEditButton() {\n    return this._hideEditButton;\n  }\n\n  private _hideRemoveButton: boolean;\n  public get hideRemoveButton(): boolean {\n    return this._hideRemoveButton;\n  }\n\n  private _id: any;\n  private _oDataHttpHeaders: { [x: string]: string };\n  private _apiHttpHeaders: { [x: string]: string };\n  private _finalFields: Subject<any> = new Subject();\n  public get finalFields() {\n    return this._finalFields.asObservable();\n  }\n  public get saveApi(): MasterDataSaveApi {\n    const api = new MasterDataSaveApi(this.deps.http);\n    api.url = this.dataEntity\n      ? `/api/${this.dataEntity}/post`\n      : `/api/${this.oDataEntity.substring(0, this.oDataEntity.length - 5)}MainData/post`;\n\n    return api;\n  }\n  public get oDataHttpHeaders(): { [x: string]: string } {\n    return this._oDataHttpHeaders;\n  }\n  public get apiHttpHeaders(): { [x: string]: string } {\n    return this.httpHeaderEntity\n      ? { ...this._apiHttpHeaders, Entity: this.httpHeaderEntity }\n      : this._apiHttpHeaders;\n  }\n  public get id(): any {\n    return this._id;\n  }\n  abstract translateHelperFunction(): (a: string) => string;\n  rowMoreActions: GeneralActionInterface[] = [];\n  fetchReason: number = 0;\n  identityField: string = 'id';\n  formValuesChange: (values: any) => void;\n  private refreshSubject = new Subject();\n  private _refresh$: Observable<any> = this.refreshSubject.asObservable();\n  public get refresh$() {\n    return this._refresh$;\n  }\n  refresh(fields: MasterDataFieldConfig[]) {\n    if (!arraysAreEqual(fields, this.fields)) {\n      this.fields = deepCopy(fields);\n      this.refreshSubject.next(Math.random());\n    }\n  }\n\n  hasNew: boolean | ((row: any) => string) = true;\n  hasEdit: boolean = true;\n  hasRemove: boolean = true;\n\n  newAccessNodeId: number | undefined = undefined;\n  editAccessNodeId: number | undefined = undefined;\n  removeAccessNodeId: number | undefined = undefined;\n  viewAccessNodeId: number | undefined = undefined;\n\n  reset() {\n    this.refresh(this.initialFields);\n  }\n\n  protected deps: GeneralListDepsService;\n  private configSandBox: ConfigSandbox;\n\n  config(deps: GeneralListDepsService, configSandBox: ConfigSandbox) {\n    this.deps = deps;\n    this.configSandBox = configSandBox;\n  }\n\n  async onInit() {\n    if (this.init) {\n      this.initialFields = deepCopy(this.fields);\n      this.init = false;\n    }\n    if (!this.hasEdit) this._hideEditButton = true;\n    else if (this.editAccessNodeId != undefined)\n      this._hideEditButton = !this.deps.userAccessService.userHasAccess(this.editAccessNodeId);\n\n    if (this.hasNew === false) this._hasNewAccess = false;\n    else if (this.newAccessNodeId != undefined)\n      this._hasNewAccess = this.deps.userAccessService.userHasAccess(this.newAccessNodeId);\n\n    if (!this.hasRemove) this._hideRemoveButton = true;\n    else if (this.removeAccessNodeId != undefined)\n      this._hideRemoveButton = !this.deps.userAccessService.userHasAccess(this.removeAccessNodeId);\n\n    await this.updateComponent();\n    this.subscription = this.refresh$.subscribe(async (ref: any) => {\n      await this.updateComponent();\n    });\n  }\n\n  async onDestroy() {\n    this.subscription?.unsubscribe();\n  }\n\n  async updateComponent() {\n    if (this.deps == undefined) return;\n    if (\n      this.viewAccessNodeId &&\n      !this.deps.userAccessService.userHasAccess(this.viewAccessNodeId)\n    ) {\n      this.deps.toastService.show({\n        type: 'error',\n        text: this.deps.translateService.instant('unauthorizedMessage'),\n      });\n      return;\n    }\n    this._id = await lastValueFrom(this.deps.translateService.get('شناسه'));\n    this._oDataHttpHeaders = {\n      [HttpHeaderNames.FETCH_REASON]: this.fetchReason.toString(),\n    };\n    this._apiHttpHeaders = {\n      [HttpHeaderNames.FETCH_REASON]: this.fetchReason.toString(),\n    };\n\n    const filteredListOfFields = [\n      ...this.fields.filter(it => it.visible || it.visible == undefined),\n    ];\n    const fields: GeneralFieldConfigInterface[] = filteredListOfFields.map((it, index) => ({\n      ...it,\n      label: this.deps.translateService.instant(this.translateHelperFunction()(it.translation)),\n      listConfig: {\n        ...it.listConfig,\n        width: undefined,\n      },\n    }));\n    fields.splice(0, 0, {\n      name: this.identityField,\n      label: this.id,\n      listConfig: { visible: false },\n    });\n    this._finalFields.next(fields);\n  }\n\n  removeCallBack(data: any) {\n    this.configSandBox.showGlobalLoading('DELETE_BASE_INFO');\n    return this.deps.http\n      .post(this.saveApi.url, {\n        collection: data,\n        savereason: 3,\n      })\n      .pipe(finalize(() => this.configSandBox.hideGlobalLoading('DELETE_BASE_INFO')));\n  }\n}\n","import { Component, Input, OnInit } from \"@angular/core\";\n\n@Component({\n  selector: \"app-aside-header-content-layout\",\n  templateUrl: \"./aside-header-content-layout.component.html\",\n  styleUrls: [\"./aside-header-content-layout.component.scss\"],\n})\nexport class AsideHeaderContentLayoutComponent implements OnInit {\n  @Input() noBodyPadding: boolean;\n  @Input() bodyHiddenOverflow: boolean;\n\n  constructor() {}\n\n  ngOnInit(): void {}\n}\n","<div class=\"ahc-layout\">\n  <div class=\"ahc-layout__aside\">\n    <ng-content select=\"[aside]\"></ng-content>\n  </div>\n  <div class=\"ahc-layout__content\">\n    <header class=\"ahc-layout__header flex-wrap\">\n      <ng-content select=\"[header]\"></ng-content>\n    </header>\n    <div\n      class=\"ahc-layout__body\"\n      [class.ahc-layout__body--no-padding]=\"noBodyPadding\"\n      [class.ahc-layout__body--hidden-overflow]=\"bodyHiddenOverflow\"\n    >\n      <ng-content select=\"[content]\"></ng-content>\n    </div>\n  </div>\n</div>\n","import {\n  Component,\n  EventEmitter,\n  Input,\n  OnInit,\n  Output,\n  ViewEncapsulation,\n} from \"@angular/core\";\n\n@Component({\n  selector: \"app-header-content-layout\",\n  templateUrl: \"./header-content-layout.component.html\",\n  styleUrls: [\"./header-content-layout.component.scss\"],\n  encapsulation: ViewEncapsulation.None,\n})\nexport class HeaderContentLayoutComponent implements OnInit {\n  @Input() showAddNewButton: boolean = false;\n  @Input() addNewButtonText: string;\n  @Output() addNewClickCalback: EventEmitter<null> = new EventEmitter();\n\n  constructor() {}\n\n  ngOnInit(): void {}\n}\n","<section class=\"hc-layout\">\n  <header class=\"hc-layout__header\" *ngIf=\"!showAddNewButton\">\n    <ng-content select=\"[header]\"></ng-content>\n  </header>\n  <div class=\"hc-layout__content\">\n    <ng-content select=\"[content]\" *ngIf=\"!showAddNewButton\"></ng-content>\n\n    <div class=\"hc-layout__addnew\" *ngIf=\"showAddNewButton\">\n      <ui-button class=\"mx-2\" size=\"large\" varient=\"fill\" color=\"primary\">\n        <span class=\"fill-icon\">\n          <svg-icon src=\"/assets/media/icons/fill/content/add.svg\"></svg-icon>\n        </span>\n\n        {{ addNewButtonText }}\n      </ui-button>\n    </div>\n  </div>\n</section>\n","import {\n  Component,\n  Input,\n  OnChanges,\n  OnInit,\n  SimpleChanges,\n} from '@angular/core';\nimport { MenuInterface } from '../../../../models/menu.interface';\nimport { FararuLayoutService } from '../../fararu-layout.service';\n\n@Component({\n  selector: 'app-aside-menu-drawer',\n  templateUrl: './aside-menu-drawer.component.html',\n  styleUrls: ['./aside-menu-drawer.component.scss'],\n})\nexport class AsideMenuDrawerComponent implements OnInit, OnChanges {\n  @Input() data: MenuInterface;\n  items: MenuInterface[];\n  expandedMenus: { [selector: string]: string } = {};\n  searchedKeyword: string = '';\n\n  constructor(private layoutService: FararuLayoutService) {}\n\n  ngOnInit(): void {}\n\n  ngOnChanges(changes: SimpleChanges): void {\n    this.search();\n  }\n\n  toggleExpanded(menu: MenuInterface) {\n    if (!this.expandedMenus[menu.id]) {\n      this.expandedMenus[menu.id] = menu.subMenus.length * 36 + 24 + 'px';\n    } else {\n      this.expandedMenus[menu.id] = null;\n    }\n  }\n\n  openWindow(menu: MenuInterface) {\n    if (menu?.link && menu?.id) {\n      this.layoutService.addWindow(menu);\n    }\n  }\n\n  search() {\n    if (this.searchedKeyword.length > 0) {\n      const filtered: MenuInterface[] = [];\n      this.data.subMenus.forEach((item) => {\n        const findedMenu: MenuInterface = { ...item };\n        if (item.subMenus?.length > 0) {\n          findedMenu.subMenus = [\n            ...item.subMenus.filter(\n              (x) => x.title.indexOf(this.searchedKeyword) != -1\n            ),\n          ];\n        }\n\n        if (\n          findedMenu.title.indexOf(this.searchedKeyword) != -1 ||\n          findedMenu.subMenus?.length\n        ) {\n          filtered.push(findedMenu);\n        }\n      });\n      this.items = filtered;\n    } else {\n      this.items = this.data.subMenus;\n    }\n  }\n\n  clearSearch() {\n    this.searchedKeyword = '';\n    this.search();\n  }\n}\n","<section class=\"menu-drawer\">\n  <header class=\"menu-drawer__searchbox\">\n    <span class=\"menu-drawer-searchbox\">\n      <input\n        class=\"menu-drawer-searchbox__input\"\n        [placeholder]=\"'general.search' | translate\"\n        [(ngModel)]=\"searchedKeyword\"\n        (ngModelChange)=\"search()\"\n      />\n      <svg\n        class=\"menu-drawer-searchbox__icon\"\n        [class.menu-drawer-searchbox__icon--hide]=\"this.searchedKeyword\"\n        width=\"18\"\n        height=\"18\"\n        viewBox=\"0 0 18 18\"\n        fill=\"none\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <path\n          d=\"M12.5 11H11.71L11.43 10.73C12.41 9.59 13 8.11 13 6.5C13 2.91 10.09 0 6.5 0C2.91 0 0 2.91 0 6.5C0 10.09 2.91 13 6.5 13C8.11 13 9.59 12.41 10.73 11.43L11 11.71V12.5L16 17.49L17.49 16L12.5 11ZM6.5 11C4.01 11 2 8.99 2 6.5C2 4.01 4.01 2 6.5 2C8.99 2 11 4.01 11 6.5C11 8.99 8.99 11 6.5 11Z\"\n        />\n      </svg>\n      <svg\n        class=\"menu-drawer-searchbox__icon menu-drawer-searchbox__icon--action\"\n        [class.menu-drawer-searchbox__icon--hide]=\"!this.searchedKeyword\"\n        width=\"14\"\n        height=\"14\"\n        viewBox=\"0 0 14 14\"\n        fill=\"none\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n        (click)=\"clearSearch()\"\n      >\n        <path\n          d=\"M14 1.41L12.59 0L7 5.59L1.41 0L0 1.41L5.59 7L0 12.59L1.41 14L7 8.41L12.59 14L14 12.59L8.41 7L14 1.41Z\"\n          fill=\"#323232\"\n        />\n      </svg>\n    </span>\n  </header>\n  <div class=\"menu-drawer__content\">\n    <ul class=\"menu-drawer__list\">\n      <li class=\"menu-drawer__item\" *ngFor=\"let item of items\">\n        <ng-container *ngIf=\"!(item.subMenus?.length > 0)\">\n          <a\n            [routerLink]=\"item.link\"\n            class=\"menu-drawer__button\"\n            (click)=\"openWindow(item)\"\n            ><span class=\"menu-drawer__button-text\">{{ item.title }}</span></a\n          >\n        </ng-container>\n        <ng-container *ngIf=\"item.subMenus?.length > 0\">\n          <a class=\"menu-drawer__button\" (click)=\"toggleExpanded(item)\"\n            ><span class=\"menu-drawer__button-text\">{{ item.title }}</span>\n            <svg\n              class=\"menu-drawer__button-arrow\"\n              [class.menu-drawer__button-arrow--rotate]=\"expandedMenus[item.id]\"\n              width=\"10\"\n              height=\"7\"\n              viewBox=\"0 0 10 7\"\n              fill=\"none\"\n              xmlns=\"http://www.w3.org/2000/svg\"\n            >\n              <path\n                d=\"M0.934926 0.244986L0.0499265 1.13499L4.99993 6.07999L9.94993 1.12999L9.06493 0.244986L4.99993 4.30999L0.934926 0.244986Z\"\n                fill=\"white\"\n              />\n            </svg>\n          </a>\n          <div\n            class=\"menu-drawer__submenu\"\n            [style.max-height]=\"expandedMenus[item.id]\"\n          >\n            <ul class=\"menu-drawer__list\">\n              <li\n                class=\"menu-drawer__item\"\n                *ngFor=\"let subMenu of item.subMenus\"\n              >\n                <a\n                  [routerLink]=\"subMenu.link\"\n                  class=\"menu-drawer__button\"\n                  (click)=\"openWindow(subMenu)\"\n                  ><span class=\"menu-drawer__button-text\">{{\n                    subMenu.title\n                  }}</span></a\n                >\n              </li>\n            </ul>\n          </div>\n        </ng-container>\n      </li>\n    </ul>\n  </div>\n  <ng-container *ngIf=\"data.footer\">\n    <footer class=\"menu-drawer__footer\">{{ data.footer }}</footer>\n  </ng-container>\n</section>\n","import { Overlay, OverlayRef } from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport {\n  Component,\n  ElementRef,\n  EventEmitter,\n  HostListener,\n  Input,\n  OnChanges,\n  OnInit,\n  Output,\n  SimpleChanges,\n  TemplateRef,\n  ViewChild,\n  ViewContainerRef,\n} from '@angular/core';\nimport { MenuInterface } from '../../../../models/menu.interface';\nimport { LanguageInterface } from './../../../../models/language.interface';\n\ntype Drawer = 'menu' | 'profile' | 'quick';\nconst pinnedSessionName = '_pinned';\n\n@Component({\n  selector: 'app-aside-col',\n  templateUrl: './aside-col.component.html',\n  styleUrls: ['./aside-col.component.scss'],\n})\nexport class AsideColComponent implements OnInit, OnChanges {\n  @Input() menus: MenuInterface[] = [];\n  @Input() languages?: LanguageInterface[] | null = null;\n  @Output() openProfileDrawaerCallback = new EventEmitter<never>();\n\n  drawerIsOpened?: boolean = false;\n  drawerIsPinned?: boolean = !!localStorage.getItem(pinnedSessionName);\n  languageMenuIsShow?: boolean = false;\n\n  currentDrawer: Drawer = null;\n  currentMenuDrawer: MenuInterface = null;\n\n  @ViewChild('languageButton')\n  languageButtonElementRef: ElementRef<HTMLElement>;\n  @ViewChild('languageMenu') languageMenuTemplateRef: TemplateRef<any>;\n\n  private overlayRef: OverlayRef;\n\n  constructor(\n    private eRef: ElementRef,\n    private overlay: Overlay,\n    private viewContainerRef: ViewContainerRef\n  ) {}\n\n  ngOnInit(): void {}\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (changes.hasOwnProperty('menus')) {\n      if (this.drawerIsPinned && this.menus?.length > 0 && this.currentDrawer == null) {\n        this.openMenuDrawer(this.menus[0]);\n      }\n    }\n  }\n\n  @HostListener('document:click', ['$event'])\n  clickout(event: any) {\n    if (!this.eRef.nativeElement.contains(event.target) && !this.drawerIsPinned) {\n      this.closeDrawer();\n    }\n  }\n\n  togglePinDrawer() {\n    if (this.drawerIsPinned) this.unPinDrawer();\n    else this.pinDrawer();\n  }\n\n  openMenuDrawer(data: MenuInterface) {\n    if (this.currentDrawer == 'menu' && data.id == this.currentMenuDrawer?.id) {\n      this.closeDrawer();\n      return;\n    }\n    this.resetDrawers();\n    this.currentDrawer = 'menu';\n    this.currentMenuDrawer = data;\n    this.openDrawer();\n    typeof data.openCallback == 'function' && data.openCallback();\n  }\n\n  openProfileDrawer() {\n    if (this.currentDrawer == 'profile') {\n      this.closeDrawer();\n      return;\n    }\n    this.resetDrawers();\n    this.currentDrawer = 'profile';\n    this.openDrawer();\n    this.openProfileDrawaerCallback.emit();\n  }\n\n  closeDrawer() {\n    this.unPinDrawer();\n    this.drawerIsOpened = false;\n    setTimeout(() => {\n      this.resetDrawers();\n    }, 300);\n  }\n\n  resetDrawers() {\n    this.currentDrawer = null;\n    this.currentMenuDrawer = null;\n  }\n\n  showLanguageMenu() {\n    this.languageMenuIsShow = true;\n    this.overlayRef = this.createLanguageMenuOverlay();\n    this.overlayRef.attach(new TemplatePortal(this.languageMenuTemplateRef, this.viewContainerRef));\n    this.overlayRef.backdropClick().subscribe(() => {\n      this.hideLanguageMenu();\n    });\n  }\n\n  hideLanguageMenu() {\n    this.languageMenuIsShow = false;\n    this.overlayRef?.detach();\n  }\n\n  languageMenuClickHandler(item: LanguageInterface) {\n    if (item.isSelected) return;\n    item.onClick && item.onClick();\n  }\n\n  private openDrawer() {\n    this.drawerIsOpened = true;\n  }\n\n  private pinDrawer() {\n    this.drawerIsPinned = true;\n    localStorage.setItem(pinnedSessionName, 'true');\n  }\n\n  private unPinDrawer() {\n    this.drawerIsPinned = false;\n    localStorage.removeItem(pinnedSessionName);\n  }\n\n  private createLanguageMenuOverlay() {\n    return this.overlay.create({\n      hasBackdrop: true,\n      backdropClass: 'cdk-overlay-transparent-backdrop',\n      direction: document.body.getAttribute('dir') == 'rtl' ? 'rtl' : 'ltr',\n      scrollStrategy: this.overlay.scrollStrategies.block(),\n      positionStrategy: this.overlay\n        .position()\n        .flexibleConnectedTo(this.languageButtonElementRef)\n        .withPositions([\n          {\n            originX: 'end',\n            originY: 'top',\n            overlayX: 'start',\n            overlayY: 'top',\n          },\n        ]),\n    });\n  }\n}\n","<aside class=\"aside\" [class.aside--pinned]=\"drawerIsPinned\">\n  <section class=\"aside__layout\">\n    <div class=\"aside__content\">\n      <a class=\"aside-logo\" routerLink=\"/\">\n        <img\n          alt=\"Logo\"\n          src=\"/assets/media/svg/icons/ui/logo-white.svg\"\n          class=\"aside-logo__img\"\n        />\n      </a>\n      <div class=\"aside-menu\">\n        <div class=\"aside-menu__scrollbar\">\n          <a\n            class=\"aside-button\"\n            *ngFor=\"let item of menus\"\n            [title]=\"item.title\"\n            (click)=\"openMenuDrawer(item)\"\n            [class.aside-button--active]=\"\n              currentDrawer == 'menu' && currentMenuDrawer?.id == item.id\n            \"\n          >\n            <img\n              *ngIf=\"item.iconUrl\"\n              [alt]=\"item.title\"\n              [src]=\"item.iconUrl\"\n            /><span *ngIf=\"!item.iconUrl\" class=\"aside-button__text\">{{\n              item.title\n            }}</span></a\n          >\n        </div>\n      </div>\n      <div class=\"aside-footer\">\n        <!-- <a\n          class=\"aside-button\"\n          [class.aside-button--active]=\"currentDrawer == 'quick'\"\n        >\n          <ui-icon\n            class=\"aside-button__icon\"\n            type=\"outline\"\n            group=\"action\"\n            name=\"settings\"\n            color=\"surface\"\n          ></ui-icon>\n        </a> -->\n        <ng-container *ngIf=\"languages?.length\">\n          <a\n            class=\"aside-button\"\n            #languageButton\n            (click)=\"showLanguageMenu()\"\n            [class.aside-button--active]=\"languageMenuIsShow\"\n            ><ui-icon\n              class=\"aside-button__icon\"\n              type=\"fill\"\n              group=\"social\"\n              name=\"public\"\n              color=\"surface\"\n            ></ui-icon>\n          </a>\n          <ng-template #languageMenu>\n            <ul class=\"aside-language-menu\" (click)=\"hideLanguageMenu()\">\n              <li\n                class=\"aside-language-menu__item\"\n                [class.aside-language-menu__item--active]=\"item.isSelected\"\n                *ngFor=\"let item of languages\"\n                (click)=\"languageMenuClickHandler(item)\"\n              >\n                {{ \"languages.\" + item.value | translate }}\n              </li>\n            </ul>\n          </ng-template>\n        </ng-container>\n        <a\n          class=\"aside-button\"\n          [class.aside-button--active]=\"currentDrawer == 'profile'\"\n          (click)=\"openProfileDrawer()\"\n          ><ui-icon\n            class=\"aside-button__icon\"\n            type=\"outline\"\n            group=\"action\"\n            name=\"account_circle\"\n            color=\"surface\"\n          ></ui-icon\n        ></a>\n      </div>\n    </div>\n    <section\n      class=\"aside__drawer aside-drawer\"\n      [class.aside__drawer--opened]=\"drawerIsOpened\"\n    >\n      <ng-container *ngIf=\"currentDrawer == 'menu'\">\n        <header class=\"aside-drawer__header\">\n          <button class=\"aside-drawer__close-button\" (click)=\"closeDrawer()\">\n            <svg\n              width=\"9\"\n              height=\"7\"\n              viewBox=\"0 0 9 7\"\n              fill=\"none\"\n              xmlns=\"http://www.w3.org/2000/svg\"\n            >\n              <path\n                d=\"M4.5 0.5V6.5L8.75 3.5L4.5 0.5ZM0 0.5V6.5L4.25 3.5L0 0.5Z\"\n              />\n            </svg>\n          </button>\n          <strong class=\"aside-drawer__title\">{{\n            currentMenuDrawer.title\n          }}</strong>\n          <button\n            class=\"aside-drawer__pin-button\"\n            (click)=\"togglePinDrawer()\"\n            [class.aside-drawer__pin-button--pinned]=\"drawerIsPinned\"\n          >\n            <svg\n              width=\"10\"\n              height=\"15\"\n              viewBox=\"0 0 10 15\"\n              fill=\"none\"\n              xmlns=\"http://www.w3.org/2000/svg\"\n            >\n              <path\n                d=\"M6.33337 2.16665V5.49998C6.33337 6.24665 6.58004 6.93998 7.00004 7.49998H3.00004C3.43337 6.92665 3.66671 6.23331 3.66671 5.49998V2.16665H6.33337ZM8.33337 0.833313H1.66671C1.30004 0.833313 1.00004 1.13331 1.00004 1.49998C1.00004 1.86665 1.30004 2.16665 1.66671 2.16665H2.33337V5.49998C2.33337 6.60665 1.44004 7.49998 0.333374 7.49998V8.83331H4.31337V13.5L4.98004 14.1666L5.64671 13.5V8.83331H9.66671V7.49998C8.56004 7.49998 7.66671 6.60665 7.66671 5.49998V2.16665H8.33337C8.70004 2.16665 9.00004 1.86665 9.00004 1.49998C9.00004 1.13331 8.70004 0.833313 8.33337 0.833313Z\"\n              />\n            </svg>\n          </button>\n        </header>\n        <div class=\"aside-drawer__content\">\n          <app-aside-menu-drawer\n            [data]=\"currentMenuDrawer\"\n          ></app-aside-menu-drawer>\n        </div>\n      </ng-container>\n      <ng-container *ngIf=\"currentDrawer == 'profile'\">\n        <header class=\"aside-drawer__header\">\n          <button class=\"aside-drawer__close-button\" (click)=\"closeDrawer()\">\n            <svg\n              width=\"9\"\n              height=\"7\"\n              viewBox=\"0 0 9 7\"\n              fill=\"none\"\n              xmlns=\"http://www.w3.org/2000/svg\"\n            >\n              <path\n                d=\"M4.5 0.5V6.5L8.75 3.5L4.5 0.5ZM0 0.5V6.5L4.25 3.5L0 0.5Z\"\n              />\n            </svg>\n          </button>\n          <strong class=\"aside-drawer__title\">پروفایل</strong>\n          <button\n            class=\"aside-drawer__pin-button\"\n            (click)=\"togglePinDrawer()\"\n            [class.aside-drawer__pin-button--pinned]=\"drawerIsPinned\"\n          >\n            <svg\n              width=\"10\"\n              height=\"15\"\n              viewBox=\"0 0 10 15\"\n              fill=\"none\"\n              xmlns=\"http://www.w3.org/2000/svg\"\n            >\n              <path\n                d=\"M6.33337 2.16665V5.49998C6.33337 6.24665 6.58004 6.93998 7.00004 7.49998H3.00004C3.43337 6.92665 3.66671 6.23331 3.66671 5.49998V2.16665H6.33337ZM8.33337 0.833313H1.66671C1.30004 0.833313 1.00004 1.13331 1.00004 1.49998C1.00004 1.86665 1.30004 2.16665 1.66671 2.16665H2.33337V5.49998C2.33337 6.60665 1.44004 7.49998 0.333374 7.49998V8.83331H4.31337V13.5L4.98004 14.1666L5.64671 13.5V8.83331H9.66671V7.49998C8.56004 7.49998 7.66671 6.60665 7.66671 5.49998V2.16665H8.33337C8.70004 2.16665 9.00004 1.86665 9.00004 1.49998C9.00004 1.13331 8.70004 0.833313 8.33337 0.833313Z\"\n                fill=\"#ADB6C5\"\n              />\n            </svg>\n          </button>\n        </header>\n        <div class=\"aside-drawer__content\">\n          <ng-content select=\"[profile-drawer]\"></ng-content>\n        </div>\n      </ng-container>\n    </section>\n  </section>\n</aside>\n","import {\n  Component,\n  EventEmitter,\n  Input,\n  OnChanges,\n  OnDestroy,\n  OnInit,\n  Output,\n  SimpleChanges,\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { FararuLayoutService } from '../fararu-layout.service';\nimport { MenuInterface } from '../../../models/menu.interface';\nimport { LanguageInterface } from './../../../models/language.interface';\n\n@Component({\n  selector: 'app-main-layout',\n  templateUrl: './main-layout.component.html',\n  styleUrls: ['./main-layout.component.scss'],\n})\nexport class MainLayoutComponent implements OnInit, OnDestroy, OnChanges {\n  @Input() menus: MenuInterface[] = [];\n  @Input() loggedUserId: string | null = null;\n  @Input() loggedUserName: string | null = null;\n  @Input() languages?: LanguageInterface[] | null = null;\n  @Output() openProfileDrawaerCallback = new EventEmitter<never>();\n\n  openedWindows: MenuInterface[] = [];\n  subscription: Subscription;\n  constructor(private layoutService: FararuLayoutService) {}\n\n  ngOnInit(): void {\n    this.subscription = this.layoutService.getOpenedWidows().subscribe(data => {\n      this.openedWindows = data;\n    });\n  }\n\n  ngOnDestroy(): void {\n    this.subscription?.unsubscribe();\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (changes['loggedUserId']) {\n      this.layoutService.setLoggedUser({\n        id: this.loggedUserId,\n        name: this.loggedUserName,\n      });\n\n      this.layoutService.setOpenedWindows();\n    }\n  }\n\n  removeWindow(event: any, data: MenuInterface): void {\n    event.preventDefault();\n    event.stopPropagation();\n    this.layoutService.removeWindow(data);\n  }\n\n  removeLinkQueryString(link: string) {\n    return this.layoutService.removeLinkQueryString(link);\n  }\n\n  getLinkQueryString(link: string) {\n    return this.layoutService.getLinkQueryString(link);\n  }\n}\n","<section class=\"wrapper\">\n  <app-aside-col\n    [menus]=\"menus\"\n    [languages]=\"languages\"\n    (openProfileDrawaerCallback)=\"openProfileDrawaerCallback.emit()\"\n    ><ng-content profile-drawer select=\"[profile-drawer]\"></ng-content\n  ></app-aside-col>\n  <main class=\"wrapper__content\">\n    <header class=\"wrapper__tab-header\">\n      <a\n        class=\"wrapper__tab-button\"\n        *ngFor=\"let item of openedWindows\"\n        [routerLink]=\"removeLinkQueryString(item.link)\"\n        [queryParams]=\"getLinkQueryString(item.link)\"\n        [routerLinkActive]=\"'wrapper__tab-button--active'\"\n        [routerLinkActiveOptions]=\"{ exact: true }\"\n        ><ui-icon\n          color=\"primary\"\n          [block]=\"true\"\n          size=\"x1\"\n          *ngIf=\"item.icon\"\n          [group]=\"item.iconGroup\"\n          [name]=\"item.icon\"\n        ></ui-icon\n        ><span class=\"wrapper__tab-button-text\">{{ item.title }}</span>\n\n        <button\n          class=\"wrapper__tab-close-button\"\n          (click)=\"removeWindow($event, item)\"\n        >\n          <svg\n            width=\"8\"\n            height=\"8\"\n            viewBox=\"0 0 8 8\"\n            fill=\"none\"\n            xmlns=\"http://www.w3.org/2000/svg\"\n          >\n            <path\n              d=\"M7.5 1.205L6.795 0.5L4 3.295L1.205 0.5L0.5 1.205L3.295 4L0.5 6.795L1.205 7.5L4 4.705L6.795 7.5L7.5 6.795L4.705 4L7.5 1.205Z\"\n            />\n          </svg></button\n      ></a>\n    </header>\n    <section class=\"wrapper__tab-content\">\n      <router-outlet></router-outlet>\n    </section>\n  </main>\n</section>\n","import { Component, EventEmitter, Input, Output, ViewEncapsulation } from '@angular/core';\nimport { MenuInterface } from '../../../../models/menu.interface';\nimport { FararuLayoutService } from '../../fararu-layout.service';\n\n@Component({\n  selector: 'app-sub-menu-button',\n  templateUrl: './sub-menu-button.component.html',\n  styleUrl: './sub-menu-button.component.scss',\n  encapsulation: ViewEncapsulation.None,\n})\nexport class SubMenuButtonComponent {\n  @Input() data: MenuInterface;\n  @Input() searchedKeyword?: string;\n  @Input() inverseColor?: boolean;\n  @Input() showRemoveButton?: boolean;\n  @Input() showFavoriteButton?: boolean;\n\n  @Output() clickCallback = new EventEmitter<MenuInterface>();\n  @Output() favoriteButtonClickCallback = new EventEmitter<MenuInterface>();\n  @Output() removeButtonClickCallback = new EventEmitter<MenuInterface>();\n\n  constructor(private readonly _layoutService: FararuLayoutService) {}\n\n  handleClick(data: MenuInterface) {\n    const hasSubMenu = data.subMenus?.length && !data.hasActionMenu;\n\n    if (hasSubMenu) {\n      this._toggleSubMenu(data);\n    } else if (data.link && data.id) {\n      this._layoutService.addWindow(data);\n    }\n    typeof data.openCallback === 'function' && data.openCallback();\n    this._layoutService.lastMenuClicked$.next({ ...data });\n    this.clickCallback.emit(data);\n  }\n\n  handleFavoriteButtonClick(event: Event, data: MenuInterface) {\n    event.stopPropagation();\n    event.preventDefault();\n    this.favoriteButtonClickCallback.emit(data);\n  }\n\n  handleRemoveButtonClick(event: Event, data: MenuInterface) {\n    event.stopPropagation();\n    event.preventDefault();\n    this.removeButtonClickCallback.emit(data);\n  }\n\n  private _toggleSubMenu(data: MenuInterface) {\n    data.expanded = !data.expanded;\n  }\n}\n","<a\n  class=\"sub-menu-button\"\n  [class.sub-menu-button--inverse]=\"inverseColor\"\n  [routerLink]=\"data.link\"\n  [routerLinkActive]=\"'sub-menu-button--is-active'\"\n  [attr.aria-expanded]=\"data.expanded\"\n  [appTooltip]=\"data.title\"\n  [appTooltipPosition]=\"'end'\"\n  [appTooltipOffsetX]=\"8\"\n  (click)=\"handleClick(data)\"\n>\n  <span\n    class=\"sub-menu-button__text\"\n    [innerHTML]=\"\n      (data.title | highlightKeyword : searchedKeyword) +\n      (data.isLoading ? ' - <small>' + ('general.loadingText' | translate) + '</small>' : '')\n    \"\n  ></span>\n  <ng-container *ngIf=\"!data.subMenus?.length; else arrowIconTemplate\">\n    <span class=\"sub-menu-button__actions\">\n      <ui-fararu-icon\n        *ngIf=\"showFavoriteButton\"\n        class=\"sub-menu-button__favorite-button\"\n        [attr.aria-selected]=\"data.favorited\"\n        [name]=\"'star'\"\n        [size]=\"'x2'\"\n        (click)=\"handleFavoriteButtonClick($event, data)\"\n      ></ui-fararu-icon>\n      <ui-fararu-icon\n        *ngIf=\"showRemoveButton\"\n        class=\"sub-menu-button__remove-button\"\n        [name]=\"'close'\"\n        [size]=\"'x2'\"\n        (click)=\"removeButtonClickCallback.emit(data)\"\n      ></ui-fararu-icon>\n    </span>\n  </ng-container>\n  <ng-template #arrowIconTemplate>\n    <ui-fararu-icon\n      class=\"sub-menu-button__arrow\"\n      [name]=\"'arrow-bottom'\"\n      [size]=\"'x2'\"\n    ></ui-fararu-icon>\n  </ng-template>\n</a>\n<ng-container *ngIf=\"data.subMenus?.length && !data.hasActionMenu\">\n  <ul\n    class=\"sub-menu-button__menu\"\n    [attr.aria-expanded]=\"data.expanded\"\n    [attr.data-count]=\"data.subMenus.length\"\n  >\n    <li\n      class=\"sub-menu-button__menu-item\"\n      [class.sub-menu-button__menu-item--is-loading]=\"data.isLoading\"\n      [class.sub-menu-button__menu-item--inverse]=\"inverseColor\"\n      *ngFor=\"let subMenuItem of data.subMenus\"\n    >\n      <app-sub-menu-button\n        [data]=\"subMenuItem\"\n        [searchedKeyword]=\"searchedKeyword\"\n        [inverseColor]=\"inverseColor\"\n        [showFavoriteButton]=\"showFavoriteButton\"\n        [showRemoveButton]=\"showRemoveButton\"\n        (clickCallback)=\"clickCallback.emit($event)\"\n        (favoriteButtonClickCallback)=\"favoriteButtonClickCallback.emit($event)\"\n        (removeButtonClickCallback)=\"removeButtonClickCallback.emit($event)\"\n      ></app-sub-menu-button>\n    </li>\n  </ul>\n</ng-container>\n","import {\n  Component,\n  EventEmitter,\n  Input,\n  OnDestroy,\n  OnInit,\n  Output,\n  ViewEncapsulation,\n} from '@angular/core';\nimport { MenuInterface } from '../../../../models';\nimport { FararuLayoutService } from '../../fararu-layout.service';\nimport { Subscription } from 'rxjs';\nimport { TranslateService } from '@ngx-translate/core';\nimport { isNil } from '../../../../utils/is-nil';\n\nconst pinnedSessionName = '_pinned';\ntype SubMenuType = 'favorites' | null | (number & {});\n\n@Component({\n  selector: 'app-side-bar',\n  templateUrl: './side-bar.component.html',\n  styleUrls: ['./side-bar.component.scss'],\n  encapsulation: ViewEncapsulation.None,\n})\nexport class SideBarComponent implements OnInit, OnDestroy {\n  @Input() menus: MenuInterface[] = [];\n  @Input() loggedUserId?: string;\n  @Input() companyTitle?: string;\n  @Input() companyLogoUrl?: string;\n\n  @Output() mainMenuItemsShowingCallback = new EventEmitter<MenuInterface>();\n\n  isOpened?: boolean = false;\n  isPinned?: boolean = !!localStorage.getItem(pinnedSessionName);\n\n  currentSubMenu: {\n    type?: SubMenuType;\n    data?: MenuInterface | null;\n  } = {};\n  subMenuInTransition?: boolean;\n  mainMenuOpenWithoutTransition?: boolean;\n\n  private _subMenuTransitionTimeout?: any;\n  private _closeMenuTimeout?: any;\n  private _transitionDelay: number = 300;\n  private _subscriptions: Subscription[] = [];\n  private _lastFindedFavoriteMenus: MenuInterface[] | null = null;\n\n  constructor(\n    private readonly _layoutService: FararuLayoutService,\n    private readonly _translateService: TranslateService\n  ) {}\n\n  ngOnInit(): void {\n    this._subscriptions.push(\n      this._layoutService.favoritedMenuIds$.subscribe(values => {\n        this._updateFavoirteMenu();\n      })\n    );\n  }\n\n  ngOnDestroy(): void {\n    this._subscriptions.forEach(sb => sb.unsubscribe());\n  }\n\n  pinHandler() {\n    this.isPinned = !this.isPinned;\n    if (this.isPinned) {\n      localStorage.setItem(pinnedSessionName, '1');\n    } else {\n      localStorage.removeItem(pinnedSessionName);\n      this._closeMenu();\n    }\n  }\n\n  openHandler() {\n    this._openMenu();\n  }\n\n  showSubMenuHandler(type: SubMenuType) {\n    if (!this.isOpened) {\n      if (!this.isPinned) {\n        this.mainMenuOpenWithoutTransition = true;\n        setTimeout(() => {\n          this.mainMenuOpenWithoutTransition = false;\n        }, this._transitionDelay);\n      }\n      this._openMenu();\n    } else if (!this.isPinned && this.currentSubMenu.type === type) {\n      this._closeMenu();\n      return;\n    }\n    clearTimeout(this._subMenuTransitionTimeout);\n    this.subMenuInTransition = true;\n\n    this._subMenuTransitionTimeout = setTimeout(\n      () => {\n        this.currentSubMenu.type = this.currentSubMenu.type === type ? null : type;\n        switch (this.currentSubMenu.type) {\n          case 'favorites':\n            this.currentSubMenu.data = {\n              title: this._translateService.instant('general.favorites'),\n              subMenus: this._lastFindedFavoriteMenus || this._generateFavoriteSubMenusForBinding(),\n            };\n            this._lastFindedFavoriteMenus = this.currentSubMenu.data.subMenus;\n            break;\n\n          default:\n            if (typeof this.currentSubMenu.type === 'number') {\n              const data = this.menus[this.currentSubMenu.type];\n              typeof data.openCallback === 'function' && data.openCallback();\n              this.currentSubMenu.data = data;\n              this.mainMenuItemsShowingCallback.emit(data);\n            }\n        }\n        this.subMenuInTransition = false;\n      },\n      !isNil(this.currentSubMenu.type) ? this._transitionDelay : 0\n    );\n  }\n\n  overlayClickHandler() {\n    this._closeMenu();\n  }\n\n  subMenuItemClickHandler(data: MenuInterface) {\n    const hasSubMenu = data.subMenus?.length && !data.hasActionMenu;\n\n    if (!this.isPinned && !hasSubMenu) {\n      this._closeMenu();\n    }\n  }\n\n  favoriteButtonClickHandler(data: MenuInterface) {\n    if (!data.id) return;\n    this._layoutService.handleFavorite(data);\n    this._updateFavoirteMenu();\n  }\n\n  private _updateFavoirteMenu() {\n    this._lastFindedFavoriteMenus = null;\n    if (this.currentSubMenu.type == 'favorites') {\n      this.currentSubMenu.data.subMenus = this._generateFavoriteSubMenusForBinding(true);\n      this._lastFindedFavoriteMenus = this.currentSubMenu.data.subMenus;\n    }\n  }\n\n  private _openMenu() {\n    clearTimeout(this._closeMenuTimeout);\n    this.isOpened = true;\n  }\n\n  private _closeMenu() {\n    this.isOpened = false;\n    this._closeMenuTimeout = setTimeout(() => {\n      this.currentSubMenu = {};\n    }, this._transitionDelay);\n  }\n\n  private _findKeywordInTree(keyword: string, items: MenuInterface[]): MenuInterface[] {\n    const output: MenuInterface[] = [];\n    if (!keyword.length) return output;\n\n    items.forEach(item => {\n      if (item.subMenus?.length) {\n        const clonedItem: MenuInterface = { ...item, subMenus: [] };\n        const filteredSubMenus = this._findKeywordInTree(keyword, item.subMenus);\n\n        if (filteredSubMenus.length) {\n          clonedItem.expanded = true;\n          clonedItem.subMenus = filteredSubMenus;\n          output.push(clonedItem);\n        }\n      } else {\n        if (item.title.toLowerCase().includes(keyword.toLowerCase())) {\n          output.push(item);\n        }\n      }\n    });\n\n    return output;\n  }\n\n  private _findFavoriteInTree(items: MenuInterface[], expandedNoUpdate?: boolean): MenuInterface[] {\n    const output: MenuInterface[] = [];\n    const favoritedMenuIds = this._layoutService.favoritedMenuIds$.value;\n    if (!favoritedMenuIds.length) return output;\n\n    items.forEach(item => {\n      if (item.subMenus?.length) {\n        const clonedItem: MenuInterface = { ...item, subMenus: [] };\n        const filteredSubMenus = this._findFavoriteInTree(item.subMenus);\n\n        if (filteredSubMenus.length) {\n          clonedItem.expanded = expandedNoUpdate ? item.expanded : true;\n          clonedItem.subMenus = filteredSubMenus;\n          output.push(clonedItem);\n        }\n      } else {\n        if (favoritedMenuIds.includes(item.id)) {\n          output.push(item);\n        }\n      }\n    });\n\n    return output;\n  }\n\n  private _generateFavoriteSubMenusForBinding(expandedNoUpdate?: boolean): MenuInterface[] {\n    const output = this._findFavoriteInTree(this.menus, expandedNoUpdate);\n    output.forEach(item => {\n      this.mainMenuItemsShowingCallback.emit(item);\n    });\n    return output;\n  }\n}\n","<aside\n  class=\"side-bar\"\n  [class.side-bar--is-pinned]=\"isPinned\"\n  [class.side-bar--is-opened]=\"isOpened\"\n  [class.side-bar--sub-is-show]=\"currentSubMenu.type != null\"\n>\n  <button class=\"side-bar__pin-button\" type=\"button\" (click)=\"pinHandler()\">\n    <ui-fararu-icon\n      class=\"flip-in-rtl\"\n      [name]=\"'arrow-right'\"\n      [color]=\"'content-quaternary-inverse'\"\n      [size]=\"'x1'\"\n    ></ui-fararu-icon>\n  </button>\n  <section class=\"side-bar__layout\">\n    <section\n      class=\"side-bar__main\"\n      [class.side-bar__main--without-transition]=\"mainMenuOpenWithoutTransition\"\n    >\n      <header class=\"side-bar__header\">\n        <button\n          *ngIf=\"companyTitle || companyLogoUrl\"\n          class=\"main-menu-button main-menu-button--logo\"\n          type=\"button\"\n        >\n          <img *ngIf=\"companyLogoUrl\" class=\"main-menu-button__icon\" [attr.src]=\"companyLogoUrl\" />\n          <span *ngIf=\"companyTitle\" class=\"main-menu-button__text\">{{ companyTitle }}</span>\n        </button>\n        <button\n          type=\"button\"\n          class=\"main-menu-button\"\n          [class.main-menu-button--selected]=\"currentSubMenu.type === 'favorites'\"\n          [appTooltip]=\"'general.favorites' | translate\"\n          [appTooltipPosition]=\"'end'\"\n          [appTooltipOffsetX]=\"8\"\n          [appTooltipHide]=\"\n            (this.isOpened || this.isPinned) &&\n            (currentSubMenu.type == null || currentSubMenu.type === 'favorites')\n          \"\n          [appTooltipInverseColor]=\"currentSubMenu.type != null\"\n          (click)=\"showSubMenuHandler('favorites')\"\n        >\n          <ui-fararu-icon\n            class=\"main-menu-button__icon\"\n            [name]=\"'star'\"\n            [size]=\"'x2'\"\n          ></ui-fararu-icon>\n          <span class=\"main-menu-button__text\"\n            >{{ 'general.favorites' | translate\n            }}<span class=\"main-menu-button__arrow\"\n              ><ui-fararu-icon\n                class=\"flip-in-rtl\"\n                [name]=\"'arrow-right'\"\n                [size]=\"'x1'\"\n              ></ui-fararu-icon></span\n          ></span>\n        </button>\n      </header>\n      <section class=\"side-bar__scrollarea\" appCheckHasScroll>\n        <button\n          type=\"button\"\n          class=\"main-menu-button\"\n          [class.main-menu-button--selected]=\"currentSubMenu.type === i\"\n          [appTooltip]=\"item.title\"\n          [appTooltipPosition]=\"'end'\"\n          [appTooltipOffsetX]=\"8\"\n          [appTooltipHide]=\"\n            (this.isOpened || this.isPinned) &&\n            (currentSubMenu.type == null || currentSubMenu.type === i)\n          \"\n          [appTooltipInverseColor]=\"currentSubMenu.type != null\"\n          *ngFor=\"let item of menus; let i = index\"\n          (click)=\"showSubMenuHandler(i)\"\n        >\n          <ui-fararu-icon\n            class=\"main-menu-button__icon\"\n            [name]=\"item.fararuIcon || 'document'\"\n            [size]=\"'x2'\"\n          ></ui-fararu-icon>\n          <span class=\"main-menu-button__text\"\n            >{{ item.title }}\n            <span class=\"main-menu-button__arrow\"\n              ><ui-fararu-icon\n                class=\"flip-in-rtl\"\n                [name]=\"'arrow-right'\"\n                [size]=\"'x1'\"\n              ></ui-fararu-icon> </span\n          ></span>\n        </button>\n      </section>\n    </section>\n    <section class=\"side-bar__sub side-bar-sub\" [class.side-bar__sub--hide]=\"subMenuInTransition\">\n      <header class=\"side-bar-sub__header\">\n        <h2 class=\"side-bar-sub__title\">{{ currentSubMenu.data?.title }}</h2>\n      </header>\n      <div class=\"side-bar-sub__content\">\n        <ng-container *ngIf=\"currentSubMenu.data?.subMenus?.length; else emptyMessage\">\n          <ul\n            class=\"side-bar-sub__list\"\n            [class.side-bar-sub__list--is-loading]=\"currentSubMenu.data?.isLoading\"\n          >\n            <li class=\"side-bar-sub__item\" *ngFor=\"let item of currentSubMenu.data.subMenus\">\n              <app-sub-menu-button\n                [data]=\"item\"\n                [inverseColor]=\"true\"\n                [showFavoriteButton]=\"true\"\n                (clickCallback)=\"subMenuItemClickHandler($event)\"\n                (favoriteButtonClickCallback)=\"favoriteButtonClickHandler($event)\"\n              ></app-sub-menu-button>\n            </li>\n          </ul>\n        </ng-container>\n        <ng-template #emptyMessage>\n          <ng-container [ngSwitch]=\"currentSubMenu.type\">\n            <ng-container *ngSwitchCase=\"'favorites'\">\n              <p class=\"side-bar-sub__empty\">\n                {{ 'general.favoritesEmptyMessage' | translate }}\n              </p>\n            </ng-container>\n          </ng-container>\n        </ng-template>\n        <ui-spinner [show]=\"currentSubMenu.data?.isLoading\" [color]=\"'quaternary'\"></ui-spinner>\n      </div>\n      <ng-container *ngIf=\"currentSubMenu.data?.footer\">\n        <footer class=\"side-bar-sub__footer\">\n          {{ currentSubMenu.data.footer }}\n        </footer>\n      </ng-container>\n    </section>\n  </section>\n  <ng-container *ngIf=\"isOpened && !isPinned\">\n    <span class=\"side-bar__overlay\" (click)=\"overlayClickHandler()\"></span>\n  </ng-container>\n</aside>\n","import {\n  Component,\n  ElementRef,\n  EventEmitter,\n  Input,\n  Output,\n  ViewChild,\n  OnInit,\n  OnChanges,\n  SimpleChanges,\n  ViewEncapsulation,\n} from '@angular/core';\nimport { MenuInterface } from '../../../../models/menu.interface';\nimport { debounceTime, map, Subject } from 'rxjs';\nimport { SessionNames } from '../../../../constants/session-names';\nimport { FararuLayoutService } from '../../fararu-layout.service';\n\n@Component({\n  selector: 'app-searchbox',\n  templateUrl: './searchbox.component.html',\n  styleUrl: './searchbox.component.scss',\n  encapsulation: ViewEncapsulation.None,\n})\nexport class SearchboxComponent implements OnInit, OnChanges {\n  @Input() menus: MenuInterface[] = [];\n  @Input() loggedUserId?: string;\n\n  @Output() mainMenuItemsShowingCallback = new EventEmitter<MenuInterface>();\n\n  @ViewChild('input') inputRef: ElementRef<HTMLInputElement>;\n\n  readonly inputId = 'main-layout-searchbox-input';\n  menuIsOpened?: boolean;\n  searchedKeyword$: Subject<string> = new Subject<string>();\n  searchedKeyword: string = '';\n  searchedKeywordHistoryList: string[] = [];\n  searchResult?: MenuInterface[];\n\n  private _closeTimeoutRef: ReturnType<typeof setTimeout>;\n\n  private get searchedKeywordHistorySessionName() {\n    return [SessionNames.SIDE_BAR_SEARCHED_KEYWORD_HISTORY, this.loggedUserId]\n      .filter(x => !!x)\n      .join('_');\n  }\n\n  constructor(private readonly _layoutService: FararuLayoutService) {}\n\n  ngOnChanges(changes: SimpleChanges): void {\n    this.searchedKeywordHistoryList = JSON.parse(\n      localStorage.getItem(this.searchedKeywordHistorySessionName) || '[]'\n    );\n  }\n\n  ngOnInit(): void {\n    this.searchedKeyword$\n      .pipe(\n        debounceTime(300),\n        map(x => x?.trim())\n      )\n      .subscribe(keyword => {\n        this.handleSearchKeyword(keyword);\n      });\n  }\n\n  handleInputFocus() {\n    this._openMenu();\n  }\n\n  handleInputBlur() {\n    this._closeMenu();\n  }\n\n  handleIconClick(event: Event) {\n    event.preventDefault();\n  }\n\n  handleCloseClick() {\n    this.searchedKeyword$.next('');\n    if (this.menuIsOpened) {\n      this._focusSearchedKeywordInput();\n    }\n  }\n\n  handleSearchKeyword(keyword: string) {\n    this.searchedKeyword = keyword;\n    this.searchResult = this._generateSearchSubMenusForBinding(keyword);\n    this._addSearchedKeywordToHistory(keyword);\n    if (!this.menuIsOpened && keyword) {\n      this._openMenu();\n    }\n  }\n\n  handleSearchedKeywordHistoryItemClick(keyword: string) {\n    this.searchedKeyword$.next(keyword);\n  }\n\n  handleRemoveSearchedKeywordHistory(keyword: string) {\n    const trimedKeyword = keyword.trim();\n    if (!trimedKeyword) return;\n    const findedIndex = this.searchedKeywordHistoryList.findIndex(\n      x => x.toLowerCase() == trimedKeyword.toLowerCase()\n    );\n\n    if (findedIndex != -1) {\n      this.searchedKeywordHistoryList.splice(findedIndex, 1);\n      localStorage.setItem(\n        this.searchedKeywordHistorySessionName,\n        JSON.stringify(this.searchedKeywordHistoryList)\n      );\n    }\n    this._focusSearchedKeywordInput();\n  }\n\n  handleClearAllSearchedKeywordHistory() {\n    this.searchedKeywordHistoryList = [];\n    localStorage.removeItem(this.searchedKeywordHistorySessionName);\n\n    this._focusSearchedKeywordInput();\n  }\n\n  handleMenuClick() {\n    this._focusSearchedKeywordInput();\n  }\n\n  handleMenuItemClick(data: MenuInterface) {\n    if (data.subMenus?.length) return;\n    this.searchedKeyword$.next('');\n    this._closeMenu();\n    setTimeout(() => {\n      this.inputRef.nativeElement.blur();\n    }, 0);\n  }\n\n  handleMenuItemFavoriteButtonClick(data: MenuInterface) {\n    this._focusSearchedKeywordInput();\n    this._layoutService.handleFavorite(data);\n  }\n\n  private _focusSearchedKeywordInput() {\n    this.inputRef.nativeElement.focus({ preventScroll: true });\n  }\n\n  private _openMenu() {\n    if (!this.searchedKeyword?.length && !this.searchedKeywordHistoryList?.length) return;\n    clearTimeout(this._closeTimeoutRef);\n    if (this.menuIsOpened) return;\n    this.menuIsOpened = true;\n  }\n\n  private _closeMenu() {\n    this._closeTimeoutRef = setTimeout(() => {\n      this.menuIsOpened = false;\n    }, 200);\n  }\n\n  private _generateSearchSubMenusForBinding(keyword: string): MenuInterface[] {\n    if (!this.searchedKeyword) return null;\n    const output = this._findKeywordInTree(keyword, this.menus);\n    output.forEach(item => {\n      this.mainMenuItemsShowingCallback.emit(item);\n    });\n    return output;\n  }\n\n  private _findKeywordInTree(keyword: string, items: MenuInterface[]): MenuInterface[] {\n    const output: MenuInterface[] = [];\n    if (!keyword.length) return output;\n\n    items.forEach(item => {\n      if (item.subMenus?.length) {\n        const clonedItem: MenuInterface = { ...item, subMenus: [] };\n        const filteredSubMenus = this._findKeywordInTree(keyword, item.subMenus);\n\n        if (filteredSubMenus.length) {\n          clonedItem.expanded = true;\n          clonedItem.subMenus = filteredSubMenus;\n          output.push(clonedItem);\n        }\n      } else {\n        if (item.title.toLowerCase().includes(keyword.toLowerCase())) {\n          output.push(item);\n        }\n      }\n    });\n\n    return output;\n  }\n\n  private _addSearchedKeywordToHistory(keyword: string) {\n    const trimedKeyword = keyword.trim();\n    if (!trimedKeyword) return;\n    const findedIndex = this.searchedKeywordHistoryList.findIndex(\n      x => x.toLowerCase() == trimedKeyword.toLowerCase()\n    );\n\n    if (findedIndex != -1) {\n      this.searchedKeywordHistoryList.splice(findedIndex, 1);\n    }\n\n    this.searchedKeywordHistoryList.unshift(trimedKeyword);\n    this.searchedKeywordHistoryList = this.searchedKeywordHistoryList.slice(0, 10);\n\n    localStorage.setItem(\n      this.searchedKeywordHistorySessionName,\n      JSON.stringify(this.searchedKeywordHistoryList)\n    );\n  }\n}\n","<section\n  class=\"main-layout-searchbox\"\n  [class.main-layout-searchbox--menu-opened]=\"\n    menuIsOpened && (searchedKeyword || searchedKeywordHistoryList?.length)\n  \"\n>\n  <label class=\"main-layout-searchbox__icon\" [for]=\"inputId\" (mousedown)=\"handleIconClick($event)\">\n    <ui-fararu-icon\n      [name]=\"'search'\"\n      [size]=\"'x2'\"\n      [color]=\"menuIsOpened ? 'content-primary' : 'content-quaternary-inverse'\"\n    ></ui-fararu-icon>\n  </label>\n  <input\n    #input\n    class=\"main-layout-searchbox__input\"\n    [class.main-layout-searchbox__input--active]=\"searchedKeyword || menuIsOpened\"\n    placeholder=\"جستجو...\"\n    autocomplete=\"off\"\n    [attr.id]=\"inputId\"\n    [ngModel]=\"searchedKeyword\"\n    (ngModelChange)=\"searchedKeyword$.next($event)\"\n    (focus)=\"handleInputFocus()\"\n    (blur)=\"handleInputBlur()\"\n  />\n  <ui-fararu-icon\n    class=\"main-layout-searchbox__close-button\"\n    [class.main-layout-searchbox__close-button--show]=\"searchedKeyword\"\n    [name]=\"'close'\"\n    [size]=\"'x1'\"\n    (click)=\"handleCloseClick()\"\n  ></ui-fararu-icon>\n  <section\n    class=\"main-layout-searchbox__menu main-layout-searchbox-menu\"\n    (click)=\"handleMenuClick()\"\n  >\n    <ng-container *ngIf=\"searchResult?.length; else emptyMessage\">\n      <ul\n        class=\"main-layout-searchbox-menu__list\"\n        appCheckHasScroll\n        #subScrollArea=\"appCheckHasScroll\"\n        [class.main-layout-searchbox-menu__list--is-loading]=\"false\"\n      >\n        <li class=\"main-layout-searchbox-menu__item\" *ngFor=\"let item of searchResult\">\n          <app-sub-menu-button\n            [data]=\"item\"\n            [searchedKeyword]=\"searchedKeyword\"\n            [showFavoriteButton]=\"true\"\n            (clickCallback)=\"handleMenuItemClick($event)\"\n            (favoriteButtonClickCallback)=\"handleMenuItemFavoriteButtonClick($event)\"\n          ></app-sub-menu-button>\n        </li>\n      </ul>\n    </ng-container>\n    <ng-template #emptyMessage>\n      <ng-container *ngIf=\"searchedKeyword; else searchedKeywordHsitory\">\n        <ui-no-data\n          [message]=\"'general.searchKeywordEmptyMessage' | translate : { keyword: searchedKeyword }\"\n        ></ui-no-data>\n      </ng-container>\n      <ng-template #searchedKeywordHsitory>\n        <ng-container *ngIf=\"searchedKeywordHistoryList.length\">\n          <header class=\"main-layout-searchbox-menu__header\">\n            <h3 class=\"main-layout-searchbox-menu__title\">\n              <ui-fararu-icon\n                [name]=\"'recent'\"\n                [color]=\"'content-secondary'\"\n                [size]=\"'x1'\"\n              ></ui-fararu-icon\n              ><span class=\"main-layout-searchbox-menu__title-text\">اخیرا جستجو شده</span>\n            </h3>\n            <button\n              type=\"button\"\n              class=\"main-layout-searchbox-menu__clear-all-button\"\n              (click)=\"handleClearAllSearchedKeywordHistory()\"\n            >\n              پاک کردن همه\n            </button>\n          </header>\n          <ul class=\"main-layout-searchbox-menu__list\">\n            <li\n              class=\"main-layout-searchbox-menu__item\"\n              *ngFor=\"let item of searchedKeywordHistoryList\"\n            >\n              <app-sub-menu-button\n                [data]=\"{ title: item }\"\n                [showRemoveButton]=\"true\"\n                (clickCallback)=\"handleSearchedKeywordHistoryItemClick(item)\"\n                (removeButtonClickCallback)=\"handleRemoveSearchedKeywordHistory(item)\"\n              ></app-sub-menu-button>\n            </li>\n          </ul>\n        </ng-container>\n      </ng-template>\n    </ng-template>\n    <ui-spinner [show]=\"false\" [color]=\"'quaternary'\"></ui-spinner>\n  </section>\n</section>\n","import { Component, Input } from '@angular/core';\n\n@Component({\n  selector: 'app-header-sub-menu',\n  templateUrl: './header-sub-menu.component.html',\n  styleUrl: './header-sub-menu.component.scss',\n})\nexport class HeaderSubMenuComponent {\n  @Input() width: string;\n}\n","<section class=\"header-sub-menu\" [style.width]=\"width\">\n  <ng-content></ng-content>\n</section>\n","import { Component, ContentChild, EventEmitter, Input, Output, TemplateRef } from '@angular/core';\nimport { IconNameType } from '../../../../types/icon-name.type';\n\n@Component({\n  selector: 'app-header-sub-menu-item',\n  templateUrl: './header-sub-menu-item.component.html',\n  styleUrl: './header-sub-menu-item.component.scss',\n})\nexport class HeaderSubMenuItemComponent {\n  @Input({ required: true }) title: string;\n  @Input() iconName?: IconNameType;\n  @Input() isSelected?: boolean;\n  @Input() isDanger?: boolean;\n  @Input() showSubMenu?: boolean;\n  @Input() internalLink?: string;\n  @Input() externalLink?: string;\n\n  @Output() clickCallback = new EventEmitter<Event>();\n\n  @ContentChild(TemplateRef) contentTemplate?: TemplateRef<any>;\n}\n","<div class=\"header-sub-menu-item\" [class.header-sub-menu-item--show-sub-menu]=\"showSubMenu\">\n  @if(externalLink){\n  <a\n    class=\"header-sub-menu-item__button\"\n    [class.header-sub-menu-item__button--selected]=\"isSelected\"\n    [class.header-sub-menu-item__button--danger]=\"isDanger\"\n    [attr.href]=\"externalLink\"\n    target=\"_blank\"\n    (click)=\"clickCallback.emit($event); contentTemplate && $event.stopPropagation()\"\n  >\n    <ng-container *ngTemplateOutlet=\"itemContent\"></ng-container>\n  </a>\n  }@else if (internalLink){\n  <a\n    class=\"header-sub-menu-item__button\"\n    [class.header-sub-menu-item__button--selected]=\"isSelected\"\n    [class.header-sub-menu-item__button--danger]=\"isDanger\"\n    [routerLink]=\"internalLink\"\n    (click)=\"clickCallback.emit($event); contentTemplate && $event.stopPropagation()\"\n  >\n    <ng-container *ngTemplateOutlet=\"itemContent\"></ng-container>\n  </a>\n  }@else{\n  <button\n    type=\"button\"\n    class=\"header-sub-menu-item__button\"\n    [class.header-sub-menu-item__button--selected]=\"isSelected\"\n    [class.header-sub-menu-item__button--danger]=\"isDanger\"\n    (click)=\"clickCallback.emit($event); contentTemplate && $event.stopPropagation()\"\n  >\n    <ng-container *ngTemplateOutlet=\"itemContent\"></ng-container>\n  </button>\n  } @if (contentTemplate){\n  <div class=\"header-sub-menu-item__sub-menu\">\n    <ng-container *ngTemplateOutlet=\"contentTemplate\"></ng-container>\n  </div>\n  }\n</div>\n\n<ng-template #itemContent>\n  @if(iconName){\n  <ui-fararu-icon\n    class=\"header-sub-menu-item__icon\"\n    [name]=\"iconName\"\n    [size]=\"'x2'\"\n    [color]=\"isDanger ? 'error' : 'content-secondary'\"\n  ></ui-fararu-icon>\n  }\n  <strong class=\"header-sub-menu-item__title\">{{ title }}</strong>\n  @if (contentTemplate){\n  <ui-fararu-icon\n    class=\"header-sub-menu-item__arrow flip-in-rtl\"\n    [name]=\"'arrow-right'\"\n    [size]=\"'x2'\"\n    [color]=\"'content-secondary'\"\n  ></ui-fararu-icon>\n  }\n</ng-template>\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { AuthSandbox } from '../../../../store/sandboxes/auth.sandbox';\nimport { FararuLayoutService } from '../../fararu-layout.service';\n\n@Component({\n  selector: 'app-profile-menu',\n  templateUrl: './profile-menu.component.html',\n  styleUrl: './profile-menu.component.scss',\n})\nexport class ProfileMenuComponent {\n  @Input() loggedUserId?: string;\n  @Input() loggedUserName?: string;\n  @Input() set loggedUserPhoto(value: string) {\n    this.photo = value;\n  }\n  @Input() hideChangePassworButton?: boolean;\n\n  @Output() changePasswordClickCallback = new EventEmitter<Event>();\n\n  photo?: string | ArrayBuffer;\n  photoIsUploading?: boolean;\n\n  constructor(\n    private readonly _layoutService: FararuLayoutService,\n    private readonly _authSandbox: AuthSandbox\n  ) {}\n\n  handleSignoutButtonClick(): void {\n    this._layoutService.clearAllTabs();\n    this._authSandbox.logout();\n  }\n\n  handleSelectFile(event: Event) {\n    const fileInput: HTMLInputElement = event.target as HTMLInputElement;\n    const file = fileInput.files[0];\n\n    if (!file || !file.type.startsWith('image/')) {\n      return;\n    }\n\n    // TODO: upload photo in server\n    this.photoIsUploading = true;\n    const reader = new FileReader();\n    reader.onload = e => {\n      setTimeout(() => {\n        this.photo = e.target.result;\n        this.photoIsUploading = false;\n      }, 2000);\n    };\n    reader.onerror = () => {\n      this.photoIsUploading = false;\n    };\n    reader.readAsDataURL(file);\n  }\n}\n","<app-header-sub-menu>\n  <section class=\"profile-menu-info\">\n    <div class=\"profile-menu-info__avatar\" (click)=\"$event.stopPropagation()\">\n      @if (photo) {\n      <img class=\"profile-menu-info__photo\" [attr.src]=\"photo\" [attr.alt]=\"loggedUserName\" />\n      }@else {\n      <ui-fararu-icon\n        class=\"profile-menu-info__icon\"\n        [name]=\"'user-1'\"\n        [size]=\"'x8'\"\n        [color]=\"'content-primary-inverse'\"\n      ></ui-fararu-icon>\n      } @if (photoIsUploading){\n      <ui-spinner\n        class=\"profile-menu-info__loading\"\n        [show]=\"photoIsUploading\"\n        [color]=\"'quaternary'\"\n        [size]=\"'small'\"\n      ></ui-spinner>\n      }@else {\n      <label for=\"profile-avatar-file-input\" class=\"profile-menu-info__button\">\n        <ui-fararu-icon\n          [name]=\"'camera'\"\n          [color]=\"'content-primary-inverse'\"\n          [size]=\"'x3'\"\n        ></ui-fararu-icon>\n        <span class=\"profile-menu-info__button-text\"\n          >{{ 'profileMenu.selectPhoto' | translate }}\n        </span>\n      </label>\n      }\n\n      <input\n        [hidden]=\"true\"\n        type=\"file\"\n        id=\"profile-avatar-file-input\"\n        accept=\"image/*\"\n        (change)=\"handleSelectFile($event)\"\n      />\n    </div>\n    <strong class=\"profile-menu-info__display-name\">{{ loggedUserName }}</strong>\n  </section>\n  @if (!hideChangePassworButton && changePasswordClickCallback.observed){\n  <div class=\"header-sub-menu__group\">\n    <app-header-sub-menu-item\n      [title]=\"'profileMenu.changePassword' | translate\"\n      [iconName]=\"'password'\"\n      (clickCallback)=\"changePasswordClickCallback.emit($event)\"\n    >\n    </app-header-sub-menu-item>\n  </div>\n  }\n  <div class=\"header-sub-menu__group\">\n    <app-header-sub-menu-item\n      [title]=\"'profileMenu.signout' | translate\"\n      [iconName]=\"'logout'\"\n      [isDanger]=\"true\"\n      (clickCallback)=\"handleSignoutButtonClick()\"\n    >\n    </app-header-sub-menu-item>\n  </div>\n</app-header-sub-menu>\n","import { Component } from '@angular/core';\n\n@Component({\n  selector: 'app-help-menu',\n  templateUrl: './help-menu.component.html',\n  styleUrl: './help-menu.component.scss',\n})\nexport class HelpMenuComponent {}\n","<app-header-sub-menu>\n  <app-header-sub-menu-item\n    [title]=\"'settingsMenu.help' | translate\"\n    [iconName]=\"'help'\"\n    [externalLink]=\"'http://lms.varanegar.com/'\"\n  >\n  </app-header-sub-menu-item>\n  <app-header-sub-menu-item [title]=\"'settingsMenu.support' | translate\" [iconName]=\"'support'\">\n    <ng-template>\n      <app-header-sub-menu-item\n        [title]=\"'settingsMenu.mainSite' | translate\"\n        [externalLink]=\"'https://www.varanegar.com/'\"\n      >\n      </app-header-sub-menu-item>\n      <app-header-sub-menu-item\n        [title]=\"'settingsMenu.customersPortal' | translate\"\n        [externalLink]=\"'https://techsup.varanegar.com/servicedesk/'\"\n      >\n      </app-header-sub-menu-item>\n      <app-header-sub-menu-item\n        [title]=\"'settingsMenu.viewErrors' | translate\"\n        [internalLink]=\"'/support/logs'\"\n      >\n      </app-header-sub-menu-item>\n      <app-header-sub-menu-item\n        [title]=\"'settingsMenu.jobsStatus' | translate\"\n        [internalLink]=\"'/support/jobs-status'\"\n      >\n      </app-header-sub-menu-item>\n    </ng-template>\n  </app-header-sub-menu-item>\n</app-header-sub-menu>\n","import { Component, OnDestroy, OnInit, Inject, Optional } from '@angular/core';\nimport { IconNameType } from '../../../../types/icon-name.type';\nimport { ThemeType } from '../../../../types/theme.type';\nimport { SessionNames } from '../../../../constants/session-names';\nimport { FararuLayoutService } from '../../fararu-layout.service';\nimport { CalendarType } from '../../../../utils/calendar';\nimport { SelectOptionInterface } from '../../../../models/select-option.interface';\nimport { lastValueFrom, Subject, takeUntil } from 'rxjs';\nimport { TranslateService } from '@ngx-translate/core';\nimport { HttpClient } from '@angular/common/http';\nimport { SUB_SYSTEM_VERSION } from '../../../../models/injection-tokens';\n\ntype LanguageType = 'en' | 'fa';\n\n@Component({\n  selector: 'app-settings-menu',\n  templateUrl: './settings-menu.component.html',\n  styleUrl: './settings-menu.component.scss',\n})\nexport class SettingsMenuComponent implements OnInit, OnDestroy {\n  calendarType?: CalendarType | null = null;\n  showCalendarTypeSwitch?: boolean | null = null;\n  calendarTypeOptions: SelectOptionInterface<CalendarType>[] = [];\n  calendarTypeSwitchOptions: SelectOptionInterface<boolean>[] = [];\n  languages: LanguageType[] = ['fa', 'en'];\n  themes: { theme: ThemeType; icon: IconNameType }[] = [\n    { theme: 'system', icon: 'system' },\n    { theme: 'light', icon: 'sun' },\n    { theme: 'dark', icon: 'half-moon' },\n  ];\n  currentLanguage?: LanguageType;\n  currentTheme?: ThemeType;\n  selectIsOpen?: boolean;\n  version: string = '';\n  dataBaseVersion: string = '';\n  applicationVersion: string = '';\n\n  destroyRef: Subject<void> = new Subject<void>();\n\n  constructor(\n    private readonly _layoutService: FararuLayoutService,\n    private readonly _translateService: TranslateService,\n    private readonly _http: HttpClient,\n    @Optional() @Inject(SUB_SYSTEM_VERSION) private subSystemVersion: string\n  ) {\n    this.version = this.subSystemVersion || null;\n  }\n\n  async ngOnInit() {\n    this._http\n      .get<{ applicationVersion: string; dataBaseVersion: string }[]>(\n        'api/general/GetApplicationVersion'\n      )\n      .pipe(takeUntil(this.destroyRef))\n      .subscribe(res => {\n        this.applicationVersion = res[0].applicationVersion;\n        this.dataBaseVersion = res[0].dataBaseVersion;\n      });\n\n    this.calendarType =\n      (() => {\n        try {\n          return localStorage.getItem(SessionNames.CALENDAR_TYPE) as CalendarType;\n        } catch {\n          return null;\n        }\n      })() || 'jalali';\n\n    this.calendarTypeOptions = [\n      {\n        id: 'jalali',\n        text: await lastValueFrom(this._translateService.get('calendar.jalali.title')),\n      },\n      {\n        id: 'gregorian',\n        text: await lastValueFrom(this._translateService.get('calendar.gregorian.title')),\n      },\n    ];\n\n    this.showCalendarTypeSwitch =\n      (() => {\n        try {\n          return localStorage.getItem(SessionNames.CALENDAR_HAS_SWITCH) == 'true';\n        } catch {\n          return false;\n        }\n      })() || false;\n\n    this.calendarTypeSwitchOptions = [\n      {\n        id: false,\n        text: await lastValueFrom(\n          this._translateService.get('settingsMenu.showCalendarTypeSwitchOptions.hasNot')\n        ),\n      },\n      {\n        id: true,\n        text: await lastValueFrom(\n          this._translateService.get('settingsMenu.showCalendarTypeSwitchOptions.has')\n        ),\n      },\n    ];\n\n    this.currentLanguage = (localStorage.getItem(SessionNames.LANGUAGE) as LanguageType) || 'fa';\n    this.currentTheme = localStorage.getItem(SessionNames.THEME) as ThemeType;\n  }\n\n  ngOnDestroy() {\n    this.destroyRef.next();\n    this.destroyRef.complete();\n  }\n\n  handleLanguageButtonClick(lang: LanguageType) {\n    this.currentLanguage = lang;\n    localStorage.setItem(SessionNames.LANGUAGE, lang);\n    location.reload();\n  }\n\n  handleThemeButtonClick(theme: ThemeType) {\n    this.currentTheme = theme;\n    this._layoutService.$theme.next(theme);\n  }\n\n  handleCalendarTypeChange(type: CalendarType) {\n    this.calendarType = type;\n    localStorage.setItem(SessionNames.CALENDAR_TYPE, type);\n  }\n\n  handleCalendarTypeSwitchChange(state: boolean) {\n    this.showCalendarTypeSwitch = state === true;\n    if (this.showCalendarTypeSwitch) {\n      localStorage.setItem(SessionNames.CALENDAR_HAS_SWITCH, state.toString());\n    } else {\n      localStorage.removeItem(SessionNames.CALENDAR_HAS_SWITCH);\n    }\n  }\n\n  handleSelectOpen() {\n    this.selectIsOpen = true;\n  }\n  handleSelectClose() {\n    this.selectIsOpen = false;\n  }\n}\n","<app-header-sub-menu>\n  <app-header-sub-menu-item\n    [title]=\"'settingsMenu.appLanguage' | translate\"\n    [iconName]=\"'language'\"\n  >\n    <ng-template>\n      <app-header-sub-menu-item\n        *ngFor=\"let item of languages\"\n        [isSelected]=\"item === currentLanguage\"\n        [title]=\"'languages.' + item | translate\"\n        (clickCallback)=\"handleLanguageButtonClick(item)\"\n      >\n      </app-header-sub-menu-item>\n    </ng-template>\n  </app-header-sub-menu-item>\n  <app-header-sub-menu-item [title]=\"'settingsMenu.theme' | translate\" [iconName]=\"'half-moon'\">\n    <ng-template>\n      <app-header-sub-menu-item\n        *ngFor=\"let item of themes\"\n        [title]=\"'theme.' + item.theme | translate\"\n        [isSelected]=\"item.theme === currentTheme\"\n        (clickCallback)=\"handleThemeButtonClick(item.theme)\"\n      >\n      </app-header-sub-menu-item>\n    </ng-template>\n  </app-header-sub-menu-item>\n  <div class=\"header-sub-menu__group\">\n    <app-header-sub-menu-item\n      [title]=\"'settingsMenu.calendar' | translate\"\n      [iconName]=\"'date'\"\n      [showSubMenu]=\"selectIsOpen\"\n    >\n      <ng-template>\n        <div class=\"settings-menu__form\" (click)=\"$event.stopPropagation()\">\n          <ui-select\n            [label]=\"'settingsMenu.calendarType' | translate\"\n            [labelType]=\"'float'\"\n            [(ngModel)]=\"calendarType\"\n            [options]=\"calendarTypeOptions\"\n            (onChangeCalback)=\"handleCalendarTypeChange($event)\"\n            (openCallback)=\"handleSelectOpen()\"\n            (closeCallback)=\"handleSelectClose()\"\n            [placeholder]=\"'settingsMenu.calendarType' | translate\"\n          ></ui-select>\n          <ui-select\n            [label]=\"'settingsMenu.showCalendarTypeSwitch' | translate\"\n            [labelType]=\"'float'\"\n            [(ngModel)]=\"showCalendarTypeSwitch\"\n            [options]=\"calendarTypeSwitchOptions\"\n            (onChangeCalback)=\"handleCalendarTypeSwitchChange($event)\"\n            (openCallback)=\"handleSelectOpen()\"\n            (closeCallback)=\"handleSelectClose()\"\n            [placeholder]=\"'settingsMenu.showCalendarTypeSwitch' | translate\"\n          ></ui-select>\n        </div>\n      </ng-template>\n    </app-header-sub-menu-item>\n  </div>\n  <div class=\"header-sub-menu__group m-1 mt-2\">\n    <ui-key-value\n      [key]=\"'settingsMenu.appVersion' | translate\"\n      [value]=\"version ? version : '...'\"\n    ></ui-key-value>\n    <ui-key-value\n      [key]=\"'settingsMenu.serverVersion' | translate\"\n      [value]=\"applicationVersion ? applicationVersion : '...'\"\n    ></ui-key-value>\n    <ui-key-value\n      [key]=\"'settingsMenu.dataBaseVersion' | translate\"\n      [value]=\"dataBaseVersion ? dataBaseVersion : '...'\"\n    ></ui-key-value>\n  </div>\n</app-header-sub-menu>\n","import {\n  Component,\n  ElementRef,\n  EventEmitter,\n  Input,\n  OnDestroy,\n  OnInit,\n  Output,\n  TemplateRef,\n  ViewChild,\n  ViewContainerRef,\n} from '@angular/core';\nimport { MenuInterface } from '../../../../models/menu.interface';\nimport { Subscription } from 'rxjs';\nimport { Overlay, OverlayRef } from '@angular/cdk/overlay';\nimport { FararuLayoutService } from '../../fararu-layout.service';\nimport { TemplatePortal } from '@angular/cdk/portal';\n\n@Component({\n  selector: 'app-header',\n  templateUrl: './header.component.html',\n  styleUrl: './header.component.scss',\n})\nexport class HeaderComponent implements OnInit, OnDestroy {\n  @Input() menus: MenuInterface[] = [];\n  @Input() loggedUserId?: string;\n  @Input() loggedUserName?: string;\n  @Input() loggedUserPhoto?: string;\n  @Input() hideChangePassworButton?: boolean;\n\n  @Output() mainMenuItemsShowingCallback = new EventEmitter<MenuInterface>();\n  @Output() changePasswordClickCallback = new EventEmitter<Event>();\n\n  @ViewChild('settingsButton')\n  settingsButtonElementRef: ElementRef<HTMLElement>;\n  @ViewChild('settingsMenu') settingsMenuTemplateRef: TemplateRef<any>;\n\n  settingsMenuIsOpened?: boolean = false;\n\n  private _subscriptions: Subscription[] = [];\n  private _overlayRef: OverlayRef;\n  private _transitionDelay: number = 300;\n\n  constructor(\n    private readonly _overlay: Overlay,\n    private readonly _viewContainerRef: ViewContainerRef,\n    private readonly _layoutService: FararuLayoutService\n  ) {}\n\n  ngOnInit(): void {\n    this._subscriptions.push(\n      this._layoutService.$settingsMenuIsShow.subscribe(res => {\n        if (res) {\n          this._openSettingsMenu();\n        } else {\n          this._closeSettingMenu();\n        }\n      })\n    );\n  }\n\n  ngOnDestroy(): void {\n    this._subscriptions.forEach(sb => sb.unsubscribe());\n  }\n\n  settingButtonClickHandler() {\n    this._layoutService.openSettingsMenu();\n  }\n\n  private _openSettingsMenu() {\n    this._overlayRef = this._createSettingsMenuOverlay();\n    this._overlayRef.attach(\n      new TemplatePortal(this.settingsMenuTemplateRef, this._viewContainerRef)\n    );\n    this.settingsMenuIsOpened = true;\n\n    this._overlayRef.backdropClick().subscribe(() => {\n      this._layoutService.closeSettingsMenu();\n    });\n  }\n\n  private _closeSettingMenu() {\n    if (!this.settingsMenuIsOpened) return;\n    this.settingsMenuIsOpened = false;\n    setTimeout(() => {\n      this._overlayRef?.detach();\n    }, this._transitionDelay);\n  }\n\n  private _createSettingsMenuOverlay() {\n    return this._overlay.create({\n      hasBackdrop: true,\n      backdropClass: 'cdk-overlay-transparent-backdrop',\n      direction: document.body.getAttribute('dir') == 'rtl' ? 'rtl' : 'ltr',\n      scrollStrategy: this._overlay.scrollStrategies.block(),\n      positionStrategy: this._overlay\n        .position()\n        .flexibleConnectedTo(this.settingsButtonElementRef)\n        .withPositions([\n          {\n            originX: 'end',\n            originY: 'bottom',\n            overlayX: 'end',\n            overlayY: 'top',\n          },\n        ]),\n    });\n  }\n}\n","<header class=\"main-layout-header\">\n  <svg-icon class=\"main-layout-header__logo\" src=\"/assets/logo.svg\"></svg-icon>\n  <app-searchbox\n    [menus]=\"menus\"\n    [loggedUserId]=\"loggedUserId\"\n    (mainMenuItemsShowingCallback)=\"mainMenuItemsShowingCallback.emit($event)\"\n  ></app-searchbox>\n  <section class=\"main-layout-header__content\">\n    <ng-content></ng-content>\n  </section>\n  <div class=\"main-layout-header__actions\">\n    <button\n      class=\"main-layout-header__button\"\n      type=\"button\"\n      [dropdownTriggerFor]=\"settingsMenu\"\n      [dropdownAlignment]=\"'center'\"\n    >\n      <ui-fararu-icon\n        [name]=\"'setting'\"\n        [size]=\"'x2'\"\n        [color]=\"'content-primary-inverse'\"\n      ></ui-fararu-icon>\n    </button>\n    <ui-dropdown\n      #settingsMenu\n      [contentTemplateRef]=\"settingsMenuContextTemplate\"\n      [overflow]=\"'visible'\"\n    ></ui-dropdown>\n    <button\n      class=\"main-layout-header__button\"\n      type=\"button\"\n      [dropdownTriggerFor]=\"helpMenu\"\n      [dropdownAlignment]=\"'center'\"\n    >\n      <ui-fararu-icon\n        [name]=\"'shortcut-key'\"\n        [size]=\"'x2'\"\n        [color]=\"'content-primary-inverse'\"\n      ></ui-fararu-icon>\n    </button>\n    <ui-dropdown\n      #helpMenu\n      [contentTemplateRef]=\"helpMenuContextTemplate\"\n      [overflow]=\"'visible'\"\n    ></ui-dropdown>\n    <button\n      class=\"profile-menu__button\"\n      type=\"button\"\n      [dropdownTriggerFor]=\"profileMenu\"\n      [dropdownAlignment]=\"'end'\"\n    >\n      <ui-fararu-icon\n        class=\"profile-menu__icon\"\n        [name]=\"'user-1'\"\n        [size]=\"'x1'\"\n        [color]=\"'content-primary-inverse'\"\n      ></ui-fararu-icon>\n      <strong class=\"profile-menu__text\">{{ loggedUserName }}</strong>\n      <ui-fararu-icon\n        [name]=\"'arrow-bottom'\"\n        [size]=\"'x2'\"\n        [color]=\"'content-primary-inverse'\"\n      ></ui-fararu-icon>\n    </button>\n    <ui-dropdown #profileMenu [contentTemplateRef]=\"profileMenuContextTemplate\"></ui-dropdown>\n  </div>\n</header>\n\n<!-- <ng-template #settingsMenu>\n  <section class=\"settings-menu\" [class.settings-menu--show]=\"settingsMenuIsOpened\">\n    <ng-content select=\"[settings-menu]\"></ng-content>\n  </section>\n</ng-template> -->\n\n<ng-template #settingsMenuContextTemplate>\n  <app-settings-menu></app-settings-menu>\n</ng-template>\n\n<ng-template #helpMenuContextTemplate><app-help-menu></app-help-menu></ng-template>\n\n<ng-template #profileMenuContextTemplate>\n  <app-profile-menu\n    [loggedUserId]=\"loggedUserId\"\n    [loggedUserName]=\"loggedUserName\"\n    [loggedUserPhoto]=\"loggedUserPhoto\"\n    [hideChangePassworButton]=\"hideChangePassworButton || !changePasswordClickCallback.observed\"\n    (changePasswordClickCallback)=\"changePasswordClickCallback.emit($event)\"\n  ></app-profile-menu>\n</ng-template>\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { isNil } from '../../../../utils/is-nil';\nimport { SelectOptionInterface } from '../../../../models/select-option.interface';\n\n@Pipe({\n  name: 'statusBarValue',\n})\nexport class StatusBarValuePipe implements PipeTransform {\n  transform(\n    value: string,\n    items: SelectOptionInterface[],\n    selectedOptionId: SelectOptionInterface['id']\n  ): string {\n    if (items?.length && !isNil(selectedOptionId)) {\n      return items.find(x => x.id == selectedOptionId)?.text;\n    }\n    return value;\n  }\n}\n","import { AfterViewInit, Component, HostListener, Input } from '@angular/core';\nimport { SessionNames } from '../../../../constants/session-names';\nimport { Subscription } from 'rxjs';\nimport { StatusBarItemInterface } from '../../../../models/status-bar-item.interface';\n\n@Component({\n  selector: 'app-status-bar',\n  templateUrl: './status-bar.component.html',\n  styleUrl: './status-bar.component.scss',\n})\nexport class StatusBarComponent implements AfterViewInit {\n  @Input() items: StatusBarItemInterface[] = [];\n\n  transitionsCanBeApplied?: boolean;\n  isPinned?: boolean = localStorage.getItem(SessionNames.STATUS_BAR_PIN) === 'false' ? false : true; // default have to show\n  menuState: { [key: string]: { append: boolean; show?: boolean } } = {};\n  currentOpenedMenu: string;\n\n  private _subscriptions: Subscription[] = [];\n  private _hideMenuTimeout: { [key: string]: ReturnType<typeof setTimeout> } = {};\n\n  ngAfterViewInit(): void {\n    setTimeout(() => {\n      this.transitionsCanBeApplied = true;\n    }, 0);\n  }\n\n  ngOnDestroy(): void {\n    this._subscriptions.forEach(item => item.unsubscribe());\n  }\n\n  handlePinButtonClick() {\n    this.isPinned = !this.isPinned;\n    localStorage.setItem(SessionNames.STATUS_BAR_PIN, this.isPinned ? 'true' : 'false');\n  }\n\n  handleItemClick(key: string) {\n    if (this.menuState[key]?.show) {\n      this._hideItemMenu(key);\n    } else {\n      this._showItemMenu(key);\n    }\n  }\n\n  @HostListener('document:click', ['$event'])\n  private handleDocumentClick() {\n    this._hideCurrentMenu();\n  }\n\n  private _hideCurrentMenu() {\n    if (this.currentOpenedMenu) {\n      this._hideItemMenu(this.currentOpenedMenu);\n    }\n  }\n\n  private _showItemMenu(key: string) {\n    clearTimeout(this._hideMenuTimeout[key]);\n    this.menuState[key] = {\n      append: true,\n    };\n    setTimeout(() => {\n      this.menuState[key].show = true;\n      this.currentOpenedMenu = key;\n    }, 0);\n  }\n\n  private _hideItemMenu(key: string) {\n    this.menuState[key].show = false;\n    this.currentOpenedMenu = null;\n    this._hideMenuTimeout[key] = setTimeout(() => {\n      this.menuState[key].append = false;\n    }, 300);\n  }\n}\n","<footer\n  class=\"status-bar\"\n  [class.status-bar--is-pinned]=\"isPinned\"\n  [class.status-bar--has-transition]=\"transitionsCanBeApplied\"\n>\n  <section class=\"status-bar__container\">\n    <button class=\"status-bar__pin-button\" (click)=\"handlePinButtonClick()\">\n      <ui-fararu-icon\n        [name]=\"isPinned ? 'arrow-bottom' : 'arrow-top'\"\n        [color]=\"'content-quaternary-inverse'\"\n        [size]=\"'x3'\"\n      ></ui-fararu-icon>\n    </button>\n    <section class=\"status-bar__content\">\n      <ng-container>\n        <ng-container\n          *ngFor=\"let item of items\"\n          [ngTemplateOutlet]=\"itemTemplate\"\n          [ngTemplateOutletContext]=\"{\n            title: item.title,\n            value: item.value,\n            selectedOptionId: item.selectedOptionId,\n            items: item.options,\n            itemClick: item.optionClickCallback\n          }\"\n        >\n        </ng-container>\n      </ng-container>\n    </section>\n  </section>\n</footer>\n\n<ng-template\n  #itemTemplate\n  let-title=\"title\"\n  let-value=\"value\"\n  let-selectedOptionId=\"selectedOptionId\"\n  let-items=\"items\"\n  let-content=\"content\"\n  let-itemClick=\"itemClick\"\n>\n  <div\n    class=\"status-bar-item\"\n    [class.status-bar-item--has-menu]=\"items || content\"\n    [class.status-bar-item--show-menu]=\"menuState[title]?.show\"\n    (click)=\"handleItemClick(title)\"\n  >\n    <span class=\"status-bar-item__title\">{{ title }}:</span>\n    <strong class=\"status-bar-item__value\">{{\n      (value | statusBarValue : items : selectedOptionId) ?? '-'\n    }}</strong>\n    <ui-fararu-icon\n      *ngIf=\"content || items\"\n      class=\"status-bar-item__arrow\"\n      [name]=\"'arrow-bottom'\"\n      [color]=\"'content-quaternary-inverse'\"\n      [size]=\"'x1'\"\n    ></ui-fararu-icon>\n    <div *ngIf=\"(content || items) && menuState[title]?.append\" class=\"status-bar-item__menu\">\n      <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n      <ul *ngIf=\"items?.length\" class=\"status-bar-item__menu-list\">\n        <li\n          *ngFor=\"let item of items\"\n          class=\"status-bar-item__menu-item\"\n          [class.status-bar-item__menu-item--selected]=\"selectedOptionId == item.id\"\n          (click)=\"itemClick(item)\"\n        >\n          {{ item.text }}\n        </li>\n      </ul>\n    </div>\n  </div>\n</ng-template>\n","import { Component, EventEmitter, Input, OnInit, Output, SimpleChanges } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { Subscription } from 'rxjs';\nimport { MenuInterface } from '../../../models/menu.interface';\nimport { StatusBarItemInterface } from '../../../models/status-bar-item.interface';\nimport { FararuLayoutService } from '../fararu-layout.service';\n\n@Component({\n  selector: 'app-main-layout-v1',\n  templateUrl: './main-layout-v1.component.html',\n  styleUrls: ['./main-layout-v1.component.scss'],\n})\nexport class MainLayoutV1Component implements OnInit {\n  @Input() menus: MenuInterface[] = [];\n  @Input() loggedUserId?: string;\n  @Input() loggedUserName?: string;\n  @Input() loggedUserPhoto?: string;\n  @Input() statusBarItems?: StatusBarItemInterface[];\n  @Input() companyTitle?: string;\n  @Input() companyLogoUrl?: string;\n  @Input() hideChangePassworButton?: boolean;\n\n  @Output() mainMenuItemsShowingCallback = new EventEmitter<MenuInterface>();\n  @Output() changePasswordClickCallback = new EventEmitter<Event>();\n\n  openedWindows: MenuInterface[] = [];\n  last3ClosedWindows: MenuInterface[] = [];\n  subscription = new Subscription();\n  currentLink: string;\n  toolbarOpen: boolean = false;\n\n  constructor(private layoutService: FararuLayoutService, private router: Router) {}\n\n  ngOnInit(): void {\n    this.subscription.add(\n      this.layoutService.getOpenedWidows().subscribe(data => {\n        this.openedWindows = data;\n        this.currentLink = this.openedWindows.find(\n          window => window.link === this.router.url\n        )?.title;\n      })\n    );\n    this.subscription.add(\n      this.layoutService.currentPage$.subscribe(data => {\n        this.currentLink = data;\n      })\n    );\n    this.subscription.add(\n      this.layoutService.getLast3ClosedWidows().subscribe(data => {\n        this.last3ClosedWindows = data;\n      })\n    );\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (changes['loggedUserId']) {\n      this.layoutService.setLoggedUser({\n        id: this.loggedUserId,\n        name: '',\n      });\n      this.layoutService.setOpenedWindows();\n    }\n\n    this._loadFavoiteData();\n  }\n\n  removeWindow(event: any, data: MenuInterface): void {\n    event.preventDefault();\n    event.stopPropagation();\n    this.layoutService.removeWindow(data);\n  }\n\n  removeAllWindows(event: any): void {\n    event.preventDefault();\n    event.stopPropagation();\n    this.layoutService.clearAllTabs();\n  }\n\n  removeLinkQueryString(link: string) {\n    return this.layoutService.removeLinkQueryString(link);\n  }\n\n  getLinkQueryString(link: string) {\n    return this.layoutService.getLinkQueryString(link);\n  }\n\n  mainMenuItemsShowingHandler(menu: MenuInterface) {\n    this.mainMenuItemsShowingCallback.emit(menu);\n  }\n\n  onSetLink(window: MenuInterface, fromHistory = false): void {\n    if (fromHistory) {\n      this.layoutService.addWindow(window);\n    }\n    this.currentLink = window.title;\n  }\n\n  ngOnDestroy(): void {\n    this.subscription?.unsubscribe();\n  }\n\n  toggleToolbar() {\n    this.toolbarOpen = !this.toolbarOpen;\n  }\n\n  private _loadFavoiteData() {\n    this._setFavorited(this.menus);\n  }\n\n  private _setFavorited(items: MenuInterface[]) {\n    items.forEach(item => {\n      if (item.id) {\n        const favoritedMenuIds = this.layoutService.favoritedMenuIds$.value;\n        item.favorited = favoritedMenuIds.includes(item.id);\n      }\n      if (item.subMenus?.length) {\n        this._setFavorited(item.subMenus);\n      }\n    });\n  }\n}\n","<section class=\"main-layout\">\n  <app-header\n    [menus]=\"menus\"\n    [loggedUserId]=\"loggedUserId\"\n    [loggedUserName]=\"loggedUserName\"\n    [loggedUserPhoto]=\"loggedUserPhoto\"\n    [hideChangePassworButton]=\"hideChangePassworButton || !changePasswordClickCallback.observed\"\n    (mainMenuItemsShowingCallback)=\"mainMenuItemsShowingCallback.emit($event)\"\n    (changePasswordClickCallback)=\"changePasswordClickCallback.emit($event)\"\n  >\n    <section class=\"main-layout__header\">\n      <section *ngIf=\"openedWindows?.length\">\n        <button class=\"main-layout-dropdown__button\" [dropdownTriggerFor]=\"routerHistory\">\n          <ui-fararu-icon name=\"arrow-bottom\" [color]=\"'content-primary-inverse'\"></ui-fararu-icon>\n        </button>\n        <ui-dropdown #routerHistory>\n          <div class=\"p-2\">\n            <div class=\"d-flex justify-content-between align-items-center\">\n              <h3 class=\"main-layout__dropdown-title\">\n                {{ 'general.mainLayout.openedPages' | translate }}\n              </h3>\n              <button class=\"main-layout__dropdown--close-all\" (click)=\"removeAllWindows($event)\">\n                {{ 'general.mainLayout.closeAll' | translate }}\n              </button>\n            </div>\n            <div class=\"main-layout__dropdown-open-tabs-container\">\n              <a\n                *ngFor=\"let openedWindow of openedWindows\"\n                class=\"main-layout__dropdown-items\"\n                [routerLink]=\"removeLinkQueryString(openedWindow.link)\"\n                [queryParams]=\"getLinkQueryString(openedWindow.link)\"\n                [routerLinkActive]=\"'wrapper__tab-button--active'\"\n                [routerLinkActiveOptions]=\"{ exact: true }\"\n                (click)=\"onSetLink(openedWindow)\"\n              >\n                <span>{{ openedWindow.title }}</span>\n                <button class=\"d-inline-flex\" (click)=\"removeWindow($event, openedWindow)\">\n                  <ui-fararu-icon\n                    class=\"d-flex\"\n                    size=\"x1\"\n                    name=\"close\"\n                    color=\"content-secondary\"\n                  ></ui-fararu-icon>\n                </button>\n              </a>\n            </div>\n            <ng-container *ngIf=\"last3ClosedWindows?.length\">\n              <hr class=\"mt-1\" />\n              <h3 class=\"main-layout__dropdown-title\">\n                {{ 'general.mainLayout.lastRecentlyClosed' | translate }}\n              </h3>\n              <a\n                *ngFor=\"let openedWindow of last3ClosedWindows\"\n                class=\"main-layout__dropdown-items main-layout__history\"\n                [routerLink]=\"removeLinkQueryString(openedWindow.link)\"\n                [queryParams]=\"getLinkQueryString(openedWindow.link)\"\n                [routerLinkActive]=\"'wrapper__tab-button--active-no-style'\"\n                [routerLinkActiveOptions]=\"{ exact: true }\"\n                (click)=\"onSetLink(openedWindow, true)\"\n              >\n                <ui-fararu-icon\n                  style=\"display: inline-flex\"\n                  size=\"x1\"\n                  name=\"history\"\n                  color=\"content-secondary\"\n                ></ui-fararu-icon>\n                <span class=\"wrapper__history-text\">{{ openedWindow.title }}</span>\n              </a>\n            </ng-container>\n          </div>\n        </ui-dropdown>\n      </section>\n      <div class=\"main-layout__opened-tabs\">\n        <a\n          class=\"main-layout__tab-button\"\n          *ngFor=\"let item of openedWindows\"\n          [routerLink]=\"removeLinkQueryString(item.link)\"\n          [queryParams]=\"getLinkQueryString(item.link)\"\n          [routerLinkActive]=\"'main-layout__tab-button--active'\"\n          [routerLinkActiveOptions]=\"{ exact: true }\"\n          ><ui-icon\n            color=\"primary\"\n            [block]=\"true\"\n            size=\"x1\"\n            *ngIf=\"item.icon\"\n            [group]=\"item.iconGroup\"\n            [name]=\"item.icon\"\n          ></ui-icon\n          ><span class=\"main-layout__tab-button-text\">{{ item.title }}</span>\n          <button class=\"main-layout__tab-close-button\" (click)=\"removeWindow($event, item)\">\n            <ui-fararu-icon\n              style=\"display: inline-flex\"\n              name=\"close\"\n              color=\"content-tertiary\"\n              size=\"x1\"\n            ></ui-fararu-icon>\n          </button>\n        </a>\n      </div>\n    </section>\n    <ng-content settings-menu select=\"[settings-menu]\"></ng-content>\n  </app-header>\n  <main class=\"main-layout__container\">\n    <app-side-bar\n      [menus]=\"menus\"\n      [loggedUserId]=\"loggedUserId\"\n      [companyTitle]=\"companyTitle\"\n      [companyLogoUrl]=\"companyLogoUrl\"\n      (mainMenuItemsShowingCallback)=\"mainMenuItemsShowingHandler($event)\"\n    >\n    </app-side-bar>\n    <section class=\"main-layout__layout\">\n      <section class=\"main-layout__content\">\n        <router-outlet></router-outlet>\n      </section>\n      <app-status-bar *ngIf=\"statusBarItems?.length\" [items]=\"statusBarItems\"></app-status-bar>\n    </section>\n  </main>\n</section>\n","import { NgModule } from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { FararuDesignSystemLibModule } from '../fararu-design-system-lib.module';\nimport { AsideHeaderContentLayoutComponent } from './aside-header-content-layout/aside-header-content-layout.component';\nimport { HeaderContentLayoutComponent } from './header-content-layout/header-content-layout.component';\nimport { AsideColComponent } from './main-layout/aside-col/aside-col.component';\nimport { AsideMenuDrawerComponent } from './main-layout/aside-menu-drawer/aside-menu-drawer.component';\nimport { MainLayoutComponent } from './main-layout/main-layout.component';\nimport { MainLayoutV1Component } from './main-layout-v1/main-layout-v1.component';\nimport { SideBarComponent } from './main-layout-v1/side-bar/side-bar.component';\nimport { FararuSharedModule } from '../../modules';\nimport { AngularSvgIconModule } from 'angular-svg-icon';\nimport { HeaderComponent } from './main-layout-v1/header/header.component';\nimport { SearchboxComponent } from './main-layout-v1/searchbox/searchbox.component';\nimport { SubMenuButtonComponent } from './main-layout-v1/sub-menu-button/sub-menu-button.component';\nimport { StatusBarComponent } from './main-layout-v1/status-bar/status-bar.component';\nimport { StatusBarValuePipe } from './main-layout-v1/status-bar/status-bar-value.pipe';\nimport { ProfileMenuComponent } from './main-layout-v1/profile-menu/profile-menu.component';\nimport { HelpMenuComponent } from './main-layout-v1/help-menu/help-menu.component';\nimport { SettingsMenuComponent } from './main-layout-v1/settings-menu/settings-menu.component';\nimport { HeaderSubMenuItemComponent } from './main-layout-v1/header-sub-menu-item/header-sub-menu-item.component';\nimport { CdkDragPlaceholder } from '@angular/cdk/drag-drop';\nimport { HeaderSubMenuComponent } from './main-layout-v1/header-sub-menu/header-sub-menu.component';\n\nexport const Layouts = [\n  MainLayoutComponent,\n  MainLayoutV1Component,\n  AsideHeaderContentLayoutComponent,\n  HeaderContentLayoutComponent,\n];\n\n@NgModule({\n  imports: [\n    RouterModule,\n    FararuSharedModule,\n    FararuDesignSystemLibModule,\n    TranslateModule,\n    AngularSvgIconModule.forRoot(),\n    CdkDragPlaceholder,\n  ],\n  declarations: [\n    ...Layouts,\n    AsideColComponent,\n    AsideMenuDrawerComponent,\n    SideBarComponent,\n    HeaderComponent,\n    SearchboxComponent,\n    SubMenuButtonComponent,\n    StatusBarComponent,\n    StatusBarValuePipe,\n    ProfileMenuComponent,\n    HelpMenuComponent,\n    SettingsMenuComponent,\n    HeaderSubMenuComponent,\n    HeaderSubMenuItemComponent,\n  ],\n  exports: Layouts,\n  providers: [],\n})\nexport class FararuLayoutsModule {}\n","import { Location } from '@angular/common';\nimport { Component, HostListener, OnInit, TemplateRef, ViewChild } from '@angular/core';\nimport { ActivatedRoute, Router, RouterOutlet } from '@angular/router';\nimport { OutletCloserService } from './../../../services/outlet-closer.service';\nimport { ModalSizeEnum } from '../modal-size-enum';\n\n@Component({\n  selector: 'app-modal-route-wrapper',\n  templateUrl: './modal-route-wrapper.component.html',\n  styleUrl: './modal-route-wrapper.component.scss',\n  standalone: true,\n  imports: [RouterOutlet],\n})\nexport class ModalRouteWrapperComponent implements OnInit {\n  @ViewChild('modalTemplate', { static: false }) modalTemplate: TemplateRef<any>;\n  skipUrl = false;\n  sizeEnum = ModalSizeEnum;\n  modalSize: ModalSizeEnum = ModalSizeEnum.Large;\n\n  constructor(\n    private _router: Router,\n    private _route: ActivatedRoute,\n    private _location: Location,\n    readonly outletCloser: OutletCloserService\n  ) {\n    // this.openModal();\n  }\n  ngOnInit(): void {\n    this._route.data.subscribe((data: any) => {\n      console.log(data);\n      if (data?.modalSize) {\n        this.modalSize = data?.modalSize;\n      }\n    });\n  }\n\n  closePopup() {\n    // this._activeModal.close();\n    // this._location.back();\n    this.outletCloser.closeOutlet('modal');\n  }\n\n  @HostListener('document:keydown', ['$event'])\n  handleKeyboardEvent(event: KeyboardEvent) {\n    if (event.key === 'Escape') {\n      event.stopPropagation();\n      event.preventDefault();\n      this.closePopup();\n    }\n  }\n}\n","<div class=\"cdk-overlay-container\">\n  <div class=\"overlay-backdrop\" tabIndex=\"{0}\" (click)=\"closePopup()\">close</div>\n  <!-- Notice: Do Not Change or remove this class -->\n  <div class=\"global-overlay-wrapper modal-content-dialog-class\">\n    <div\n      class=\"cdk-overlay-pane modal-dialog-centered\"\n      [class.modal-xl]=\"modalSize === sizeEnum.ExtraLarge\"\n      [class.modal-lg]=\"modalSize === sizeEnum.Large\"\n      [class.modal-md]=\"modalSize === sizeEnum.Medium\"\n      [class.modal-sm]=\"modalSize === sizeEnum.Small\"\n    >\n      <div class=\"dialog-container modal-content\">\n        <main class=\"inner-body\">\n          <div class=\"route-panel\">\n            <router-outlet></router-outlet>\n          </div>\n        </main>\n      </div>\n    </div>\n  </div>\n</div>\n","import { SafeHtml } from '@angular/platform-browser';\nimport { DialogType } from './dialog.type';\nimport { IconNameType } from '../../types/icon-name.type';\n\nexport class AlertInterface {\n  type?: DialogType;\n  icon?: IconNameType;\n  title?: string;\n  description?: string | SafeHtml;\n  buttonText?: string;\n  link?: string;\n  linkText?: string;\n}\n","import { SafeHtml } from '@angular/platform-browser';\nimport { DialogType } from './dialog.type';\nimport { IconNameType } from '../../types/icon-name.type';\n\nexport class ConfirmInterface {\n  type?: DialogType;\n  icon?: IconNameType;\n  title?: string;\n  description?: string | SafeHtml;\n  acceptText?: string;\n  declineText?: string;\n}\n","import { AbstractControl, ValidatorFn } from '@angular/forms';\nimport { checkShamsi } from '../../../utils/calendar';\n\nexport class FararuValidators {\n  public static persianDateValidator(required: boolean): ValidatorFn {\n    return (control: AbstractControl) => {\n      const { value, touched, pristine } = control;\n      if (!value || value == '____/__/__') {\n        return required ? { required: true } : null;\n      }\n\n      if (!pristine && touched && value.length !== 10) return { PersianDateFormat: true };\n      const year = parseInt(value.substring(0, 4));\n      const month = parseInt(value.substring(5, 7));\n      const day = parseInt(value.substring(8, 10));\n      if (\n        !year ||\n        !month ||\n        !day ||\n        year < 1300 ||\n        year > 1450 ||\n        month < 1 ||\n        month > 12 ||\n        day < 1 ||\n        day > 31\n      ) {\n        return { PersianDateFormat: true };\n      }\n\n      return checkShamsi(value) ? null : { PersianDateFormat: true };\n    };\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { ActivatedRouteSnapshot, CanActivate, Router } from '@angular/router';\nimport { UserAccessService } from '../services/user-access.service';\nimport { Paths } from '../utils';\n\n@Injectable({ providedIn: 'root' })\nexport class AppGuard implements CanActivate {\n  constructor(\n    private router: Router,\n    private userAccessService: UserAccessService\n  ) {}\n\n  async canActivate(route: ActivatedRouteSnapshot): Promise<boolean> {\n    const routeData: any = route.data;\n    const hasAccess: boolean = await this.userAccessService.userHasAccessAsync(\n      routeData.accessNodeId\n    );\n\n    if (!hasAccess) this.router.navigate([Paths.app.unauthorized().url]);\n\n    return true;\n  }\n}\n","import { Injectable } from '@angular/core';\nimport {\n  Router,\n  CanActivate,\n  ActivatedRouteSnapshot,\n  RouterStateSnapshot,\n} from '@angular/router';\nimport { SessionNames } from '../constants';\nimport { Paths } from '../utils';\n\n@Injectable({ providedIn: 'root' })\nexport class AuthGuard implements CanActivate {\n  constructor(private router: Router) {}\n\n  canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) {\n    const token = sessionStorage.getItem(SessionNames.USER);\n    // TODO: check token server side\n    if (token) {\n      return true;\n    }\n\n    this.router.navigate([Paths.app.auth.login().url]);\n    return false;\n  }\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport { TranslateHttpLoader } from '@ngx-translate/http-loader';\nimport { lastValueFrom } from 'rxjs';\nimport { AppConfigService } from '../services';\nimport { SubSystemType } from '../types/sub-system.type';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class FararuTranslateService {\n  loaded: Set<SubSystemType> = new Set();\n  constructor(\n    private _http: HttpClient,\n    private _translateService: TranslateService,\n    private _appConfigService: AppConfigService\n  ) {}\n  public async loadRemoteTranslations(subsystem: SubSystemType, version?: string): Promise<void> {\n    if (this.loaded.has(subsystem)) return;\n\n    const baseUrl = this._appConfigService.config.remotes[subsystem].url;\n\n    const loader = new TranslateHttpLoader(\n      this._http,\n      `${baseUrl}/i18n/`,\n      `/${subsystem}.json?v=${version ? version : 'latest'}`\n    );\n\n    const translations = await lastValueFrom(\n      loader.getTranslation(this._translateService.currentLang)\n    );\n\n    this._translateService.setTranslation(this._translateService.currentLang, translations, true);\n    this.loaded.add(subsystem);\n  }\n}\n","import { HttpClient } from '@angular/common/http';\nimport { ModuleWithProviders, NgModule } from '@angular/core';\nimport { TranslateLoader, TranslateModule, TranslateService } from '@ngx-translate/core';\nimport { TranslateHttpLoader } from '@ngx-translate/http-loader';\nimport { AppConfigService } from '../services/app-config.service';\nimport { SubSystemType } from '../types/sub-system.type';\n\n@NgModule({\n  declarations: [],\n  imports: [],\n  exports: [TranslateModule],\n})\nexport class FararuTranslateModule {\n  constructor(protected translateService: TranslateService) {\n    const currentLang = translateService.currentLang;\n    if (currentLang) {\n      translateService.currentLang = '';\n      translateService.use(currentLang);\n    }\n  }\n\n  static forRoot(version?: string): ModuleWithProviders<TranslateModule> {\n    return TranslateModule.forRoot({\n      loader: {\n        provide: TranslateLoader,\n        useFactory: function httpLoaderFactory(httpClient: HttpClient) {\n          return new TranslateHttpLoader(\n            httpClient,\n            '/i18n/',\n            `/common.json${version ? `?v=${version}` : ''}`\n          );\n        },\n        deps: [HttpClient],\n      },\n    });\n  }\n  static forFeature(\n    namespace: SubSystemType | (string & {}),\n    extend: boolean = true,\n    version?: string,\n    isRemote?: boolean\n  ): ModuleWithProviders<TranslateModule> {\n    return TranslateModule.forChild({\n      loader: {\n        provide: TranslateLoader,\n        useFactory: function (httpClient: HttpClient, appConfigService: AppConfigService) {\n          const remoteUrl =\n            isRemote && appConfigService.config.remotes\n              ? appConfigService.config.remotes[namespace as SubSystemType]?.url\n              : null;\n          return new TranslateHttpLoader(\n            httpClient,\n            (remoteUrl || '') + '/i18n/',\n            `/${namespace}.json${version ? `?v=${version}` : ''}`\n          );\n        },\n        deps: [HttpClient, AppConfigService],\n      },\n      extend: extend,\n      isolate: !extend,\n    });\n  }\n}\n","// api\nexport * from './lib/api';\n\n// constants\nexport * from './lib/constants';\n\n// design-systems\n\nexport * from './lib/design-systems/components';\nexport * from './lib/design-systems/general-templates';\nexport * from './lib/design-systems/layouts';\nexport * from './lib/design-systems/modal/modal.module';\nexport * from './lib/design-systems/modal/modal.service';\nexport * from './lib/design-systems/modal/modal-wrapper/modal-wrapper.component';\nexport * from './lib/design-systems/modal/modal-route-wrapper/modal-route-wrapper.component';\nexport * from './lib/design-systems/modal/modal-size-enum';\nexport * from './lib/design-systems/modal/dialog.type';\nexport * from './lib/design-systems/modal/alert.interface';\nexport * from './lib/design-systems/modal/confirm.interface';\nexport * from './lib/design-systems/toast/fararu-toast.module';\nexport * from './lib/design-systems/toast/fararu-toast.service';\nexport * from './lib/design-systems/ui';\nexport * from './lib/design-systems/validators';\nexport * from './lib/design-systems/fararu-design-system-lib.module';\n\n// directives\nexport * from './lib/directives';\n\n// enums\nexport * from './lib/enums';\n\n// guards\nexport * from './lib/guards';\n\n// modules\nexport * from './lib/modules';\n\n// services\nexport * from './lib/services';\n\n// models\nexport * from './lib/models';\n\n// store\nexport * from './lib/store';\n\n// type\nexport * from './lib/types';\n\n// utils\nexport * from './lib/utils';\n\n// pipes\nexport * from './lib/pipes';\n\n// translate\nexport * from './lib/translate/fararu-translate.service';\nexport * from './lib/translate/fararu-translate.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["authSelectors.getSaleOfficeItems","i1","i3","i4","i1.ConfigSandbox","i2.AppConfigService","rxFilter","uniqueItemsFromArray","generateInformationMessage","MIN_HEIGHT","MAX_WIDTH","i2.DropdownComponent","i3.DropdownTriggerForDirective","i4.FararuIconComponent","i5.TooltipDirective","i6.LoadingComponent","i1.FararuIconComponent","i2.FararuIconComponent","i3.NoteIconComponent","i2.ButtonComponent","i3.NoteComponent","i5.DialogIconNamePipe","i4.ShortcutDirective","i5","i6.DialogIconNamePipe","i2.ModalService","i1.TooltipDirective","i2","i3.FararuIconComponent","i2.GeneralODataService","i5.IconComponent","i6.CheckboxComponent","i7.SpinnerComponent","i8.TooltipDirective","i9.LabelComponent","i10","i11.SelectMenuItemIsSelectedPipe","i3.ButtonComponent","i4.SelectComponent","i6.SpinnerComponent","i7.DatePickerComponent","i8.FararuIconComponent","i1.UserAccessService","i4.TextboxComponent","i6.FararuIconComponent","i7.TooltipDirective","i8","i3.TextboxComponent","i4.IconComponent","i5.DropdownComponent","i6.DropdownTriggerForDirective","i7.SubMenuComponent","catchError","i3.IconComponent","i4.DropdownComponent","i5.DropdownTriggerForDirective","i6.SubMenuComponent","i7.FararuIconComponent","i9.AccessNodePipe","i1.FararuToastService","i5.TextboxComponent","i8.DropdownComponent","i9.DropdownTriggerForDirective","i10.SubMenuComponent","i11.FararuIconComponent","i12.HighlightKeywordPipe","i4.LabelComponent","i5.TreeComponent","i2.RouteCachingService","i1.AppConfigService","i3.FararuLayoutService","i4.AppMenuApiService","i5.ConfigSandbox","Helpers","i10.ButtonComponent","i11.IconComponent","i12.CheckboxComponent","i13.SpinnerComponent","i14.DropdownComponent","i15.DropdownTriggerForDirective","i16.SubMenuComponent","i17.FararuIconComponent","i18.TooltipDirective","i19.NoDataComponent","i20.GridCustomFilterComponent","i21.GridActionColumnWidthPipe","i3.GeneralODataService","i5.LoadRemoteAssetService","i6.AppConfigService","i7","i9.TextboxComponent","i10.IconComponent","i11.GridComponent","i12.SpinnerComponent","i13.ToolbarComponent","i4.ButtonComponent","i6.IdentitySelectorComponent","i7.SelectComponent","i8.CheckboxComponent","i9.SpinnerComponent","i10.TreeSelectComponent","i12.TooltipDirective","i13.DropdownTextInputComponent","i14.DataGridBtnComponent","i15","i16.DataGridCellDisplayValuePipe","i17.DataGridCellDisplayObjectPipe","i18.IsBooleanPipe","i19.DataGridCellAggregateTypeTitlePipe","i20.DataGridRowClassNamePipe","i21.DataGridColumnClassNamePipe","i22.DataGridColumnWidthPipe","i4.OutletCloserService","i6","i7.ButtonComponent","i9.ToolbarComponent","i2.FararuToastService","i4.DataGridComponent","i5.ModalWrapperComponent","i1.GeneralODataService","i3.BatchModelODataService","i4.PackageModelODataService","i6.ModalService","i7.DataGridComponent","authSelectors.getLoggedUser","authSelectors.getAuthLoading","authSelectors.getAuthLoaded","authSelectors.getAuthFailed","authSelectors.getAccYearItems","authSelectors.getCenterItems","authSelectors.getSelectedAccYear","authSelectors.getSelectedCenter","authSelectors.getStatusbarInfo","AuthActions.loginRequest","AuthActions.logout","ConfigActions.accessNodeIdsReset","AuthActions.restoreUser","AuthActions.loginDataLoad","AuthActions.changeAccYear","AuthActions.changeCenter","AuthActions.loadStatusbarInfo","i2.AuthSandbox","i3.ConfigSandbox","i4.FararuToastService","i9.ButtonComponent","i10.IdentitySelectorComponent","i2.GeneralSaveApi","i1.FararuPrintService","i4.FararuLayoutService","i5.ModalService","i7.UserAccessService","i8.FararuToastService","i9.ConfigSandbox","i10.GeneralODataService","i11.AppMenuApiService","i12.LoadRemoteAssetService","i13.ReportFormService","i14.ExcelService","i15.GeneralSaveApi","i3.MessageComponent","filter","i1.GeneralListDepsService","i2.GridComponent","i3.SpinnerComponent","i4.AccessNodeComponent","i3.AppConfigService","i1.ModalService","i3.ExcelService","i5.AppConfigService","i6.ConfigSandbox","i7.FararuToastService","i10.TextboxComponent","i11.IdentitySelectorComponent","i12.GridComponent","i13.MessageComponent","i14.ModalWrapperComponent","i2.GridLayoutApiService","i5.ButtonComponent","i6.TextboxComponent","i9.TooltipDirective","i10.MessageComponent","i11","i6.PullDownComponent","i7.ScreenSeparatorComponent","i8.SpinnerComponent","i9.TabsComponent","i10.TabComponent","i11.DropdownComponent","i12.DropdownTriggerForDirective","i13.SubMenuComponent","i14.FararuIconComponent","i15.AccessNodeComponent","i16.ShortcutDirective","i17.GeneralSimpleListComponent","i18.SimpleListShowPlanComponent","i19.AccessNodePipe","i20","i4.GeneralODataService","i8.TextboxComponent","i9.IconComponent","i11.SelectComponent","i13.TabsComponent","i14.TabComponent","i15.TreeSelectComponent","i16.ValidationComponent","i17.FieldsetComponent","i18.FararuIconComponent","i3.OutletCloserService","i4.ModalService","i7.ModalWrapperComponent","i8.GeneralSimpleDataEntryComponent","i4.ScreenSeparatorComponent","i5.SpinnerComponent","i6.GeneralSimpleDataEntryComponent","i7.GeneralListManagementComponent","i8.GeneralListModalDataEntryComponent","i2.ScreenVerticalSeparatorComponent","i3.GeneralListDataEntryComponent","i4.GeneralListManagementComponent","i4.ModalWrapperComponent","i5.GeneralListDataEntryComponent","i3.ScreenSeparatorComponent","i5.GeneralListManagementComponent","i2.FararuLayoutService","i6.ScreenVerticalSeparatorComponent","i7.DropdownComponent","i8.DropdownTriggerForDirective","i9.SubMenuComponent","i10.FararuIconComponent","i11.MessageComponent","i12.ShortcutDirective","i13.AccessNodePipe","i14","switchMap","map","AuthActions.loginSuccess","AuthActions.loginFail","tap","AuthActions.accYearLoad","AuthActions.centerLoad","AuthActions.statusbarInfoIsLoaded","i2.AccYearODataService","i3.CenterODataService","i4.StatusbarInfoODataService","i6.AppUserApiService","i2.UserRightApiService","initialState","reducer","AuthActions.saleOfficeLoad","i3.ModalService","i5.FararuPrintService","i7.ConfigSandbox","i9","i12.ScreenVerticalSeparatorComponent","i19.ToolbarComponent","i20.MessageComponent","i21.ShortcutDirective","i23.AccessNodePipe","i2.GeneralListDepsService","i5.GeneralSimpleListComponent","i3.AccessNodeComponent","i6.GeneralListAssignmentComponent","i6.ButtonComponent","i7.IconComponent","i8.PullDownComponent","i9.ScreenSeparatorComponent","i10.ScreenVerticalSeparatorComponent","i11.SpinnerComponent","i12.FararuIconComponent","EXPORTS","i1.ButtonComponent","i6.UploadDropzoneDirective","i3.FararuToastService","i5.ReportFormService","i6.AuthSandbox","i9.GeneralSimpleDataEntryComponent","i4.ConfigSandbox","i6.GeneralListDataEntryComponent","i2.ConfigSandbox","i4.GeneralListDataEntryComponent","i3.ReportFormService","i5.AppMenuApiService","i6.LoadRemoteAssetService","i8.GeneralCustomFormComponent","i9.GeneralFilterFormComponent","i6.GeneralReportFormComponent","i1.FararuLayoutService","pinnedSessionName","i5.AsideMenuDrawerComponent","i5.AsideColComponent","i6.HighlightKeywordPipe","i4.CheckHasScrollDirective","i8.SubMenuButtonComponent","i7.NoDataComponent","i5.HeaderSubMenuComponent","i6.HeaderSubMenuItemComponent","i1.HeaderSubMenuComponent","i2.HeaderSubMenuItemComponent","takeUntil","i6.SelectComponent","i7.KeyValueComponent","i8.HeaderSubMenuComponent","i9.HeaderSubMenuItemComponent","i7.SearchboxComponent","i8.ProfileMenuComponent","i9.HelpMenuComponent","i10.SettingsMenuComponent","i3.StatusBarValuePipe","i8.SideBarComponent","i9.HeaderComponent","i10.StatusBarComponent","i2.UserAccessService"],"mappings":"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A;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AAEA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AAEA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AAEO,MAAM,oBAAoB,GAAG,YAAY,CAC9C,iBAAiB,CAAC,cAAc,EAChC,KAAK,EAAoC,CAC1C,CAAC;AAEK,MAAM,iBAAiB,GAAG,YAAY,CAC3C,iBAAiB,CAAC,mBAAmB,EACrC,KAAK,EAAmB,CACzB,CAAC;AAEK,MAAM,mCAAmC,GAAG,YAAY,CAC7D,iBAAiB,CAAC,wCAAwC,EAC1D,KAAK,EAAsB,CAC5B,CAAC;AAEK,MAAM,6BAA6B,GAAG,YAAY,CACvD,iBAAiB,CAAC,iCAAiC,EACnD,KAAK,EAAsB,CAC5B,CAAC;AAEK,MAAM,sCAAsC,GAAG,YAAY,CAChE,iBAAiB,CAAC,2CAA2C,EAC7D,KAAK,EAAsB,CAC5B,CAAC;AAEK,MAAM,8BAA8B,GAAG,YAAY,CACxD,iBAAiB,CAAC,kCAAkC,EACpD,KAAK,EAAsB,CAC5B,CAAC;AAEK,MAAM,6BAA6B,GAAG,YAAY,CACvD,iBAAiB,CAAC,iCAAiC,EACnD,KAAK,EAAsB,CAC5B,CAAC;AAEK,MAAM,iCAAiC,GAAG,YAAY,CAC3D,iBAAiB,CAAC,qCAAqC,EACvD,KAAK,EAAsB,CAC5B,CAAC;AAEK,MAAM,kCAAkC,GAAG,YAAY,CAC5D,iBAAiB,CAAC,uCAAuC,EACzD,KAAK,EAAsB,CAC5B,CAAC;AAEK,MAAM,4BAA4B,GAAG,YAAY,CACtD,iBAAiB,CAAC,gCAAgC,EAClD,KAAK,EAAsB,CAC5B,CAAC;AAEK,MAAM,oCAAoC,GAAG,YAAY,CAC9D,iBAAiB,CAAC,yCAAyC,EAC3D,KAAK,EAAsB,CAC5B,CAAC;AAEK,MAAM,qCAAqC,GAAG,YAAY,CAC/D,iBAAiB,CAAC,0CAA0C,EAC5D,KAAK,EAAsB,CAC5B,CAAC;AAGK,MAAM,oBAAoB,GAAG,YAAY,CAC9C,iBAAiB,CAAC,uBAAuB,CAC1C,CAAC;AAEK,MAAM,oBAAoB,GAAG,YAAY,CAC9C,iBAAiB,CAAC,uBAAuB,EACzC,KAAK,EAAuB,CAC7B,CAAC;AAEK,MAAM,iBAAiB,GAAG,YAAY,CAC3C,iBAAiB,CAAC,oBAAoB,EACtC,KAAK,EAAqB,CAC3B,CAAC;AAEK,MAAM,kBAAkB,GAAG,YAAY,CAC5C,iBAAiB,CAAC,qBAAqB,CACxC,CAAC;AAEF,MAAM,eAAe,CAAA;aACZ,IAAG,CAAA,GAAA,GAAG,YAAY,CACvB,eAAe,CAAC,gCAAgC,CAAC,EACjD,KAAK,EAA8B,CACpC,CAAC,EAAA;;AAGG,MAAM,aAAa,GAAG;IAC3B,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IA8DxB,oBAAoB;IACpB,iBAAiB;IACjB,mCAAmC;IACnC,6BAA6B;IAC7B,sCAAsC;IACtC,8BAA8B;IAE9B,6BAA6B;IAC7B,iCAAiC;IACjC,kCAAkC;IAClC,4BAA4B;IAC5B,oCAAoC;IACpC,qCAAqC;IAErC,oBAAoB;IACpB,oBAAoB;IACpB,iBAAiB;IACjB,kBAAkB;AAClB,IAAA,eAAe,EAAE,eAAe;CACjC;;AC/jBM,MAAM,YAAY,GAAG,CAAC,KAAe,KAAK,KAAK,CAAC,IAAI,CAAC;AAErD,MAAM,cAAc,GAAG,cAAc,CAC1C,YAAY,EACZ,CAAC,KAAgB,KAAK,KAAK,CAAC,OAAO,CACpC,CAAC;AAEK,MAAM,aAAa,GAAG,cAAc,CACzC,YAAY,EACZ,CAAC,KAAgB,KAAK,KAAK,CAAC,MAAM,CACnC,CAAC;AAEK,MAAM,aAAa,GAAG,cAAc,CACzC,YAAY,EACZ,CAAC,KAAgB,KAAK,KAAK,CAAC,MAAM,CACnC,CAAC;AAEK,MAAM,aAAa,GAAG,cAAc,CACzC,YAAY,EACZ,CAAC,KAAgB,KAAK,KAAK,CAAC,IAAI,CACjC,CAAC;AAEK,MAAM,eAAe,GAAG,cAAc,CAC3C,YAAY,EACZ,CAAC,KAAgB,KAAK,KAAK,CAAC,YAAY,CACzC,CAAC;AAEK,MAAM,kBAAkB,GAAG,cAAc,CAC9C,YAAY,EACZ,CAAC,KAAgB,KAAK,KAAK,CAAC,eAAe,CAC5C,CAAC;AAEK,MAAM,cAAc,GAAG,cAAc,CAC1C,YAAY,EACZ,CAAC,KAAgB,KAAK,KAAK,CAAC,WAAW,CACxC,CAAC;AAEK,MAAM,kBAAkB,GAAG,cAAc,CAC9C,YAAY,EACZ,CAAC,KAAgB,KAAK,KAAK,CAAC,eAAe,CAC5C,CAAC;AAEK,MAAM,iBAAiB,GAAG,cAAc,CAC7C,YAAY,EACZ,CAAC,KAAgB,KAAK,KAAK,CAAC,cAAc,CAC3C,CAAC;AAEK,MAAM,kBAAkB,GAAG,cAAc,CAC9C,YAAY,EACZ,CAAC,KAAgB,KAAK,KAAK,CAAC,oBAAoB,CACjD,CAAC;AAEK,MAAM,qBAAqB,GAAG,cAAc,CACjD,YAAY,EACZ,CAAC,KAAgB,KAAK,KAAK,CAAC,uBAAuB,CACpD,CAAC;AAEK,MAAM,iBAAiB,GAAG,cAAc,CAC7C,YAAY,EACZ,CAAC,KAAgB,KAAK,KAAK,CAAC,mBAAmB,CAChD,CAAC;AAEK,MAAM,gBAAgB,GAAG,cAAc,CAC5C,YAAY,EACZ,CAAC,KAAgB,KAAK,KAAK,CAAC,aAAa,CAC1C,CAAC;AAEK,MAAM,wBAAwB,GAAG,cAAc,CACpD,YAAY,EACZ,CAAC,KAAgB,KAAK,KAAK,CAAC,qBAAqB,CAClD;;ACtEM,MAAM,cAAc,GAAG,CAAC,KAAe,KAAK,KAAK,CAAC,MAAM,CAAC;AAEzD,MAAM,yBAAyB,GAAG,cAAc,CACrD,cAAc,EACd,CAAC,KAAkB,KAAK,KAAK,CAAC,sBAAsB,CACrD,CAAC;AAEF;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;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;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA,EAAE,CAAC,aAAa,CAAC,oBAAoB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAI;IACvD,OAAO;AACL,QAAA,GAAG,KAAK;QACR,mBAAmB,EAAE,MAAM,CAAC,OAAO;KACpC,CAAC;AACJ,CAAC,CAAC,EAEF,EAAE,CAAC,aAAa,CAAC,iBAAiB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAI;IACpD,OAAO;AACL,QAAA,GAAG,KAAK;QACR,uBAAuB,EAAE,MAAM,CAAC,GAAG;KACpC,CAAC;AACJ,CAAC,CAAC,EAEF,EAAE,CAAC,aAAa,CAAC,mCAAmC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAI;IACtE,OAAO;AACL,QAAA,GAAG,KAAK;AACR,QAAA,aAAa,EAAE;YACb,GAAG,KAAK,CAAC,aAAa;AACt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"}