{"version":3,"file":"static/js/787.8bbce9b7.chunk.js","mappings":"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","sources":["../node_modules/reactstrap/es/CardDeck.js","../node_modules/reactstrap/es/CardBody.js","components/shortcuts/MinistryShortcut.tsx","components/shortcuts/ParliamentShortcut.tsx","components/shortcuts/OmbudsmandShortcut.tsx","components/shortcuts/LatestDocumentsShortcut.tsx","../node_modules/date-fns/esm/addDays/index.js","../node_modules/date-fns/esm/subDays/index.js","../node_modules/date-fns/esm/addWeeks/index.js","../node_modules/date-fns/esm/subWeeks/index.js","../node_modules/date-fns/esm/addMonths/index.js","../node_modules/date-fns/esm/subMonths/index.js","../node_modules/date-fns/esm/addYears/index.js","../node_modules/date-fns/esm/subYears/index.js","containers/ShortcutsContainer.tsx","containers/searchbox/SearchBoxContainer.tsx","components/Home.tsx","models/MatchField.ts"],"sourcesContent":["import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"className\", \"cssModule\", \"tag\"];\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules, tagPropType } from './utils';\nvar propTypes = {\n tag: tagPropType,\n className: PropTypes.string,\n cssModule: PropTypes.object\n};\nvar defaultProps = {\n tag: 'div'\n};\n\nvar CardDeck = function CardDeck(props) {\n var className = props.className,\n cssModule = props.cssModule,\n Tag = props.tag,\n attributes = _objectWithoutPropertiesLoose(props, _excluded);\n\n var classes = mapToCssModules(classNames(className, 'card-deck'), cssModule);\n return /*#__PURE__*/React.createElement(Tag, _extends({}, attributes, {\n className: classes\n }));\n};\n\nCardDeck.propTypes = propTypes;\nCardDeck.defaultProps = defaultProps;\nexport default CardDeck;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"className\", \"cssModule\", \"innerRef\", \"tag\"];\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules, tagPropType } from './utils';\nvar propTypes = {\n tag: tagPropType,\n className: PropTypes.string,\n cssModule: PropTypes.object,\n innerRef: PropTypes.oneOfType([PropTypes.object, PropTypes.string, PropTypes.func])\n};\nvar defaultProps = {\n tag: 'div'\n};\n\nvar CardBody = function CardBody(props) {\n var className = props.className,\n cssModule = props.cssModule,\n innerRef = props.innerRef,\n Tag = props.tag,\n attributes = _objectWithoutPropertiesLoose(props, _excluded);\n\n var classes = mapToCssModules(classNames(className, 'card-body'), cssModule);\n return /*#__PURE__*/React.createElement(Tag, _extends({}, attributes, {\n className: classes,\n ref: innerRef\n }));\n};\n\nCardBody.propTypes = propTypes;\nCardBody.defaultProps = defaultProps;\nexport default CardBody;","import * as React from \"react\";\r\nimport { Card, CardBody, UncontrolledDropdown, DropdownMenu, DropdownItem, DropdownToggle } from \"reactstrap\";\r\nimport \"./Shortcuts.scss\";\r\nimport { IRessort } from \"../../models/IRessort\";\r\n\r\nexport interface IMinistryShortcutProps {\r\n ressorter: IRessort[];\r\n selectMinistry(ministryId: string): void;\r\n}\r\nexport const MinistryShortcut: React.FC = props => {\r\n return (\r\n \r\n \r\n
\r\n
\r\n

Ministerier

\r\n
\r\n

{props.children}

\r\n
\r\n \r\n \r\n Vælg ministerium\r\n \r\n \r\n {props.ressorter.map((item: IRessort) => (\r\n props.selectMinistry(item.id)}>\r\n {item.name}\r\n \r\n ))}\r\n \r\n \r\n
\r\n
\r\n );\r\n};\r\n","import * as React from \"react\";\r\nimport { Card, CardBody, Button } from \"reactstrap\";\r\nimport \"./Shortcuts.scss\";\r\nimport { IconType, Icon } from \"@lexdania/components\";\r\n\r\nexport interface IParliamentShortcutProps {\r\n seeDocuments(): void;\r\n}\r\n\r\nexport const ParliamentShortcut: React.FC = props => {\r\n return (\r\n \r\n \r\n
\r\n
\r\n

Folketinget

\r\n
\r\n

{props.children}

\r\n
\r\n \r\n
\r\n
\r\n );\r\n};\r\n","import * as React from \"react\";\r\nimport { Card, CardBody, UncontrolledDropdown, DropdownMenu, DropdownItem, DropdownToggle } from \"reactstrap\";\r\nimport \"./Shortcuts.scss\";\r\n\r\nexport interface IOmbudsmandShortcutProps {\r\n selectOmbudsmandEntry(isLawRegistry: boolean): void;\r\n}\r\nexport const OmbudsmandShortcut: React.FC = props => {\r\n return (\r\n \r\n \r\n
\r\n
\r\n

Folketingets Ombudsmand

\r\n
\r\n

{props.children}

\r\n
\r\n \r\n \r\n Vælg\r\n \r\n \r\n props.selectOmbudsmandEntry(true)}>Lovregister\r\n props.selectOmbudsmandEntry(false)}>Myndigheder\r\n \r\n \r\n
\r\n
\r\n );\r\n};\r\n","import * as React from \"react\";\r\nimport { Card, CardBody, Row, Col, Button } from \"reactstrap\";\r\nimport { DateRange } from \"../../containers/ShortcutsContainer\";\r\nimport \"./Shortcuts.scss\";\r\n\r\nexport interface ILatestDocumentsShortcutProps {\r\n selectDateRange(range: DateRange): void;\r\n}\r\nexport const LatestDocumentsShortcut: React.FC = props => {\r\n return (\r\n \r\n \r\n \r\n \r\n

Seneste dokumenter

\r\n \r\n \r\n \r\n Vælg periode\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n );\r\n};\r\n","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name addDays\n * @category Day Helpers\n * @summary Add the specified number of days to the given date.\n *\n * @description\n * Add the specified number of days to the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of days to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} - the new date with the days added\n * @throws {TypeError} - 2 arguments required\n *\n * @example\n * // Add 10 days to 1 September 2014:\n * const result = addDays(new Date(2014, 8, 1), 10)\n * //=> Thu Sep 11 2014 00:00:00\n */\n\nexport default function addDays(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var amount = toInteger(dirtyAmount);\n\n if (isNaN(amount)) {\n return new Date(NaN);\n }\n\n if (!amount) {\n // If 0 days, no-op to avoid changing times in the hour before end of DST\n return date;\n }\n\n date.setDate(date.getDate() + amount);\n return date;\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport addDays from \"../addDays/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name subDays\n * @category Day Helpers\n * @summary Subtract the specified number of days from the given date.\n *\n * @description\n * Subtract the specified number of days from the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of days to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the days subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 10 days from 1 September 2014:\n * const result = subDays(new Date(2014, 8, 1), 10)\n * //=> Fri Aug 22 2014 00:00:00\n */\n\nexport default function subDays(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addDays(dirtyDate, -amount);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport addDays from \"../addDays/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name addWeeks\n * @category Week Helpers\n * @summary Add the specified number of weeks to the given date.\n *\n * @description\n * Add the specified number of week to the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of weeks to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the weeks added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 4 weeks to 1 September 2014:\n * const result = addWeeks(new Date(2014, 8, 1), 4)\n * //=> Mon Sep 29 2014 00:00:00\n */\n\nexport default function addWeeks(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n var days = amount * 7;\n return addDays(dirtyDate, days);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport addWeeks from \"../addWeeks/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name subWeeks\n * @category Week Helpers\n * @summary Subtract the specified number of weeks from the given date.\n *\n * @description\n * Subtract the specified number of weeks from the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of weeks to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the weeks subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 4 weeks from 1 September 2014:\n * const result = subWeeks(new Date(2014, 8, 1), 4)\n * //=> Mon Aug 04 2014 00:00:00\n */\n\nexport default function subWeeks(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addWeeks(dirtyDate, -amount);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name addMonths\n * @category Month Helpers\n * @summary Add the specified number of months to the given date.\n *\n * @description\n * Add the specified number of months to the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of months to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the months added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 5 months to 1 September 2014:\n * const result = addMonths(new Date(2014, 8, 1), 5)\n * //=> Sun Feb 01 2015 00:00:00\n */\n\nexport default function addMonths(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var amount = toInteger(dirtyAmount);\n\n if (isNaN(amount)) {\n return new Date(NaN);\n }\n\n if (!amount) {\n // If 0 months, no-op to avoid changing times in the hour before end of DST\n return date;\n }\n\n var dayOfMonth = date.getDate(); // The JS Date object supports date math by accepting out-of-bounds values for\n // month, day, etc. For example, new Date(2020, 0, 0) returns 31 Dec 2019 and\n // new Date(2020, 13, 1) returns 1 Feb 2021. This is *almost* the behavior we\n // want except that dates will wrap around the end of a month, meaning that\n // new Date(2020, 13, 31) will return 3 Mar 2021 not 28 Feb 2021 as desired. So\n // we'll default to the end of the desired month by adding 1 to the desired\n // month and using a date of 0 to back up one day to the end of the desired\n // month.\n\n var endOfDesiredMonth = new Date(date.getTime());\n endOfDesiredMonth.setMonth(date.getMonth() + amount + 1, 0);\n var daysInMonth = endOfDesiredMonth.getDate();\n\n if (dayOfMonth >= daysInMonth) {\n // If we're already at the end of the month, then this is the correct date\n // and we're done.\n return endOfDesiredMonth;\n } else {\n // Otherwise, we now know that setting the original day-of-month value won't\n // cause an overflow, so set the desired day-of-month. Note that we can't\n // just set the date of `endOfDesiredMonth` because that object may have had\n // its time changed in the unusual case where where a DST transition was on\n // the last day of the month and its local time was in the hour skipped or\n // repeated next to a DST transition. So we use `date` instead which is\n // guaranteed to still have the original time.\n date.setFullYear(endOfDesiredMonth.getFullYear(), endOfDesiredMonth.getMonth(), dayOfMonth);\n return date;\n }\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport addMonths from \"../addMonths/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name subMonths\n * @category Month Helpers\n * @summary Subtract the specified number of months from the given date.\n *\n * @description\n * Subtract the specified number of months from the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of months to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the months subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 5 months from 1 February 2015:\n * const result = subMonths(new Date(2015, 1, 1), 5)\n * //=> Mon Sep 01 2014 00:00:00\n */\n\nexport default function subMonths(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addMonths(dirtyDate, -amount);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport addMonths from \"../addMonths/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name addYears\n * @category Year Helpers\n * @summary Add the specified number of years to the given date.\n *\n * @description\n * Add the specified number of years to the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of years to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the years added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 5 years to 1 September 2014:\n * const result = addYears(new Date(2014, 8, 1), 5)\n * //=> Sun Sep 01 2019 00:00:00\n */\n\nexport default function addYears(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addMonths(dirtyDate, amount * 12);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport addYears from \"../addYears/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name subYears\n * @category Year Helpers\n * @summary Subtract the specified number of years from the given date.\n *\n * @description\n * Subtract the specified number of years from the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of years to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the years subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 5 years from 1 September 2014:\n * const result = subYears(new Date(2014, 8, 1), 5)\n * //=> Tue Sep 01 2009 00:00:00\n */\n\nexport default function subYears(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addYears(dirtyDate, -amount);\n}","import * as React from \"react\";\r\nimport { connect } from \"react-redux\";\r\nimport { AppState } from \"../store\";\r\nimport { bindActionCreators } from \"redux\";\r\nimport { RessortActions, IRessortActions } from \"../store/ressorter/ressortReducer\";\r\nimport { IRessort } from \"../models/IRessort\";\r\nimport { CardDeck } from \"reactstrap\";\r\nimport { MinistryShortcut } from \"../components/shortcuts/MinistryShortcut\";\r\nimport { ParliamentShortcut } from \"../components/shortcuts/ParliamentShortcut\";\r\nimport { OmbudsmandShortcut } from \"../components/shortcuts/OmbudsmandShortcut\";\r\nimport { LatestDocumentsShortcut } from \"../components/shortcuts/LatestDocumentsShortcut\";\r\nimport { IDocumentClassification } from \"../models/IDocumentClassification\";\r\nimport { DocumentClassificationActions, IDocumentClassificationActions } from \"../store/documentClassification/documentClassificationReducer\";\r\nimport { OrderByKey } from \"../models/DocumentOrderByValues\";\r\nimport { FilterReducerActions } from \"../store/filterReducer\";\r\nimport { IFilterReducerActions } from \"./../store/filterReducer\";\r\nimport { DocumentSearchActions, IDocumentSearchActions } from \"../store/documents/documentSearchReducer\";\r\nimport { subDays, subWeeks, subMonths, subYears, format } from \"date-fns\";\r\nimport { DateFormats } from \"@lexdania/components\";\r\n\r\nexport enum DateRange {\r\n Day,\r\n Week,\r\n Month,\r\n Year,\r\n}\r\n\r\nexport interface IShortcutsContainerProps extends IRessortActions, IDocumentClassificationActions, IFilterReducerActions, IDocumentSearchActions {\r\n ressorter: IRessort[];\r\n documentClassifications: IDocumentClassification[];\r\n sendToSearch: (queryString: string) => void;\r\n}\r\n\r\nclass ShortcutsContainer extends React.Component {\r\n componentDidMount() {\r\n this.props.getRessorter();\r\n this.props.getDocumentClassification();\r\n }\r\n\r\n public render() {\r\n return (\r\n <>\r\n \r\n \r\n \r\n Vælg ministerium og gå direkte til ministeriets love og regler. Du kan efterfølgende afgrænse din søgning yderligere.\r\n \r\n
\r\n \r\n Gå direkte til lovforslag, beslutningsforslag, betænkninger og andre dokumenter fra Folketinget.\r\n \r\n
\r\n \r\n Søg på dokumenter fra Folketingets Ombudsmand ved brug af lovregisteret eller myndighedsregisteret.\r\n \r\n
\r\n \r\n );\r\n }\r\n\r\n private doDateSearch = (range: DateRange) => {\r\n let today = new Date();\r\n\r\n switch (range) {\r\n case DateRange.Day: {\r\n today = subDays(today, 1);\r\n break;\r\n }\r\n case DateRange.Week: {\r\n today = subWeeks(today, 1);\r\n break;\r\n }\r\n case DateRange.Month: {\r\n today = subMonths(today, 1);\r\n break;\r\n }\r\n case DateRange.Year: {\r\n today = subYears(today, 1);\r\n break;\r\n }\r\n }\r\n const params = `dl=${format(today, DateFormats.Internal)}&o=${OrderByKey.Offentliggoerelse}`;\r\n this.props.sendToSearch(params);\r\n };\r\n\r\n private doRessortSearch = (id: string) => {\r\n this.props.sendToSearch(`r=${id}&o=${OrderByKey.NummerOgAar}`);\r\n };\r\n private doPartliamentSearch = () => {\r\n const res = this.props.documentClassifications\r\n .filter(value => value.ids === \"50-60\")[0]\r\n .documentTypes.map(doc => doc.documentTypeId)\r\n .reduce((total, id) => total + \"&dt=\" + id);\r\n\r\n this.props.sendToSearch(`dt=${res}&o=${OrderByKey.NummerOgAar}`);\r\n };\r\n\r\n private doOmbudsmandSearch = (isLawRegistry: boolean) => {\r\n this.props.setAllFilters(false);\r\n this.props.setLawRegistryIsOpen(isLawRegistry);\r\n this.props.setMyndighedIsOpen(!isLawRegistry);\r\n\r\n if (isLawRegistry) {\r\n this.props.setParams(\"\");\r\n this.props.sendToSearch(\"\");\r\n } else {\r\n var fobClassificationId = \"30\";\r\n const docTypes = this.props.documentClassifications\r\n .filter(x => x.ids.toString() === fobClassificationId)\r\n .flatMap(x => x.documentTypes)\r\n .map(dt => dt.documentTypeId);\r\n const params = docTypes.join(\"&dt=\");\r\n this.props.sendToSearch(`dt=${params}`);\r\n }\r\n };\r\n}\r\n\r\nexport default connect(\r\n ({ ressorter, documentClassifications }: AppState, ownProps: IShortcutsContainerProps): IShortcutsContainerProps => {\r\n return {\r\n ...ownProps,\r\n ressorter: ressorter.ministryRessorter,\r\n documentClassifications: documentClassifications.documentClassifications,\r\n };\r\n },\r\n dispatch =>\r\n bindActionCreators(\r\n {\r\n ...RessortActions,\r\n ...DocumentClassificationActions,\r\n ...DocumentSearchActions,\r\n ...FilterReducerActions,\r\n },\r\n dispatch\r\n )\r\n)(ShortcutsContainer);\r\n","import * as React from \"react\";\r\nimport { Card, Row, Col, Button } from \"reactstrap\";\r\nimport { LiveSearch, ILiveResultItemProps, IconType, LiveResultTemplateEnum, EmptyStringArray } from \"@lexdania/components\";\r\nimport { debounce } from \"ts-debounce\";\r\nimport { apiGET } from \"../../store/api\";\r\nimport * as qs from \"query-string\";\r\nimport \"./SearchBoxContainer.scss\";\r\nimport { LiveSearchHitDto } from \"../../models/LiveSearchHitDto\";\r\nimport { connect } from \"react-redux\";\r\nimport { AppState } from \"../../store\";\r\nimport { bindActionCreators } from \"redux\";\r\nimport { DocumentClassificationActions, IDocumentClassificationActions } from \"../../store/documentClassification/documentClassificationReducer\";\r\nimport { IDocumentClassification } from \"../../models/IDocumentClassification\";\r\nimport { MatchField } from \"../../models/MatchField\";\r\nimport { DocumentSearchParams } from \"../../store/documents/documentSearchReducer\";\r\nimport { IDocumentSearchResult } from \"../../models/IDocumentSearchResult\";\r\nimport { showDocumentStateBadge } from \"../../components/document/Document\";\r\n\r\nexport interface ISearchBoxContainerProps extends IDocumentClassificationActions {\r\n sendToSearch: (queryString: string) => void;\r\n goToDocument: (retsinfoLink: string) => void;\r\n documentClassifications: IDocumentClassification[];\r\n activePageSize?: number;\r\n}\r\n\r\ninterface ILiveSearchState {\r\n liveSearchTerm: string;\r\n hits: ILiveResultItemProps[];\r\n staticLiveSearchItemsCount: number;\r\n}\r\n\r\ninterface ISearchBoxContainerState {\r\n currentSearchTerm: string;\r\n liveSearchState: ILiveSearchState;\r\n selectedDatabase: DatabaseOptionEnum;\r\n yearStart: number;\r\n yearEnd: number;\r\n documentNumberRange: string;\r\n titles: string[];\r\n popularTitles: string[];\r\n stikord: string[];\r\n}\r\n\r\nconst defaultLiveSearchState: Readonly<{ liveSearchTerm: string; hits: ILiveResultItemProps[]; staticLiveSearchItemsCount: number }> = {\r\n liveSearchTerm: \"\",\r\n hits: [],\r\n staticLiveSearchItemsCount: 0,\r\n};\r\n\r\nconst yearLow = 1665;\r\nconst yearHigh = new Date().getFullYear();\r\n\r\n// does the rawSearchTerm match number/year pattern\r\n// match for: 20 2018 | >10 2014 | <50 2015 | 22-33 2017\r\nconst numberAndYearRegExp = /(^(<|>){1}([1-9]\\d*)|^([1-9]\\d*)|^([1-9]\\d*)(-)([1-9]\\d*))( (1[6789]|2[01])\\d\\d)?$/;\r\nconst allNumbersRegExp = /\\d+/g;\r\nconst validYearsRegExp = /(?:^|\\D)((1[6789]|2[01])\\d\\d)(?!\\d)/g;\r\n\r\nenum DatabaseOptionEnum {\r\n REGLER = \"10\",\r\n AFGOERELSER = \"20\",\r\n L_B_FORSLAG = \"50-60\",\r\n}\r\n\r\nfunction getNumberText(number: string | null) {\r\n if (number === null || number === \"\") return \"\";\r\n return \"Søg efter nummer \" + number + \"\";\r\n}\r\n\r\nfunction getYearText(year: string | null) {\r\n if (year === null) return \"\";\r\n return \", årgang \" + year + \"\";\r\n}\r\n\r\nfunction getDBText(selectedDB: DatabaseOptionEnum) {\r\n const databaseString = selectedDB === \"10\" ? \"Regler\" : selectedDB === \"20\" ? \"Afgørelser\" : \"Lov- og beslutningsforslag mv.\";\r\n return \" i \" + databaseString + \"\";\r\n}\r\n\r\n// investigate match array and build a more readable text\r\nfunction getNumberAndYearText(arr: RegExpMatchArray | null): string {\r\n let buildText = \"\";\r\n if (arr === null) {\r\n return \"\";\r\n }\r\n\r\n if (arr[2] === undefined) {\r\n buildText = getNumberText(arr[1]);\r\n }\r\n\r\n if (arr[2] === \"<\") {\r\n buildText = \"Søg efter numre mindre end \" + arr[3] + \"\";\r\n }\r\n\r\n if (arr[2] === \">\") {\r\n buildText = \"Søg efter numre større end \" + arr[3] + \"\";\r\n }\r\n\r\n if (arr[6] === \"-\") {\r\n buildText = \"Søg efter numre i intervallet \" + arr[1] + \"\";\r\n }\r\n\r\n if (arr[8] !== undefined) {\r\n buildText = buildText + getYearText(arr[8]);\r\n }\r\n return buildText;\r\n}\r\n\r\nexport class SearchBoxContainer extends React.Component {\r\n public readonly state: ISearchBoxContainerState = {\r\n currentSearchTerm: \"\",\r\n liveSearchState: defaultLiveSearchState,\r\n selectedDatabase: DatabaseOptionEnum.REGLER,\r\n yearStart: yearLow,\r\n yearEnd: yearHigh,\r\n documentNumberRange: \"\",\r\n titles: EmptyStringArray,\r\n popularTitles: EmptyStringArray,\r\n stikord: EmptyStringArray,\r\n };\r\n\r\n componentDidMount() {\r\n this.props.getDocumentClassification();\r\n }\r\n\r\n public render() {\r\n const { liveSearchState, currentSearchTerm, selectedDatabase } = this.state;\r\n return (\r\n \r\n \r\n \r\n \r\n Regler\r\n \r\n \r\n Afgørelser\r\n \r\n \r\n Lov- og beslutningsforslag mv.\r\n \r\n \r\n \r\n \r\n \r\n this.onLiveSearchTermChange(e, this.state.selectedDatabase)}\r\n onSearchButtonClicked={this.onSearchButtonClicked}\r\n searchTerm={currentSearchTerm}\r\n data={liveSearchState.hits}\r\n searchPlaceHolder=\"Søg efter nummer og år eller søgeord\"\r\n buttonStyle=\"secondary\"\r\n autofocus={true}\r\n />\r\n \r\n \r\n \r\n );\r\n }\r\n\r\n private handleDatabaseSelection = (val: DatabaseOptionEnum) => () => {\r\n this.onLiveSearchTermChange(this.state.currentSearchTerm, val);\r\n };\r\n\r\n private onLiveSearchTermChange = (rawSearchTerm: string, databaseOptionEnum: DatabaseOptionEnum) => {\r\n const trimmedSearchTerm = rawSearchTerm.trim();\r\n const newLiveSearchState: ILiveSearchState = { liveSearchTerm: trimmedSearchTerm, hits: [], staticLiveSearchItemsCount: 0 };\r\n let counter = 0; // Counter for static live search items\r\n\r\n if (!trimmedSearchTerm) {\r\n this.setState({ currentSearchTerm: rawSearchTerm, liveSearchState: newLiveSearchState, selectedDatabase: databaseOptionEnum });\r\n return;\r\n }\r\n\r\n // If only different in spaces and same database, update state but dont do livesearch request\r\n if (trimmedSearchTerm === this.state.currentSearchTerm.trim() && this.state.selectedDatabase === databaseOptionEnum) {\r\n this.setState({ currentSearchTerm: rawSearchTerm, selectedDatabase: databaseOptionEnum });\r\n return;\r\n }\r\n\r\n // \"Number/year\" livesearch results\r\n const numberMatches = rawSearchTerm.match(allNumbersRegExp);\r\n const numberYearMatch = rawSearchTerm.match(numberAndYearRegExp);\r\n if (numberYearMatch !== null) {\r\n const buildText = getNumberAndYearText(numberYearMatch) + getDBText(databaseOptionEnum);\r\n\r\n newLiveSearchState.hits.push({\r\n text: buildText,\r\n onClick: () => this.onYearAndNumberMatchClicked(numberYearMatch[1], numberYearMatch[8]),\r\n aria: \"Klik her for at \" + buildText.replace(\"Søg\", \"søge\"),\r\n icon: IconType.Hashtag,\r\n });\r\n counter++;\r\n } else if (numberMatches !== null && typeof numberMatches !== \"undefined\") {\r\n const validYearsMatch = rawSearchTerm.match(validYearsRegExp);\r\n const year = validYearsMatch && numberMatches.length !== 1 ? validYearsMatch[validYearsMatch.length - 1].replace(/\\D/, \"\") : null;\r\n const num = numberMatches.find(x => x !== year) || \"\";\r\n\r\n const buildText = getNumberText(num) + getYearText(year) + getDBText(databaseOptionEnum);\r\n newLiveSearchState.hits.push({\r\n text: buildText,\r\n onClick: () => this.onYearAndNumberMatchClicked(num, year),\r\n aria: \"Klik her for at \" + buildText.replace(\"Søg\", \"søge\"),\r\n icon: IconType.Hashtag,\r\n });\r\n counter++;\r\n }\r\n\r\n // \"Search for\" livesearch results\r\n const quoteDelimited = /\"[^\"]+\"$/;\r\n if (quoteDelimited.test(trimmedSearchTerm)) {\r\n newLiveSearchState.hits.push({\r\n text: \"Søg efter nøjagtigt udtryk \" + trimmedSearchTerm + \"\" + getDBText(databaseOptionEnum),\r\n onClick: () => this.setState({ currentSearchTerm: trimmedSearchTerm, selectedDatabase: databaseOptionEnum }, () => this.setParamsAndRedirect()),\r\n aria: \"Klik her for at søge efter nøjagtigt udtryk \" + trimmedSearchTerm,\r\n });\r\n counter++;\r\n } else {\r\n newLiveSearchState.hits.push({\r\n text: \"Søg efter \" + trimmedSearchTerm + \"\" + getDBText(databaseOptionEnum),\r\n onClick: () => this.setState({ currentSearchTerm: trimmedSearchTerm, selectedDatabase: databaseOptionEnum }, () => this.setParamsAndRedirect()),\r\n aria: \"Klik her for at søge efter \" + trimmedSearchTerm,\r\n });\r\n counter++;\r\n\r\n newLiveSearchState.hits.push({\r\n text: 'Søg efter nøjagtigt udtryk \"' + trimmedSearchTerm + '\"' + getDBText(databaseOptionEnum),\r\n onClick: () =>\r\n this.setState({ currentSearchTerm: '\"' + trimmedSearchTerm + '\"', selectedDatabase: databaseOptionEnum }, () => this.setParamsAndRedirect()),\r\n aria: \"Klik her for at søge efter nøjagtigt udtryk \" + trimmedSearchTerm,\r\n });\r\n counter++;\r\n }\r\n\r\n // Update the static live search items counter\r\n newLiveSearchState.staticLiveSearchItemsCount = counter;\r\n this.setState(\r\n { currentSearchTerm: rawSearchTerm, liveSearchState: newLiveSearchState, selectedDatabase: databaseOptionEnum },\r\n debounce(() => this.getDynamicLiveSearchItems(newLiveSearchState), 200)\r\n );\r\n };\r\n\r\n private getDynamicLiveSearchItems = (newLiveSearchState: ILiveSearchState) => {\r\n // Block dynamic live search for outdated/debounced calls and less than 3 characters\r\n if (this.state.currentSearchTerm === newLiveSearchState.liveSearchTerm && newLiveSearchState.liveSearchTerm.trim().length > 2) {\r\n this.getTop3SearchResultItems();\r\n }\r\n };\r\n\r\n private getTop3SearchResultItems() {\r\n const lst: ILiveSearchState = this.state.liveSearchState;\r\n const params = this.buildParams(); // Will always (only) contain the current searchterm\r\n const paramsString = qs.stringify(params);\r\n const paramsQuery = `?${paramsString}`;\r\n apiGET(\"api/documentsearch\", {\r\n params: qs.parse(paramsQuery),\r\n paramsSerializer: (p: any) => qs.stringify(p),\r\n }).then(response => {\r\n if (this.state.currentSearchTerm !== lst.liveSearchTerm) {\r\n //If the search term is not the same as current search term - then this is NOT the lates response - ignore result\r\n return;\r\n }\r\n\r\n const hits = response.documents.slice(0, 3).map(doc => ({\r\n text: doc.title,\r\n icon: IconType.FileImport,\r\n onClick: () => this.props.goToDocument(doc.retsinfoLink),\r\n template: LiveResultTemplateEnum.DOUBLE_LINE_WITH_HEADINGS_AND_LABEL,\r\n aria: \"Klik her for at gå direkte til dokument \" + doc.shortName,\r\n heading: doc.shortName,\r\n subHeading: doc.popularTitle,\r\n headingPrefix: \"Gå direkte til\",\r\n label: doc.isHistoryFlag && showDocumentStateBadge(doc.geografiskDaekningId, doc.retsinfoKlassifikationId) ? \"historisk\" : undefined,\r\n }));\r\n\r\n // remember to prepend hits with existing items\r\n this.setState({ liveSearchState: { ...lst, hits: [...lst.hits, ...hits] } }, this.getLiveSearchSuggestionItems);\r\n });\r\n }\r\n private getLiveSearchSuggestionItems() {\r\n const lst: ILiveSearchState = this.state.liveSearchState;\r\n var listOfDocumentTypes = this.props.documentClassifications.filter(x => x.ids.toString() === this.state.selectedDatabase).flatMap(x => x.documentTypes);\r\n var listOfDocumentIds = listOfDocumentTypes.flatMap(x => x.documentTypeId);\r\n\r\n apiGET(\"api/documentsearch/suggestions\", {\r\n params: { q: lst.liveSearchTerm, dt: listOfDocumentIds },\r\n paramsSerializer: (p: any) => qs.stringify(p),\r\n })\r\n .then(result => {\r\n if (this.state.currentSearchTerm !== lst.liveSearchTerm) {\r\n return;\r\n }\r\n\r\n const hits: ILiveResultItemProps[] = result.map((hit: LiveSearchHitDto) => ({\r\n text: `Mener du \"${hit.value.replace(/\\\\n/g, \"
\")}
\"`,\r\n icon: hit.field === MatchField.Stikord ? IconType.Tag : IconType.PollH,\r\n onClick: () => this.liveSearchHitSelected(hit),\r\n label: hit.field === MatchField.Title ? \"(titel)\" : hit.field === MatchField.PopularTitle ? \"(populærtitel)\" : \"(stikord)\",\r\n template: LiveResultTemplateEnum.DOUBLE_LINE_WITH_LABEL,\r\n aria:\r\n \"Klik her for at søge efter dokumenter med \" +\r\n (hit.field === MatchField.Title ? \"(titel)\" : hit.field === MatchField.PopularTitle ? \"(populærtitel)\" : \"(stikord)\") +\r\n \": \" +\r\n hit.value,\r\n }));\r\n // remember to prepend hits with existing items\r\n this.setState({ liveSearchState: { ...lst, hits: [...lst.hits, ...hits] } });\r\n })\r\n .catch(error => {\r\n console.log(error);\r\n });\r\n }\r\n\r\n // reuse the yearStart and yearEnd filter, update the documentNumberRange\r\n private onYearAndNumberMatchClicked = (numRange: string, year: string | null) => {\r\n if (year) {\r\n this.setState(\r\n {\r\n yearStart: +year,\r\n yearEnd: +year,\r\n documentNumberRange: numRange,\r\n liveSearchState: defaultLiveSearchState,\r\n currentSearchTerm: \"\",\r\n },\r\n this.setParamsAndRedirect\r\n );\r\n } else {\r\n this.setState(\r\n {\r\n yearStart: +yearLow,\r\n yearEnd: +yearHigh,\r\n documentNumberRange: numRange,\r\n liveSearchState: defaultLiveSearchState,\r\n currentSearchTerm: \"\",\r\n },\r\n this.setParamsAndRedirect\r\n );\r\n }\r\n };\r\n\r\n private onSearchButtonClicked = (searchTerm: string) => {\r\n const numberYearMatch = searchTerm.match(numberAndYearRegExp);\r\n const numberMatches = searchTerm.match(allNumbersRegExp);\r\n\r\n if (numberYearMatch !== null) {\r\n this.onYearAndNumberMatchClicked(numberYearMatch[1], numberYearMatch[8]);\r\n } else if (numberMatches !== null && typeof numberMatches !== \"undefined\") {\r\n const validYearsMatch = searchTerm.match(validYearsRegExp);\r\n const year = validYearsMatch && numberMatches.length !== 1 ? validYearsMatch[validYearsMatch.length - 1].replace(/\\D/, \"\") : null;\r\n const num = numberMatches.find(x => x !== year) || \"\";\r\n this.onYearAndNumberMatchClicked(num, year);\r\n } else {\r\n this.setParamsAndRedirect();\r\n }\r\n };\r\n\r\n /**\r\n * This function is called when searchbutton is clicked (or enter press in the livesearch input field)\r\n */\r\n private setParamsAndRedirect = () => {\r\n const parameters: Partial = this.buildParams();\r\n\r\n const paramsString = qs.stringify(parameters);\r\n this.props.sendToSearch(paramsString);\r\n };\r\n\r\n /**\r\n * This function is called when a element from the livesearch dropdown list is selected\r\n */\r\n private liveSearchHitSelected = (hit: LiveSearchHitDto) => {\r\n const stateKey: keyof ISearchBoxContainerState =\r\n hit.field === MatchField.Title ? \"titles\" : hit.field === MatchField.PopularTitle ? \"popularTitles\" : \"stikord\";\r\n const arr = [...this.state[stateKey]];\r\n if (!arr.some(t => t === hit.value)) {\r\n arr.push(hit.value);\r\n }\r\n this.setState({ currentSearchTerm: \"\", liveSearchState: defaultLiveSearchState, ...{ [stateKey]: arr } }, this.setParamsAndRedirect);\r\n };\r\n\r\n private buildParams() {\r\n const { currentSearchTerm, yearStart, yearEnd, documentNumberRange, selectedDatabase, titles, popularTitles, stikord } = this.state;\r\n\r\n const parameters: Partial = {};\r\n\r\n parameters.dt = this.props.documentClassifications\r\n .filter(x => x.ids.toString() === selectedDatabase)\r\n .flatMap(x => x.documentTypes)\r\n .map(dt => dt.documentTypeId);\r\n\r\n if (currentSearchTerm.trim() !== \"\") {\r\n parameters.t = [currentSearchTerm];\r\n }\r\n\r\n if (yearStart !== yearLow) {\r\n parameters.yl = yearStart;\r\n }\r\n\r\n if (yearEnd !== yearHigh) {\r\n parameters.yh = yearEnd;\r\n }\r\n\r\n if (documentNumberRange !== \"\") {\r\n parameters.dnr = documentNumberRange;\r\n }\r\n\r\n if (titles.length > 0) {\r\n parameters.ttl = titles;\r\n }\r\n\r\n if (popularTitles.length > 0) {\r\n parameters.pttl = popularTitles;\r\n }\r\n\r\n if (stikord.length > 0) {\r\n parameters.so = stikord;\r\n }\r\n\r\n if (this.props.activePageSize) {\r\n parameters.ps = this.props.activePageSize;\r\n }\r\n\r\n return parameters;\r\n }\r\n}\r\n\r\nexport default connect(\r\n ({ documentClassifications, documentSearch }: AppState, ownProps: ISearchBoxContainerProps): ISearchBoxContainerProps => {\r\n return {\r\n ...ownProps,\r\n documentClassifications: documentClassifications.documentClassifications,\r\n activePageSize: +documentSearch.paramsParsed.ps!,\r\n };\r\n },\r\n dispatch =>\r\n bindActionCreators(\r\n {\r\n ...DocumentClassificationActions,\r\n },\r\n dispatch\r\n )\r\n)(SearchBoxContainer);\r\n","import React from \"react\";\r\nimport { Row, Col } from \"reactstrap\";\r\nimport ShortcutsContainer from \"../containers/ShortcutsContainer\";\r\nimport { RouteComponentProps } from \"react-router\";\r\nimport SearchBoxContainer from \"../containers/searchbox/SearchBoxContainer\";\r\n\r\nconst Home: React.FC> = props => {\r\n document.title = \"Retsinformation\";\r\n return (\r\n <>\r\n \r\n \r\n props.history.push(\"/documents?\" + queryString)}\r\n goToDocument={(retsinfoLink: string) => props.history.push(retsinfoLink)}\r\n />\r\n \r\n \r\n \r\n \r\n props.history.push(\"/documents?\" + queryString)} />\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default Home;\r\n","export enum MatchField {\r\n Title = 1,\r\n PopularTitle = 2,\r\n Stikord = 3,\r\n}\r\n"],"names":["_excluded","propTypes","tag","tagPropType","className","PropTypes","cssModule","CardDeck","props","Tag","attributes","_objectWithoutPropertiesLoose","classes","mapToCssModules","classNames","React","_extends","defaultProps","innerRef","CardBody","ref","MinistryShortcut","Card","children","UncontrolledDropdown","DropdownToggle","caret","color","DropdownMenu","ressorter","map","item","DropdownItem","onClick","selectMinistry","id","name","ParliamentShortcut","Button","seeDocuments","Icon","icon","IconType","OmbudsmandShortcut","selectOmbudsmandEntry","LatestDocumentsShortcut","Row","Col","selectDateRange","DateRange","Day","Week","Month","Year","addDays","dirtyDate","dirtyAmount","requiredArgs","arguments","date","toDate","amount","toInteger","isNaN","Date","NaN","setDate","getDate","subDays","addWeeks","days","subWeeks","addMonths","dayOfMonth","endOfDesiredMonth","getTime","setMonth","getMonth","daysInMonth","setFullYear","getFullYear","subMonths","addYears","subYears","DatabaseOptionEnum","ShortcutsContainer","doDateSearch","range","today","params","format","DateFormats","OrderByKey","sendToSearch","doRessortSearch","doPartliamentSearch","res","documentClassifications","filter","value","ids","documentTypes","doc","documentTypeId","reduce","total","doOmbudsmandSearch","isLawRegistry","setAllFilters","setLawRegistryIsOpen","setMyndighedIsOpen","setParams","x","toString","flatMap","dt","join","this","getRessorter","getDocumentClassification","connect","ownProps","ministryRessorter","dispatch","bindActionCreators","RessortActions","DocumentClassificationActions","DocumentSearchActions","FilterReducerActions","defaultLiveSearchState","liveSearchTerm","hits","staticLiveSearchItemsCount","yearLow","yearHigh","numberAndYearRegExp","allNumbersRegExp","validYearsRegExp","getNumberText","number","getYearText","year","getDBText","selectedDB","getNumberAndYearText","arr","buildText","undefined","SearchBoxContainer","state","currentSearchTerm","liveSearchState","selectedDatabase","REGLER","yearStart","yearEnd","documentNumberRange","titles","EmptyStringArray","popularTitles","stikord","handleDatabaseSelection","val","onLiveSearchTermChange","rawSearchTerm","databaseOptionEnum","trimmedSearchTerm","trim","newLiveSearchState","counter","numberMatches","match","numberYearMatch","push","text","onYearAndNumberMatchClicked","aria","replace","validYearsMatch","length","num","find","test","setState","setParamsAndRedirect","debounce","getDynamicLiveSearchItems","getTop3SearchResultItems","numRange","onSearchButtonClicked","searchTerm","parameters","buildParams","paramsString","qs","liveSearchHitSelected","hit","stateKey","field","MatchField","some","t","AFGOERELSER","L_B_FORSLAG","LiveSearch","onChange","e","data","searchPlaceHolder","buttonStyle","autofocus","lst","paramsQuery","apiGET","paramsSerializer","p","then","response","documents","slice","title","goToDocument","retsinfoLink","template","LiveResultTemplateEnum","shortName","heading","subHeading","popularTitle","headingPrefix","label","isHistoryFlag","showDocumentStateBadge","geografiskDaekningId","retsinfoKlassifikationId","getLiveSearchSuggestionItems","listOfDocumentIds","q","result","catch","error","console","log","yl","yh","dnr","ttl","pttl","so","activePageSize","ps","documentSearch","paramsParsed","document","queryString","history"],"sourceRoot":""}