@lluc_llull/ui-lib 0.33.1 → 0.33.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.
- package/directives/link-type.directive.d.ts +9 -7
- package/fesm2022/lluc_llull-ui-lib-directives.mjs +25 -23
- package/fesm2022/lluc_llull-ui-lib-directives.mjs.map +1 -1
- package/fesm2022/lluc_llull-ui-lib-utils.mjs +3 -8
- package/fesm2022/lluc_llull-ui-lib-utils.mjs.map +1 -1
- package/package.json +1 -1
- package/utils/utils.d.ts +1 -1
|
@@ -1,21 +1,23 @@
|
|
|
1
|
-
import { ElementRef, EventEmitter
|
|
1
|
+
import { ElementRef, EventEmitter } from '@angular/core';
|
|
2
2
|
import { Router } from '@angular/router';
|
|
3
3
|
import { LinkType } from '@lluc_llull/ui-lib/enums';
|
|
4
4
|
import * as i0 from "@angular/core";
|
|
5
|
-
export declare class LinkTypeDirective
|
|
5
|
+
export declare class LinkTypeDirective {
|
|
6
6
|
private readonly router;
|
|
7
7
|
private readonly elRef;
|
|
8
8
|
private platformId;
|
|
9
|
-
|
|
10
|
-
|
|
9
|
+
private _linkType?;
|
|
10
|
+
private _href?;
|
|
11
|
+
set linkType(value: LinkType | undefined);
|
|
12
|
+
get linkType(): LinkType | undefined;
|
|
13
|
+
set href(value: string | undefined);
|
|
14
|
+
get href(): string;
|
|
11
15
|
anchorClicked: EventEmitter<void>;
|
|
12
16
|
constructor(router: Router, elRef: ElementRef<HTMLAnchorElement>, platformId: Object);
|
|
13
17
|
get isBrowser(): boolean;
|
|
14
|
-
ngOnInit(): void;
|
|
15
18
|
onClick(event: Event): void;
|
|
16
|
-
private
|
|
19
|
+
private updateElementAttributes;
|
|
17
20
|
private resolveHref;
|
|
18
|
-
private navigateInternal;
|
|
19
21
|
private getCurrentLang;
|
|
20
22
|
private scrollToAnchor;
|
|
21
23
|
static ɵfac: i0.ɵɵFactoryDeclaration<LinkTypeDirective, never>;
|
|
@@ -8,8 +8,18 @@ class LinkTypeDirective {
|
|
|
8
8
|
router;
|
|
9
9
|
elRef;
|
|
10
10
|
platformId;
|
|
11
|
-
|
|
12
|
-
|
|
11
|
+
_linkType;
|
|
12
|
+
_href;
|
|
13
|
+
set linkType(value) {
|
|
14
|
+
this._linkType = value;
|
|
15
|
+
this.updateElementAttributes();
|
|
16
|
+
}
|
|
17
|
+
get linkType() { return this._linkType; }
|
|
18
|
+
set href(value) {
|
|
19
|
+
this._href = value;
|
|
20
|
+
this.updateElementAttributes();
|
|
21
|
+
}
|
|
22
|
+
get href() { return this._href ?? ''; }
|
|
13
23
|
anchorClicked = new EventEmitter();
|
|
14
24
|
constructor(router, elRef, platformId) {
|
|
15
25
|
this.router = router;
|
|
@@ -19,16 +29,15 @@ class LinkTypeDirective {
|
|
|
19
29
|
get isBrowser() {
|
|
20
30
|
return isPlatformBrowser(this.platformId);
|
|
21
31
|
}
|
|
22
|
-
ngOnInit() {
|
|
23
|
-
this.setupAttributes();
|
|
24
|
-
}
|
|
25
32
|
onClick(event) {
|
|
26
33
|
if (!this.linkType || !this.href)
|
|
27
34
|
return;
|
|
28
35
|
switch (this.linkType) {
|
|
29
36
|
case 'internal':
|
|
30
37
|
event.preventDefault();
|
|
31
|
-
this.
|
|
38
|
+
const targetUrl = this.elRef.nativeElement.getAttribute('href') ?? this.href;
|
|
39
|
+
this.router.navigateByUrl(targetUrl);
|
|
40
|
+
this.anchorClicked.emit();
|
|
32
41
|
break;
|
|
33
42
|
case 'anchor':
|
|
34
43
|
event.preventDefault();
|
|
@@ -43,22 +52,25 @@ class LinkTypeDirective {
|
|
|
43
52
|
break;
|
|
44
53
|
}
|
|
45
54
|
}
|
|
46
|
-
|
|
55
|
+
updateElementAttributes() {
|
|
47
56
|
const element = this.elRef.nativeElement;
|
|
48
|
-
|
|
49
|
-
|
|
57
|
+
if (!this.href) {
|
|
58
|
+
element.removeAttribute('href');
|
|
50
59
|
return;
|
|
60
|
+
}
|
|
61
|
+
const resolvedHref = this.resolveHref();
|
|
51
62
|
element.setAttribute('href', resolvedHref);
|
|
52
63
|
if (this.linkType === 'external' || this.linkType === 'pdf') {
|
|
53
64
|
element.setAttribute('target', '_blank');
|
|
54
65
|
element.setAttribute('rel', 'noopener noreferrer nofollow');
|
|
55
66
|
}
|
|
67
|
+
else {
|
|
68
|
+
element.removeAttribute('target');
|
|
69
|
+
element.removeAttribute('rel');
|
|
70
|
+
}
|
|
56
71
|
}
|
|
57
72
|
resolveHref() {
|
|
58
|
-
if (
|
|
59
|
-
return '';
|
|
60
|
-
// si ya es absoluta, no tocarla
|
|
61
|
-
if (this.href.startsWith('/')) {
|
|
73
|
+
if (this.href.startsWith('/') || this.href.startsWith('http') || this.href.startsWith('#')) {
|
|
62
74
|
return this.href;
|
|
63
75
|
}
|
|
64
76
|
if (this.linkType === 'internal') {
|
|
@@ -67,16 +79,6 @@ class LinkTypeDirective {
|
|
|
67
79
|
}
|
|
68
80
|
return this.href;
|
|
69
81
|
}
|
|
70
|
-
navigateInternal(url) {
|
|
71
|
-
// si ya es absoluta, navega directamente
|
|
72
|
-
if (url.startsWith('/')) {
|
|
73
|
-
this.router.navigateByUrl(url);
|
|
74
|
-
return;
|
|
75
|
-
}
|
|
76
|
-
const lang = this.getCurrentLang();
|
|
77
|
-
this.anchorClicked.emit();
|
|
78
|
-
this.router.navigate(['/', lang, url]);
|
|
79
|
-
}
|
|
80
82
|
getCurrentLang() {
|
|
81
83
|
const url = this.router.url || '';
|
|
82
84
|
const firstSegment = url.split('?')[0].split('#')[0].split('/')[1];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lluc_llull-ui-lib-directives.mjs","sources":["../../../projects/ui-lib/directives/link-type.directive.ts","../../../projects/ui-lib/directives/highlight.directive.ts","../../../projects/ui-lib/directives/scroll-reveal.directive.ts","../../../projects/ui-lib/directives/header-scroll.directive.ts","../../../projects/ui-lib/directives/lluc_llull-ui-lib-directives.ts"],"sourcesContent":["import { isPlatformBrowser } from '@angular/common';\nimport {\n Directive,\n ElementRef,\n EventEmitter,\n HostListener,\n Inject,\n Input,\n OnInit,\n Output,\n PLATFORM_ID,\n} from '@angular/core';\nimport { Router } from '@angular/router';\nimport { LinkType } from '@lluc_llull/ui-lib/enums';\n\n@Directive({\n selector: '[linkType]',\n standalone: true,\n})\nexport class LinkTypeDirective implements OnInit {\n @Input() linkType?: LinkType;\n @Input() href?: string;\n @Output() anchorClicked = new EventEmitter<void>();\n\n constructor(\n private readonly router: Router,\n private readonly elRef: ElementRef<HTMLAnchorElement>,\n @Inject(PLATFORM_ID) private platformId: Object,\n ) {}\n\n get isBrowser(): boolean {\n return isPlatformBrowser(this.platformId);\n }\n\n ngOnInit(): void {\n this.setupAttributes();\n }\n\n @HostListener('click', ['$event'])\n onClick(event: Event): void {\n if (!this.linkType || !this.href) return;\n\n switch (this.linkType) {\n case 'internal':\n event.preventDefault();\n this.navigateInternal(this.href);\n break;\n\n case 'anchor':\n event.preventDefault();\n this.scrollToAnchor(this.href);\n break;\n\n case 'nolink':\n event.preventDefault();\n break;\n\n case 'external':\n case 'pdf':\n default:\n break;\n }\n }\n\n private setupAttributes(): void {\n const element = this.elRef.nativeElement;\n const resolvedHref = this.resolveHref();\n\n if (!resolvedHref) return;\n\n element.setAttribute('href', resolvedHref);\n\n if (this.linkType === 'external' || this.linkType === 'pdf') {\n element.setAttribute('target', '_blank');\n element.setAttribute('rel', 'noopener noreferrer nofollow');\n }\n }\n\n private resolveHref(): string {\n if (!this.href) return '';\n\n // si ya es absoluta, no tocarla\n if (this.href.startsWith('/')) {\n return this.href;\n }\n\n if (this.linkType === 'internal') {\n const lang = this.getCurrentLang();\n return `/${lang}/${this.href}`;\n }\n\n return this.href;\n }\n\n private navigateInternal(url: string): void {\n // si ya es absoluta, navega directamente\n if (url.startsWith('/')) {\n this.router.navigateByUrl(url);\n return;\n }\n\n const lang = this.getCurrentLang();\n\n this.anchorClicked.emit();\n this.router.navigate(['/', lang, url]);\n }\n\n private getCurrentLang(): string {\n const url = this.router.url || '';\n const firstSegment = url.split('?')[0].split('#')[0].split('/')[1];\n return firstSegment || 'es';\n }\n\n private scrollToAnchor(id: string): void {\n if (!this.isBrowser) return;\n\n const cleanId = id.replace(/^#/, '');\n const el = document.getElementById(cleanId);\n if (!el) return;\n\n const yOffset = -160;\n const y = el.getBoundingClientRect().top + window.scrollY + yOffset;\n\n window.scrollTo({\n top: y,\n behavior: 'smooth',\n });\n\n this.anchorClicked.emit();\n }\n}\n\nexport { LinkType };\n\n","import { Directive, HostBinding, Input } from '@angular/core';\n\n@Directive({\n selector: '[highlight]',\n standalone: true,\n})\nexport class HighlightDirective {\n @Input('highlight') highlightColor: string = '#FFFFFF';\n @Input() highlightThickness: number = 20;\n\n @HostBinding('style.background-image')\n get background() {\n const start = 65;\n const end = start + this.highlightThickness;\n\n return `linear-gradient(to bottom, \n transparent ${start}%, \n ${this.highlightColor} ${start}%, \n ${this.highlightColor} ${end}%, \n transparent ${end}%)`;\n }\n\n @HostBinding('style.background-size') size = '100% 100%';\n @HostBinding('style.display') display = 'inline';\n\n // desplazamiento\n @HostBinding('style.padding') padding = '0 10px';\n @HostBinding('style.margin') margin = '0 -10px'; // Compensa el padding para no mover el texto\n @HostBinding('style.box-decoration-break') break = 'clone';\n @HostBinding('style.-webkit-box-decoration-break') wBreak = 'clone';\n}\n","import { isPlatformBrowser } from '@angular/common';\nimport { Directive, ElementRef, Inject, Input, OnInit, PLATFORM_ID, Renderer2 } from '@angular/core';\n\n@Directive({\n selector: '[scrollReveal]',\n standalone: true,\n})\nexport class ScrollRevealDirective implements OnInit {\n @Input() distance = '30px';\n @Input() duration = '0.8s';\n\n constructor(\n private el: ElementRef,\n private renderer: Renderer2,\n @Inject(PLATFORM_ID) private platformId: Object,\n ) {}\n\n ngOnInit() {\n this.setupInitialStyles();\n\n const isBrowser = isPlatformBrowser(this.platformId);\n const hasIntersectionObserver =\n typeof globalThis !== 'undefined' && 'IntersectionObserver' in globalThis;\n\n if (!isBrowser || !hasIntersectionObserver) {\n this.reveal();\n return;\n }\n\n const observer = new IntersectionObserver(\n (entries) => {\n entries.forEach((entry) => {\n if (entry.isIntersecting) {\n this.reveal();\n observer.unobserve(this.el.nativeElement);\n }\n });\n },\n { threshold: 0.1 },\n ); // Se dispara cuando el 10% del componente es visible\n\n observer.observe(this.el.nativeElement);\n }\n\n private setupInitialStyles() {\n this.renderer.setStyle(this.el.nativeElement, 'opacity', '0');\n this.renderer.setStyle(this.el.nativeElement, 'transform', `translateY(-${this.distance})`);\n this.renderer.setStyle(\n this.el.nativeElement,\n 'transition',\n `all ${this.duration} ease-out`,\n );\n }\n\n private reveal() {\n this.renderer.setStyle(this.el.nativeElement, 'opacity', '1');\n this.renderer.setStyle(this.el.nativeElement, 'transform', 'translateY(0)');\n }\n}\n","import { Directive, HostListener, HostBinding, Input } from '@angular/core';\n\n@Directive({\n selector: '[headerScroll]',\n standalone: true,\n})\nexport class HeaderScrollDirective {\n @Input() scrollThreshold = 60;\n\n @HostBinding('class.is-scrolled') isScrolled = false;\n\n @HostListener('window:scroll', [])\n onScroll(): void {\n this.isScrolled = window.scrollY > this.scrollThreshold;\n }\n}","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"lluc_llull-ui-lib-directives.mjs","sources":["../../../projects/ui-lib/directives/link-type.directive.ts","../../../projects/ui-lib/directives/highlight.directive.ts","../../../projects/ui-lib/directives/scroll-reveal.directive.ts","../../../projects/ui-lib/directives/header-scroll.directive.ts","../../../projects/ui-lib/directives/lluc_llull-ui-lib-directives.ts"],"sourcesContent":["import { isPlatformBrowser } from '@angular/common';\nimport {\n Directive,\n ElementRef,\n EventEmitter,\n HostListener,\n Inject,\n Input,\n Output,\n PLATFORM_ID,\n} from '@angular/core';\nimport { Router } from '@angular/router';\nimport { LinkType } from '@lluc_llull/ui-lib/enums';\n\n@Directive({\n selector: '[linkType]',\n standalone: true,\n})\nexport class LinkTypeDirective {\n private _linkType?: LinkType;\n private _href?: string;\n\n @Input() \n set linkType(value: LinkType | undefined) {\n this._linkType = value;\n this.updateElementAttributes();\n }\n get linkType(): LinkType | undefined { return this._linkType; }\n\n @Input() \n set href(value: string | undefined) {\n this._href = value;\n this.updateElementAttributes();\n }\n get href(): string { return this._href ?? ''; }\n\n @Output() anchorClicked = new EventEmitter<void>();\n\n constructor(\n private readonly router: Router,\n private readonly elRef: ElementRef<HTMLAnchorElement>,\n @Inject(PLATFORM_ID) private platformId: Object,\n ) {}\n\n get isBrowser(): boolean {\n return isPlatformBrowser(this.platformId);\n }\n\n @HostListener('click', ['$event'])\n onClick(event: Event): void {\n if (!this.linkType || !this.href) return;\n\n switch (this.linkType) {\n case 'internal':\n event.preventDefault();\n const targetUrl = this.elRef.nativeElement.getAttribute('href') ?? this.href;\n this.router.navigateByUrl(targetUrl);\n this.anchorClicked.emit();\n break;\n\n case 'anchor':\n event.preventDefault();\n this.scrollToAnchor(this.href);\n break;\n\n case 'nolink':\n event.preventDefault();\n break;\n\n case 'external':\n case 'pdf':\n default:\n break;\n }\n }\n\n private updateElementAttributes(): void {\n const element = this.elRef.nativeElement;\n if (!this.href) {\n element.removeAttribute('href');\n return;\n }\n\n const resolvedHref = this.resolveHref();\n element.setAttribute('href', resolvedHref);\n\n if (this.linkType === 'external' || this.linkType === 'pdf') {\n element.setAttribute('target', '_blank');\n element.setAttribute('rel', 'noopener noreferrer nofollow');\n } else {\n element.removeAttribute('target');\n element.removeAttribute('rel');\n }\n }\n\n private resolveHref(): string {\n if (this.href.startsWith('/') || this.href.startsWith('http') || this.href.startsWith('#')) {\n return this.href;\n }\n\n if (this.linkType === 'internal') {\n const lang = this.getCurrentLang();\n return `/${lang}/${this.href}`;\n }\n\n return this.href;\n }\n\n private getCurrentLang(): string {\n const url = this.router.url || '';\n const firstSegment = url.split('?')[0].split('#')[0].split('/')[1];\n return firstSegment || 'es';\n }\n\n private scrollToAnchor(id: string): void {\n if (!this.isBrowser) return;\n\n const cleanId = id.replace(/^#/, '');\n const el = document.getElementById(cleanId);\n if (!el) return;\n\n const yOffset = -160;\n const y = el.getBoundingClientRect().top + window.scrollY + yOffset;\n\n window.scrollTo({\n top: y,\n behavior: 'smooth',\n });\n\n this.anchorClicked.emit();\n }\n}\nexport { LinkType };","import { Directive, HostBinding, Input } from '@angular/core';\n\n@Directive({\n selector: '[highlight]',\n standalone: true,\n})\nexport class HighlightDirective {\n @Input('highlight') highlightColor: string = '#FFFFFF';\n @Input() highlightThickness: number = 20;\n\n @HostBinding('style.background-image')\n get background() {\n const start = 65;\n const end = start + this.highlightThickness;\n\n return `linear-gradient(to bottom, \n transparent ${start}%, \n ${this.highlightColor} ${start}%, \n ${this.highlightColor} ${end}%, \n transparent ${end}%)`;\n }\n\n @HostBinding('style.background-size') size = '100% 100%';\n @HostBinding('style.display') display = 'inline';\n\n // desplazamiento\n @HostBinding('style.padding') padding = '0 10px';\n @HostBinding('style.margin') margin = '0 -10px'; // Compensa el padding para no mover el texto\n @HostBinding('style.box-decoration-break') break = 'clone';\n @HostBinding('style.-webkit-box-decoration-break') wBreak = 'clone';\n}\n","import { isPlatformBrowser } from '@angular/common';\nimport { Directive, ElementRef, Inject, Input, OnInit, PLATFORM_ID, Renderer2 } from '@angular/core';\n\n@Directive({\n selector: '[scrollReveal]',\n standalone: true,\n})\nexport class ScrollRevealDirective implements OnInit {\n @Input() distance = '30px';\n @Input() duration = '0.8s';\n\n constructor(\n private el: ElementRef,\n private renderer: Renderer2,\n @Inject(PLATFORM_ID) private platformId: Object,\n ) {}\n\n ngOnInit() {\n this.setupInitialStyles();\n\n const isBrowser = isPlatformBrowser(this.platformId);\n const hasIntersectionObserver =\n typeof globalThis !== 'undefined' && 'IntersectionObserver' in globalThis;\n\n if (!isBrowser || !hasIntersectionObserver) {\n this.reveal();\n return;\n }\n\n const observer = new IntersectionObserver(\n (entries) => {\n entries.forEach((entry) => {\n if (entry.isIntersecting) {\n this.reveal();\n observer.unobserve(this.el.nativeElement);\n }\n });\n },\n { threshold: 0.1 },\n ); // Se dispara cuando el 10% del componente es visible\n\n observer.observe(this.el.nativeElement);\n }\n\n private setupInitialStyles() {\n this.renderer.setStyle(this.el.nativeElement, 'opacity', '0');\n this.renderer.setStyle(this.el.nativeElement, 'transform', `translateY(-${this.distance})`);\n this.renderer.setStyle(\n this.el.nativeElement,\n 'transition',\n `all ${this.duration} ease-out`,\n );\n }\n\n private reveal() {\n this.renderer.setStyle(this.el.nativeElement, 'opacity', '1');\n this.renderer.setStyle(this.el.nativeElement, 'transform', 'translateY(0)');\n }\n}\n","import { Directive, HostListener, HostBinding, Input } from '@angular/core';\n\n@Directive({\n selector: '[headerScroll]',\n standalone: true,\n})\nexport class HeaderScrollDirective {\n @Input() scrollThreshold = 60;\n\n @HostBinding('class.is-scrolled') isScrolled = false;\n\n @HostListener('window:scroll', [])\n onScroll(): void {\n this.isScrolled = window.scrollY > this.scrollThreshold;\n }\n}","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -1,18 +1,13 @@
|
|
|
1
|
-
function mapButtons(data
|
|
1
|
+
function mapButtons(data) {
|
|
2
2
|
if (!Array.isArray(data))
|
|
3
3
|
return [];
|
|
4
4
|
return data
|
|
5
5
|
.filter((item) => item && typeof item === 'object')
|
|
6
6
|
.map((item) => {
|
|
7
|
-
|
|
8
|
-
const labelValue = item.label && typeof item.label === 'object'
|
|
9
|
-
? (item.label[lang] ?? item.label['es'] ?? '')
|
|
10
|
-
: (item.label ?? '');
|
|
11
|
-
// 2. Limpieza de 'home' y construcción de URL interna
|
|
7
|
+
const labelValue = item.label ?? '';
|
|
12
8
|
let finalUrl = '';
|
|
13
9
|
if (item.link_type === 'internal') {
|
|
14
|
-
|
|
15
|
-
finalUrl = slug === '' ? `/${lang}` : `/${lang}/${slug}`;
|
|
10
|
+
finalUrl = item.page === 'home' ? '' : (item.page ?? '');
|
|
16
11
|
}
|
|
17
12
|
else {
|
|
18
13
|
finalUrl = item.url ?? '';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lluc_llull-ui-lib-utils.mjs","sources":["../../../projects/ui-lib/utils/utils.ts","../../../projects/ui-lib/utils/lluc_llull-ui-lib-utils.ts"],"sourcesContent":["import { UiLibButtonI, UiLibImageI } from '@lluc_llull/ui-lib/interfaces';\n\nexport function mapButtons(data: any
|
|
1
|
+
{"version":3,"file":"lluc_llull-ui-lib-utils.mjs","sources":["../../../projects/ui-lib/utils/utils.ts","../../../projects/ui-lib/utils/lluc_llull-ui-lib-utils.ts"],"sourcesContent":["import { UiLibButtonI, UiLibImageI } from '@lluc_llull/ui-lib/interfaces';\n\nexport function mapButtons(data: any): UiLibButtonI[] {\n if (!Array.isArray(data)) return [];\n\n return data\n .filter((item) => item && typeof item === 'object')\n .map((item): UiLibButtonI => {\n const labelValue = item.label ?? '';\n\n let finalUrl = '';\n if (item.link_type === 'internal') {\n finalUrl = item.page === 'home' ? '' : (item.page ?? '');\n } else {\n finalUrl = item.url ?? '';\n }\n\n return {\n label: labelValue,\n url: finalUrl,\n linkType: item.link_type ?? 'none',\n icon: item.icon,\n };\n });\n}\n\nexport function mapImage(data: any, cdn?: string): UiLibImageI | null {\n if (!data || typeof data !== 'object') return null;\n\n const src = data.url ?? data.src ?? '';\n const fullUrl = src.startsWith('http') ? src : (cdn ?? '') + src;\n \n let publicId = data.public_id ?? data.publicId;\n\n if (!publicId && fullUrl.includes('cloudinary.com')) {\n const match = fullUrl.match(/\\/upload\\/(?:v\\d+\\/)?([^\\.]+)/);\n if (match) {\n publicId = match[1];\n }\n }\n\n return {\n url: fullUrl,\n publicId: publicId,\n alt: data.alt ?? '',\n width: data.width,\n height: data.height,\n format: data.format,\n texts: {\n pretitle: data.texts?.pretitle,\n title: data.texts?.title,\n subtitle: data.texts?.subtitle,\n text: data.texts?.text,\n },\n };\n}\n\nexport function mapImageOrGallery(data: any, cdn?: string): UiLibImageI[] {\n if (!data) return [];\n\n if (data.images && Array.isArray(data.images)) {\n data = data.images;\n }\n\n if (Array.isArray(data)) {\n return data\n .filter((img) => img && typeof img === 'object')\n .map((img) => mapImage(img, cdn))\n .filter((img): img is UiLibImageI => !!img);\n }\n\n const single = mapImage(data, cdn);\n return single ? [single] : [];\n}","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/utils/utils.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import { UiLibButtonI, UiLibImageI } from '@lluc_llull/ui-lib/interfaces';
|
|
2
|
-
export declare function mapButtons(data: any
|
|
2
|
+
export declare function mapButtons(data: any): UiLibButtonI[];
|
|
3
3
|
export declare function mapImage(data: any, cdn?: string): UiLibImageI | null;
|
|
4
4
|
export declare function mapImageOrGallery(data: any, cdn?: string): UiLibImageI[];
|