{"version":3,"file":"search.helper.cjs","names":["parseFilmType","parseColor","addProtocol","parseIdFromUrl"],"sources":["../../src/helpers/search.helper.ts"],"sourcesContent":["import { HTMLElement } from 'node-html-parser';\nimport { CSFDColorRating, CSFDFilmTypes } from '../dto/global';\nimport { CSFDMovieCreator } from '../dto/movie';\nimport { CSFDColors } from '../dto/user-ratings';\nimport { addProtocol, parseColor, parseFilmType, parseIdFromUrl } from './global.helper';\n\ntype Creator = 'Režie:' | 'Hrají:';\n\nexport const getSearchType = (el: HTMLElement): CSFDFilmTypes => {\n  const type = el.querySelectorAll('.film-title-info .info')[1];\n  return parseFilmType(type?.innerText?.replace(/[{()}]/g, '')?.trim() || 'film');\n};\n\nexport const getSearchTitle = (el: HTMLElement): string => {\n  return el.querySelector('.film-title-name').text;\n};\n\nexport const getSearchYear = (el: HTMLElement): number => {\n  // Optimization: Use querySelector instead of querySelectorAll(...)[0]\n  return +el.querySelector('.film-title-info .info')?.innerText.replace(/[{()}]/g, '');\n};\n\nexport const getSearchUrl = (el: HTMLElement): string => {\n  return el.querySelector('.film-title-name').attributes.href;\n};\n\nexport const getSearchColorRating = (el: HTMLElement): CSFDColorRating => {\n  return parseColor(\n    el.querySelector('.article-header i.icon').classNames.split(' ').pop() as CSFDColors\n  );\n};\n\nexport const getSearchPoster = (el: HTMLElement): string => {\n  const image = el.querySelector('img').attributes.src;\n  return addProtocol(image);\n};\n\nexport const getSearchOrigins = (el: HTMLElement): string[] => {\n  const originsRaw = el.querySelector('.article-content p .info')?.text;\n  if (!originsRaw) return [];\n  const originsAll = originsRaw?.split(', ')?.[0];\n  return originsAll?.split('/').map((country) => country.trim());\n};\n\nexport const parseSearchPeople = (\n  el: HTMLElement,\n  type: 'directors' | 'actors'\n): CSFDMovieCreator[] => {\n  let who: Creator;\n  if (type === 'directors') who = 'Režie:';\n  if (type === 'actors') who = 'Hrají:';\n\n  const pNodes = el && el.querySelectorAll('.article-content p');\n  let peopleNode: HTMLElement | null = null;\n  if (pNodes) {\n    for (const p of pNodes) {\n      if (p.textContent.includes(who)) {\n        peopleNode = p;\n        break;\n      }\n    }\n  }\n\n  if (peopleNode) {\n    // Optimization: Avoid Array.from allocation and use direct mapping if possible,\n    // though NodeList might require mapping. In our environment querySelectorAll returns an array.\n    const people = peopleNode.querySelectorAll('a');\n\n    return people.map((person) => {\n      return {\n        id: parseIdFromUrl(person.attributes.href),\n        name: person.innerText.trim(),\n        url: `https://www.csfd.cz${person.attributes.href}`\n      };\n    });\n  } else {\n    return [];\n  }\n};\n"],"mappings":";;AAQA,MAAa,iBAAiB,OAAmC;CAC/D,MAAM,OAAO,GAAG,iBAAiB,wBAAwB,CAAC,CAAC;CAC3D,OAAOA,sBAAAA,cAAc,MAAM,WAAW,QAAQ,WAAW,EAAE,CAAC,EAAE,KAAK,KAAK,MAAM;AAChF;AAEA,MAAa,kBAAkB,OAA4B;CACzD,OAAO,GAAG,cAAc,kBAAkB,CAAC,CAAC;AAC9C;AAEA,MAAa,iBAAiB,OAA4B;CAExD,OAAO,CAAC,GAAG,cAAc,wBAAwB,CAAC,EAAE,UAAU,QAAQ,WAAW,EAAE;AACrF;AAEA,MAAa,gBAAgB,OAA4B;CACvD,OAAO,GAAG,cAAc,kBAAkB,CAAC,CAAC,WAAW;AACzD;AAEA,MAAa,wBAAwB,OAAqC;CACxE,OAAOC,sBAAAA,WACL,GAAG,cAAc,wBAAwB,CAAC,CAAC,WAAW,MAAM,GAAG,CAAC,CAAC,IAAI,CACvE;AACF;AAEA,MAAa,mBAAmB,OAA4B;CAC1D,MAAM,QAAQ,GAAG,cAAc,KAAK,CAAC,CAAC,WAAW;CACjD,OAAOC,sBAAAA,YAAY,KAAK;AAC1B;AAEA,MAAa,oBAAoB,OAA8B;CAC7D,MAAM,aAAa,GAAG,cAAc,0BAA0B,CAAC,EAAE;CACjE,IAAI,CAAC,YAAY,OAAO,CAAC;CAEzB,QADmB,YAAY,MAAM,IAAI,CAAC,GAAG,EAAE,GAC5B,MAAM,GAAG,CAAC,CAAC,KAAK,YAAY,QAAQ,KAAK,CAAC;AAC/D;AAEA,MAAa,qBACX,IACA,SACuB;CACvB,IAAI;CACJ,IAAI,SAAS,aAAa,MAAM;CAChC,IAAI,SAAS,UAAU,MAAM;CAE7B,MAAM,SAAS,MAAM,GAAG,iBAAiB,oBAAoB;CAC7D,IAAI,aAAiC;CACrC,IAAI;OACG,MAAM,KAAK,QACd,IAAI,EAAE,YAAY,SAAS,GAAG,GAAG;GAC/B,aAAa;GACb;EACF;;CAIJ,IAAI,YAKF,OAFe,WAAW,iBAAiB,GAE/B,CAAC,CAAC,KAAK,WAAW;EAC5B,OAAO;GACL,IAAIC,sBAAAA,eAAe,OAAO,WAAW,IAAI;GACzC,MAAM,OAAO,UAAU,KAAK;GAC5B,KAAK,sBAAsB,OAAO,WAAW;EAC/C;CACF,CAAC;MAED,OAAO,CAAC;AAEZ"}