@aiconomy/aico-components 0.0.95 → 0.0.100

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 (59) hide show
  1. package/dist/aico-components/aico-components.esm.js +1 -1
  2. package/dist/aico-components/aico-components.esm.js.map +1 -1
  3. package/dist/aico-components/p-368addda.entry.js +2 -0
  4. package/dist/aico-components/p-368addda.entry.js.map +1 -0
  5. package/dist/aico-components/p-7f6fcb2e.entry.js +2 -0
  6. package/dist/aico-components/p-7f6fcb2e.entry.js.map +1 -0
  7. package/dist/aico-components/{p-c900f292.entry.js → p-c69f0ecc.entry.js} +2 -2
  8. package/dist/aico-components/p-e187bbea.js +2 -0
  9. package/dist/aico-components/p-e187bbea.js.map +1 -0
  10. package/dist/aico-components/{p-7ea04e72.entry.js → p-eee603da.entry.js} +2 -2
  11. package/dist/cjs/aico-album-content_19.cjs.entry.js +1 -1
  12. package/dist/cjs/aico-components.cjs.js +1 -1
  13. package/dist/cjs/aico-fetch-article-detail.cjs.entry.js +1 -1
  14. package/dist/cjs/aico-news-list.cjs.entry.js +6 -3
  15. package/dist/cjs/aico-news-list.cjs.entry.js.map +1 -1
  16. package/dist/cjs/aico-special-news-carousel.cjs.entry.js +6 -3
  17. package/dist/cjs/aico-special-news-carousel.cjs.entry.js.map +1 -1
  18. package/dist/cjs/loader.cjs.js +1 -1
  19. package/dist/cjs/{utils-9ae3486f.js → utils-3d8a97f6.js} +16 -9
  20. package/dist/cjs/utils-3d8a97f6.js.map +1 -0
  21. package/dist/collection/components/aico-news-list/aico-news-list.js +53 -2
  22. package/dist/collection/components/aico-news-list/aico-news-list.js.map +1 -1
  23. package/dist/collection/components/aico-special-news-carousel/aico-special-news-carousel.js +53 -2
  24. package/dist/collection/components/aico-special-news-carousel/aico-special-news-carousel.js.map +1 -1
  25. package/dist/collection/utils/utils.js +15 -8
  26. package/dist/collection/utils/utils.js.map +1 -1
  27. package/dist/components/aico-news-list.js +8 -2
  28. package/dist/components/aico-news-list.js.map +1 -1
  29. package/dist/components/aico-special-news-carousel.js +8 -2
  30. package/dist/components/aico-special-news-carousel.js.map +1 -1
  31. package/dist/components/utils.js +15 -8
  32. package/dist/components/utils.js.map +1 -1
  33. package/dist/esm/aico-album-content_19.entry.js +1 -1
  34. package/dist/esm/aico-components.js +1 -1
  35. package/dist/esm/aico-fetch-article-detail.entry.js +1 -1
  36. package/dist/esm/aico-news-list.entry.js +6 -3
  37. package/dist/esm/aico-news-list.entry.js.map +1 -1
  38. package/dist/esm/aico-special-news-carousel.entry.js +6 -3
  39. package/dist/esm/aico-special-news-carousel.entry.js.map +1 -1
  40. package/dist/esm/loader.js +1 -1
  41. package/dist/esm/{utils-25eef7c7.js → utils-f81eb958.js} +16 -9
  42. package/dist/esm/utils-f81eb958.js.map +1 -0
  43. package/dist/types/components/aico-news-list/aico-news-list.d.ts +3 -0
  44. package/dist/types/components/aico-special-news-carousel/aico-special-news-carousel.d.ts +3 -0
  45. package/dist/types/components.d.ts +12 -0
  46. package/dist/types/utils/utils.d.ts +2 -2
  47. package/docs/components/aico-news-list/readme.md +3 -0
  48. package/docs/components/aico-special-news-carousel/readme.md +3 -0
  49. package/package.json +1 -1
  50. package/dist/aico-components/p-59bfd021.js +0 -2
  51. package/dist/aico-components/p-59bfd021.js.map +0 -1
  52. package/dist/aico-components/p-80cb133a.entry.js +0 -2
  53. package/dist/aico-components/p-80cb133a.entry.js.map +0 -1
  54. package/dist/aico-components/p-918b9928.entry.js +0 -2
  55. package/dist/aico-components/p-918b9928.entry.js.map +0 -1
  56. package/dist/cjs/utils-9ae3486f.js.map +0 -1
  57. package/dist/esm/utils-25eef7c7.js.map +0 -1
  58. /package/dist/aico-components/{p-c900f292.entry.js.map → p-c69f0ecc.entry.js.map} +0 -0
  59. /package/dist/aico-components/{p-7ea04e72.entry.js.map → p-eee603da.entry.js.map} +0 -0
@@ -8,6 +8,9 @@ export declare class AicoNewsList {
8
8
  aicoUrl: string;
9
9
  aicoBearerToken: string;
10
10
  newsChannels: string[];
11
+ newsSellerIds: string[];
12
+ newsBrandIds: string[];
13
+ newsLanguageLocales: string[];
11
14
  nextButtonText: string;
12
15
  previousButtonText: string;
13
16
  articleClick?: EventEmitter<Article>;
@@ -7,6 +7,9 @@ export declare class AicoSpecialNewsCarousel {
7
7
  aicoUrl: string;
8
8
  aicoBearerToken: string;
9
9
  newsChannels: string[];
10
+ newsSellerIds: string[];
11
+ newsBrandIds: string[];
12
+ newsLanguageLocales: string[];
10
13
  numberOfArticles: number;
11
14
  articleClicked?: EventEmitter<Article>;
12
15
  private api?;
@@ -125,7 +125,10 @@ export namespace Components {
125
125
  interface AicoNewsList {
126
126
  "aicoBearerToken": string;
127
127
  "aicoUrl": string;
128
+ "newsBrandIds": string[];
128
129
  "newsChannels": string[];
130
+ "newsLanguageLocales": string[];
131
+ "newsSellerIds": string[];
129
132
  "nextButtonText": string;
130
133
  "previousButtonText": string;
131
134
  }
@@ -141,7 +144,10 @@ export namespace Components {
141
144
  interface AicoSpecialNewsCarousel {
142
145
  "aicoBearerToken": string;
143
146
  "aicoUrl": string;
147
+ "newsBrandIds": string[];
144
148
  "newsChannels": string[];
149
+ "newsLanguageLocales": string[];
150
+ "newsSellerIds": string[];
145
151
  "numberOfArticles": number;
146
152
  }
147
153
  interface AicoTableContent {
@@ -520,7 +526,10 @@ declare namespace LocalJSX {
520
526
  interface AicoNewsList {
521
527
  "aicoBearerToken": string;
522
528
  "aicoUrl": string;
529
+ "newsBrandIds"?: string[];
523
530
  "newsChannels"?: string[];
531
+ "newsLanguageLocales"?: string[];
532
+ "newsSellerIds"?: string[];
524
533
  "nextButtonText"?: string;
525
534
  "onArticleClick"?: (event: AicoNewsListCustomEvent<Article>) => void;
526
535
  "previousButtonText"?: string;
@@ -539,7 +548,10 @@ declare namespace LocalJSX {
539
548
  interface AicoSpecialNewsCarousel {
540
549
  "aicoBearerToken": string;
541
550
  "aicoUrl": string;
551
+ "newsBrandIds"?: string[];
542
552
  "newsChannels"?: string[];
553
+ "newsLanguageLocales"?: string[];
554
+ "newsSellerIds"?: string[];
543
555
  "numberOfArticles"?: number;
544
556
  "onArticleClicked"?: (event: AicoSpecialNewsCarouselCustomEvent<Article>) => void;
545
557
  }
@@ -1,8 +1,8 @@
1
1
  import { Article } from '../components';
2
2
  import { AicoApiRequestInfo } from '../model/AicoApiRequestInfo';
3
3
  import { NewsResponse } from '../model/NewsResponse';
4
- export declare function fetchNewsArticles(api: AicoApiRequestInfo, page: number, size: number, signal: AbortSignal, newsChannels?: string[]): Promise<NewsResponse>;
5
- export declare function fetchSpecialNewsArticles(api: AicoApiRequestInfo, page: number, size: number, signal: AbortSignal, newsChannels?: string[]): Promise<NewsResponse>;
4
+ export declare function fetchNewsArticles(api: AicoApiRequestInfo, page: number, size: number, signal: AbortSignal, newsChannels?: string[], newsSellerIds?: string[], newsBrandIds?: string[], newsLanguageLocales?: string[]): Promise<NewsResponse>;
5
+ export declare function fetchSpecialNewsArticles(api: AicoApiRequestInfo, page: number, size: number, signal: AbortSignal, newsChannels?: string[], newsSellerIds?: string[], newsBrandIds?: string[], newsLanguageLocales?: string[]): Promise<NewsResponse>;
6
6
  export declare function fetchNewsArticle(api: AicoApiRequestInfo, articleId: string, signal: AbortSignal): Promise<Article>;
7
7
  export declare function fetchNewsArticleByHandle(api: AicoApiRequestInfo, urlHandle: string, signal: AbortSignal): Promise<Article>;
8
8
  export declare function fetchArticle(url: string, bearerToken: string, signal: AbortSignal): Promise<Article>;
@@ -11,7 +11,10 @@
11
11
  | ------------------------------ | ---------------------- | ----------- | ---------- | ------------ |
12
12
  | `aicoBearerToken` _(required)_ | `aico-bearer-token` | | `string` | `undefined` |
13
13
  | `aicoUrl` _(required)_ | `aico-url` | | `string` | `undefined` |
14
+ | `newsBrandIds` | -- | | `string[]` | `[]` |
14
15
  | `newsChannels` | -- | | `string[]` | `[]` |
16
+ | `newsLanguageLocales` | -- | | `string[]` | `[]` |
17
+ | `newsSellerIds` | -- | | `string[]` | `[]` |
15
18
  | `nextButtonText` | `next-button-text` | | `string` | `'Next'` |
16
19
  | `previousButtonText` | `previous-button-text` | | `string` | `'Previous'` |
17
20
 
@@ -11,7 +11,10 @@
11
11
  | ------------------------------ | -------------------- | ----------- | ---------- | ----------- |
12
12
  | `aicoBearerToken` _(required)_ | `aico-bearer-token` | | `string` | `undefined` |
13
13
  | `aicoUrl` _(required)_ | `aico-url` | | `string` | `undefined` |
14
+ | `newsBrandIds` | -- | | `string[]` | `[]` |
14
15
  | `newsChannels` | -- | | `string[]` | `[]` |
16
+ | `newsLanguageLocales` | -- | | `string[]` | `[]` |
17
+ | `newsSellerIds` | -- | | `string[]` | `[]` |
15
18
  | `numberOfArticles` | `number-of-articles` | | `number` | `6` |
16
19
 
17
20
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aiconomy/aico-components",
3
- "version": "0.0.95",
3
+ "version": "0.0.100",
4
4
  "description": "Aiconomy components",
5
5
  "main": "dist/index.cjs.js",
6
6
  "module": "dist/index.js",
@@ -1,2 +0,0 @@
1
- const t=t=>{const e=new Headers;e.append("Accept","application/vnd.api+json");e.append("Authorization",`Bearer ${t}`);return e};const e=(e,n,a,r)=>new Request(new URL(`${n}?${a.toString()}`,e.baseApi),{headers:t(e.bearerToken),signal:r});async function n(t,n,a,r,s=[]){const c=new URLSearchParams;c.set("page[number]",String(n));c.set("page[size]",String(a));c.set("sort","-publishDate");c.set("filter[isActive]","1");c.set("filter[excludeTag][]","Eisnull");for(const t of s){c.append("filter[channel][]",t)}const i=e(t,"news",c,r);const o=await fetch(i);return await o.json()}async function a(t,n,a,r,s=[]){const c=new URLSearchParams;c.set("page[number]",String(n));c.set("page[size]",String(a));c.set("sort","-publishDate");c.set("filter[isActive]","1");c.set("filter[isSpecialArticle]","1");c.set("filter[isLightVersion]","true");c.set("filter[excludeTag][]","Eisnull");for(const t of s){c.append("filter[channel][]",t)}const i=e(t,"news",c,r);const o=await fetch(i);return await o.json()}async function r(t,n,a){const r=e(t,`news/${n}`,new URLSearchParams,a);const s=await fetch(r);const c=await s.json();return c.data}async function s(t,n,a){const r=new URLSearchParams;r.set("filter[urlHandle]",n);const s=e(t,"news",r,a);const c=await fetch(s);const i=await c.json();return i.data[0]}function c(t){switch(t){case"extra-small":return"28%";case"small":return"40%";case"large":return"80%";case"extra large":return"100%";default:return"60%"}}function i(t){const e=/.*(?:youtu.be\/|v\/|u\/\w\/|embed\/|watch\?v=)([^#&?]*).*/;const n=t.match(e);if(n&&n[1].length==11){return`https://www.youtube.com/embed/${n[1]}`}return null}function o(t){if(!t||t===" "){return true}return false}function u(t){const e=[];for(const n of Object.entries(t)){if(n[1]){e.push(n[0])}}return e.join(" ")}export{r as a,n as b,a as c,u as d,i as e,s as f,c as g,o as s};
2
- //# sourceMappingURL=p-59bfd021.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["getAuthenticatedHeaders","bearerToken","headers","Headers","append","getAuthenticatedRequest","api","route","query","signal","Request","URL","toString","baseApi","async","fetchNewsArticles","page","size","newsChannels","queryParams","URLSearchParams","set","String","newsChannel","request","response","fetch","json","fetchSpecialNewsArticles","fetchNewsArticle","articleId","article","data","fetchNewsArticleByHandle","urlHandle","articles","getImageWidthPrc","pictureSize","getYoutubeURL","url","regExp","match","length","strIsNullOrEmptyOrWhitespace","str","getClass","conditions","classes","kvp","Object","entries","push","join"],"sources":["src/model/AicoApiRequestInfo.ts","src/utils/utils.ts"],"sourcesContent":["export type AicoApiRequestInfo = {\n baseApi: string;\n bearerToken: string;\n};\n\nexport const getAuthenticatedHeaders = (bearerToken: string): Headers => {\n const headers = new Headers();\n headers.append('Accept', 'application/vnd.api+json');\n headers.append('Authorization', `Bearer ${bearerToken}`);\n return headers;\n};\n\nexport const getAuthenticatedRequest = (api: AicoApiRequestInfo, route: string, query: URLSearchParams, signal?: AbortSignal): Request => {\n return new Request(new URL(`${route}?${query.toString()}`, api.baseApi), {\n headers: getAuthenticatedHeaders(api.bearerToken),\n signal,\n });\n};\n","import { Article } from '../components';\nimport { AicoApiRequestInfo, getAuthenticatedHeaders, getAuthenticatedRequest } from '../model/AicoApiRequestInfo';\nimport { NewsResponse } from '../model/NewsResponse';\n\nexport async function fetchNewsArticles(api: AicoApiRequestInfo, page: number, size: number, signal: AbortSignal, newsChannels: string[] = []): Promise<NewsResponse> {\n const queryParams = new URLSearchParams();\n queryParams.set('page[number]', String(page));\n queryParams.set('page[size]', String(size));\n queryParams.set('sort', '-publishDate');\n queryParams.set('filter[isActive]', '1');\n queryParams.set('filter[excludeTag][]', 'Eisnull');\n for (const newsChannel of newsChannels) {\n queryParams.append('filter[channel][]', newsChannel);\n }\n\n const request = getAuthenticatedRequest(api, 'news', queryParams, signal);\n const response = await fetch(request);\n return await response.json();\n}\n\nexport async function fetchSpecialNewsArticles(api: AicoApiRequestInfo, page: number, size: number, signal: AbortSignal, newsChannels: string[] = []): Promise<NewsResponse> {\n const queryParams = new URLSearchParams();\n queryParams.set('page[number]', String(page));\n queryParams.set('page[size]', String(size));\n queryParams.set('sort', '-publishDate');\n queryParams.set('filter[isActive]', '1');\n queryParams.set('filter[isSpecialArticle]', '1');\n queryParams.set('filter[isLightVersion]', 'true');\n queryParams.set('filter[excludeTag][]', 'Eisnull');\n for (const newsChannel of newsChannels) {\n queryParams.append('filter[channel][]', newsChannel);\n }\n\n const request = getAuthenticatedRequest(api, 'news', queryParams, signal);\n const response = await fetch(request);\n return await response.json();\n}\n\nexport async function fetchNewsArticle(api: AicoApiRequestInfo, articleId: string, signal: AbortSignal): Promise<Article> {\n const request = getAuthenticatedRequest(api, `news/${articleId}`, new URLSearchParams(), signal);\n const response = await fetch(request);\n const article = await response.json();\n return article.data;\n}\n\nexport async function fetchNewsArticleByHandle(api: AicoApiRequestInfo, urlHandle: string, signal: AbortSignal): Promise<Article> {\n const queryParams = new URLSearchParams();\n queryParams.set('filter[urlHandle]', urlHandle);\n\n const request = getAuthenticatedRequest(api, 'news', queryParams, signal);\n const response = await fetch(request);\n const articles = await response.json();\n return articles.data[0];\n}\n\nexport async function fetchArticle(url: string, bearerToken: string, signal: AbortSignal): Promise<Article> {\n const request = new Request(new URL(url), {\n headers: getAuthenticatedHeaders(bearerToken),\n signal,\n });\n const response = await fetch(request);\n return await response.json();\n}\n\nexport function getImageWidthPrc(pictureSize?: string): string {\n switch (pictureSize) {\n case 'extra-small':\n return '28%';\n case 'small':\n return '40%';\n case 'large':\n return '80%';\n case 'extra large': // TODO: has - or not?\n return '100%';\n default:\n return '60%';\n }\n}\n\nexport function getYoutubeURL(url: string): string | null {\n const regExp = /.*(?:youtu.be\\/|v\\/|u\\/\\w\\/|embed\\/|watch\\?v=)([^#&?]*).*/;\n const match = url.match(regExp);\n if (match && match[1].length == 11) {\n return `https://www.youtube.com/embed/${match[1]}`;\n }\n\n return null;\n}\n\nexport function strIsNullOrEmptyOrWhitespace(str?: string | null): boolean {\n if (!str || str === ' ') {\n return true;\n }\n\n return false;\n}\n\nexport function getClass(conditions: { [key: string]: boolean }): string {\n const classes: string[] = [];\n for (const kvp of Object.entries(conditions)) {\n if (kvp[1]) {\n classes.push(kvp[0]);\n }\n }\n\n return classes.join(' ');\n}\n"],"mappings":"AAKO,MAAMA,EAA2BC,IACtC,MAAMC,EAAU,IAAIC,QACpBD,EAAQE,OAAO,SAAU,4BACzBF,EAAQE,OAAO,gBAAiB,UAAUH,KAC1C,OAAOC,CAAO,EAGT,MAAMG,EAA0B,CAACC,EAAyBC,EAAeC,EAAwBC,IAC/F,IAAIC,QAAQ,IAAIC,IAAI,GAAGJ,KAASC,EAAMI,aAAcN,EAAIO,SAAU,CACvEX,QAASF,EAAwBM,EAAIL,aACrCQ,WCXGK,eAAeC,EAAkBT,EAAyBU,EAAcC,EAAcR,EAAqBS,EAAyB,IACzI,MAAMC,EAAc,IAAIC,gBACxBD,EAAYE,IAAI,eAAgBC,OAAON,IACvCG,EAAYE,IAAI,aAAcC,OAAOL,IACrCE,EAAYE,IAAI,OAAQ,gBACxBF,EAAYE,IAAI,mBAAoB,KACpCF,EAAYE,IAAI,uBAAwB,WACxC,IAAK,MAAME,KAAeL,EAAc,CACtCC,EAAYf,OAAO,oBAAqBmB,E,CAG1C,MAAMC,EAAUnB,EAAwBC,EAAK,OAAQa,EAAaV,GAClE,MAAMgB,QAAiBC,MAAMF,GAC7B,aAAaC,EAASE,MACxB,CAEOb,eAAec,EAAyBtB,EAAyBU,EAAcC,EAAcR,EAAqBS,EAAyB,IAChJ,MAAMC,EAAc,IAAIC,gBACxBD,EAAYE,IAAI,eAAgBC,OAAON,IACvCG,EAAYE,IAAI,aAAcC,OAAOL,IACrCE,EAAYE,IAAI,OAAQ,gBACxBF,EAAYE,IAAI,mBAAoB,KACpCF,EAAYE,IAAI,2BAA4B,KAC5CF,EAAYE,IAAI,yBAA0B,QAC1CF,EAAYE,IAAI,uBAAwB,WACxC,IAAK,MAAME,KAAeL,EAAc,CACtCC,EAAYf,OAAO,oBAAqBmB,E,CAG1C,MAAMC,EAAUnB,EAAwBC,EAAK,OAAQa,EAAaV,GAClE,MAAMgB,QAAiBC,MAAMF,GAC7B,aAAaC,EAASE,MACxB,CAEOb,eAAee,EAAiBvB,EAAyBwB,EAAmBrB,GACjF,MAAMe,EAAUnB,EAAwBC,EAAK,QAAQwB,IAAa,IAAIV,gBAAmBX,GACzF,MAAMgB,QAAiBC,MAAMF,GAC7B,MAAMO,QAAgBN,EAASE,OAC/B,OAAOI,EAAQC,IACjB,CAEOlB,eAAemB,EAAyB3B,EAAyB4B,EAAmBzB,GACzF,MAAMU,EAAc,IAAIC,gBACxBD,EAAYE,IAAI,oBAAqBa,GAErC,MAAMV,EAAUnB,EAAwBC,EAAK,OAAQa,EAAaV,GAClE,MAAMgB,QAAiBC,MAAMF,GAC7B,MAAMW,QAAiBV,EAASE,OAChC,OAAOQ,EAASH,KAAK,EACvB,C,SAWgBI,EAAiBC,GAC/B,OAAQA,GACN,IAAK,cACH,MAAO,MACT,IAAK,QACH,MAAO,MACT,IAAK,QACH,MAAO,MACT,IAAK,cACH,MAAO,OACT,QACE,MAAO,MAEb,C,SAEgBC,EAAcC,GAC5B,MAAMC,EAAS,4DACf,MAAMC,EAAQF,EAAIE,MAAMD,GACxB,GAAIC,GAASA,EAAM,GAAGC,QAAU,GAAI,CAClC,MAAO,iCAAiCD,EAAM,I,CAGhD,OAAO,IACT,C,SAEgBE,EAA6BC,GAC3C,IAAKA,GAAOA,IAAQ,IAAK,CACvB,OAAO,I,CAGT,OAAO,KACT,C,SAEgBC,EAASC,GACvB,MAAMC,EAAoB,GAC1B,IAAK,MAAMC,KAAOC,OAAOC,QAAQJ,GAAa,CAC5C,GAAIE,EAAI,GAAI,CACVD,EAAQI,KAAKH,EAAI,G,EAIrB,OAAOD,EAAQK,KAAK,IACtB,Q"}
@@ -1,2 +0,0 @@
1
- import{r as i,c as s,h as t,H as e}from"./p-ae20e789.js";import{b as l}from"./p-59bfd021.js";const o="";const n=class{constructor(t){i(this,t);this.articleClick=s(this,"articleClick",7);this.pageSize=16;this.newsResponse=undefined;this.pageNumber=1;this.aicoUrl=undefined;this.aicoBearerToken=undefined;this.newsChannels=[];this.nextButtonText="Next";this.previousButtonText="Previous"}connectedCallback(){this.newsListFetchController=new AbortController;this.pageNumber=1;this.api={baseApi:this.aicoUrl,bearerToken:this.aicoBearerToken}}disconnectedCallback(){this.newsListFetchController.abort("disconnected")}async componentWillLoad(){this.newsResponse=await l(this.api,this.pageNumber,this.pageSize,this.newsListFetchController.signal,this.newsChannels)}async componentWillUpdate(){this.newsListFetchController=new AbortController;this.newsResponse=await l(this.api,this.pageNumber,this.pageSize,this.newsListFetchController.signal,this.newsChannels)}render(){var i,s,l;return t(e,null,t("div",{class:"row row-cols-1 row-cols-sm-2 row-cols-lg-4 g-4 mb-4"},(i=this.newsResponse)===null||i===void 0?void 0:i.data.map((i=>t("div",{class:"col"},t("aico-news-list-item",{article:i,onArticleClick:i=>{var s;(s=this.articleClick)===null||s===void 0?void 0:s.emit(i.detail)}}))))),t("nav",{class:"w-100","aria-label":"News navigation"},t("ul",{class:"pagination justify-content-center"},t("li",{class:`page-item page-link user-select-none d-flex align-items-center ${!((s=this.newsResponse)===null||s===void 0?void 0:s.links.prev)?"disabled":""}`,style:{cursor:"pointer"},onClick:()=>{if(this.pageNumber>1){this.pageNumber-=1}return false}},t("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"currentColor",class:"bi bi-chevron-left me-1 fs-4",style:{width:"1em",height:"1em"},viewBox:"0 0 16 16"},t("path",{"fill-rule":"evenodd",d:"M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0"})),this.previousButtonText),this.getViewablePages().map((i=>t("li",{class:`page-item page-link user-select-none ${i==="..."?"disabled":Number(i)===this.pageNumber?"active":""}`,style:{cursor:"pointer"},onClick:()=>{if(i!=="..."){this.pageNumber=Number(i)}return false}},i))),t("li",{class:`page-item page-link user-select-none d-flex align-items-center ${!((l=this.newsResponse)===null||l===void 0?void 0:l.links.next)?"disabled":""}`,style:{cursor:"pointer"},onClick:()=>{var i,s;if(((i=this.newsResponse)===null||i===void 0?void 0:i.meta.page.lastPage)&&this.pageNumber<((s=this.newsResponse)===null||s===void 0?void 0:s.meta.page.lastPage)){this.pageNumber+=1}}},this.nextButtonText,t("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"currentColor",class:"bi bi-chevron-right ms-1 fs-4",style:{width:"1em",height:"1em"},viewBox:"0 0 16 16"},t("path",{"fill-rule":"evenodd",d:"M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708"}))))))}getViewablePages(i=2){var s,t,e,l,o,n,a;const h=[];if(this.pageNumber-i>=2){h.push("1")}if(this.pageNumber-i>2){h.push("...")}for(let s=this.pageNumber-i;s<this.pageNumber;s+=1){if(s>=1){h.push(`${s}`)}}h.push(`${this.pageNumber}`);for(let e=this.pageNumber+1;e<=this.pageNumber+i;e+=1){if(e<=((t=(s=this.newsResponse)===null||s===void 0?void 0:s.meta.page.lastPage)!==null&&t!==void 0?t:0)){h.push(`${e}`)}}if(this.pageNumber+i<((l=(e=this.newsResponse)===null||e===void 0?void 0:e.meta.page.lastPage)!==null&&l!==void 0?l:0)-1){h.push("...")}if(this.pageNumber+i<=((n=(o=this.newsResponse)===null||o===void 0?void 0:o.meta.page.lastPage)!==null&&n!==void 0?n:0)-1){h.push(`${(a=this.newsResponse)===null||a===void 0?void 0:a.meta.page.lastPage}`)}return h}};n.style=o;export{n as aico_news_list};
2
- //# sourceMappingURL=p-80cb133a.entry.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["aicoNewsListCss","AicoNewsList","this","pageSize","connectedCallback","newsListFetchController","AbortController","pageNumber","api","baseApi","aicoUrl","bearerToken","aicoBearerToken","disconnectedCallback","abort","componentWillLoad","newsResponse","fetchNewsArticles","signal","newsChannels","componentWillUpdate","render","h","Host","class","_a","data","map","article","onArticleClick","e","articleClick","emit","detail","_b","links","prev","style","cursor","onClick","xmlns","fill","width","height","viewBox","d","previousButtonText","getViewablePages","page","Number","_c","next","meta","lastPage","nextButtonText","lookAhead","pages","push","i","_d","_f","_e","_g"],"sources":["src/components/aico-news-list/aico-news-list.css?tag=aico-news-list&encapsulation=scoped","src/components/aico-news-list/aico-news-list.tsx"],"sourcesContent":[null,"import { Component, Event, EventEmitter, Host, Prop, State, h } from '@stencil/core';\nimport { fetchNewsArticles } from '../../utils/utils';\nimport { NewsResponse } from '../../model/NewsResponse';\nimport { AicoApiRequestInfo } from '../../model/AicoApiRequestInfo';\nimport { Article } from '../../model/Article';\n\n@Component({\n tag: 'aico-news-list',\n styleUrl: 'aico-news-list.css',\n scoped: true,\n})\nexport class AicoNewsList {\n private readonly pageSize = 16;\n\n @State() newsResponse?: NewsResponse;\n\n @State() pageNumber = 1;\n\n @Prop() aicoUrl!: string;\n\n @Prop() aicoBearerToken!: string;\n\n @Prop() newsChannels: string[] = [];\n\n @Prop() nextButtonText: string = 'Next';\n\n @Prop() previousButtonText: string = 'Previous';\n\n @Event() articleClick?: EventEmitter<Article>;\n\n private api?: AicoApiRequestInfo;\n private newsListFetchController?: AbortController;\n\n connectedCallback() {\n this.newsListFetchController = new AbortController();\n this.pageNumber = 1;\n\n this.api = { baseApi: this.aicoUrl, bearerToken: this.aicoBearerToken };\n }\n\n disconnectedCallback() {\n this.newsListFetchController!.abort('disconnected');\n }\n\n async componentWillLoad(): Promise<void> {\n this.newsResponse = await fetchNewsArticles(this.api!, this.pageNumber, this.pageSize, this.newsListFetchController!.signal, this.newsChannels);\n }\n\n async componentWillUpdate(): Promise<void> {\n this.newsListFetchController = new AbortController();\n this.newsResponse = await fetchNewsArticles(this.api!, this.pageNumber, this.pageSize, this.newsListFetchController.signal, this.newsChannels);\n }\n\n render() {\n return (\n <Host>\n <div class=\"row row-cols-1 row-cols-sm-2 row-cols-lg-4 g-4 mb-4\">\n {this.newsResponse?.data.map(article => (\n <div class=\"col\">\n <aico-news-list-item\n article={article}\n onArticleClick={e => {\n this.articleClick?.emit(e.detail);\n }}\n />\n </div>\n ))}\n </div>\n <nav class=\"w-100\" aria-label=\"News navigation\">\n <ul class=\"pagination justify-content-center\">\n <li\n class={`page-item page-link user-select-none d-flex align-items-center ${!this.newsResponse?.links.prev ? 'disabled' : ''}`}\n style={{ cursor: 'pointer' }}\n onClick={() => {\n if (this.pageNumber > 1) {\n this.pageNumber -= 1;\n }\n\n return false;\n }}\n >\n <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"currentColor\" class=\"bi bi-chevron-left me-1 fs-4\" style={{ width: '1em', height: '1em' }} viewBox=\"0 0 16 16\">\n <path fill-rule=\"evenodd\" d=\"M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0\" />\n </svg>\n {this.previousButtonText}\n </li>\n {this.getViewablePages().map(page => (\n <li\n class={`page-item page-link user-select-none ${page === '...' ? 'disabled' : Number(page) === this.pageNumber ? 'active' : ''}`}\n style={{ cursor: 'pointer' }}\n onClick={() => {\n if (page !== '...') {\n this.pageNumber = Number(page);\n }\n return false;\n }}\n >\n {page}\n </li>\n ))}\n <li\n class={`page-item page-link user-select-none d-flex align-items-center ${!this.newsResponse?.links.next ? 'disabled' : ''}`}\n style={{ cursor: 'pointer' }}\n onClick={() => {\n if (this.newsResponse?.meta.page.lastPage && this.pageNumber < this.newsResponse?.meta.page.lastPage) {\n this.pageNumber += 1;\n }\n }}\n >\n {this.nextButtonText}\n <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"currentColor\" class=\"bi bi-chevron-right ms-1 fs-4\" style={{ width: '1em', height: '1em' }} viewBox=\"0 0 16 16\">\n <path fill-rule=\"evenodd\" d=\"M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708\" />\n </svg>\n </li>\n </ul>\n </nav>\n </Host>\n );\n }\n\n private getViewablePages(lookAhead: number = 2) {\n const pages: string[] = [];\n if (this.pageNumber - lookAhead >= 2) {\n pages.push('1');\n }\n\n if (this.pageNumber - lookAhead > 2) {\n pages.push('...');\n }\n\n for (let i = this.pageNumber - lookAhead; i < this.pageNumber; i += 1) {\n if (i >= 1) {\n pages.push(`${i}`);\n }\n }\n\n pages.push(`${this.pageNumber}`);\n for (let i = this.pageNumber + 1; i <= this.pageNumber + lookAhead; i += 1) {\n if (i <= (this.newsResponse?.meta.page.lastPage ?? 0)) {\n pages.push(`${i}`);\n }\n }\n\n if (this.pageNumber + lookAhead < (this.newsResponse?.meta.page.lastPage ?? 0) - 1) {\n pages.push('...');\n }\n\n if (this.pageNumber + lookAhead <= (this.newsResponse?.meta.page.lastPage ?? 0) - 1) {\n pages.push(`${this.newsResponse?.meta.page.lastPage}`);\n }\n\n return pages;\n }\n}\n"],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- import{r as t,c as s,h as e}from"./p-ae20e789.js";import{c as i}from"./p-59bfd021.js";import{j as a}from"./p-86c7fdc7.js";const o=".slick-slide.sc-aico-special-news-carousel>div.sc-aico-special-news-carousel{height:100% !important}";const c=class{constructor(e){t(this,e);this.articleClicked=s(this,"articleClicked",7);this.newsResponse=undefined;this.aicoUrl=undefined;this.aicoBearerToken=undefined;this.newsChannels=[];this.numberOfArticles=6}connectedCallback(){this.newsListFetchController=new AbortController;this.api={baseApi:this.aicoUrl,bearerToken:this.aicoBearerToken}}disconnectedCallback(){this.newsListFetchController.abort("disconnected")}async componentWillLoad(){this.newsResponse=await i(this.api,1,this.numberOfArticles,this.newsListFetchController.signal,this.newsChannels)}async componentWillUpdate(){this.newsListFetchController=new AbortController;this.newsResponse=await i(this.api,1,this.numberOfArticles,this.newsListFetchController.signal,this.newsChannels)}componentDidLoad(){a(".carousel").slick({autoplay:true,autoplaySpeed:6e3,dots:true,arrows:false,pauseOnDotsHover:true})}render(){return e("div",{class:"carousel"},this.newsResponse.data.map((t=>{var s;const i=t.attributes.focusXPercentage?`${t.attributes.focusXPercentage}%`:"center";const a=t.attributes.focusYPercentage?`${t.attributes.focusYPercentage}%`:"center";return e("div",{class:"carousel-item card border-0"},e("div",{class:"card-body"},e("h5",{class:"card-title text-center text-uppercase"},e("a",{class:"text-reset text-decoration-none",href:"#",onClick:s=>{var e;s.preventDefault();(e=this.articleClicked)===null||e===void 0?void 0:e.emit(t)}},t.attributes.name))),e("div",{class:"ratio ratio-16x9 mx-auto",style:{"max-width":"50%"}},e("img",{class:"card-img-bottom object-fit-cover",style:{"object-position":`${i} ${a}`,"min-height":"15rem"},alt:"News Picture","data-lazy":(s=t.attributes.optimizedImage)!==null&&s!==void 0?s:t.attributes.image})))})))}};c.style=o;export{c as aico_special_news_carousel};
2
- //# sourceMappingURL=p-918b9928.entry.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["aicoSpecialNewsCarouselCss","AicoSpecialNewsCarousel","connectedCallback","this","newsListFetchController","AbortController","api","baseApi","aicoUrl","bearerToken","aicoBearerToken","disconnectedCallback","abort","componentWillLoad","newsResponse","fetchSpecialNewsArticles","numberOfArticles","signal","newsChannels","componentWillUpdate","componentDidLoad","$","slick","autoplay","autoplaySpeed","dots","arrows","pauseOnDotsHover","render","h","class","data","map","article","focusX","attributes","focusXPercentage","focusY","focusYPercentage","href","onClick","e","preventDefault","_a","articleClicked","emit","name","style","alt","optimizedImage","image"],"sources":["src/components/aico-special-news-carousel/aico-special-news-carousel.css?tag=aico-special-news-carousel&encapsulation=scoped","src/components/aico-special-news-carousel/aico-special-news-carousel.tsx"],"sourcesContent":[".slick-slide > div {\n height: 100% !important;\n}\n","import { Component, Event, EventEmitter, Prop, State, h } from '@stencil/core';\nimport type { NewsResponse } from '../../model/NewsResponse';\nimport type { AicoApiRequestInfo } from '../../model/AicoApiRequestInfo';\nimport type { Article } from '../../model/Article';\nimport { fetchSpecialNewsArticles } from '../../utils/utils';\n\nimport $ from 'jquery';\nimport 'slick-carousel';\n\n@Component({\n tag: 'aico-special-news-carousel',\n styleUrl: 'aico-special-news-carousel.css',\n scoped: true,\n})\nexport class AicoSpecialNewsCarousel {\n @State() newsResponse!: NewsResponse;\n\n @Prop() aicoUrl!: string;\n\n @Prop() aicoBearerToken!: string;\n\n @Prop() newsChannels: string[] = [];\n\n @Prop() numberOfArticles: number = 6;\n\n @Event() articleClicked?: EventEmitter<Article>;\n\n private api?: AicoApiRequestInfo;\n private newsListFetchController?: AbortController;\n\n connectedCallback() {\n this.newsListFetchController = new AbortController();\n this.api = { baseApi: this.aicoUrl, bearerToken: this.aicoBearerToken };\n }\n\n disconnectedCallback() {\n this.newsListFetchController!.abort('disconnected');\n }\n\n async componentWillLoad(): Promise<void> {\n this.newsResponse = await fetchSpecialNewsArticles(this.api!, 1, this.numberOfArticles, this.newsListFetchController!.signal, this.newsChannels);\n }\n\n async componentWillUpdate(): Promise<void> {\n this.newsListFetchController = new AbortController();\n this.newsResponse = await fetchSpecialNewsArticles(this.api!, 1, this.numberOfArticles, this.newsListFetchController.signal, this.newsChannels);\n }\n\n componentDidLoad() {\n $('.carousel').slick({\n autoplay: true,\n autoplaySpeed: 6000,\n dots: true,\n arrows: false,\n pauseOnDotsHover: true,\n });\n }\n\n render() {\n return (\n <div class=\"carousel\">\n {this.newsResponse.data.map(article => {\n const focusX = article.attributes.focusXPercentage ? `${article.attributes.focusXPercentage}%` : 'center';\n const focusY = article.attributes.focusYPercentage ? `${article.attributes.focusYPercentage}%` : 'center';\n return (\n <div class=\"carousel-item card border-0\">\n <div class=\"card-body\">\n <h5 class=\"card-title text-center text-uppercase\">\n <a\n class=\"text-reset text-decoration-none\"\n href=\"#\"\n onClick={e => {\n e.preventDefault();\n this.articleClicked?.emit(article);\n }}\n >\n {article.attributes.name}\n </a>\n </h5>\n </div>\n <div class=\"ratio ratio-16x9 mx-auto\" style={{ 'max-width': '50%' }}>\n <img\n class=\"card-img-bottom object-fit-cover\"\n style={{ 'object-position': `${focusX} ${focusY}`, 'min-height': '15rem' }}\n alt=\"News Picture\"\n data-lazy={article.attributes.optimizedImage ?? article.attributes.image}\n />\n </div>\n </div>\n );\n })}\n </div>\n );\n }\n}\n"],"mappings":"0HAAA,MAAMA,EAA6B,uG,MCctBC,EAAuB,M,4KAOD,G,sBAEE,C,CAOnC,iBAAAC,GACEC,KAAKC,wBAA0B,IAAIC,gBACnCF,KAAKG,IAAM,CAAEC,QAASJ,KAAKK,QAASC,YAAaN,KAAKO,gB,CAGxD,oBAAAC,GACER,KAAKC,wBAAyBQ,MAAM,e,CAGtC,uBAAMC,GACJV,KAAKW,mBAAqBC,EAAyBZ,KAAKG,IAAM,EAAGH,KAAKa,iBAAkBb,KAAKC,wBAAyBa,OAAQd,KAAKe,a,CAGrI,yBAAMC,GACJhB,KAAKC,wBAA0B,IAAIC,gBACnCF,KAAKW,mBAAqBC,EAAyBZ,KAAKG,IAAM,EAAGH,KAAKa,iBAAkBb,KAAKC,wBAAwBa,OAAQd,KAAKe,a,CAGpI,gBAAAE,GACEC,EAAE,aAAaC,MAAM,CACnBC,SAAU,KACVC,cAAe,IACfC,KAAM,KACNC,OAAQ,MACRC,iBAAkB,M,CAItB,MAAAC,GACE,OACEC,EAAA,OAAKC,MAAM,YACR3B,KAAKW,aAAaiB,KAAKC,KAAIC,I,MAC1B,MAAMC,EAASD,EAAQE,WAAWC,iBAAmB,GAAGH,EAAQE,WAAWC,oBAAsB,SACjG,MAAMC,EAASJ,EAAQE,WAAWG,iBAAmB,GAAGL,EAAQE,WAAWG,oBAAsB,SACjG,OACET,EAAA,OAAKC,MAAM,+BACTD,EAAA,OAAKC,MAAM,aACTD,EAAA,MAAIC,MAAM,yCACRD,EAAA,KACEC,MAAM,kCACNS,KAAK,IACLC,QAASC,I,MACPA,EAAEC,kBACFC,EAAAxC,KAAKyC,kBAAc,MAAAD,SAAA,SAAAA,EAAEE,KAAKZ,EAAQ,GAGnCA,EAAQE,WAAWW,QAI1BjB,EAAA,OAAKC,MAAM,2BAA2BiB,MAAO,CAAE,YAAa,QAC1DlB,EAAA,OACEC,MAAM,mCACNiB,MAAO,CAAE,kBAAmB,GAAGb,KAAUG,IAAU,aAAc,SACjEW,IAAI,eAAc,aACPL,EAAAV,EAAQE,WAAWc,kBAAc,MAAAN,SAAA,EAAAA,EAAIV,EAAQE,WAAWe,SAGnE,I"}
@@ -1 +0,0 @@
1
- {"file":"utils-9ae3486f.js","mappings":";;AAKO,MAAM,uBAAuB,GAAG,CAAC,WAAmB;IACzD,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;IAC9B,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,0BAA0B,CAAC,CAAC;IACrD,OAAO,CAAC,MAAM,CAAC,eAAe,EAAE,UAAU,WAAW,EAAE,CAAC,CAAC;IACzD,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC;AAEK,MAAM,uBAAuB,GAAG,CAAC,GAAuB,EAAE,KAAa,EAAE,KAAsB,EAAE,MAAoB;IAC1H,OAAO,IAAI,OAAO,CAAC,IAAI,GAAG,CAAC,GAAG,KAAK,IAAI,KAAK,CAAC,QAAQ,EAAE,EAAE,EAAE,GAAG,CAAC,OAAO,CAAC,EAAE;QACvE,OAAO,EAAE,uBAAuB,CAAC,GAAG,CAAC,WAAW,CAAC;QACjD,MAAM;KACP,CAAC,CAAC;AACL,CAAC;;ACbM,eAAe,iBAAiB,CAAC,GAAuB,EAAE,IAAY,EAAE,IAAY,EAAE,MAAmB,EAAE,eAAyB,EAAE;IAC3I,MAAM,WAAW,GAAG,IAAI,eAAe,EAAE,CAAC;IAC1C,WAAW,CAAC,GAAG,CAAC,cAAc,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;IAC9C,WAAW,CAAC,GAAG,CAAC,YAAY,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;IAC5C,WAAW,CAAC,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IACxC,WAAW,CAAC,GAAG,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC;IACzC,WAAW,CAAC,GAAG,CAAC,sBAAsB,EAAE,SAAS,CAAC,CAAC;IACnD,KAAK,MAAM,WAAW,IAAI,YAAY,EAAE;QACtC,WAAW,CAAC,MAAM,CAAC,mBAAmB,EAAE,WAAW,CAAC,CAAC;KACtD;IAED,MAAM,OAAO,GAAG,uBAAuB,CAAC,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC;IAC1E,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC,CAAC;IACtC,OAAO,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;AAC/B,CAAC;AAEM,eAAe,wBAAwB,CAAC,GAAuB,EAAE,IAAY,EAAE,IAAY,EAAE,MAAmB,EAAE,eAAyB,EAAE;IAClJ,MAAM,WAAW,GAAG,IAAI,eAAe,EAAE,CAAC;IAC1C,WAAW,CAAC,GAAG,CAAC,cAAc,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;IAC9C,WAAW,CAAC,GAAG,CAAC,YAAY,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;IAC5C,WAAW,CAAC,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IACxC,WAAW,CAAC,GAAG,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC;IACzC,WAAW,CAAC,GAAG,CAAC,0BAA0B,EAAE,GAAG,CAAC,CAAC;IACjD,WAAW,CAAC,GAAG,CAAC,wBAAwB,EAAE,MAAM,CAAC,CAAC;IAClD,WAAW,CAAC,GAAG,CAAC,sBAAsB,EAAE,SAAS,CAAC,CAAC;IACnD,KAAK,MAAM,WAAW,IAAI,YAAY,EAAE;QACtC,WAAW,CAAC,MAAM,CAAC,mBAAmB,EAAE,WAAW,CAAC,CAAC;KACtD;IAED,MAAM,OAAO,GAAG,uBAAuB,CAAC,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC;IAC1E,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC,CAAC;IACtC,OAAO,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;AAC/B,CAAC;AAEM,eAAe,gBAAgB,CAAC,GAAuB,EAAE,SAAiB,EAAE,MAAmB;IACpG,MAAM,OAAO,GAAG,uBAAuB,CAAC,GAAG,EAAE,QAAQ,SAAS,EAAE,EAAE,IAAI,eAAe,EAAE,EAAE,MAAM,CAAC,CAAC;IACjG,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC,CAAC;IACtC,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;IACtC,OAAO,OAAO,CAAC,IAAI,CAAC;AACtB,CAAC;AAEM,eAAe,wBAAwB,CAAC,GAAuB,EAAE,SAAiB,EAAE,MAAmB;IAC5G,MAAM,WAAW,GAAG,IAAI,eAAe,EAAE,CAAC;IAC1C,WAAW,CAAC,GAAG,CAAC,mBAAmB,EAAE,SAAS,CAAC,CAAC;IAEhD,MAAM,OAAO,GAAG,uBAAuB,CAAC,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC;IAC1E,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC,CAAC;IACtC,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;IACvC,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC1B,CAAC;SAWe,gBAAgB,CAAC,WAAoB;IACnD,QAAQ,WAAW;QACjB,KAAK,aAAa;YAChB,OAAO,KAAK,CAAC;QACf,KAAK,OAAO;YACV,OAAO,KAAK,CAAC;QACf,KAAK,OAAO;YACV,OAAO,KAAK,CAAC;QACf,KAAK,aAAa;YAChB,OAAO,MAAM,CAAC;QAChB;YACE,OAAO,KAAK,CAAC;KAChB;AACH,CAAC;SAEe,aAAa,CAAC,GAAW;IACvC,MAAM,MAAM,GAAG,2DAA2D,CAAC;IAC3E,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAChC,IAAI,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,EAAE,EAAE;QAClC,OAAO,iCAAiC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;KACpD;IAED,OAAO,IAAI,CAAC;AACd,CAAC;SAEe,4BAA4B,CAAC,GAAmB;IAC9D,IAAI,CAAC,GAAG,IAAI,GAAG,KAAK,GAAG,EAAE;QACvB,OAAO,IAAI,CAAC;KACb;IAED,OAAO,KAAK,CAAC;AACf,CAAC;SAEe,QAAQ,CAAC,UAAsC;IAC7D,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;QAC5C,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE;YACV,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;SACtB;KACF;IAED,OAAO,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC3B;;;;;;;;;;;","names":[],"sources":["src/model/AicoApiRequestInfo.ts","src/utils/utils.ts"],"sourcesContent":["export type AicoApiRequestInfo = {\n baseApi: string;\n bearerToken: string;\n};\n\nexport const getAuthenticatedHeaders = (bearerToken: string): Headers => {\n const headers = new Headers();\n headers.append('Accept', 'application/vnd.api+json');\n headers.append('Authorization', `Bearer ${bearerToken}`);\n return headers;\n};\n\nexport const getAuthenticatedRequest = (api: AicoApiRequestInfo, route: string, query: URLSearchParams, signal?: AbortSignal): Request => {\n return new Request(new URL(`${route}?${query.toString()}`, api.baseApi), {\n headers: getAuthenticatedHeaders(api.bearerToken),\n signal,\n });\n};\n","import { Article } from '../components';\nimport { AicoApiRequestInfo, getAuthenticatedHeaders, getAuthenticatedRequest } from '../model/AicoApiRequestInfo';\nimport { NewsResponse } from '../model/NewsResponse';\n\nexport async function fetchNewsArticles(api: AicoApiRequestInfo, page: number, size: number, signal: AbortSignal, newsChannels: string[] = []): Promise<NewsResponse> {\n const queryParams = new URLSearchParams();\n queryParams.set('page[number]', String(page));\n queryParams.set('page[size]', String(size));\n queryParams.set('sort', '-publishDate');\n queryParams.set('filter[isActive]', '1');\n queryParams.set('filter[excludeTag][]', 'Eisnull');\n for (const newsChannel of newsChannels) {\n queryParams.append('filter[channel][]', newsChannel);\n }\n\n const request = getAuthenticatedRequest(api, 'news', queryParams, signal);\n const response = await fetch(request);\n return await response.json();\n}\n\nexport async function fetchSpecialNewsArticles(api: AicoApiRequestInfo, page: number, size: number, signal: AbortSignal, newsChannels: string[] = []): Promise<NewsResponse> {\n const queryParams = new URLSearchParams();\n queryParams.set('page[number]', String(page));\n queryParams.set('page[size]', String(size));\n queryParams.set('sort', '-publishDate');\n queryParams.set('filter[isActive]', '1');\n queryParams.set('filter[isSpecialArticle]', '1');\n queryParams.set('filter[isLightVersion]', 'true');\n queryParams.set('filter[excludeTag][]', 'Eisnull');\n for (const newsChannel of newsChannels) {\n queryParams.append('filter[channel][]', newsChannel);\n }\n\n const request = getAuthenticatedRequest(api, 'news', queryParams, signal);\n const response = await fetch(request);\n return await response.json();\n}\n\nexport async function fetchNewsArticle(api: AicoApiRequestInfo, articleId: string, signal: AbortSignal): Promise<Article> {\n const request = getAuthenticatedRequest(api, `news/${articleId}`, new URLSearchParams(), signal);\n const response = await fetch(request);\n const article = await response.json();\n return article.data;\n}\n\nexport async function fetchNewsArticleByHandle(api: AicoApiRequestInfo, urlHandle: string, signal: AbortSignal): Promise<Article> {\n const queryParams = new URLSearchParams();\n queryParams.set('filter[urlHandle]', urlHandle);\n\n const request = getAuthenticatedRequest(api, 'news', queryParams, signal);\n const response = await fetch(request);\n const articles = await response.json();\n return articles.data[0];\n}\n\nexport async function fetchArticle(url: string, bearerToken: string, signal: AbortSignal): Promise<Article> {\n const request = new Request(new URL(url), {\n headers: getAuthenticatedHeaders(bearerToken),\n signal,\n });\n const response = await fetch(request);\n return await response.json();\n}\n\nexport function getImageWidthPrc(pictureSize?: string): string {\n switch (pictureSize) {\n case 'extra-small':\n return '28%';\n case 'small':\n return '40%';\n case 'large':\n return '80%';\n case 'extra large': // TODO: has - or not?\n return '100%';\n default:\n return '60%';\n }\n}\n\nexport function getYoutubeURL(url: string): string | null {\n const regExp = /.*(?:youtu.be\\/|v\\/|u\\/\\w\\/|embed\\/|watch\\?v=)([^#&?]*).*/;\n const match = url.match(regExp);\n if (match && match[1].length == 11) {\n return `https://www.youtube.com/embed/${match[1]}`;\n }\n\n return null;\n}\n\nexport function strIsNullOrEmptyOrWhitespace(str?: string | null): boolean {\n if (!str || str === ' ') {\n return true;\n }\n\n return false;\n}\n\nexport function getClass(conditions: { [key: string]: boolean }): string {\n const classes: string[] = [];\n for (const kvp of Object.entries(conditions)) {\n if (kvp[1]) {\n classes.push(kvp[0]);\n }\n }\n\n return classes.join(' ');\n}\n"],"version":3}
@@ -1 +0,0 @@
1
- {"file":"utils-25eef7c7.js","mappings":"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","names":[],"sources":["src/model/AicoApiRequestInfo.ts","src/utils/utils.ts"],"sourcesContent":["export type AicoApiRequestInfo = {\n baseApi: string;\n bearerToken: string;\n};\n\nexport const getAuthenticatedHeaders = (bearerToken: string): Headers => {\n const headers = new Headers();\n headers.append('Accept', 'application/vnd.api+json');\n headers.append('Authorization', `Bearer ${bearerToken}`);\n return headers;\n};\n\nexport const getAuthenticatedRequest = (api: AicoApiRequestInfo, route: string, query: URLSearchParams, signal?: AbortSignal): Request => {\n return new Request(new URL(`${route}?${query.toString()}`, api.baseApi), {\n headers: getAuthenticatedHeaders(api.bearerToken),\n signal,\n });\n};\n","import { Article } from '../components';\nimport { AicoApiRequestInfo, getAuthenticatedHeaders, getAuthenticatedRequest } from '../model/AicoApiRequestInfo';\nimport { NewsResponse } from '../model/NewsResponse';\n\nexport async function fetchNewsArticles(api: AicoApiRequestInfo, page: number, size: number, signal: AbortSignal, newsChannels: string[] = []): Promise<NewsResponse> {\n const queryParams = new URLSearchParams();\n queryParams.set('page[number]', String(page));\n queryParams.set('page[size]', String(size));\n queryParams.set('sort', '-publishDate');\n queryParams.set('filter[isActive]', '1');\n queryParams.set('filter[excludeTag][]', 'Eisnull');\n for (const newsChannel of newsChannels) {\n queryParams.append('filter[channel][]', newsChannel);\n }\n\n const request = getAuthenticatedRequest(api, 'news', queryParams, signal);\n const response = await fetch(request);\n return await response.json();\n}\n\nexport async function fetchSpecialNewsArticles(api: AicoApiRequestInfo, page: number, size: number, signal: AbortSignal, newsChannels: string[] = []): Promise<NewsResponse> {\n const queryParams = new URLSearchParams();\n queryParams.set('page[number]', String(page));\n queryParams.set('page[size]', String(size));\n queryParams.set('sort', '-publishDate');\n queryParams.set('filter[isActive]', '1');\n queryParams.set('filter[isSpecialArticle]', '1');\n queryParams.set('filter[isLightVersion]', 'true');\n queryParams.set('filter[excludeTag][]', 'Eisnull');\n for (const newsChannel of newsChannels) {\n queryParams.append('filter[channel][]', newsChannel);\n }\n\n const request = getAuthenticatedRequest(api, 'news', queryParams, signal);\n const response = await fetch(request);\n return await response.json();\n}\n\nexport async function fetchNewsArticle(api: AicoApiRequestInfo, articleId: string, signal: AbortSignal): Promise<Article> {\n const request = getAuthenticatedRequest(api, `news/${articleId}`, new URLSearchParams(), signal);\n const response = await fetch(request);\n const article = await response.json();\n return article.data;\n}\n\nexport async function fetchNewsArticleByHandle(api: AicoApiRequestInfo, urlHandle: string, signal: AbortSignal): Promise<Article> {\n const queryParams = new URLSearchParams();\n queryParams.set('filter[urlHandle]', urlHandle);\n\n const request = getAuthenticatedRequest(api, 'news', queryParams, signal);\n const response = await fetch(request);\n const articles = await response.json();\n return articles.data[0];\n}\n\nexport async function fetchArticle(url: string, bearerToken: string, signal: AbortSignal): Promise<Article> {\n const request = new Request(new URL(url), {\n headers: getAuthenticatedHeaders(bearerToken),\n signal,\n });\n const response = await fetch(request);\n return await response.json();\n}\n\nexport function getImageWidthPrc(pictureSize?: string): string {\n switch (pictureSize) {\n case 'extra-small':\n return '28%';\n case 'small':\n return '40%';\n case 'large':\n return '80%';\n case 'extra large': // TODO: has - or not?\n return '100%';\n default:\n return '60%';\n }\n}\n\nexport function getYoutubeURL(url: string): string | null {\n const regExp = /.*(?:youtu.be\\/|v\\/|u\\/\\w\\/|embed\\/|watch\\?v=)([^#&?]*).*/;\n const match = url.match(regExp);\n if (match && match[1].length == 11) {\n return `https://www.youtube.com/embed/${match[1]}`;\n }\n\n return null;\n}\n\nexport function strIsNullOrEmptyOrWhitespace(str?: string | null): boolean {\n if (!str || str === ' ') {\n return true;\n }\n\n return false;\n}\n\nexport function getClass(conditions: { [key: string]: boolean }): string {\n const classes: string[] = [];\n for (const kvp of Object.entries(conditions)) {\n if (kvp[1]) {\n classes.push(kvp[0]);\n }\n }\n\n return classes.join(' ');\n}\n"],"version":3}