@clickview/exchange 0.62.0-rc.1 → 0.62.0

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 (123) hide show
  1. package/dist/.vite/manifest.json +542 -542
  2. package/dist/bundles.json +1 -1
  3. package/dist/en.json +1 -1
  4. package/dist/scripts/{BPYdRA7H.chunk.js → 0uwnPAi2.chunk.js} +2 -2
  5. package/dist/scripts/{BPYdRA7H.chunk.js.map → 0uwnPAi2.chunk.js.map} +1 -1
  6. package/dist/scripts/{eUKFc6dK.chunk.js → 6f-CHYL3.chunk.js} +2 -2
  7. package/dist/scripts/{eUKFc6dK.chunk.js.map → 6f-CHYL3.chunk.js.map} +1 -1
  8. package/dist/scripts/{BS8sYAAh.chunk.js → B09qwiFG.chunk.js} +2 -2
  9. package/dist/scripts/{BS8sYAAh.chunk.js.map → B09qwiFG.chunk.js.map} +1 -1
  10. package/dist/scripts/{BbrEvwAi2.chunk.js → B0uOvqjG2.chunk.js} +2 -2
  11. package/dist/scripts/{BbrEvwAi2.chunk.js.map → B0uOvqjG2.chunk.js.map} +1 -1
  12. package/dist/scripts/{EIJf9JbR2.chunk.js → B8BobN3r2.chunk.js} +2 -2
  13. package/dist/scripts/{EIJf9JbR2.chunk.js.map → B8BobN3r2.chunk.js.map} +1 -1
  14. package/dist/scripts/{Ca_-2JTE2.chunk.js → B8wHzPHI2.chunk.js} +2 -2
  15. package/dist/scripts/{Ca_-2JTE2.chunk.js.map → B8wHzPHI2.chunk.js.map} +1 -1
  16. package/dist/scripts/{DkB0qBxI.chunk.js → BAIdKirt.chunk.js} +2 -2
  17. package/dist/scripts/{DkB0qBxI.chunk.js.map → BAIdKirt.chunk.js.map} +1 -1
  18. package/dist/scripts/{Bi8itw8v2.chunk.js → BAwP70HI2.chunk.js} +2 -2
  19. package/dist/scripts/{Bi8itw8v2.chunk.js.map → BAwP70HI2.chunk.js.map} +1 -1
  20. package/dist/scripts/{BHbt9wzx.chunk.js → BEv09vqz.chunk.js} +2 -2
  21. package/dist/scripts/{BHbt9wzx.chunk.js.map → BEv09vqz.chunk.js.map} +1 -1
  22. package/dist/scripts/{8pXw5z942.chunk.js → BLs3APIS2.chunk.js} +2 -2
  23. package/dist/scripts/{8pXw5z942.chunk.js.map → BLs3APIS2.chunk.js.map} +1 -1
  24. package/dist/scripts/{DuPL-nK72.chunk.js → BP0LMV9S2.chunk.js} +2 -2
  25. package/dist/scripts/{DuPL-nK72.chunk.js.map → BP0LMV9S2.chunk.js.map} +1 -1
  26. package/dist/scripts/{EO2xPuAQ.chunk.js → BPttZx0-.chunk.js} +2 -2
  27. package/dist/scripts/{EO2xPuAQ.chunk.js.map → BPttZx0-.chunk.js.map} +1 -1
  28. package/dist/scripts/{NtrZI2Ef.chunk.js → BQk9Mhlr.chunk.js} +2 -2
  29. package/dist/scripts/{NtrZI2Ef.chunk.js.map → BQk9Mhlr.chunk.js.map} +1 -1
  30. package/dist/scripts/{amjwjus3.chunk.js → BXIfsdxg.chunk.js} +2 -2
  31. package/dist/scripts/{amjwjus3.chunk.js.map → BXIfsdxg.chunk.js.map} +1 -1
  32. package/dist/scripts/{DKz4jhnr2.chunk.js → B_P4D3Hf2.chunk.js} +2 -2
  33. package/dist/scripts/{DKz4jhnr2.chunk.js.map → B_P4D3Hf2.chunk.js.map} +1 -1
  34. package/dist/scripts/{DfOgl-0-2.chunk.js → BgskDBpT2.chunk.js} +2 -2
  35. package/dist/scripts/{DfOgl-0-2.chunk.js.map → BgskDBpT2.chunk.js.map} +1 -1
  36. package/dist/scripts/{BsLLiG1-.chunk.js → BhOZYAZn.chunk.js} +2 -2
  37. package/dist/scripts/{BsLLiG1-.chunk.js.map → BhOZYAZn.chunk.js.map} +1 -1
  38. package/dist/scripts/{BaSi1pig.chunk.js → Bn9ROglk.chunk.js} +2 -2
  39. package/dist/scripts/{BaSi1pig.chunk.js.map → Bn9ROglk.chunk.js.map} +1 -1
  40. package/dist/scripts/{SDRXIwM22.chunk.js → Bo8PhXY12.chunk.js} +3 -3
  41. package/dist/scripts/{SDRXIwM22.chunk.js.map → Bo8PhXY12.chunk.js.map} +1 -1
  42. package/dist/scripts/{C3Hw2TpW2.chunk.js → BrVyRSUS2.chunk.js} +2 -2
  43. package/dist/scripts/{C3Hw2TpW2.chunk.js.map → BrVyRSUS2.chunk.js.map} +1 -1
  44. package/dist/scripts/{DmVXt6_V.chunk.js → BxLgTmMl.chunk.js} +2 -2
  45. package/dist/scripts/{DmVXt6_V.chunk.js.map → BxLgTmMl.chunk.js.map} +1 -1
  46. package/dist/scripts/{DsHiClyc2.chunk.js → Bxsu4S752.chunk.js} +2 -2
  47. package/dist/scripts/{DsHiClyc2.chunk.js.map → Bxsu4S752.chunk.js.map} +1 -1
  48. package/dist/scripts/{MYu2AEsL.chunk.js → C-PORBUs.chunk.js} +2 -2
  49. package/dist/scripts/{MYu2AEsL.chunk.js.map → C-PORBUs.chunk.js.map} +1 -1
  50. package/dist/scripts/{CxUrOnxW2.chunk.js → C1StI3Bl2.chunk.js} +2 -2
  51. package/dist/scripts/{CxUrOnxW2.chunk.js.map → C1StI3Bl2.chunk.js.map} +1 -1
  52. package/dist/scripts/{CKL4ViMC.chunk.js → C6Hr-vqw.chunk.js} +2 -2
  53. package/dist/scripts/{CKL4ViMC.chunk.js.map → C6Hr-vqw.chunk.js.map} +1 -1
  54. package/dist/scripts/{Bue5_bLM.chunk.js → CBnNAkzx.chunk.js} +2 -2
  55. package/dist/scripts/{Bue5_bLM.chunk.js.map → CBnNAkzx.chunk.js.map} +1 -1
  56. package/dist/scripts/{C03mMZ4k.chunk.js → CFkqPGiT.chunk.js} +2 -2
  57. package/dist/scripts/{C03mMZ4k.chunk.js.map → CFkqPGiT.chunk.js.map} +1 -1
  58. package/dist/scripts/{vvCGyl_q.chunk.js → CKD2j1rw.chunk.js} +2 -2
  59. package/dist/scripts/{vvCGyl_q.chunk.js.map → CKD2j1rw.chunk.js.map} +1 -1
  60. package/dist/scripts/{DqM6hYTJ2.chunk.js → CSKzCsLv2.chunk.js} +2 -2
  61. package/dist/scripts/{DqM6hYTJ2.chunk.js.map → CSKzCsLv2.chunk.js.map} +1 -1
  62. package/dist/scripts/{B7m3cCi42.chunk.js → CZgaUoHE2.chunk.js} +2 -2
  63. package/dist/scripts/{B7m3cCi42.chunk.js.map → CZgaUoHE2.chunk.js.map} +1 -1
  64. package/dist/scripts/{CL9SkODG.chunk.js → C_7tv1r9.chunk.js} +2 -2
  65. package/dist/scripts/{CL9SkODG.chunk.js.map → C_7tv1r9.chunk.js.map} +1 -1
  66. package/dist/scripts/{CKZJ2qae2.chunk.js → C_jUsStb2.chunk.js} +2 -2
  67. package/dist/scripts/{CKZJ2qae2.chunk.js.map → C_jUsStb2.chunk.js.map} +1 -1
  68. package/dist/scripts/{DSZkTUVU.chunk.js → CdNTKjPA.chunk.js} +2 -2
  69. package/dist/scripts/{DSZkTUVU.chunk.js.map → CdNTKjPA.chunk.js.map} +1 -1
  70. package/dist/scripts/{CfNYdg0m.chunk.js → ChDwbV8F.chunk.js} +2 -2
  71. package/dist/scripts/{CfNYdg0m.chunk.js.map → ChDwbV8F.chunk.js.map} +1 -1
  72. package/dist/scripts/{pOL5_XNC.chunk.js → Cq-TpkxJ.chunk.js} +2 -2
  73. package/dist/scripts/{pOL5_XNC.chunk.js.map → Cq-TpkxJ.chunk.js.map} +1 -1
  74. package/dist/scripts/{F1LOVRO_.chunk.js → CrCX606H.chunk.js} +2 -2
  75. package/dist/scripts/{F1LOVRO_.chunk.js.map → CrCX606H.chunk.js.map} +1 -1
  76. package/dist/scripts/{BtdygabL2.chunk.js → CrDpB82d2.chunk.js} +2 -2
  77. package/dist/scripts/{BtdygabL2.chunk.js.map → CrDpB82d2.chunk.js.map} +1 -1
  78. package/dist/scripts/{BvamDkjt2.chunk.js → Czivka682.chunk.js} +2 -2
  79. package/dist/scripts/{BvamDkjt2.chunk.js.map → Czivka682.chunk.js.map} +1 -1
  80. package/dist/scripts/{sViLex0Q.chunk.js → DEP_Z-S0.chunk.js} +2 -2
  81. package/dist/scripts/{sViLex0Q.chunk.js.map → DEP_Z-S0.chunk.js.map} +1 -1
  82. package/dist/scripts/{1iKkdpYv.chunk.js → DQBoqkL7.chunk.js} +2 -2
  83. package/dist/scripts/{1iKkdpYv.chunk.js.map → DQBoqkL7.chunk.js.map} +1 -1
  84. package/dist/scripts/{C2AXrtJf.chunk.js → DeXP2wHV.chunk.js} +2 -2
  85. package/dist/scripts/{C2AXrtJf.chunk.js.map → DeXP2wHV.chunk.js.map} +1 -1
  86. package/dist/scripts/{U0UyGd9c2.chunk.js → Df82DFJ62.chunk.js} +2 -2
  87. package/dist/scripts/{U0UyGd9c2.chunk.js.map → Df82DFJ62.chunk.js.map} +1 -1
  88. package/dist/scripts/{BlOKamx72.chunk.js → DgrEIxhT2.chunk.js} +2 -2
  89. package/dist/scripts/{BlOKamx72.chunk.js.map → DgrEIxhT2.chunk.js.map} +1 -1
  90. package/dist/scripts/{OBYDGOgI2.chunk.js → DhT0tpZm2.chunk.js} +2 -2
  91. package/dist/scripts/{OBYDGOgI2.chunk.js.map → DhT0tpZm2.chunk.js.map} +1 -1
  92. package/dist/scripts/{Ct_4zyE3.chunk.js → Dhe09-jE.chunk.js} +2 -2
  93. package/dist/scripts/{Ct_4zyE3.chunk.js.map → Dhe09-jE.chunk.js.map} +1 -1
  94. package/dist/scripts/{xEGWFFpD2.chunk.js → DhtgaF-y2.chunk.js} +2 -2
  95. package/dist/scripts/{xEGWFFpD2.chunk.js.map → DhtgaF-y2.chunk.js.map} +1 -1
  96. package/dist/scripts/{nMyWveQA2.chunk.js → Div1wl-R2.chunk.js} +2 -2
  97. package/dist/scripts/{nMyWveQA2.chunk.js.map → Div1wl-R2.chunk.js.map} +1 -1
  98. package/dist/scripts/{DG6L7zHU2.chunk.js → DjuXXgD-2.chunk.js} +2 -2
  99. package/dist/scripts/{DG6L7zHU2.chunk.js.map → DjuXXgD-2.chunk.js.map} +1 -1
  100. package/dist/scripts/{BAN6QE-X.chunk.js → Dkazht4Q.chunk.js} +2 -2
  101. package/dist/scripts/{BAN6QE-X.chunk.js.map → Dkazht4Q.chunk.js.map} +1 -1
  102. package/dist/scripts/{D_k-Kl3-2.chunk.js → DmmZ2XbB2.chunk.js} +2 -2
  103. package/dist/scripts/{D_k-Kl3-2.chunk.js.map → DmmZ2XbB2.chunk.js.map} +1 -1
  104. package/dist/scripts/{l7UAnIb0.chunk.js → Dr35AMvf.chunk.js} +2 -2
  105. package/dist/scripts/{l7UAnIb0.chunk.js.map → Dr35AMvf.chunk.js.map} +1 -1
  106. package/dist/scripts/{CK_CN_mA.chunk.js → HgLS_KfH.chunk.js} +2 -2
  107. package/dist/scripts/{CK_CN_mA.chunk.js.map → HgLS_KfH.chunk.js.map} +1 -1
  108. package/dist/scripts/{Pixwk-h-.chunk.js → W8Q7Z6fd.chunk.js} +2 -2
  109. package/dist/scripts/{Pixwk-h-.chunk.js.map → W8Q7Z6fd.chunk.js.map} +1 -1
  110. package/dist/scripts/{BzJLc19T2.chunk.js → XWykPl9h2.chunk.js} +2 -2
  111. package/dist/scripts/{BzJLc19T2.chunk.js.map → XWykPl9h2.chunk.js.map} +1 -1
  112. package/dist/scripts/{G-hiM6b42.chunk.js → _3n_0ch72.chunk.js} +2 -2
  113. package/dist/scripts/{G-hiM6b42.chunk.js.map → _3n_0ch72.chunk.js.map} +1 -1
  114. package/dist/scripts/{app-BGxmHvGl.js → app-CgkYY4K0.js} +3 -3
  115. package/dist/scripts/app-CgkYY4K0.js.map +1 -0
  116. package/dist/scripts/{BINz0dmF.chunk.js → go6zFmPK.chunk.js} +2 -2
  117. package/dist/scripts/{BINz0dmF.chunk.js.map → go6zFmPK.chunk.js.map} +1 -1
  118. package/dist/scripts/{DFXpg6rF.chunk.js → p5-1Ey-R.chunk.js} +2 -2
  119. package/dist/scripts/{DFXpg6rF.chunk.js.map → p5-1Ey-R.chunk.js.map} +1 -1
  120. package/dist/scripts/{BobZ5p_m2.chunk.js → qrcrWbQJ2.chunk.js} +2 -2
  121. package/dist/scripts/{BobZ5p_m2.chunk.js.map → qrcrWbQJ2.chunk.js.map} +1 -1
  122. package/package.json +1 -1
  123. package/dist/scripts/app-BGxmHvGl.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"Ct_4zyE3.chunk.js","names":[],"sources":["../../../../libs/shared/src/utils/NumberHelper.ts","../../../../libs/shared/src/utils/SeriesHelper.ts","../../../../libs/shared/src/components/title-sub-text/title-sub-text.module.scss","../../../../libs/shared/src/components/title-sub-text/TitleSubText.tsx","../../../../libs/shared/src/components/video-sub-text/video-sub-text.module.scss","../../../../libs/shared/src/components/video-sub-text/VideoSubText.tsx","../../../../libs/shared/src/images/svg/objects/ClipSvg.tsx","../../../../libs/shared/src/images/svg/objects/InteractiveSvg.tsx","../../../../libs/shared/src/images/svg/objects/ResourcesSvg.tsx","../../../../libs/shared/src/components/type-badge/type-badge.module.scss","../../../../libs/shared/src/components/type-badge/TypeBadge.tsx","../../../../../node_modules/react-reverse-portal/dist/web/index.js","../../../../libs/shared/src/context/player-context/PlayerContext.tsx","../../../../../node_modules/linkifyjs/lib/linkify/utils/class.js","../../../../../node_modules/linkifyjs/lib/linkify/utils/options.js","../../../../../node_modules/linkifyjs/lib/linkify/core/state.js","../../../../../node_modules/linkifyjs/lib/linkify/core/tokens/create-token-class.js","../../../../../node_modules/linkifyjs/lib/linkify/core/tokens/text.js","../../../../../node_modules/linkifyjs/lib/linkify/core/scanner.js","../../../../../node_modules/linkifyjs/lib/linkify/core/tokens/multi.js","../../../../../node_modules/linkifyjs/lib/linkify/core/parser.js","../../../../../node_modules/linkifyjs/lib/linkify.js","../../../../../node_modules/linkifyjs/lib/linkify-string.js","../../../../../node_modules/linkifyjs/string.js","../../../../libs/common/src/react/utils/LinkifyHelper.ts"],"sourcesContent":["export const NumberHelper = {\n padNumber(num: number, padLength: number): string {\n let numberString = num.toString();\n\n if (numberString.length >= padLength)\n return numberString;\n\n padLength = padLength - numberString.length;\n\n while (padLength > 0) {\n numberString = '0' + numberString;\n padLength--;\n }\n return numberString;\n }\n};\n","import { MasterType } from 'libs/shared/enums/MasterType';\nimport { BaseObject, Rating, Series } from 'libs/shared/interfaces';\n\nimport { NumberHelper } from './NumberHelper';\n\nexport const SeriesHelper = {\n isSeries(obj: BaseObject): obj is Series {\n return obj?.typeId === MasterType.Series;\n },\n\n buildSeriesSeasonEpisodeText(seriesName: string, season?: number, episode?: number): string {\n if (!seriesName)\n return '';\n\n if (!season || !episode)\n return seriesName.toUpperCase();\n\n const seasonNum = NumberHelper.padNumber(season, 2);\n const episodeNum = NumberHelper.padNumber(episode, 2);\n\n return `${seriesName.toUpperCase()} S${seasonNum} • E${episodeNum}`;\n },\n\n getRating(series: Series): Rating {\n return series._rating?.value;\n }\n};\n",":local {\n .subText {\n font-size: calc(11 / 14) * 1em;\n \n &.sm {\n font-size: calc(8 / 14) * 1em;\n }\n }\n}","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { AnalyticsOptions } from 'libs/analytics/interfaces';\n\nimport { AppLink } from '../app-link/AppLink';\n\nimport styles from './title-sub-text.module.scss';\n\ntype TitleSubTextProps = React.PropsWithChildren<{\n title?: string,\n className?: string,\n ariaLabel?: string,\n appLink?: Core.AppLink,\n analyticsData?: HashObject,\n analyticsOptions?: AnalyticsOptions\n}>;\n\nexport function TitleSubText(props: TitleSubTextProps): JSX.Element {\n const className = `text-uppercase text-truncate mb-0 ${styles.subText} ${props.className}`;\n\n if (props.appLink) {\n return (\n <AppLink\n className={className}\n appLink={props.appLink}\n analyticsData={props.analyticsData}\n analyticsOptions={props.analyticsOptions}\n title={props.title}\n ariaLabel={props.ariaLabel}\n >\n {props.children}\n </AppLink>\n );\n }\n\n return (\n <div\n className={className}\n title={props.title}\n aria-label={props.ariaLabel}\n >\n {props.children}\n </div>\n );\n}\n",":local {\n .appLink {\n color: inherit;\n\n &:hover {\n .hoverUnderline {\n text-decoration: underline;\n }\n }\n }\n}","import * as React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Core } from 'libs/common/core';\nimport { HashObject } from 'libs/common/react/interfaces';\nimport { TextHelper } from 'libs/common/react/utils/TextHelper';\n\nimport { AnalyticsOptions, ClickDescriptor, EntityType, UserAction } from 'libs/analytics/interfaces/AnalyticsTypes';\n\nimport { Video } from 'libs/shared/interfaces';\nimport { NumberHelper } from 'libs/shared/utils/NumberHelper';\nimport { SeriesHelper } from 'libs/shared/utils/SeriesHelper';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport { TitleSubText } from '../title-sub-text/TitleSubText';\n\nconst namespace = 'shared.videoSubText';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nimport styles from './video-sub-text.module.scss';\n\nexport type VideoSubTextType = 'series' | 'productionCompany' | 'none';\n\ninterface SeriesLinkProps {\n video: Video;\n appLink?: Core.AppLink;\n className?: string;\n analyticsData?: HashObject;\n analyticsOptions: AnalyticsOptions; // Required as `location` needs to be supplied\n withSeriesTitle?: boolean;\n size?: 'sm' | 'lg';\n}\n\nexport function SeasonEpisode(props: Omit<SeriesLinkProps, 'analyticsOptions' | 'analyticsData'>): JSX.Element {\n const { video } = props;\n const { season } = video;\n\n if (!video.episodeNumber || !season)\n return <></>;\n\n const seasonNumber = NumberHelper.padNumber(season.number, 2);\n const episodeNumber = NumberHelper.padNumber(video.episodeNumber, 2);\n\n /* \\u2022 is the unicode number for &bull; */\n return (\n <span className={`d-inline-block ${props.appLink ? styles.hoverUnderline : ''}`}>\n {props.withSeriesTitle && <>&nbsp;</>}\n {!!seasonNumber && `S${seasonNumber} \\u2022 `}\n E{episodeNumber}\n </span>\n );\n}\n\nfunction ReleaseDate(props: SeriesLinkProps): JSX.Element {\n const releaseDate = VideoHelper.getReleaseDate(props.video);\n\n if (!releaseDate)\n return <></>;\n\n if (VideoHelper.hasSeries(props.video))\n return <>{` \\u2022 ${releaseDate}`}</>;\n\n return <>{releaseDate}</>;\n}\n\nfunction SeriesLink(props: SeriesLinkProps): JSX.Element {\n const { appLink, video, className = '' } = props;\n\n const series = video?.series;\n const releaseDate = VideoHelper.getReleaseDate(props.video);\n\n if ((!series?.id) && !releaseDate)\n return <></>;\n\n const seriesAppLink: Core.AppLink = series?.id && appLink && {\n ...appLink,\n args: appLink.args ? appLink.args : [ series.id, TextHelper.slugify(series.name) ]\n };\n\n const analyticsData = { ...props.analyticsData,\n id: series?.id,\n name: series?.name,\n videoId: video?.id,\n videoName: video?.name\n };\n\n const analyticsOptions = {\n ...props.analyticsOptions,\n entity: EntityType.Series,\n actionType: UserAction.Click,\n descriptor: ClickDescriptor.Title\n };\n\n const seriesTitle = SeriesHelper.buildSeriesSeasonEpisodeText(\n series?.name,\n video.season?.number,\n video.episodeNumber\n );\n\n return (\n <TitleSubText\n appLink={seriesAppLink}\n className={`d-block ${styles.appLink} ${className}`}\n analyticsData={analyticsData}\n analyticsOptions={analyticsOptions}\n title={seriesTitle}\n ariaLabel={`${getPhrase('ariaSeries')} ${seriesTitle}`}\n >\n {series?.name && series.name}\n <SeasonEpisode {...props} withSeriesTitle />\n <ReleaseDate {...props} />\n </TitleSubText>\n );\n}\n\ninterface ProductionCompanyLinkProps {\n video: Video;\n appLink?: Core.AppLink;\n className?: string;\n analyticsData?: HashObject;\n analyticsOptions: AnalyticsOptions; // Required as `location` needs to be supplied\n size?: 'sm' | 'lg';\n}\n\nfunction ProductionCompanyLink(props: ProductionCompanyLinkProps): JSX.Element {\n const { appLink, video, className = '' } = props;\n\n const productionCompany = video?.productionCompanies?.data?.[0];\n\n if (!productionCompany?.id)\n return <></>;\n\n const companyAppLink: Core.AppLink = productionCompany?.id && appLink && {\n ...appLink,\n args: appLink.args ? appLink.args : [ productionCompany.id, TextHelper.slugify(productionCompany.name) ]\n };\n\n const analyticsData = { ...props.analyticsData,\n id: productionCompany?.id,\n name: productionCompany?.name,\n videoId: video?.id,\n videoName: video?.name\n };\n\n const analyticsOptions = {\n ...props.analyticsOptions,\n entity: EntityType.Company,\n actionType: UserAction.Click,\n descriptor: ClickDescriptor.Title\n };\n\n return (\n <TitleSubText\n appLink={companyAppLink}\n className={`d-block ${styles.appLink} ${className}`}\n analyticsData={analyticsData}\n analyticsOptions={analyticsOptions}\n title={productionCompany.name}\n ariaLabel={`${getPhrase('ariaCompany')} ${productionCompany.name}`}\n >\n {productionCompany.name}\n </TitleSubText>\n );\n}\n\ninterface VideoSubTextProps {\n type: VideoSubTextType;\n video: Video;\n appLink?: Core.AppLink;\n className?: string;\n analyticsData?: HashObject;\n analyticsOptions: AnalyticsOptions; // Required as `location` needs to be supplied\n size?: 'sm' | 'lg';\n}\n\nexport function VideoSubText(props: VideoSubTextProps): JSX.Element {\n const { type = 'series' } = props;\n\n if (type === 'none')\n return <></>;\n\n if (type === 'series')\n return <SeriesLink {...props} />;\n\n return <ProductionCompanyLink {...props} />;\n}\n\n","import React from 'react';\n\nexport function ClipSvg(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg {...props}>\n <path\n fill='currentColor'\n d='M14.893 16.357a2.5 2.5 0 0 1 1.806-1.354 2.506 2.506 0 0 1 2.902 2.042 2.516 2.516 0 0 1-2.032 2.916 2.5 2.5 0 0 1-2.74-1.494l-2.603-5.208-2.57 5.138a2.504 2.504 0 0 1-2.769 1.564 2.516 2.516 0 0 1-2.031-2.916 2.506 2.506 0 0 1 2.901-2.042c.81.144 1.46.663 1.803 1.348l2.107-4.212-3.703-7.41a.504.504 0 0 1 .222-.675.5.5 0 0 1 .672.223l3.369 6.743 3.372-6.743a.5.5 0 0 1 .671-.223.504.504 0 0 1 .223.674l-3.707 7.412zm-9.053.863a1.51 1.51 0 0 0 1.221 1.752 1.505 1.505 0 0 0 1.743-1.227 1.51 1.51 0 0 0-1.22-1.752A1.505 1.505 0 0 0 5.84 17.22m11.555 1.752a1.51 1.51 0 0 0 1.221-1.752 1.505 1.505 0 0 0-1.743-1.227 1.51 1.51 0 0 0-1.22 1.752 1.505 1.505 0 0 0 1.742 1.227'\n />\n </svg>\n );\n}\n","import React from 'react';\n\nexport function InteractiveSvg(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg {...props}>\n <path\n fill='currentColor'\n d='M11.91 4.025c-3.308 0-6 2.692-6 6 0 1.923.916 3.716 2.462 4.846v3.77c0 .763.621 1.384 1.385 1.384h4.308c.763 0 1.384-.62 1.384-1.384v-3.77a6 6 0 0 0 2.462-4.846c0-3.308-2.692-6-6-6m2.616 12.77v.615h-5.23v-.615zm-4.77 2.307a.46.46 0 0 1-.46-.461v-.308h5.23v.308a.46.46 0 0 1-.461.461zm4.77-4.471v1.24h-5.23v-1.24a.46.46 0 0 0-.205-.384 5.07 5.07 0 0 1-2.257-4.222c0-2.8 2.277-5.077 5.077-5.077s5.077 2.278 5.077 5.077a5.07 5.07 0 0 1-2.257 4.222.46.46 0 0 0-.205.384m-2.396-2.616a.56.56 0 0 0 .107-.348v-.068q.004-.237.076-.402a1 1 0 0 1 .235-.317q.165-.153.454-.35.462-.316.757-.724.294-.41.295-.97 0-.591-.283-.993a1.8 1.8 0 0 0-.76-.61 2.6 2.6 0 0 0-1.05-.208q-.629 0-1.151.279-.525.277-.78.825a1.2 1.2 0 0 0-.12.522.44.44 0 0 0 .105.303q.105.118.3.118.162 0 .271-.091a.5.5 0 0 0 .157-.247q.162-.518.471-.704.309-.187.718-.187.343 0 .62.119.28.118.443.339.164.22.164.53 0 .27-.104.467-.106.195-.28.35a5 5 0 0 1-.391.305q-.281.195-.516.419a1.9 1.9 0 0 0-.378.498 1.3 1.3 0 0 0-.143.613v.193q0 .213.114.346.114.134.338.133.224 0 .33-.14m.088 2.081a.6.6 0 0 0 .17-.426.6.6 0 0 0-.17-.428.57.57 0 0 0-.424-.177q-.242 0-.416.177a.59.59 0 0 0-.174.428.6.6 0 0 0 .174.426q.174.18.416.18.252 0 .424-.18'\n />\n </svg>\n );\n}\n","import React from 'react';\n\nexport function ResourcesSvg(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg {...props}>\n <path\n d='M18.06 4c.519 0 .94.479.94 1.075v13.85c0 .594-.419 1.075-.94 1.075H5.94c-.519 0-.94-.479-.94-1.075V5.075C5 4.48 5.419 4 5.94 4zM9.256 5H5.882v.184l-.001.1v.418l-.001.175-.001 1.113v1.429l-.001.314v2.024l-.001.352-.001 3.162v.335l-.001 4.386h.105l.08.001h.36l.157.001h.571l.221.001h.741l.27.001h1.174l.313.001h1.63l.332.001 2.61.001h.305l3.362.001h.012v-.184l.001-.1v-.418l.001-.175.001-1.113v-1.429l.001-.314v-2.024l.001-.352.001-3.162v-.335l.001-4.374v-.012h-.105l-.08-.001h-.36l-.157-.001h-.571l-.221-.001h-.741l-.27-.001h-1.174l-.313-.001h-1.63l-.332-.001-2.61-.001zm1.438 8c.238 0 .431.224.431.5s-.193.5-.431.5H8.056c-.238 0-.431-.224-.431-.5s.193-.5.431-.5zm5.198-3c.267 0 .483.224.483.5s-.216.5-.483.5H8.108a.49.49 0 0 1-.483-.5c0-.276.216-.5.483-.5zm0-3c.267 0 .483.224.483.5s-.216.5-.483.5H8.108a.49.49 0 0 1-.483-.5c0-.276.216-.5.483-.5z'\n fill='currentColor'\n />\n </svg>\n );\n}\n",":local {\n $badge-size: 1.875rem;\n $badge-size-sm: 1.5rem;\n\n .topLeftContainer {\n position: absolute;\n top: map-get($spacers, 2);\n left: map-get($spacers, 2);\n z-index: 3;\n }\n\n .draft {\n background-color: $gray-700;\n }\n\n .badge {\n display: flex;\n align-items: center;\n min-width: $badge-size;\n width: $badge-size;\n height: $badge-size;\n transition: width .3s;\n overflow: hidden;\n position: relative;\n\n .svg {\n min-width: $cv-svg-size;\n position: absolute;\n left: 50%;\n transform: translateX(-50%);\n\n svg {\n vertical-align: top;\n }\n }\n\n .text {\n display: none;\n line-height: $badge-size;\n }\n\n &.sm {\n min-width: $badge-size-sm;\n width: $badge-size-sm;\n height: $badge-size-sm;\n\n .svg {\n min-width: $cv-svg-size-sm;\n }\n\n .text {\n font-size: 80%;\n line-height: $badge-size-sm;\n }\n }\n\n &:hover {\n width: 100%;\n padding-right: map-get($spacers, 2);\n\n .text {\n display: block;\n }\n\n .svg {\n margin-left: 0.2rem;\n position: relative;\n left: 0.75rem;\n }\n\n &.sm {\n .svg {\n left: 0.55rem;\n }\n }\n }\n }\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { SvgContainer, SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { CurationStatus } from 'libs/shared/enums/CurationStatus';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { ClipSvg } from 'libs/shared/images/svg/objects/ClipSvg';\nimport { InteractiveSvg } from 'libs/shared/images/svg/objects/InteractiveSvg';\nimport { ResourcesSvg } from 'libs/shared/images/svg/objects/ResourcesSvg';\n\nimport styles from './type-badge.module.scss';\n\nconst namespace = 'shared.typeBadge';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nfunction getText(typeId: MasterType): string {\n switch (typeId) {\n case MasterType.Clip:\n return getPhrase('clip');\n case MasterType.Interactive:\n return getPhrase('interactive');\n case MasterType.Resource:\n return getPhrase('resource');\n default:\n return '';\n }\n}\n\nfunction getIcon(typeId: MasterType) {\n switch (typeId) {\n case MasterType.Clip:\n return ClipSvg;\n case MasterType.Interactive:\n return InteractiveSvg;\n case MasterType.Resource:\n return ResourcesSvg;\n default:\n return null;\n }\n}\n\nfunction getColourClass(typeId: MasterType, status: CurationStatus): string {\n switch (typeId) {\n case MasterType.Clip:\n return 'bg-ultramarine';\n case MasterType.Interactive:\n return status === CurationStatus.Draft ? styles.draft : 'bg-green';\n case MasterType.Resource:\n return 'bg-indigo';\n default:\n return '';\n }\n}\n\ninterface TypeBadgeProps {\n typeId: MasterType;\n status?: CurationStatus;\n size?: 'sm' | 'md';\n inContainer?: boolean;\n}\n\nTypeBadge.default = {\n size: 'md'\n};\n\nexport function TypeBadge(props: TypeBadgeProps): JSX.Element {\n const baseClasses = `${styles.badge} rounded-pill text-white ps-0 ${props.size === 'sm' ? styles.sm : ''}`;\n\n return (\n <div className={props.inContainer ? '' : styles.topLeftContainer}>\n <div className={`${baseClasses} ${getColourClass(props.typeId, props.status)}`}>\n <SvgContainer\n className={`svg-container d-block ${styles.svg}`}\n size={props.size === 'sm' ? SvgContainerSize.Small : SvgContainerSize.Standard}\n svg={getIcon(props.typeId)}\n />\n <span className={styles.text}>\n {getText(props.typeId)}\n </span>\n </div>\n </div>\n );\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\nimport * as ReactDOM from 'react-dom';\n// Internally, the portalNode must be for either HTML or SVG elements\nvar ELEMENT_TYPE_HTML = 'html';\nvar ELEMENT_TYPE_SVG = 'svg';\n// ReactDOM can handle several different namespaces, but they're not exported publicly\n// https://github.com/facebook/react/blob/b87aabdfe1b7461e7331abb3601d9e6bb27544bc/packages/react-dom/src/shared/DOMNamespaces.js#L8-L10\nvar SVG_NAMESPACE = 'http://www.w3.org/2000/svg';\nvar validateElementType = function (domElement, elementType) {\n if (elementType === ELEMENT_TYPE_HTML) {\n return domElement instanceof HTMLElement;\n }\n if (elementType === ELEMENT_TYPE_SVG) {\n return domElement instanceof SVGElement;\n }\n throw new Error(\"Unrecognized element type \\\"\" + elementType + \"\\\" for validateElementType.\");\n};\n// This is the internal implementation: the public entry points set elementType to an appropriate value\nvar createPortalNode = function (elementType, options) {\n var initialProps = {};\n var parent;\n var lastPlaceholder;\n var element;\n if (elementType === ELEMENT_TYPE_HTML) {\n element = document.createElement('div');\n }\n else if (elementType === ELEMENT_TYPE_SVG) {\n element = document.createElementNS(SVG_NAMESPACE, 'g');\n }\n else {\n throw new Error(\"Invalid element type \\\"\" + elementType + \"\\\" for createPortalNode: must be \\\"html\\\" or \\\"svg\\\".\");\n }\n if (options && typeof options === \"object\") {\n for (var _i = 0, _a = Object.entries(options.attributes); _i < _a.length; _i++) {\n var _b = _a[_i], key = _b[0], value = _b[1];\n element.setAttribute(key, value);\n }\n }\n var portalNode = {\n element: element,\n elementType: elementType,\n setPortalProps: function (props) {\n initialProps = props;\n },\n getInitialPortalProps: function () {\n return initialProps;\n },\n mount: function (newParent, newPlaceholder) {\n if (newPlaceholder === lastPlaceholder) {\n // Already mounted - noop.\n return;\n }\n portalNode.unmount();\n // To support SVG and other non-html elements, the portalNode's elementType needs to match\n // the elementType it's being rendered into\n if (newParent !== parent) {\n if (!validateElementType(newParent, elementType)) {\n throw new Error(\"Invalid element type for portal: \\\"\" + elementType + \"\\\" portalNodes must be used with \" + elementType + \" elements, but OutPortal is within <\" + newParent.tagName + \">.\");\n }\n }\n newParent.replaceChild(portalNode.element, newPlaceholder);\n parent = newParent;\n lastPlaceholder = newPlaceholder;\n },\n unmount: function (expectedPlaceholder) {\n if (expectedPlaceholder && expectedPlaceholder !== lastPlaceholder) {\n // Skip unmounts for placeholders that aren't currently mounted\n // They will have been automatically unmounted already by a subsequent mount()\n return;\n }\n if (parent && lastPlaceholder) {\n parent.replaceChild(lastPlaceholder, portalNode.element);\n parent = undefined;\n lastPlaceholder = undefined;\n }\n }\n };\n return portalNode;\n};\nvar InPortal = /** @class */ (function (_super) {\n __extends(InPortal, _super);\n function InPortal(props) {\n var _this = _super.call(this, props) || this;\n _this.addPropsChannel = function () {\n Object.assign(_this.props.node, {\n setPortalProps: function (props) {\n // Rerender the child node here if/when the out portal props change\n _this.setState({ nodeProps: props });\n }\n });\n };\n _this.state = {\n nodeProps: _this.props.node.getInitialPortalProps(),\n };\n return _this;\n }\n InPortal.prototype.componentDidMount = function () {\n this.addPropsChannel();\n };\n InPortal.prototype.componentDidUpdate = function () {\n this.addPropsChannel();\n };\n InPortal.prototype.render = function () {\n var _this = this;\n var _a = this.props, children = _a.children, node = _a.node;\n return ReactDOM.createPortal(React.Children.map(children, function (child) {\n if (!React.isValidElement(child))\n return child;\n return React.cloneElement(child, _this.state.nodeProps);\n }), node.element);\n };\n return InPortal;\n}(React.PureComponent));\nvar OutPortal = /** @class */ (function (_super) {\n __extends(OutPortal, _super);\n function OutPortal(props) {\n var _this = _super.call(this, props) || this;\n _this.placeholderNode = React.createRef();\n _this.passPropsThroughPortal();\n return _this;\n }\n OutPortal.prototype.passPropsThroughPortal = function () {\n var propsForTarget = Object.assign({}, this.props, { node: undefined });\n this.props.node.setPortalProps(propsForTarget);\n };\n OutPortal.prototype.componentDidMount = function () {\n var node = this.props.node;\n this.currentPortalNode = node;\n var placeholder = this.placeholderNode.current;\n var parent = placeholder.parentNode;\n node.mount(parent, placeholder);\n this.passPropsThroughPortal();\n };\n OutPortal.prototype.componentDidUpdate = function () {\n // We re-mount on update, just in case we were unmounted (e.g. by\n // a second OutPortal, which has now been removed)\n var node = this.props.node;\n // If we're switching portal nodes, we need to clean up the current one first.\n if (this.currentPortalNode && node !== this.currentPortalNode) {\n this.currentPortalNode.unmount(this.placeholderNode.current);\n this.currentPortalNode.setPortalProps({});\n this.currentPortalNode = node;\n }\n var placeholder = this.placeholderNode.current;\n var parent = placeholder.parentNode;\n node.mount(parent, placeholder);\n this.passPropsThroughPortal();\n };\n OutPortal.prototype.componentWillUnmount = function () {\n var node = this.props.node;\n node.unmount(this.placeholderNode.current);\n node.setPortalProps({});\n };\n OutPortal.prototype.render = function () {\n // Render a placeholder to the DOM, so we can get a reference into\n // our location in the DOM, and swap it out for the portaled node.\n // A <div> placeholder works fine even for SVG.\n return React.createElement(\"div\", { ref: this.placeholderNode });\n };\n return OutPortal;\n}(React.PureComponent));\nvar createHtmlPortalNode = createPortalNode.bind(null, ELEMENT_TYPE_HTML);\nvar createSvgPortalNode = createPortalNode.bind(null, ELEMENT_TYPE_SVG);\nexport { createHtmlPortalNode, createSvgPortalNode, InPortal, OutPortal, };\n//# sourceMappingURL=index.js.map","import React from 'react';\nimport { createHtmlPortalNode, HtmlPortalNode } from 'react-reverse-portal';\n\nimport { LocalStorageHelper } from 'libs/common/backbone/utils/LocalStorageHelper';\n\nimport { DefaultDisplayMode, PlayerInitializationData } from 'libs/shared/context/player-context/interfaces/PlayerContextAction';\nimport { PlayerContextState } from 'libs/shared/context/player-context/interfaces/PlayerContextState';\nimport { PlayerMode } from 'libs/shared/context/player-context/interfaces/PlayerMode';\nimport { PlayerReference } from 'libs/shared/context/player-context/interfaces/PlayerReference';\nimport { playerContextReducer } from 'libs/shared/context/player-context/reducer/PlayerContextReducer';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { useSettings } from 'libs/shared/hooks/useSettings';\n\nconst _THEATRE_MODE = 'play-page-theatre-mode';\n\nexport interface PlayerContextValues extends PlayerContextState {\n playerRef?: React.MutableRefObject<PlayerReference>;\n portalNode?: HtmlPortalNode;\n questionListPortalNode?: HtmlPortalNode;\n\n useInitialize?: (initializeData: PlayerInitializationData) => void;\n dispose?: () => void;\n setPlayerRef?: (player: any) => void;\n setPlayerMode?: (mode: PlayerMode) => void;\n setDefaultDisplayMode?: (displayMode: DefaultDisplayMode) => void;\n setStarted?: (started: boolean) => void;\n setPersist?: () => void;\n\n /**\n * Tells components if an instance of <PlayerContextProvider /> exists\n * above them in the tree. I.e. When this is used in curator.\n */\n hasProvider: boolean;\n}\n\nconst PlayerContext = React.createContext<PlayerContextValues>({ hasProvider: false });\n\nexport function usePlayerContext() {\n return React.useContext(PlayerContext);\n}\n\nfunction getInitialState(): PlayerContextState {\n const hasSavedTheatreMode = LocalStorageHelper.get(_THEATRE_MODE);\n\n return {\n defaultDisplayMode: hasSavedTheatreMode ? 'theatre' : 'normal'\n };\n}\n\nexport function PlayerContextProvider(props: React.PropsWithChildren) {\n const [ state, dispatch ] = React.useReducer(playerContextReducer, getInitialState());\n const { hasPreviewVideos } = useSettings(null);\n\n const playerRef = React.useRef<any>(null);\n\n const portalNode = React.useMemo(() => createHtmlPortalNode(\n { attributes: { class: 'cv-theatre-mode-video-container' } }\n ), []);\n\n const questionListPortalNode = React.useMemo(createHtmlPortalNode, []);\n\n function setPlayerRef(player: PlayerReference) {\n playerRef.current = player;\n }\n\n function useInitialize(initializeData: PlayerInitializationData) {\n const enabled = hasPreviewVideos || initializeData.mode !== 'hover';\n\n React.useEffect(() => {\n if (!enabled)\n return;\n\n /**\n * Cannot initialize a hover player if we already have a player elsewhere.\n */\n if (initializeData.mode === 'hover' && state.mode)\n return;\n\n /**\n * No hover to play on interactives. This feature is ComingSoon™️ - Sha\n */\n if (initializeData.mode === 'hover' && initializeData.objectTypeId === MasterType.Interactive)\n return;\n\n dispatch({\n type: 'initialize',\n data: initializeData\n });\n\n return disposeInternal;\n }, []);\n }\n\n function setPlayerMode(mode: PlayerMode) {\n dispatch({ type: 'mode', data: { mode } });\n }\n\n function setDefaultDisplayMode(defaultDisplayMode: DefaultDisplayMode) {\n LocalStorageHelper.set(_THEATRE_MODE, defaultDisplayMode === 'theatre');\n\n dispatch({ type: 'defaultDisplayMode', data: { defaultDisplayMode } });\n }\n\n function setStarted(): void {\n dispatch({ type: 'started' });\n }\n\n function disposeInternal(force: boolean = false): void {\n if (force) {\n playerRef.current = null;\n }\n\n dispatch({ type: 'dispose', data: { force: force } });\n }\n\n function setPersist(): void {\n dispatch({ type: 'persist' });\n }\n\n /**\n * If anything external calls dispose, we ignore the persist flag and force a disposal\n */\n function dispose(): void {\n disposeInternal(true);\n }\n\n const playerContextValues: PlayerContextValues = {\n ...state,\n playerRef,\n setPlayerRef,\n portalNode,\n questionListPortalNode,\n useInitialize,\n setPlayerMode,\n setDefaultDisplayMode,\n setStarted,\n dispose,\n setPersist,\n hasProvider: true\n };\n\n return (\n <PlayerContext.Provider value={playerContextValues}>\n {props.children}\n </PlayerContext.Provider>\n );\n}\n","\"use strict\";\n\nexports.__esModule = true;\nexports.inherits = inherits;\nfunction inherits(parent, child) {\n\tvar props = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n\tvar extended = Object.create(parent.prototype);\n\tfor (var p in props) {\n\t\textended[p] = props[p];\n\t}\n\textended.constructor = child;\n\tchild.prototype = extended;\n\treturn child;\n}","'use strict';\n\nexports.__esModule = true;\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar defaults = {\n\tdefaultProtocol: 'http',\n\tevents: null,\n\tformat: noop,\n\tformatHref: noop,\n\tnl2br: false,\n\ttagName: 'a',\n\ttarget: typeToTarget,\n\tvalidate: true,\n\tignoreTags: [],\n\tattributes: null,\n\tclassName: 'linkified' // Deprecated value - no default class will be provided in the future\n};\n\nexports.defaults = defaults;\nexports.Options = Options;\nexports.contains = contains;\n\n\nfunction Options(opts) {\n\topts = opts || {};\n\n\tthis.defaultProtocol = opts.hasOwnProperty('defaultProtocol') ? opts.defaultProtocol : defaults.defaultProtocol;\n\tthis.events = opts.hasOwnProperty('events') ? opts.events : defaults.events;\n\tthis.format = opts.hasOwnProperty('format') ? opts.format : defaults.format;\n\tthis.formatHref = opts.hasOwnProperty('formatHref') ? opts.formatHref : defaults.formatHref;\n\tthis.nl2br = opts.hasOwnProperty('nl2br') ? opts.nl2br : defaults.nl2br;\n\tthis.tagName = opts.hasOwnProperty('tagName') ? opts.tagName : defaults.tagName;\n\tthis.target = opts.hasOwnProperty('target') ? opts.target : defaults.target;\n\tthis.validate = opts.hasOwnProperty('validate') ? opts.validate : defaults.validate;\n\tthis.ignoreTags = [];\n\n\t// linkAttributes and linkClass is deprecated\n\tthis.attributes = opts.attributes || opts.linkAttributes || defaults.attributes;\n\tthis.className = opts.hasOwnProperty('className') ? opts.className : opts.linkClass || defaults.className;\n\n\t// Make all tags names upper case\n\tvar ignoredTags = opts.hasOwnProperty('ignoreTags') ? opts.ignoreTags : defaults.ignoreTags;\n\tfor (var i = 0; i < ignoredTags.length; i++) {\n\t\tthis.ignoreTags.push(ignoredTags[i].toUpperCase());\n\t}\n}\n\nOptions.prototype = {\n\t/**\n * Given the token, return all options for how it should be displayed\n */\n\tresolve: function resolve(token) {\n\t\tvar href = token.toHref(this.defaultProtocol);\n\t\treturn {\n\t\t\tformatted: this.get('format', token.toString(), token),\n\t\t\tformattedHref: this.get('formatHref', href, token),\n\t\t\ttagName: this.get('tagName', href, token),\n\t\t\tclassName: this.get('className', href, token),\n\t\t\ttarget: this.get('target', href, token),\n\t\t\tevents: this.getObject('events', href, token),\n\t\t\tattributes: this.getObject('attributes', href, token)\n\t\t};\n\t},\n\n\n\t/**\n * Returns true or false based on whether a token should be displayed as a\n * link based on the user options. By default,\n */\n\tcheck: function check(token) {\n\t\treturn this.get('validate', token.toString(), token);\n\t},\n\n\n\t// Private methods\n\n\t/**\n * Resolve an option's value based on the value of the option and the given\n * params.\n * @param {String} key Name of option to use\n * @param operator will be passed to the target option if it's method\n * @param {MultiToken} token The token from linkify.tokenize\n */\n\tget: function get(key, operator, token) {\n\t\tvar optionValue = void 0,\n\t\t option = this[key];\n\t\tif (!option) {\n\t\t\treturn option;\n\t\t}\n\n\t\tswitch (typeof option === 'undefined' ? 'undefined' : _typeof(option)) {\n\t\t\tcase 'function':\n\t\t\t\treturn option(operator, token.type);\n\t\t\tcase 'object':\n\t\t\t\toptionValue = option.hasOwnProperty(token.type) ? option[token.type] : defaults[key];\n\t\t\t\treturn typeof optionValue === 'function' ? optionValue(operator, token.type) : optionValue;\n\t\t}\n\n\t\treturn option;\n\t},\n\tgetObject: function getObject(key, operator, token) {\n\t\tvar option = this[key];\n\t\treturn typeof option === 'function' ? option(operator, token.type) : option;\n\t}\n};\n\n/**\n * Quick indexOf replacement for checking the ignoreTags option\n */\nfunction contains(arr, value) {\n\tfor (var i = 0; i < arr.length; i++) {\n\t\tif (arr[i] === value) {\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n}\n\nfunction noop(val) {\n\treturn val;\n}\n\nfunction typeToTarget(href, type) {\n\treturn type === 'url' ? '_blank' : null;\n}","'use strict';\n\nexports.__esModule = true;\nexports.stateify = exports.TokenState = exports.CharacterState = undefined;\n\nvar _class = require('../utils/class');\n\nfunction createStateClass() {\n\treturn function (tClass) {\n\t\tthis.j = [];\n\t\tthis.T = tClass || null;\n\t};\n}\n\n/**\n\tA simple state machine that can emit token classes\n\n\tThe `j` property in this class refers to state jumps. It's a\n\tmultidimensional array where for each element:\n\n\t* index [0] is a symbol or class of symbols to transition to.\n\t* index [1] is a State instance which matches\n\n\tThe type of symbol will depend on the target implementation for this class.\n\tIn Linkify, we have a two-stage scanner. Each stage uses this state machine\n\tbut with a slighly different (polymorphic) implementation.\n\n\tThe `T` property refers to the token class.\n\n\tTODO: Can the `on` and `next` methods be combined?\n\n\t@class BaseState\n*/\nvar BaseState = createStateClass();\nBaseState.prototype = {\n\tdefaultTransition: false,\n\n\t/**\n \t@method constructor\n \t@param {Class} tClass Pass in the kind of token to emit if there are\n \t\tno jumps after this state and the state is accepting.\n */\n\n\t/**\n \tOn the given symbol(s), this machine should go to the given state\n \t\t@method on\n \t@param {Array|Mixed} symbol\n \t@param {BaseState} state Note that the type of this state should be the\n \t\tsame as the current instance (i.e., don't pass in a different\n \t\tsubclass)\n */\n\ton: function on(symbol, state) {\n\t\tif (symbol instanceof Array) {\n\t\t\tfor (var i = 0; i < symbol.length; i++) {\n\t\t\t\tthis.j.push([symbol[i], state]);\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\t\tthis.j.push([symbol, state]);\n\t\treturn this;\n\t},\n\n\n\t/**\n \tGiven the next item, returns next state for that item\n \t@method next\n \t@param {Mixed} item Should be an instance of the symbols handled by\n \t\tthis particular machine.\n \t@return {State} state Returns false if no jumps are available\n */\n\tnext: function next(item) {\n\t\tfor (var i = 0; i < this.j.length; i++) {\n\t\t\tvar jump = this.j[i];\n\t\t\tvar symbol = jump[0]; // Next item to check for\n\t\t\tvar state = jump[1]; // State to jump to if items match\n\n\t\t\t// compare item with symbol\n\t\t\tif (this.test(item, symbol)) {\n\t\t\t\treturn state;\n\t\t\t}\n\t\t}\n\n\t\t// Nowhere left to jump!\n\t\treturn this.defaultTransition;\n\t},\n\n\n\t/**\n \tDoes this state accept?\n \t`true` only of `this.T` exists\n \t\t@method accepts\n \t@return {Boolean}\n */\n\taccepts: function accepts() {\n\t\treturn !!this.T;\n\t},\n\n\n\t/**\n \tDetermine whether a given item \"symbolizes\" the symbol, where symbol is\n \ta class of items handled by this state machine.\n \t\tThis method should be overriden in extended classes.\n \t\t@method test\n \t@param {Mixed} item Does this item match the given symbol?\n \t@param {Mixed} symbol\n \t@return {Boolean}\n */\n\ttest: function test(item, symbol) {\n\t\treturn item === symbol;\n\t},\n\n\n\t/**\n \tEmit the token for this State (just return it in this case)\n \tIf this emits a token, this instance is an accepting state\n \t@method emit\n \t@return {Class} T\n */\n\temit: function emit() {\n\t\treturn this.T;\n\t}\n};\n\n/**\n\tState machine for string-based input\n\n\t@class CharacterState\n\t@extends BaseState\n*/\nvar CharacterState = (0, _class.inherits)(BaseState, createStateClass(), {\n\t/**\n \tDoes the given character match the given character or regular\n \texpression?\n \t\t@method test\n \t@param {String} char\n \t@param {String|RegExp} charOrRegExp\n \t@return {Boolean}\n */\n\ttest: function test(character, charOrRegExp) {\n\t\treturn character === charOrRegExp || charOrRegExp instanceof RegExp && charOrRegExp.test(character);\n\t}\n});\n\n/**\n\tState machine for input in the form of TextTokens\n\n\t@class TokenState\n\t@extends BaseState\n*/\nvar TokenState = (0, _class.inherits)(BaseState, createStateClass(), {\n\n\t/**\n * Similar to `on`, but returns the state the results in the transition from\n * the given item\n * @method jump\n * @param {Mixed} item\n * @param {Token} [token]\n * @return state\n */\n\tjump: function jump(token) {\n\t\tvar tClass = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n\n\t\tvar state = this.next(new token('')); // dummy temp token\n\t\tif (state === this.defaultTransition) {\n\t\t\t// Make a new state!\n\t\t\tstate = new this.constructor(tClass);\n\t\t\tthis.on(token, state);\n\t\t} else if (tClass) {\n\t\t\tstate.T = tClass;\n\t\t}\n\t\treturn state;\n\t},\n\n\n\t/**\n \tIs the given token an instance of the given token class?\n \t\t@method test\n \t@param {TextToken} token\n \t@param {Class} tokenClass\n \t@return {Boolean}\n */\n\ttest: function test(token, tokenClass) {\n\t\treturn token instanceof tokenClass;\n\t}\n});\n\n/**\n\tGiven a non-empty target string, generates states (if required) for each\n\tconsecutive substring of characters in str starting from the beginning of\n\tthe string. The final state will have a special value, as specified in\n\toptions. All other \"in between\" substrings will have a default end state.\n\n\tThis turns the state machine into a Trie-like data structure (rather than a\n\tintelligently-designed DFA).\n\n\tNote that I haven't really tried these with any strings other than\n\tDOMAIN.\n\n\t@param {String} str\n\t@param {CharacterState} start State to jump from the first character\n\t@param {Class} endToken Token class to emit when the given string has been\n\t\tmatched and no more jumps exist.\n\t@param {Class} defaultToken \"Filler token\", or which token type to emit when\n\t\twe don't have a full match\n\t@return {Array} list of newly-created states\n*/\nfunction stateify(str, start, endToken, defaultToken) {\n\tvar i = 0,\n\t len = str.length,\n\t state = start,\n\t newStates = [],\n\t nextState = void 0;\n\n\t// Find the next state without a jump to the next character\n\twhile (i < len && (nextState = state.next(str[i]))) {\n\t\tstate = nextState;\n\t\ti++;\n\t}\n\n\tif (i >= len) {\n\t\treturn [];\n\t} // no new tokens were added\n\n\twhile (i < len - 1) {\n\t\tnextState = new CharacterState(defaultToken);\n\t\tnewStates.push(nextState);\n\t\tstate.on(str[i], nextState);\n\t\tstate = nextState;\n\t\ti++;\n\t}\n\n\tnextState = new CharacterState(endToken);\n\tnewStates.push(nextState);\n\tstate.on(str[len - 1], nextState);\n\n\treturn newStates;\n}\n\nexports.CharacterState = CharacterState;\nexports.TokenState = TokenState;\nexports.stateify = stateify;","\"use strict\";\n\nexports.__esModule = true;\nfunction createTokenClass() {\n\treturn function (value) {\n\t\tif (value) {\n\t\t\tthis.v = value;\n\t\t}\n\t};\n}\n\nexports.createTokenClass = createTokenClass;","'use strict';\n\nexports.__esModule = true;\nexports.AMPERSAND = exports.CLOSEPAREN = exports.CLOSEANGLEBRACKET = exports.CLOSEBRACKET = exports.CLOSEBRACE = exports.OPENPAREN = exports.OPENANGLEBRACKET = exports.OPENBRACKET = exports.OPENBRACE = exports.WS = exports.TLD = exports.SYM = exports.UNDERSCORE = exports.SLASH = exports.MAILTO = exports.PROTOCOL = exports.QUERY = exports.POUND = exports.PLUS = exports.NUM = exports.NL = exports.LOCALHOST = exports.PUNCTUATION = exports.DOT = exports.COLON = exports.AT = exports.DOMAIN = exports.Base = undefined;\n\nvar _createTokenClass = require('./create-token-class');\n\nvar _class = require('../../utils/class');\n\n/******************************************************************************\n\tText Tokens\n\tTokens composed of strings\n******************************************************************************/\n\n/**\n\tAbstract class used for manufacturing text tokens.\n\tPass in the value this token represents\n\n\t@class TextToken\n\t@abstract\n*/\nvar TextToken = (0, _createTokenClass.createTokenClass)();\nTextToken.prototype = {\n\ttoString: function toString() {\n\t\treturn this.v + '';\n\t}\n};\n\nfunction inheritsToken(value) {\n\tvar props = value ? { v: value } : {};\n\treturn (0, _class.inherits)(TextToken, (0, _createTokenClass.createTokenClass)(), props);\n}\n\n/**\n\tA valid domain token\n\t@class DOMAIN\n\t@extends TextToken\n*/\nvar DOMAIN = inheritsToken();\n\n/**\n\t@class AT\n\t@extends TextToken\n*/\nvar AT = inheritsToken('@');\n\n/**\n\tRepresents a single colon `:` character\n\n\t@class COLON\n\t@extends TextToken\n*/\nvar COLON = inheritsToken(':');\n\n/**\n\t@class DOT\n\t@extends TextToken\n*/\nvar DOT = inheritsToken('.');\n\n/**\n\tA character class that can surround the URL, but which the URL cannot begin\n\tor end with. Does not include certain English punctuation like parentheses.\n\n\t@class PUNCTUATION\n\t@extends TextToken\n*/\nvar PUNCTUATION = inheritsToken();\n\n/**\n\tThe word localhost (by itself)\n\t@class LOCALHOST\n\t@extends TextToken\n*/\nvar LOCALHOST = inheritsToken();\n\n/**\n\tNewline token\n\t@class NL\n\t@extends TextToken\n*/\nvar NL = inheritsToken('\\n');\n\n/**\n\t@class NUM\n\t@extends TextToken\n*/\nvar NUM = inheritsToken();\n\n/**\n\t@class PLUS\n\t@extends TextToken\n*/\nvar PLUS = inheritsToken('+');\n\n/**\n\t@class POUND\n\t@extends TextToken\n*/\nvar POUND = inheritsToken('#');\n\n/**\n\tRepresents a web URL protocol. Supported types include\n\n\t* `http:`\n\t* `https:`\n\t* `ftp:`\n\t* `ftps:`\n\n\t@class PROTOCOL\n\t@extends TextToken\n*/\nvar PROTOCOL = inheritsToken();\n\n/**\n\tRepresents the start of the email URI protocol\n\n\t@class MAILTO\n\t@extends TextToken\n*/\nvar MAILTO = inheritsToken('mailto:');\n\n/**\n\t@class QUERY\n\t@extends TextToken\n*/\nvar QUERY = inheritsToken('?');\n\n/**\n\t@class SLASH\n\t@extends TextToken\n*/\nvar SLASH = inheritsToken('/');\n\n/**\n\t@class UNDERSCORE\n\t@extends TextToken\n*/\nvar UNDERSCORE = inheritsToken('_');\n\n/**\n\tOne ore more non-whitespace symbol.\n\t@class SYM\n\t@extends TextToken\n*/\nvar SYM = inheritsToken();\n\n/**\n\t@class TLD\n\t@extends TextToken\n*/\nvar TLD = inheritsToken();\n\n/**\n\tRepresents a string of consecutive whitespace characters\n\n\t@class WS\n\t@extends TextToken\n*/\nvar WS = inheritsToken();\n\n/**\n\tOpening/closing bracket classes\n*/\n\nvar OPENBRACE = inheritsToken('{');\nvar OPENBRACKET = inheritsToken('[');\nvar OPENANGLEBRACKET = inheritsToken('<');\nvar OPENPAREN = inheritsToken('(');\nvar CLOSEBRACE = inheritsToken('}');\nvar CLOSEBRACKET = inheritsToken(']');\nvar CLOSEANGLEBRACKET = inheritsToken('>');\nvar CLOSEPAREN = inheritsToken(')');\n\nvar AMPERSAND = inheritsToken('&');\n\nexports.Base = TextToken;\nexports.DOMAIN = DOMAIN;\nexports.AT = AT;\nexports.COLON = COLON;\nexports.DOT = DOT;\nexports.PUNCTUATION = PUNCTUATION;\nexports.LOCALHOST = LOCALHOST;\nexports.NL = NL;\nexports.NUM = NUM;\nexports.PLUS = PLUS;\nexports.POUND = POUND;\nexports.QUERY = QUERY;\nexports.PROTOCOL = PROTOCOL;\nexports.MAILTO = MAILTO;\nexports.SLASH = SLASH;\nexports.UNDERSCORE = UNDERSCORE;\nexports.SYM = SYM;\nexports.TLD = TLD;\nexports.WS = WS;\nexports.OPENBRACE = OPENBRACE;\nexports.OPENBRACKET = OPENBRACKET;\nexports.OPENANGLEBRACKET = OPENANGLEBRACKET;\nexports.OPENPAREN = OPENPAREN;\nexports.CLOSEBRACE = CLOSEBRACE;\nexports.CLOSEBRACKET = CLOSEBRACKET;\nexports.CLOSEANGLEBRACKET = CLOSEANGLEBRACKET;\nexports.CLOSEPAREN = CLOSEPAREN;\nexports.AMPERSAND = AMPERSAND;","'use strict';\n\nexports.__esModule = true;\nexports.start = exports.run = exports.TOKENS = exports.State = undefined;\n\nvar _state = require('./state');\n\nvar _text = require('./tokens/text');\n\nvar TOKENS = _interopRequireWildcard(_text);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nvar tlds = 'aaa|aarp|abarth|abb|abbott|abbvie|abc|able|abogado|abudhabi|ac|academy|accenture|accountant|accountants|aco|active|actor|ad|adac|ads|adult|ae|aeg|aero|aetna|af|afamilycompany|afl|africa|ag|agakhan|agency|ai|aig|aigo|airbus|airforce|airtel|akdn|al|alfaromeo|alibaba|alipay|allfinanz|allstate|ally|alsace|alstom|am|americanexpress|americanfamily|amex|amfam|amica|amsterdam|analytics|android|anquan|anz|ao|aol|apartments|app|apple|aq|aquarelle|ar|arab|aramco|archi|army|arpa|art|arte|as|asda|asia|associates|at|athleta|attorney|au|auction|audi|audible|audio|auspost|author|auto|autos|avianca|aw|aws|ax|axa|az|azure|ba|baby|baidu|banamex|bananarepublic|band|bank|bar|barcelona|barclaycard|barclays|barefoot|bargains|baseball|basketball|bauhaus|bayern|bb|bbc|bbt|bbva|bcg|bcn|bd|be|beats|beauty|beer|bentley|berlin|best|bestbuy|bet|bf|bg|bh|bharti|bi|bible|bid|bike|bing|bingo|bio|biz|bj|black|blackfriday|blanco|blockbuster|blog|bloomberg|blue|bm|bms|bmw|bn|bnl|bnpparibas|bo|boats|boehringer|bofa|bom|bond|boo|book|booking|boots|bosch|bostik|boston|bot|boutique|box|br|bradesco|bridgestone|broadway|broker|brother|brussels|bs|bt|budapest|bugatti|build|builders|business|buy|buzz|bv|bw|by|bz|bzh|ca|cab|cafe|cal|call|calvinklein|cam|camera|camp|cancerresearch|canon|capetown|capital|capitalone|car|caravan|cards|care|career|careers|cars|cartier|casa|case|caseih|cash|casino|cat|catering|catholic|cba|cbn|cbre|cbs|cc|cd|ceb|center|ceo|cern|cf|cfa|cfd|cg|ch|chanel|channel|chase|chat|cheap|chintai|chloe|christmas|chrome|chrysler|church|ci|cipriani|circle|cisco|citadel|citi|citic|city|cityeats|ck|cl|claims|cleaning|click|clinic|clinique|clothing|cloud|club|clubmed|cm|cn|co|coach|codes|coffee|college|cologne|com|comcast|commbank|community|company|compare|computer|comsec|condos|construction|consulting|contact|contractors|cooking|cookingchannel|cool|coop|corsica|country|coupon|coupons|courses|cr|credit|creditcard|creditunion|cricket|crown|crs|cruise|cruises|csc|cu|cuisinella|cv|cw|cx|cy|cymru|cyou|cz|dabur|dad|dance|data|date|dating|datsun|day|dclk|dds|de|deal|dealer|deals|degree|delivery|dell|deloitte|delta|democrat|dental|dentist|desi|design|dev|dhl|diamonds|diet|digital|direct|directory|discount|discover|dish|diy|dj|dk|dm|dnp|do|docs|doctor|dodge|dog|doha|domains|dot|download|drive|dtv|dubai|duck|dunlop|duns|dupont|durban|dvag|dvr|dz|earth|eat|ec|eco|edeka|edu|education|ee|eg|email|emerck|energy|engineer|engineering|enterprises|epost|epson|equipment|er|ericsson|erni|es|esq|estate|esurance|et|etisalat|eu|eurovision|eus|events|everbank|exchange|expert|exposed|express|extraspace|fage|fail|fairwinds|faith|family|fan|fans|farm|farmers|fashion|fast|fedex|feedback|ferrari|ferrero|fi|fiat|fidelity|fido|film|final|finance|financial|fire|firestone|firmdale|fish|fishing|fit|fitness|fj|fk|flickr|flights|flir|florist|flowers|fly|fm|fo|foo|food|foodnetwork|football|ford|forex|forsale|forum|foundation|fox|fr|free|fresenius|frl|frogans|frontdoor|frontier|ftr|fujitsu|fujixerox|fun|fund|furniture|futbol|fyi|ga|gal|gallery|gallo|gallup|game|games|gap|garden|gb|gbiz|gd|gdn|ge|gea|gent|genting|george|gf|gg|ggee|gh|gi|gift|gifts|gives|giving|gl|glade|glass|gle|global|globo|gm|gmail|gmbh|gmo|gmx|gn|godaddy|gold|goldpoint|golf|goo|goodhands|goodyear|goog|google|gop|got|gov|gp|gq|gr|grainger|graphics|gratis|green|gripe|grocery|group|gs|gt|gu|guardian|gucci|guge|guide|guitars|guru|gw|gy|hair|hamburg|hangout|haus|hbo|hdfc|hdfcbank|health|healthcare|help|helsinki|here|hermes|hgtv|hiphop|hisamitsu|hitachi|hiv|hk|hkt|hm|hn|hockey|holdings|holiday|homedepot|homegoods|homes|homesense|honda|honeywell|horse|hospital|host|hosting|hot|hoteles|hotels|hotmail|house|how|hr|hsbc|ht|htc|hu|hughes|hyatt|hyundai|ibm|icbc|ice|icu|id|ie|ieee|ifm|ikano|il|im|imamat|imdb|immo|immobilien|in|industries|infiniti|info|ing|ink|institute|insurance|insure|int|intel|international|intuit|investments|io|ipiranga|iq|ir|irish|is|iselect|ismaili|ist|istanbul|it|itau|itv|iveco|iwc|jaguar|java|jcb|jcp|je|jeep|jetzt|jewelry|jio|jlc|jll|jm|jmp|jnj|jo|jobs|joburg|jot|joy|jp|jpmorgan|jprs|juegos|juniper|kaufen|kddi|ke|kerryhotels|kerrylogistics|kerryproperties|kfh|kg|kh|ki|kia|kim|kinder|kindle|kitchen|kiwi|km|kn|koeln|komatsu|kosher|kp|kpmg|kpn|kr|krd|kred|kuokgroup|kw|ky|kyoto|kz|la|lacaixa|ladbrokes|lamborghini|lamer|lancaster|lancia|lancome|land|landrover|lanxess|lasalle|lat|latino|latrobe|law|lawyer|lb|lc|lds|lease|leclerc|lefrak|legal|lego|lexus|lgbt|li|liaison|lidl|life|lifeinsurance|lifestyle|lighting|like|lilly|limited|limo|lincoln|linde|link|lipsy|live|living|lixil|lk|loan|loans|locker|locus|loft|lol|london|lotte|lotto|love|lpl|lplfinancial|lr|ls|lt|ltd|ltda|lu|lundbeck|lupin|luxe|luxury|lv|ly|ma|macys|madrid|maif|maison|makeup|man|management|mango|map|market|marketing|markets|marriott|marshalls|maserati|mattel|mba|mc|mckinsey|md|me|med|media|meet|melbourne|meme|memorial|men|menu|meo|merckmsd|metlife|mg|mh|miami|microsoft|mil|mini|mint|mit|mitsubishi|mk|ml|mlb|mls|mm|mma|mn|mo|mobi|mobile|mobily|moda|moe|moi|mom|monash|money|monster|mopar|mormon|mortgage|moscow|moto|motorcycles|mov|movie|movistar|mp|mq|mr|ms|msd|mt|mtn|mtr|mu|museum|mutual|mv|mw|mx|my|mz|na|nab|nadex|nagoya|name|nationwide|natura|navy|nba|nc|ne|nec|net|netbank|netflix|network|neustar|new|newholland|news|next|nextdirect|nexus|nf|nfl|ng|ngo|nhk|ni|nico|nike|nikon|ninja|nissan|nissay|nl|no|nokia|northwesternmutual|norton|now|nowruz|nowtv|np|nr|nra|nrw|ntt|nu|nyc|nz|obi|observer|off|office|okinawa|olayan|olayangroup|oldnavy|ollo|om|omega|one|ong|onl|online|onyourside|ooo|open|oracle|orange|org|organic|origins|osaka|otsuka|ott|ovh|pa|page|panasonic|panerai|paris|pars|partners|parts|party|passagens|pay|pccw|pe|pet|pf|pfizer|pg|ph|pharmacy|phd|philips|phone|photo|photography|photos|physio|piaget|pics|pictet|pictures|pid|pin|ping|pink|pioneer|pizza|pk|pl|place|play|playstation|plumbing|plus|pm|pn|pnc|pohl|poker|politie|porn|post|pr|pramerica|praxi|press|prime|pro|prod|productions|prof|progressive|promo|properties|property|protection|pru|prudential|ps|pt|pub|pw|pwc|py|qa|qpon|quebec|quest|qvc|racing|radio|raid|re|read|realestate|realtor|realty|recipes|red|redstone|redumbrella|rehab|reise|reisen|reit|reliance|ren|rent|rentals|repair|report|republican|rest|restaurant|review|reviews|rexroth|rich|richardli|ricoh|rightathome|ril|rio|rip|rmit|ro|rocher|rocks|rodeo|rogers|room|rs|rsvp|ru|rugby|ruhr|run|rw|rwe|ryukyu|sa|saarland|safe|safety|sakura|sale|salon|samsclub|samsung|sandvik|sandvikcoromant|sanofi|sap|sapo|sarl|sas|save|saxo|sb|sbi|sbs|sc|sca|scb|schaeffler|schmidt|scholarships|school|schule|schwarz|science|scjohnson|scor|scot|sd|se|search|seat|secure|security|seek|select|sener|services|ses|seven|sew|sex|sexy|sfr|sg|sh|shangrila|sharp|shaw|shell|shia|shiksha|shoes|shop|shopping|shouji|show|showtime|shriram|si|silk|sina|singles|site|sj|sk|ski|skin|sky|skype|sl|sling|sm|smart|smile|sn|sncf|so|soccer|social|softbank|software|sohu|solar|solutions|song|sony|soy|space|spiegel|spot|spreadbetting|sr|srl|srt|st|stada|staples|star|starhub|statebank|statefarm|statoil|stc|stcgroup|stockholm|storage|store|stream|studio|study|style|su|sucks|supplies|supply|support|surf|surgery|suzuki|sv|swatch|swiftcover|swiss|sx|sy|sydney|symantec|systems|sz|tab|taipei|talk|taobao|target|tatamotors|tatar|tattoo|tax|taxi|tc|tci|td|tdk|team|tech|technology|tel|telecity|telefonica|temasek|tennis|teva|tf|tg|th|thd|theater|theatre|tiaa|tickets|tienda|tiffany|tips|tires|tirol|tj|tjmaxx|tjx|tk|tkmaxx|tl|tm|tmall|tn|to|today|tokyo|tools|top|toray|toshiba|total|tours|town|toyota|toys|tr|trade|trading|training|travel|travelchannel|travelers|travelersinsurance|trust|trv|tt|tube|tui|tunes|tushu|tv|tvs|tw|tz|ua|ubank|ubs|uconnect|ug|uk|unicom|university|uno|uol|ups|us|uy|uz|va|vacations|vana|vanguard|vc|ve|vegas|ventures|verisign|versicherung|vet|vg|vi|viajes|video|vig|viking|villas|vin|vip|virgin|visa|vision|vista|vistaprint|viva|vivo|vlaanderen|vn|vodka|volkswagen|volvo|vote|voting|voto|voyage|vu|vuelos|wales|walmart|walter|wang|wanggou|warman|watch|watches|weather|weatherchannel|webcam|weber|website|wed|wedding|weibo|weir|wf|whoswho|wien|wiki|williamhill|win|windows|wine|winners|wme|wolterskluwer|woodside|work|works|world|wow|ws|wtc|wtf|xbox|xerox|xfinity|xihuan|xin|xn--11b4c3d|xn--1ck2e1b|xn--1qqw23a|xn--2scrj9c|xn--30rr7y|xn--3bst00m|xn--3ds443g|xn--3e0b707e|xn--3hcrj9c|xn--3oq18vl8pn36a|xn--3pxu8k|xn--42c2d9a|xn--45br5cyl|xn--45brj9c|xn--45q11c|xn--4gbrim|xn--54b7fta0cc|xn--55qw42g|xn--55qx5d|xn--5su34j936bgsg|xn--5tzm5g|xn--6frz82g|xn--6qq986b3xl|xn--80adxhks|xn--80ao21a|xn--80aqecdr1a|xn--80asehdb|xn--80aswg|xn--8y0a063a|xn--90a3ac|xn--90ae|xn--90ais|xn--9dbq2a|xn--9et52u|xn--9krt00a|xn--b4w605ferd|xn--bck1b9a5dre4c|xn--c1avg|xn--c2br7g|xn--cck2b3b|xn--cg4bki|xn--clchc0ea0b2g2a9gcd|xn--czr694b|xn--czrs0t|xn--czru2d|xn--d1acj3b|xn--d1alf|xn--e1a4c|xn--eckvdtc9d|xn--efvy88h|xn--estv75g|xn--fct429k|xn--fhbei|xn--fiq228c5hs|xn--fiq64b|xn--fiqs8s|xn--fiqz9s|xn--fjq720a|xn--flw351e|xn--fpcrj9c3d|xn--fzc2c9e2c|xn--fzys8d69uvgm|xn--g2xx48c|xn--gckr3f0f|xn--gecrj9c|xn--gk3at1e|xn--h2breg3eve|xn--h2brj9c|xn--h2brj9c8c|xn--hxt814e|xn--i1b6b1a6a2e|xn--imr513n|xn--io0a7i|xn--j1aef|xn--j1amh|xn--j6w193g|xn--jlq61u9w7b|xn--jvr189m|xn--kcrx77d1x4a|xn--kprw13d|xn--kpry57d|xn--kpu716f|xn--kput3i|xn--l1acc|xn--lgbbat1ad8j|xn--mgb9awbf|xn--mgba3a3ejt|xn--mgba3a4f16a|xn--mgba7c0bbn0a|xn--mgbaakc7dvf|xn--mgbaam7a8h|xn--mgbab2bd|xn--mgbai9azgqp6j|xn--mgbayh7gpa|xn--mgbb9fbpob|xn--mgbbh1a|xn--mgbbh1a71e|xn--mgbc0a9azcg|xn--mgbca7dzdo|xn--mgberp4a5d4ar|xn--mgbgu82a|xn--mgbi4ecexp|xn--mgbpl2fh|xn--mgbt3dhd|xn--mgbtx2b|xn--mgbx4cd0ab|xn--mix891f|xn--mk1bu44c|xn--mxtq1m|xn--ngbc5azd|xn--ngbe9e0a|xn--ngbrx|xn--node|xn--nqv7f|xn--nqv7fs00ema|xn--nyqy26a|xn--o3cw4h|xn--ogbpf8fl|xn--p1acf|xn--p1ai|xn--pbt977c|xn--pgbs0dh|xn--pssy2u|xn--q9jyb4c|xn--qcka1pmc|xn--qxam|xn--rhqv96g|xn--rovu88b|xn--rvc1e0am3e|xn--s9brj9c|xn--ses554g|xn--t60b56a|xn--tckwe|xn--tiq49xqyj|xn--unup4y|xn--vermgensberater-ctb|xn--vermgensberatung-pwb|xn--vhquv|xn--vuq861b|xn--w4r85el8fhu5dnra|xn--w4rs40l|xn--wgbh1c|xn--wgbl6a|xn--xhq521b|xn--xkc2al3hye2a|xn--xkc2dl3a5ee0h|xn--y9a3aq|xn--yfro4i67o|xn--ygbi2ammx|xn--zfr164b|xperia|xxx|xyz|yachts|yahoo|yamaxun|yandex|ye|yodobashi|yoga|yokohama|you|youtube|yt|yun|za|zappos|zara|zero|zip|zippo|zm|zone|zuerich|zw'.split('|'); // macro, see gulpfile.js\n\n/**\n\tThe scanner provides an interface that takes a string of text as input, and\n\toutputs an array of tokens instances that can be used for easy URL parsing.\n\n\t@module linkify\n\t@submodule scanner\n\t@main scanner\n*/\n\nvar NUMBERS = '0123456789'.split('');\nvar ALPHANUM = '0123456789abcdefghijklmnopqrstuvwxyz'.split('');\nvar WHITESPACE = [' ', '\\f', '\\r', '\\t', '\\v', '\\xA0', '\\u1680', '\\u180E']; // excluding line breaks\n\nvar domainStates = []; // states that jump to DOMAIN on /[a-z0-9]/\nvar makeState = function makeState(tokenClass) {\n\treturn new _state.CharacterState(tokenClass);\n};\n\n// Frequently used states\nvar S_START = makeState();\nvar S_NUM = makeState(_text.NUM);\nvar S_DOMAIN = makeState(_text.DOMAIN);\nvar S_DOMAIN_HYPHEN = makeState(); // domain followed by 1 or more hyphen characters\nvar S_WS = makeState(_text.WS);\n\n// States for special URL symbols\nS_START.on('@', makeState(_text.AT)).on('.', makeState(_text.DOT)).on('+', makeState(_text.PLUS)).on('#', makeState(_text.POUND)).on('?', makeState(_text.QUERY)).on('/', makeState(_text.SLASH)).on('_', makeState(_text.UNDERSCORE)).on(':', makeState(_text.COLON)).on('{', makeState(_text.OPENBRACE)).on('[', makeState(_text.OPENBRACKET)).on('<', makeState(_text.OPENANGLEBRACKET)).on('(', makeState(_text.OPENPAREN)).on('}', makeState(_text.CLOSEBRACE)).on(']', makeState(_text.CLOSEBRACKET)).on('>', makeState(_text.CLOSEANGLEBRACKET)).on(')', makeState(_text.CLOSEPAREN)).on('&', makeState(_text.AMPERSAND)).on([',', ';', '!', '\"', '\\''], makeState(_text.PUNCTUATION));\n\n// Whitespace jumps\n// Tokens of only non-newline whitespace are arbitrarily long\nS_START.on('\\n', makeState(_text.NL)).on(WHITESPACE, S_WS);\n\n// If any whitespace except newline, more whitespace!\nS_WS.on(WHITESPACE, S_WS);\n\n// Generates states for top-level domains\n// Note that this is most accurate when tlds are in alphabetical order\nfor (var i = 0; i < tlds.length; i++) {\n\tvar newStates = (0, _state.stateify)(tlds[i], S_START, _text.TLD, _text.DOMAIN);\n\tdomainStates.push.apply(domainStates, newStates);\n}\n\n// Collect the states generated by different protocls\nvar partialProtocolFileStates = (0, _state.stateify)('file', S_START, _text.DOMAIN, _text.DOMAIN);\nvar partialProtocolFtpStates = (0, _state.stateify)('ftp', S_START, _text.DOMAIN, _text.DOMAIN);\nvar partialProtocolHttpStates = (0, _state.stateify)('http', S_START, _text.DOMAIN, _text.DOMAIN);\nvar partialProtocolMailtoStates = (0, _state.stateify)('mailto', S_START, _text.DOMAIN, _text.DOMAIN);\n\n// Add the states to the array of DOMAINeric states\ndomainStates.push.apply(domainStates, partialProtocolFileStates);\ndomainStates.push.apply(domainStates, partialProtocolFtpStates);\ndomainStates.push.apply(domainStates, partialProtocolHttpStates);\ndomainStates.push.apply(domainStates, partialProtocolMailtoStates);\n\n// Protocol states\nvar S_PROTOCOL_FILE = partialProtocolFileStates.pop();\nvar S_PROTOCOL_FTP = partialProtocolFtpStates.pop();\nvar S_PROTOCOL_HTTP = partialProtocolHttpStates.pop();\nvar S_MAILTO = partialProtocolMailtoStates.pop();\nvar S_PROTOCOL_SECURE = makeState(_text.DOMAIN);\nvar S_FULL_PROTOCOL = makeState(_text.PROTOCOL); // Full protocol ends with COLON\nvar S_FULL_MAILTO = makeState(_text.MAILTO); // Mailto ends with COLON\n\n// Secure protocols (end with 's')\nS_PROTOCOL_FTP.on('s', S_PROTOCOL_SECURE).on(':', S_FULL_PROTOCOL);\n\nS_PROTOCOL_HTTP.on('s', S_PROTOCOL_SECURE).on(':', S_FULL_PROTOCOL);\n\ndomainStates.push(S_PROTOCOL_SECURE);\n\n// Become protocol tokens after a COLON\nS_PROTOCOL_FILE.on(':', S_FULL_PROTOCOL);\nS_PROTOCOL_SECURE.on(':', S_FULL_PROTOCOL);\nS_MAILTO.on(':', S_FULL_MAILTO);\n\n// Localhost\nvar partialLocalhostStates = (0, _state.stateify)('localhost', S_START, _text.LOCALHOST, _text.DOMAIN);\ndomainStates.push.apply(domainStates, partialLocalhostStates);\n\n// Everything else\n// DOMAINs make more DOMAINs\n// Number and character transitions\nS_START.on(NUMBERS, S_NUM);\nS_NUM.on('-', S_DOMAIN_HYPHEN).on(NUMBERS, S_NUM).on(ALPHANUM, S_DOMAIN); // number becomes DOMAIN\n\nS_DOMAIN.on('-', S_DOMAIN_HYPHEN).on(ALPHANUM, S_DOMAIN);\n\n// All the generated states should have a jump to DOMAIN\nfor (var _i = 0; _i < domainStates.length; _i++) {\n\tdomainStates[_i].on('-', S_DOMAIN_HYPHEN).on(ALPHANUM, S_DOMAIN);\n}\n\nS_DOMAIN_HYPHEN.on('-', S_DOMAIN_HYPHEN).on(NUMBERS, S_DOMAIN).on(ALPHANUM, S_DOMAIN);\n\n// Set default transition\nS_START.defaultTransition = makeState(_text.SYM);\n\n/**\n\tGiven a string, returns an array of TOKEN instances representing the\n\tcomposition of that string.\n\n\t@method run\n\t@param {String} str Input string to scan\n\t@return {Array} Array of TOKEN instances\n*/\nvar run = function run(str) {\n\n\t// The state machine only looks at lowercase strings.\n\t// This selective `toLowerCase` is used because lowercasing the entire\n\t// string causes the length and character position to vary in some in some\n\t// non-English strings. This happens only on V8-based runtimes.\n\tvar lowerStr = str.replace(/[A-Z]/g, function (c) {\n\t\treturn c.toLowerCase();\n\t});\n\tvar len = str.length;\n\tvar tokens = []; // return value\n\n\tvar cursor = 0;\n\n\t// Tokenize the string\n\twhile (cursor < len) {\n\t\tvar state = S_START;\n\t\tvar nextState = null;\n\t\tvar tokenLength = 0;\n\t\tvar latestAccepting = null;\n\t\tvar sinceAccepts = -1;\n\n\t\twhile (cursor < len && (nextState = state.next(lowerStr[cursor]))) {\n\t\t\tstate = nextState;\n\n\t\t\t// Keep track of the latest accepting state\n\t\t\tif (state.accepts()) {\n\t\t\t\tsinceAccepts = 0;\n\t\t\t\tlatestAccepting = state;\n\t\t\t} else if (sinceAccepts >= 0) {\n\t\t\t\tsinceAccepts++;\n\t\t\t}\n\n\t\t\ttokenLength++;\n\t\t\tcursor++;\n\t\t}\n\n\t\tif (sinceAccepts < 0) {\n\t\t\tcontinue;\n\t\t} // Should never happen\n\n\t\t// Roll back to the latest accepting state\n\t\tcursor -= sinceAccepts;\n\t\ttokenLength -= sinceAccepts;\n\n\t\t// Get the class for the new token\n\t\tvar TOKEN = latestAccepting.emit(); // Current token class\n\n\t\t// No more jumps, just make a new token\n\t\ttokens.push(new TOKEN(str.substr(cursor - tokenLength, tokenLength)));\n\t}\n\n\treturn tokens;\n};\n\nvar start = S_START;\nexports.State = _state.CharacterState;\nexports.TOKENS = TOKENS;\nexports.run = run;\nexports.start = start;","'use strict';\n\nexports.__esModule = true;\nexports.URL = exports.TEXT = exports.NL = exports.EMAIL = exports.MAILTOEMAIL = exports.Base = undefined;\n\nvar _createTokenClass = require('./create-token-class');\n\nvar _class = require('../../utils/class');\n\nvar _text = require('./text');\n\n/******************************************************************************\n\tMulti-Tokens\n\tTokens composed of arrays of TextTokens\n******************************************************************************/\n\n// Is the given token a valid domain token?\n// Should nums be included here?\nfunction isDomainToken(token) {\n\treturn token instanceof _text.DOMAIN || token instanceof _text.TLD;\n}\n\n/**\n\tAbstract class used for manufacturing tokens of text tokens. That is rather\n\tthan the value for a token being a small string of text, it's value an array\n\tof text tokens.\n\n\tUsed for grouping together URLs, emails, hashtags, and other potential\n\tcreations.\n\n\t@class MultiToken\n\t@abstract\n*/\nvar MultiToken = (0, _createTokenClass.createTokenClass)();\n\nMultiToken.prototype = {\n\t/**\n \tString representing the type for this token\n \t@property type\n \t@default 'TOKEN'\n */\n\ttype: 'token',\n\n\t/**\n \tIs this multitoken a link?\n \t@property isLink\n \t@default false\n */\n\tisLink: false,\n\n\t/**\n \tReturn the string this token represents.\n \t@method toString\n \t@return {String}\n */\n\ttoString: function toString() {\n\t\tvar result = [];\n\t\tfor (var i = 0; i < this.v.length; i++) {\n\t\t\tresult.push(this.v[i].toString());\n\t\t}\n\t\treturn result.join('');\n\t},\n\n\n\t/**\n \tWhat should the value for this token be in the `href` HTML attribute?\n \tReturns the `.toString` value by default.\n \t\t@method toHref\n \t@return {String}\n */\n\ttoHref: function toHref() {\n\t\treturn this.toString();\n\t},\n\n\n\t/**\n \tReturns a hash of relevant values for this token, which includes keys\n \t* type - Kind of token ('url', 'email', etc.)\n \t* value - Original text\n \t* href - The value that should be added to the anchor tag's href\n \t\tattribute\n \t\t@method toObject\n \t@param {String} [protocol] `'http'` by default\n \t@return {Object}\n */\n\ttoObject: function toObject() {\n\t\tvar protocol = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'http';\n\n\t\treturn {\n\t\t\ttype: this.type,\n\t\t\tvalue: this.toString(),\n\t\t\thref: this.toHref(protocol)\n\t\t};\n\t}\n};\n\n/**\n\tRepresents an arbitrarily mailto email address with the prefix included\n\t@class MAILTO\n\t@extends MultiToken\n*/\nvar MAILTOEMAIL = (0, _class.inherits)(MultiToken, (0, _createTokenClass.createTokenClass)(), {\n\ttype: 'email',\n\tisLink: true\n});\n\n/**\n\tRepresents a list of tokens making up a valid email address\n\t@class EMAIL\n\t@extends MultiToken\n*/\nvar EMAIL = (0, _class.inherits)(MultiToken, (0, _createTokenClass.createTokenClass)(), {\n\ttype: 'email',\n\tisLink: true,\n\ttoHref: function toHref() {\n\t\treturn 'mailto:' + this.toString();\n\t}\n});\n\n/**\n\tRepresents some plain text\n\t@class TEXT\n\t@extends MultiToken\n*/\nvar TEXT = (0, _class.inherits)(MultiToken, (0, _createTokenClass.createTokenClass)(), { type: 'text' });\n\n/**\n\tMulti-linebreak token - represents a line break\n\t@class NL\n\t@extends MultiToken\n*/\nvar NL = (0, _class.inherits)(MultiToken, (0, _createTokenClass.createTokenClass)(), { type: 'nl' });\n\n/**\n\tRepresents a list of tokens making up a valid URL\n\t@class URL\n\t@extends MultiToken\n*/\nvar URL = (0, _class.inherits)(MultiToken, (0, _createTokenClass.createTokenClass)(), {\n\ttype: 'url',\n\tisLink: true,\n\n\t/**\n \tLowercases relevant parts of the domain and adds the protocol if\n \trequired. Note that this will not escape unsafe HTML characters in the\n \tURL.\n \t\t@method href\n \t@param {String} protocol\n \t@return {String}\n */\n\ttoHref: function toHref() {\n\t\tvar protocol = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'http';\n\n\t\tvar hasProtocol = false;\n\t\tvar hasSlashSlash = false;\n\t\tvar tokens = this.v;\n\t\tvar result = [];\n\t\tvar i = 0;\n\n\t\t// Make the first part of the domain lowercase\n\t\t// Lowercase protocol\n\t\twhile (tokens[i] instanceof _text.PROTOCOL) {\n\t\t\thasProtocol = true;\n\t\t\tresult.push(tokens[i].toString().toLowerCase());\n\t\t\ti++;\n\t\t}\n\n\t\t// Skip slash-slash\n\t\twhile (tokens[i] instanceof _text.SLASH) {\n\t\t\thasSlashSlash = true;\n\t\t\tresult.push(tokens[i].toString());\n\t\t\ti++;\n\t\t}\n\n\t\t// Lowercase all other characters in the domain\n\t\twhile (isDomainToken(tokens[i])) {\n\t\t\tresult.push(tokens[i].toString().toLowerCase());\n\t\t\ti++;\n\t\t}\n\n\t\t// Leave all other characters as they were written\n\t\tfor (; i < tokens.length; i++) {\n\t\t\tresult.push(tokens[i].toString());\n\t\t}\n\n\t\tresult = result.join('');\n\n\t\tif (!(hasProtocol || hasSlashSlash)) {\n\t\t\tresult = protocol + '://' + result;\n\t\t}\n\n\t\treturn result;\n\t},\n\thasProtocol: function hasProtocol() {\n\t\treturn this.v[0] instanceof _text.PROTOCOL;\n\t}\n});\n\nexports.Base = MultiToken;\nexports.MAILTOEMAIL = MAILTOEMAIL;\nexports.EMAIL = EMAIL;\nexports.NL = NL;\nexports.TEXT = TEXT;\nexports.URL = URL;","'use strict';\n\nexports.__esModule = true;\nexports.start = exports.run = exports.TOKENS = exports.State = undefined;\n\nvar _state = require('./state');\n\nvar _multi = require('./tokens/multi');\n\nvar MULTI_TOKENS = _interopRequireWildcard(_multi);\n\nvar _text = require('./tokens/text');\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\n/**\n\tNot exactly parser, more like the second-stage scanner (although we can\n\ttheoretically hotswap the code here with a real parser in the future... but\n\tfor a little URL-finding utility abstract syntax trees may be a little\n\toverkill).\n\n\tURL format: http://en.wikipedia.org/wiki/URI_scheme\n\tEmail format: http://en.wikipedia.org/wiki/Email_address (links to RFC in\n\treference)\n\n\t@module linkify\n\t@submodule parser\n\t@main parser\n*/\n\nvar makeState = function makeState(tokenClass) {\n\treturn new _state.TokenState(tokenClass);\n};\n\n// The universal starting state.\nvar S_START = makeState();\n\n// Intermediate states for URLs. Note that domains that begin with a protocol\n// are treated slighly differently from those that don't.\nvar S_PROTOCOL = makeState(); // e.g., 'http:'\nvar S_MAILTO = makeState(); // 'mailto:'\nvar S_PROTOCOL_SLASH = makeState(); // e.g., '/', 'http:/''\nvar S_PROTOCOL_SLASH_SLASH = makeState(); // e.g., '//', 'http://'\nvar S_DOMAIN = makeState(); // parsed string ends with a potential domain name (A)\nvar S_DOMAIN_DOT = makeState(); // (A) domain followed by DOT\nvar S_TLD = makeState(_multi.URL); // (A) Simplest possible URL with no query string\nvar S_TLD_COLON = makeState(); // (A) URL followed by colon (potential port number here)\nvar S_TLD_PORT = makeState(_multi.URL); // TLD followed by a port number\nvar S_URL = makeState(_multi.URL); // Long URL with optional port and maybe query string\nvar S_URL_NON_ACCEPTING = makeState(); // URL followed by some symbols (will not be part of the final URL)\nvar S_URL_OPENBRACE = makeState(); // URL followed by {\nvar S_URL_OPENBRACKET = makeState(); // URL followed by [\nvar S_URL_OPENANGLEBRACKET = makeState(); // URL followed by <\nvar S_URL_OPENPAREN = makeState(); // URL followed by (\nvar S_URL_OPENBRACE_Q = makeState(_multi.URL); // URL followed by { and some symbols that the URL can end it\nvar S_URL_OPENBRACKET_Q = makeState(_multi.URL); // URL followed by [ and some symbols that the URL can end it\nvar S_URL_OPENANGLEBRACKET_Q = makeState(_multi.URL); // URL followed by < and some symbols that the URL can end it\nvar S_URL_OPENPAREN_Q = makeState(_multi.URL); // URL followed by ( and some symbols that the URL can end it\nvar S_URL_OPENBRACE_SYMS = makeState(); // S_URL_OPENBRACE_Q followed by some symbols it cannot end it\nvar S_URL_OPENBRACKET_SYMS = makeState(); // S_URL_OPENBRACKET_Q followed by some symbols it cannot end it\nvar S_URL_OPENANGLEBRACKET_SYMS = makeState(); // S_URL_OPENANGLEBRACKET_Q followed by some symbols it cannot end it\nvar S_URL_OPENPAREN_SYMS = makeState(); // S_URL_OPENPAREN_Q followed by some symbols it cannot end it\nvar S_EMAIL_DOMAIN = makeState(); // parsed string starts with local email info + @ with a potential domain name (C)\nvar S_EMAIL_DOMAIN_DOT = makeState(); // (C) domain followed by DOT\nvar S_EMAIL = makeState(_multi.EMAIL); // (C) Possible email address (could have more tlds)\nvar S_EMAIL_COLON = makeState(); // (C) URL followed by colon (potential port number here)\nvar S_EMAIL_PORT = makeState(_multi.EMAIL); // (C) Email address with a port\nvar S_MAILTO_EMAIL = makeState(_multi.MAILTOEMAIL); // Email that begins with the mailto prefix (D)\nvar S_MAILTO_EMAIL_NON_ACCEPTING = makeState(); // (D) Followed by some non-query string chars\nvar S_LOCALPART = makeState(); // Local part of the email address\nvar S_LOCALPART_AT = makeState(); // Local part of the email address plus @\nvar S_LOCALPART_DOT = makeState(); // Local part of the email address plus '.' (localpart cannot end in .)\nvar S_NL = makeState(_multi.NL); // single new line\n\n// Make path from start to protocol (with '//')\nS_START.on(_text.NL, S_NL).on(_text.PROTOCOL, S_PROTOCOL).on(_text.MAILTO, S_MAILTO).on(_text.SLASH, S_PROTOCOL_SLASH);\n\nS_PROTOCOL.on(_text.SLASH, S_PROTOCOL_SLASH);\nS_PROTOCOL_SLASH.on(_text.SLASH, S_PROTOCOL_SLASH_SLASH);\n\n// The very first potential domain name\nS_START.on(_text.TLD, S_DOMAIN).on(_text.DOMAIN, S_DOMAIN).on(_text.LOCALHOST, S_TLD).on(_text.NUM, S_DOMAIN);\n\n// Force URL for protocol followed by anything sane\nS_PROTOCOL_SLASH_SLASH.on(_text.TLD, S_URL).on(_text.DOMAIN, S_URL).on(_text.NUM, S_URL).on(_text.LOCALHOST, S_URL);\n\n// Account for dots and hyphens\n// hyphens are usually parts of domain names\nS_DOMAIN.on(_text.DOT, S_DOMAIN_DOT);\nS_EMAIL_DOMAIN.on(_text.DOT, S_EMAIL_DOMAIN_DOT);\n\n// Hyphen can jump back to a domain name\n\n// After the first domain and a dot, we can find either a URL or another domain\nS_DOMAIN_DOT.on(_text.TLD, S_TLD).on(_text.DOMAIN, S_DOMAIN).on(_text.NUM, S_DOMAIN).on(_text.LOCALHOST, S_DOMAIN);\n\nS_EMAIL_DOMAIN_DOT.on(_text.TLD, S_EMAIL).on(_text.DOMAIN, S_EMAIL_DOMAIN).on(_text.NUM, S_EMAIL_DOMAIN).on(_text.LOCALHOST, S_EMAIL_DOMAIN);\n\n// S_TLD accepts! But the URL could be longer, try to find a match greedily\n// The `run` function should be able to \"rollback\" to the accepting state\nS_TLD.on(_text.DOT, S_DOMAIN_DOT);\nS_EMAIL.on(_text.DOT, S_EMAIL_DOMAIN_DOT);\n\n// Become real URLs after `SLASH` or `COLON NUM SLASH`\n// Here PSS and non-PSS converge\nS_TLD.on(_text.COLON, S_TLD_COLON).on(_text.SLASH, S_URL);\nS_TLD_COLON.on(_text.NUM, S_TLD_PORT);\nS_TLD_PORT.on(_text.SLASH, S_URL);\nS_EMAIL.on(_text.COLON, S_EMAIL_COLON);\nS_EMAIL_COLON.on(_text.NUM, S_EMAIL_PORT);\n\n// Types of characters the URL can definitely end in\nvar qsAccepting = [_text.DOMAIN, _text.AT, _text.LOCALHOST, _text.NUM, _text.PLUS, _text.POUND, _text.PROTOCOL, _text.SLASH, _text.TLD, _text.UNDERSCORE, _text.SYM, _text.AMPERSAND];\n\n// Types of tokens that can follow a URL and be part of the query string\n// but cannot be the very last characters\n// Characters that cannot appear in the URL at all should be excluded\nvar qsNonAccepting = [_text.COLON, _text.DOT, _text.QUERY, _text.PUNCTUATION, _text.CLOSEBRACE, _text.CLOSEBRACKET, _text.CLOSEANGLEBRACKET, _text.CLOSEPAREN, _text.OPENBRACE, _text.OPENBRACKET, _text.OPENANGLEBRACKET, _text.OPENPAREN];\n\n// These states are responsible primarily for determining whether or not to\n// include the final round bracket.\n\n// URL, followed by an opening bracket\nS_URL.on(_text.OPENBRACE, S_URL_OPENBRACE).on(_text.OPENBRACKET, S_URL_OPENBRACKET).on(_text.OPENANGLEBRACKET, S_URL_OPENANGLEBRACKET).on(_text.OPENPAREN, S_URL_OPENPAREN);\n\n// URL with extra symbols at the end, followed by an opening bracket\nS_URL_NON_ACCEPTING.on(_text.OPENBRACE, S_URL_OPENBRACE).on(_text.OPENBRACKET, S_URL_OPENBRACKET).on(_text.OPENANGLEBRACKET, S_URL_OPENANGLEBRACKET).on(_text.OPENPAREN, S_URL_OPENPAREN);\n\n// Closing bracket component. This character WILL be included in the URL\nS_URL_OPENBRACE.on(_text.CLOSEBRACE, S_URL);\nS_URL_OPENBRACKET.on(_text.CLOSEBRACKET, S_URL);\nS_URL_OPENANGLEBRACKET.on(_text.CLOSEANGLEBRACKET, S_URL);\nS_URL_OPENPAREN.on(_text.CLOSEPAREN, S_URL);\nS_URL_OPENBRACE_Q.on(_text.CLOSEBRACE, S_URL);\nS_URL_OPENBRACKET_Q.on(_text.CLOSEBRACKET, S_URL);\nS_URL_OPENANGLEBRACKET_Q.on(_text.CLOSEANGLEBRACKET, S_URL);\nS_URL_OPENPAREN_Q.on(_text.CLOSEPAREN, S_URL);\nS_URL_OPENBRACE_SYMS.on(_text.CLOSEBRACE, S_URL);\nS_URL_OPENBRACKET_SYMS.on(_text.CLOSEBRACKET, S_URL);\nS_URL_OPENANGLEBRACKET_SYMS.on(_text.CLOSEANGLEBRACKET, S_URL);\nS_URL_OPENPAREN_SYMS.on(_text.CLOSEPAREN, S_URL);\n\n// URL that beings with an opening bracket, followed by a symbols.\n// Note that the final state can still be `S_URL_OPENBRACE_Q` (if the URL only\n// has a single opening bracket for some reason).\nS_URL_OPENBRACE.on(qsAccepting, S_URL_OPENBRACE_Q);\nS_URL_OPENBRACKET.on(qsAccepting, S_URL_OPENBRACKET_Q);\nS_URL_OPENANGLEBRACKET.on(qsAccepting, S_URL_OPENANGLEBRACKET_Q);\nS_URL_OPENPAREN.on(qsAccepting, S_URL_OPENPAREN_Q);\nS_URL_OPENBRACE.on(qsNonAccepting, S_URL_OPENBRACE_SYMS);\nS_URL_OPENBRACKET.on(qsNonAccepting, S_URL_OPENBRACKET_SYMS);\nS_URL_OPENANGLEBRACKET.on(qsNonAccepting, S_URL_OPENANGLEBRACKET_SYMS);\nS_URL_OPENPAREN.on(qsNonAccepting, S_URL_OPENPAREN_SYMS);\n\n// URL that begins with an opening bracket, followed by some symbols\nS_URL_OPENBRACE_Q.on(qsAccepting, S_URL_OPENBRACE_Q);\nS_URL_OPENBRACKET_Q.on(qsAccepting, S_URL_OPENBRACKET_Q);\nS_URL_OPENANGLEBRACKET_Q.on(qsAccepting, S_URL_OPENANGLEBRACKET_Q);\nS_URL_OPENPAREN_Q.on(qsAccepting, S_URL_OPENPAREN_Q);\nS_URL_OPENBRACE_Q.on(qsNonAccepting, S_URL_OPENBRACE_Q);\nS_URL_OPENBRACKET_Q.on(qsNonAccepting, S_URL_OPENBRACKET_Q);\nS_URL_OPENANGLEBRACKET_Q.on(qsNonAccepting, S_URL_OPENANGLEBRACKET_Q);\nS_URL_OPENPAREN_Q.on(qsNonAccepting, S_URL_OPENPAREN_Q);\n\nS_URL_OPENBRACE_SYMS.on(qsAccepting, S_URL_OPENBRACE_Q);\nS_URL_OPENBRACKET_SYMS.on(qsAccepting, S_URL_OPENBRACKET_Q);\nS_URL_OPENANGLEBRACKET_SYMS.on(qsAccepting, S_URL_OPENANGLEBRACKET_Q);\nS_URL_OPENPAREN_SYMS.on(qsAccepting, S_URL_OPENPAREN_Q);\nS_URL_OPENBRACE_SYMS.on(qsNonAccepting, S_URL_OPENBRACE_SYMS);\nS_URL_OPENBRACKET_SYMS.on(qsNonAccepting, S_URL_OPENBRACKET_SYMS);\nS_URL_OPENANGLEBRACKET_SYMS.on(qsNonAccepting, S_URL_OPENANGLEBRACKET_SYMS);\nS_URL_OPENPAREN_SYMS.on(qsNonAccepting, S_URL_OPENPAREN_SYMS);\n\n// Account for the query string\nS_URL.on(qsAccepting, S_URL);\nS_URL_NON_ACCEPTING.on(qsAccepting, S_URL);\n\nS_URL.on(qsNonAccepting, S_URL_NON_ACCEPTING);\nS_URL_NON_ACCEPTING.on(qsNonAccepting, S_URL_NON_ACCEPTING);\n\n// Email address-specific state definitions\n// Note: We are not allowing '/' in email addresses since this would interfere\n// with real URLs\n\n// For addresses with the mailto prefix\n// 'mailto:' followed by anything sane is a valid email\nS_MAILTO.on(_text.TLD, S_MAILTO_EMAIL).on(_text.DOMAIN, S_MAILTO_EMAIL).on(_text.NUM, S_MAILTO_EMAIL).on(_text.LOCALHOST, S_MAILTO_EMAIL);\n\n// Greedily get more potential valid email values\nS_MAILTO_EMAIL.on(qsAccepting, S_MAILTO_EMAIL).on(qsNonAccepting, S_MAILTO_EMAIL_NON_ACCEPTING);\nS_MAILTO_EMAIL_NON_ACCEPTING.on(qsAccepting, S_MAILTO_EMAIL).on(qsNonAccepting, S_MAILTO_EMAIL_NON_ACCEPTING);\n\n// For addresses without the mailto prefix\n// Tokens allowed in the localpart of the email\nvar localpartAccepting = [_text.DOMAIN, _text.NUM, _text.PLUS, _text.POUND, _text.QUERY, _text.UNDERSCORE, _text.SYM, _text.AMPERSAND, _text.TLD];\n\n// Some of the tokens in `localpartAccepting` are already accounted for here and\n// will not be overwritten (don't worry)\nS_DOMAIN.on(localpartAccepting, S_LOCALPART).on(_text.AT, S_LOCALPART_AT);\nS_TLD.on(localpartAccepting, S_LOCALPART).on(_text.AT, S_LOCALPART_AT);\nS_DOMAIN_DOT.on(localpartAccepting, S_LOCALPART);\n\n// Okay we're on a localpart. Now what?\n// TODO: IP addresses and what if the email starts with numbers?\nS_LOCALPART.on(localpartAccepting, S_LOCALPART).on(_text.AT, S_LOCALPART_AT) // close to an email address now\n.on(_text.DOT, S_LOCALPART_DOT);\nS_LOCALPART_DOT.on(localpartAccepting, S_LOCALPART);\nS_LOCALPART_AT.on(_text.TLD, S_EMAIL_DOMAIN).on(_text.DOMAIN, S_EMAIL_DOMAIN).on(_text.LOCALHOST, S_EMAIL);\n// States following `@` defined above\n\nvar run = function run(tokens) {\n\tvar len = tokens.length;\n\tvar cursor = 0;\n\tvar multis = [];\n\tvar textTokens = [];\n\n\twhile (cursor < len) {\n\t\tvar state = S_START;\n\t\tvar secondState = null;\n\t\tvar nextState = null;\n\t\tvar multiLength = 0;\n\t\tvar latestAccepting = null;\n\t\tvar sinceAccepts = -1;\n\n\t\twhile (cursor < len && !(secondState = state.next(tokens[cursor]))) {\n\t\t\t// Starting tokens with nowhere to jump to.\n\t\t\t// Consider these to be just plain text\n\t\t\ttextTokens.push(tokens[cursor++]);\n\t\t}\n\n\t\twhile (cursor < len && (nextState = secondState || state.next(tokens[cursor]))) {\n\n\t\t\t// Get the next state\n\t\t\tsecondState = null;\n\t\t\tstate = nextState;\n\n\t\t\t// Keep track of the latest accepting state\n\t\t\tif (state.accepts()) {\n\t\t\t\tsinceAccepts = 0;\n\t\t\t\tlatestAccepting = state;\n\t\t\t} else if (sinceAccepts >= 0) {\n\t\t\t\tsinceAccepts++;\n\t\t\t}\n\n\t\t\tcursor++;\n\t\t\tmultiLength++;\n\t\t}\n\n\t\tif (sinceAccepts < 0) {\n\n\t\t\t// No accepting state was found, part of a regular text token\n\t\t\t// Add all the tokens we looked at to the text tokens array\n\t\t\tfor (var i = cursor - multiLength; i < cursor; i++) {\n\t\t\t\ttextTokens.push(tokens[i]);\n\t\t\t}\n\t\t} else {\n\n\t\t\t// Accepting state!\n\n\t\t\t// First close off the textTokens (if available)\n\t\t\tif (textTokens.length > 0) {\n\t\t\t\tmultis.push(new _multi.TEXT(textTokens));\n\t\t\t\ttextTokens = [];\n\t\t\t}\n\n\t\t\t// Roll back to the latest accepting state\n\t\t\tcursor -= sinceAccepts;\n\t\t\tmultiLength -= sinceAccepts;\n\n\t\t\t// Create a new multitoken\n\t\t\tvar MULTI = latestAccepting.emit();\n\t\t\tmultis.push(new MULTI(tokens.slice(cursor - multiLength, cursor)));\n\t\t}\n\t}\n\n\t// Finally close off the textTokens (if available)\n\tif (textTokens.length > 0) {\n\t\tmultis.push(new _multi.TEXT(textTokens));\n\t}\n\n\treturn multis;\n};\n\nexports.State = _state.TokenState;\nexports.TOKENS = MULTI_TOKENS;\nexports.run = run;\nexports.start = S_START;","'use strict';\n\nexports.__esModule = true;\nexports.tokenize = exports.test = exports.scanner = exports.parser = exports.options = exports.inherits = exports.find = undefined;\n\nvar _class = require('./linkify/utils/class');\n\nvar _options = require('./linkify/utils/options');\n\nvar options = _interopRequireWildcard(_options);\n\nvar _scanner = require('./linkify/core/scanner');\n\nvar scanner = _interopRequireWildcard(_scanner);\n\nvar _parser = require('./linkify/core/parser');\n\nvar parser = _interopRequireWildcard(_parser);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nif (!Array.isArray) {\n\tArray.isArray = function (arg) {\n\t\treturn Object.prototype.toString.call(arg) === '[object Array]';\n\t};\n}\n\n/**\n\tConverts a string into tokens that represent linkable and non-linkable bits\n\t@method tokenize\n\t@param {String} str\n\t@return {Array} tokens\n*/\nvar tokenize = function tokenize(str) {\n\treturn parser.run(scanner.run(str));\n};\n\n/**\n\tReturns a list of linkable items in the given string.\n*/\nvar find = function find(str) {\n\tvar type = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n\n\tvar tokens = tokenize(str);\n\tvar filtered = [];\n\n\tfor (var i = 0; i < tokens.length; i++) {\n\t\tvar token = tokens[i];\n\t\tif (token.isLink && (!type || token.type === type)) {\n\t\t\tfiltered.push(token.toObject());\n\t\t}\n\t}\n\n\treturn filtered;\n};\n\n/**\n\tIs the given string valid linkable text of some sort\n\tNote that this does not trim the text for you.\n\n\tOptionally pass in a second `type` param, which is the type of link to test\n\tfor.\n\n\tFor example,\n\n\t\ttest(str, 'email');\n\n\tWill return `true` if str is a valid email.\n*/\nvar test = function test(str) {\n\tvar type = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n\n\tvar tokens = tokenize(str);\n\treturn tokens.length === 1 && tokens[0].isLink && (!type || tokens[0].type === type);\n};\n\n// Scanner and parser provide states and tokens for the lexicographic stage\n// (will be used to add additional link types)\nexports.find = find;\nexports.inherits = _class.inherits;\nexports.options = options;\nexports.parser = parser;\nexports.scanner = scanner;\nexports.test = test;\nexports.tokenize = tokenize;","'use strict';\n\nexports.__esModule = true;\n\nvar _linkify = require('./linkify');\n\nvar linkify = _interopRequireWildcard(_linkify);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nvar tokenize = linkify.tokenize,\n options = linkify.options; /**\n \tConvert strings of text into linkable HTML text\n */\n\nvar Options = options.Options;\n\n\nfunction escapeText(text) {\n\treturn text.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;');\n}\n\nfunction escapeAttr(href) {\n\treturn href.replace(/\"/g, '&quot;');\n}\n\nfunction attributesToString(attributes) {\n\tif (!attributes) {\n\t\treturn '';\n\t}\n\tvar result = [];\n\n\tfor (var attr in attributes) {\n\t\tvar val = attributes[attr] + '';\n\t\tresult.push(attr + '=\"' + escapeAttr(val) + '\"');\n\t}\n\treturn result.join(' ');\n}\n\nfunction linkifyStr(str) {\n\tvar opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n\topts = new Options(opts);\n\n\tvar tokens = tokenize(str);\n\tvar result = [];\n\n\tfor (var i = 0; i < tokens.length; i++) {\n\t\tvar token = tokens[i];\n\n\t\tif (token.type === 'nl' && opts.nl2br) {\n\t\t\tresult.push('<br>\\n');\n\t\t\tcontinue;\n\t\t} else if (!token.isLink || !opts.check(token)) {\n\t\t\tresult.push(escapeText(token.toString()));\n\t\t\tcontinue;\n\t\t}\n\n\t\tvar _opts$resolve = opts.resolve(token),\n\t\t formatted = _opts$resolve.formatted,\n\t\t formattedHref = _opts$resolve.formattedHref,\n\t\t tagName = _opts$resolve.tagName,\n\t\t className = _opts$resolve.className,\n\t\t target = _opts$resolve.target,\n\t\t attributes = _opts$resolve.attributes;\n\n\t\tvar link = '<' + tagName + ' href=\"' + escapeAttr(formattedHref) + '\"';\n\n\t\tif (className) {\n\t\t\tlink += ' class=\"' + escapeAttr(className) + '\"';\n\t\t}\n\n\t\tif (target) {\n\t\t\tlink += ' target=\"' + escapeAttr(target) + '\"';\n\t\t}\n\n\t\tif (attributes) {\n\t\t\tlink += ' ' + attributesToString(attributes);\n\t\t}\n\n\t\tlink += '>' + escapeText(formatted) + '</' + tagName + '>';\n\t\tresult.push(link);\n\t}\n\n\treturn result.join('');\n}\n\nif (!String.prototype.linkify) {\n\ttry {\n\t\tObject.defineProperty(String.prototype, 'linkify', {\n\t\t\tset: function set() {},\n\t\t\tget: function get() {\n\t\t\t\treturn function linkify(opts) {\n\t\t\t\t\treturn linkifyStr(this, opts);\n\t\t\t\t};\n\t\t\t}\n\t\t});\n\t} catch (e) {\n\t\t// IE 8 doesn't like Object.defineProperty on non-DOM objects\n\t\tif (!String.prototype.linkify) {\n\t\t\tString.prototype.linkify = function (opts) {\n\t\t\t\treturn linkifyStr(this, opts);\n\t\t\t};\n\t\t}\n\t}\n}\n\nexports.default = linkifyStr;","module.exports = require('./lib/linkify-string').default;\n","import { ObjectHash } from 'backbone';\nimport linkifyStr from 'linkifyjs/string';\nimport * as _ from 'underscore';\n\nconst BaseLinkifyOptions = {\n className: 'info-link',\n defaultProtocol: 'https'\n};\n\nexport const LinkifyHelper = {\n /**\n * The underlying linkifyStr interface escapes text within the input string\n */\n linkifyText(text: string, options?: ObjectHash): string {\n if (!text) return;\n const ops = options ? _.extend({}, BaseLinkifyOptions, options) : BaseLinkifyOptions;\n return linkifyStr(text, ops);\n }\n};\n"],"x_google_ignoreList":[11,13,14,15,16,17,18,19,20,21,22,23],"mappings":"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"}
1
+ {"version":3,"file":"Dhe09-jE.chunk.js","names":[],"sources":["../../../../libs/shared/src/utils/NumberHelper.ts","../../../../libs/shared/src/utils/SeriesHelper.ts","../../../../libs/shared/src/components/title-sub-text/title-sub-text.module.scss","../../../../libs/shared/src/components/title-sub-text/TitleSubText.tsx","../../../../libs/shared/src/components/video-sub-text/video-sub-text.module.scss","../../../../libs/shared/src/components/video-sub-text/VideoSubText.tsx","../../../../libs/shared/src/images/svg/objects/ClipSvg.tsx","../../../../libs/shared/src/images/svg/objects/InteractiveSvg.tsx","../../../../libs/shared/src/images/svg/objects/ResourcesSvg.tsx","../../../../libs/shared/src/components/type-badge/type-badge.module.scss","../../../../libs/shared/src/components/type-badge/TypeBadge.tsx","../../../../../node_modules/react-reverse-portal/dist/web/index.js","../../../../libs/shared/src/context/player-context/PlayerContext.tsx","../../../../../node_modules/linkifyjs/lib/linkify/utils/class.js","../../../../../node_modules/linkifyjs/lib/linkify/utils/options.js","../../../../../node_modules/linkifyjs/lib/linkify/core/state.js","../../../../../node_modules/linkifyjs/lib/linkify/core/tokens/create-token-class.js","../../../../../node_modules/linkifyjs/lib/linkify/core/tokens/text.js","../../../../../node_modules/linkifyjs/lib/linkify/core/scanner.js","../../../../../node_modules/linkifyjs/lib/linkify/core/tokens/multi.js","../../../../../node_modules/linkifyjs/lib/linkify/core/parser.js","../../../../../node_modules/linkifyjs/lib/linkify.js","../../../../../node_modules/linkifyjs/lib/linkify-string.js","../../../../../node_modules/linkifyjs/string.js","../../../../libs/common/src/react/utils/LinkifyHelper.ts"],"sourcesContent":["export const NumberHelper = {\n padNumber(num: number, padLength: number): string {\n let numberString = num.toString();\n\n if (numberString.length >= padLength)\n return numberString;\n\n padLength = padLength - numberString.length;\n\n while (padLength > 0) {\n numberString = '0' + numberString;\n padLength--;\n }\n return numberString;\n }\n};\n","import { MasterType } from 'libs/shared/enums/MasterType';\nimport { BaseObject, Rating, Series } from 'libs/shared/interfaces';\n\nimport { NumberHelper } from './NumberHelper';\n\nexport const SeriesHelper = {\n isSeries(obj: BaseObject): obj is Series {\n return obj?.typeId === MasterType.Series;\n },\n\n buildSeriesSeasonEpisodeText(seriesName: string, season?: number, episode?: number): string {\n if (!seriesName)\n return '';\n\n if (!season || !episode)\n return seriesName.toUpperCase();\n\n const seasonNum = NumberHelper.padNumber(season, 2);\n const episodeNum = NumberHelper.padNumber(episode, 2);\n\n return `${seriesName.toUpperCase()} S${seasonNum} • E${episodeNum}`;\n },\n\n getRating(series: Series): Rating {\n return series._rating?.value;\n }\n};\n",":local {\n .subText {\n font-size: calc(11 / 14) * 1em;\n \n &.sm {\n font-size: calc(8 / 14) * 1em;\n }\n }\n}","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { AnalyticsOptions } from 'libs/analytics/interfaces';\n\nimport { AppLink } from '../app-link/AppLink';\n\nimport styles from './title-sub-text.module.scss';\n\ntype TitleSubTextProps = React.PropsWithChildren<{\n title?: string,\n className?: string,\n ariaLabel?: string,\n appLink?: Core.AppLink,\n analyticsData?: HashObject,\n analyticsOptions?: AnalyticsOptions\n}>;\n\nexport function TitleSubText(props: TitleSubTextProps): JSX.Element {\n const className = `text-uppercase text-truncate mb-0 ${styles.subText} ${props.className}`;\n\n if (props.appLink) {\n return (\n <AppLink\n className={className}\n appLink={props.appLink}\n analyticsData={props.analyticsData}\n analyticsOptions={props.analyticsOptions}\n title={props.title}\n ariaLabel={props.ariaLabel}\n >\n {props.children}\n </AppLink>\n );\n }\n\n return (\n <div\n className={className}\n title={props.title}\n aria-label={props.ariaLabel}\n >\n {props.children}\n </div>\n );\n}\n",":local {\n .appLink {\n color: inherit;\n\n &:hover {\n .hoverUnderline {\n text-decoration: underline;\n }\n }\n }\n}","import * as React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Core } from 'libs/common/core';\nimport { HashObject } from 'libs/common/react/interfaces';\nimport { TextHelper } from 'libs/common/react/utils/TextHelper';\n\nimport { AnalyticsOptions, ClickDescriptor, EntityType, UserAction } from 'libs/analytics/interfaces/AnalyticsTypes';\n\nimport { Video } from 'libs/shared/interfaces';\nimport { NumberHelper } from 'libs/shared/utils/NumberHelper';\nimport { SeriesHelper } from 'libs/shared/utils/SeriesHelper';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport { TitleSubText } from '../title-sub-text/TitleSubText';\n\nconst namespace = 'shared.videoSubText';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nimport styles from './video-sub-text.module.scss';\n\nexport type VideoSubTextType = 'series' | 'productionCompany' | 'none';\n\ninterface SeriesLinkProps {\n video: Video;\n appLink?: Core.AppLink;\n className?: string;\n analyticsData?: HashObject;\n analyticsOptions: AnalyticsOptions; // Required as `location` needs to be supplied\n withSeriesTitle?: boolean;\n size?: 'sm' | 'lg';\n}\n\nexport function SeasonEpisode(props: Omit<SeriesLinkProps, 'analyticsOptions' | 'analyticsData'>): JSX.Element {\n const { video } = props;\n const { season } = video;\n\n if (!video.episodeNumber || !season)\n return <></>;\n\n const seasonNumber = NumberHelper.padNumber(season.number, 2);\n const episodeNumber = NumberHelper.padNumber(video.episodeNumber, 2);\n\n /* \\u2022 is the unicode number for &bull; */\n return (\n <span className={`d-inline-block ${props.appLink ? styles.hoverUnderline : ''}`}>\n {props.withSeriesTitle && <>&nbsp;</>}\n {!!seasonNumber && `S${seasonNumber} \\u2022 `}\n E{episodeNumber}\n </span>\n );\n}\n\nfunction ReleaseDate(props: SeriesLinkProps): JSX.Element {\n const releaseDate = VideoHelper.getReleaseDate(props.video);\n\n if (!releaseDate)\n return <></>;\n\n if (VideoHelper.hasSeries(props.video))\n return <>{` \\u2022 ${releaseDate}`}</>;\n\n return <>{releaseDate}</>;\n}\n\nfunction SeriesLink(props: SeriesLinkProps): JSX.Element {\n const { appLink, video, className = '' } = props;\n\n const series = video?.series;\n const releaseDate = VideoHelper.getReleaseDate(props.video);\n\n if ((!series?.id) && !releaseDate)\n return <></>;\n\n const seriesAppLink: Core.AppLink = series?.id && appLink && {\n ...appLink,\n args: appLink.args ? appLink.args : [ series.id, TextHelper.slugify(series.name) ]\n };\n\n const analyticsData = { ...props.analyticsData,\n id: series?.id,\n name: series?.name,\n videoId: video?.id,\n videoName: video?.name\n };\n\n const analyticsOptions = {\n ...props.analyticsOptions,\n entity: EntityType.Series,\n actionType: UserAction.Click,\n descriptor: ClickDescriptor.Title\n };\n\n const seriesTitle = SeriesHelper.buildSeriesSeasonEpisodeText(\n series?.name,\n video.season?.number,\n video.episodeNumber\n );\n\n return (\n <TitleSubText\n appLink={seriesAppLink}\n className={`d-block ${styles.appLink} ${className}`}\n analyticsData={analyticsData}\n analyticsOptions={analyticsOptions}\n title={seriesTitle}\n ariaLabel={`${getPhrase('ariaSeries')} ${seriesTitle}`}\n >\n {series?.name && series.name}\n <SeasonEpisode {...props} withSeriesTitle />\n <ReleaseDate {...props} />\n </TitleSubText>\n );\n}\n\ninterface ProductionCompanyLinkProps {\n video: Video;\n appLink?: Core.AppLink;\n className?: string;\n analyticsData?: HashObject;\n analyticsOptions: AnalyticsOptions; // Required as `location` needs to be supplied\n size?: 'sm' | 'lg';\n}\n\nfunction ProductionCompanyLink(props: ProductionCompanyLinkProps): JSX.Element {\n const { appLink, video, className = '' } = props;\n\n const productionCompany = video?.productionCompanies?.data?.[0];\n\n if (!productionCompany?.id)\n return <></>;\n\n const companyAppLink: Core.AppLink = productionCompany?.id && appLink && {\n ...appLink,\n args: appLink.args ? appLink.args : [ productionCompany.id, TextHelper.slugify(productionCompany.name) ]\n };\n\n const analyticsData = { ...props.analyticsData,\n id: productionCompany?.id,\n name: productionCompany?.name,\n videoId: video?.id,\n videoName: video?.name\n };\n\n const analyticsOptions = {\n ...props.analyticsOptions,\n entity: EntityType.Company,\n actionType: UserAction.Click,\n descriptor: ClickDescriptor.Title\n };\n\n return (\n <TitleSubText\n appLink={companyAppLink}\n className={`d-block ${styles.appLink} ${className}`}\n analyticsData={analyticsData}\n analyticsOptions={analyticsOptions}\n title={productionCompany.name}\n ariaLabel={`${getPhrase('ariaCompany')} ${productionCompany.name}`}\n >\n {productionCompany.name}\n </TitleSubText>\n );\n}\n\ninterface VideoSubTextProps {\n type: VideoSubTextType;\n video: Video;\n appLink?: Core.AppLink;\n className?: string;\n analyticsData?: HashObject;\n analyticsOptions: AnalyticsOptions; // Required as `location` needs to be supplied\n size?: 'sm' | 'lg';\n}\n\nexport function VideoSubText(props: VideoSubTextProps): JSX.Element {\n const { type = 'series' } = props;\n\n if (type === 'none')\n return <></>;\n\n if (type === 'series')\n return <SeriesLink {...props} />;\n\n return <ProductionCompanyLink {...props} />;\n}\n\n","import React from 'react';\n\nexport function ClipSvg(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg {...props}>\n <path\n fill='currentColor'\n d='M14.893 16.357a2.5 2.5 0 0 1 1.806-1.354 2.506 2.506 0 0 1 2.902 2.042 2.516 2.516 0 0 1-2.032 2.916 2.5 2.5 0 0 1-2.74-1.494l-2.603-5.208-2.57 5.138a2.504 2.504 0 0 1-2.769 1.564 2.516 2.516 0 0 1-2.031-2.916 2.506 2.506 0 0 1 2.901-2.042c.81.144 1.46.663 1.803 1.348l2.107-4.212-3.703-7.41a.504.504 0 0 1 .222-.675.5.5 0 0 1 .672.223l3.369 6.743 3.372-6.743a.5.5 0 0 1 .671-.223.504.504 0 0 1 .223.674l-3.707 7.412zm-9.053.863a1.51 1.51 0 0 0 1.221 1.752 1.505 1.505 0 0 0 1.743-1.227 1.51 1.51 0 0 0-1.22-1.752A1.505 1.505 0 0 0 5.84 17.22m11.555 1.752a1.51 1.51 0 0 0 1.221-1.752 1.505 1.505 0 0 0-1.743-1.227 1.51 1.51 0 0 0-1.22 1.752 1.505 1.505 0 0 0 1.742 1.227'\n />\n </svg>\n );\n}\n","import React from 'react';\n\nexport function InteractiveSvg(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg {...props}>\n <path\n fill='currentColor'\n d='M11.91 4.025c-3.308 0-6 2.692-6 6 0 1.923.916 3.716 2.462 4.846v3.77c0 .763.621 1.384 1.385 1.384h4.308c.763 0 1.384-.62 1.384-1.384v-3.77a6 6 0 0 0 2.462-4.846c0-3.308-2.692-6-6-6m2.616 12.77v.615h-5.23v-.615zm-4.77 2.307a.46.46 0 0 1-.46-.461v-.308h5.23v.308a.46.46 0 0 1-.461.461zm4.77-4.471v1.24h-5.23v-1.24a.46.46 0 0 0-.205-.384 5.07 5.07 0 0 1-2.257-4.222c0-2.8 2.277-5.077 5.077-5.077s5.077 2.278 5.077 5.077a5.07 5.07 0 0 1-2.257 4.222.46.46 0 0 0-.205.384m-2.396-2.616a.56.56 0 0 0 .107-.348v-.068q.004-.237.076-.402a1 1 0 0 1 .235-.317q.165-.153.454-.35.462-.316.757-.724.294-.41.295-.97 0-.591-.283-.993a1.8 1.8 0 0 0-.76-.61 2.6 2.6 0 0 0-1.05-.208q-.629 0-1.151.279-.525.277-.78.825a1.2 1.2 0 0 0-.12.522.44.44 0 0 0 .105.303q.105.118.3.118.162 0 .271-.091a.5.5 0 0 0 .157-.247q.162-.518.471-.704.309-.187.718-.187.343 0 .62.119.28.118.443.339.164.22.164.53 0 .27-.104.467-.106.195-.28.35a5 5 0 0 1-.391.305q-.281.195-.516.419a1.9 1.9 0 0 0-.378.498 1.3 1.3 0 0 0-.143.613v.193q0 .213.114.346.114.134.338.133.224 0 .33-.14m.088 2.081a.6.6 0 0 0 .17-.426.6.6 0 0 0-.17-.428.57.57 0 0 0-.424-.177q-.242 0-.416.177a.59.59 0 0 0-.174.428.6.6 0 0 0 .174.426q.174.18.416.18.252 0 .424-.18'\n />\n </svg>\n );\n}\n","import React from 'react';\n\nexport function ResourcesSvg(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg {...props}>\n <path\n d='M18.06 4c.519 0 .94.479.94 1.075v13.85c0 .594-.419 1.075-.94 1.075H5.94c-.519 0-.94-.479-.94-1.075V5.075C5 4.48 5.419 4 5.94 4zM9.256 5H5.882v.184l-.001.1v.418l-.001.175-.001 1.113v1.429l-.001.314v2.024l-.001.352-.001 3.162v.335l-.001 4.386h.105l.08.001h.36l.157.001h.571l.221.001h.741l.27.001h1.174l.313.001h1.63l.332.001 2.61.001h.305l3.362.001h.012v-.184l.001-.1v-.418l.001-.175.001-1.113v-1.429l.001-.314v-2.024l.001-.352.001-3.162v-.335l.001-4.374v-.012h-.105l-.08-.001h-.36l-.157-.001h-.571l-.221-.001h-.741l-.27-.001h-1.174l-.313-.001h-1.63l-.332-.001-2.61-.001zm1.438 8c.238 0 .431.224.431.5s-.193.5-.431.5H8.056c-.238 0-.431-.224-.431-.5s.193-.5.431-.5zm5.198-3c.267 0 .483.224.483.5s-.216.5-.483.5H8.108a.49.49 0 0 1-.483-.5c0-.276.216-.5.483-.5zm0-3c.267 0 .483.224.483.5s-.216.5-.483.5H8.108a.49.49 0 0 1-.483-.5c0-.276.216-.5.483-.5z'\n fill='currentColor'\n />\n </svg>\n );\n}\n",":local {\n $badge-size: 1.875rem;\n $badge-size-sm: 1.5rem;\n\n .topLeftContainer {\n position: absolute;\n top: map-get($spacers, 2);\n left: map-get($spacers, 2);\n z-index: 3;\n }\n\n .draft {\n background-color: $gray-700;\n }\n\n .badge {\n display: flex;\n align-items: center;\n min-width: $badge-size;\n width: $badge-size;\n height: $badge-size;\n transition: width .3s;\n overflow: hidden;\n position: relative;\n\n .svg {\n min-width: $cv-svg-size;\n position: absolute;\n left: 50%;\n transform: translateX(-50%);\n\n svg {\n vertical-align: top;\n }\n }\n\n .text {\n display: none;\n line-height: $badge-size;\n }\n\n &.sm {\n min-width: $badge-size-sm;\n width: $badge-size-sm;\n height: $badge-size-sm;\n\n .svg {\n min-width: $cv-svg-size-sm;\n }\n\n .text {\n font-size: 80%;\n line-height: $badge-size-sm;\n }\n }\n\n &:hover {\n width: 100%;\n padding-right: map-get($spacers, 2);\n\n .text {\n display: block;\n }\n\n .svg {\n margin-left: 0.2rem;\n position: relative;\n left: 0.75rem;\n }\n\n &.sm {\n .svg {\n left: 0.55rem;\n }\n }\n }\n }\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { SvgContainer, SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { CurationStatus } from 'libs/shared/enums/CurationStatus';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { ClipSvg } from 'libs/shared/images/svg/objects/ClipSvg';\nimport { InteractiveSvg } from 'libs/shared/images/svg/objects/InteractiveSvg';\nimport { ResourcesSvg } from 'libs/shared/images/svg/objects/ResourcesSvg';\n\nimport styles from './type-badge.module.scss';\n\nconst namespace = 'shared.typeBadge';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nfunction getText(typeId: MasterType): string {\n switch (typeId) {\n case MasterType.Clip:\n return getPhrase('clip');\n case MasterType.Interactive:\n return getPhrase('interactive');\n case MasterType.Resource:\n return getPhrase('resource');\n default:\n return '';\n }\n}\n\nfunction getIcon(typeId: MasterType) {\n switch (typeId) {\n case MasterType.Clip:\n return ClipSvg;\n case MasterType.Interactive:\n return InteractiveSvg;\n case MasterType.Resource:\n return ResourcesSvg;\n default:\n return null;\n }\n}\n\nfunction getColourClass(typeId: MasterType, status: CurationStatus): string {\n switch (typeId) {\n case MasterType.Clip:\n return 'bg-ultramarine';\n case MasterType.Interactive:\n return status === CurationStatus.Draft ? styles.draft : 'bg-green';\n case MasterType.Resource:\n return 'bg-indigo';\n default:\n return '';\n }\n}\n\ninterface TypeBadgeProps {\n typeId: MasterType;\n status?: CurationStatus;\n size?: 'sm' | 'md';\n inContainer?: boolean;\n}\n\nTypeBadge.default = {\n size: 'md'\n};\n\nexport function TypeBadge(props: TypeBadgeProps): JSX.Element {\n const baseClasses = `${styles.badge} rounded-pill text-white ps-0 ${props.size === 'sm' ? styles.sm : ''}`;\n\n return (\n <div className={props.inContainer ? '' : styles.topLeftContainer}>\n <div className={`${baseClasses} ${getColourClass(props.typeId, props.status)}`}>\n <SvgContainer\n className={`svg-container d-block ${styles.svg}`}\n size={props.size === 'sm' ? SvgContainerSize.Small : SvgContainerSize.Standard}\n svg={getIcon(props.typeId)}\n />\n <span className={styles.text}>\n {getText(props.typeId)}\n </span>\n </div>\n </div>\n );\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\nimport * as ReactDOM from 'react-dom';\n// Internally, the portalNode must be for either HTML or SVG elements\nvar ELEMENT_TYPE_HTML = 'html';\nvar ELEMENT_TYPE_SVG = 'svg';\n// ReactDOM can handle several different namespaces, but they're not exported publicly\n// https://github.com/facebook/react/blob/b87aabdfe1b7461e7331abb3601d9e6bb27544bc/packages/react-dom/src/shared/DOMNamespaces.js#L8-L10\nvar SVG_NAMESPACE = 'http://www.w3.org/2000/svg';\nvar validateElementType = function (domElement, elementType) {\n if (elementType === ELEMENT_TYPE_HTML) {\n return domElement instanceof HTMLElement;\n }\n if (elementType === ELEMENT_TYPE_SVG) {\n return domElement instanceof SVGElement;\n }\n throw new Error(\"Unrecognized element type \\\"\" + elementType + \"\\\" for validateElementType.\");\n};\n// This is the internal implementation: the public entry points set elementType to an appropriate value\nvar createPortalNode = function (elementType, options) {\n var initialProps = {};\n var parent;\n var lastPlaceholder;\n var element;\n if (elementType === ELEMENT_TYPE_HTML) {\n element = document.createElement('div');\n }\n else if (elementType === ELEMENT_TYPE_SVG) {\n element = document.createElementNS(SVG_NAMESPACE, 'g');\n }\n else {\n throw new Error(\"Invalid element type \\\"\" + elementType + \"\\\" for createPortalNode: must be \\\"html\\\" or \\\"svg\\\".\");\n }\n if (options && typeof options === \"object\") {\n for (var _i = 0, _a = Object.entries(options.attributes); _i < _a.length; _i++) {\n var _b = _a[_i], key = _b[0], value = _b[1];\n element.setAttribute(key, value);\n }\n }\n var portalNode = {\n element: element,\n elementType: elementType,\n setPortalProps: function (props) {\n initialProps = props;\n },\n getInitialPortalProps: function () {\n return initialProps;\n },\n mount: function (newParent, newPlaceholder) {\n if (newPlaceholder === lastPlaceholder) {\n // Already mounted - noop.\n return;\n }\n portalNode.unmount();\n // To support SVG and other non-html elements, the portalNode's elementType needs to match\n // the elementType it's being rendered into\n if (newParent !== parent) {\n if (!validateElementType(newParent, elementType)) {\n throw new Error(\"Invalid element type for portal: \\\"\" + elementType + \"\\\" portalNodes must be used with \" + elementType + \" elements, but OutPortal is within <\" + newParent.tagName + \">.\");\n }\n }\n newParent.replaceChild(portalNode.element, newPlaceholder);\n parent = newParent;\n lastPlaceholder = newPlaceholder;\n },\n unmount: function (expectedPlaceholder) {\n if (expectedPlaceholder && expectedPlaceholder !== lastPlaceholder) {\n // Skip unmounts for placeholders that aren't currently mounted\n // They will have been automatically unmounted already by a subsequent mount()\n return;\n }\n if (parent && lastPlaceholder) {\n parent.replaceChild(lastPlaceholder, portalNode.element);\n parent = undefined;\n lastPlaceholder = undefined;\n }\n }\n };\n return portalNode;\n};\nvar InPortal = /** @class */ (function (_super) {\n __extends(InPortal, _super);\n function InPortal(props) {\n var _this = _super.call(this, props) || this;\n _this.addPropsChannel = function () {\n Object.assign(_this.props.node, {\n setPortalProps: function (props) {\n // Rerender the child node here if/when the out portal props change\n _this.setState({ nodeProps: props });\n }\n });\n };\n _this.state = {\n nodeProps: _this.props.node.getInitialPortalProps(),\n };\n return _this;\n }\n InPortal.prototype.componentDidMount = function () {\n this.addPropsChannel();\n };\n InPortal.prototype.componentDidUpdate = function () {\n this.addPropsChannel();\n };\n InPortal.prototype.render = function () {\n var _this = this;\n var _a = this.props, children = _a.children, node = _a.node;\n return ReactDOM.createPortal(React.Children.map(children, function (child) {\n if (!React.isValidElement(child))\n return child;\n return React.cloneElement(child, _this.state.nodeProps);\n }), node.element);\n };\n return InPortal;\n}(React.PureComponent));\nvar OutPortal = /** @class */ (function (_super) {\n __extends(OutPortal, _super);\n function OutPortal(props) {\n var _this = _super.call(this, props) || this;\n _this.placeholderNode = React.createRef();\n _this.passPropsThroughPortal();\n return _this;\n }\n OutPortal.prototype.passPropsThroughPortal = function () {\n var propsForTarget = Object.assign({}, this.props, { node: undefined });\n this.props.node.setPortalProps(propsForTarget);\n };\n OutPortal.prototype.componentDidMount = function () {\n var node = this.props.node;\n this.currentPortalNode = node;\n var placeholder = this.placeholderNode.current;\n var parent = placeholder.parentNode;\n node.mount(parent, placeholder);\n this.passPropsThroughPortal();\n };\n OutPortal.prototype.componentDidUpdate = function () {\n // We re-mount on update, just in case we were unmounted (e.g. by\n // a second OutPortal, which has now been removed)\n var node = this.props.node;\n // If we're switching portal nodes, we need to clean up the current one first.\n if (this.currentPortalNode && node !== this.currentPortalNode) {\n this.currentPortalNode.unmount(this.placeholderNode.current);\n this.currentPortalNode.setPortalProps({});\n this.currentPortalNode = node;\n }\n var placeholder = this.placeholderNode.current;\n var parent = placeholder.parentNode;\n node.mount(parent, placeholder);\n this.passPropsThroughPortal();\n };\n OutPortal.prototype.componentWillUnmount = function () {\n var node = this.props.node;\n node.unmount(this.placeholderNode.current);\n node.setPortalProps({});\n };\n OutPortal.prototype.render = function () {\n // Render a placeholder to the DOM, so we can get a reference into\n // our location in the DOM, and swap it out for the portaled node.\n // A <div> placeholder works fine even for SVG.\n return React.createElement(\"div\", { ref: this.placeholderNode });\n };\n return OutPortal;\n}(React.PureComponent));\nvar createHtmlPortalNode = createPortalNode.bind(null, ELEMENT_TYPE_HTML);\nvar createSvgPortalNode = createPortalNode.bind(null, ELEMENT_TYPE_SVG);\nexport { createHtmlPortalNode, createSvgPortalNode, InPortal, OutPortal, };\n//# sourceMappingURL=index.js.map","import React from 'react';\nimport { createHtmlPortalNode, HtmlPortalNode } from 'react-reverse-portal';\n\nimport { LocalStorageHelper } from 'libs/common/backbone/utils/LocalStorageHelper';\n\nimport { DefaultDisplayMode, PlayerInitializationData } from 'libs/shared/context/player-context/interfaces/PlayerContextAction';\nimport { PlayerContextState } from 'libs/shared/context/player-context/interfaces/PlayerContextState';\nimport { PlayerMode } from 'libs/shared/context/player-context/interfaces/PlayerMode';\nimport { PlayerReference } from 'libs/shared/context/player-context/interfaces/PlayerReference';\nimport { playerContextReducer } from 'libs/shared/context/player-context/reducer/PlayerContextReducer';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { useSettings } from 'libs/shared/hooks/useSettings';\n\nconst _THEATRE_MODE = 'play-page-theatre-mode';\n\nexport interface PlayerContextValues extends PlayerContextState {\n playerRef?: React.MutableRefObject<PlayerReference>;\n portalNode?: HtmlPortalNode;\n questionListPortalNode?: HtmlPortalNode;\n\n useInitialize?: (initializeData: PlayerInitializationData) => void;\n dispose?: () => void;\n setPlayerRef?: (player: any) => void;\n setPlayerMode?: (mode: PlayerMode) => void;\n setDefaultDisplayMode?: (displayMode: DefaultDisplayMode) => void;\n setStarted?: (started: boolean) => void;\n setPersist?: () => void;\n\n /**\n * Tells components if an instance of <PlayerContextProvider /> exists\n * above them in the tree. I.e. When this is used in curator.\n */\n hasProvider: boolean;\n}\n\nconst PlayerContext = React.createContext<PlayerContextValues>({ hasProvider: false });\n\nexport function usePlayerContext() {\n return React.useContext(PlayerContext);\n}\n\nfunction getInitialState(): PlayerContextState {\n const hasSavedTheatreMode = LocalStorageHelper.get(_THEATRE_MODE);\n\n return {\n defaultDisplayMode: hasSavedTheatreMode ? 'theatre' : 'normal'\n };\n}\n\nexport function PlayerContextProvider(props: React.PropsWithChildren) {\n const [ state, dispatch ] = React.useReducer(playerContextReducer, getInitialState());\n const { hasPreviewVideos } = useSettings(null);\n\n const playerRef = React.useRef<any>(null);\n\n const portalNode = React.useMemo(() => createHtmlPortalNode(\n { attributes: { class: 'cv-theatre-mode-video-container' } }\n ), []);\n\n const questionListPortalNode = React.useMemo(createHtmlPortalNode, []);\n\n function setPlayerRef(player: PlayerReference) {\n playerRef.current = player;\n }\n\n function useInitialize(initializeData: PlayerInitializationData) {\n const enabled = hasPreviewVideos || initializeData.mode !== 'hover';\n\n React.useEffect(() => {\n if (!enabled)\n return;\n\n /**\n * Cannot initialize a hover player if we already have a player elsewhere.\n */\n if (initializeData.mode === 'hover' && state.mode)\n return;\n\n /**\n * No hover to play on interactives. This feature is ComingSoon™️ - Sha\n */\n if (initializeData.mode === 'hover' && initializeData.objectTypeId === MasterType.Interactive)\n return;\n\n dispatch({\n type: 'initialize',\n data: initializeData\n });\n\n return disposeInternal;\n }, []);\n }\n\n function setPlayerMode(mode: PlayerMode) {\n dispatch({ type: 'mode', data: { mode } });\n }\n\n function setDefaultDisplayMode(defaultDisplayMode: DefaultDisplayMode) {\n LocalStorageHelper.set(_THEATRE_MODE, defaultDisplayMode === 'theatre');\n\n dispatch({ type: 'defaultDisplayMode', data: { defaultDisplayMode } });\n }\n\n function setStarted(): void {\n dispatch({ type: 'started' });\n }\n\n function disposeInternal(force: boolean = false): void {\n if (force) {\n playerRef.current = null;\n }\n\n dispatch({ type: 'dispose', data: { force: force } });\n }\n\n function setPersist(): void {\n dispatch({ type: 'persist' });\n }\n\n /**\n * If anything external calls dispose, we ignore the persist flag and force a disposal\n */\n function dispose(): void {\n disposeInternal(true);\n }\n\n const playerContextValues: PlayerContextValues = {\n ...state,\n playerRef,\n setPlayerRef,\n portalNode,\n questionListPortalNode,\n useInitialize,\n setPlayerMode,\n setDefaultDisplayMode,\n setStarted,\n dispose,\n setPersist,\n hasProvider: true\n };\n\n return (\n <PlayerContext.Provider value={playerContextValues}>\n {props.children}\n </PlayerContext.Provider>\n );\n}\n","\"use strict\";\n\nexports.__esModule = true;\nexports.inherits = inherits;\nfunction inherits(parent, child) {\n\tvar props = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n\tvar extended = Object.create(parent.prototype);\n\tfor (var p in props) {\n\t\textended[p] = props[p];\n\t}\n\textended.constructor = child;\n\tchild.prototype = extended;\n\treturn child;\n}","'use strict';\n\nexports.__esModule = true;\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar defaults = {\n\tdefaultProtocol: 'http',\n\tevents: null,\n\tformat: noop,\n\tformatHref: noop,\n\tnl2br: false,\n\ttagName: 'a',\n\ttarget: typeToTarget,\n\tvalidate: true,\n\tignoreTags: [],\n\tattributes: null,\n\tclassName: 'linkified' // Deprecated value - no default class will be provided in the future\n};\n\nexports.defaults = defaults;\nexports.Options = Options;\nexports.contains = contains;\n\n\nfunction Options(opts) {\n\topts = opts || {};\n\n\tthis.defaultProtocol = opts.hasOwnProperty('defaultProtocol') ? opts.defaultProtocol : defaults.defaultProtocol;\n\tthis.events = opts.hasOwnProperty('events') ? opts.events : defaults.events;\n\tthis.format = opts.hasOwnProperty('format') ? opts.format : defaults.format;\n\tthis.formatHref = opts.hasOwnProperty('formatHref') ? opts.formatHref : defaults.formatHref;\n\tthis.nl2br = opts.hasOwnProperty('nl2br') ? opts.nl2br : defaults.nl2br;\n\tthis.tagName = opts.hasOwnProperty('tagName') ? opts.tagName : defaults.tagName;\n\tthis.target = opts.hasOwnProperty('target') ? opts.target : defaults.target;\n\tthis.validate = opts.hasOwnProperty('validate') ? opts.validate : defaults.validate;\n\tthis.ignoreTags = [];\n\n\t// linkAttributes and linkClass is deprecated\n\tthis.attributes = opts.attributes || opts.linkAttributes || defaults.attributes;\n\tthis.className = opts.hasOwnProperty('className') ? opts.className : opts.linkClass || defaults.className;\n\n\t// Make all tags names upper case\n\tvar ignoredTags = opts.hasOwnProperty('ignoreTags') ? opts.ignoreTags : defaults.ignoreTags;\n\tfor (var i = 0; i < ignoredTags.length; i++) {\n\t\tthis.ignoreTags.push(ignoredTags[i].toUpperCase());\n\t}\n}\n\nOptions.prototype = {\n\t/**\n * Given the token, return all options for how it should be displayed\n */\n\tresolve: function resolve(token) {\n\t\tvar href = token.toHref(this.defaultProtocol);\n\t\treturn {\n\t\t\tformatted: this.get('format', token.toString(), token),\n\t\t\tformattedHref: this.get('formatHref', href, token),\n\t\t\ttagName: this.get('tagName', href, token),\n\t\t\tclassName: this.get('className', href, token),\n\t\t\ttarget: this.get('target', href, token),\n\t\t\tevents: this.getObject('events', href, token),\n\t\t\tattributes: this.getObject('attributes', href, token)\n\t\t};\n\t},\n\n\n\t/**\n * Returns true or false based on whether a token should be displayed as a\n * link based on the user options. By default,\n */\n\tcheck: function check(token) {\n\t\treturn this.get('validate', token.toString(), token);\n\t},\n\n\n\t// Private methods\n\n\t/**\n * Resolve an option's value based on the value of the option and the given\n * params.\n * @param {String} key Name of option to use\n * @param operator will be passed to the target option if it's method\n * @param {MultiToken} token The token from linkify.tokenize\n */\n\tget: function get(key, operator, token) {\n\t\tvar optionValue = void 0,\n\t\t option = this[key];\n\t\tif (!option) {\n\t\t\treturn option;\n\t\t}\n\n\t\tswitch (typeof option === 'undefined' ? 'undefined' : _typeof(option)) {\n\t\t\tcase 'function':\n\t\t\t\treturn option(operator, token.type);\n\t\t\tcase 'object':\n\t\t\t\toptionValue = option.hasOwnProperty(token.type) ? option[token.type] : defaults[key];\n\t\t\t\treturn typeof optionValue === 'function' ? optionValue(operator, token.type) : optionValue;\n\t\t}\n\n\t\treturn option;\n\t},\n\tgetObject: function getObject(key, operator, token) {\n\t\tvar option = this[key];\n\t\treturn typeof option === 'function' ? option(operator, token.type) : option;\n\t}\n};\n\n/**\n * Quick indexOf replacement for checking the ignoreTags option\n */\nfunction contains(arr, value) {\n\tfor (var i = 0; i < arr.length; i++) {\n\t\tif (arr[i] === value) {\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n}\n\nfunction noop(val) {\n\treturn val;\n}\n\nfunction typeToTarget(href, type) {\n\treturn type === 'url' ? '_blank' : null;\n}","'use strict';\n\nexports.__esModule = true;\nexports.stateify = exports.TokenState = exports.CharacterState = undefined;\n\nvar _class = require('../utils/class');\n\nfunction createStateClass() {\n\treturn function (tClass) {\n\t\tthis.j = [];\n\t\tthis.T = tClass || null;\n\t};\n}\n\n/**\n\tA simple state machine that can emit token classes\n\n\tThe `j` property in this class refers to state jumps. It's a\n\tmultidimensional array where for each element:\n\n\t* index [0] is a symbol or class of symbols to transition to.\n\t* index [1] is a State instance which matches\n\n\tThe type of symbol will depend on the target implementation for this class.\n\tIn Linkify, we have a two-stage scanner. Each stage uses this state machine\n\tbut with a slighly different (polymorphic) implementation.\n\n\tThe `T` property refers to the token class.\n\n\tTODO: Can the `on` and `next` methods be combined?\n\n\t@class BaseState\n*/\nvar BaseState = createStateClass();\nBaseState.prototype = {\n\tdefaultTransition: false,\n\n\t/**\n \t@method constructor\n \t@param {Class} tClass Pass in the kind of token to emit if there are\n \t\tno jumps after this state and the state is accepting.\n */\n\n\t/**\n \tOn the given symbol(s), this machine should go to the given state\n \t\t@method on\n \t@param {Array|Mixed} symbol\n \t@param {BaseState} state Note that the type of this state should be the\n \t\tsame as the current instance (i.e., don't pass in a different\n \t\tsubclass)\n */\n\ton: function on(symbol, state) {\n\t\tif (symbol instanceof Array) {\n\t\t\tfor (var i = 0; i < symbol.length; i++) {\n\t\t\t\tthis.j.push([symbol[i], state]);\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\t\tthis.j.push([symbol, state]);\n\t\treturn this;\n\t},\n\n\n\t/**\n \tGiven the next item, returns next state for that item\n \t@method next\n \t@param {Mixed} item Should be an instance of the symbols handled by\n \t\tthis particular machine.\n \t@return {State} state Returns false if no jumps are available\n */\n\tnext: function next(item) {\n\t\tfor (var i = 0; i < this.j.length; i++) {\n\t\t\tvar jump = this.j[i];\n\t\t\tvar symbol = jump[0]; // Next item to check for\n\t\t\tvar state = jump[1]; // State to jump to if items match\n\n\t\t\t// compare item with symbol\n\t\t\tif (this.test(item, symbol)) {\n\t\t\t\treturn state;\n\t\t\t}\n\t\t}\n\n\t\t// Nowhere left to jump!\n\t\treturn this.defaultTransition;\n\t},\n\n\n\t/**\n \tDoes this state accept?\n \t`true` only of `this.T` exists\n \t\t@method accepts\n \t@return {Boolean}\n */\n\taccepts: function accepts() {\n\t\treturn !!this.T;\n\t},\n\n\n\t/**\n \tDetermine whether a given item \"symbolizes\" the symbol, where symbol is\n \ta class of items handled by this state machine.\n \t\tThis method should be overriden in extended classes.\n \t\t@method test\n \t@param {Mixed} item Does this item match the given symbol?\n \t@param {Mixed} symbol\n \t@return {Boolean}\n */\n\ttest: function test(item, symbol) {\n\t\treturn item === symbol;\n\t},\n\n\n\t/**\n \tEmit the token for this State (just return it in this case)\n \tIf this emits a token, this instance is an accepting state\n \t@method emit\n \t@return {Class} T\n */\n\temit: function emit() {\n\t\treturn this.T;\n\t}\n};\n\n/**\n\tState machine for string-based input\n\n\t@class CharacterState\n\t@extends BaseState\n*/\nvar CharacterState = (0, _class.inherits)(BaseState, createStateClass(), {\n\t/**\n \tDoes the given character match the given character or regular\n \texpression?\n \t\t@method test\n \t@param {String} char\n \t@param {String|RegExp} charOrRegExp\n \t@return {Boolean}\n */\n\ttest: function test(character, charOrRegExp) {\n\t\treturn character === charOrRegExp || charOrRegExp instanceof RegExp && charOrRegExp.test(character);\n\t}\n});\n\n/**\n\tState machine for input in the form of TextTokens\n\n\t@class TokenState\n\t@extends BaseState\n*/\nvar TokenState = (0, _class.inherits)(BaseState, createStateClass(), {\n\n\t/**\n * Similar to `on`, but returns the state the results in the transition from\n * the given item\n * @method jump\n * @param {Mixed} item\n * @param {Token} [token]\n * @return state\n */\n\tjump: function jump(token) {\n\t\tvar tClass = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n\n\t\tvar state = this.next(new token('')); // dummy temp token\n\t\tif (state === this.defaultTransition) {\n\t\t\t// Make a new state!\n\t\t\tstate = new this.constructor(tClass);\n\t\t\tthis.on(token, state);\n\t\t} else if (tClass) {\n\t\t\tstate.T = tClass;\n\t\t}\n\t\treturn state;\n\t},\n\n\n\t/**\n \tIs the given token an instance of the given token class?\n \t\t@method test\n \t@param {TextToken} token\n \t@param {Class} tokenClass\n \t@return {Boolean}\n */\n\ttest: function test(token, tokenClass) {\n\t\treturn token instanceof tokenClass;\n\t}\n});\n\n/**\n\tGiven a non-empty target string, generates states (if required) for each\n\tconsecutive substring of characters in str starting from the beginning of\n\tthe string. The final state will have a special value, as specified in\n\toptions. All other \"in between\" substrings will have a default end state.\n\n\tThis turns the state machine into a Trie-like data structure (rather than a\n\tintelligently-designed DFA).\n\n\tNote that I haven't really tried these with any strings other than\n\tDOMAIN.\n\n\t@param {String} str\n\t@param {CharacterState} start State to jump from the first character\n\t@param {Class} endToken Token class to emit when the given string has been\n\t\tmatched and no more jumps exist.\n\t@param {Class} defaultToken \"Filler token\", or which token type to emit when\n\t\twe don't have a full match\n\t@return {Array} list of newly-created states\n*/\nfunction stateify(str, start, endToken, defaultToken) {\n\tvar i = 0,\n\t len = str.length,\n\t state = start,\n\t newStates = [],\n\t nextState = void 0;\n\n\t// Find the next state without a jump to the next character\n\twhile (i < len && (nextState = state.next(str[i]))) {\n\t\tstate = nextState;\n\t\ti++;\n\t}\n\n\tif (i >= len) {\n\t\treturn [];\n\t} // no new tokens were added\n\n\twhile (i < len - 1) {\n\t\tnextState = new CharacterState(defaultToken);\n\t\tnewStates.push(nextState);\n\t\tstate.on(str[i], nextState);\n\t\tstate = nextState;\n\t\ti++;\n\t}\n\n\tnextState = new CharacterState(endToken);\n\tnewStates.push(nextState);\n\tstate.on(str[len - 1], nextState);\n\n\treturn newStates;\n}\n\nexports.CharacterState = CharacterState;\nexports.TokenState = TokenState;\nexports.stateify = stateify;","\"use strict\";\n\nexports.__esModule = true;\nfunction createTokenClass() {\n\treturn function (value) {\n\t\tif (value) {\n\t\t\tthis.v = value;\n\t\t}\n\t};\n}\n\nexports.createTokenClass = createTokenClass;","'use strict';\n\nexports.__esModule = true;\nexports.AMPERSAND = exports.CLOSEPAREN = exports.CLOSEANGLEBRACKET = exports.CLOSEBRACKET = exports.CLOSEBRACE = exports.OPENPAREN = exports.OPENANGLEBRACKET = exports.OPENBRACKET = exports.OPENBRACE = exports.WS = exports.TLD = exports.SYM = exports.UNDERSCORE = exports.SLASH = exports.MAILTO = exports.PROTOCOL = exports.QUERY = exports.POUND = exports.PLUS = exports.NUM = exports.NL = exports.LOCALHOST = exports.PUNCTUATION = exports.DOT = exports.COLON = exports.AT = exports.DOMAIN = exports.Base = undefined;\n\nvar _createTokenClass = require('./create-token-class');\n\nvar _class = require('../../utils/class');\n\n/******************************************************************************\n\tText Tokens\n\tTokens composed of strings\n******************************************************************************/\n\n/**\n\tAbstract class used for manufacturing text tokens.\n\tPass in the value this token represents\n\n\t@class TextToken\n\t@abstract\n*/\nvar TextToken = (0, _createTokenClass.createTokenClass)();\nTextToken.prototype = {\n\ttoString: function toString() {\n\t\treturn this.v + '';\n\t}\n};\n\nfunction inheritsToken(value) {\n\tvar props = value ? { v: value } : {};\n\treturn (0, _class.inherits)(TextToken, (0, _createTokenClass.createTokenClass)(), props);\n}\n\n/**\n\tA valid domain token\n\t@class DOMAIN\n\t@extends TextToken\n*/\nvar DOMAIN = inheritsToken();\n\n/**\n\t@class AT\n\t@extends TextToken\n*/\nvar AT = inheritsToken('@');\n\n/**\n\tRepresents a single colon `:` character\n\n\t@class COLON\n\t@extends TextToken\n*/\nvar COLON = inheritsToken(':');\n\n/**\n\t@class DOT\n\t@extends TextToken\n*/\nvar DOT = inheritsToken('.');\n\n/**\n\tA character class that can surround the URL, but which the URL cannot begin\n\tor end with. Does not include certain English punctuation like parentheses.\n\n\t@class PUNCTUATION\n\t@extends TextToken\n*/\nvar PUNCTUATION = inheritsToken();\n\n/**\n\tThe word localhost (by itself)\n\t@class LOCALHOST\n\t@extends TextToken\n*/\nvar LOCALHOST = inheritsToken();\n\n/**\n\tNewline token\n\t@class NL\n\t@extends TextToken\n*/\nvar NL = inheritsToken('\\n');\n\n/**\n\t@class NUM\n\t@extends TextToken\n*/\nvar NUM = inheritsToken();\n\n/**\n\t@class PLUS\n\t@extends TextToken\n*/\nvar PLUS = inheritsToken('+');\n\n/**\n\t@class POUND\n\t@extends TextToken\n*/\nvar POUND = inheritsToken('#');\n\n/**\n\tRepresents a web URL protocol. Supported types include\n\n\t* `http:`\n\t* `https:`\n\t* `ftp:`\n\t* `ftps:`\n\n\t@class PROTOCOL\n\t@extends TextToken\n*/\nvar PROTOCOL = inheritsToken();\n\n/**\n\tRepresents the start of the email URI protocol\n\n\t@class MAILTO\n\t@extends TextToken\n*/\nvar MAILTO = inheritsToken('mailto:');\n\n/**\n\t@class QUERY\n\t@extends TextToken\n*/\nvar QUERY = inheritsToken('?');\n\n/**\n\t@class SLASH\n\t@extends TextToken\n*/\nvar SLASH = inheritsToken('/');\n\n/**\n\t@class UNDERSCORE\n\t@extends TextToken\n*/\nvar UNDERSCORE = inheritsToken('_');\n\n/**\n\tOne ore more non-whitespace symbol.\n\t@class SYM\n\t@extends TextToken\n*/\nvar SYM = inheritsToken();\n\n/**\n\t@class TLD\n\t@extends TextToken\n*/\nvar TLD = inheritsToken();\n\n/**\n\tRepresents a string of consecutive whitespace characters\n\n\t@class WS\n\t@extends TextToken\n*/\nvar WS = inheritsToken();\n\n/**\n\tOpening/closing bracket classes\n*/\n\nvar OPENBRACE = inheritsToken('{');\nvar OPENBRACKET = inheritsToken('[');\nvar OPENANGLEBRACKET = inheritsToken('<');\nvar OPENPAREN = inheritsToken('(');\nvar CLOSEBRACE = inheritsToken('}');\nvar CLOSEBRACKET = inheritsToken(']');\nvar CLOSEANGLEBRACKET = inheritsToken('>');\nvar CLOSEPAREN = inheritsToken(')');\n\nvar AMPERSAND = inheritsToken('&');\n\nexports.Base = TextToken;\nexports.DOMAIN = DOMAIN;\nexports.AT = AT;\nexports.COLON = COLON;\nexports.DOT = DOT;\nexports.PUNCTUATION = PUNCTUATION;\nexports.LOCALHOST = LOCALHOST;\nexports.NL = NL;\nexports.NUM = NUM;\nexports.PLUS = PLUS;\nexports.POUND = POUND;\nexports.QUERY = QUERY;\nexports.PROTOCOL = PROTOCOL;\nexports.MAILTO = MAILTO;\nexports.SLASH = SLASH;\nexports.UNDERSCORE = UNDERSCORE;\nexports.SYM = SYM;\nexports.TLD = TLD;\nexports.WS = WS;\nexports.OPENBRACE = OPENBRACE;\nexports.OPENBRACKET = OPENBRACKET;\nexports.OPENANGLEBRACKET = OPENANGLEBRACKET;\nexports.OPENPAREN = OPENPAREN;\nexports.CLOSEBRACE = CLOSEBRACE;\nexports.CLOSEBRACKET = CLOSEBRACKET;\nexports.CLOSEANGLEBRACKET = CLOSEANGLEBRACKET;\nexports.CLOSEPAREN = CLOSEPAREN;\nexports.AMPERSAND = AMPERSAND;","'use strict';\n\nexports.__esModule = true;\nexports.start = exports.run = exports.TOKENS = exports.State = undefined;\n\nvar _state = require('./state');\n\nvar _text = require('./tokens/text');\n\nvar TOKENS = _interopRequireWildcard(_text);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nvar tlds = 'aaa|aarp|abarth|abb|abbott|abbvie|abc|able|abogado|abudhabi|ac|academy|accenture|accountant|accountants|aco|active|actor|ad|adac|ads|adult|ae|aeg|aero|aetna|af|afamilycompany|afl|africa|ag|agakhan|agency|ai|aig|aigo|airbus|airforce|airtel|akdn|al|alfaromeo|alibaba|alipay|allfinanz|allstate|ally|alsace|alstom|am|americanexpress|americanfamily|amex|amfam|amica|amsterdam|analytics|android|anquan|anz|ao|aol|apartments|app|apple|aq|aquarelle|ar|arab|aramco|archi|army|arpa|art|arte|as|asda|asia|associates|at|athleta|attorney|au|auction|audi|audible|audio|auspost|author|auto|autos|avianca|aw|aws|ax|axa|az|azure|ba|baby|baidu|banamex|bananarepublic|band|bank|bar|barcelona|barclaycard|barclays|barefoot|bargains|baseball|basketball|bauhaus|bayern|bb|bbc|bbt|bbva|bcg|bcn|bd|be|beats|beauty|beer|bentley|berlin|best|bestbuy|bet|bf|bg|bh|bharti|bi|bible|bid|bike|bing|bingo|bio|biz|bj|black|blackfriday|blanco|blockbuster|blog|bloomberg|blue|bm|bms|bmw|bn|bnl|bnpparibas|bo|boats|boehringer|bofa|bom|bond|boo|book|booking|boots|bosch|bostik|boston|bot|boutique|box|br|bradesco|bridgestone|broadway|broker|brother|brussels|bs|bt|budapest|bugatti|build|builders|business|buy|buzz|bv|bw|by|bz|bzh|ca|cab|cafe|cal|call|calvinklein|cam|camera|camp|cancerresearch|canon|capetown|capital|capitalone|car|caravan|cards|care|career|careers|cars|cartier|casa|case|caseih|cash|casino|cat|catering|catholic|cba|cbn|cbre|cbs|cc|cd|ceb|center|ceo|cern|cf|cfa|cfd|cg|ch|chanel|channel|chase|chat|cheap|chintai|chloe|christmas|chrome|chrysler|church|ci|cipriani|circle|cisco|citadel|citi|citic|city|cityeats|ck|cl|claims|cleaning|click|clinic|clinique|clothing|cloud|club|clubmed|cm|cn|co|coach|codes|coffee|college|cologne|com|comcast|commbank|community|company|compare|computer|comsec|condos|construction|consulting|contact|contractors|cooking|cookingchannel|cool|coop|corsica|country|coupon|coupons|courses|cr|credit|creditcard|creditunion|cricket|crown|crs|cruise|cruises|csc|cu|cuisinella|cv|cw|cx|cy|cymru|cyou|cz|dabur|dad|dance|data|date|dating|datsun|day|dclk|dds|de|deal|dealer|deals|degree|delivery|dell|deloitte|delta|democrat|dental|dentist|desi|design|dev|dhl|diamonds|diet|digital|direct|directory|discount|discover|dish|diy|dj|dk|dm|dnp|do|docs|doctor|dodge|dog|doha|domains|dot|download|drive|dtv|dubai|duck|dunlop|duns|dupont|durban|dvag|dvr|dz|earth|eat|ec|eco|edeka|edu|education|ee|eg|email|emerck|energy|engineer|engineering|enterprises|epost|epson|equipment|er|ericsson|erni|es|esq|estate|esurance|et|etisalat|eu|eurovision|eus|events|everbank|exchange|expert|exposed|express|extraspace|fage|fail|fairwinds|faith|family|fan|fans|farm|farmers|fashion|fast|fedex|feedback|ferrari|ferrero|fi|fiat|fidelity|fido|film|final|finance|financial|fire|firestone|firmdale|fish|fishing|fit|fitness|fj|fk|flickr|flights|flir|florist|flowers|fly|fm|fo|foo|food|foodnetwork|football|ford|forex|forsale|forum|foundation|fox|fr|free|fresenius|frl|frogans|frontdoor|frontier|ftr|fujitsu|fujixerox|fun|fund|furniture|futbol|fyi|ga|gal|gallery|gallo|gallup|game|games|gap|garden|gb|gbiz|gd|gdn|ge|gea|gent|genting|george|gf|gg|ggee|gh|gi|gift|gifts|gives|giving|gl|glade|glass|gle|global|globo|gm|gmail|gmbh|gmo|gmx|gn|godaddy|gold|goldpoint|golf|goo|goodhands|goodyear|goog|google|gop|got|gov|gp|gq|gr|grainger|graphics|gratis|green|gripe|grocery|group|gs|gt|gu|guardian|gucci|guge|guide|guitars|guru|gw|gy|hair|hamburg|hangout|haus|hbo|hdfc|hdfcbank|health|healthcare|help|helsinki|here|hermes|hgtv|hiphop|hisamitsu|hitachi|hiv|hk|hkt|hm|hn|hockey|holdings|holiday|homedepot|homegoods|homes|homesense|honda|honeywell|horse|hospital|host|hosting|hot|hoteles|hotels|hotmail|house|how|hr|hsbc|ht|htc|hu|hughes|hyatt|hyundai|ibm|icbc|ice|icu|id|ie|ieee|ifm|ikano|il|im|imamat|imdb|immo|immobilien|in|industries|infiniti|info|ing|ink|institute|insurance|insure|int|intel|international|intuit|investments|io|ipiranga|iq|ir|irish|is|iselect|ismaili|ist|istanbul|it|itau|itv|iveco|iwc|jaguar|java|jcb|jcp|je|jeep|jetzt|jewelry|jio|jlc|jll|jm|jmp|jnj|jo|jobs|joburg|jot|joy|jp|jpmorgan|jprs|juegos|juniper|kaufen|kddi|ke|kerryhotels|kerrylogistics|kerryproperties|kfh|kg|kh|ki|kia|kim|kinder|kindle|kitchen|kiwi|km|kn|koeln|komatsu|kosher|kp|kpmg|kpn|kr|krd|kred|kuokgroup|kw|ky|kyoto|kz|la|lacaixa|ladbrokes|lamborghini|lamer|lancaster|lancia|lancome|land|landrover|lanxess|lasalle|lat|latino|latrobe|law|lawyer|lb|lc|lds|lease|leclerc|lefrak|legal|lego|lexus|lgbt|li|liaison|lidl|life|lifeinsurance|lifestyle|lighting|like|lilly|limited|limo|lincoln|linde|link|lipsy|live|living|lixil|lk|loan|loans|locker|locus|loft|lol|london|lotte|lotto|love|lpl|lplfinancial|lr|ls|lt|ltd|ltda|lu|lundbeck|lupin|luxe|luxury|lv|ly|ma|macys|madrid|maif|maison|makeup|man|management|mango|map|market|marketing|markets|marriott|marshalls|maserati|mattel|mba|mc|mckinsey|md|me|med|media|meet|melbourne|meme|memorial|men|menu|meo|merckmsd|metlife|mg|mh|miami|microsoft|mil|mini|mint|mit|mitsubishi|mk|ml|mlb|mls|mm|mma|mn|mo|mobi|mobile|mobily|moda|moe|moi|mom|monash|money|monster|mopar|mormon|mortgage|moscow|moto|motorcycles|mov|movie|movistar|mp|mq|mr|ms|msd|mt|mtn|mtr|mu|museum|mutual|mv|mw|mx|my|mz|na|nab|nadex|nagoya|name|nationwide|natura|navy|nba|nc|ne|nec|net|netbank|netflix|network|neustar|new|newholland|news|next|nextdirect|nexus|nf|nfl|ng|ngo|nhk|ni|nico|nike|nikon|ninja|nissan|nissay|nl|no|nokia|northwesternmutual|norton|now|nowruz|nowtv|np|nr|nra|nrw|ntt|nu|nyc|nz|obi|observer|off|office|okinawa|olayan|olayangroup|oldnavy|ollo|om|omega|one|ong|onl|online|onyourside|ooo|open|oracle|orange|org|organic|origins|osaka|otsuka|ott|ovh|pa|page|panasonic|panerai|paris|pars|partners|parts|party|passagens|pay|pccw|pe|pet|pf|pfizer|pg|ph|pharmacy|phd|philips|phone|photo|photography|photos|physio|piaget|pics|pictet|pictures|pid|pin|ping|pink|pioneer|pizza|pk|pl|place|play|playstation|plumbing|plus|pm|pn|pnc|pohl|poker|politie|porn|post|pr|pramerica|praxi|press|prime|pro|prod|productions|prof|progressive|promo|properties|property|protection|pru|prudential|ps|pt|pub|pw|pwc|py|qa|qpon|quebec|quest|qvc|racing|radio|raid|re|read|realestate|realtor|realty|recipes|red|redstone|redumbrella|rehab|reise|reisen|reit|reliance|ren|rent|rentals|repair|report|republican|rest|restaurant|review|reviews|rexroth|rich|richardli|ricoh|rightathome|ril|rio|rip|rmit|ro|rocher|rocks|rodeo|rogers|room|rs|rsvp|ru|rugby|ruhr|run|rw|rwe|ryukyu|sa|saarland|safe|safety|sakura|sale|salon|samsclub|samsung|sandvik|sandvikcoromant|sanofi|sap|sapo|sarl|sas|save|saxo|sb|sbi|sbs|sc|sca|scb|schaeffler|schmidt|scholarships|school|schule|schwarz|science|scjohnson|scor|scot|sd|se|search|seat|secure|security|seek|select|sener|services|ses|seven|sew|sex|sexy|sfr|sg|sh|shangrila|sharp|shaw|shell|shia|shiksha|shoes|shop|shopping|shouji|show|showtime|shriram|si|silk|sina|singles|site|sj|sk|ski|skin|sky|skype|sl|sling|sm|smart|smile|sn|sncf|so|soccer|social|softbank|software|sohu|solar|solutions|song|sony|soy|space|spiegel|spot|spreadbetting|sr|srl|srt|st|stada|staples|star|starhub|statebank|statefarm|statoil|stc|stcgroup|stockholm|storage|store|stream|studio|study|style|su|sucks|supplies|supply|support|surf|surgery|suzuki|sv|swatch|swiftcover|swiss|sx|sy|sydney|symantec|systems|sz|tab|taipei|talk|taobao|target|tatamotors|tatar|tattoo|tax|taxi|tc|tci|td|tdk|team|tech|technology|tel|telecity|telefonica|temasek|tennis|teva|tf|tg|th|thd|theater|theatre|tiaa|tickets|tienda|tiffany|tips|tires|tirol|tj|tjmaxx|tjx|tk|tkmaxx|tl|tm|tmall|tn|to|today|tokyo|tools|top|toray|toshiba|total|tours|town|toyota|toys|tr|trade|trading|training|travel|travelchannel|travelers|travelersinsurance|trust|trv|tt|tube|tui|tunes|tushu|tv|tvs|tw|tz|ua|ubank|ubs|uconnect|ug|uk|unicom|university|uno|uol|ups|us|uy|uz|va|vacations|vana|vanguard|vc|ve|vegas|ventures|verisign|versicherung|vet|vg|vi|viajes|video|vig|viking|villas|vin|vip|virgin|visa|vision|vista|vistaprint|viva|vivo|vlaanderen|vn|vodka|volkswagen|volvo|vote|voting|voto|voyage|vu|vuelos|wales|walmart|walter|wang|wanggou|warman|watch|watches|weather|weatherchannel|webcam|weber|website|wed|wedding|weibo|weir|wf|whoswho|wien|wiki|williamhill|win|windows|wine|winners|wme|wolterskluwer|woodside|work|works|world|wow|ws|wtc|wtf|xbox|xerox|xfinity|xihuan|xin|xn--11b4c3d|xn--1ck2e1b|xn--1qqw23a|xn--2scrj9c|xn--30rr7y|xn--3bst00m|xn--3ds443g|xn--3e0b707e|xn--3hcrj9c|xn--3oq18vl8pn36a|xn--3pxu8k|xn--42c2d9a|xn--45br5cyl|xn--45brj9c|xn--45q11c|xn--4gbrim|xn--54b7fta0cc|xn--55qw42g|xn--55qx5d|xn--5su34j936bgsg|xn--5tzm5g|xn--6frz82g|xn--6qq986b3xl|xn--80adxhks|xn--80ao21a|xn--80aqecdr1a|xn--80asehdb|xn--80aswg|xn--8y0a063a|xn--90a3ac|xn--90ae|xn--90ais|xn--9dbq2a|xn--9et52u|xn--9krt00a|xn--b4w605ferd|xn--bck1b9a5dre4c|xn--c1avg|xn--c2br7g|xn--cck2b3b|xn--cg4bki|xn--clchc0ea0b2g2a9gcd|xn--czr694b|xn--czrs0t|xn--czru2d|xn--d1acj3b|xn--d1alf|xn--e1a4c|xn--eckvdtc9d|xn--efvy88h|xn--estv75g|xn--fct429k|xn--fhbei|xn--fiq228c5hs|xn--fiq64b|xn--fiqs8s|xn--fiqz9s|xn--fjq720a|xn--flw351e|xn--fpcrj9c3d|xn--fzc2c9e2c|xn--fzys8d69uvgm|xn--g2xx48c|xn--gckr3f0f|xn--gecrj9c|xn--gk3at1e|xn--h2breg3eve|xn--h2brj9c|xn--h2brj9c8c|xn--hxt814e|xn--i1b6b1a6a2e|xn--imr513n|xn--io0a7i|xn--j1aef|xn--j1amh|xn--j6w193g|xn--jlq61u9w7b|xn--jvr189m|xn--kcrx77d1x4a|xn--kprw13d|xn--kpry57d|xn--kpu716f|xn--kput3i|xn--l1acc|xn--lgbbat1ad8j|xn--mgb9awbf|xn--mgba3a3ejt|xn--mgba3a4f16a|xn--mgba7c0bbn0a|xn--mgbaakc7dvf|xn--mgbaam7a8h|xn--mgbab2bd|xn--mgbai9azgqp6j|xn--mgbayh7gpa|xn--mgbb9fbpob|xn--mgbbh1a|xn--mgbbh1a71e|xn--mgbc0a9azcg|xn--mgbca7dzdo|xn--mgberp4a5d4ar|xn--mgbgu82a|xn--mgbi4ecexp|xn--mgbpl2fh|xn--mgbt3dhd|xn--mgbtx2b|xn--mgbx4cd0ab|xn--mix891f|xn--mk1bu44c|xn--mxtq1m|xn--ngbc5azd|xn--ngbe9e0a|xn--ngbrx|xn--node|xn--nqv7f|xn--nqv7fs00ema|xn--nyqy26a|xn--o3cw4h|xn--ogbpf8fl|xn--p1acf|xn--p1ai|xn--pbt977c|xn--pgbs0dh|xn--pssy2u|xn--q9jyb4c|xn--qcka1pmc|xn--qxam|xn--rhqv96g|xn--rovu88b|xn--rvc1e0am3e|xn--s9brj9c|xn--ses554g|xn--t60b56a|xn--tckwe|xn--tiq49xqyj|xn--unup4y|xn--vermgensberater-ctb|xn--vermgensberatung-pwb|xn--vhquv|xn--vuq861b|xn--w4r85el8fhu5dnra|xn--w4rs40l|xn--wgbh1c|xn--wgbl6a|xn--xhq521b|xn--xkc2al3hye2a|xn--xkc2dl3a5ee0h|xn--y9a3aq|xn--yfro4i67o|xn--ygbi2ammx|xn--zfr164b|xperia|xxx|xyz|yachts|yahoo|yamaxun|yandex|ye|yodobashi|yoga|yokohama|you|youtube|yt|yun|za|zappos|zara|zero|zip|zippo|zm|zone|zuerich|zw'.split('|'); // macro, see gulpfile.js\n\n/**\n\tThe scanner provides an interface that takes a string of text as input, and\n\toutputs an array of tokens instances that can be used for easy URL parsing.\n\n\t@module linkify\n\t@submodule scanner\n\t@main scanner\n*/\n\nvar NUMBERS = '0123456789'.split('');\nvar ALPHANUM = '0123456789abcdefghijklmnopqrstuvwxyz'.split('');\nvar WHITESPACE = [' ', '\\f', '\\r', '\\t', '\\v', '\\xA0', '\\u1680', '\\u180E']; // excluding line breaks\n\nvar domainStates = []; // states that jump to DOMAIN on /[a-z0-9]/\nvar makeState = function makeState(tokenClass) {\n\treturn new _state.CharacterState(tokenClass);\n};\n\n// Frequently used states\nvar S_START = makeState();\nvar S_NUM = makeState(_text.NUM);\nvar S_DOMAIN = makeState(_text.DOMAIN);\nvar S_DOMAIN_HYPHEN = makeState(); // domain followed by 1 or more hyphen characters\nvar S_WS = makeState(_text.WS);\n\n// States for special URL symbols\nS_START.on('@', makeState(_text.AT)).on('.', makeState(_text.DOT)).on('+', makeState(_text.PLUS)).on('#', makeState(_text.POUND)).on('?', makeState(_text.QUERY)).on('/', makeState(_text.SLASH)).on('_', makeState(_text.UNDERSCORE)).on(':', makeState(_text.COLON)).on('{', makeState(_text.OPENBRACE)).on('[', makeState(_text.OPENBRACKET)).on('<', makeState(_text.OPENANGLEBRACKET)).on('(', makeState(_text.OPENPAREN)).on('}', makeState(_text.CLOSEBRACE)).on(']', makeState(_text.CLOSEBRACKET)).on('>', makeState(_text.CLOSEANGLEBRACKET)).on(')', makeState(_text.CLOSEPAREN)).on('&', makeState(_text.AMPERSAND)).on([',', ';', '!', '\"', '\\''], makeState(_text.PUNCTUATION));\n\n// Whitespace jumps\n// Tokens of only non-newline whitespace are arbitrarily long\nS_START.on('\\n', makeState(_text.NL)).on(WHITESPACE, S_WS);\n\n// If any whitespace except newline, more whitespace!\nS_WS.on(WHITESPACE, S_WS);\n\n// Generates states for top-level domains\n// Note that this is most accurate when tlds are in alphabetical order\nfor (var i = 0; i < tlds.length; i++) {\n\tvar newStates = (0, _state.stateify)(tlds[i], S_START, _text.TLD, _text.DOMAIN);\n\tdomainStates.push.apply(domainStates, newStates);\n}\n\n// Collect the states generated by different protocls\nvar partialProtocolFileStates = (0, _state.stateify)('file', S_START, _text.DOMAIN, _text.DOMAIN);\nvar partialProtocolFtpStates = (0, _state.stateify)('ftp', S_START, _text.DOMAIN, _text.DOMAIN);\nvar partialProtocolHttpStates = (0, _state.stateify)('http', S_START, _text.DOMAIN, _text.DOMAIN);\nvar partialProtocolMailtoStates = (0, _state.stateify)('mailto', S_START, _text.DOMAIN, _text.DOMAIN);\n\n// Add the states to the array of DOMAINeric states\ndomainStates.push.apply(domainStates, partialProtocolFileStates);\ndomainStates.push.apply(domainStates, partialProtocolFtpStates);\ndomainStates.push.apply(domainStates, partialProtocolHttpStates);\ndomainStates.push.apply(domainStates, partialProtocolMailtoStates);\n\n// Protocol states\nvar S_PROTOCOL_FILE = partialProtocolFileStates.pop();\nvar S_PROTOCOL_FTP = partialProtocolFtpStates.pop();\nvar S_PROTOCOL_HTTP = partialProtocolHttpStates.pop();\nvar S_MAILTO = partialProtocolMailtoStates.pop();\nvar S_PROTOCOL_SECURE = makeState(_text.DOMAIN);\nvar S_FULL_PROTOCOL = makeState(_text.PROTOCOL); // Full protocol ends with COLON\nvar S_FULL_MAILTO = makeState(_text.MAILTO); // Mailto ends with COLON\n\n// Secure protocols (end with 's')\nS_PROTOCOL_FTP.on('s', S_PROTOCOL_SECURE).on(':', S_FULL_PROTOCOL);\n\nS_PROTOCOL_HTTP.on('s', S_PROTOCOL_SECURE).on(':', S_FULL_PROTOCOL);\n\ndomainStates.push(S_PROTOCOL_SECURE);\n\n// Become protocol tokens after a COLON\nS_PROTOCOL_FILE.on(':', S_FULL_PROTOCOL);\nS_PROTOCOL_SECURE.on(':', S_FULL_PROTOCOL);\nS_MAILTO.on(':', S_FULL_MAILTO);\n\n// Localhost\nvar partialLocalhostStates = (0, _state.stateify)('localhost', S_START, _text.LOCALHOST, _text.DOMAIN);\ndomainStates.push.apply(domainStates, partialLocalhostStates);\n\n// Everything else\n// DOMAINs make more DOMAINs\n// Number and character transitions\nS_START.on(NUMBERS, S_NUM);\nS_NUM.on('-', S_DOMAIN_HYPHEN).on(NUMBERS, S_NUM).on(ALPHANUM, S_DOMAIN); // number becomes DOMAIN\n\nS_DOMAIN.on('-', S_DOMAIN_HYPHEN).on(ALPHANUM, S_DOMAIN);\n\n// All the generated states should have a jump to DOMAIN\nfor (var _i = 0; _i < domainStates.length; _i++) {\n\tdomainStates[_i].on('-', S_DOMAIN_HYPHEN).on(ALPHANUM, S_DOMAIN);\n}\n\nS_DOMAIN_HYPHEN.on('-', S_DOMAIN_HYPHEN).on(NUMBERS, S_DOMAIN).on(ALPHANUM, S_DOMAIN);\n\n// Set default transition\nS_START.defaultTransition = makeState(_text.SYM);\n\n/**\n\tGiven a string, returns an array of TOKEN instances representing the\n\tcomposition of that string.\n\n\t@method run\n\t@param {String} str Input string to scan\n\t@return {Array} Array of TOKEN instances\n*/\nvar run = function run(str) {\n\n\t// The state machine only looks at lowercase strings.\n\t// This selective `toLowerCase` is used because lowercasing the entire\n\t// string causes the length and character position to vary in some in some\n\t// non-English strings. This happens only on V8-based runtimes.\n\tvar lowerStr = str.replace(/[A-Z]/g, function (c) {\n\t\treturn c.toLowerCase();\n\t});\n\tvar len = str.length;\n\tvar tokens = []; // return value\n\n\tvar cursor = 0;\n\n\t// Tokenize the string\n\twhile (cursor < len) {\n\t\tvar state = S_START;\n\t\tvar nextState = null;\n\t\tvar tokenLength = 0;\n\t\tvar latestAccepting = null;\n\t\tvar sinceAccepts = -1;\n\n\t\twhile (cursor < len && (nextState = state.next(lowerStr[cursor]))) {\n\t\t\tstate = nextState;\n\n\t\t\t// Keep track of the latest accepting state\n\t\t\tif (state.accepts()) {\n\t\t\t\tsinceAccepts = 0;\n\t\t\t\tlatestAccepting = state;\n\t\t\t} else if (sinceAccepts >= 0) {\n\t\t\t\tsinceAccepts++;\n\t\t\t}\n\n\t\t\ttokenLength++;\n\t\t\tcursor++;\n\t\t}\n\n\t\tif (sinceAccepts < 0) {\n\t\t\tcontinue;\n\t\t} // Should never happen\n\n\t\t// Roll back to the latest accepting state\n\t\tcursor -= sinceAccepts;\n\t\ttokenLength -= sinceAccepts;\n\n\t\t// Get the class for the new token\n\t\tvar TOKEN = latestAccepting.emit(); // Current token class\n\n\t\t// No more jumps, just make a new token\n\t\ttokens.push(new TOKEN(str.substr(cursor - tokenLength, tokenLength)));\n\t}\n\n\treturn tokens;\n};\n\nvar start = S_START;\nexports.State = _state.CharacterState;\nexports.TOKENS = TOKENS;\nexports.run = run;\nexports.start = start;","'use strict';\n\nexports.__esModule = true;\nexports.URL = exports.TEXT = exports.NL = exports.EMAIL = exports.MAILTOEMAIL = exports.Base = undefined;\n\nvar _createTokenClass = require('./create-token-class');\n\nvar _class = require('../../utils/class');\n\nvar _text = require('./text');\n\n/******************************************************************************\n\tMulti-Tokens\n\tTokens composed of arrays of TextTokens\n******************************************************************************/\n\n// Is the given token a valid domain token?\n// Should nums be included here?\nfunction isDomainToken(token) {\n\treturn token instanceof _text.DOMAIN || token instanceof _text.TLD;\n}\n\n/**\n\tAbstract class used for manufacturing tokens of text tokens. That is rather\n\tthan the value for a token being a small string of text, it's value an array\n\tof text tokens.\n\n\tUsed for grouping together URLs, emails, hashtags, and other potential\n\tcreations.\n\n\t@class MultiToken\n\t@abstract\n*/\nvar MultiToken = (0, _createTokenClass.createTokenClass)();\n\nMultiToken.prototype = {\n\t/**\n \tString representing the type for this token\n \t@property type\n \t@default 'TOKEN'\n */\n\ttype: 'token',\n\n\t/**\n \tIs this multitoken a link?\n \t@property isLink\n \t@default false\n */\n\tisLink: false,\n\n\t/**\n \tReturn the string this token represents.\n \t@method toString\n \t@return {String}\n */\n\ttoString: function toString() {\n\t\tvar result = [];\n\t\tfor (var i = 0; i < this.v.length; i++) {\n\t\t\tresult.push(this.v[i].toString());\n\t\t}\n\t\treturn result.join('');\n\t},\n\n\n\t/**\n \tWhat should the value for this token be in the `href` HTML attribute?\n \tReturns the `.toString` value by default.\n \t\t@method toHref\n \t@return {String}\n */\n\ttoHref: function toHref() {\n\t\treturn this.toString();\n\t},\n\n\n\t/**\n \tReturns a hash of relevant values for this token, which includes keys\n \t* type - Kind of token ('url', 'email', etc.)\n \t* value - Original text\n \t* href - The value that should be added to the anchor tag's href\n \t\tattribute\n \t\t@method toObject\n \t@param {String} [protocol] `'http'` by default\n \t@return {Object}\n */\n\ttoObject: function toObject() {\n\t\tvar protocol = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'http';\n\n\t\treturn {\n\t\t\ttype: this.type,\n\t\t\tvalue: this.toString(),\n\t\t\thref: this.toHref(protocol)\n\t\t};\n\t}\n};\n\n/**\n\tRepresents an arbitrarily mailto email address with the prefix included\n\t@class MAILTO\n\t@extends MultiToken\n*/\nvar MAILTOEMAIL = (0, _class.inherits)(MultiToken, (0, _createTokenClass.createTokenClass)(), {\n\ttype: 'email',\n\tisLink: true\n});\n\n/**\n\tRepresents a list of tokens making up a valid email address\n\t@class EMAIL\n\t@extends MultiToken\n*/\nvar EMAIL = (0, _class.inherits)(MultiToken, (0, _createTokenClass.createTokenClass)(), {\n\ttype: 'email',\n\tisLink: true,\n\ttoHref: function toHref() {\n\t\treturn 'mailto:' + this.toString();\n\t}\n});\n\n/**\n\tRepresents some plain text\n\t@class TEXT\n\t@extends MultiToken\n*/\nvar TEXT = (0, _class.inherits)(MultiToken, (0, _createTokenClass.createTokenClass)(), { type: 'text' });\n\n/**\n\tMulti-linebreak token - represents a line break\n\t@class NL\n\t@extends MultiToken\n*/\nvar NL = (0, _class.inherits)(MultiToken, (0, _createTokenClass.createTokenClass)(), { type: 'nl' });\n\n/**\n\tRepresents a list of tokens making up a valid URL\n\t@class URL\n\t@extends MultiToken\n*/\nvar URL = (0, _class.inherits)(MultiToken, (0, _createTokenClass.createTokenClass)(), {\n\ttype: 'url',\n\tisLink: true,\n\n\t/**\n \tLowercases relevant parts of the domain and adds the protocol if\n \trequired. Note that this will not escape unsafe HTML characters in the\n \tURL.\n \t\t@method href\n \t@param {String} protocol\n \t@return {String}\n */\n\ttoHref: function toHref() {\n\t\tvar protocol = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'http';\n\n\t\tvar hasProtocol = false;\n\t\tvar hasSlashSlash = false;\n\t\tvar tokens = this.v;\n\t\tvar result = [];\n\t\tvar i = 0;\n\n\t\t// Make the first part of the domain lowercase\n\t\t// Lowercase protocol\n\t\twhile (tokens[i] instanceof _text.PROTOCOL) {\n\t\t\thasProtocol = true;\n\t\t\tresult.push(tokens[i].toString().toLowerCase());\n\t\t\ti++;\n\t\t}\n\n\t\t// Skip slash-slash\n\t\twhile (tokens[i] instanceof _text.SLASH) {\n\t\t\thasSlashSlash = true;\n\t\t\tresult.push(tokens[i].toString());\n\t\t\ti++;\n\t\t}\n\n\t\t// Lowercase all other characters in the domain\n\t\twhile (isDomainToken(tokens[i])) {\n\t\t\tresult.push(tokens[i].toString().toLowerCase());\n\t\t\ti++;\n\t\t}\n\n\t\t// Leave all other characters as they were written\n\t\tfor (; i < tokens.length; i++) {\n\t\t\tresult.push(tokens[i].toString());\n\t\t}\n\n\t\tresult = result.join('');\n\n\t\tif (!(hasProtocol || hasSlashSlash)) {\n\t\t\tresult = protocol + '://' + result;\n\t\t}\n\n\t\treturn result;\n\t},\n\thasProtocol: function hasProtocol() {\n\t\treturn this.v[0] instanceof _text.PROTOCOL;\n\t}\n});\n\nexports.Base = MultiToken;\nexports.MAILTOEMAIL = MAILTOEMAIL;\nexports.EMAIL = EMAIL;\nexports.NL = NL;\nexports.TEXT = TEXT;\nexports.URL = URL;","'use strict';\n\nexports.__esModule = true;\nexports.start = exports.run = exports.TOKENS = exports.State = undefined;\n\nvar _state = require('./state');\n\nvar _multi = require('./tokens/multi');\n\nvar MULTI_TOKENS = _interopRequireWildcard(_multi);\n\nvar _text = require('./tokens/text');\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\n/**\n\tNot exactly parser, more like the second-stage scanner (although we can\n\ttheoretically hotswap the code here with a real parser in the future... but\n\tfor a little URL-finding utility abstract syntax trees may be a little\n\toverkill).\n\n\tURL format: http://en.wikipedia.org/wiki/URI_scheme\n\tEmail format: http://en.wikipedia.org/wiki/Email_address (links to RFC in\n\treference)\n\n\t@module linkify\n\t@submodule parser\n\t@main parser\n*/\n\nvar makeState = function makeState(tokenClass) {\n\treturn new _state.TokenState(tokenClass);\n};\n\n// The universal starting state.\nvar S_START = makeState();\n\n// Intermediate states for URLs. Note that domains that begin with a protocol\n// are treated slighly differently from those that don't.\nvar S_PROTOCOL = makeState(); // e.g., 'http:'\nvar S_MAILTO = makeState(); // 'mailto:'\nvar S_PROTOCOL_SLASH = makeState(); // e.g., '/', 'http:/''\nvar S_PROTOCOL_SLASH_SLASH = makeState(); // e.g., '//', 'http://'\nvar S_DOMAIN = makeState(); // parsed string ends with a potential domain name (A)\nvar S_DOMAIN_DOT = makeState(); // (A) domain followed by DOT\nvar S_TLD = makeState(_multi.URL); // (A) Simplest possible URL with no query string\nvar S_TLD_COLON = makeState(); // (A) URL followed by colon (potential port number here)\nvar S_TLD_PORT = makeState(_multi.URL); // TLD followed by a port number\nvar S_URL = makeState(_multi.URL); // Long URL with optional port and maybe query string\nvar S_URL_NON_ACCEPTING = makeState(); // URL followed by some symbols (will not be part of the final URL)\nvar S_URL_OPENBRACE = makeState(); // URL followed by {\nvar S_URL_OPENBRACKET = makeState(); // URL followed by [\nvar S_URL_OPENANGLEBRACKET = makeState(); // URL followed by <\nvar S_URL_OPENPAREN = makeState(); // URL followed by (\nvar S_URL_OPENBRACE_Q = makeState(_multi.URL); // URL followed by { and some symbols that the URL can end it\nvar S_URL_OPENBRACKET_Q = makeState(_multi.URL); // URL followed by [ and some symbols that the URL can end it\nvar S_URL_OPENANGLEBRACKET_Q = makeState(_multi.URL); // URL followed by < and some symbols that the URL can end it\nvar S_URL_OPENPAREN_Q = makeState(_multi.URL); // URL followed by ( and some symbols that the URL can end it\nvar S_URL_OPENBRACE_SYMS = makeState(); // S_URL_OPENBRACE_Q followed by some symbols it cannot end it\nvar S_URL_OPENBRACKET_SYMS = makeState(); // S_URL_OPENBRACKET_Q followed by some symbols it cannot end it\nvar S_URL_OPENANGLEBRACKET_SYMS = makeState(); // S_URL_OPENANGLEBRACKET_Q followed by some symbols it cannot end it\nvar S_URL_OPENPAREN_SYMS = makeState(); // S_URL_OPENPAREN_Q followed by some symbols it cannot end it\nvar S_EMAIL_DOMAIN = makeState(); // parsed string starts with local email info + @ with a potential domain name (C)\nvar S_EMAIL_DOMAIN_DOT = makeState(); // (C) domain followed by DOT\nvar S_EMAIL = makeState(_multi.EMAIL); // (C) Possible email address (could have more tlds)\nvar S_EMAIL_COLON = makeState(); // (C) URL followed by colon (potential port number here)\nvar S_EMAIL_PORT = makeState(_multi.EMAIL); // (C) Email address with a port\nvar S_MAILTO_EMAIL = makeState(_multi.MAILTOEMAIL); // Email that begins with the mailto prefix (D)\nvar S_MAILTO_EMAIL_NON_ACCEPTING = makeState(); // (D) Followed by some non-query string chars\nvar S_LOCALPART = makeState(); // Local part of the email address\nvar S_LOCALPART_AT = makeState(); // Local part of the email address plus @\nvar S_LOCALPART_DOT = makeState(); // Local part of the email address plus '.' (localpart cannot end in .)\nvar S_NL = makeState(_multi.NL); // single new line\n\n// Make path from start to protocol (with '//')\nS_START.on(_text.NL, S_NL).on(_text.PROTOCOL, S_PROTOCOL).on(_text.MAILTO, S_MAILTO).on(_text.SLASH, S_PROTOCOL_SLASH);\n\nS_PROTOCOL.on(_text.SLASH, S_PROTOCOL_SLASH);\nS_PROTOCOL_SLASH.on(_text.SLASH, S_PROTOCOL_SLASH_SLASH);\n\n// The very first potential domain name\nS_START.on(_text.TLD, S_DOMAIN).on(_text.DOMAIN, S_DOMAIN).on(_text.LOCALHOST, S_TLD).on(_text.NUM, S_DOMAIN);\n\n// Force URL for protocol followed by anything sane\nS_PROTOCOL_SLASH_SLASH.on(_text.TLD, S_URL).on(_text.DOMAIN, S_URL).on(_text.NUM, S_URL).on(_text.LOCALHOST, S_URL);\n\n// Account for dots and hyphens\n// hyphens are usually parts of domain names\nS_DOMAIN.on(_text.DOT, S_DOMAIN_DOT);\nS_EMAIL_DOMAIN.on(_text.DOT, S_EMAIL_DOMAIN_DOT);\n\n// Hyphen can jump back to a domain name\n\n// After the first domain and a dot, we can find either a URL or another domain\nS_DOMAIN_DOT.on(_text.TLD, S_TLD).on(_text.DOMAIN, S_DOMAIN).on(_text.NUM, S_DOMAIN).on(_text.LOCALHOST, S_DOMAIN);\n\nS_EMAIL_DOMAIN_DOT.on(_text.TLD, S_EMAIL).on(_text.DOMAIN, S_EMAIL_DOMAIN).on(_text.NUM, S_EMAIL_DOMAIN).on(_text.LOCALHOST, S_EMAIL_DOMAIN);\n\n// S_TLD accepts! But the URL could be longer, try to find a match greedily\n// The `run` function should be able to \"rollback\" to the accepting state\nS_TLD.on(_text.DOT, S_DOMAIN_DOT);\nS_EMAIL.on(_text.DOT, S_EMAIL_DOMAIN_DOT);\n\n// Become real URLs after `SLASH` or `COLON NUM SLASH`\n// Here PSS and non-PSS converge\nS_TLD.on(_text.COLON, S_TLD_COLON).on(_text.SLASH, S_URL);\nS_TLD_COLON.on(_text.NUM, S_TLD_PORT);\nS_TLD_PORT.on(_text.SLASH, S_URL);\nS_EMAIL.on(_text.COLON, S_EMAIL_COLON);\nS_EMAIL_COLON.on(_text.NUM, S_EMAIL_PORT);\n\n// Types of characters the URL can definitely end in\nvar qsAccepting = [_text.DOMAIN, _text.AT, _text.LOCALHOST, _text.NUM, _text.PLUS, _text.POUND, _text.PROTOCOL, _text.SLASH, _text.TLD, _text.UNDERSCORE, _text.SYM, _text.AMPERSAND];\n\n// Types of tokens that can follow a URL and be part of the query string\n// but cannot be the very last characters\n// Characters that cannot appear in the URL at all should be excluded\nvar qsNonAccepting = [_text.COLON, _text.DOT, _text.QUERY, _text.PUNCTUATION, _text.CLOSEBRACE, _text.CLOSEBRACKET, _text.CLOSEANGLEBRACKET, _text.CLOSEPAREN, _text.OPENBRACE, _text.OPENBRACKET, _text.OPENANGLEBRACKET, _text.OPENPAREN];\n\n// These states are responsible primarily for determining whether or not to\n// include the final round bracket.\n\n// URL, followed by an opening bracket\nS_URL.on(_text.OPENBRACE, S_URL_OPENBRACE).on(_text.OPENBRACKET, S_URL_OPENBRACKET).on(_text.OPENANGLEBRACKET, S_URL_OPENANGLEBRACKET).on(_text.OPENPAREN, S_URL_OPENPAREN);\n\n// URL with extra symbols at the end, followed by an opening bracket\nS_URL_NON_ACCEPTING.on(_text.OPENBRACE, S_URL_OPENBRACE).on(_text.OPENBRACKET, S_URL_OPENBRACKET).on(_text.OPENANGLEBRACKET, S_URL_OPENANGLEBRACKET).on(_text.OPENPAREN, S_URL_OPENPAREN);\n\n// Closing bracket component. This character WILL be included in the URL\nS_URL_OPENBRACE.on(_text.CLOSEBRACE, S_URL);\nS_URL_OPENBRACKET.on(_text.CLOSEBRACKET, S_URL);\nS_URL_OPENANGLEBRACKET.on(_text.CLOSEANGLEBRACKET, S_URL);\nS_URL_OPENPAREN.on(_text.CLOSEPAREN, S_URL);\nS_URL_OPENBRACE_Q.on(_text.CLOSEBRACE, S_URL);\nS_URL_OPENBRACKET_Q.on(_text.CLOSEBRACKET, S_URL);\nS_URL_OPENANGLEBRACKET_Q.on(_text.CLOSEANGLEBRACKET, S_URL);\nS_URL_OPENPAREN_Q.on(_text.CLOSEPAREN, S_URL);\nS_URL_OPENBRACE_SYMS.on(_text.CLOSEBRACE, S_URL);\nS_URL_OPENBRACKET_SYMS.on(_text.CLOSEBRACKET, S_URL);\nS_URL_OPENANGLEBRACKET_SYMS.on(_text.CLOSEANGLEBRACKET, S_URL);\nS_URL_OPENPAREN_SYMS.on(_text.CLOSEPAREN, S_URL);\n\n// URL that beings with an opening bracket, followed by a symbols.\n// Note that the final state can still be `S_URL_OPENBRACE_Q` (if the URL only\n// has a single opening bracket for some reason).\nS_URL_OPENBRACE.on(qsAccepting, S_URL_OPENBRACE_Q);\nS_URL_OPENBRACKET.on(qsAccepting, S_URL_OPENBRACKET_Q);\nS_URL_OPENANGLEBRACKET.on(qsAccepting, S_URL_OPENANGLEBRACKET_Q);\nS_URL_OPENPAREN.on(qsAccepting, S_URL_OPENPAREN_Q);\nS_URL_OPENBRACE.on(qsNonAccepting, S_URL_OPENBRACE_SYMS);\nS_URL_OPENBRACKET.on(qsNonAccepting, S_URL_OPENBRACKET_SYMS);\nS_URL_OPENANGLEBRACKET.on(qsNonAccepting, S_URL_OPENANGLEBRACKET_SYMS);\nS_URL_OPENPAREN.on(qsNonAccepting, S_URL_OPENPAREN_SYMS);\n\n// URL that begins with an opening bracket, followed by some symbols\nS_URL_OPENBRACE_Q.on(qsAccepting, S_URL_OPENBRACE_Q);\nS_URL_OPENBRACKET_Q.on(qsAccepting, S_URL_OPENBRACKET_Q);\nS_URL_OPENANGLEBRACKET_Q.on(qsAccepting, S_URL_OPENANGLEBRACKET_Q);\nS_URL_OPENPAREN_Q.on(qsAccepting, S_URL_OPENPAREN_Q);\nS_URL_OPENBRACE_Q.on(qsNonAccepting, S_URL_OPENBRACE_Q);\nS_URL_OPENBRACKET_Q.on(qsNonAccepting, S_URL_OPENBRACKET_Q);\nS_URL_OPENANGLEBRACKET_Q.on(qsNonAccepting, S_URL_OPENANGLEBRACKET_Q);\nS_URL_OPENPAREN_Q.on(qsNonAccepting, S_URL_OPENPAREN_Q);\n\nS_URL_OPENBRACE_SYMS.on(qsAccepting, S_URL_OPENBRACE_Q);\nS_URL_OPENBRACKET_SYMS.on(qsAccepting, S_URL_OPENBRACKET_Q);\nS_URL_OPENANGLEBRACKET_SYMS.on(qsAccepting, S_URL_OPENANGLEBRACKET_Q);\nS_URL_OPENPAREN_SYMS.on(qsAccepting, S_URL_OPENPAREN_Q);\nS_URL_OPENBRACE_SYMS.on(qsNonAccepting, S_URL_OPENBRACE_SYMS);\nS_URL_OPENBRACKET_SYMS.on(qsNonAccepting, S_URL_OPENBRACKET_SYMS);\nS_URL_OPENANGLEBRACKET_SYMS.on(qsNonAccepting, S_URL_OPENANGLEBRACKET_SYMS);\nS_URL_OPENPAREN_SYMS.on(qsNonAccepting, S_URL_OPENPAREN_SYMS);\n\n// Account for the query string\nS_URL.on(qsAccepting, S_URL);\nS_URL_NON_ACCEPTING.on(qsAccepting, S_URL);\n\nS_URL.on(qsNonAccepting, S_URL_NON_ACCEPTING);\nS_URL_NON_ACCEPTING.on(qsNonAccepting, S_URL_NON_ACCEPTING);\n\n// Email address-specific state definitions\n// Note: We are not allowing '/' in email addresses since this would interfere\n// with real URLs\n\n// For addresses with the mailto prefix\n// 'mailto:' followed by anything sane is a valid email\nS_MAILTO.on(_text.TLD, S_MAILTO_EMAIL).on(_text.DOMAIN, S_MAILTO_EMAIL).on(_text.NUM, S_MAILTO_EMAIL).on(_text.LOCALHOST, S_MAILTO_EMAIL);\n\n// Greedily get more potential valid email values\nS_MAILTO_EMAIL.on(qsAccepting, S_MAILTO_EMAIL).on(qsNonAccepting, S_MAILTO_EMAIL_NON_ACCEPTING);\nS_MAILTO_EMAIL_NON_ACCEPTING.on(qsAccepting, S_MAILTO_EMAIL).on(qsNonAccepting, S_MAILTO_EMAIL_NON_ACCEPTING);\n\n// For addresses without the mailto prefix\n// Tokens allowed in the localpart of the email\nvar localpartAccepting = [_text.DOMAIN, _text.NUM, _text.PLUS, _text.POUND, _text.QUERY, _text.UNDERSCORE, _text.SYM, _text.AMPERSAND, _text.TLD];\n\n// Some of the tokens in `localpartAccepting` are already accounted for here and\n// will not be overwritten (don't worry)\nS_DOMAIN.on(localpartAccepting, S_LOCALPART).on(_text.AT, S_LOCALPART_AT);\nS_TLD.on(localpartAccepting, S_LOCALPART).on(_text.AT, S_LOCALPART_AT);\nS_DOMAIN_DOT.on(localpartAccepting, S_LOCALPART);\n\n// Okay we're on a localpart. Now what?\n// TODO: IP addresses and what if the email starts with numbers?\nS_LOCALPART.on(localpartAccepting, S_LOCALPART).on(_text.AT, S_LOCALPART_AT) // close to an email address now\n.on(_text.DOT, S_LOCALPART_DOT);\nS_LOCALPART_DOT.on(localpartAccepting, S_LOCALPART);\nS_LOCALPART_AT.on(_text.TLD, S_EMAIL_DOMAIN).on(_text.DOMAIN, S_EMAIL_DOMAIN).on(_text.LOCALHOST, S_EMAIL);\n// States following `@` defined above\n\nvar run = function run(tokens) {\n\tvar len = tokens.length;\n\tvar cursor = 0;\n\tvar multis = [];\n\tvar textTokens = [];\n\n\twhile (cursor < len) {\n\t\tvar state = S_START;\n\t\tvar secondState = null;\n\t\tvar nextState = null;\n\t\tvar multiLength = 0;\n\t\tvar latestAccepting = null;\n\t\tvar sinceAccepts = -1;\n\n\t\twhile (cursor < len && !(secondState = state.next(tokens[cursor]))) {\n\t\t\t// Starting tokens with nowhere to jump to.\n\t\t\t// Consider these to be just plain text\n\t\t\ttextTokens.push(tokens[cursor++]);\n\t\t}\n\n\t\twhile (cursor < len && (nextState = secondState || state.next(tokens[cursor]))) {\n\n\t\t\t// Get the next state\n\t\t\tsecondState = null;\n\t\t\tstate = nextState;\n\n\t\t\t// Keep track of the latest accepting state\n\t\t\tif (state.accepts()) {\n\t\t\t\tsinceAccepts = 0;\n\t\t\t\tlatestAccepting = state;\n\t\t\t} else if (sinceAccepts >= 0) {\n\t\t\t\tsinceAccepts++;\n\t\t\t}\n\n\t\t\tcursor++;\n\t\t\tmultiLength++;\n\t\t}\n\n\t\tif (sinceAccepts < 0) {\n\n\t\t\t// No accepting state was found, part of a regular text token\n\t\t\t// Add all the tokens we looked at to the text tokens array\n\t\t\tfor (var i = cursor - multiLength; i < cursor; i++) {\n\t\t\t\ttextTokens.push(tokens[i]);\n\t\t\t}\n\t\t} else {\n\n\t\t\t// Accepting state!\n\n\t\t\t// First close off the textTokens (if available)\n\t\t\tif (textTokens.length > 0) {\n\t\t\t\tmultis.push(new _multi.TEXT(textTokens));\n\t\t\t\ttextTokens = [];\n\t\t\t}\n\n\t\t\t// Roll back to the latest accepting state\n\t\t\tcursor -= sinceAccepts;\n\t\t\tmultiLength -= sinceAccepts;\n\n\t\t\t// Create a new multitoken\n\t\t\tvar MULTI = latestAccepting.emit();\n\t\t\tmultis.push(new MULTI(tokens.slice(cursor - multiLength, cursor)));\n\t\t}\n\t}\n\n\t// Finally close off the textTokens (if available)\n\tif (textTokens.length > 0) {\n\t\tmultis.push(new _multi.TEXT(textTokens));\n\t}\n\n\treturn multis;\n};\n\nexports.State = _state.TokenState;\nexports.TOKENS = MULTI_TOKENS;\nexports.run = run;\nexports.start = S_START;","'use strict';\n\nexports.__esModule = true;\nexports.tokenize = exports.test = exports.scanner = exports.parser = exports.options = exports.inherits = exports.find = undefined;\n\nvar _class = require('./linkify/utils/class');\n\nvar _options = require('./linkify/utils/options');\n\nvar options = _interopRequireWildcard(_options);\n\nvar _scanner = require('./linkify/core/scanner');\n\nvar scanner = _interopRequireWildcard(_scanner);\n\nvar _parser = require('./linkify/core/parser');\n\nvar parser = _interopRequireWildcard(_parser);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nif (!Array.isArray) {\n\tArray.isArray = function (arg) {\n\t\treturn Object.prototype.toString.call(arg) === '[object Array]';\n\t};\n}\n\n/**\n\tConverts a string into tokens that represent linkable and non-linkable bits\n\t@method tokenize\n\t@param {String} str\n\t@return {Array} tokens\n*/\nvar tokenize = function tokenize(str) {\n\treturn parser.run(scanner.run(str));\n};\n\n/**\n\tReturns a list of linkable items in the given string.\n*/\nvar find = function find(str) {\n\tvar type = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n\n\tvar tokens = tokenize(str);\n\tvar filtered = [];\n\n\tfor (var i = 0; i < tokens.length; i++) {\n\t\tvar token = tokens[i];\n\t\tif (token.isLink && (!type || token.type === type)) {\n\t\t\tfiltered.push(token.toObject());\n\t\t}\n\t}\n\n\treturn filtered;\n};\n\n/**\n\tIs the given string valid linkable text of some sort\n\tNote that this does not trim the text for you.\n\n\tOptionally pass in a second `type` param, which is the type of link to test\n\tfor.\n\n\tFor example,\n\n\t\ttest(str, 'email');\n\n\tWill return `true` if str is a valid email.\n*/\nvar test = function test(str) {\n\tvar type = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n\n\tvar tokens = tokenize(str);\n\treturn tokens.length === 1 && tokens[0].isLink && (!type || tokens[0].type === type);\n};\n\n// Scanner and parser provide states and tokens for the lexicographic stage\n// (will be used to add additional link types)\nexports.find = find;\nexports.inherits = _class.inherits;\nexports.options = options;\nexports.parser = parser;\nexports.scanner = scanner;\nexports.test = test;\nexports.tokenize = tokenize;","'use strict';\n\nexports.__esModule = true;\n\nvar _linkify = require('./linkify');\n\nvar linkify = _interopRequireWildcard(_linkify);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nvar tokenize = linkify.tokenize,\n options = linkify.options; /**\n \tConvert strings of text into linkable HTML text\n */\n\nvar Options = options.Options;\n\n\nfunction escapeText(text) {\n\treturn text.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;');\n}\n\nfunction escapeAttr(href) {\n\treturn href.replace(/\"/g, '&quot;');\n}\n\nfunction attributesToString(attributes) {\n\tif (!attributes) {\n\t\treturn '';\n\t}\n\tvar result = [];\n\n\tfor (var attr in attributes) {\n\t\tvar val = attributes[attr] + '';\n\t\tresult.push(attr + '=\"' + escapeAttr(val) + '\"');\n\t}\n\treturn result.join(' ');\n}\n\nfunction linkifyStr(str) {\n\tvar opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n\topts = new Options(opts);\n\n\tvar tokens = tokenize(str);\n\tvar result = [];\n\n\tfor (var i = 0; i < tokens.length; i++) {\n\t\tvar token = tokens[i];\n\n\t\tif (token.type === 'nl' && opts.nl2br) {\n\t\t\tresult.push('<br>\\n');\n\t\t\tcontinue;\n\t\t} else if (!token.isLink || !opts.check(token)) {\n\t\t\tresult.push(escapeText(token.toString()));\n\t\t\tcontinue;\n\t\t}\n\n\t\tvar _opts$resolve = opts.resolve(token),\n\t\t formatted = _opts$resolve.formatted,\n\t\t formattedHref = _opts$resolve.formattedHref,\n\t\t tagName = _opts$resolve.tagName,\n\t\t className = _opts$resolve.className,\n\t\t target = _opts$resolve.target,\n\t\t attributes = _opts$resolve.attributes;\n\n\t\tvar link = '<' + tagName + ' href=\"' + escapeAttr(formattedHref) + '\"';\n\n\t\tif (className) {\n\t\t\tlink += ' class=\"' + escapeAttr(className) + '\"';\n\t\t}\n\n\t\tif (target) {\n\t\t\tlink += ' target=\"' + escapeAttr(target) + '\"';\n\t\t}\n\n\t\tif (attributes) {\n\t\t\tlink += ' ' + attributesToString(attributes);\n\t\t}\n\n\t\tlink += '>' + escapeText(formatted) + '</' + tagName + '>';\n\t\tresult.push(link);\n\t}\n\n\treturn result.join('');\n}\n\nif (!String.prototype.linkify) {\n\ttry {\n\t\tObject.defineProperty(String.prototype, 'linkify', {\n\t\t\tset: function set() {},\n\t\t\tget: function get() {\n\t\t\t\treturn function linkify(opts) {\n\t\t\t\t\treturn linkifyStr(this, opts);\n\t\t\t\t};\n\t\t\t}\n\t\t});\n\t} catch (e) {\n\t\t// IE 8 doesn't like Object.defineProperty on non-DOM objects\n\t\tif (!String.prototype.linkify) {\n\t\t\tString.prototype.linkify = function (opts) {\n\t\t\t\treturn linkifyStr(this, opts);\n\t\t\t};\n\t\t}\n\t}\n}\n\nexports.default = linkifyStr;","module.exports = require('./lib/linkify-string').default;\n","import { ObjectHash } from 'backbone';\nimport linkifyStr from 'linkifyjs/string';\nimport * as _ from 'underscore';\n\nconst BaseLinkifyOptions = {\n className: 'info-link',\n defaultProtocol: 'https'\n};\n\nexport const LinkifyHelper = {\n /**\n * The underlying linkifyStr interface escapes text within the input string\n */\n linkifyText(text: string, options?: ObjectHash): string {\n if (!text) return;\n const ops = options ? _.extend({}, BaseLinkifyOptions, options) : BaseLinkifyOptions;\n return linkifyStr(text, ops);\n }\n};\n"],"x_google_ignoreList":[11,13,14,15,16,17,18,19,20,21,22,23],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{y as e}from"./D8clSITt.chunk.js";import{t}from"./CBDo4oAU.chunk.js";import{t as n}from"./CrBD6Z4s.chunk.js";import{c as r}from"./app-BGxmHvGl.js";var i={domainLibraries(e,t,r,i){return{url:n.urlBuilder(`/api/domain/v2/me/libraries`,{type:e,maxCategoryDepth:0}),key:`libraries:${e.sort().join(`:`)}`,formatData:e=>e.map(e=>e.data),success:t,error:r,always:i}},libraryRequestLibraries(){return{url:`{gateway}/v1/library-requests/libraries`,key:`libraries`}},librariesWithCategories(){return{url:n.urlBuilder(`/api/domain/v2/me/libraries`,{type:[`sharedLibrary`,`customLibrary`,`unpublishedCustomLibrary`],maxCategoryDepth:5}),key:`libraries:with:categories`,normalize:!1}},librariesWithOwnerLogos(e,t,i,a){return e.sort(),{url:n.urlBuilder(`/api/domain/v2/objects`,{query:r.LIBRARY_COLLECTION,id:e}),key:`libraries:owner:logo:${e.join(`,`)}`,success:t,error:i,always:a}},library(e,t,i,a){return{url:n.urlBuilder(`{gateway}/v1/objects/${e}`,{query:r.LIBRARY}),key:`library:${e}`,success:t,error:i,always:a}},exchange(e){return{url:n.urlBuilder(`{gateway}/v1/objects/${e}`,{query:`categorytree`}),key:`exchange`}},streamableLearning(){return{url:`{gateway}/v1/streamable-learning-library`,key:`streamable:learning`}},librarySubscribers(e,t){let r={};return t&&(r.cursor=t),{url:n.urlBuilder(`{gateway}/v1/library-requests/libraries/${e}/subscribers`,r),key:`library:subscribers:${e}:${t}`}},libraryOwner(e){return{url:`{gateway}/v1/library-requests/libraries/${e}/subscribers?ownerOnly=true`,key:`library:owner:${e}`,formatData:e=>t.first(e.data)}},updateSubscriberPermissions(t,n,r,i,a){return{url:`{gateway}/v1/libraries/${t}/library-request-permissions`,key:`update:subscriber:permissions:${t}:${n}`,type:e.PUT,data:{customerId:n,granted:r},invalidationKeys:[`library:owner:${t}`,`library:subscribers:${t}`],success:i,error:a}},removeSubscriber(t,n,r,i){return{url:`{gateway}/v1/objects/${t}/subscribedcustomers?memberId=${n}`,key:`revoke:subscription:${t}:${n}`,type:e.DELETE,invalidationKeys:[`library:subscribers:${t}`],success:r,error:i}},folder(e,t,n,r){return{url:`{gateway}/v1/objects/${e}?query=banner,libraries`,key:`library:folder:${e}`,success:t,error:n,always:r}},videoFolders(e){return{url:`{gateway}/v1/objects/${e}/categories?query=libraries`,key:`video:folders:${e}`}},folderParentTree(e,t,n,r){return{url:`/api/domain/v2/categories/${e}/parent-tree?includeAll=false`,key:`folder:parent:tree${e}`,success:t,error:n,always:r}},childFolders(e,t,n,r,i){let a=`{gateway}/v1/objects/${e}/categories?query={limit:100}thumbnail`,o=`child:folders:${e}`;return t&&(a+=`&cursor=${t}`,o+=`:${t}`),{url:a,key:o,formatData:e=>{let t=e.data.sort((e,t)=>e.name.toLowerCase().localeCompare(t.name.toLowerCase()));return{...e,data:t}},success:n,error:r,always:i}},addToLibrary(t,n){let r=[`folder`,`videos`,t.metadata.destinationCategoryId,n].filter(e=>!!e).join(`:`);return{url:`{gateway}/v1/library-requests`,key:`add:${t.objectId}:to:${t.destinationLibraryId}:${t.metadata.destinationCategoryId}`,type:e.POST,data:t,invalidationKeys:r}},libraries(){return{url:`{gateway}/v1/users/me/libraries`,key:`objects:libraries`}},libraryExport(t){return{url:`{gateway}/v1/libraries/export`,key:`library:export`,type:e.POST,data:t}},libraryExportV2(t){return{url:`{gateway}/v2/libraries/export`,key:`library:export:v2`,type:e.POST,data:t}}};export{i as t};
2
- //# sourceMappingURL=xEGWFFpD2.chunk.js.map
1
+ import{y as e}from"./D8clSITt.chunk.js";import{t}from"./CBDo4oAU.chunk.js";import{t as n}from"./CrBD6Z4s.chunk.js";import{c as r}from"./app-CgkYY4K0.js";var i={domainLibraries(e,t,r,i){return{url:n.urlBuilder(`/api/domain/v2/me/libraries`,{type:e,maxCategoryDepth:0}),key:`libraries:${e.sort().join(`:`)}`,formatData:e=>e.map(e=>e.data),success:t,error:r,always:i}},libraryRequestLibraries(){return{url:`{gateway}/v1/library-requests/libraries`,key:`libraries`}},librariesWithCategories(){return{url:n.urlBuilder(`/api/domain/v2/me/libraries`,{type:[`sharedLibrary`,`customLibrary`,`unpublishedCustomLibrary`],maxCategoryDepth:5}),key:`libraries:with:categories`,normalize:!1}},librariesWithOwnerLogos(e,t,i,a){return e.sort(),{url:n.urlBuilder(`/api/domain/v2/objects`,{query:r.LIBRARY_COLLECTION,id:e}),key:`libraries:owner:logo:${e.join(`,`)}`,success:t,error:i,always:a}},library(e,t,i,a){return{url:n.urlBuilder(`{gateway}/v1/objects/${e}`,{query:r.LIBRARY}),key:`library:${e}`,success:t,error:i,always:a}},exchange(e){return{url:n.urlBuilder(`{gateway}/v1/objects/${e}`,{query:`categorytree`}),key:`exchange`}},streamableLearning(){return{url:`{gateway}/v1/streamable-learning-library`,key:`streamable:learning`}},librarySubscribers(e,t){let r={};return t&&(r.cursor=t),{url:n.urlBuilder(`{gateway}/v1/library-requests/libraries/${e}/subscribers`,r),key:`library:subscribers:${e}:${t}`}},libraryOwner(e){return{url:`{gateway}/v1/library-requests/libraries/${e}/subscribers?ownerOnly=true`,key:`library:owner:${e}`,formatData:e=>t.first(e.data)}},updateSubscriberPermissions(t,n,r,i,a){return{url:`{gateway}/v1/libraries/${t}/library-request-permissions`,key:`update:subscriber:permissions:${t}:${n}`,type:e.PUT,data:{customerId:n,granted:r},invalidationKeys:[`library:owner:${t}`,`library:subscribers:${t}`],success:i,error:a}},removeSubscriber(t,n,r,i){return{url:`{gateway}/v1/objects/${t}/subscribedcustomers?memberId=${n}`,key:`revoke:subscription:${t}:${n}`,type:e.DELETE,invalidationKeys:[`library:subscribers:${t}`],success:r,error:i}},folder(e,t,n,r){return{url:`{gateway}/v1/objects/${e}?query=banner,libraries`,key:`library:folder:${e}`,success:t,error:n,always:r}},videoFolders(e){return{url:`{gateway}/v1/objects/${e}/categories?query=libraries`,key:`video:folders:${e}`}},folderParentTree(e,t,n,r){return{url:`/api/domain/v2/categories/${e}/parent-tree?includeAll=false`,key:`folder:parent:tree${e}`,success:t,error:n,always:r}},childFolders(e,t,n,r,i){let a=`{gateway}/v1/objects/${e}/categories?query={limit:100}thumbnail`,o=`child:folders:${e}`;return t&&(a+=`&cursor=${t}`,o+=`:${t}`),{url:a,key:o,formatData:e=>{let t=e.data.sort((e,t)=>e.name.toLowerCase().localeCompare(t.name.toLowerCase()));return{...e,data:t}},success:n,error:r,always:i}},addToLibrary(t,n){let r=[`folder`,`videos`,t.metadata.destinationCategoryId,n].filter(e=>!!e).join(`:`);return{url:`{gateway}/v1/library-requests`,key:`add:${t.objectId}:to:${t.destinationLibraryId}:${t.metadata.destinationCategoryId}`,type:e.POST,data:t,invalidationKeys:r}},libraries(){return{url:`{gateway}/v1/users/me/libraries`,key:`objects:libraries`}},libraryExport(t){return{url:`{gateway}/v1/libraries/export`,key:`library:export`,type:e.POST,data:t}},libraryExportV2(t){return{url:`{gateway}/v2/libraries/export`,key:`library:export:v2`,type:e.POST,data:t}}};export{i as t};
2
+ //# sourceMappingURL=DhtgaF-y2.chunk.js.map