{"version":3,"file":"static/chunks/pages/compliance/market-conduct/laws-regulations-9eb9c247711ef0ae.js","mappings":"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","sources":["webpack://_N_E/./pages/compliance/market-conduct/laws-regulations.js","webpack://_N_E/./src/shared/components/MembershipPageWrap/index.js","webpack://_N_E/./src/shared/hooks/useListSearch.js","webpack://_N_E/./utils/searchContent.js","webpack://_N_E/?7256"],"sourcesContent":["import React from 'react';\nimport { connect } from 'react-redux';\n\nimport ListPage from '@/src/shared/components/ListPage';\nimport withMembershipAccessWrap, {\n mapStateToProps,\n} from '@/src/shared/components/MembershipPageWrap';\nimport { COMPLIANCE_ACCESS } from '@/src/shared/constants';\nimport useListSearch from '@/src/shared/hooks/useListSearch';\n\nconst LawsAndRegulations = () => {\n const [loading, results] = useListSearch({\n pubCode: 836,\n yearsBack: 5,\n });\n\n return (\n Documents from the last 5 years

}\n results={results}\n loading={loading}\n />\n );\n};\n\nexport default connect(mapStateToProps)(\n withMembershipAccessWrap(LawsAndRegulations, COMPLIANCE_ACCESS.MARKET_CONDUCT)\n);\n","import { useAuth0 } from '@auth0/auth0-react';\nimport Router from 'next/router';\nimport React, { useEffect } from 'react';\nimport { useSelector } from 'react-redux';\n\nimport Error from '@/pages/_error';\nimport { checkAccess } from '@/src/shared/constants';\n\nimport LoadingPage from '../LoadingPage/LoadingPage';\n\nconst isBrowser = typeof window !== 'undefined';\n\nconst withMembershipAccessWrap = (PageComponent, memberLevels, ssr = false) => {\n return function PageComponentWithAccess(props) {\n const { loginWithRedirect, isLoading } = useAuth0();\n const { isLoggedIn, role } = useSelector(state => state.auth);\n const stateLoading = useSelector(state => state.auth.isLoading);\n const personId = useSelector(state => state.auth.userinfo.PersonID);\n\n useEffect(() => {\n if (!stateLoading && !isLoggedIn) {\n loginWithRedirect({\n appState: {\n returnTo: Router.pathname,\n },\n });\n }\n }, [isLoggedIn, stateLoading]);\n\n const hasAccess = checkAccess(memberLevels, role);\n const isAuthorized = personId && Array.isArray(role) && hasAccess;\n const errorCode = isLoggedIn && !hasAccess ? 401.4 : 401;\n\n if (!ssr || isBrowser) {\n if (isLoading || stateLoading) return ;\n if (!stateLoading && !isLoggedIn) {\n loginWithRedirect({\n appState: {\n returnTo: Router.pathname,\n },\n });\n }\n if (!stateLoading && isLoggedIn && !isAuthorized) return ;\n }\n\n return ;\n };\n};\n\nexport const mapStateToProps = state => {\n const {\n auth: {\n isLoggedIn,\n isLoading,\n role,\n userinfo: { PersonID },\n },\n } = state;\n return {\n isLoggedIn,\n isLoading,\n role,\n personId: PersonID,\n };\n};\n\nexport default withMembershipAccessWrap;\n","import { useEffect, useState } from 'react';\nimport { useSelector } from 'react-redux';\n\nimport searchContent, { generatePostData } from '@/utils/searchContent';\nimport { getPathWithParams } from '@/utils/utils';\n\n/**\n *\n * @param {object} searchOptions searchContent options. See utils/searchContent\n * @param {number|String} statecode -\n * @returns {[boolean, Array]} Search Results\n */\nexport default function useListSearch(searchOptions, statecode) {\n const searchPayload = {\n ...searchOptions,\n ...(statecode && { stateCode: statecode }),\n };\n const pathWithData = getPathWithParams({\n baseURL: process.env.NEW_API_URL,\n url: 'cms/search',\n data: generatePostData(searchPayload),\n method: 'post',\n });\n\n const cache = useSelector(\n state => JSON.parse(state?.pageLoad?.pageCaches?.[pathWithData]?.data || '{}')?.Results || []\n );\n const [results, setResults] = useState([]);\n const [loading, setLoading] = useState(false);\n const [cached, setCached] = useState(false);\n\n useEffect(() => {\n if (cache && cache.length) {\n setCached(true);\n return;\n }\n (async function mounted() {\n try {\n setLoading(true);\n const response = await searchContent(searchPayload);\n\n setResults(response.results);\n setCached(response.cached);\n setLoading(false);\n } catch (error) {\n setResults([]);\n setLoading(false);\n }\n })();\n }, []);\n\n useEffect(() => {\n if (cached) {\n (async function reMounted() {\n try {\n const response = await searchContent(searchPayload, {\n triggerLoad: false,\n serveFromCache: false,\n });\n if (JSON.stringify(response.results) !== JSON.stringify(results)) {\n // diff detected\n setResults(response.results);\n } else {\n // results are the same\n }\n setCached(false);\n } catch (error) {\n // noop\n }\n })();\n }\n }, [cached]);\n\n return [loading, results.length ? results : cache];\n}\n","import request from './axios';\nimport { DATE_RANGES_OPTION } from './dateTimeHelpers';\n\n/**\n * @typedef {object} Result\n * @property {number} SitePageId\n * @property {number} Cat1Id\n * @property {string} PageTitle\n * @property {string} DateModified - M/D/YYYY LTS\n * @property {?number} PublicationMasterCode\n * @property {string} PublicationMaster\n * @property {string} PublishDate - M/D/YYYY LTS\n * @property {string} State\n * @property {string} Subject\n * @property {string} MeetingStartDate - M/D/YYYY LTS\n * @property {string} MeetingEndDate - M/D/YYYY LTS\n * @property {?number} MeetingLocationId\n * @property {string} MeetingLocation\n * @property {string} ExecutiveSummary\n * @property {?number} IconId\n * @property {string} Icon\n */\n\n/**\n * Request for content page with ported query params from old urls.\n * Use single = true for one result, otherwise an array or results is returned.\n *\n * @param {object} options - see typedef\n * @param {number|string} options.pubCode -\n * @param {number|string} options.stateCode -\n * @param {number|string} options.statecode -\n * @param {number|string} options.yearsBack -\n * @param {number|string} options.meetingTypeId -\n * @param {string} options.sortField - viable values: [pagetitle, owner, and status]. Otherwise ignored.\n * @param {boolean} [options.single=true] -\n * @param {number|string} [cat1Id=null] - Publications -> 9996, Meetings -> 9997, News Releases -> 9998\n * @returns {Result|Array} - Result(s) -- See typedef\n */\nexport default async function fetchContent(options, axiosConfig = {}) {\n const fetchOptionsKeys = Object.keys(options);\n const onlyFetchOptions =\n fetchOptionsKeys.length === 1 && fetchOptionsKeys[0] === 'fieldOptionsToReturn';\n\n const { single = false, fieldOptionsToReturn = [] } = options;\n\n const body = generatePostData(options);\n\n try {\n let searchResponse = { data: { Results: [] } };\n if (!onlyFetchOptions) {\n searchResponse = await request({\n url: `cms/search`,\n method: 'POST',\n data: body,\n cache: true,\n cacheTime: 15,\n ...axiosConfig,\n });\n }\n const { Results, Count } = searchResponse.data;\n\n const searchOptions = {};\n if (fieldOptionsToReturn.length) {\n const optionsResponse = await request('cms/searchoptions', {\n cache: true,\n cacheTime: 60 * 24,\n ...axiosConfig,\n });\n const { FieldOptions } = optionsResponse.data;\n for (let i = 0; i < fieldOptionsToReturn.length; i += 1) {\n const foKey = fieldOptionsToReturn[i];\n searchOptions[foKey] = FieldOptions[foKey];\n }\n }\n\n if (onlyFetchOptions) return { options: searchOptions };\n\n if (!Results || (Array.isArray(Results) && !Results.length)) {\n throw new Error(\n `Page Data not found with options: ${Object.entries(options)\n .map(([key, val]) => `${key}: ${val}`)\n .join(' | ')}`\n );\n }\n\n return {\n results: single ? Results[0] : Results.filter(result => result.SitePageId !== 0),\n options: searchOptions,\n cached: searchResponse.cached,\n count: Count,\n };\n } catch (error) {\n throw new Error(\n `Catch: Page Data not found with options: ${Object.entries(options)\n .map(([key, val]) => `${key}: ${val}`)\n .join(' | ')}`\n );\n }\n}\n\nexport function generatePostData(options) {\n const {\n pubCode, // PublicationCode in Publications\n stateCode, // StateCode in States\n statecode, // StateCode in States coming from dynamic route segment prop\n yearsBack, // DayRangeCode (number of days to go back; e.g. for 5 years it would be 1825) in the DayRanges array (only one value will be expected)\n meetingTypeId, // MeetingVenueId (4 for conference, 5 for meeting, 6 for webinar) in MeetingVenues\n sortField, // pagetitle, owner, and status (otherwise it defaults to publish date)\n cat1Id = null,\n date = null,\n includeOnHomePage = null,\n dateStart = null,\n dateEnd = null,\n committees = null,\n sortOrder = null,\n pageSize = null,\n page = null,\n } = options;\n\n const _statecode = stateCode !== undefined ? stateCode : statecode;\n const _cat1Id = cat1Id !== undefined && cat1Id !== null ? cat1Id.toString().split(',') : cat1Id;\n\n return JSON.stringify({\n SearchId: null,\n PersonId: null,\n SearchDescription: null,\n FieldOptions: {\n SearchText: '',\n Page: page,\n PageSize: pageSize,\n SortOrder: sortOrder,\n LinesOfBusiness: [],\n Subjects: [],\n Publications: pubCode !== undefined ? [{ PublicationCode: pubCode }] : [],\n States: _statecode ? [{ StateCode: _statecode }] : [],\n DayRanges: yearsBack !== undefined ? [{ DayRangeCode: Number(yearsBack) * 365 }] : [],\n MeetingTypes: meetingTypeId ? [{ MeetingTypeId: meetingTypeId }] : [],\n SortField:\n sortField && ['pagetitle', 'owner', 'status', 'state', 'upcomingevents'].includes(sortField)\n ? sortField\n : null,\n ...(_cat1Id && {\n PostingTypes: _cat1Id.map(Cat1Id => ({ Cat1Id })),\n }),\n IncludeOnHomePage: includeOnHomePage,\n ...(date && {\n DateStart: dateStart,\n DateEnd: dateEnd,\n DateRanges: DATE_RANGES_OPTION,\n }),\n ...(committees && {\n Committees: committees.map(({ CommitteeCode }) => ({ CommitteeCode })),\n }),\n },\n });\n}\n","\n (window.__NEXT_P = window.__NEXT_P || []).push([\n \"/compliance/market-conduct/laws-regulations\",\n function () {\n return require(\"private-next-pages/compliance/market-conduct/laws-regulations.js\");\n }\n ]);\n if(module.hot) {\n module.hot.dispose(function () {\n window.__NEXT_P.push([\"/compliance/market-conduct/laws-regulations\"])\n });\n }\n "],"names":["connect","mapStateToProps","withMembershipAccessWrap","useListSearch","pubCode","yearsBack","loading","results","title","heroContent","COMPLIANCE_ACCESS","state","auth","isLoggedIn","isLoading","role","personId","userinfo","PersonID","PageComponent","memberLevels","props","useAuth0","loginWithRedirect","useSelector","stateLoading","useEffect","appState","returnTo","Router","hasAccess","checkAccess","isAuthorized","Array","isArray","errorCode","status","searchOptions","statecode","searchPayload","stateCode","pathWithData","getPathWithParams","baseURL","process","url","data","generatePostData","method","cache","JSON","parse","pageLoad","pageCaches","Results","useState","setResults","setLoading","cached","setCached","length","searchContent","response","triggerLoad","serveFromCache","stringify","fetchContent","options","axiosConfig","fetchOptionsKeys","Object","keys","onlyFetchOptions","single","fieldOptionsToReturn","body","searchResponse","request","cacheTime","Count","optionsResponse","FieldOptions","i","foKey","Error","entries","map","key","val","join","filter","result","SitePageId","count","meetingTypeId","sortField","cat1Id","date","includeOnHomePage","dateStart","dateEnd","committees","sortOrder","pageSize","page","_statecode","undefined","_cat1Id","toString","split","SearchId","PersonId","SearchDescription","SearchText","Page","PageSize","SortOrder","LinesOfBusiness","Subjects","Publications","PublicationCode","States","StateCode","DayRanges","DayRangeCode","Number","MeetingTypes","MeetingTypeId","SortField","includes","PostingTypes","Cat1Id","IncludeOnHomePage","DateStart","DateEnd","DateRanges","DATE_RANGES_OPTION","Committees","CommitteeCode","window","__NEXT_P","push"],"sourceRoot":""}