UNPKG

@taiga-ui/cdk

Version:

Base library for creating Angular components and applications using Taiga UI principles regarding of actual visual appearance

1 lines 3.7 kB
{"version":3,"file":"taiga-ui-cdk-directives-repeat-times.mjs","sources":["../../../projects/cdk/directives/repeat-times/repeat-times.directive.ts","../../../projects/cdk/directives/repeat-times/taiga-ui-cdk-directives-repeat-times.ts"],"sourcesContent":["import {Directive, inject, Input, TemplateRef, ViewContainerRef} from '@angular/core';\nimport {type TuiContext} from '@taiga-ui/cdk/types';\nimport {tuiClamp} from '@taiga-ui/cdk/utils/math';\n\nconst MAX_VALUE = 0x10000;\n\nexport class TuiRepeatTimesContext implements TuiContext<number> {\n constructor(public readonly $implicit: number) {}\n}\n\n/**\n * Directive similar to ngFor but using a number of repetitions rather than an array\n *\n * {@link TuiRepeatTimes.tuiRepeatTimesOf requested number of times}.\n * {@link TuiRepeatTimesContext context} for every instance of the template inherits outer context and stores\n * {@link TuiRepeatTimesContext.$implicit index} of a template instance.\n */\n@Directive({\n standalone: true,\n selector: '[tuiRepeatTimes][tuiRepeatTimesOf]',\n})\nexport class TuiRepeatTimes {\n private readonly viewContainer = inject(ViewContainerRef);\n private readonly templateRef = inject(TemplateRef<TuiRepeatTimesContext>);\n\n @Input()\n public set tuiRepeatTimesOf(count: number) {\n const safeCount = Math.floor(tuiClamp(count, 0, MAX_VALUE));\n\n const {length} = this.viewContainer;\n\n if (count < length) {\n this.removeContainers(length - count);\n } else {\n this.addContainers(safeCount);\n }\n }\n\n private addContainers(count: number): void {\n for (let index = this.viewContainer.length; index < count; index++) {\n this.viewContainer.createEmbeddedView<TuiRepeatTimesContext>(\n this.templateRef,\n new TuiRepeatTimesContext(index),\n );\n }\n }\n\n private removeContainers(amount: number): void {\n for (let index = 0; index < amount; index++) {\n this.viewContainer.remove();\n }\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;AAIA,MAAM,SAAS,GAAG,OAAO,CAAC;MAEb,qBAAqB,CAAA;AAC9B,IAAA,WAAA,CAA4B,SAAiB,EAAA;QAAjB,IAAS,CAAA,SAAA,GAAT,SAAS,CAAQ;KAAI;AACpD,CAAA;AAED;;;;;;AAMG;AACH,MAIa,cAAc,CAAA;AAJ3B,IAAA,WAAA,GAAA;AAKqB,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAC;AACzC,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,EAAC,WAAkC,EAAC,CAAC;AA6B7E,KAAA;IA3BG,IACW,gBAAgB,CAAC,KAAa,EAAA;AACrC,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC;AAE5D,QAAA,MAAM,EAAC,MAAM,EAAC,GAAG,IAAI,CAAC,aAAa,CAAC;QAEpC,IAAI,KAAK,GAAG,MAAM,EAAE;AAChB,YAAA,IAAI,CAAC,gBAAgB,CAAC,MAAM,GAAG,KAAK,CAAC,CAAC;AACzC,SAAA;AAAM,aAAA;AACH,YAAA,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;AACjC,SAAA;KACJ;AAEO,IAAA,aAAa,CAAC,KAAa,EAAA;AAC/B,QAAA,KAAK,IAAI,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,KAAK,GAAG,KAAK,EAAE,KAAK,EAAE,EAAE;AAChE,YAAA,IAAI,CAAC,aAAa,CAAC,kBAAkB,CACjC,IAAI,CAAC,WAAW,EAChB,IAAI,qBAAqB,CAAC,KAAK,CAAC,CACnC,CAAC;AACL,SAAA;KACJ;AAEO,IAAA,gBAAgB,CAAC,MAAc,EAAA;QACnC,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,MAAM,EAAE,KAAK,EAAE,EAAE;AACzC,YAAA,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC;AAC/B,SAAA;KACJ;+GA9BQ,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;mGAAd,cAAc,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oCAAA,EAAA,MAAA,EAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;4FAAd,cAAc,EAAA,UAAA,EAAA,CAAA;kBAJ1B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,oCAAoC;AACjD,iBAAA,CAAA;8BAMc,gBAAgB,EAAA,CAAA;sBAD1B,KAAK;;;ACzBV;;AAEG;;;;"}