{"version":3,"file":"js/indigenous-cinema-subject-list-page.min.js","mappings":"gHAEA,SAAS,iBAAiB,mBAAoB,IAAM,CAC5B,IAAI,IAAqB,EACjC,KAAK,CACrB,CAAC,C,omBCqBD,IAAqBA,EAArB,cAA4D,IAAW,CAAvE,kCAIE,mBAAgB,GAIhB,gBAAa,GAGb,cAAW,GAGX,0BAA6C,KAG7C,iBAAoC,KAGpC,cAA8B,KAG9B,kBAAuB,GAGvB,oBAAyB,GAGzB,WAAgB,GAGhB,oBAAmC,CAAC,EAGpC,eAAqB,GAGrB,kBAA8B,KAE9B,KAAQ,iBAA4B,GA+BpC,wBAAqB,IAAM,CACzB,OAAO,UAAU,KAAK,CACpB,MAAO,KAAW,cAClB,gBAAiB,WACjB,gBAAiB,GAAG,KAAK,QAAQ,GACjC,gBAAiB,KACnB,CAAC,CACH,EAuCA,eAAY,IAAY,CA/I1B,UAiJI,MAAMC,EADyB,MAAM,MAAK,cAAS,cAAc,wCAAwC,IAA/D,cAAkE,iBAAiB,iBAAiB,IAApG,OAAyG,CAAC,CAAC,EACvH,KAAMC,GAAMA,EAAE,QAAQ,aAAe,MAAM,EACzE,KAAK,UAAW,EAAAD,GAAe,QAAQ,QAAvB,OAAgC,GAEhD,MAAME,EAAe,IAAI,gBAAgB,OAAO,SAAS,MAAM,EAC/DA,EAAa,IAAI,WAAY,KAAK,QAAQ,EAC1C,OAAO,QAAQ,aAAa,KAAM,GAAI,IAAIA,EAAa,SAAS,CAAC,EAAE,CACrE,EAjFU,cAAsB,CAC9B,SAAS,iBAAiB,4BAA8BC,GAAU,CAChEA,EAAM,eAAe,EACrB,KAAK,UAAU,CACjB,CAAC,CACH,CAEM,QAASC,EAAoC,gCACjD,MAAMC,EAAkB,KAAK,iBAG7B,GAFA,KAAK,iBAAmB,GAEpBD,EAAmB,IAAI,UAAU,GAAK,KAAK,SAAU,CACvD,KAAK,UAAY,GACjB,MAAME,EAAO,KAAK,WAAa,MAAQ,GAAK,KAAK,SAGjDC,EAAA,EAAM,YAAS,MAAc,CAAC,EAC9B,MAAMA,EAAA,EAAM,YAAS,MAAW,CAAE,OAAQ,uBAAwB,KAAM,QAAS,QAAS,GAAG,KAAK,UAAU,GAAI,SAAU,GAAGD,CAAI,GAAI,KAAM,GAAI,CAAC,CAAC,EACjJ,KAAK,SAAWC,EAAA,EAAM,SAAS,EAAE,MAAM,KACvC,KAAK,UAAY,GAEZF,GACH,KAAK,mBAAmB,CAE5B,CACF,CAAC,CAAD,CAWM,mBAAqB,gCA1G7B,cA6GI,GAFA,mBAAM,0BAAN,IAAwB,EAEpBE,EAAA,EAAM,SAAS,EAAE,SAAS,SAAW,OAAW,CAClD,MAAMA,EAAA,EAAM,YAAS,MAAiB,CAAE,cAAe,aAAc,KAAM,GAAI,CAAC,CAAC,EACjF,MAAMC,GAAsB,EAAAD,EAAA,EAAM,SAAS,EAAE,SAAS,OAA1B,OAAkC,CAAC,EACzDE,EAAe,OAAO,SAAS,oBAAqB,sBAAsB,EAIhF,GAHA,KAAK,YAAcD,EACnB,KAAK,MAAQ,KAAK,aAAeC,EAE7B,KAAK,cAAe,CACtB,MAAMF,EAAA,EAAM,YAAS,MAAmB,CAAE,KAAM,KAAK,cAAe,cAAe,YAAa,CAAC,CAAC,EAClG,MAAMG,EAAyBH,EAAA,EAAM,SAAS,EAAE,SAAS,oBACnDI,GAAwB,EAAAD,GAAwB,WAAxB,OAAoC,CAAC,EACnE,KAAK,YAAc,KAAK,qBAAuBC,EAC/C,KAAK,MAAQ,KAAK,gBAAiB,EAAAD,GAAwB,OAAxB,OAAgC,GAEnE,KAAK,eAAe,KAAK,CACvB,MAAO,GAAG,KAAK,YAAY,KAAKF,GAAqB,MAAM,IAC3D,KAAM,GAAG,OAAO,SAAS,oBAAqB,8BAA8B,CAAC,EAC/E,CAAC,CACH,CAEA,GAAI,KAAK,WAAY,CACnB,MAAMD,EAAA,EAAM,YAAS,MAAwB,CAAE,KAAM,KAAK,cAAe,UAAW,KAAK,WAAY,cAAe,YAAa,CAAC,CAAC,EACnI,MAAMK,EAAqBL,EAAA,EAAM,SAAS,EAAE,SAAS,cACrD,KAAK,OAAQ,EAAAK,GAAoB,OAApB,OAA4B,GACzC,KAAK,eAAe,KAAK,CACvB,MAAO,GAAG,KAAK,cAAc,MAAK,OAAK,uBAAL,cAA2B,MAAM,IACnE,KAAM,GAAG,IAAY,wBAAwB,QAAQ,SAAU,KAAK,aAAa,CAAC,EACpF,CAAC,CACH,CACA,KAAK,aAAeL,EAAA,EAAM,SAAS,EAAE,SAAS,SAC9C,KAAK,UAAY,EACnB,CACF,CAAC,CAAD,CAYA,QAAU,CAzJZ,gBA0JI,OAAI,KAAK,gBACA;AAAA;AAAA,UAEH,KAAK,YAAY;AAAA;AAAA,QAKlB,KAAK,aAUH;AAAA;AAAA,QAEH,KAAK,iBAAgB,8BAA6B,KAAK,UAAU,KAAK,cAAc,CAAC,qCAAuC,IAAO;AAAA;AAAA,cAE7H,KAAK,KAAK,WAAW,KAAK,YAAa,OAAK,WAAL,cAAe,QAAS,OAAK,cAAL,cAAkB,MAAM;AAAA;AAAA,IAEjG,KAAK,cACH;AAAA,UACE,OAAK,WAAL,cAAe,UAAW,KAAI,wCAAuC,KAAc,SAAS,UAAY,IAAO;AAAA;AAAA,SAE/G,OAAK,WAAL,cAAe,IAAI,CAACM,EAAMC,OACvB;AAAA;AAAA,yBAEcD,EAAK,EAAE;AAAA;AAAA;AAAA;AAAA,4BAIJ,KAAK,UAAU,CAAE,aAAcC,EAAQ,EAAG,MAAO,kBAAmB,kBAAmBD,EAAK,MAAO,cAAe,wCAAyC,cAAe,OAAQ,kBAAmB,KAAkB,mBAAoB,YAAa,KAAY,iBAAkB,CAAC,CAAC;AAAA;AAAA;AAAA,SAIjT,CAAC;AAAA,iBAEE;AAAA,QACA,OAAK,cAAL,cAAkB,UAAW,KAAI,wCAAuC,KAAc,SAAS,UAAY,IAAO;AAAA;AAAA;AAAA,OAGlH,OAAK,cAAL,cAAkB,IAAKA,MAClB;AAAA;AAAA;AAAA,qBAGUA,EAAK,IAAI;AAAA,oBACV,KAAK,cAAgB,IAAY,iCAAiC,QAAQ,SAAU,KAAK,aAAa,EAAE,QAAQ,kBAAmBA,EAAK,IAAK,EAAI,IAAY,wBAAwB,QAAQ,SAAUA,EAAK,IAAK,CAAC;AAAA;AAAA,cAExNA,EAAK,IAAI;AAAA;AAAA,cAGpB,CAAC;AAAA;AAAA,aAES;AAAA;AAAA,SAhDA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,aAmDX,CACF,EA7LqBd,EA0CZ,OAAS,CAAC,IAAe,IAAY,IAAgB,GAAW,EAtCvE,MADC,MAAS,CAAE,KAAM,OAAQ,UAAW,gBAAiB,CAAC,GAHpCA,EAInB,6BAIA,MADC,MAAS,CAAE,KAAM,OAAQ,UAAW,aAAc,CAAC,GAPjCA,EAQnB,0BAGA,MADC,MAAS,CAAE,KAAM,OAAQ,UAAW,UAAW,CAAC,GAV9BA,EAWnB,wBAGA,MADC,MAAM,GAbYA,EAcnB,oCAGA,MADC,MAAM,GAhBYA,EAiBnB,2BAGA,MADC,MAAM,GAnBYA,EAoBnB,wBAGA,MADC,MAAM,GAtBYA,EAuBnB,4BAGA,MADC,MAAM,GAzBYA,EA0BnB,8BAGA,MADC,MAAM,GA5BYA,EA6BnB,qBAGA,MADC,MAAM,GA/BYA,EAgCnB,8BAGA,MADC,MAAM,GAlCYA,EAmCnB,yBAGA,MADC,MAAM,GArCYA,EAsCnB,4BAtCmBA,EAArB,MADC,MAAc,oCAAoC,GAC9BA,CAA8B,E,sVCnB5C,IAAMgB,EAAN,cAAyC,IAAW,CAApD,kCAWL,YAAkB,GAGlB,aAAmB,GAEnB,mBAA2B,CACzB,MAAMC,EAAgC,SAAS,cAAc,kCAAkC,EAC/FA,GAA+B,QAAQ,EACvCA,GAA+B,cAAc,KAAK,UAAU,EAC5DA,GAA+B,eAAe,KAAK,WAAW,EAC9DA,GAA+B,QAAQ,KAAK,WAAW,CACzD,CAEA,QAAU,CACR,MAAMC,EAAc,OAAO,QAAQ,qBAAqB,EAExD,SAAO;AAAA;AAAA,iBAEM,KAAK,iBAAiB;AAAA,2BACZ,KAAe,aAAa;AAAA;AAAA,mBAEpC,KAAK,MAAM;AAAA,qBACT,KAAK,SAAS;AAAA,gBACnB,KAAK,QAAU,KAAO,IAAO;AAAA;AAAA;AAAA,sBAGvBA,CAAW;AAAA;AAAA;AAAA;AAAA,KAK/B,CACF,EAzCE,MADC,MAAM,GADIF,EAEX,yBAGA,MADC,MAAS,CAAE,KAAM,OAAQ,UAAW,aAAc,CAAC,GAJzCA,EAKX,0BAGA,MADC,MAAS,CAAE,KAAM,OAAQ,UAAW,cAAe,CAAC,GAP1CA,EAQX,2BAGA,MADC,MAAS,CAAE,UAAW,IAA0B,UAAW,SAAU,CAAC,GAV5DA,EAWX,sBAGA,MADC,MAAS,CAAE,UAAW,IAA0B,UAAW,UAAW,CAAC,GAb7DA,EAcX,uBAdWA,EAAN,MADN,MAAc,gCAAgC,GAClCA,CAA0B,ECgBvC,WAtBsB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,G,k1BC4Bf,IAAMG,EAAN,cAAwC,IAAW,CA6BxD,aAAe,CACb,MAAM,EAtBR,wBAA6C,KAAuB,OAGpE,UAAwB,KAGxB,iBAA+B,KAiB7B,KAAK,aAAe,KAAK,aAAa,KAAK,IAAI,CACjD,CAZA,WAAW,QAAU,CACnB,MAAO,CAAC,IAAe,KAAQ;AAAA;AAAA;AAAA;AAAA,QAK/B,CACF,CAOM,mBAAoC,gCACxC,mBAAM,0BAAN,IAAwB,EACxB,KAAK,kBAAoBX,EAAA,EAAM,UAAU,KAAK,YAAY,EAC1D,KAAK,aAAa,CACpB,CAAC,CAAD,CAEA,sBAA8B,CAC5B,MAAM,qBAAqB,EAC3B,KAAK,kBAAkB,CACzB,CAEA,yBAA0BY,EAAcC,EAAqBC,EAA4B,CACvF,MAAM,yBAAyBF,EAAMC,EAAMC,CAAK,EAC5CF,IAAS,eAAiBC,IAAS,OAErC,KAAK,KAAO,KAEZ,KAAK,WAAW,EAEpB,CAEA,cAAsB,CACpB,KAAK,WAAab,EAAA,EAAM,SAAS,EACjC,KAAK,WAAW,CAClB,CAEA,wBAAyBe,EAAgB,CACvC,MAAMC,KAAiB,MAAsBhB,EAAA,EAAM,SAAS,EAAE,YAAae,EAAK,EAAE,EAC5EE,EAA0BD,GAAgB,UAEhD,OAAKC,KAIE;AAAA;AAAA,aAEDC,EAAA,IAAsBD,CAAuB,CAAC;AAAA;AAAA,MAL3C,IAQX,CAEA,sBAAuBF,EAAgB,CACrC,SAAO;AAAA;AAAA;AAAA,yBAGcA,EAAK,EAAE;AAAA,0BACNA,EAAK,KAAK;AAAA;AAAA;AAAA;AAAA;AAAA,aAMlC,CAEA,YAAc,CACZ,KAAM,CAAE,MAAAI,CAAM,EAAInB,EAAA,EAAM,SAAS,EAC7B,KAAK,aACP,KAAK,QAAO,MAAemB,EAAO,KAAK,UAAU,EAC7C,KAAK,OACP,KAAK,mBAAqBA,EAAM,iBAChC,KAAK,sBAAqB,MAA6B,KAAK,IAAI,GAGtE,CAEA,kBAA4B,CAhI9B,QAiII,MAAMC,EAA0B,CAC9B,MAAO,KAAW,YAClB,cAAe,OAAO,SAAS,mBAAoB,SAAS,EAC5D,YAAa,KAAY,aACzB,cAAe,KAAc,KAC7B,kBAAmB,KAAkB,KACrC,cAAe,KAAK,MAAQ,GAAG,SAAS,EACxC,mBAAmB,OAAK,OAAL,cAAW,KAChC,EAEA,OAAO,KAAK,UAAU,OACjBA,CAAQ,EADS,CAEpB,mBAAmB,OAAK,OAAL,cAAW,KAChC,CAAC,EACH,CAEA,QAAU,CAjJZ,QAkJI,GAAI,CAAC,KAAK,KACR,SAAO;AAAA;AAAA;AAAA;AAAA,yBAOT,MAAMC,GAAoB,OAAK,mBAAmB,KAAK,KAAK,QAAQ,IAA1C,OAA+C,KAAK,mBAAmB,KAEjG,SAAO;AAAA;AAAA;AAAA;AAAA;AAAA,iBAKM,KAAK,KAAK,KAAK;AAAA,6BACNC,EAAA,IAAqB,KAAK,kBAAkB,CAAC;AAAA,mBACvD,MAAU,KAAK,IAAI,CAAC;AAAA,6BACP,OAAO,2BAA2B,QAAQ,SAAU,OAAO,gCAAgC,CAAC;AAAA,0BAC/F,KAAK,KAAK,SAAS;AAAA,iCACZD,CAAgB;AAAA,2BACvB,OAAK,iBAAiB,IAAtB,OAA2B,IAAO;AAAA;AAAA;AAAA;AAAA,SAItD;AAAA,eACM,MAAe,KAAK,KAAM,KAAK,mBAAoB,GAAM,KAAK,WAAW,IAAI,CAAC;AAAA,eAC9E,MAAuB,KAAK,mBAAoB,KAAK,KAAM,EAAI,CAAC;AAAA,YAChE,CAAC,aAAc,QAAQ,EAAE,SAAS,KAAK,KAAK,QAAQ,KAC1D,MAA4B,KAAK,KAAM,KAAK,mBAAoB,EAAI,KACpE,MAAc,KAAK,KAAM,KAAK,mBAAoB,EAAI,CAAC;AAAA;AAAA,UAEnD,KAAK,sBAAsB,KAAK,IAAI,CAAC;AAAA,UACrC,KAAK,wBAAwB,KAAK,IAAI,CAAC,EAAE;AAAA,kBAEjD,CACF,EAvJE,MADC,MAAS,CAAE,KAAM,OAAQ,UAAW,aAAc,CAAC,GADzCV,EAEX,0BAGA,MADC,MAAS,CAAE,KAAM,OAAQ,UAAW,OAAQ,CAAC,GAJnCA,EAKX,qBAGA,MADC,MAAM,GAPIA,EAQX,kCAGA,MADC,MAAM,GAVIA,EAWX,oBAGA,MADC,MAAM,GAbIA,EAcX,2BAdWA,EAAN,MADN,MAAc,+BAA+B,GACjCA,CAAyB,C,8BCHtC,WAzBsB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,G","sources":["webpack:///./src/js/sections/indigenous-cinema/_indigenous-cinema-header.ts","webpack:///./src/js/wc/indigenous-cinema/NFBIndigenousCinemaSubjectList.ts","webpack:///./src/js/wc/buttons/NFBDeleteFilmHistoryButton.ts","webpack:///./src/sass/wc/NFBViewingHistoryWorkCard.sass","webpack:///./src/js/wc/cards/NFBViewingHistoryWorkCard.ts","webpack:///./src/sass/sections/indigenous-cinema/_reset.sass"],"sourcesContent":["import HorizontalNavManager from '@web-nfb/frontend-static/design-system/script/elements/HorizontalNavManager'\n\ndocument.addEventListener('DOMContentLoaded', () => {\n  const horizontalNav = new HorizontalNavManager()\n  horizontalNav.init()\n})\n","/**\n * Class NFBIndigenousCinemaSubjectList\n */\nimport { LitElement, nothing, PropertyValues } from 'lit'\nimport { html } from 'lit/static-html.js'\nimport { customElement, state, property } from 'lit/decorators.js'\n\nimport normanPaths from '@src/js/helpers/paths'\nimport { store } from '@src/js/redux/store'\nimport { fetchSubjectList, fetchSubjectBySlug, SubjectInfo, fetchSubjectByChildSlug } from '@src/js/redux/subjectsReducer'\nimport { fetchWorks, WorkCard, resetWorkList } from '@src/js/redux/worksReducer'\nimport { BreadcrumbItem } from '@src/js/wc/NFBBreadcrumb'\nimport { ERROR_MESSAGE, GTM_EVENTS, GTM_LIST_CATEGORY, GTM_LIST_ID } from '@src/js/constants'\n\nimport '@src/js/wc/cards/NFBViewingHistoryWorkCard'\n\n// @ts-expect-error Lit Sass import\nimport listingStyles from '@web-nfb/frontend-static/design-system/sass/elements/listing.sass?lit'\n// @ts-expect-error Lit Sass import\nimport pageStyles from '@web-nfb/frontend-static/design-system/sass/elements/page.sass?lit'\n// @ts-expect-error Lit Sass import\nimport gridListStyles from '@web-nfb/frontend-static/design-system/sass/layout/grid-list.sass?lit'\n// @ts-expect-error Lit Sass import\nimport resetStyles from '@src/sass/sections/indigenous-cinema/_reset.sass?lit'\n\n@customElement('nfb-indigenous-cinema-subject-list')\nexport default class NFBIndigenousCinemaSubjectList extends LitElement {\n  // primary slug is always indigenous-cinema (first level)\n  // second level\n  @property({ type: String, attribute: 'secondary-slug' })\n  secondarySlug = ''\n\n  // third level\n  @property({ type: String, attribute: 'detail-slug' })\n  detailSlug = ''\n\n  @property({ type: String, attribute: 'language' })\n  language = ''\n\n  @state()\n  secondarySubjectList: SubjectInfo[] | null = null\n\n  @state()\n  subjectList: SubjectInfo[] | null = null\n\n  @state()\n  workList: WorkCard[] | null = null\n\n  @state()\n  primaryTitle: string = ''\n\n  @state()\n  secondaryTitle: string = ''\n\n  @state()\n  title: string = ''\n\n  @state()\n  breadcrumbList: BreadcrumbItem[] = []\n\n  @state()\n  _isLoaded: boolean = false\n\n  @state()\n  errorMessage: string | null = null\n\n  private _isInitialUpdate: boolean = true\n\n  static styles = [listingStyles, pageStyles, gridListStyles, resetStyles]\n\n  protected firstUpdated (): void {\n    document.addEventListener('nfbselect:valuehaschanged', (event) => {\n      event.preventDefault()\n      this.updateURL()\n    })\n  }\n\n  async updated (_changedProperties: PropertyValues) {\n    const isInitialUpdate = this._isInitialUpdate\n    this._isInitialUpdate = false\n\n    if (_changedProperties.has('language') && this.language) {\n      this._isLoaded = false\n      const lang = this.language === 'all' ? '' : this.language\n\n      // reset the worklist to avoid combining english data with french data\n      store.dispatch(resetWorkList())\n      await store.dispatch(fetchWorks({ subset: 'nfb/indigenous-films', sort: 'title', subject: `${this.detailSlug}`, language: `${lang}`, size: 999 }))\n      this.workList = store.getState().works.list\n      this._isLoaded = true\n\n      if (!isInitialUpdate) {\n        this.sendGTMPageViewSpa()\n      }\n    }\n  }\n\n  sendGTMPageViewSpa = () => {\n    window.dataLayer.push({\n      event: GTM_EVENTS.PAGE_VIEW_SPA,\n      nfb_filter_type: 'language',\n      nfb_filter_name: `${this.language}`,\n      nfb_sortby_name: 'n/a'\n    })\n  }\n\n  async connectedCallback () {\n    super.connectedCallback()\n\n    if (store.getState().subjects.status === undefined) {\n      await store.dispatch(fetchSubjectList({ category_type: 'indigenous', size: 100 }))\n      const primarySubjectsList = store.getState().subjects.list ?? []\n      const primaryTitle = window.pgettext('indigenous-cinema', 'Indigenous Subjects ')\n      this.subjectList = primarySubjectsList\n      this.title = this.primaryTitle = primaryTitle\n\n      if (this.secondarySlug) {\n        await store.dispatch(fetchSubjectBySlug({ slug: this.secondarySlug, category_type: 'indigenous' }))\n        const secondarySubjectsState = store.getState().subjects.subjectBySlugDetail\n        const secondarySubjectsList = secondarySubjectsState?.children ?? []\n        this.subjectList = this.secondarySubjectList = secondarySubjectsList\n        this.title = this.secondaryTitle = secondarySubjectsState?.name ?? ''\n\n        this.breadcrumbList.push({\n          title: `${this.primaryTitle} (${primarySubjectsList?.length})`,\n          link: `${window.pgettext('indigenous-cinema', '/indigenous-cinema/subjects/')}`\n        })\n      }\n\n      if (this.detailSlug) {\n        await store.dispatch(fetchSubjectByChildSlug({ slug: this.secondarySlug, childSlug: this.detailSlug, category_type: 'indigenous' }))\n        const subjectDetailState = store.getState().subjects.subjectDetail\n        this.title = subjectDetailState?.name ?? ''\n        this.breadcrumbList.push({\n          title: `${this.secondaryTitle} (${this.secondarySubjectList?.length})`,\n          link: `${normanPaths.indigenousCinemaSubject.replace('{slug}', this.secondarySlug)}`\n        })\n      }\n      this.errorMessage = store.getState().subjects.apiError\n      this._isLoaded = true\n    }\n  }\n\n  updateURL = (): void => {\n    const options: HTMLElement[] = Array.from(document.querySelector('[data-ui-el=\"nfb-form-select-trigger\"]')?.querySelectorAll('[role=\"option\"]') ?? [])\n    const selectedValue = options.find((o) => o.dataset.uiSelected === 'true')\n    this.language = selectedValue?.dataset.value ?? ''\n\n    const searchParams = new URLSearchParams(window.location.search)\n    searchParams.set('language', this.language)\n    window.history.replaceState(null, '', `?${searchParams.toString()}`)\n  }\n\n  render () {\n    if (this.errorMessage) {\n      return html`\n       <div class=\"nfb-indigenous-cinema\" data-cy=\"error-message\">\n        ${this.errorMessage}\n       </div>\n      `\n    }\n\n    if (!this._isLoaded) {\n      return html`\n      <div class=\"nfb-indigenous-cinema\">\n        <nfb-spinner\n          is-loading=\"true\"\n          is-dark=\"true\"\n        ></nfb-spinner>\n      </div>`\n    }\n\n    return html`\n    <div class=\"nfb-indigenous-cinema\">\n      ${this.secondarySlug ? html`<nfb-breadcrumb list=\"${JSON.stringify(this.breadcrumbList)}\" is-dark=\"true\"></nfb-breadcrumb>` : nothing}\n      <div class=\"nfb-page__title\">\n        <h1>${this.title}<span> (${this.detailSlug ? this.workList?.length : this.subjectList?.length})</span></h1>\n      </div>\n  ${this.detailSlug\n    ? html`\n      ${this.workList?.length === 0 ? html`<span data-cy=\"no-result-error\">${ERROR_MESSAGE.NO_RESULT}</span>` : nothing}\n      <div class=\"nfb-grid-list nfb-grid-list--dark\">\n      ${this.workList?.map((item, index) => {\n    return html`\n        <nfb-display-work-card\n          registry-id=\"${item.id}\"\n          bookmark-button-type=\"add\"\n          is-dark=\"true\"\n          is-rounded=\"true\"\n          gtm-attributes=\"${JSON.stringify({ nfb_position: index + 1, event: 'nfb_select_work', nfb_version_title: item.title, nfb_list_name: 'Cinema autochtone | Indigenous Cinema', nfb_list_type: 'grid', nfb_list_category: GTM_LIST_CATEGORY.SPECIAL_COLLECTION, nfb_list_id: GTM_LIST_ID.INDIGENOUS_CINEMA })}\"\n        >\n        </nfb-display-work-card>\n        `\n  })}\n      </div>`\n    : html`\n    ${this.subjectList?.length === 0 ? html`<span data-cy=\"no-result-error\">${ERROR_MESSAGE.NO_RESULT}</span>` : nothing}\n      <div class=\"nfb-listing nfb-listing--dark\">\n      <ul>\n    ${this.subjectList?.map((item) => {\n    return html`\n        <li>\n          <a\n            title=\"${item.name}\"\n            href=\"${this.secondarySlug ? normanPaths.indigenousCinemaSecondarySubject.replace('{slug}', this.secondarySlug).replace('{secondarySlug}', item.slug!) : normanPaths.indigenousCinemaSubject.replace('{slug}', item.slug!)}\"\n          >\n            ${item.name}\n          </a>\n        </li>`\n  })}\n        </ul>\n      </div>`}\n    </div>\n    `\n  }\n}\n\ndeclare global {\n  interface HTMLElementTagNameMap {\n    'nfb-indigenous-cinema-subject-list': NFBIndigenousCinemaSubjectList\n  }\n}\n","import { LitElement, html, nothing } from 'lit'\nimport { customElement, property, state } from 'lit/decorators.js'\n\nimport { PrimaryVariant } from '@web-nfb/frontend-static/design-system/wc/button/NFBButton'\nimport { stringToBooleanConverter } from '@web-nfb/frontend-static/design-system/wc/_utils'\n\n@customElement('nfb-delete-film-history-button')\nexport class NFBDeleteFilmHistoryButton extends LitElement {\n  @state()\n  isLoading: boolean\n\n  @property({ type: Number, attribute: 'registry-id' })\n  registryId: number\n\n  @property({ type: String, attribute: 'source-title' })\n  sourceTitle: string\n\n  @property({ converter: stringToBooleanConverter, attribute: 'is-dark' })\n  isDark: boolean = false\n\n  @property({ converter: stringToBooleanConverter, attribute: 'is-small' })\n  isSmall: boolean = false\n\n  removeFilmHistory (): void {\n    const nfbViewingHistoryConfirmation = document.querySelector('nfb-viewing-history-confirmation')\n    nfbViewingHistoryConfirmation?.setOpen()\n    nfbViewingHistoryConfirmation?.setRegistryId(this.registryId)\n    nfbViewingHistoryConfirmation?.setSourceTitle(this.sourceTitle)\n    nfbViewingHistoryConfirmation?.setText(this.sourceTitle)\n  }\n\n  render () {\n    const buttonLabel = window.gettext('Remove from My List')\n\n    return html`\n      <nfb-button\n        @click=${this.removeFilmHistory}\n        primary-variant=\"${PrimaryVariant.roundWithIcon}\"\n        icon-name=\"delete\"\n        is-dark=\"${this.isDark}\"\n        is-active=\"${this.isLoading}\"\n        size=\"${this.isSmall ? 'sm' : nothing}\"\n        data-ui-el=\"nfb-add-to-mylist-button\"\n        data-cy=\"nfb-add-to-my-list-button\"\n        aria-label=\"${buttonLabel}\"\n        title=\"\"\n      >\n      </nfb-button>\n    `\n  }\n}\n\ndeclare global {\n  interface HTMLElementTagNameMap {\n    'nfb-delete-film-history-button': NFBDeleteFilmHistoryButton\n  }\n}\n","import {css} from 'lit';\nexport const styles = css`[slot=legend] {\n  display: flex;\n  justify-content: flex-start;\n  gap: 0 0.5rem;\n  flex-wrap: wrap;\n}\n\n.nfb-legend {\n  width: auto;\n}\n\nnfb-work-page-creator::part(creator), nfb-work-page-creator::part(separator), .nfb-card__description {\n  color: #d4d3d6;\n  font-weight: normal;\n  font-size: 0.75rem;\n}\n\n.nfb-card__description {\n  display: flex;\n  align-items: flex-end;\n  padding-bottom: 0.5rem;\n}`;\nexport default styles;\n","import { html, LitElement, nothing, css } from 'lit'\nimport { customElement, property, state } from 'lit/decorators.js'\nimport { Unsubscribe } from '@reduxjs/toolkit'\n\nimport { selectFilmHistoryById } from '@src/js/redux/filmHistoryReducer'\nimport { store, RootState } from '@src/js/redux/store'\nimport { WorkCard, selectWorkById } from '@src/js/redux/worksReducer'\nimport { GTMSelectWork } from '@src/js/types/GTM'\nimport { GTM_EVENTS, GTM_LIST_CATEGORY, GTM_LIST_ID, GTM_LIST_TYPE } from '@src/js/constants'\n\nimport { getAvailabilityStatusForWork, WorkAvailabilityStatus } from '@src/js/helpers/availability'\nimport {\n  getRestriction,\n  getAvailabilityMessage,\n  cardShouldBeDisabled,\n  handleUrl,\n  getSeriesOrCollectionLegend,\n  getFilmLegend\n} from '@src/js/helpers/element/card'\nimport { formatHistoryItemDate } from '@src/js/helpers/format'\n\nimport '@src/js/wc/buttons/NFBDeleteFilmHistoryButton'\n\n// @ts-expect-error Lit Sass import\nimport styles from '@src/sass/wc/NFBViewingHistoryWorkCard.sass?lit'\n// @ts-expect-error Lit Sass import\nimport cardStyleSlot from '@web-nfb/frontend-static/design-system/wc/card/NFBCardSlot.sass?lit'\n\n@customElement('nfb-viewing-history-work-card')\nexport class NFBViewingHistoryWorkCard extends LitElement {\n  @property({ type: Number, attribute: 'registry-id' })\n  registryId: number\n\n  @property({ type: Number, attribute: 'index' })\n  index: number\n\n  @state()\n  availabilityStatus: WorkAvailabilityStatus = WorkAvailabilityStatus.PUBLIC\n\n  @state()\n  work: WorkCard | null = null\n\n  @state()\n  contextWork: WorkCard | null = null\n\n  _storeUnsubscribe: Unsubscribe\n  _rootState: RootState\n  _thumbnailPatterns: { [key: string]: string }\n\n  static get styles () {\n    return [cardStyleSlot, styles, css`\n      nfb-work-page-legend::part(container) {\n        margin-top: 0;\n        margin-bottom: 0;\n      }`\n    ]\n  }\n\n  constructor () {\n    super()\n    this.stateChanged = this.stateChanged.bind(this)\n  }\n\n  async connectedCallback (): Promise<void> {\n    super.connectedCallback()\n    this._storeUnsubscribe = store.subscribe(this.stateChanged)\n    this.stateChanged()\n  }\n\n  disconnectedCallback (): void {\n    super.disconnectedCallback()\n    this._storeUnsubscribe()\n  }\n\n  attributeChangedCallback (name: string, _old: string | null, value: string | null): void {\n    super.attributeChangedCallback(name, _old, value)\n    if (name === 'registry-id' && _old !== null) {\n      // When registry id changed\n      this.work = null // show loading\n      // Update new work\n      this.updateWork()\n    }\n  }\n\n  stateChanged (): void {\n    this._rootState = store.getState()\n    this.updateWork()\n  }\n\n  getDescriptionTimestamp (work: WorkCard) {\n    const relatedHistory = selectFilmHistoryById(store.getState().filmHistory, work.id)\n    const relatedHistoryTimestamp = relatedHistory?.timestamp\n\n    if (!relatedHistoryTimestamp) {\n      return nothing\n    }\n\n    return html`\n      <div slot=\"description\" class=\"nfb-card__description\">\n        ${formatHistoryItemDate(relatedHistoryTimestamp)}\n      </div>\n    `\n  }\n\n  getDeleteActionButton (work: WorkCard) {\n    return html`\n      <div slot=\"action-button\">\n        <nfb-delete-film-history-button\n          registry-id=\"${work.id}\"\n          source-title=\"${work.title}\"\n          is-dark=\"true\"\n          is-small=\"true\"\n        >\n        </nfb-delete-film-history-button>\n      </div>`\n  }\n\n  updateWork () {\n    const { works } = store.getState()\n    if (this.registryId) {\n      this.work = selectWorkById(works, this.registryId)\n      if (this.work) {\n        this._thumbnailPatterns = works.thumbnailPattern\n        this.availabilityStatus = getAvailabilityStatusForWork(this.work)\n      }\n    }\n  }\n\n  getGTMAttributes (): string {\n    const gtmAttrs: GTMSelectWork = {\n      event: GTM_EVENTS.SELECT_WORK,\n      nfb_list_name: window.pgettext('User Profile GTM', 'History'),\n      nfb_list_id: GTM_LIST_ID.USER_HISTORY,\n      nfb_list_type: GTM_LIST_TYPE.LIST,\n      nfb_list_category: GTM_LIST_CATEGORY.USER,\n      nfb_position: (this.index + 1).toString(),\n      nfb_version_title: this.work?.title\n    }\n\n    return JSON.stringify({\n      ...gtmAttrs,\n      nfb_version_title: this.work?.title\n    })\n  }\n\n  render () {\n    if (!this.work) {\n      return html`\n        <nfb-spinner\n          is-dark=\"true\"\n          is-loading=\"true\"\n        ></nfb-spinner>`\n    }\n\n    const thumbnailPattern = (this._thumbnailPatterns[this.work.category] ?? this._thumbnailPatterns.film)\n\n    return html`\n      <nfb-card\n        part=\"nfb-card\"\n        primary-variant=\"list\"\n        is-rounded=\"false\"\n        title=\"${this.work.title}\"\n        is-unavailable=\"${cardShouldBeDisabled(this.availabilityStatus)}\"\n        href=\"${handleUrl(this.work)}\"\n        default-thumbnail=\"${window.FALLBACK_THUMBNAIL_PATTERN.replace('{path}', window.FALLBACK_THUMBNAIL_VERTICAL_PATH)}\"\n        thumbnail-path=\"${this.work.thumbnail}\"\n        thumbnail-url-pattern=\"${thumbnailPattern}\"\n        gtm-attributes=\"${this.getGTMAttributes() ?? nothing}\"\n        is-dark=\"true\"\n        hover-icon-name=\"ctrl-play\"\n      >\n    ${html` <div slot=\"legend\">\n          ${getRestriction(this.work, this.availabilityStatus, true, this._rootState.user)}\n          ${getAvailabilityMessage(this.availabilityStatus, this.work, true)}\n          ${['collection', 'series'].includes(this.work.category)\n    ? getSeriesOrCollectionLegend(this.work, this.availabilityStatus, true)\n    : getFilmLegend(this.work, this.availabilityStatus, true)}\n        </div>\n        ${this.getDeleteActionButton(this.work)}\n        ${this.getDescriptionTimestamp(this.work)}`}\n      </nfb-card>`\n  }\n}\n","import {css} from 'lit';\nexport const styles = css`.nfb-indigenous-cinema {\n  min-height: 200px;\n}\n\nul {\n  padding-left: 0;\n}\n\na {\n  text-decoration: none;\n}\n\na:focus-visible {\n  outline: none;\n  text-decoration: underline;\n  color: var(--nfb-listing-link-hover) !important;\n}\n\n.nfb-listing {\n  color: var(--nfb-listing-color) !important;\n}\n\n.nfb-page__title--uppercase {\n  text-transform: uppercase;\n}`;\nexport default styles;\n"],"names":["NFBIndigenousCinemaSubjectList","selectedValue","o","searchParams","event","_changedProperties","isInitialUpdate","lang","store","primarySubjectsList","primaryTitle","secondarySubjectsState","secondarySubjectsList","subjectDetailState","item","index","NFBDeleteFilmHistoryButton","nfbViewingHistoryConfirmation","buttonLabel","NFBViewingHistoryWorkCard","name","_old","value","work","relatedHistory","relatedHistoryTimestamp","format","works","gtmAttrs","thumbnailPattern","card"],"sourceRoot":""}