@coolon/angular-ui-powerups 12.4.0 → 12.4.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (142) hide show
  1. package/bundles/coolon-angular-ui-powerups-cypress.umd.js +14 -34
  2. package/bundles/coolon-angular-ui-powerups-cypress.umd.js.map +1 -1
  3. package/bundles/coolon-angular-ui-powerups.umd.js +111 -110
  4. package/bundles/coolon-angular-ui-powerups.umd.js.map +1 -1
  5. package/coolon-angular-ui-powerups.metadata.json +1 -1
  6. package/cypress/coolon-angular-ui-powerups-cypress.metadata.json +1 -1
  7. package/esm2015/cypress/component-builder.js +3 -3
  8. package/esm2015/cypress/component-builder.js.map +1 -1
  9. package/esm2015/cypress/component-builder.metadata.json +1 -1
  10. package/esm2015/cypress/components/aup-abstract-table.js +3 -3
  11. package/esm2015/cypress/components/aup-abstract-table.js.map +1 -1
  12. package/esm2015/cypress/components/aup-abstract-table.metadata.json +1 -1
  13. package/esm2015/cypress/components/aup-command.js +2 -2
  14. package/esm2015/cypress/components/aup-command.js.map +1 -1
  15. package/esm2015/cypress/components/aup-command.metadata.json +1 -1
  16. package/esm2015/cypress/components/aup-tree-table.js +1 -1
  17. package/esm2015/cypress/components/aup-tree-table.js.map +1 -1
  18. package/esm2015/cypress/components/aup-tree-table.metadata.json +1 -1
  19. package/esm2015/cypress/page-element.js +3 -3
  20. package/esm2015/cypress/page-element.js.map +1 -1
  21. package/esm2015/cypress/page-element.metadata.json +1 -1
  22. package/esm2015/cypress/page.js +3 -3
  23. package/esm2015/cypress/page.js.map +1 -1
  24. package/esm2015/cypress/page.metadata.json +1 -1
  25. package/esm2015/lib/components/busy-overlay/busy-overlay.component.js +1 -1
  26. package/esm2015/lib/components/busy-overlay/busy-overlay.component.metadata.json +1 -1
  27. package/esm2015/lib/components/cards/card-container/card-container.component.js +4 -4
  28. package/esm2015/lib/components/cards/card-container/card-container.component.js.map +1 -1
  29. package/esm2015/lib/components/cards/card-container/card-container.component.metadata.json +1 -1
  30. package/esm2015/lib/components/commands/command/command.component.js +2 -2
  31. package/esm2015/lib/components/commands/command/command.component.js.map +1 -1
  32. package/esm2015/lib/components/commands/command/command.component.metadata.json +1 -1
  33. package/esm2015/lib/components/commands/command-face.js +8 -8
  34. package/esm2015/lib/components/commands/command-face.js.map +1 -1
  35. package/esm2015/lib/components/forms/autocomplete-input/autocomplete-input.component.js +3 -3
  36. package/esm2015/lib/components/forms/autocomplete-input/autocomplete-input.component.js.map +1 -1
  37. package/esm2015/lib/components/forms/autocomplete-input/autocomplete-input.component.metadata.json +1 -1
  38. package/esm2015/lib/components/tables/abstract-table-model.js +3 -3
  39. package/esm2015/lib/components/tables/abstract-table-model.js.map +1 -1
  40. package/esm2015/lib/components/tables/abstract-table-model.metadata.json +1 -1
  41. package/esm2015/lib/components/tables/column-list-model.js +2 -2
  42. package/esm2015/lib/components/tables/column-list-model.js.map +1 -1
  43. package/esm2015/lib/components/tables/column-list-model.metadata.json +1 -1
  44. package/esm2015/lib/components/tables/table/column-model.js +12 -12
  45. package/esm2015/lib/components/tables/table/column-model.js.map +1 -1
  46. package/esm2015/lib/components/tables/table/column-model.metadata.json +1 -1
  47. package/esm2015/lib/components/tables/table/default-cell-renderer/default-cell-renderer.component.js.map +1 -1
  48. package/esm2015/lib/components/tables/tree-table/decorated-tree-node.js +3 -3
  49. package/esm2015/lib/components/tables/tree-table/decorated-tree-node.js.map +1 -1
  50. package/esm2015/lib/components/tables/tree-table/tree-label-column-model.js +2 -2
  51. package/esm2015/lib/components/tables/tree-table/tree-label-column-model.js.map +1 -1
  52. package/esm2015/lib/components/tables/tree-table/tree-label-column-model.metadata.json +1 -1
  53. package/esm2015/lib/components/tables/tree-table/tree-table-model.js +2 -2
  54. package/esm2015/lib/components/tables/tree-table/tree-table-model.js.map +1 -1
  55. package/esm2015/lib/components/tables/tree-table/tree-table-model.metadata.json +1 -1
  56. package/esm2015/lib/components/text/markdown/markdown.component.js +3 -3
  57. package/esm2015/lib/components/text/markdown/markdown.component.js.map +1 -1
  58. package/esm2015/lib/components/text/markdown/markdown.component.metadata.json +1 -1
  59. package/esm2015/lib/directives/highlight.pipe.js +2 -2
  60. package/esm2015/lib/directives/highlight.pipe.js.map +1 -1
  61. package/esm2015/lib/directives/highlight.pipe.metadata.json +1 -1
  62. package/esm2015/lib/interaction/abstract-interaction-context.js.map +1 -1
  63. package/esm2015/lib/interaction/alert.js +3 -3
  64. package/esm2015/lib/interaction/alert.js.map +1 -1
  65. package/esm2015/lib/interaction/components/abstract-dialog.component.js +2 -2
  66. package/esm2015/lib/interaction/components/abstract-dialog.component.js.map +1 -1
  67. package/esm2015/lib/interaction/components/activity-body/activity-body.component.js.map +1 -1
  68. package/esm2015/lib/interaction/components/activity-container/activity-container.component.js +3 -3
  69. package/esm2015/lib/interaction/components/activity-container/activity-container.component.js.map +1 -1
  70. package/esm2015/lib/interaction/components/activity-container/activity-container.component.metadata.json +1 -1
  71. package/esm2015/lib/interaction/components/activity-title/activity-title.component.js +2 -2
  72. package/esm2015/lib/interaction/components/activity-title/activity-title.component.js.map +1 -1
  73. package/esm2015/lib/interaction/components/activity-title/activity-title.component.metadata.json +1 -1
  74. package/esm2015/lib/interaction/components/editors/inline-string-editor/inline-string-editor.component.js +2 -2
  75. package/esm2015/lib/interaction/components/editors/inline-string-editor/inline-string-editor.component.js.map +1 -1
  76. package/esm2015/lib/interaction/components/editors/inline-string-editor/inline-string-editor.component.metadata.json +1 -1
  77. package/esm2015/lib/interaction/components/inplace-interaction-context/in-place-interaction-context.component.js +1 -1
  78. package/esm2015/lib/interaction/components/inplace-interaction-context/in-place-interaction-context.component.js.map +1 -1
  79. package/esm2015/lib/interaction/components/inplace-interaction-context/in-place-interaction-context.component.metadata.json +1 -1
  80. package/esm2015/lib/interaction/components/input-activities/input-activity.js +2 -2
  81. package/esm2015/lib/interaction/components/input-activities/input-activity.js.map +1 -1
  82. package/esm2015/lib/interaction/components/input-activities/input-activity.metadata.json +1 -1
  83. package/esm2015/lib/interaction/directives/interaction-context-trigger-for.directive.js +2 -2
  84. package/esm2015/lib/interaction/directives/interaction-context-trigger-for.directive.js.map +1 -1
  85. package/esm2015/lib/interaction/directives/interaction-context-trigger-for.directive.metadata.json +1 -1
  86. package/esm2015/lib/place/components/abstract-place-navigation.component.js +1 -1
  87. package/esm2015/lib/place/components/abstract-place-navigation.component.js.map +1 -1
  88. package/esm2015/lib/place/components/abstract-place-navigation.component.metadata.json +1 -1
  89. package/esm2015/lib/place/components/place-outlet/place-outlet.component.js +8 -5
  90. package/esm2015/lib/place/components/place-outlet/place-outlet.component.js.map +1 -1
  91. package/esm2015/lib/place/components/place-outlet/place-outlet.component.metadata.json +1 -1
  92. package/esm2015/lib/place/guards/consolidated-param-map.js +3 -3
  93. package/esm2015/lib/place/guards/consolidated-param-map.js.map +1 -1
  94. package/esm2015/lib/place/guards/consolidated-param-map.metadata.json +1 -1
  95. package/esm2015/lib/place/navigation/place-component-deactivation-handler.js +2 -2
  96. package/esm2015/lib/place/navigation/place-component-deactivation-handler.js.map +1 -1
  97. package/esm2015/lib/place/navigation/place-component-deactivation-handler.metadata.json +1 -1
  98. package/esm2015/lib/place/navigation/session/interactions/synchronise-interaction-context-ids-with-route.js +2 -2
  99. package/esm2015/lib/place/navigation/session/interactions/synchronise-interaction-context-ids-with-route.js.map +1 -1
  100. package/esm2015/lib/place/navigation/session/interactions/synchronise-interaction-context-ids-with-route.metadata.json +1 -1
  101. package/esm2015/lib/place/place-component.js +3 -3
  102. package/esm2015/lib/place/place-component.js.map +1 -1
  103. package/esm2015/lib/place/place-component.metadata.json +1 -1
  104. package/esm2015/lib/place/place-definition.js +5 -5
  105. package/esm2015/lib/place/place-definition.js.map +1 -1
  106. package/esm2015/lib/place/place-definition.metadata.json +1 -1
  107. package/esm2015/lib/place/place-history.js +8 -8
  108. package/esm2015/lib/place/place-history.js.map +1 -1
  109. package/esm2015/lib/place/place-history.metadata.json +1 -1
  110. package/esm2015/lib/place/place.decorator.js +2 -2
  111. package/esm2015/lib/place/place.decorator.js.map +1 -1
  112. package/esm2015/lib/place/place.decorator.metadata.json +1 -1
  113. package/esm2015/lib/place/route/formatter.js +3 -3
  114. package/esm2015/lib/place/route/formatter.js.map +1 -1
  115. package/esm2015/lib/place/route/parameter-definition.js +8 -8
  116. package/esm2015/lib/place/route/parameter-definition.js.map +1 -1
  117. package/esm2015/lib/place/route/parameter-definition.metadata.json +1 -1
  118. package/esm2015/lib/place/url-snapshot.js +3 -3
  119. package/esm2015/lib/place/url-snapshot.js.map +1 -1
  120. package/esm2015/lib/place/url-snapshot.metadata.json +1 -1
  121. package/esm2015/lib/place/visit.js +5 -5
  122. package/esm2015/lib/place/visit.js.map +1 -1
  123. package/esm2015/lib/place/visit.metadata.json +1 -1
  124. package/fesm2015/coolon-angular-ui-powerups-cypress.js +10 -10
  125. package/fesm2015/coolon-angular-ui-powerups-cypress.js.map +1 -1
  126. package/fesm2015/coolon-angular-ui-powerups.js +84 -82
  127. package/fesm2015/coolon-angular-ui-powerups.js.map +1 -1
  128. package/package.json +10 -9
  129. package/schematics/place-routes/place-class-scanner.js +5 -5
  130. package/schematics/place-routes/place-class-scanner.js.map +1 -1
  131. package/schematics/place-routes/place-def.js +5 -5
  132. package/schematics/place-routes/place-def.js.map +1 -1
  133. package/schematics/utils/import-def.js +4 -4
  134. package/schematics/utils/import-def.js.map +1 -1
  135. package/schematics/utils/method-scanner.js +6 -6
  136. package/schematics/utils/method-scanner.js.map +1 -1
  137. package/schematics/utils/path-helper.js +4 -4
  138. package/schematics/utils/path-helper.js.map +1 -1
  139. package/schematics/utils/source-file-scanner.js +5 -5
  140. package/schematics/utils/source-file-scanner.js.map +1 -1
  141. package/schematics/utils/source-file-utilities.js +2 -2
  142. package/schematics/utils/source-file-utilities.js.map +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"column-model.js","sourceRoot":"","sources":["../../../../../../../../libs/angular-ui-powerups/src/lib/components/tables/table/column-model.ts"],"names":[],"mappings":"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","sourcesContent":["import { ComponentType } from '@angular/cdk/overlay';\nimport { TemplateRef, ViewContainerRef } from '@angular/core';\nimport {\n Command, CommandFactory,\n DelegatingSelectionModel,\n DelegatingValueModel,\n DirtyTrackingForm,\n GarbageCollector,\n MultipleSelectionModel,\n SelectionModel,\n Types,\n UnaryCommand,\n Validator,\n ValueModel\n} from '@coolon/pectin';\nimport { assert, Stringy } from '@coolon/typescript-utilities';\nimport { Memoize } from '@typescript-plus/fast-memoize-decorator/dist/src';\nimport _ from 'lodash';\nimport { CellEditorComponent, CellListEditorComponent } from './cell-editors';\nimport {\n CellEditorPortalRef,\n CellHeaderPortalRef,\n CellRendererPortalRef,\n ComponentCellRendererPortalRef,\n TemplateCellRendererPortalRef\n} from './cell-portal-ref';\nimport { CellRenderer } from './cell-renderer';\nimport { ColumnTextProperties } from './column-text-properties';\nimport { DefaultCellRendererComponent } from './default-cell-renderer/default-cell-renderer.component';\nimport { DefaultHeaderCellRendererComponent } from './default-header-cell-renderer/default-header-cell-renderer.component';\nimport { EditRowControls } from './edit-row-controls/edit-row-controls.component';\nimport { EditSession } from '../edit-session';\nimport { MutableCellRenderer } from './mutable-cell-renderer';\nimport { SelectCellRendererComponent } from './select-cell-renderer/select-cell-renderer.component';\nimport { SelectHeaderCellRendererComponent } from './select-header-cell-renderer/select-header-cell-renderer.component';\nimport { TableCellRendererComponent } from './table-cell-renderer/table-cell-renderer.component';\nimport { TableHeaderCellRendererComponent } from './table-header-cell-renderer/table-header-cell-renderer.component';\nimport { TextSearchPredicate } from './text-search-predicate';\n\n\nconst noop = () => {\n};\n\nexport interface RowData<Row> {\n row: Row;\n editSession?: EditSession<Row>;\n editRowCommand: Command<void>;\n}\n\nconst CELL_RENDERER_COMPONENT_ROW_CACHE = Symbol('aup-cell-renderer:row-data-cache');\n\nexport type OnComponentInit<C> = (component: C) => void;\n\nexport interface CellRendererOptions<Row, E> {\n onComponentInit?: (component: E) => void;\n onRowUpdate?: (component: E, row: Row) => void;\n}\n\n\nexport interface MutableCellRendererOptions<Row, E, P extends keyof Row> extends CellRendererOptions<Row, E> {\n onValueEdit: (row: Row, is: Row[P], was: Row[P]) => void;\n}\n\nconst DEFAULT_TEXT_SEARCH_PREDICATE: TextSearchPredicate<unknown> = (row: unknown, text: RegExp) => false;\n\nexport class ColumnModel<Row> extends GarbageCollector {\n\n private _columnTextProperties: ColumnTextProperties;\n\n private _columnHeaderPortalRef: CellHeaderPortalRef<Row, any>;\n private _cellRendererPortalRef: CellRendererPortalRef<Row, any>;\n private _cellEditorPortalRef: CellEditorPortalRef<Row, any>;\n\n private _enableRowSelection = true;\n private _flex = false;\n\n private _defaultVisibility = this.registerDisposable(new DelegatingValueModel<boolean>().withDefault(true));\n private _visible = this.registerDisposable(new DelegatingValueModel<boolean>().withDefault(this._defaultVisibility));\n readonly dasherisedColumnId: string;\n protected _columnModelTextSearchPredicate: TextSearchPredicate<Row> = undefined;\n protected _cellRendererTextSearchPredicate: TextSearchPredicate<Row> = undefined;\n\n constructor(readonly columnId: string, private textPropertiesProvider: ColumnModel.TextPropertiesProvider) {\n super();\n this.installHeaderRenderer();\n this.dasherisedColumnId = Stringy.from(columnId).dasherize().toString();\n }\n\n protected installHeaderRenderer() {\n this.cellHeaderRenderer(DefaultHeaderCellRendererComponent, (component, column) => {\n component.headerText = column.getHeaderText();\n });\n }\n\n @Memoize()\n getHeaderText(): string {\n return this.getColumnTextProperties()?.headerText() || this.getDefaultHeaderText();\n }\n\n isVisible() {\n return this.visible.value;\n }\n\n get visible() {\n return this._visible.readonly;\n }\n\n visibleWhile(visible: ValueModel<boolean>): this {\n this._visible.setDelegate(visible);\n return this;\n }\n\n protected setDefaultVisibility(visible: ValueModel<boolean>) {\n this._defaultVisibility.setDelegate(visible);\n }\n\n protected getDefaultHeaderText() {\n return this.columnId;\n }\n\n get isTextMatch(): TextSearchPredicate<Row> {\n return this._columnModelTextSearchPredicate || this._cellRendererTextSearchPredicate || DEFAULT_TEXT_SEARCH_PREDICATE;\n }\n\n /**\n * Sets the predicate to use when checking if the specified row is a text match for this column.\n * @param predicate\n */\n useTextSearchPredicate(predicate: TextSearchPredicate<Row>):this {\n this._columnModelTextSearchPredicate = predicate;\n return this;\n }\n\n @Memoize()\n getColumnTextProperties(): ColumnTextProperties {\n return this._columnTextProperties || this.textPropertiesProvider();\n }\n\n /**\n * @deprecated use #columnTextProperties instead\n * @param columnTextProperties\n */\n textProperties(columnTextProperties: ColumnTextProperties): this {\n return this.columnTextProperties(columnTextProperties);\n }\n\n columnTextProperties(columnTextProperties: ColumnTextProperties): this {\n this._columnTextProperties = columnTextProperties;\n return this;\n }\n\n protected configureHeaderRenderer<C>(config: CellHeaderPortalRef<Row, any>): void {\n this._columnHeaderPortalRef = config;\n }\n\n protected configureCellRenderer<C>(config: CellRendererPortalRef<Row, any>): void {\n this._cellRendererPortalRef = config;\n }\n\n protected configureCellEditor<E>(cellEditor: CellEditorPortalRef<Row, E>): void {\n this._cellEditorPortalRef = cellEditor;\n }\n\n cellHeaderRenderer<C>(componentType: ComponentType<C>, initialiser: (component: C, column: ColumnModel<Row>) => void): this {\n this.configureHeaderRenderer(new CellHeaderPortalRef<Row, C>(componentType, initialiser));\n return this;\n }\n\n flex(flex = true) {\n this._flex = flex;\n }\n\n isFlex() {\n return this._flex;\n }\n\n hasEditorPortal() {\n return !!this._cellEditorPortalRef;\n }\n\n attachHeaderCell(host: any) {\n this._columnHeaderPortalRef.initialiseHost(host, this);\n }\n\n attachCell(host: any) {\n this._cellRendererPortalRef.initialiseHost(host, this);\n if (this.hasEditorPortal()) {\n this._cellEditorPortalRef.initialiseHost(host, this);\n }\n }\n\n onHeaderAttached(host: TableHeaderCellRendererComponent, component: any) {\n this._columnHeaderPortalRef.onPortalAttached(host, component);\n }\n\n onRendererAttached(host: TableCellRendererComponent<Row>, component: any) {\n this._cellRendererPortalRef.onPortalAttached(host, component);\n if (_.isFunction(component?.matches)) {\n this._cellRendererTextSearchPredicate = (row, text) => component.matches(row, text);\n } else {\n this._cellRendererTextSearchPredicate = undefined;\n }\n }\n\n // @Trace()\n onEditorAttached(host: TableCellRendererComponent<Row>, component: any) {\n this._cellEditorPortalRef.onPortalAttached(host, component);\n }\n\n updatePortalContent(host: TableCellRendererComponent<Row>) {\n this._cellRendererPortalRef.pushState(host);\n }\n\n protected _selectRowOnClick(selectRowOnClick: boolean): this {\n this._enableRowSelection = selectRowOnClick;\n return this;\n }\n\n isRowSelectionEnabled(): boolean {\n return this._enableRowSelection;\n }\n}\n\nexport namespace ColumnModel {\n export type TextPropertiesProvider = () => ColumnTextProperties\n}\n\n\nexport class PropertyColumnModel<Row, P extends Types.ValuePropertiesOf<Row>> extends ColumnModel<Row> {\n\n private _format: (value: Row[P]) => any = (value) => value?.toString();\n\n constructor(id: string, readonly property: P, defaults: ColumnModel.TextPropertiesProvider) {\n super(id, defaults);\n this.cellRenderer(DefaultCellRendererComponent);\n this.useTextSearchPredicate((row: Row, regex: RegExp) => {\n return regex.test(this._format(row[this.property]));\n });\n }\n\n cellRenderer<E extends CellRenderer<Row[P]>>(componentType: ComponentType<E>, options?: CellRendererOptions<Row, E>): this\n cellRenderer<E extends CellRenderer<Row[P]>>(componentType: ComponentType<E>, onComponentInit?: OnComponentInit<E>): this\n cellRenderer<E extends CellRenderer<Row[P]>>(componentType: ComponentType<E>, onComponentInitOrOptions?: CellRendererOptions<Row, E> | OnComponentInit<E>): this {\n this.configureCellRenderer(new ComponentCellRendererPortalRef(componentType, (component, rowData, firstTime) => {\n if (firstTime) {\n if (_.isFunction(onComponentInitOrOptions)) {\n onComponentInitOrOptions(component);\n } else {\n if (_.isFunction(onComponentInitOrOptions?.onComponentInit)) {\n onComponentInitOrOptions.onComponentInit(component);\n }\n }\n }\n component.value = this._format(rowData.row[this.property]);\n }));\n return this;\n }\n\n liveEditCellRenderer<E extends MutableCellRenderer<Row[P]>>(componentType: ComponentType<E>, options: MutableCellRendererOptions<Row, E, P>): this {\n return this.mutableCellRenderer(componentType, options);\n }\n\n /**\n * Deprecated. Use #liveEditCellRenderer instead.\n * @param componentType\n * @param options\n */\n mutableCellRenderer<E extends MutableCellRenderer<Row[P]>>(componentType: ComponentType<E>, options: MutableCellRendererOptions<Row, E, P>): this {\n\n this.configureCellRenderer(new ComponentCellRendererPortalRef(componentType, (component, rowData, firstTime) => {\n\n // keep a local copy most recent row value so it's available to teh\n // edit callback without having to add/remove subscribers all the time.\n component[CELL_RENDERER_COMPONENT_ROW_CACHE] = rowData.row;\n let disableEditCallback = false;\n\n if (firstTime) {\n if (_.isFunction(options?.onComponentInit)) {\n options.onComponentInit(component);\n }\n // install our edit callback\n component.onValueEdited((is, was) => {\n if (!disableEditCallback) {\n options.onValueEdit(component[CELL_RENDERER_COMPONENT_ROW_CACHE], is, was);\n }\n });\n\n }\n\n // now push the value the component and disable the callback just incase the component misbehaves\n // and fires a value change during the operation.\n disableEditCallback = true;\n component.value = rowData.row[this.property];\n disableEditCallback = false;\n\n if (!_.isFunction(options) && _.isFunction(options?.onRowUpdate)) {\n options.onRowUpdate(component, rowData.row);\n }\n\n }));\n return this;\n }\n\n cellEditor<E extends CellEditorComponent<Row[P]>>(editor: ComponentType<E>, validators?: Validator<Row[P]>[], initialiseComponent?: (component: E) => void): this\n cellEditor<E extends CellEditorComponent<Row[P]>>(editor: ComponentType<E>, initialiseComponent?: (component: E) => void): this\n cellEditor<E extends CellEditorComponent<Row[P]>>(editor: ComponentType<E>, validatorsOrInitialiser?: Validator<Row[P]>[] | ((component: E) => void), onComponentInit?: (component: E) => void): this {\n const validators = Array.isArray(validatorsOrInitialiser) ? validatorsOrInitialiser : undefined;\n const initialiser = _.isFunction(validatorsOrInitialiser) ? validatorsOrInitialiser : onComponentInit;\n this.configureCellEditor(new CellEditorPortalRef(editor, (component: E, editSession: EditSession<Row>) => {\n const formValueModel = editSession.form.pluck(this.property);\n if (validators) {\n formValueModel.validateUsing(validators);\n }\n component.valueModel = formValueModel;\n if (initialiser) {\n initialiser(component);\n }\n }));\n return this;\n }\n\n format(formatter: (value: Row[P]) => any): this {\n assert.isFunction(formatter);\n this._format = formatter;\n return this;\n }\n\n public selectRowOnClick(selectOnRowClick: boolean): this {\n return this._selectRowOnClick(selectOnRowClick);\n }\n\n}\n\nexport class ListPropertyColumnModel<Row, P extends Types.ArrayPropertiesOf<Row>> extends ColumnModel<Row> {\n\n private _format: (value: Types.ArrayElementType<Row, P>[]) => any = (value) => value.map(v => v?.toString()).join(', ');\n\n constructor(id: string, readonly property: P, defaults: ColumnModel.TextPropertiesProvider) {\n super(id, defaults);\n this.cellRenderer(DefaultCellRendererComponent);\n this.useTextSearchPredicate((row: Row, regex: RegExp) => {\n return regex.test(this._format(row[this.property]));\n });\n }\n\n cellRenderer(componentType: ComponentType<{ value: Types.ArrayElementType<Row, P>[] }>): this {\n this.configureCellRenderer(new ComponentCellRendererPortalRef(componentType, (component, rowData) => {\n component.value = this._format(rowData.row[this.property]);\n }));\n return this;\n }\n\n cellEditor<C extends CellListEditorComponent<Types.ArrayElementType<Row, P>>>(editor: ComponentType<C>, validators?: Validator<Types.ArrayElementType<Row, P>[]>[], initialiseComponent?: (component: C) => void): this\n cellEditor<C extends CellListEditorComponent<Types.ArrayElementType<Row, P>>>(editor: ComponentType<C>, initialiseComponent?: (component: C) => void): this\n cellEditor<C extends CellListEditorComponent<Types.ArrayElementType<Row, P>>>(editor: ComponentType<C>, validatorsOrInitialiser?: Validator<Types.ArrayElementType<Row, P>[]>[] | ((component: C) => void), initialiseComponent?: (component: C) => void): this {\n const validators = Array.isArray(validatorsOrInitialiser) ? validatorsOrInitialiser : undefined;\n const initialiser = _.isFunction(validatorsOrInitialiser) ? validatorsOrInitialiser : initialiseComponent;\n\n this.configureCellEditor(new CellEditorPortalRef(editor, (component: C, editSession: EditSession<Row>) => {\n const formListModel = editSession.form.pluckList(this.property);\n if (validators) {\n formListModel.validateUsing(validators);\n }\n component.listModel = formListModel;\n if (initialiser) {\n initialiser(component);\n }\n }));\n return this;\n }\n\n format(formatter: (value: Types.ArrayElementType<Row, P>[]) => any): this {\n assert.isFunction(formatter);\n this._format = formatter;\n return this;\n }\n\n public selectRowOnClick(selectRowOnClick: boolean): this {\n return this._selectRowOnClick(selectRowOnClick);\n }\n\n}\n\nexport class CustomValueColumnModel<Row, V> extends ColumnModel<Row> {\n\n constructor(columnId: string, defaults: ColumnModel.TextPropertiesProvider, private getValue: (row: Row) => V) {\n super(columnId, defaults);\n this.cellRenderer(DefaultCellRendererComponent);\n }\n\n cellRenderer<C extends { value: Partial<V> }>(componentType: ComponentType<C>, onComponentInitOrOptions?: CellRendererOptions<Row, C> | OnComponentInit<C>): this {\n this.configureCellRenderer(new ComponentCellRendererPortalRef(componentType, (component, rowData, firstTime) => {\n if (firstTime) {\n if (_.isFunction(onComponentInitOrOptions)) {\n onComponentInitOrOptions(component);\n } else {\n if (_.isFunction(onComponentInitOrOptions?.onComponentInit)) {\n onComponentInitOrOptions.onComponentInit(component);\n }\n }\n }\n component.value = this.getValue(rowData.row);\n\n if (!_.isFunction(onComponentInitOrOptions) && _.isFunction(onComponentInitOrOptions?.onRowUpdate)) {\n onComponentInitOrOptions.onRowUpdate(component, rowData.row);\n }\n }));\n return this;\n }\n\n public selectRowOnClick(selectOnRowClick: boolean): this {\n return this._selectRowOnClick(selectOnRowClick);\n }\n\n}\n\nexport class EditorControlColumnModel<Row> extends ColumnModel<Row> {\n\n constructor(columnId: string, saveCommandFactory: Command.Factory<DirtyTrackingForm<Row>, boolean|Promise<boolean>>, defaults: ColumnModel.TextPropertiesProvider) {\n super(columnId, defaults);\n this.cellRenderer(EditRowControls);\n }\n\n cellRenderer(componentType: ComponentType<{ row: Row, editSession: EditSession<Row>, editRowCommand: Command<void> }>): this {\n this.configureCellRenderer(new ComponentCellRendererPortalRef(componentType, (component, rowData: RowData<Row>) => {\n component.row = rowData.row;\n component.editSession = rowData.editSession;\n component.editRowCommand = rowData.editRowCommand;\n }));\n return this;\n }\n\n protected getDefaultHeaderText(): string {\n return '';\n }\n}\n\nexport class CustomTemplateColumnModel<Row> extends ColumnModel<Row> {\n private readonly config = new TemplateCellRendererPortalRef<Row>();\n\n constructor(columnId: string, defaults: ColumnModel.TextPropertiesProvider) {\n super(columnId, defaults);\n this.configureCellRenderer(this.config);\n }\n\n setTemplate(templateRef: TemplateRef<any>, viewContainer: ViewContainerRef, fillCell: boolean, padChild: boolean) {\n this.config.registerPortal(templateRef, viewContainer, fillCell, padChild);\n }\n\n public selectRowOnClick(selectOnRowClick: boolean): this {\n return this._selectRowOnClick(selectOnRowClick);\n }\n\n}\n\nexport class SelectionColumnModel<Row> extends ColumnModel<Row> {\n\n private _enableHeaderControls = true;\n readonly selectionModel = DelegatingSelectionModel.createDelegate<Row, unknown>();\n\n constructor(columnId: string, defaults: ColumnModel.TextPropertiesProvider, selectionModel: SelectionModel<Row>) {\n super(columnId, defaults);\n this._selectRowOnClick(false);\n this.cellHeaderRenderer(SelectHeaderCellRendererComponent, (component) => {\n component.selectionModel = this.selectionModel;\n component.enableHeaderControls = this._enableHeaderControls;\n });\n this.configureCellRenderer(new ComponentCellRendererPortalRef(SelectCellRendererComponent, (component, rowData: RowData<Row>) => {\n component.row = rowData.row;\n component.selectionModel = this.selectionModel;\n }));\n this.setSelectionModel(selectionModel);\n }\n\n setSelectionModel(selectionModel: SelectionModel<Row>) {\n this.selectionModel.setDelegate(selectionModel);\n this.setDefaultVisibility(selectionModel instanceof MultipleSelectionModel ? ValueModel.TRUE : ValueModel.FALSE);\n }\n\n protected getDefaultHeaderText(): string {\n return '';\n }\n\n enableHeaderControls(enable: boolean): this {\n this._enableHeaderControls = enable;\n return this;\n }\n\n selectRow(row: Row) {\n this.selectionModel.selectCommand.execute(row);\n }\n\n isSelected(row: Row) {\n return this.selectionModel.isSelected(row);\n }\n}\n\n\n"]}
1
+ {"version":3,"file":"column-model.js","sourceRoot":"","sources":["../../../../../../../../libs/angular-ui-powerups/src/lib/components/tables/table/column-model.ts"],"names":[],"mappings":"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","sourcesContent":["import { ComponentType } from '@angular/cdk/overlay';\nimport { TemplateRef, ViewContainerRef } from '@angular/core';\nimport {\n Command, CommandFactory,\n DelegatingSelectionModel,\n DelegatingValueModel,\n DirtyTrackingForm,\n GarbageCollector,\n MultipleSelectionModel,\n SelectionModel,\n Types,\n UnaryCommand,\n Validator,\n ValueModel\n} from '@coolon/pectin';\nimport { assert, Stringy } from '@coolon/typescript-utilities';\nimport { Memoize } from '@typescript-plus/fast-memoize-decorator';\n\nimport { isFunction } from 'lodash-es';\nimport { CellEditorComponent, CellListEditorComponent } from './cell-editors';\nimport {\n CellEditorPortalRef,\n CellHeaderPortalRef,\n CellRendererPortalRef,\n ComponentCellRendererPortalRef,\n TemplateCellRendererPortalRef\n} from './cell-portal-ref';\nimport { CellRenderer } from './cell-renderer';\nimport { ColumnTextProperties } from './column-text-properties';\nimport { DefaultCellRendererComponent } from './default-cell-renderer/default-cell-renderer.component';\nimport { DefaultHeaderCellRendererComponent } from './default-header-cell-renderer/default-header-cell-renderer.component';\nimport { EditRowControls } from './edit-row-controls/edit-row-controls.component';\nimport { EditSession } from '../edit-session';\nimport { MutableCellRenderer } from './mutable-cell-renderer';\nimport { SelectCellRendererComponent } from './select-cell-renderer/select-cell-renderer.component';\nimport { SelectHeaderCellRendererComponent } from './select-header-cell-renderer/select-header-cell-renderer.component';\nimport { TableCellRendererComponent } from './table-cell-renderer/table-cell-renderer.component';\nimport { TableHeaderCellRendererComponent } from './table-header-cell-renderer/table-header-cell-renderer.component';\nimport { TextSearchPredicate } from './text-search-predicate';\n\n\nconst noop = () => {\n};\n\nexport interface RowData<Row> {\n row: Row;\n editSession?: EditSession<Row>;\n editRowCommand: Command<void>;\n}\n\nconst CELL_RENDERER_COMPONENT_ROW_CACHE = Symbol('aup-cell-renderer:row-data-cache');\n\nexport type OnComponentInit<C> = (component: C) => void;\n\nexport interface CellRendererOptions<Row, E> {\n onComponentInit?: (component: E) => void;\n onRowUpdate?: (component: E, row: Row) => void;\n}\n\n\nexport interface MutableCellRendererOptions<Row, E, P extends keyof Row> extends CellRendererOptions<Row, E> {\n onValueEdit: (row: Row, is: Row[P], was: Row[P]) => void;\n}\n\nconst DEFAULT_TEXT_SEARCH_PREDICATE: TextSearchPredicate<unknown> = (row: unknown, text: RegExp) => false;\n\nexport class ColumnModel<Row> extends GarbageCollector {\n\n private _columnTextProperties: ColumnTextProperties;\n\n private _columnHeaderPortalRef: CellHeaderPortalRef<Row, any>;\n private _cellRendererPortalRef: CellRendererPortalRef<Row, any>;\n private _cellEditorPortalRef: CellEditorPortalRef<Row, any>;\n\n private _enableRowSelection = true;\n private _flex = false;\n\n private _defaultVisibility = this.registerDisposable(new DelegatingValueModel<boolean>().withDefault(true));\n private _visible = this.registerDisposable(new DelegatingValueModel<boolean>().withDefault(this._defaultVisibility));\n readonly dasherisedColumnId: string;\n protected _columnModelTextSearchPredicate: TextSearchPredicate<Row> = undefined;\n protected _cellRendererTextSearchPredicate: TextSearchPredicate<Row> = undefined;\n\n constructor(readonly columnId: string, private textPropertiesProvider: ColumnModel.TextPropertiesProvider) {\n super();\n this.installHeaderRenderer();\n this.dasherisedColumnId = Stringy.from(columnId).dasherize().toString();\n }\n\n protected installHeaderRenderer() {\n this.cellHeaderRenderer(DefaultHeaderCellRendererComponent, (component, column) => {\n component.headerText = column.getHeaderText();\n });\n }\n\n @Memoize()\n getHeaderText(): string {\n return this.getColumnTextProperties()?.headerText() || this.getDefaultHeaderText();\n }\n\n isVisible() {\n return this.visible.value;\n }\n\n get visible() {\n return this._visible.readonly;\n }\n\n visibleWhile(visible: ValueModel<boolean>): this {\n this._visible.setDelegate(visible);\n return this;\n }\n\n protected setDefaultVisibility(visible: ValueModel<boolean>) {\n this._defaultVisibility.setDelegate(visible);\n }\n\n protected getDefaultHeaderText() {\n return this.columnId;\n }\n\n get isTextMatch(): TextSearchPredicate<Row> {\n return this._columnModelTextSearchPredicate || this._cellRendererTextSearchPredicate || DEFAULT_TEXT_SEARCH_PREDICATE;\n }\n\n /**\n * Sets the predicate to use when checking if the specified row is a text match for this column.\n * @param predicate\n */\n useTextSearchPredicate(predicate: TextSearchPredicate<Row>):this {\n this._columnModelTextSearchPredicate = predicate;\n return this;\n }\n\n @Memoize()\n getColumnTextProperties(): ColumnTextProperties {\n return this._columnTextProperties || this.textPropertiesProvider();\n }\n\n /**\n * @deprecated use #columnTextProperties instead\n * @param columnTextProperties\n */\n textProperties(columnTextProperties: ColumnTextProperties): this {\n return this.columnTextProperties(columnTextProperties);\n }\n\n columnTextProperties(columnTextProperties: ColumnTextProperties): this {\n this._columnTextProperties = columnTextProperties;\n return this;\n }\n\n protected configureHeaderRenderer<C>(config: CellHeaderPortalRef<Row, any>): void {\n this._columnHeaderPortalRef = config;\n }\n\n protected configureCellRenderer<C>(config: CellRendererPortalRef<Row, any>): void {\n this._cellRendererPortalRef = config;\n }\n\n protected configureCellEditor<E>(cellEditor: CellEditorPortalRef<Row, E>): void {\n this._cellEditorPortalRef = cellEditor;\n }\n\n cellHeaderRenderer<C>(componentType: ComponentType<C>, initialiser: (component: C, column: ColumnModel<Row>) => void): this {\n this.configureHeaderRenderer(new CellHeaderPortalRef<Row, C>(componentType, initialiser));\n return this;\n }\n\n flex(flex = true) {\n this._flex = flex;\n }\n\n isFlex() {\n return this._flex;\n }\n\n hasEditorPortal() {\n return !!this._cellEditorPortalRef;\n }\n\n attachHeaderCell(host: any) {\n this._columnHeaderPortalRef.initialiseHost(host, this);\n }\n\n attachCell(host: any) {\n this._cellRendererPortalRef.initialiseHost(host, this);\n if (this.hasEditorPortal()) {\n this._cellEditorPortalRef.initialiseHost(host, this);\n }\n }\n\n onHeaderAttached(host: TableHeaderCellRendererComponent, component: any) {\n this._columnHeaderPortalRef.onPortalAttached(host, component);\n }\n\n onRendererAttached(host: TableCellRendererComponent<Row>, component: any) {\n this._cellRendererPortalRef.onPortalAttached(host, component);\n if (isFunction(component?.matches)) {\n this._cellRendererTextSearchPredicate = (row, text) => component.matches(row, text);\n } else {\n this._cellRendererTextSearchPredicate = undefined;\n }\n }\n\n // @Trace()\n onEditorAttached(host: TableCellRendererComponent<Row>, component: any) {\n this._cellEditorPortalRef.onPortalAttached(host, component);\n }\n\n updatePortalContent(host: TableCellRendererComponent<Row>) {\n this._cellRendererPortalRef.pushState(host);\n }\n\n protected _selectRowOnClick(selectRowOnClick: boolean): this {\n this._enableRowSelection = selectRowOnClick;\n return this;\n }\n\n isRowSelectionEnabled(): boolean {\n return this._enableRowSelection;\n }\n}\n\nexport namespace ColumnModel {\n export type TextPropertiesProvider = () => ColumnTextProperties\n}\n\n\nexport class PropertyColumnModel<Row, P extends Types.ValuePropertiesOf<Row>> extends ColumnModel<Row> {\n\n private _format: (value: Row[P]) => any = (value) => value?.toString();\n\n constructor(id: string, readonly property: P, defaults: ColumnModel.TextPropertiesProvider) {\n super(id, defaults);\n this.cellRenderer(DefaultCellRendererComponent);\n this.useTextSearchPredicate((row: Row, regex: RegExp) => {\n return regex.test(this._format(row[this.property]));\n });\n }\n\n cellRenderer<E extends CellRenderer<Row[P]>>(componentType: ComponentType<E>, options?: CellRendererOptions<Row, E>): this\n cellRenderer<E extends CellRenderer<Row[P]>>(componentType: ComponentType<E>, onComponentInit?: OnComponentInit<E>): this\n cellRenderer<E extends CellRenderer<Row[P]>>(componentType: ComponentType<E>, onComponentInitOrOptions?: CellRendererOptions<Row, E> | OnComponentInit<E>): this {\n this.configureCellRenderer(new ComponentCellRendererPortalRef(componentType, (component, rowData, firstTime) => {\n if (firstTime) {\n if (isFunction(onComponentInitOrOptions)) {\n onComponentInitOrOptions(component);\n } else {\n if (isFunction(onComponentInitOrOptions?.onComponentInit)) {\n onComponentInitOrOptions.onComponentInit(component);\n }\n }\n }\n component.value = this._format(rowData.row[this.property]);\n }));\n return this;\n }\n\n liveEditCellRenderer<E extends MutableCellRenderer<Row[P]>>(componentType: ComponentType<E>, options: MutableCellRendererOptions<Row, E, P>): this {\n return this.mutableCellRenderer(componentType, options);\n }\n\n /**\n * Deprecated. Use #liveEditCellRenderer instead.\n * @param componentType\n * @param options\n */\n mutableCellRenderer<E extends MutableCellRenderer<Row[P]>>(componentType: ComponentType<E>, options: MutableCellRendererOptions<Row, E, P>): this {\n\n this.configureCellRenderer(new ComponentCellRendererPortalRef(componentType, (component, rowData, firstTime) => {\n\n // keep a local copy most recent row value so it's available to teh\n // edit callback without having to add/remove subscribers all the time.\n component[CELL_RENDERER_COMPONENT_ROW_CACHE] = rowData.row;\n let disableEditCallback = false;\n\n if (firstTime) {\n if (isFunction(options?.onComponentInit)) {\n options.onComponentInit(component);\n }\n // install our edit callback\n component.onValueEdited((is, was) => {\n if (!disableEditCallback) {\n options.onValueEdit(component[CELL_RENDERER_COMPONENT_ROW_CACHE], is, was);\n }\n });\n\n }\n\n // now push the value the component and disable the callback just incase the component misbehaves\n // and fires a value change during the operation.\n disableEditCallback = true;\n component.value = rowData.row[this.property];\n disableEditCallback = false;\n\n if (!isFunction(options) && isFunction(options?.onRowUpdate)) {\n options.onRowUpdate(component, rowData.row);\n }\n\n }));\n return this;\n }\n\n cellEditor<E extends CellEditorComponent<Row[P]>>(editor: ComponentType<E>, validators?: Validator<Row[P]>[], initialiseComponent?: (component: E) => void): this\n cellEditor<E extends CellEditorComponent<Row[P]>>(editor: ComponentType<E>, initialiseComponent?: (component: E) => void): this\n cellEditor<E extends CellEditorComponent<Row[P]>>(editor: ComponentType<E>, validatorsOrInitialiser?: Validator<Row[P]>[] | ((component: E) => void), onComponentInit?: (component: E) => void): this {\n const validators = Array.isArray(validatorsOrInitialiser) ? validatorsOrInitialiser : undefined;\n const initialiser = isFunction(validatorsOrInitialiser) ? validatorsOrInitialiser : onComponentInit;\n this.configureCellEditor(new CellEditorPortalRef(editor, (component: E, editSession: EditSession<Row>) => {\n const formValueModel = editSession.form.pluck(this.property);\n if (validators) {\n formValueModel.validateUsing(validators);\n }\n component.valueModel = formValueModel;\n if (initialiser) {\n initialiser(component);\n }\n }));\n return this;\n }\n\n format(formatter: (value: Row[P]) => any): this {\n assert.isFunction(formatter);\n this._format = formatter;\n return this;\n }\n\n public selectRowOnClick(selectOnRowClick: boolean): this {\n return this._selectRowOnClick(selectOnRowClick);\n }\n\n}\n\nexport class ListPropertyColumnModel<Row, P extends Types.ArrayPropertiesOf<Row>> extends ColumnModel<Row> {\n\n private _format: (value: Types.ArrayElementType<Row, P>[]) => any = (value) => value.map(v => v?.toString()).join(', ');\n\n constructor(id: string, readonly property: P, defaults: ColumnModel.TextPropertiesProvider) {\n super(id, defaults);\n this.cellRenderer(DefaultCellRendererComponent);\n this.useTextSearchPredicate((row: Row, regex: RegExp) => {\n return regex.test(this._format(row[this.property]));\n });\n }\n\n cellRenderer(componentType: ComponentType<{ value: Types.ArrayElementType<Row, P>[] }>): this {\n this.configureCellRenderer(new ComponentCellRendererPortalRef(componentType, (component, rowData) => {\n component.value = this._format(rowData.row[this.property]);\n }));\n return this;\n }\n\n cellEditor<C extends CellListEditorComponent<Types.ArrayElementType<Row, P>>>(editor: ComponentType<C>, validators?: Validator<Types.ArrayElementType<Row, P>[]>[], initialiseComponent?: (component: C) => void): this\n cellEditor<C extends CellListEditorComponent<Types.ArrayElementType<Row, P>>>(editor: ComponentType<C>, initialiseComponent?: (component: C) => void): this\n cellEditor<C extends CellListEditorComponent<Types.ArrayElementType<Row, P>>>(editor: ComponentType<C>, validatorsOrInitialiser?: Validator<Types.ArrayElementType<Row, P>[]>[] | ((component: C) => void), initialiseComponent?: (component: C) => void): this {\n const validators = Array.isArray(validatorsOrInitialiser) ? validatorsOrInitialiser : undefined;\n const initialiser = isFunction(validatorsOrInitialiser) ? validatorsOrInitialiser : initialiseComponent;\n\n this.configureCellEditor(new CellEditorPortalRef(editor, (component: C, editSession: EditSession<Row>) => {\n const formListModel = editSession.form.pluckList(this.property);\n if (validators) {\n formListModel.validateUsing(validators);\n }\n component.listModel = formListModel;\n if (initialiser) {\n initialiser(component);\n }\n }));\n return this;\n }\n\n format(formatter: (value: Types.ArrayElementType<Row, P>[]) => any): this {\n assert.isFunction(formatter);\n this._format = formatter;\n return this;\n }\n\n public selectRowOnClick(selectRowOnClick: boolean): this {\n return this._selectRowOnClick(selectRowOnClick);\n }\n\n}\n\nexport class CustomValueColumnModel<Row, V> extends ColumnModel<Row> {\n\n constructor(columnId: string, defaults: ColumnModel.TextPropertiesProvider, private getValue: (row: Row) => V) {\n super(columnId, defaults);\n this.cellRenderer(DefaultCellRendererComponent);\n }\n\n cellRenderer<C extends { value: Partial<V> }>(componentType: ComponentType<C>, onComponentInitOrOptions?: CellRendererOptions<Row, C> | OnComponentInit<C>): this {\n this.configureCellRenderer(new ComponentCellRendererPortalRef(componentType, (component, rowData, firstTime) => {\n if (firstTime) {\n if (isFunction(onComponentInitOrOptions)) {\n onComponentInitOrOptions(component);\n } else {\n if (isFunction(onComponentInitOrOptions?.onComponentInit)) {\n onComponentInitOrOptions.onComponentInit(component);\n }\n }\n }\n component.value = this.getValue(rowData.row);\n\n if (!isFunction(onComponentInitOrOptions) && isFunction(onComponentInitOrOptions?.onRowUpdate)) {\n onComponentInitOrOptions.onRowUpdate(component, rowData.row);\n }\n }));\n return this;\n }\n\n public selectRowOnClick(selectOnRowClick: boolean): this {\n return this._selectRowOnClick(selectOnRowClick);\n }\n\n}\n\nexport class EditorControlColumnModel<Row> extends ColumnModel<Row> {\n\n constructor(columnId: string, saveCommandFactory: Command.Factory<DirtyTrackingForm<Row>, boolean|Promise<boolean>>, defaults: ColumnModel.TextPropertiesProvider) {\n super(columnId, defaults);\n this.cellRenderer(EditRowControls);\n }\n\n cellRenderer(componentType: ComponentType<{ row: Row, editSession: EditSession<Row>, editRowCommand: Command<void> }>): this {\n this.configureCellRenderer(new ComponentCellRendererPortalRef(componentType, (component, rowData: RowData<Row>) => {\n component.row = rowData.row;\n component.editSession = rowData.editSession;\n component.editRowCommand = rowData.editRowCommand;\n }));\n return this;\n }\n\n protected getDefaultHeaderText(): string {\n return '';\n }\n}\n\nexport class CustomTemplateColumnModel<Row> extends ColumnModel<Row> {\n private readonly config = new TemplateCellRendererPortalRef<Row>();\n\n constructor(columnId: string, defaults: ColumnModel.TextPropertiesProvider) {\n super(columnId, defaults);\n this.configureCellRenderer(this.config);\n }\n\n setTemplate(templateRef: TemplateRef<any>, viewContainer: ViewContainerRef, fillCell: boolean, padChild: boolean) {\n this.config.registerPortal(templateRef, viewContainer, fillCell, padChild);\n }\n\n public selectRowOnClick(selectOnRowClick: boolean): this {\n return this._selectRowOnClick(selectOnRowClick);\n }\n\n}\n\nexport class SelectionColumnModel<Row> extends ColumnModel<Row> {\n\n private _enableHeaderControls = true;\n readonly selectionModel = DelegatingSelectionModel.createDelegate<Row, unknown>();\n\n constructor(columnId: string, defaults: ColumnModel.TextPropertiesProvider, selectionModel: SelectionModel<Row>) {\n super(columnId, defaults);\n this._selectRowOnClick(false);\n this.cellHeaderRenderer(SelectHeaderCellRendererComponent, (component) => {\n component.selectionModel = this.selectionModel;\n component.enableHeaderControls = this._enableHeaderControls;\n });\n this.configureCellRenderer(new ComponentCellRendererPortalRef(SelectCellRendererComponent, (component, rowData: RowData<Row>) => {\n component.row = rowData.row;\n component.selectionModel = this.selectionModel;\n }));\n this.setSelectionModel(selectionModel);\n }\n\n setSelectionModel(selectionModel: SelectionModel<Row>) {\n this.selectionModel.setDelegate(selectionModel);\n this.setDefaultVisibility(selectionModel instanceof MultipleSelectionModel ? ValueModel.TRUE : ValueModel.FALSE);\n }\n\n protected getDefaultHeaderText(): string {\n return '';\n }\n\n enableHeaderControls(enable: boolean): this {\n this._enableHeaderControls = enable;\n return this;\n }\n\n selectRow(row: Row) {\n this.selectionModel.selectCommand.execute(row);\n }\n\n isSelected(row: Row) {\n return this.selectionModel.isSelected(row);\n }\n}\n\n\n"]}
@@ -1 +1 @@
1
- [{"__symbolic":"module","version":4,"metadata":{"ɵ0":{"__symbolic":"error","message":"Lambda not supported","line":40,"character":13},"RowData":{"__symbolic":"interface"},"OnComponentInit":{"__symbolic":"interface"},"CellRendererOptions":{"__symbolic":"interface"},"MutableCellRendererOptions":{"__symbolic":"interface"},"ɵ1":{"__symbolic":"error","message":"Lambda not supported","line":63,"character":68},"ColumnModel":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@coolon/pectin","name":"GarbageCollector","line":65,"character":38},"arity":1,"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"string"},{"__symbolic":"select","expression":{"__symbolic":"reference","name":"ColumnModel"},"member":"TextPropertiesProvider"}]}],"installHeaderRenderer":[{"__symbolic":"method"}],"getHeaderText":[{"__symbolic":"method","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@typescript-plus/fast-memoize-decorator/dist/src","name":"Memoize","line":94,"character":3}}]}],"isVisible":[{"__symbolic":"method"}],"visibleWhile":[{"__symbolic":"method"}],"setDefaultVisibility":[{"__symbolic":"method"}],"getDefaultHeaderText":[{"__symbolic":"method"}],"useTextSearchPredicate":[{"__symbolic":"method"}],"getColumnTextProperties":[{"__symbolic":"method","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@typescript-plus/fast-memoize-decorator/dist/src","name":"Memoize","line":133,"character":3}}]}],"textProperties":[{"__symbolic":"method"}],"columnTextProperties":[{"__symbolic":"method"}],"configureHeaderRenderer":[{"__symbolic":"method"}],"configureCellRenderer":[{"__symbolic":"method"}],"configureCellEditor":[{"__symbolic":"method"}],"cellHeaderRenderer":[{"__symbolic":"method"}],"flex":[{"__symbolic":"method"}],"isFlex":[{"__symbolic":"method"}],"hasEditorPortal":[{"__symbolic":"method"}],"attachHeaderCell":[{"__symbolic":"method"}],"attachCell":[{"__symbolic":"method"}],"onHeaderAttached":[{"__symbolic":"method"}],"onRendererAttached":[{"__symbolic":"method"}],"onEditorAttached":[{"__symbolic":"method"}],"updatePortalContent":[{"__symbolic":"method"}],"_selectRowOnClick":[{"__symbolic":"method"}],"isRowSelectionEnabled":[{"__symbolic":"method"}]}},"PropertyColumnModel":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"ColumnModel"},"arity":2,"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"string"},{"__symbolic":"error","message":"Could not resolve type","line":232,"character":45,"context":{"typeName":"P"}},{"__symbolic":"select","expression":{"__symbolic":"reference","name":"ColumnModel"},"member":"TextPropertiesProvider"}]}],"cellRenderer":[{"__symbolic":"method"},{"__symbolic":"method"},{"__symbolic":"method"}],"liveEditCellRenderer":[{"__symbolic":"method"}],"mutableCellRenderer":[{"__symbolic":"method"}],"cellEditor":[{"__symbolic":"method"},{"__symbolic":"method"},{"__symbolic":"method"}],"format":[{"__symbolic":"method"}],"selectRowOnClick":[{"__symbolic":"method"}]}},"ListPropertyColumnModel":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"ColumnModel"},"arity":2,"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"string"},{"__symbolic":"error","message":"Could not resolve type","line":337,"character":45,"context":{"typeName":"P"}},{"__symbolic":"select","expression":{"__symbolic":"reference","name":"ColumnModel"},"member":"TextPropertiesProvider"}]}],"cellRenderer":[{"__symbolic":"method"}],"cellEditor":[{"__symbolic":"method"},{"__symbolic":"method"},{"__symbolic":"method"}],"format":[{"__symbolic":"method"}],"selectRowOnClick":[{"__symbolic":"method"}]}},"CustomValueColumnModel":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"ColumnModel"},"arity":2,"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"string"},{"__symbolic":"select","expression":{"__symbolic":"reference","name":"ColumnModel"},"member":"TextPropertiesProvider"},{"__symbolic":"error","message":"Expression form not supported","line":385,"character":96}]}],"cellRenderer":[{"__symbolic":"method"}],"selectRowOnClick":[{"__symbolic":"method"}]}},"EditorControlColumnModel":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"ColumnModel"},"arity":1,"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"string"},{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@coolon/pectin","name":"Command","line":418,"character":52},"member":"Factory","arguments":[{"__symbolic":"reference","module":"@coolon/pectin","name":"DirtyTrackingForm","line":418,"character":68,"arguments":[{"__symbolic":"error","message":"Could not resolve type","line":418,"character":86,"context":{"typeName":"Row"}}]},{"__symbolic":"error","message":"Could not resolve type","line":418,"character":100,"context":{"typeName":"Promise"}}]},{"__symbolic":"select","expression":{"__symbolic":"reference","name":"ColumnModel"},"member":"TextPropertiesProvider"}]}],"cellRenderer":[{"__symbolic":"method"}],"getDefaultHeaderText":[{"__symbolic":"method"}]}},"CustomTemplateColumnModel":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"ColumnModel"},"arity":1,"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"string"},{"__symbolic":"select","expression":{"__symbolic":"reference","name":"ColumnModel"},"member":"TextPropertiesProvider"}]}],"setTemplate":[{"__symbolic":"method"}],"selectRowOnClick":[{"__symbolic":"method"}]}},"SelectionColumnModel":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"ColumnModel"},"arity":1,"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"string"},{"__symbolic":"select","expression":{"__symbolic":"reference","name":"ColumnModel"},"member":"TextPropertiesProvider"},{"__symbolic":"reference","module":"@coolon/pectin","name":"SelectionModel","line":460,"character":94,"arguments":[{"__symbolic":"error","message":"Could not resolve type","line":460,"character":109,"context":{"typeName":"Row"}}]}]}],"setSelectionModel":[{"__symbolic":"method"}],"getDefaultHeaderText":[{"__symbolic":"method"}],"enableHeaderControls":[{"__symbolic":"method"}],"selectRow":[{"__symbolic":"method"}],"isSelected":[{"__symbolic":"method"}]}}}}]
1
+ [{"__symbolic":"module","version":4,"metadata":{"ɵ0":{"__symbolic":"error","message":"Lambda not supported","line":41,"character":13},"RowData":{"__symbolic":"interface"},"OnComponentInit":{"__symbolic":"interface"},"CellRendererOptions":{"__symbolic":"interface"},"MutableCellRendererOptions":{"__symbolic":"interface"},"ɵ1":{"__symbolic":"error","message":"Lambda not supported","line":64,"character":68},"ColumnModel":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@coolon/pectin","name":"GarbageCollector","line":66,"character":38},"arity":1,"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"string"},{"__symbolic":"select","expression":{"__symbolic":"reference","name":"ColumnModel"},"member":"TextPropertiesProvider"}]}],"installHeaderRenderer":[{"__symbolic":"method"}],"getHeaderText":[{"__symbolic":"method","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@typescript-plus/fast-memoize-decorator","name":"Memoize","line":95,"character":3}}]}],"isVisible":[{"__symbolic":"method"}],"visibleWhile":[{"__symbolic":"method"}],"setDefaultVisibility":[{"__symbolic":"method"}],"getDefaultHeaderText":[{"__symbolic":"method"}],"useTextSearchPredicate":[{"__symbolic":"method"}],"getColumnTextProperties":[{"__symbolic":"method","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@typescript-plus/fast-memoize-decorator","name":"Memoize","line":134,"character":3}}]}],"textProperties":[{"__symbolic":"method"}],"columnTextProperties":[{"__symbolic":"method"}],"configureHeaderRenderer":[{"__symbolic":"method"}],"configureCellRenderer":[{"__symbolic":"method"}],"configureCellEditor":[{"__symbolic":"method"}],"cellHeaderRenderer":[{"__symbolic":"method"}],"flex":[{"__symbolic":"method"}],"isFlex":[{"__symbolic":"method"}],"hasEditorPortal":[{"__symbolic":"method"}],"attachHeaderCell":[{"__symbolic":"method"}],"attachCell":[{"__symbolic":"method"}],"onHeaderAttached":[{"__symbolic":"method"}],"onRendererAttached":[{"__symbolic":"method"}],"onEditorAttached":[{"__symbolic":"method"}],"updatePortalContent":[{"__symbolic":"method"}],"_selectRowOnClick":[{"__symbolic":"method"}],"isRowSelectionEnabled":[{"__symbolic":"method"}]}},"PropertyColumnModel":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"ColumnModel"},"arity":2,"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"string"},{"__symbolic":"error","message":"Could not resolve type","line":233,"character":45,"context":{"typeName":"P"}},{"__symbolic":"select","expression":{"__symbolic":"reference","name":"ColumnModel"},"member":"TextPropertiesProvider"}]}],"cellRenderer":[{"__symbolic":"method"},{"__symbolic":"method"},{"__symbolic":"method"}],"liveEditCellRenderer":[{"__symbolic":"method"}],"mutableCellRenderer":[{"__symbolic":"method"}],"cellEditor":[{"__symbolic":"method"},{"__symbolic":"method"},{"__symbolic":"method"}],"format":[{"__symbolic":"method"}],"selectRowOnClick":[{"__symbolic":"method"}]}},"ListPropertyColumnModel":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"ColumnModel"},"arity":2,"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"string"},{"__symbolic":"error","message":"Could not resolve type","line":338,"character":45,"context":{"typeName":"P"}},{"__symbolic":"select","expression":{"__symbolic":"reference","name":"ColumnModel"},"member":"TextPropertiesProvider"}]}],"cellRenderer":[{"__symbolic":"method"}],"cellEditor":[{"__symbolic":"method"},{"__symbolic":"method"},{"__symbolic":"method"}],"format":[{"__symbolic":"method"}],"selectRowOnClick":[{"__symbolic":"method"}]}},"CustomValueColumnModel":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"ColumnModel"},"arity":2,"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"string"},{"__symbolic":"select","expression":{"__symbolic":"reference","name":"ColumnModel"},"member":"TextPropertiesProvider"},{"__symbolic":"error","message":"Expression form not supported","line":386,"character":96}]}],"cellRenderer":[{"__symbolic":"method"}],"selectRowOnClick":[{"__symbolic":"method"}]}},"EditorControlColumnModel":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"ColumnModel"},"arity":1,"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"string"},{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@coolon/pectin","name":"Command","line":419,"character":52},"member":"Factory","arguments":[{"__symbolic":"reference","module":"@coolon/pectin","name":"DirtyTrackingForm","line":419,"character":68,"arguments":[{"__symbolic":"error","message":"Could not resolve type","line":419,"character":86,"context":{"typeName":"Row"}}]},{"__symbolic":"error","message":"Could not resolve type","line":419,"character":100,"context":{"typeName":"Promise"}}]},{"__symbolic":"select","expression":{"__symbolic":"reference","name":"ColumnModel"},"member":"TextPropertiesProvider"}]}],"cellRenderer":[{"__symbolic":"method"}],"getDefaultHeaderText":[{"__symbolic":"method"}]}},"CustomTemplateColumnModel":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"ColumnModel"},"arity":1,"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"string"},{"__symbolic":"select","expression":{"__symbolic":"reference","name":"ColumnModel"},"member":"TextPropertiesProvider"}]}],"setTemplate":[{"__symbolic":"method"}],"selectRowOnClick":[{"__symbolic":"method"}]}},"SelectionColumnModel":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"ColumnModel"},"arity":1,"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"string"},{"__symbolic":"select","expression":{"__symbolic":"reference","name":"ColumnModel"},"member":"TextPropertiesProvider"},{"__symbolic":"reference","module":"@coolon/pectin","name":"SelectionModel","line":461,"character":94,"arguments":[{"__symbolic":"error","message":"Could not resolve type","line":461,"character":109,"context":{"typeName":"Row"}}]}]}],"setSelectionModel":[{"__symbolic":"method"}],"getDefaultHeaderText":[{"__symbolic":"method"}],"enableHeaderControls":[{"__symbolic":"method"}],"selectRow":[{"__symbolic":"method"}],"isSelected":[{"__symbolic":"method"}]}}}}]
@@ -1 +1 @@
1
- {"version":3,"file":"default-cell-renderer.component.js","sourceRoot":"","sources":["../../../../../../../../../libs/angular-ui-powerups/src/lib/components/tables/table/default-cell-renderer/default-cell-renderer.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AASjD,MAAM,OAAO,4BAA4B;IAYvC;IACA,CAAC;IAVD,IACI,KAAK,CAAC,KAAQ;QAChB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;IACtB,CAAC;IAED,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;;;YAfF,SAAS,SAAC;gBACT,QAAQ,EAAE,2BAA2B;gBACrC,+DAAqD;;aAEtD;;;;oBAIE,KAAK","sourcesContent":["import { Component, Input } from '@angular/core';\nimport { CellRenderer } from '../cell-renderer';\nimport * as _ from 'lodash';\n\n@Component({\n selector: 'aup-default-cell-renderer',\n templateUrl: './default-cell-renderer.component.html',\n styleUrls: ['./default-cell-renderer.component.scss']\n})\nexport class DefaultCellRendererComponent<T> implements CellRenderer<T>{\n private _value: T;\n\n @Input()\n set value(value: T) {\n this._value = value;\n }\n\n get value(): T {\n return this._value;\n }\n\n constructor() {\n }\n}\n"]}
1
+ {"version":3,"file":"default-cell-renderer.component.js","sourceRoot":"","sources":["../../../../../../../../../libs/angular-ui-powerups/src/lib/components/tables/table/default-cell-renderer/default-cell-renderer.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AASjD,MAAM,OAAO,4BAA4B;IAYvC;IACA,CAAC;IAVD,IACI,KAAK,CAAC,KAAQ;QAChB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;IACtB,CAAC;IAED,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;;;YAfF,SAAS,SAAC;gBACT,QAAQ,EAAE,2BAA2B;gBACrC,+DAAqD;;aAEtD;;;;oBAIE,KAAK","sourcesContent":["import { Component, Input } from '@angular/core';\nimport { CellRenderer } from '../cell-renderer';\n\n\n@Component({\n selector: 'aup-default-cell-renderer',\n templateUrl: './default-cell-renderer.component.html',\n styleUrls: ['./default-cell-renderer.component.scss']\n})\nexport class DefaultCellRendererComponent<T> implements CellRenderer<T>{\n private _value: T;\n\n @Input()\n set value(value: T) {\n this._value = value;\n }\n\n get value(): T {\n return this._value;\n }\n\n constructor() {\n }\n}\n"]}
@@ -1,6 +1,6 @@
1
1
  import { __decorate, __metadata } from "tslib";
2
2
  import { assert } from '@coolon/pectin';
3
- import { Memoize } from '@typescript-plus/fast-memoize-decorator/dist/src';
3
+ import { Memoize } from '@typescript-plus/fast-memoize-decorator';
4
4
  export const treeNodeDecorator = Symbol('TreeDecorator');
5
5
  export var DecoratedTreeNode;
6
6
  (function (DecoratedTreeNode) {
@@ -62,11 +62,11 @@ export var DecoratedTreeNode;
62
62
  return this.parent ? this.parent[treeNodeDecorator].children.length > 1 : false;
63
63
  }
64
64
  // find(predicate: Predicate<T>): T {
65
- // return _.find(this.descendants(), predicate);
65
+ // return find(this.descendants(), predicate);
66
66
  // }
67
67
  //
68
68
  // select(predicate: Predicate<T>): T[] {
69
- // return _.filter(this.descendants(), predicate);
69
+ // return filter(this.descendants(), predicate);
70
70
  // }
71
71
  //
72
72
  // flattenInto(array: T[]): T[] {
@@ -1 +1 @@
1
- {"version":3,"file":"decorated-tree-node.js","sourceRoot":"","sources":["../../../../../../../../libs/angular-ui-powerups/src/lib/components/tables/tree-table/decorated-tree-node.ts"],"names":[],"mappings":"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","sourcesContent":["import { assert } from '@coolon/pectin';\nimport { Memoize } from '@typescript-plus/fast-memoize-decorator/dist/src';\n\nexport const treeNodeDecorator = Symbol('TreeDecorator');\n\nexport interface HasTreeNodeDecorator<T> {\n [treeNodeDecorator]: DecoratedTreeNode.Decorator<T>\n}\n\nexport type DecoratedTreeNode<T> = T & HasTreeNodeDecorator<T>\n\nexport namespace DecoratedTreeNode {\n\n export function decorateRoot<T>(node: T, extractChildren: (node: T) => T[]):DecoratedTreeNode<T> {\n return new Decorator<T>(undefined, node, extractChildren).decoratedNode;\n }\n\n export function getDecorator<T>(node:T):Decorator<T> {\n assert.notNil(node[treeNodeDecorator]);\n return node[treeNodeDecorator];\n }\n\n export class Decorator<T> {\n\n constructor(readonly parent: DecoratedTreeNode<T> | undefined, private readonly node: T, private readonly extractChildren: (node: T) => T[]) {\n node[treeNodeDecorator] = this; // inject our decorator.\n }\n\n @Memoize()\n get children(): DecoratedTreeNode<T>[] {\n return this.extractChildren(this.node)\n .map(child => child[treeNodeDecorator] ?? new Decorator(this.decoratedNode, child, this.extractChildren))\n .map(d => d.decoratedNode)\n }\n\n get decoratedNode(): DecoratedTreeNode<T> {\n return this.node as DecoratedTreeNode<T>\n }\n\n @Memoize()\n siblingsBefore(): T[] {\n if (this.parent) {\n return this.parent[treeNodeDecorator].children.slice(0, this.myIndex());\n } else {\n return [];\n }\n }\n\n @Memoize()\n siblingsAfter(): T[] {\n if (this.parent) {\n return this.parent[treeNodeDecorator].children.slice(1 + this.myIndex());\n } else {\n return [];\n }\n }\n\n @Memoize()\n siblings(): T[] {\n return [].concat(this.siblingsBefore(), this.siblingsAfter());\n }\n\n @Memoize()\n isFirstChild(): boolean {\n return this.parent ? this.myIndex() === 0 : false;\n }\n\n @Memoize()\n protected myIndex() {\n const myIndex = this.parent[treeNodeDecorator].children.findIndex(child => this.node === child);\n assert.isTruthy(myIndex >= 0, 'illegal state, expected index to be >= 0');\n return myIndex;\n }\n\n @Memoize()\n isLastChild(): boolean {\n return this.parent ? this.myIndex() === this.parent[treeNodeDecorator].children.length - 1 : false;\n }\n\n @Memoize()\n hasSiblings(): boolean {\n return this.parent ? this.parent[treeNodeDecorator].children.length > 1 : false;\n }\n\n // find(predicate: Predicate<T>): T {\n // return _.find(this.descendants(), predicate);\n // }\n //\n // select(predicate: Predicate<T>): T[] {\n // return _.filter(this.descendants(), predicate);\n // }\n //\n // flattenInto(array: T[]): T[] {\n // this.visitSelfAndDescendants(child => array.push(child));\n // return array;\n // }\n\n @Memoize()\n ancestors(): T[] {\n return this.parent ? this.parent[treeNodeDecorator].ancestors().concat([this.parent]) : [];\n }\n\n // ancestorsAndSelf(): T[] {\n // return this.memoize('ancestorsAndSelf', () => {\n // return this.ancestors().concat([(this.decoratedSelf)]);\n // });\n // }\n\n // pathToParent(parent: T): T[] {\n // if (this.node === parent.node) {\n // return [];\n // } else if (this.parent) {\n // const pathToParent = this.parent.pathToParent(parent);\n // return pathToParent.concat([this.parent]);\n // } else {\n // throw new Error('parent is not an ancestor');\n // }\n // }\n //\n // pathToParentAndSelf(parent): T[] {\n // return this.pathToParent(parent).concat([this.decoratedSelf]);\n // }\n\n isRoot(): boolean {\n return !this.parent;\n }\n\n @Memoize()\n get depth(): number {\n return this.isRoot() ? 0 : this.parent[treeNodeDecorator].depth + 1;\n }\n\n isLeaf(): boolean {\n return !this.isRoot() && this.children.length < 1;\n }\n\n hasChildren(): boolean {\n return this.children.length > 0;\n }\n\n // depthFromParent(parent): number {\n // return this.pathToParent(parent).length;\n // }\n //\n // treeDepth(): number {\n // return this.memoize('treeDepth', () => {\n // return 1 + this.descendants().map(child => child.depthFromParent(this)).reduce((prev, current) => Math.max(prev, current));\n // });\n // }\n\n // flatten(): T[] {\n // return this.memoize('flatten', () => {\n // return this.flattenInto([]);\n // });\n // }\n //\n // visit<V extends Visitor<T>>(visitor: V): V {\n // visitor.visit(this as any as T);\n // return visitor;\n // }\n //\n // visitChildren<V extends Visitor<T>>(visitor: V): V {\n // _.each(this.decoratedChildren, child => child.visit(visitor));\n // return visitor;\n // }\n //\n // visitSelfAndDescendants(callback: (it: T) => void) {\n // this.visit(new SelfAndDescendantsVisitor.Each<T>(callback));\n // }\n //\n // visitDescendants(callback: (it: T) => void) {\n // this.visitChildren(new SelfAndDescendantsVisitor.Each<T>(callback));\n // }\n //\n\n }\n\n}\n"]}
1
+ {"version":3,"file":"decorated-tree-node.js","sourceRoot":"","sources":["../../../../../../../../libs/angular-ui-powerups/src/lib/components/tables/tree-table/decorated-tree-node.ts"],"names":[],"mappings":"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","sourcesContent":["import { assert } from '@coolon/pectin';\nimport { Memoize } from '@typescript-plus/fast-memoize-decorator';\n\nexport const treeNodeDecorator = Symbol('TreeDecorator');\n\nexport interface HasTreeNodeDecorator<T> {\n [treeNodeDecorator]: DecoratedTreeNode.Decorator<T>\n}\n\nexport type DecoratedTreeNode<T> = T & HasTreeNodeDecorator<T>\n\nexport namespace DecoratedTreeNode {\n\n export function decorateRoot<T>(node: T, extractChildren: (node: T) => T[]):DecoratedTreeNode<T> {\n return new Decorator<T>(undefined, node, extractChildren).decoratedNode;\n }\n\n export function getDecorator<T>(node:T):Decorator<T> {\n assert.notNil(node[treeNodeDecorator]);\n return node[treeNodeDecorator];\n }\n\n export class Decorator<T> {\n\n constructor(readonly parent: DecoratedTreeNode<T> | undefined, private readonly node: T, private readonly extractChildren: (node: T) => T[]) {\n node[treeNodeDecorator] = this; // inject our decorator.\n }\n\n @Memoize()\n get children(): DecoratedTreeNode<T>[] {\n return this.extractChildren(this.node)\n .map(child => child[treeNodeDecorator] ?? new Decorator(this.decoratedNode, child, this.extractChildren))\n .map(d => d.decoratedNode)\n }\n\n get decoratedNode(): DecoratedTreeNode<T> {\n return this.node as DecoratedTreeNode<T>\n }\n\n @Memoize()\n siblingsBefore(): T[] {\n if (this.parent) {\n return this.parent[treeNodeDecorator].children.slice(0, this.myIndex());\n } else {\n return [];\n }\n }\n\n @Memoize()\n siblingsAfter(): T[] {\n if (this.parent) {\n return this.parent[treeNodeDecorator].children.slice(1 + this.myIndex());\n } else {\n return [];\n }\n }\n\n @Memoize()\n siblings(): T[] {\n return [].concat(this.siblingsBefore(), this.siblingsAfter());\n }\n\n @Memoize()\n isFirstChild(): boolean {\n return this.parent ? this.myIndex() === 0 : false;\n }\n\n @Memoize()\n protected myIndex() {\n const myIndex = this.parent[treeNodeDecorator].children.findIndex(child => this.node === child);\n assert.isTruthy(myIndex >= 0, 'illegal state, expected index to be >= 0');\n return myIndex;\n }\n\n @Memoize()\n isLastChild(): boolean {\n return this.parent ? this.myIndex() === this.parent[treeNodeDecorator].children.length - 1 : false;\n }\n\n @Memoize()\n hasSiblings(): boolean {\n return this.parent ? this.parent[treeNodeDecorator].children.length > 1 : false;\n }\n\n // find(predicate: Predicate<T>): T {\n // return find(this.descendants(), predicate);\n // }\n //\n // select(predicate: Predicate<T>): T[] {\n // return filter(this.descendants(), predicate);\n // }\n //\n // flattenInto(array: T[]): T[] {\n // this.visitSelfAndDescendants(child => array.push(child));\n // return array;\n // }\n\n @Memoize()\n ancestors(): T[] {\n return this.parent ? this.parent[treeNodeDecorator].ancestors().concat([this.parent]) : [];\n }\n\n // ancestorsAndSelf(): T[] {\n // return this.memoize('ancestorsAndSelf', () => {\n // return this.ancestors().concat([(this.decoratedSelf)]);\n // });\n // }\n\n // pathToParent(parent: T): T[] {\n // if (this.node === parent.node) {\n // return [];\n // } else if (this.parent) {\n // const pathToParent = this.parent.pathToParent(parent);\n // return pathToParent.concat([this.parent]);\n // } else {\n // throw new Error('parent is not an ancestor');\n // }\n // }\n //\n // pathToParentAndSelf(parent): T[] {\n // return this.pathToParent(parent).concat([this.decoratedSelf]);\n // }\n\n isRoot(): boolean {\n return !this.parent;\n }\n\n @Memoize()\n get depth(): number {\n return this.isRoot() ? 0 : this.parent[treeNodeDecorator].depth + 1;\n }\n\n isLeaf(): boolean {\n return !this.isRoot() && this.children.length < 1;\n }\n\n hasChildren(): boolean {\n return this.children.length > 0;\n }\n\n // depthFromParent(parent): number {\n // return this.pathToParent(parent).length;\n // }\n //\n // treeDepth(): number {\n // return this.memoize('treeDepth', () => {\n // return 1 + this.descendants().map(child => child.depthFromParent(this)).reduce((prev, current) => Math.max(prev, current));\n // });\n // }\n\n // flatten(): T[] {\n // return this.memoize('flatten', () => {\n // return this.flattenInto([]);\n // });\n // }\n //\n // visit<V extends Visitor<T>>(visitor: V): V {\n // visitor.visit(this as any as T);\n // return visitor;\n // }\n //\n // visitChildren<V extends Visitor<T>>(visitor: V): V {\n // each(this.decoratedChildren, child => child.visit(visitor));\n // return visitor;\n // }\n //\n // visitSelfAndDescendants(callback: (it: T) => void) {\n // this.visit(new SelfAndDescendantsVisitor.Each<T>(callback));\n // }\n //\n // visitDescendants(callback: (it: T) => void) {\n // this.visitChildren(new SelfAndDescendantsVisitor.Each<T>(callback));\n // }\n //\n\n }\n\n}\n"]}
@@ -1,4 +1,4 @@
1
- import _ from 'lodash';
1
+ import { isNil } from 'lodash-es';
2
2
  import { ComponentCellRendererPortalRef } from '../table/cell-portal-ref';
3
3
  import { ColumnModel } from '../table/column-model';
4
4
  import { TreeLabelCellRendererComponent } from './tree-label-cell-renderer/tree-label-cell-renderer.component';
@@ -27,7 +27,7 @@ export class TreeLabelColumnModel extends ColumnModel {
27
27
  component.treeTableModel = this.expansionModel;
28
28
  }
29
29
  component.value = rowData.row;
30
- component.label = _.isNil(this.labelProperty) ? undefined : rowData.row[this.labelProperty];
30
+ component.label = isNil(this.labelProperty) ? undefined : rowData.row[this.labelProperty];
31
31
  component.iconFactory = this.iconFactory;
32
32
  }));
33
33
  return this;
@@ -1 +1 @@
1
- {"version":3,"file":"tree-label-column-model.js","sourceRoot":"","sources":["../../../../../../../../libs/angular-ui-powerups/src/lib/components/tables/tree-table/tree-label-column-model.ts"],"names":[],"mappings":"AAEA,OAAO,CAAC,MAAM,QAAQ,CAAC;AACvB,OAAO,EAAE,8BAA8B,EAAE,MAAM,0BAA0B,CAAC;AAC1E,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,8BAA8B,EAAE,MAAM,+DAA+D,CAAC;AAG/G,MAAM,OAAO,oBAA0B,SAAQ,WAAgB;IAK7D,YAAY,QAAgB,EAChB,sBAA0D,EACjD,cAAmC;QACtD,KAAK,CAAC,QAAQ,EAAE,sBAAsB,CAAC,CAAC;QADrB,mBAAc,GAAd,cAAc,CAAqB;QAEtD,IAAI,CAAC,YAAY,CAAC,8BAA8B,CAAC,CAAC;IACpD,CAAC;IAED,KAAK,CAAyC,QAAW;QACvD,IAAI,CAAC,aAAa,GAAG,QAAQ,CAAC;IAChC,CAAC;IAED;;;OAGG;IACH,OAAO,CAAyC,OAAwC;QACtF,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACxB,CAAC;IAED,OAAO,CAAyC,OAAwC;QACtF,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC;IAC7B,CAAC;IAES,YAAY,CAAgD,aAA+B;QACnG,IAAI,CAAC,qBAAqB,CAAC,IAAI,8BAA8B,CAAC,aAAa,EAAE,CAAC,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE;YAC7G,IAAI,SAAS,EAAE;gBACb,SAAS,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC;aAChD;YACD,SAAS,CAAC,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC;YAC9B,SAAS,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YAC5F,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;QAC3C,CAAC,CAAC,CAAC,CAAC;QACJ,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,iBAAiB,CAAC,gBAAyB;QAChD,OAAO,KAAK,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,CAAC;IACnD,CAAC;CAEF","sourcesContent":["import { ComponentType } from '@angular/cdk/overlay';\nimport { Types } from '@coolon/pectin';\nimport _ from 'lodash';\nimport { ComponentCellRendererPortalRef } from '../table/cell-portal-ref';\nimport { ColumnModel } from '../table/column-model';\nimport { TreeLabelCellRendererComponent } from './tree-label-cell-renderer/tree-label-cell-renderer.component';\nimport { TreeTableModel } from './tree-table-model';\n\nexport class TreeLabelColumnModel<Row> extends ColumnModel<Row> {\n\n private labelProperty: string | number | symbol;\n private iconFactory: TreeTableModel.IconFactory<Row>;\n\n constructor(columnId: string,\n textPropertiesProvider: ColumnModel.TextPropertiesProvider,\n readonly expansionModel: TreeTableModel<Row>) {\n super(columnId, textPropertiesProvider);\n this.cellRenderer(TreeLabelCellRendererComponent);\n }\n\n pluck<P extends Types.ValuePropertiesOf<Row>>(property: P) {\n this.labelProperty = property;\n }\n\n /**\n * @deprecated use #useIcon instead.\n * @param factory\n */\n addIcon<P extends Types.ValuePropertiesOf<Row>>(factory: TreeTableModel.IconFactory<Row>) {\n this.useIcon(factory);\n }\n\n useIcon<P extends Types.ValuePropertiesOf<Row>>(factory: TreeTableModel.IconFactory<Row>) {\n this.iconFactory = factory;\n }\n\n protected cellRenderer<C extends TreeLabelCellRendererComponent<Row>>(componentType: ComponentType<C>): this {\n this.configureCellRenderer(new ComponentCellRendererPortalRef(componentType, (component, rowData, firstTime) => {\n if (firstTime) {\n component.treeTableModel = this.expansionModel;\n }\n component.value = rowData.row;\n component.label = _.isNil(this.labelProperty) ? undefined : rowData.row[this.labelProperty];\n component.iconFactory = this.iconFactory;\n }));\n return this;\n }\n\n public _selectRowOnClick(selectOnRowClick: boolean): this {\n return super._selectRowOnClick(selectOnRowClick);\n }\n\n}\n"]}
1
+ {"version":3,"file":"tree-label-column-model.js","sourceRoot":"","sources":["../../../../../../../../libs/angular-ui-powerups/src/lib/components/tables/tree-table/tree-label-column-model.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,8BAA8B,EAAE,MAAM,0BAA0B,CAAC;AAC1E,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,8BAA8B,EAAE,MAAM,+DAA+D,CAAC;AAG/G,MAAM,OAAO,oBAA0B,SAAQ,WAAgB;IAK7D,YAAY,QAAgB,EAChB,sBAA0D,EACjD,cAAmC;QACtD,KAAK,CAAC,QAAQ,EAAE,sBAAsB,CAAC,CAAC;QADrB,mBAAc,GAAd,cAAc,CAAqB;QAEtD,IAAI,CAAC,YAAY,CAAC,8BAA8B,CAAC,CAAC;IACpD,CAAC;IAED,KAAK,CAAyC,QAAW;QACvD,IAAI,CAAC,aAAa,GAAG,QAAQ,CAAC;IAChC,CAAC;IAED;;;OAGG;IACH,OAAO,CAAyC,OAAwC;QACtF,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACxB,CAAC;IAED,OAAO,CAAyC,OAAwC;QACtF,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC;IAC7B,CAAC;IAES,YAAY,CAAgD,aAA+B;QACnG,IAAI,CAAC,qBAAqB,CAAC,IAAI,8BAA8B,CAAC,aAAa,EAAE,CAAC,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE;YAC7G,IAAI,SAAS,EAAE;gBACb,SAAS,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC;aAChD;YACD,SAAS,CAAC,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC;YAC9B,SAAS,CAAC,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YAC1F,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;QAC3C,CAAC,CAAC,CAAC,CAAC;QACJ,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,iBAAiB,CAAC,gBAAyB;QAChD,OAAO,KAAK,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,CAAC;IACnD,CAAC;CAEF","sourcesContent":["import { ComponentType } from '@angular/cdk/overlay';\nimport { Types } from '@coolon/pectin';\n\nimport { isNil } from 'lodash-es';\nimport { ComponentCellRendererPortalRef } from '../table/cell-portal-ref';\nimport { ColumnModel } from '../table/column-model';\nimport { TreeLabelCellRendererComponent } from './tree-label-cell-renderer/tree-label-cell-renderer.component';\nimport { TreeTableModel } from './tree-table-model';\n\nexport class TreeLabelColumnModel<Row> extends ColumnModel<Row> {\n\n private labelProperty: string | number | symbol;\n private iconFactory: TreeTableModel.IconFactory<Row>;\n\n constructor(columnId: string,\n textPropertiesProvider: ColumnModel.TextPropertiesProvider,\n readonly expansionModel: TreeTableModel<Row>) {\n super(columnId, textPropertiesProvider);\n this.cellRenderer(TreeLabelCellRendererComponent);\n }\n\n pluck<P extends Types.ValuePropertiesOf<Row>>(property: P) {\n this.labelProperty = property;\n }\n\n /**\n * @deprecated use #useIcon instead.\n * @param factory\n */\n addIcon<P extends Types.ValuePropertiesOf<Row>>(factory: TreeTableModel.IconFactory<Row>) {\n this.useIcon(factory);\n }\n\n useIcon<P extends Types.ValuePropertiesOf<Row>>(factory: TreeTableModel.IconFactory<Row>) {\n this.iconFactory = factory;\n }\n\n protected cellRenderer<C extends TreeLabelCellRendererComponent<Row>>(componentType: ComponentType<C>): this {\n this.configureCellRenderer(new ComponentCellRendererPortalRef(componentType, (component, rowData, firstTime) => {\n if (firstTime) {\n component.treeTableModel = this.expansionModel;\n }\n component.value = rowData.row;\n component.label = isNil(this.labelProperty) ? undefined : rowData.row[this.labelProperty];\n component.iconFactory = this.iconFactory;\n }));\n return this;\n }\n\n public _selectRowOnClick(selectOnRowClick: boolean): this {\n return super._selectRowOnClick(selectOnRowClick);\n }\n\n}\n"]}
@@ -1 +1 @@
1
- [{"__symbolic":"module","version":4,"metadata":{"TreeLabelColumnModel":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"../table/column-model","name":"ColumnModel","line":8,"character":47},"arity":1,"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"string"},{"__symbolic":"select","expression":{"__symbolic":"reference","module":"../table/column-model","name":"ColumnModel","line":14,"character":38},"member":"TextPropertiesProvider"},{"__symbolic":"reference","module":"./tree-table-model","name":"TreeTableModel","line":15,"character":39,"arguments":[{"__symbolic":"error","message":"Could not resolve type","line":15,"character":54,"context":{"typeName":"Row"}}]}]}],"pluck":[{"__symbolic":"method"}],"addIcon":[{"__symbolic":"method"}],"useIcon":[{"__symbolic":"method"}],"cellRenderer":[{"__symbolic":"method"}],"_selectRowOnClick":[{"__symbolic":"method"}]}}}}]
1
+ [{"__symbolic":"module","version":4,"metadata":{"TreeLabelColumnModel":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"../table/column-model","name":"ColumnModel","line":9,"character":47},"arity":1,"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"string"},{"__symbolic":"select","expression":{"__symbolic":"reference","module":"../table/column-model","name":"ColumnModel","line":15,"character":38},"member":"TextPropertiesProvider"},{"__symbolic":"reference","module":"./tree-table-model","name":"TreeTableModel","line":16,"character":39,"arguments":[{"__symbolic":"error","message":"Could not resolve type","line":16,"character":54,"context":{"typeName":"Row"}}]}]}],"pluck":[{"__symbolic":"method"}],"addIcon":[{"__symbolic":"method"}],"useIcon":[{"__symbolic":"method"}],"cellRenderer":[{"__symbolic":"method"}],"_selectRowOnClick":[{"__symbolic":"method"}]}}}}]
@@ -1,4 +1,4 @@
1
- import * as _ from 'lodash';
1
+ import { isFunction } from 'lodash-es';
2
2
  import { AbstractTableModel } from '../abstract-table-model';
3
3
  import { FlattenedTreeListModel } from './flattened-tree-list-model';
4
4
  import { TreeExpansionModel } from './tree-expansion-model';
@@ -19,7 +19,7 @@ export class TreeTableModel extends AbstractTableModel {
19
19
  this.treeExpansionModel = new TreeExpansionModel(row => this.identityOf(row));
20
20
  if (builder)
21
21
  builder(this);
22
- const childExtractor = _.isFunction(childAccessor) ? childAccessor : row => row[childAccessor];
22
+ const childExtractor = isFunction(childAccessor) ? childAccessor : row => row[childAccessor];
23
23
  this.flattenedDataSource = this.registerDisposable(new FlattenedTreeListModel(source, childExtractor, this.treeExpansionModel));
24
24
  this.setDataSource(this.flattenedDataSource);
25
25
  this.addRowClass('aup-node-collapsed', row => this.isCollapsed(row));
@@ -1 +1 @@
1
- {"version":3,"file":"tree-table-model.js","sourceRoot":"","sources":["../../../../../../../../libs/angular-ui-powerups/src/lib/components/tables/tree-table/tree-table-model.ts"],"names":[],"mappings":"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","sourcesContent":["import { ListModel, MutableValueModel, SelectionModel, ValueModel } from '@coolon/pectin';\nimport * as _ from 'lodash';\nimport { AbstractTableModel } from '../abstract-table-model';\nimport { SelectionColumnModel } from '../table/column-model';\nimport { FlattenedTreeListModel } from './flattened-tree-list-model';\nimport { TreeExpansionModel } from './tree-expansion-model';\nimport { TreeLabelColumnModel } from './tree-label-column-model';\n\nexport type ChildArrayPropertiesOf<T> = { [K in keyof T]: T[K] extends T[] ? K : never }[keyof T];\n\n// TODO:\n// Selection Models:\n// - as simple navigation tree\n// - as editable grid (selecte all, even hidden etc?)\n// - fixing selection on underlying model changes.\n// - rendering selection: row highlighting, checkboxes (in the tree renderer or in separate column), both.\n// Expansion Models:\n// - Add ability to auto show to depth\n// - Add a predicate to check default expansion (i.e. has children of a certain type)\n//\nexport class TreeTableModel<Row> extends AbstractTableModel<Row> {\n\n readonly treeExpansionModel = new TreeExpansionModel<Row>(row => this.identityOf(row));\n private readonly flattenedDataSource: FlattenedTreeListModel<Row>;\n\n constructor(source: ListModel<Row>, childAccessor: ChildArrayPropertiesOf<Row> | ((node: Row) => Row[]), builder?: (model: TreeTableModel<Row>) => void) {\n super();\n if (builder) builder(this);\n const childExtractor = _.isFunction(childAccessor) ? childAccessor : row => row[childAccessor];\n this.flattenedDataSource = this.registerDisposable(new FlattenedTreeListModel<Row>(source, childExtractor, this.treeExpansionModel));\n this.setDataSource(this.flattenedDataSource);\n\n this.addRowClass('aup-node-collapsed', row => this.isCollapsed(row));\n }\n\n treeControlColumn(builder: (column: TreeLabelColumnModel<Row>) => void) {\n const columnId = 'tree-label';\n const column = new TreeLabelColumnModel<Row>(columnId, () => this.getColumnTextProperties(columnId), this);\n builder(column);\n this.addColumn(column);\n }\n\n expand(node: Row) {\n this.treeExpansionModel.expand(node);\n }\n\n collapse(node: Row) {\n this.treeExpansionModel.collapse(node);\n }\n\n isCollapsed(node: Row): boolean {\n return this.treeExpansionModel.isCollapsed(node);\n }\n\n ensureAncestorsAndSelfVisible(node: Row) {\n this.treeExpansionModel.ensureAncestorsAndSelfVisible(node);\n }\n\n addSelectionColumn(selectionModel?: SelectionModel<Row>, showSelectionColumn?: ValueModel<boolean> | boolean): SelectionColumnModel<Row> {\n return this._addSelectionColumn(selectionModel, showSelectionColumn);\n }\n\n // saveSelection() {\n // const selectionModel = this.getSelectionModel();\n // if (selectionModel) {\n // let ids: any[] = [];\n // const selectedArea = selectionModel.leadSelection.value;\n // if (selectedArea) {\n // ids.push(selectedArea.id);\n // ids = ids.concat(selectedArea.siblingsAfter().map(a => a.id));\n // ids = ids.concat(selectedArea.siblingsBefore().reverse().map(a => a.id));\n // ids = ids.concat(selectedArea.ancestorsToZone().reverse().map(a => a.id));\n // }\n // this._storedSelection = ids;\n // }\n // }\n //\n // restoreSelection() {\n // const all = this.rootNodeModel.value.selfAndDescendants();\n // for (let i = 0; i < this._storedSelection.length; i++) {\n // const id = this._storedSelection[i];\n // const found = all.find(area => area.id === id);\n // if (found) {\n // this.selectedAreaId.value = found.id;\n // break;\n // }\n // }\n // }\n //\n // collapseAll(areas: T[]) {\n // this.collapsedAreaIds.value = [].concat(this.collapsedAreaIds.value, areas.map(a => a.id));\n // }\n\n // disableSelection(disable: boolean = true) {\n // this._disableSelection.value = disable;\n // }\n\n\n}\n\n\nexport namespace TreeTableModel {\n\n export interface Options<T, K extends keyof T> {\n storeIdIn: MutableValueModel<K>;\n }\n\n export type IconFactory<Row> = (node: Row, expanded: boolean, defaultIcon: string) => string;\n\n}\n\n\n// export class FlattenStrategy<T extends VisitableTree<any>> extends SelfAndDescendantsVisitor<T> {\n//\n// private _areas: T[] = [];\n// private _collapsed: Set<T>;\n//\n// constructor(private collapsedIds: T[]) {\n// super();\n// this._collapsed = new Set<T>(collapsedIds);\n// }\n//\n// protected onVisit(it: T) {\n// this._areas.push(it);\n// }\n//\n// protected shouldVisitChildrenOf(it: T): boolean {\n// return !this._collapsed.has(it);\n// }\n//\n// get flattenedAreas(): T[] {\n// return this._areas;\n// }\n//\n// }\n\n// class DecoratorCache {\n//\n// private map = new Map<number, T>();\n//\n// get(area:T): T {\n//\n// if (!area) return null;\n//\n// let decoratedArea = this.map.get(area.id);\n// if (!decoratedArea) {\n// decoratedArea = TreeModel.AreaDecorator.decorate(area);\n// this.map.set(area.id, decoratedArea);\n// }\n// return decoratedArea;\n// }\n//\n// clear() {\n// this.map.clear();\n// }\n//\n//\n// }\n\n\n\n\n"]}
1
+ {"version":3,"file":"tree-table-model.js","sourceRoot":"","sources":["../../../../../../../../libs/angular-ui-powerups/src/lib/components/tables/tree-table/tree-table-model.ts"],"names":[],"mappings":"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","sourcesContent":["import { ListModel, MutableValueModel, SelectionModel, ValueModel } from '@coolon/pectin';\n\nimport { isFunction } from 'lodash-es';\nimport { AbstractTableModel } from '../abstract-table-model';\nimport { SelectionColumnModel } from '../table/column-model';\nimport { FlattenedTreeListModel } from './flattened-tree-list-model';\nimport { TreeExpansionModel } from './tree-expansion-model';\nimport { TreeLabelColumnModel } from './tree-label-column-model';\n\nexport type ChildArrayPropertiesOf<T> = { [K in keyof T]: T[K] extends T[] ? K : never }[keyof T];\n\n// TODO:\n// Selection Models:\n// - as simple navigation tree\n// - as editable grid (selecte all, even hidden etc?)\n// - fixing selection on underlying model changes.\n// - rendering selection: row highlighting, checkboxes (in the tree renderer or in separate column), both.\n// Expansion Models:\n// - Add ability to auto show to depth\n// - Add a predicate to check default expansion (i.e. has children of a certain type)\n//\nexport class TreeTableModel<Row> extends AbstractTableModel<Row> {\n\n readonly treeExpansionModel = new TreeExpansionModel<Row>(row => this.identityOf(row));\n private readonly flattenedDataSource: FlattenedTreeListModel<Row>;\n\n constructor(source: ListModel<Row>, childAccessor: ChildArrayPropertiesOf<Row> | ((node: Row) => Row[]), builder?: (model: TreeTableModel<Row>) => void) {\n super();\n if (builder) builder(this);\n const childExtractor = isFunction(childAccessor) ? childAccessor : row => row[childAccessor];\n this.flattenedDataSource = this.registerDisposable(new FlattenedTreeListModel<Row>(source, childExtractor, this.treeExpansionModel));\n this.setDataSource(this.flattenedDataSource);\n\n this.addRowClass('aup-node-collapsed', row => this.isCollapsed(row));\n }\n\n treeControlColumn(builder: (column: TreeLabelColumnModel<Row>) => void) {\n const columnId = 'tree-label';\n const column = new TreeLabelColumnModel<Row>(columnId, () => this.getColumnTextProperties(columnId), this);\n builder(column);\n this.addColumn(column);\n }\n\n expand(node: Row) {\n this.treeExpansionModel.expand(node);\n }\n\n collapse(node: Row) {\n this.treeExpansionModel.collapse(node);\n }\n\n isCollapsed(node: Row): boolean {\n return this.treeExpansionModel.isCollapsed(node);\n }\n\n ensureAncestorsAndSelfVisible(node: Row) {\n this.treeExpansionModel.ensureAncestorsAndSelfVisible(node);\n }\n\n addSelectionColumn(selectionModel?: SelectionModel<Row>, showSelectionColumn?: ValueModel<boolean> | boolean): SelectionColumnModel<Row> {\n return this._addSelectionColumn(selectionModel, showSelectionColumn);\n }\n\n // saveSelection() {\n // const selectionModel = this.getSelectionModel();\n // if (selectionModel) {\n // let ids: any[] = [];\n // const selectedArea = selectionModel.leadSelection.value;\n // if (selectedArea) {\n // ids.push(selectedArea.id);\n // ids = ids.concat(selectedArea.siblingsAfter().map(a => a.id));\n // ids = ids.concat(selectedArea.siblingsBefore().reverse().map(a => a.id));\n // ids = ids.concat(selectedArea.ancestorsToZone().reverse().map(a => a.id));\n // }\n // this._storedSelection = ids;\n // }\n // }\n //\n // restoreSelection() {\n // const all = this.rootNodeModel.value.selfAndDescendants();\n // for (let i = 0; i < this._storedSelection.length; i++) {\n // const id = this._storedSelection[i];\n // const found = all.find(area => area.id === id);\n // if (found) {\n // this.selectedAreaId.value = found.id;\n // break;\n // }\n // }\n // }\n //\n // collapseAll(areas: T[]) {\n // this.collapsedAreaIds.value = [].concat(this.collapsedAreaIds.value, areas.map(a => a.id));\n // }\n\n // disableSelection(disable: boolean = true) {\n // this._disableSelection.value = disable;\n // }\n\n\n}\n\n\nexport namespace TreeTableModel {\n\n export interface Options<T, K extends keyof T> {\n storeIdIn: MutableValueModel<K>;\n }\n\n export type IconFactory<Row> = (node: Row, expanded: boolean, defaultIcon: string) => string;\n\n}\n\n\n// export class FlattenStrategy<T extends VisitableTree<any>> extends SelfAndDescendantsVisitor<T> {\n//\n// private _areas: T[] = [];\n// private _collapsed: Set<T>;\n//\n// constructor(private collapsedIds: T[]) {\n// super();\n// this._collapsed = new Set<T>(collapsedIds);\n// }\n//\n// protected onVisit(it: T) {\n// this._areas.push(it);\n// }\n//\n// protected shouldVisitChildrenOf(it: T): boolean {\n// return !this._collapsed.has(it);\n// }\n//\n// get flattenedAreas(): T[] {\n// return this._areas;\n// }\n//\n// }\n\n// class DecoratorCache {\n//\n// private map = new Map<number, T>();\n//\n// get(area:T): T {\n//\n// if (!area) return null;\n//\n// let decoratedArea = this.map.get(area.id);\n// if (!decoratedArea) {\n// decoratedArea = TreeModel.AreaDecorator.decorate(area);\n// this.map.set(area.id, decoratedArea);\n// }\n// return decoratedArea;\n// }\n//\n// clear() {\n// this.map.clear();\n// }\n//\n//\n// }\n\n\n\n\n"]}
@@ -1 +1 @@
1
- [{"__symbolic":"module","version":4,"metadata":{"ChildArrayPropertiesOf":{"__symbolic":"interface"},"TreeTableModel":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"../abstract-table-model","name":"AbstractTableModel","line":20,"character":41},"arity":1,"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@coolon/pectin","name":"ListModel","line":25,"character":22,"arguments":[{"__symbolic":"error","message":"Could not resolve type","line":25,"character":32,"context":{"typeName":"Row"}}]},{"__symbolic":"error","message":"Could not resolve type","line":25,"character":53,"context":{"typeName":"ChildArrayPropertiesOf"}},{"__symbolic":"error","message":"Expression form not supported","line":25,"character":117}]}],"treeControlColumn":[{"__symbolic":"method"}],"expand":[{"__symbolic":"method"}],"collapse":[{"__symbolic":"method"}],"isCollapsed":[{"__symbolic":"method"}],"ensureAncestorsAndSelfVisible":[{"__symbolic":"method"}],"addSelectionColumn":[{"__symbolic":"method"}]}}}}]
1
+ [{"__symbolic":"module","version":4,"metadata":{"ChildArrayPropertiesOf":{"__symbolic":"interface"},"TreeTableModel":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"../abstract-table-model","name":"AbstractTableModel","line":21,"character":41},"arity":1,"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@coolon/pectin","name":"ListModel","line":26,"character":22,"arguments":[{"__symbolic":"error","message":"Could not resolve type","line":26,"character":32,"context":{"typeName":"Row"}}]},{"__symbolic":"error","message":"Could not resolve type","line":26,"character":53,"context":{"typeName":"ChildArrayPropertiesOf"}},{"__symbolic":"error","message":"Expression form not supported","line":26,"character":117}]}],"treeControlColumn":[{"__symbolic":"method"}],"expand":[{"__symbolic":"method"}],"collapse":[{"__symbolic":"method"}],"isCollapsed":[{"__symbolic":"method"}],"ensureAncestorsAndSelfVisible":[{"__symbolic":"method"}],"addSelectionColumn":[{"__symbolic":"method"}]}}}}]
@@ -1,7 +1,7 @@
1
1
  import { __decorate, __metadata } from "tslib";
2
2
  import { Component, ElementRef, Inject, Input, PLATFORM_ID } from '@angular/core';
3
3
  import { Dsl, StoreInValueModel, TrackExternal, ValueModel } from '@coolon/pectin';
4
- import * as _ from 'lodash';
4
+ import { isEmpty, isNil } from 'lodash-es';
5
5
  import { MarkdownService } from '../../../services/markdown/markdown.service';
6
6
  import { DisposableComponent } from '../../disposable-component';
7
7
  // TODO: Look at using unified parser: https://javascript.plainenglish.io/markdown-to-angular-rendering-using-unified-and-remark-96835bb877
@@ -29,7 +29,7 @@ export class MarkdownComponent extends DisposableComponent {
29
29
  ngOnInit() {
30
30
  const { when } = Dsl.disposeWith(this);
31
31
  when(this.content$).changes(content => this.renderContent(content), { initialValue: 'triggerChangeUnlessNil' });
32
- if (_.isNil(this.content) && !_.isEmpty(this.element.nativeElement.innerHTML)) {
32
+ if (isNil(this.content) && !isEmpty(this.element.nativeElement.innerHTML)) {
33
33
  this.renderContent(this.extractInnerContent(this.element.nativeElement.innerHTML));
34
34
  }
35
35
  }
@@ -42,7 +42,7 @@ export class MarkdownComponent extends DisposableComponent {
42
42
  return lines.map(l => l.substr(prefix)).join('\n');
43
43
  }
44
44
  renderContent(content) {
45
- if (!_.isNil(content)) {
45
+ if (!isNil(content)) {
46
46
  const markdown = this.inline ?
47
47
  this.markdownService.renderInline(content) :
48
48
  this.markdownService.render(content);
@@ -1 +1 @@
1
- {"version":3,"file":"markdown.component.js","sourceRoot":"","sources":["../../../../../../../../libs/angular-ui-powerups/src/lib/components/text/markdown/markdown.component.ts"],"names":[],"mappings":"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","sourcesContent":["import { Component, ElementRef, Inject, Input, OnInit, PLATFORM_ID } from '@angular/core';\nimport { Dsl, StoreInValueModel, TrackExternal, ValueModel } from '@coolon/pectin';\nimport * as _ from 'lodash';\nimport { MarkdownService } from '../../../services/markdown/markdown.service';\nimport { DisposableComponent } from '../../disposable-component';\n\n\n// TODO: Look at using unified parser: https://javascript.plainenglish.io/markdown-to-angular-rendering-using-unified-and-remark-96835bb877\n/**\n * @example\n * <aup-markdown [content]=\"...\"></aup-markdown>\n * <aup-markdown [content$]=\"stringValueModel$\"></aup-markdown>\n * <aup-markdown ngPreserveWhitespaces>\n * # This is markdown content\n *\n * With a list\n * - a\n * - b\n * </aup-markdown>\n */\n@Component({\n selector: 'aup-markdown, [aupMarkdown]',\n templateUrl: './markdown.component.html',\n styleUrls: ['./markdown.component.scss']\n})\nexport class MarkdownComponent extends DisposableComponent implements OnInit {\n\n @Input()\n @TrackExternal()\n content$: ValueModel<string>;\n\n @Input()\n @StoreInValueModel('content$')\n content: string;\n\n @Input()\n inline = false;\n\n constructor(\n @Inject(PLATFORM_ID) private platform: Object,\n private readonly element: ElementRef<HTMLElement>,\n private readonly markdownService: MarkdownService) {\n super();\n const { chain } = Dsl.disposeWith(this);\n }\n\n ngOnInit() {\n const { when } = Dsl.disposeWith(this);\n when(this.content$).changes(content => this.renderContent(content), { initialValue: 'triggerChangeUnlessNil' });\n if (_.isNil(this.content) && !_.isEmpty(this.element.nativeElement.innerHTML)) {\n this.renderContent(this.extractInnerContent(this.element.nativeElement.innerHTML));\n }\n }\n\n private extractInnerContent(content: string) {\n const lines = content.split('\\n');\n const prefix = lines.reduce((minPrefix, line) => {\n const leadingWhitespace = line.search(/\\S/);\n return leadingWhitespace < 0 ? minPrefix : Math.min(minPrefix, leadingWhitespace);\n }, Number.MAX_SAFE_INTEGER);\n return lines.map(l => l.substr(prefix)).join('\\n');\n }\n\n private renderContent(content: string) {\n if (!_.isNil(content)) {\n const markdown = this.inline ?\n this.markdownService.renderInline(content) :\n this.markdownService.render(content);\n this.element.nativeElement.innerHTML = markdown;\n }\n }\n}\n"]}
1
+ {"version":3,"file":"markdown.component.js","sourceRoot":"","sources":["../../../../../../../../libs/angular-ui-powerups/src/lib/components/text/markdown/markdown.component.ts"],"names":[],"mappings":"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","sourcesContent":["import { Component, ElementRef, Inject, Input, OnInit, PLATFORM_ID } from '@angular/core';\nimport { Dsl, StoreInValueModel, TrackExternal, ValueModel } from '@coolon/pectin';\n\nimport { isEmpty, isNil } from 'lodash-es';\nimport { MarkdownService } from '../../../services/markdown/markdown.service';\nimport { DisposableComponent } from '../../disposable-component';\n\n\n// TODO: Look at using unified parser: https://javascript.plainenglish.io/markdown-to-angular-rendering-using-unified-and-remark-96835bb877\n/**\n * @example\n * <aup-markdown [content]=\"...\"></aup-markdown>\n * <aup-markdown [content$]=\"stringValueModel$\"></aup-markdown>\n * <aup-markdown ngPreserveWhitespaces>\n * # This is markdown content\n *\n * With a list\n * - a\n * - b\n * </aup-markdown>\n */\n@Component({\n selector: 'aup-markdown, [aupMarkdown]',\n templateUrl: './markdown.component.html',\n styleUrls: ['./markdown.component.scss']\n})\nexport class MarkdownComponent extends DisposableComponent implements OnInit {\n\n @Input()\n @TrackExternal()\n content$: ValueModel<string>;\n\n @Input()\n @StoreInValueModel('content$')\n content: string;\n\n @Input()\n inline = false;\n\n constructor(\n @Inject(PLATFORM_ID) private platform: Object,\n private readonly element: ElementRef<HTMLElement>,\n private readonly markdownService: MarkdownService) {\n super();\n const { chain } = Dsl.disposeWith(this);\n }\n\n ngOnInit() {\n const { when } = Dsl.disposeWith(this);\n when(this.content$).changes(content => this.renderContent(content), { initialValue: 'triggerChangeUnlessNil' });\n if (isNil(this.content) && !isEmpty(this.element.nativeElement.innerHTML)) {\n this.renderContent(this.extractInnerContent(this.element.nativeElement.innerHTML));\n }\n }\n\n private extractInnerContent(content: string) {\n const lines = content.split('\\n');\n const prefix = lines.reduce((minPrefix, line) => {\n const leadingWhitespace = line.search(/\\S/);\n return leadingWhitespace < 0 ? minPrefix : Math.min(minPrefix, leadingWhitespace);\n }, Number.MAX_SAFE_INTEGER);\n return lines.map(l => l.substr(prefix)).join('\\n');\n }\n\n private renderContent(content: string) {\n if (!isNil(content)) {\n const markdown = this.inline ?\n this.markdownService.renderInline(content) :\n this.markdownService.render(content);\n this.element.nativeElement.innerHTML = markdown;\n }\n }\n}\n"]}
@@ -1 +1 @@
1
- [{"__symbolic":"module","version":4,"metadata":{"MarkdownComponent":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"../../disposable-component","name":"DisposableComponent","line":25,"character":39},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":20,"character":1},"arguments":[{"selector":"aup-markdown, [aupMarkdown]","template":"<ng-content></ng-content>\n","styles":[":host{display:inline-block}\n"]}]}],"members":{"content$":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":27,"character":3}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@coolon/pectin","name":"TrackExternal","line":28,"character":3}}]}],"content":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":31,"character":3}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@coolon/pectin","name":"StoreInValueModel","line":32,"character":3},"arguments":["content$"]}]}],"inline":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":35,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":39,"character":5},"arguments":[{"__symbolic":"reference","module":"@angular/core","name":"PLATFORM_ID","line":39,"character":12}]}],null,null],"parameters":[{"__symbolic":"reference","name":"Object"},{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":40,"character":30,"arguments":[{"__symbolic":"error","message":"Could not resolve type","line":40,"character":41,"context":{"typeName":"HTMLElement"}}]},{"__symbolic":"reference","module":"../../../services/markdown/markdown.service","name":"MarkdownService","line":41,"character":38}]}],"ngOnInit":[{"__symbolic":"method"}],"extractInnerContent":[{"__symbolic":"method"}],"renderContent":[{"__symbolic":"method"}]}}}}]
1
+ [{"__symbolic":"module","version":4,"metadata":{"MarkdownComponent":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"../../disposable-component","name":"DisposableComponent","line":26,"character":39},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":21,"character":1},"arguments":[{"selector":"aup-markdown, [aupMarkdown]","template":"<ng-content></ng-content>\n","styles":[":host{display:inline-block}\n"]}]}],"members":{"content$":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":28,"character":3}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@coolon/pectin","name":"TrackExternal","line":29,"character":3}}]}],"content":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":32,"character":3}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@coolon/pectin","name":"StoreInValueModel","line":33,"character":3},"arguments":["content$"]}]}],"inline":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":36,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":40,"character":5},"arguments":[{"__symbolic":"reference","module":"@angular/core","name":"PLATFORM_ID","line":40,"character":12}]}],null,null],"parameters":[{"__symbolic":"reference","name":"Object"},{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":41,"character":30,"arguments":[{"__symbolic":"error","message":"Could not resolve type","line":41,"character":41,"context":{"typeName":"HTMLElement"}}]},{"__symbolic":"reference","module":"../../../services/markdown/markdown.service","name":"MarkdownService","line":42,"character":38}]}],"ngOnInit":[{"__symbolic":"method"}],"extractInnerContent":[{"__symbolic":"method"}],"renderContent":[{"__symbolic":"method"}]}}}}]
@@ -1,7 +1,7 @@
1
1
  import { Optional, Pipe } from '@angular/core';
2
2
  import { DomSanitizer } from '@angular/platform-browser';
3
3
  import { GarbageCollector } from '@coolon/pectin';
4
- import _ from 'lodash';
4
+ import { isEmpty, isString } from 'lodash-es';
5
5
  import { HighlightTextModelDirective } from './highlight-text-model.directive';
6
6
  export class HighlightPipe extends GarbageCollector {
7
7
  constructor(sanitizer, highlightContext) {
@@ -16,7 +16,7 @@ export class HighlightPipe extends GarbageCollector {
16
16
  var _a;
17
17
  const model = searchModel !== null && searchModel !== void 0 ? searchModel : (_a = this.highlightContext) === null || _a === void 0 ? void 0 : _a.aupHighlightTextModel;
18
18
  const searchText = model === null || model === void 0 ? void 0 : model.value;
19
- if (_.isEmpty(searchText) || !_.isString(value)) {
19
+ if (isEmpty(searchText) || !isString(value)) {
20
20
  return value;
21
21
  }
22
22
  // Match in a case insensitive manner
@@ -1 +1 @@
1
- {"version":3,"file":"highlight.pipe.js","sourceRoot":"","sources":["../../../../../../libs/angular-ui-powerups/src/lib/directives/highlight.pipe.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgC,QAAQ,EAAE,IAAI,EAAiB,MAAM,eAAe,CAAC;AAC5F,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAc,MAAM,gBAAgB,CAAC;AAC9D,OAAO,CAAC,MAAM,QAAQ,CAAC;AACvB,OAAO,EAAE,2BAA2B,EAAE,MAAM,kCAAkC,CAAC;AAO/E,MAAM,OAAO,aAAc,SAAQ,gBAAgB;IAEjD,YAAoB,SAAuB,EACF,gBAA8C;QACrF,KAAK,EAAE,CAAC;QAFU,cAAS,GAAT,SAAS,CAAc;QACF,qBAAgB,GAAhB,gBAAgB,CAA8B;IAEvF,CAAC;IAED,WAAW;QACT,IAAI,CAAC,OAAO,EAAE,CAAC;IACjB,CAAC;IAED,SAAS,CAAC,KAAU,EAAE,WAAgC;;QAEpD,MAAM,KAAK,GAAG,WAAW,aAAX,WAAW,cAAX,WAAW,GAAI,MAAA,IAAI,CAAC,gBAAgB,0CAAE,qBAAqB,CAAC;QAE1E,MAAM,UAAU,GAAW,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,KAAK,CAAC;QAExC,IAAI,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;YAC/C,OAAO,KAAK,CAAC;SACd;QAED,qCAAqC;QACrC,MAAM,EAAE,GAAG,IAAI,MAAM,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QACxC,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAE9B,uDAAuD;QACvD,IAAI,CAAC,KAAK,EAAE;YACV,OAAO,KAAK,CAAC;SACd;QAED,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,EAAE,EAAE,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC;QAClE,OAAO,IAAI,CAAC,SAAS,CAAC,uBAAuB,CAAC,MAAM,CAAC,CAAC;IACxD,CAAC;;;YApCF,IAAI,SAAC;gBACJ,IAAI,EAAE,cAAc;gBACpB,IAAI,EAAE,KAAK;aACZ;;;YATQ,YAAY;YAGZ,2BAA2B,uBAUrB,QAAQ","sourcesContent":["import { ChangeDetectorRef, OnDestroy, Optional, Pipe, PipeTransform } from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { GarbageCollector, ValueModel } from '@coolon/pectin';\nimport _ from 'lodash';\nimport { HighlightTextModelDirective } from './highlight-text-model.directive';\n\n\n@Pipe({\n name: 'aupHighlight',\n pure: false\n})\nexport class HighlightPipe extends GarbageCollector implements PipeTransform, OnDestroy {\n\n constructor(private sanitizer: DomSanitizer,\n @Optional() private readonly highlightContext?: HighlightTextModelDirective) {\n super();\n }\n\n ngOnDestroy(): void {\n this.dispose();\n }\n\n transform(value: any, searchModel?: ValueModel<string>): any {\n\n const model = searchModel ?? this.highlightContext?.aupHighlightTextModel;\n\n const searchText: string = model?.value;\n\n if (_.isEmpty(searchText) || !_.isString(value)) {\n return value;\n }\n\n // Match in a case insensitive manner\n const re = new RegExp(searchText, 'gi');\n const match = value.match(re);\n\n // If there's no match, just return the original value.\n if (!match) {\n return value;\n }\n\n const result = value.replace(re, '<mark>' + match[0] + '</mark>');\n return this.sanitizer.bypassSecurityTrustHtml(result);\n }\n}\n"]}
1
+ {"version":3,"file":"highlight.pipe.js","sourceRoot":"","sources":["../../../../../../libs/angular-ui-powerups/src/lib/directives/highlight.pipe.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgC,QAAQ,EAAE,IAAI,EAAiB,MAAM,eAAe,CAAC;AAC5F,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAc,MAAM,gBAAgB,CAAC;AAE9D,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,EAAE,2BAA2B,EAAE,MAAM,kCAAkC,CAAC;AAO/E,MAAM,OAAO,aAAc,SAAQ,gBAAgB;IAEjD,YAAoB,SAAuB,EACF,gBAA8C;QACrF,KAAK,EAAE,CAAC;QAFU,cAAS,GAAT,SAAS,CAAc;QACF,qBAAgB,GAAhB,gBAAgB,CAA8B;IAEvF,CAAC;IAED,WAAW;QACT,IAAI,CAAC,OAAO,EAAE,CAAC;IACjB,CAAC;IAED,SAAS,CAAC,KAAU,EAAE,WAAgC;;QAEpD,MAAM,KAAK,GAAG,WAAW,aAAX,WAAW,cAAX,WAAW,GAAI,MAAA,IAAI,CAAC,gBAAgB,0CAAE,qBAAqB,CAAC;QAE1E,MAAM,UAAU,GAAW,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,KAAK,CAAC;QAExC,IAAI,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;YAC3C,OAAO,KAAK,CAAC;SACd;QAED,qCAAqC;QACrC,MAAM,EAAE,GAAG,IAAI,MAAM,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QACxC,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAE9B,uDAAuD;QACvD,IAAI,CAAC,KAAK,EAAE;YACV,OAAO,KAAK,CAAC;SACd;QAED,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,EAAE,EAAE,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC;QAClE,OAAO,IAAI,CAAC,SAAS,CAAC,uBAAuB,CAAC,MAAM,CAAC,CAAC;IACxD,CAAC;;;YApCF,IAAI,SAAC;gBACJ,IAAI,EAAE,cAAc;gBACpB,IAAI,EAAE,KAAK;aACZ;;;YAVQ,YAAY;YAIZ,2BAA2B,uBAUrB,QAAQ","sourcesContent":["import { ChangeDetectorRef, OnDestroy, Optional, Pipe, PipeTransform } from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { GarbageCollector, ValueModel } from '@coolon/pectin';\n\nimport { isEmpty, isString } from 'lodash-es';\nimport { HighlightTextModelDirective } from './highlight-text-model.directive';\n\n\n@Pipe({\n name: 'aupHighlight',\n pure: false\n})\nexport class HighlightPipe extends GarbageCollector implements PipeTransform, OnDestroy {\n\n constructor(private sanitizer: DomSanitizer,\n @Optional() private readonly highlightContext?: HighlightTextModelDirective) {\n super();\n }\n\n ngOnDestroy(): void {\n this.dispose();\n }\n\n transform(value: any, searchModel?: ValueModel<string>): any {\n\n const model = searchModel ?? this.highlightContext?.aupHighlightTextModel;\n\n const searchText: string = model?.value;\n\n if (isEmpty(searchText) || !isString(value)) {\n return value;\n }\n\n // Match in a case insensitive manner\n const re = new RegExp(searchText, 'gi');\n const match = value.match(re);\n\n // If there's no match, just return the original value.\n if (!match) {\n return value;\n }\n\n const result = value.replace(re, '<mark>' + match[0] + '</mark>');\n return this.sanitizer.bypassSecurityTrustHtml(result);\n }\n}\n"]}
@@ -1 +1 @@
1
- [{"__symbolic":"module","version":4,"metadata":{"HighlightPipe":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@coolon/pectin","name":"GarbageCollector","line":11,"character":35},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Pipe","line":7,"character":1},"arguments":[{"name":"aupHighlight","pure":false}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":14,"character":15}}]],"parameters":[{"__symbolic":"reference","module":"@angular/platform-browser","name":"DomSanitizer","line":13,"character":33},{"__symbolic":"reference","module":"./highlight-text-model.directive","name":"HighlightTextModelDirective","line":14,"character":62}]}],"ngOnDestroy":[{"__symbolic":"method"}],"transform":[{"__symbolic":"method"}]}}}}]
1
+ [{"__symbolic":"module","version":4,"metadata":{"HighlightPipe":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@coolon/pectin","name":"GarbageCollector","line":12,"character":35},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Pipe","line":8,"character":1},"arguments":[{"name":"aupHighlight","pure":false}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":15,"character":15}}]],"parameters":[{"__symbolic":"reference","module":"@angular/platform-browser","name":"DomSanitizer","line":14,"character":33},{"__symbolic":"reference","module":"./highlight-text-model.directive","name":"HighlightTextModelDirective","line":15,"character":62}]}],"ngOnDestroy":[{"__symbolic":"method"}],"transform":[{"__symbolic":"method"}]}}}}]
@@ -1 +1 @@
1
- {"version":3,"file":"abstract-interaction-context.js","sourceRoot":"","sources":["../../../../../../libs/angular-ui-powerups/src/lib/interaction/abstract-interaction-context.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,8BAA8B,CAAC;AAGpD,OAAO,EAAE,oBAAoB,EAAE,MAAM,kDAAkD,CAAC;AACxF,OAAO,EAAE,0BAA0B,EAAE,MAAM,gEAAgE,CAAC;AAC5G,OAAO,EAAE,iCAAiC,EAAE,MAAM,gFAAgF,CAAC;AACnI,OAAO,EAAE,2BAA2B,EAAE,MAAM,gEAAgE,CAAC;AAK7G,MAAM,OAAgB,0BAA0B;IAa9C,aAAa,CAAU,YAA8C,EAAE,IAAQ,EAAE,OAAoC;QACnH,OAAO,IAAI,CAAC,uBAAuB,CAAC,YAAY,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC,CAAC;IAChH,CAAC;IAED,OAAO,CAAC,OAAgB;QACtB,0EAA0E;QAC1E,yEAAyE;QACzE,0CAA0C;QAC1C,OAAO,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC;IAC3E,CAAC;IAED,KAAK,CAAC,KAAY;QAChB,oCAAoC;QACpC,OAAO,IAAI,CAAC,uBAAuB,CAAC,oBAAoB,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;IAC1E,CAAC;IAED,eAAe,CAAC,OAAgB;QAC9B,OAAO,IAAI,CAAC,uBAAuB,CAAC,2BAA2B,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;IAClF,CAAC;IAED;;;;;OAKG;IACH,WAAW,CAAU,OAAgB,EAAE,YAA8C,EAAE,IAAQ;QAC7F,OAAO,IAAI,CAAC,uBAAuB,CAAiD,0BAA0B,EAAE;YAC9G,OAAO;YACP,YAAY,EAAE,YAAY;YAC1B,IAAI,EAAE,IAAI;SACX,EAAE,IAAI,CAAC,CAAC;IACX,CAAC;IAED,kBAAkB,CAAI,OAAgB,EAAE,SAAsE;QAC5G,OAAO,IAAI,CAAC,uBAAuB,CAAiE,iCAAiC,EAAE;YACrI,OAAO;YACP,SAAS,EAAE,SAAS;SACrB,EAAE,IAAI,CAAC,CAAC;IAEX,CAAC;CAIF","sourcesContent":["import { Constructable, Disposable } from '@coolon/pectin';\nimport { Opts } from '@coolon/typescript-utilities';\nimport { Activity } from './activity';\nimport { Alert } from './alert';\nimport { AlertDialogComponent } from './components/alert-dialog/alert-dialog.component';\nimport { ConfirmThenDialogComponent } from './components/confirm-then-dialog/confirm-then-dialog.component';\nimport { ConfirmThenExecuteDialogComponent } from './components/confirm-then-execute-dialog/confirm-then-execute-dialog.component';\nimport { ConfirmationDialogComponent } from './components/confirmation-dialog/confirmation-dialog.component';\nimport { Confirm } from './confirm';\nimport { InteractionContext } from './interaction-context';\nimport * as _ from 'lodash';\n\nexport abstract class AbstractInteractionContext implements InteractionContext {\n abstract readonly identifier: string;\n\n abstract cancelActiveActivity(): Promise<boolean>;\n\n abstract dispose(): void;\n\n abstract registerDisposable<T extends Disposable>(disposable: T): T;\n\n abstract isActive(): boolean;\n\n protected abstract createAndLaunchActivity<D, R, E>(activityType: Constructable<Activity<D, R, E>>, data: D, disableClose: boolean): Promise<R>;\n\n startActivity<D, R, E>(activityType: Constructable<Activity<D, R, E>>, data?: D, options?: InteractionContext.Options): Promise<R> {\n return this.createAndLaunchActivity(activityType, data, Opts.get(options).getOptional('disableClose', false));\n }\n\n confirm(confirm: Confirm): Promise<boolean> {\n // Important: we have to implement confirmOrReject as the main entry point\n // as the canDeactivation guards need to be able to cancel an interaction\n // without caring about returning a value.\n return this.confirmOrReject(confirm).then(() => true).catch(() => false);\n }\n\n alert(alert: Alert): Promise<void> {\n // TODO: Test disableClose === false\n return this.createAndLaunchActivity(AlertDialogComponent, alert, false);\n }\n\n confirmOrReject(confirm: Confirm): Promise<void> {\n return this.createAndLaunchActivity(ConfirmationDialogComponent, confirm, true);\n }\n\n /**\n * Presents the confirmation to the user and runs the activity only if the user confirms.\n * @param confirm:Confirm the confirmation to display.\n * @param activityType the activity to run if confirmed.\n * @param data the activity data.\n */\n confirmThen<D, R, E>(confirm: Confirm, activityType: Constructable<Activity<D, R, E>>, data?: D): Promise<R> {\n return this.createAndLaunchActivity<ConfirmThenDialogComponent.Data<D, R, E>, R, E>(ConfirmThenDialogComponent, {\n confirm,\n activityType: activityType,\n data: data\n }, true);\n }\n\n confirmThenExecute<R>(confirm: Confirm, operation: (interactionContext:InteractionContext) => (Promise<R> | R)): Promise<R> {\n return this.createAndLaunchActivity<ConfirmThenExecuteDialogComponent.Data<R, unknown>, R, unknown>(ConfirmThenExecuteDialogComponent, {\n confirm,\n operation: operation\n }, true);\n\n }\n\n\n\n}\n"]}
1
+ {"version":3,"file":"abstract-interaction-context.js","sourceRoot":"","sources":["../../../../../../libs/angular-ui-powerups/src/lib/interaction/abstract-interaction-context.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,8BAA8B,CAAC;AAGpD,OAAO,EAAE,oBAAoB,EAAE,MAAM,kDAAkD,CAAC;AACxF,OAAO,EAAE,0BAA0B,EAAE,MAAM,gEAAgE,CAAC;AAC5G,OAAO,EAAE,iCAAiC,EAAE,MAAM,gFAAgF,CAAC;AACnI,OAAO,EAAE,2BAA2B,EAAE,MAAM,gEAAgE,CAAC;AAK7G,MAAM,OAAgB,0BAA0B;IAa9C,aAAa,CAAU,YAA8C,EAAE,IAAQ,EAAE,OAAoC;QACnH,OAAO,IAAI,CAAC,uBAAuB,CAAC,YAAY,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC,CAAC;IAChH,CAAC;IAED,OAAO,CAAC,OAAgB;QACtB,0EAA0E;QAC1E,yEAAyE;QACzE,0CAA0C;QAC1C,OAAO,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC;IAC3E,CAAC;IAED,KAAK,CAAC,KAAY;QAChB,oCAAoC;QACpC,OAAO,IAAI,CAAC,uBAAuB,CAAC,oBAAoB,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;IAC1E,CAAC;IAED,eAAe,CAAC,OAAgB;QAC9B,OAAO,IAAI,CAAC,uBAAuB,CAAC,2BAA2B,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;IAClF,CAAC;IAED;;;;;OAKG;IACH,WAAW,CAAU,OAAgB,EAAE,YAA8C,EAAE,IAAQ;QAC7F,OAAO,IAAI,CAAC,uBAAuB,CAAiD,0BAA0B,EAAE;YAC9G,OAAO;YACP,YAAY,EAAE,YAAY;YAC1B,IAAI,EAAE,IAAI;SACX,EAAE,IAAI,CAAC,CAAC;IACX,CAAC;IAED,kBAAkB,CAAI,OAAgB,EAAE,SAAsE;QAC5G,OAAO,IAAI,CAAC,uBAAuB,CAAiE,iCAAiC,EAAE;YACrI,OAAO;YACP,SAAS,EAAE,SAAS;SACrB,EAAE,IAAI,CAAC,CAAC;IAEX,CAAC;CAIF","sourcesContent":["import { Constructable, Disposable } from '@coolon/pectin';\nimport { Opts } from '@coolon/typescript-utilities';\nimport { Activity } from './activity';\nimport { Alert } from './alert';\nimport { AlertDialogComponent } from './components/alert-dialog/alert-dialog.component';\nimport { ConfirmThenDialogComponent } from './components/confirm-then-dialog/confirm-then-dialog.component';\nimport { ConfirmThenExecuteDialogComponent } from './components/confirm-then-execute-dialog/confirm-then-execute-dialog.component';\nimport { ConfirmationDialogComponent } from './components/confirmation-dialog/confirmation-dialog.component';\nimport { Confirm } from './confirm';\nimport { InteractionContext } from './interaction-context';\n\n\nexport abstract class AbstractInteractionContext implements InteractionContext {\n abstract readonly identifier: string;\n\n abstract cancelActiveActivity(): Promise<boolean>;\n\n abstract dispose(): void;\n\n abstract registerDisposable<T extends Disposable>(disposable: T): T;\n\n abstract isActive(): boolean;\n\n protected abstract createAndLaunchActivity<D, R, E>(activityType: Constructable<Activity<D, R, E>>, data: D, disableClose: boolean): Promise<R>;\n\n startActivity<D, R, E>(activityType: Constructable<Activity<D, R, E>>, data?: D, options?: InteractionContext.Options): Promise<R> {\n return this.createAndLaunchActivity(activityType, data, Opts.get(options).getOptional('disableClose', false));\n }\n\n confirm(confirm: Confirm): Promise<boolean> {\n // Important: we have to implement confirmOrReject as the main entry point\n // as the canDeactivation guards need to be able to cancel an interaction\n // without caring about returning a value.\n return this.confirmOrReject(confirm).then(() => true).catch(() => false);\n }\n\n alert(alert: Alert): Promise<void> {\n // TODO: Test disableClose === false\n return this.createAndLaunchActivity(AlertDialogComponent, alert, false);\n }\n\n confirmOrReject(confirm: Confirm): Promise<void> {\n return this.createAndLaunchActivity(ConfirmationDialogComponent, confirm, true);\n }\n\n /**\n * Presents the confirmation to the user and runs the activity only if the user confirms.\n * @param confirm:Confirm the confirmation to display.\n * @param activityType the activity to run if confirmed.\n * @param data the activity data.\n */\n confirmThen<D, R, E>(confirm: Confirm, activityType: Constructable<Activity<D, R, E>>, data?: D): Promise<R> {\n return this.createAndLaunchActivity<ConfirmThenDialogComponent.Data<D, R, E>, R, E>(ConfirmThenDialogComponent, {\n confirm,\n activityType: activityType,\n data: data\n }, true);\n }\n\n confirmThenExecute<R>(confirm: Confirm, operation: (interactionContext:InteractionContext) => (Promise<R> | R)): Promise<R> {\n return this.createAndLaunchActivity<ConfirmThenExecuteDialogComponent.Data<R, unknown>, R, unknown>(ConfirmThenExecuteDialogComponent, {\n confirm,\n operation: operation\n }, true);\n\n }\n\n\n\n}\n"]}
@@ -1,4 +1,4 @@
1
- import * as _ from 'lodash';
1
+ import { isFunction } from 'lodash-es';
2
2
  export var Alert;
3
3
  (function (Alert) {
4
4
  function getContent(alert) {
@@ -7,11 +7,11 @@ export var Alert;
7
7
  }
8
8
  Alert.getContent = getContent;
9
9
  function getTitle(alert) {
10
- return _.isFunction(alert.title) ? alert.title() : undefined;
10
+ return isFunction(alert.title) ? alert.title() : undefined;
11
11
  }
12
12
  Alert.getTitle = getTitle;
13
13
  function getColor(alert) {
14
- return _.isFunction(alert.color) ? alert.color() : undefined;
14
+ return isFunction(alert.color) ? alert.color() : undefined;
15
15
  }
16
16
  Alert.getColor = getColor;
17
17
  })(Alert || (Alert = {}));