{"version":3,"file":"static/js/850.f0aad45d.chunk.js","mappings":"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","sources":["components/reprintNotes/ReprintNotes.tsx","components/document/Tags.tsx","components/document/Document.tsx","../node_modules/@babel/runtime/helpers/esm/createForOfIteratorHelper.js","../node_modules/reactstrap/es/Input.js","../node_modules/reactstrap/es/Form.js","../node_modules/reactstrap/es/FormGroup.js","../node_modules/reactstrap/es/Label.js","../node_modules/reactstrap/es/FormFeedback.js","containers/documents/SearchSubscription.tsx","containers/documents/DocumentsContainer.tsx","data/orderByValues.ts","data/publicationMediaFilterData.ts","models/MatchField.ts","../node_modules/ts-debounce/src/index.ts","../node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","../node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","../node_modules/@babel/runtime/helpers/esm/iterableToArray.js","../node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js"],"sourcesContent":["import * as React from \"react\";\r\nimport { Modal, ModalHeader, ModalBody, ModalFooter, Button, Row, Col } from \"reactstrap\";\r\nimport { IReprintNote } from \"../../models/IReprintNote\";\r\nimport { AppState } from \"../../store\";\r\nimport { bindActionCreators } from \"redux\";\r\nimport { connect } from \"react-redux\";\r\nimport { IReprintInformationActions, ReprintInformationActions } from \"../../store/notes/notesReducer\";\r\nimport \"./ReprintNotes.scss\";\r\nimport { Icon, IconType } from \"@lexdania/components\";\r\n\r\nexport interface IReprintNotesProps extends IReprintInformationActions {\r\n  docId: number;\r\n  isOpen: boolean;\r\n  toggleModal: () => void;\r\n  reprintNotes?: IReprintNote[];\r\n  title: string;\r\n  shortName: string;\r\n  ressort: string;\r\n}\r\n\r\nexport const ReprintNotes: React.FC<IReprintNotesProps> = props => {\r\n  const { toggleModal, isOpen, reprintNotes, getReprintNotes, docId, shortName, title, ressort } = props;\r\n\r\n  React.useEffect(() => {\r\n    if (isOpen) {\r\n      getReprintNotes(docId);\r\n    }\r\n  }, [docId, getReprintNotes, isOpen]);\r\n\r\n  return (\r\n    <Modal isOpen={isOpen} className=\"modal-xl reprint-notes-modal\">\r\n      <ModalHeader tag=\"div\">\r\n        <div>{shortName}</div>\r\n        <h3>{title}</h3>\r\n        <div className=\"text-muted\">{ressort}</div>\r\n      </ModalHeader>\r\n      <ModalBody className=\"background-secondary\">\r\n        {reprintNotes &&\r\n          reprintNotes.map((note, index) => (\r\n            <div key={index} className=\"reprint-note\">\r\n              <Row className=\"\">\r\n                <Col className=\"mb-2\">\r\n                  <span>{note.date}</span>\r\n                </Col>\r\n                <Col classname=\"mb-2\">\r\n                  <a href={`/api/pdf/${note.reprintOfId}`} className=\"float-right pr-2\">\r\n                    <span className=\"sr-only\">Åbn PDF af dokumentet inden dette omtryk</span>\r\n                    <Icon icon={IconType.FilePdf} iconSize={22}></Icon>\r\n                  </a>\r\n                </Col>\r\n              </Row>\r\n              <div dangerouslySetInnerHTML={{ __html: note.note.replace(\"\\\\r\\\\n\", \"<br />\") }} />\r\n            </div>\r\n          ))}\r\n      </ModalBody>\r\n      <ModalFooter>\r\n        <Button color=\"primary\" onClick={toggleModal}>\r\n          Ok\r\n        </Button>\r\n      </ModalFooter>\r\n    </Modal>\r\n  );\r\n};\r\n\r\nexport default connect(\r\n  ({ notes }: AppState, ownProps: any): IReprintNotesProps => {\r\n    return {\r\n      ...ownProps,\r\n      reprintNotes: notes.reprintNotes,\r\n    };\r\n  },\r\n  dispatch =>\r\n    bindActionCreators(\r\n      {\r\n        ...ReprintInformationActions,\r\n      },\r\n      dispatch\r\n    )\r\n)(ReprintNotes);\r\n","import { IDocumentTag } from \"models/IDocumentTag\";\r\nimport React from \"react\";\r\nimport { Col } from \"reactstrap\";\r\nimport \"./Tags.scss\";\r\n\r\ninterface IDocumentProps {\r\n  documentId: number;\r\n  heading: string;\r\n  tags: IDocumentTag[];\r\n  publicationMediaId: number;\r\n}\r\n\r\nexport const Tags: React.FC<IDocumentProps> = props => {\r\n  if (props.tags.length > 0) {\r\n    return (\r\n      <Col lg={6}>\r\n        <dl>\r\n          {props.publicationMediaId !== 20 && <dt>{props.heading}</dt>}\r\n          {props.tags.map(tag => (\r\n            <dd key={props.documentId + \"_tag_\" + tag.id} className=\"mb-0\">\r\n              {tag.emneord}{\" \"}\r\n              {tag.underskriftDato && props.publicationMediaId !== 10 && props.publicationMediaId !== 20 && (\r\n                <span className=\"tag-signature\">\r\n                  {tag.underskriftSted && (\r\n                    <>\r\n                      ({tag.underskriftDato}, {tag.underskriftSted})\r\n                    </>\r\n                  )}\r\n                  {!tag.underskriftSted && <>({tag.underskriftDato})</>}\r\n                </span>\r\n              )}\r\n            </dd>\r\n          ))}\r\n        </dl>\r\n      </Col>\r\n    );\r\n  } else {\r\n    return <></>;\r\n  }\r\n};\r\n","import * as React from \"react\";\r\nimport { Col, Row, Badge, Container, Button } from \"reactstrap\";\r\nimport { Icon, IconType } from \"@lexdania/components\";\r\nimport { IDocument } from \"./../../models/IDocument\";\r\nimport \"./Document.scss\";\r\nimport ReprintNotes from \"../reprintNotes/ReprintNotes\";\r\nimport { Link } from \"react-router-dom\";\r\nimport { Tags } from \"./Tags\";\r\n\r\nfunction nlToBr(str: string = \"\"): string | JSX.Element[] {\r\n  const arr = str.split(\"\\\\n\");\r\n  if (arr.length < 2) {\r\n    return str;\r\n  }\r\n  const elmsArr = arr.flatMap((s, i) => [<span key={i}>{s}</span>, <br key={\"b\" + i} />]);\r\n  elmsArr.pop();\r\n  return elmsArr;\r\n}\r\n\r\ninterface IDocumentProps {\r\n  document: IDocument;\r\n  sidebarVisible: boolean;\r\n}\r\n\r\nconst Document: React.FC<IDocumentProps> = props => {\r\n  const { document: d } = props;\r\n  const [showReprintNotes, setShowReprintNotes] = React.useState(false);\r\n  const [showTags, setShowTags] = React.useState(false);\r\n\r\n  const toggleReprintNotes = () => {\r\n    setShowReprintNotes(!showReprintNotes);\r\n  };\r\n\r\n  React.useEffect(() => {\r\n    setShowTags(false);\r\n    setShowReprintNotes(false);\r\n  }, [d.id]);\r\n\r\n  return (\r\n    <Container className=\"document-entry py-3 px-sm-0 pl-sm-0\">\r\n      <ReprintNotes ressort={d.ressortName} isOpen={showReprintNotes} toggleModal={toggleReprintNotes} docId={d.id} title={d.title} shortName={d.shortName} />\r\n      <Row className=\"my-2\">\r\n        <Col lg={8} xl={7} className=\"px-xs-0\">\r\n          <div className=\"document-short-name d-block d-sm-inline pb-1 pb-sm-0 mr-sm-2\">{d.shortName}</div>\r\n          <div className=\"badge-container d-block d-sm-inline py-1 py-md-0 mr-sm-2\">\r\n            <Badge color=\"secondary\" className=\"py-2 px-3\">\r\n              {d.publicationMedia.name}\r\n            </Badge>\r\n          </div>\r\n          {d.isReprint && (\r\n            <Button color=\"primary\" className=\" py-2 px-3 omtrykt-badge badge btn-badge \" onClick={toggleReprintNotes}>\r\n              OMTRYKT\r\n            </Button>\r\n          )}\r\n        </Col>\r\n        <Col className=\"document-ressort text-lg-right text-sm-left py-1 py-md-0 px-xs-0 \">{d.ressortName}</Col>\r\n      </Row>\r\n      <Row>\r\n        <Col lg={12} className=\"px-xs-0\">\r\n          <a href={`/api/pdf/${d.id}`}>\r\n            <h3>{nlToBr(d.title)}</h3>\r\n          </a>\r\n        </Col>\r\n      </Row>\r\n      <Row className=\"mt-md-2\">\r\n        <Col md={props.sidebarVisible ? 5 : 6} className=\"document-popular-title my-2 my-md-0 px-xs-0\">\r\n          {d.offentliggoerelsesDato}\r\n          {d.popularTitle && d.offentliggoerelsesDato && <div className=\" seperator\" />}\r\n          {d.popularTitle}\r\n        </Col>\r\n\r\n        <Col md={props.sidebarVisible ? 7 : 6} className=\"text-right px-xs-0 d-flex d-md-block justify-content-between\">\r\n          {d.lovtidendeAEmneord.length + d.lovtidendeCBilateraleEmneord.length + d.lovtidendeCMultilateraleEmneord.length > 0 && (\r\n            <>\r\n              <Link\r\n                to=\"#\"\r\n                onClick={e => {\r\n                  e.preventDefault();\r\n                  setShowTags(!showTags);\r\n                }}\r\n                aria-controls=\"tags-area\"\r\n              >\r\n                <span className=\"sr-only\">{showTags ? \"Skjul \" : \"Vis \"}</span>Emneord\r\n                <div className=\"angle-container\">\r\n                  <Icon icon={IconType.AngleRight} iconSize={20} className={!showTags ? \"svg-rotate collapsed ml-2\" : \"svg-rotate ml-2\"} />\r\n                </div>\r\n              </Link>\r\n              <div className=\"seperator d-none d-md-inline-block\" />\r\n            </>\r\n          )}\r\n          {d.retsinfoLink && (\r\n            <a href={d.retsinfoLink} target=\"_blank\" rel=\"noopener noreferrer\" className=\"d-block d-md-inline mt-0\">\r\n              <span className=\"sr-only\">Åbn dokumentet på </span>Retsinformation\r\n              <Icon icon={IconType.ExternalLink} className=\"ml-2\" />\r\n            </a>\r\n          )}\r\n        </Col>\r\n      </Row>\r\n      {showTags && (\r\n        <Row id=\"tags-area\">\r\n          <Col>\r\n            <div className=\"tags\">\r\n              <Row>\r\n                <Tags publicationMediaId={d.publicationMedia.id} tags={d.lovtidendeAEmneord} documentId={d.id} heading=\"Lovtidende A\" />\r\n                <Tags\r\n                  publicationMediaId={d.publicationMedia.id}\r\n                  tags={d.lovtidendeCBilateraleEmneord}\r\n                  documentId={d.id}\r\n                  heading=\"Lovtidende C Bilaterale overenskomster\"\r\n                />\r\n                <Tags\r\n                  publicationMediaId={d.publicationMedia.id}\r\n                  tags={d.lovtidendeCMultilateraleEmneord}\r\n                  documentId={d.id}\r\n                  heading=\"Lovtidende C Multilaterale overenskomster\"\r\n                />\r\n              </Row>\r\n            </div>\r\n          </Col>\r\n        </Row>\r\n      )}\r\n    </Container>\r\n  );\r\n};\r\n\r\nexport default Document;\r\n","import unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nexport default function _createForOfIteratorHelper(o, allowArrayLike) {\n  var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"];\n\n  if (!it) {\n    if (Array.isArray(o) || (it = unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n      if (it) o = it;\n      var i = 0;\n\n      var F = function F() {};\n\n      return {\n        s: F,\n        n: function n() {\n          if (i >= o.length) return {\n            done: true\n          };\n          return {\n            done: false,\n            value: o[i++]\n          };\n        },\n        e: function e(_e) {\n          throw _e;\n        },\n        f: F\n      };\n    }\n\n    throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n  }\n\n  var normalCompletion = true,\n      didErr = false,\n      err;\n  return {\n    s: function s() {\n      it = it.call(o);\n    },\n    n: function n() {\n      var step = it.next();\n      normalCompletion = step.done;\n      return step;\n    },\n    e: function e(_e2) {\n      didErr = true;\n      err = _e2;\n    },\n    f: function f() {\n      try {\n        if (!normalCompletion && it[\"return\"] != null) it[\"return\"]();\n      } finally {\n        if (didErr) throw err;\n      }\n    }\n  };\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nvar _excluded = [\"className\", \"cssModule\", \"type\", \"bsSize\", \"valid\", \"invalid\", \"tag\", \"addon\", \"plaintext\", \"innerRef\"];\n\n/* eslint react/prefer-stateless-function: 0 */\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules, warnOnce, tagPropType } from './utils';\nvar propTypes = {\n  children: PropTypes.node,\n  type: PropTypes.string,\n  size: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n  bsSize: PropTypes.string,\n  valid: PropTypes.bool,\n  invalid: PropTypes.bool,\n  tag: tagPropType,\n  innerRef: PropTypes.oneOfType([PropTypes.object, PropTypes.func, PropTypes.string]),\n  plaintext: PropTypes.bool,\n  addon: PropTypes.bool,\n  className: PropTypes.string,\n  cssModule: PropTypes.object\n};\nvar defaultProps = {\n  type: 'text'\n};\n\nvar Input = /*#__PURE__*/function (_React$Component) {\n  _inheritsLoose(Input, _React$Component);\n\n  function Input(props) {\n    var _this;\n\n    _this = _React$Component.call(this, props) || this;\n    _this.getRef = _this.getRef.bind(_assertThisInitialized(_this));\n    _this.focus = _this.focus.bind(_assertThisInitialized(_this));\n    return _this;\n  }\n\n  var _proto = Input.prototype;\n\n  _proto.getRef = function getRef(ref) {\n    if (this.props.innerRef) {\n      this.props.innerRef(ref);\n    }\n\n    this.ref = ref;\n  };\n\n  _proto.focus = function focus() {\n    if (this.ref) {\n      this.ref.focus();\n    }\n  };\n\n  _proto.render = function render() {\n    var _this$props = this.props,\n        className = _this$props.className,\n        cssModule = _this$props.cssModule,\n        type = _this$props.type,\n        bsSize = _this$props.bsSize,\n        valid = _this$props.valid,\n        invalid = _this$props.invalid,\n        tag = _this$props.tag,\n        addon = _this$props.addon,\n        plaintext = _this$props.plaintext,\n        innerRef = _this$props.innerRef,\n        attributes = _objectWithoutPropertiesLoose(_this$props, _excluded);\n\n    var checkInput = ['radio', 'checkbox'].indexOf(type) > -1;\n    var isNotaNumber = new RegExp('\\\\D', 'g');\n    var fileInput = type === 'file';\n    var textareaInput = type === 'textarea';\n    var selectInput = type === 'select';\n    var rangeInput = type === 'range';\n    var Tag = tag || (selectInput || textareaInput ? type : 'input');\n    var formControlClass = 'form-control';\n\n    if (plaintext) {\n      formControlClass = formControlClass + \"-plaintext\";\n      Tag = tag || 'input';\n    } else if (fileInput) {\n      formControlClass = formControlClass + \"-file\";\n    } else if (rangeInput) {\n      formControlClass = formControlClass + \"-range\";\n    } else if (checkInput) {\n      if (addon) {\n        formControlClass = null;\n      } else {\n        formControlClass = 'form-check-input';\n      }\n    }\n\n    if (attributes.size && isNotaNumber.test(attributes.size)) {\n      warnOnce('Please use the prop \"bsSize\" instead of the \"size\" to bootstrap\\'s input sizing.');\n      bsSize = attributes.size;\n      delete attributes.size;\n    }\n\n    var classes = mapToCssModules(classNames(className, invalid && 'is-invalid', valid && 'is-valid', bsSize ? \"form-control-\" + bsSize : false, formControlClass), cssModule);\n\n    if (Tag === 'input' || tag && typeof tag === 'function') {\n      attributes.type = type;\n    }\n\n    if (attributes.children && !(plaintext || type === 'select' || typeof Tag !== 'string' || Tag === 'select')) {\n      warnOnce(\"Input with a type of \\\"\" + type + \"\\\" cannot have children. Please use \\\"value\\\"/\\\"defaultValue\\\" instead.\");\n      delete attributes.children;\n    }\n\n    return /*#__PURE__*/React.createElement(Tag, _extends({}, attributes, {\n      ref: innerRef,\n      className: classes,\n      \"aria-invalid\": invalid\n    }));\n  };\n\n  return Input;\n}(React.Component);\n\nInput.propTypes = propTypes;\nInput.defaultProps = defaultProps;\nexport default Input;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nvar _excluded = [\"className\", \"cssModule\", \"inline\", \"tag\", \"innerRef\"];\nimport React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules, tagPropType } from './utils';\nvar propTypes = {\n  children: PropTypes.node,\n  inline: PropTypes.bool,\n  tag: tagPropType,\n  innerRef: PropTypes.oneOfType([PropTypes.object, PropTypes.func, PropTypes.string]),\n  className: PropTypes.string,\n  cssModule: PropTypes.object\n};\nvar defaultProps = {\n  tag: 'form'\n};\n\nvar Form = /*#__PURE__*/function (_Component) {\n  _inheritsLoose(Form, _Component);\n\n  function Form(props) {\n    var _this;\n\n    _this = _Component.call(this, props) || this;\n    _this.getRef = _this.getRef.bind(_assertThisInitialized(_this));\n    _this.submit = _this.submit.bind(_assertThisInitialized(_this));\n    return _this;\n  }\n\n  var _proto = Form.prototype;\n\n  _proto.getRef = function getRef(ref) {\n    if (this.props.innerRef) {\n      this.props.innerRef(ref);\n    }\n\n    this.ref = ref;\n  };\n\n  _proto.submit = function submit() {\n    if (this.ref) {\n      this.ref.submit();\n    }\n  };\n\n  _proto.render = function render() {\n    var _this$props = this.props,\n        className = _this$props.className,\n        cssModule = _this$props.cssModule,\n        inline = _this$props.inline,\n        Tag = _this$props.tag,\n        innerRef = _this$props.innerRef,\n        attributes = _objectWithoutPropertiesLoose(_this$props, _excluded);\n\n    var classes = mapToCssModules(classNames(className, inline ? 'form-inline' : false), cssModule);\n    return /*#__PURE__*/React.createElement(Tag, _extends({}, attributes, {\n      ref: innerRef,\n      className: classes\n    }));\n  };\n\n  return Form;\n}(Component);\n\nForm.propTypes = propTypes;\nForm.defaultProps = defaultProps;\nexport default Form;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"className\", \"cssModule\", \"row\", \"disabled\", \"check\", \"inline\", \"tag\"];\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules, tagPropType } from './utils';\nvar propTypes = {\n  children: PropTypes.node,\n  row: PropTypes.bool,\n  check: PropTypes.bool,\n  inline: PropTypes.bool,\n  disabled: PropTypes.bool,\n  tag: tagPropType,\n  className: PropTypes.string,\n  cssModule: PropTypes.object\n};\nvar defaultProps = {\n  tag: 'div'\n};\n\nvar FormGroup = function FormGroup(props) {\n  var className = props.className,\n      cssModule = props.cssModule,\n      row = props.row,\n      disabled = props.disabled,\n      check = props.check,\n      inline = props.inline,\n      Tag = props.tag,\n      attributes = _objectWithoutPropertiesLoose(props, _excluded);\n\n  var classes = mapToCssModules(classNames(className, row ? 'row' : false, check ? 'form-check' : 'form-group', check && inline ? 'form-check-inline' : false, check && disabled ? 'disabled' : false), cssModule);\n\n  if (Tag === 'fieldset') {\n    attributes.disabled = disabled;\n  }\n\n  return /*#__PURE__*/React.createElement(Tag, _extends({}, attributes, {\n    className: classes\n  }));\n};\n\nFormGroup.propTypes = propTypes;\nFormGroup.defaultProps = defaultProps;\nexport default FormGroup;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"className\", \"cssModule\", \"hidden\", \"widths\", \"tag\", \"check\", \"size\", \"for\"];\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules, tagPropType, isObject } from './utils';\nvar colWidths = ['xs', 'sm', 'md', 'lg', 'xl'];\nvar stringOrNumberProp = PropTypes.oneOfType([PropTypes.number, PropTypes.string]);\nvar columnProps = PropTypes.oneOfType([PropTypes.bool, PropTypes.string, PropTypes.number, PropTypes.shape({\n  size: stringOrNumberProp,\n  order: stringOrNumberProp,\n  offset: stringOrNumberProp\n})]);\nvar propTypes = {\n  children: PropTypes.node,\n  hidden: PropTypes.bool,\n  check: PropTypes.bool,\n  size: PropTypes.string,\n  for: PropTypes.string,\n  tag: tagPropType,\n  className: PropTypes.string,\n  cssModule: PropTypes.object,\n  xs: columnProps,\n  sm: columnProps,\n  md: columnProps,\n  lg: columnProps,\n  xl: columnProps,\n  widths: PropTypes.array\n};\nvar defaultProps = {\n  tag: 'label',\n  widths: colWidths\n};\n\nvar getColumnSizeClass = function getColumnSizeClass(isXs, colWidth, colSize) {\n  if (colSize === true || colSize === '') {\n    return isXs ? 'col' : \"col-\" + colWidth;\n  } else if (colSize === 'auto') {\n    return isXs ? 'col-auto' : \"col-\" + colWidth + \"-auto\";\n  }\n\n  return isXs ? \"col-\" + colSize : \"col-\" + colWidth + \"-\" + colSize;\n};\n\nvar Label = function Label(props) {\n  var className = props.className,\n      cssModule = props.cssModule,\n      hidden = props.hidden,\n      widths = props.widths,\n      Tag = props.tag,\n      check = props.check,\n      size = props.size,\n      htmlFor = props.for,\n      attributes = _objectWithoutPropertiesLoose(props, _excluded);\n\n  var colClasses = [];\n  widths.forEach(function (colWidth, i) {\n    var columnProp = props[colWidth];\n    delete attributes[colWidth];\n\n    if (!columnProp && columnProp !== '') {\n      return;\n    }\n\n    var isXs = !i;\n    var colClass;\n\n    if (isObject(columnProp)) {\n      var _classNames;\n\n      var colSizeInterfix = isXs ? '-' : \"-\" + colWidth + \"-\";\n      colClass = getColumnSizeClass(isXs, colWidth, columnProp.size);\n      colClasses.push(mapToCssModules(classNames((_classNames = {}, _classNames[colClass] = columnProp.size || columnProp.size === '', _classNames[\"order\" + colSizeInterfix + columnProp.order] = columnProp.order || columnProp.order === 0, _classNames[\"offset\" + colSizeInterfix + columnProp.offset] = columnProp.offset || columnProp.offset === 0, _classNames))), cssModule);\n    } else {\n      colClass = getColumnSizeClass(isXs, colWidth, columnProp);\n      colClasses.push(colClass);\n    }\n  });\n  var classes = mapToCssModules(classNames(className, hidden ? 'sr-only' : false, check ? 'form-check-label' : false, size ? \"col-form-label-\" + size : false, colClasses, colClasses.length ? 'col-form-label' : false), cssModule);\n  return /*#__PURE__*/React.createElement(Tag, _extends({\n    htmlFor: htmlFor\n  }, attributes, {\n    className: classes\n  }));\n};\n\nLabel.propTypes = propTypes;\nLabel.defaultProps = defaultProps;\nexport default Label;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"className\", \"cssModule\", \"valid\", \"tooltip\", \"tag\"];\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules, tagPropType } from './utils';\nvar propTypes = {\n  children: PropTypes.node,\n  tag: tagPropType,\n  className: PropTypes.string,\n  cssModule: PropTypes.object,\n  valid: PropTypes.bool,\n  tooltip: PropTypes.bool\n};\nvar defaultProps = {\n  tag: 'div',\n  valid: undefined\n};\n\nvar FormFeedback = function FormFeedback(props) {\n  var className = props.className,\n      cssModule = props.cssModule,\n      valid = props.valid,\n      tooltip = props.tooltip,\n      Tag = props.tag,\n      attributes = _objectWithoutPropertiesLoose(props, _excluded);\n\n  var validMode = tooltip ? 'tooltip' : 'feedback';\n  var classes = mapToCssModules(classNames(className, valid ? \"valid-\" + validMode : \"invalid-\" + validMode), cssModule);\n  return /*#__PURE__*/React.createElement(Tag, _extends({}, attributes, {\n    className: classes\n  }));\n};\n\nFormFeedback.propTypes = propTypes;\nFormFeedback.defaultProps = defaultProps;\nexport default FormFeedback;","import { ISearchSubscribeFilters, ICollapsableTreeNode, IKeywordSection, IKeyword } from \"@lexdania/components\";\r\nimport * as React from \"react\";\r\nimport { Alert, Button, Form, FormFeedback, FormGroup, Input, Label, Modal, ModalBody, ModalFooter, ModalHeader } from \"reactstrap\";\r\nimport { apiPOST } from \"../../store/api\";\r\nimport { ISubscriptionResult } from \"../../models/ISubscriptionResult\";\r\n\r\nexport interface IDocumentSubscribeFormModel {\r\n  email: string;\r\n  title: string;\r\n  ressortFilters: ICollapsableTreeNode[];\r\n  publicationMediaFilters: ICollapsableTreeNode[];\r\n  tagsFilters: IKeywordSection[];\r\n}\r\n\r\ninterface IQuerySubscriberModel {\r\n  email: string;\r\n  title: string;\r\n  searchFilters: ISearchSubscribeFilters;\r\n}\r\n\r\ninterface IProps {\r\n  showModal: boolean;\r\n  subscriptionUrl: string;\r\n  titleErrorText: string;\r\n  emailErrorText: string;\r\n  formErrorText: string;\r\n  onDismiss: () => void;\r\n  ressortFilters: ICollapsableTreeNode[];\r\n  publicationMediaFilters: ICollapsableTreeNode[];\r\n  tagsFilters: IKeywordSection[];\r\n  chips: JSX.Element;\r\n}\r\n\r\ninterface IState {\r\n  email: string;\r\n  title: string;\r\n  isTitleValid: boolean;\r\n  isEmailValid: boolean;\r\n  isFormValid: boolean;\r\n  isSubmitted: boolean;\r\n}\r\n\r\nexport class SearchSubscription extends React.Component<IProps, IState> {\r\n  private readonly InputEmailId = \"subscribeEmail\";\r\n  private readonly InputTitleId = \"subscribeTitle\";\r\n\r\n  public constructor(props: IProps) {\r\n    super(props);\r\n\r\n    this.state = {\r\n      email: \"\",\r\n      title: \"\",\r\n      isTitleValid: true,\r\n      isEmailValid: true,\r\n      isFormValid: true,\r\n      isSubmitted: false,\r\n    };\r\n  }\r\n\r\n  public render() {\r\n    const { showModal, onDismiss, titleErrorText, emailErrorText, formErrorText, ressortFilters, tagsFilters, chips, publicationMediaFilters } = this.props;\r\n    const { email, title, isTitleValid, isEmailValid, isFormValid, isSubmitted } = this.state;\r\n    const subscription: IDocumentSubscribeFormModel = {\r\n      email,\r\n      title,\r\n      ressortFilters: ressortFilters,\r\n      tagsFilters,\r\n      publicationMediaFilters: publicationMediaFilters,\r\n    };\r\n\r\n    return (\r\n      <Modal isOpen={showModal}>\r\n        <Form onSubmit={this.handleSubmit(subscription)} className=\"needs-validation\" noValidate={true}>\r\n          <ModalHeader>Abonnér på søgning</ModalHeader>\r\n          <ModalBody>\r\n            {!isSubmitted && (\r\n              <>\r\n                <FormGroup>\r\n                  <Label>Vil du abonnere på følgende filtre?</Label>\r\n                  <div>{chips}</div>\r\n                  <Alert color=\"info\">\r\n                    <p>Bemærk at kun følgende filtre er inkluderet i søgningen:</p>\r\n                    <ul>\r\n                      <li>Ministerier</li>\r\n                      <li>Publiceringsmedie</li>\r\n                      <li>Emneord</li>\r\n                    </ul>\r\n                  </Alert>\r\n                </FormGroup>\r\n                <FormGroup>\r\n                  <Label for={this.InputTitleId}>Søgetitel</Label>\r\n                  <Input\r\n                    type=\"text\"\r\n                    required={true}\r\n                    pattern=\".*\\S.*\"\r\n                    id={this.InputTitleId}\r\n                    value={title}\r\n                    onChange={this.handleInputChange}\r\n                    invalid={!isTitleValid}\r\n                  />\r\n                  <FormFeedback tooltip={true}>{titleErrorText}</FormFeedback>\r\n                </FormGroup>\r\n                <FormGroup>\r\n                  <Label for={this.InputEmailId}>E-mail</Label>\r\n                  <Input type=\"email\" required={true} id={this.InputEmailId} value={email} onChange={this.handleInputChange} invalid={!isEmailValid} />\r\n                  <FormFeedback tooltip={true}>{emailErrorText}</FormFeedback>\r\n                </FormGroup>\r\n              </>\r\n            )}\r\n            {isSubmitted && (\r\n              <p>\r\n                Din søgning er nu registreret. Du vil modtage en email på {email}, hvori du skal aktivere abonnementet og give samtykke til, at Civilstyrelsen\r\n                indsamler og behandler relevante personoplysninger.\r\n              </p>\r\n            )}\r\n            {!isFormValid && (\r\n              <FormGroup>\r\n                <Alert>\r\n                  <p>Der er fejl fra serveren:</p>\r\n                  <p>{formErrorText}</p>\r\n                </Alert>\r\n              </FormGroup>\r\n            )}\r\n          </ModalBody>\r\n          {!isSubmitted && (\r\n            <ModalFooter>\r\n              <Button color=\"primary\" type=\"submit\">\r\n                Abonnér\r\n              </Button>\r\n              <Button color=\"secondary\" onClick={onDismiss}>\r\n                Annuller\r\n              </Button>\r\n            </ModalFooter>\r\n          )}\r\n          {isSubmitted && (\r\n            <ModalFooter>\r\n              <Button color=\"primary\" onClick={onDismiss}>\r\n                OK\r\n              </Button>\r\n            </ModalFooter>\r\n          )}\r\n        </Form>\r\n      </Modal>\r\n    );\r\n  }\r\n\r\n  public handleInputChange = (e: React.SyntheticEvent<HTMLInputElement>) => {\r\n    switch (e.currentTarget.id) {\r\n      case this.InputEmailId:\r\n        this.setState({ email: e.currentTarget.value, isEmailValid: true });\r\n        break;\r\n      case this.InputTitleId:\r\n        this.setState({ title: e.currentTarget.value, isTitleValid: true });\r\n        break;\r\n      default:\r\n        break;\r\n    }\r\n  };\r\n\r\n  public handleSubmit = (subscribeForm: IDocumentSubscribeFormModel) => async (e: React.SyntheticEvent<HTMLFormElement>) => {\r\n    e.preventDefault();\r\n\r\n    const isFormValid: boolean = e.currentTarget.checkValidity();\r\n    if (isFormValid) {\r\n      const body = this.getQuerySubscriberModel(subscribeForm);\r\n      const result = await apiPOST<ISubscriptionResult>(this.props.subscriptionUrl, JSON.stringify(body));\r\n      this.setState({ isFormValid: !result.isError });\r\n      if (!result.isError) {\r\n        this.setState({ isSubmitted: true });\r\n      }\r\n    } else {\r\n      this.handleFormErrors(e);\r\n    }\r\n  };\r\n\r\n  private handleFormErrors(e: React.SyntheticEvent<HTMLFormElement>) {\r\n    const formElements = Array.from(e.currentTarget.elements).filter(element => {\r\n      return [this.InputEmailId, this.InputTitleId].includes(element.id);\r\n    });\r\n    for (const element of formElements) {\r\n      const el = element as HTMLInputElement;\r\n      switch (element.id) {\r\n        case this.InputEmailId:\r\n          this.setState({ isEmailValid: el.validity.valid });\r\n          break;\r\n        case this.InputTitleId:\r\n          this.setState({ isTitleValid: el.validity.valid });\r\n          break;\r\n        default:\r\n          break;\r\n      }\r\n    }\r\n  }\r\n\r\n  private getQuerySubscriberModel(subscribeForm: IDocumentSubscribeFormModel): IQuerySubscriberModel {\r\n    const rFilters = subscribeForm.ressortFilters\r\n      .filter((f: ICollapsableTreeNode) => f.checked)\r\n      .map((f: ICollapsableTreeNode) => ({ value: f.value, key: \"r\" }));\r\n\r\n    const dtFilters = subscribeForm.publicationMediaFilters\r\n      .flatMap((pubMedParent: ICollapsableTreeNode) => pubMedParent.children!)\r\n      .filter((f: ICollapsableTreeNode) => f.checked)\r\n      .map((f: ICollapsableTreeNode) => ({ value: f.value, key: \"dt\" }));\r\n\r\n    const eFilters = subscribeForm.tagsFilters.map((x: IKeywordSection) =>\r\n      x.keywords.filter((f: IKeyword) => f.checked).map((v: IKeyword) => ({ value: v.id, key: \"e\" }))\r\n    );\r\n\r\n    return {\r\n      email: subscribeForm.email,\r\n      title: subscribeForm.title,\r\n      searchFilters: {\r\n        r: rFilters,\r\n        dt: dtFilters,\r\n        e: eFilters,\r\n      },\r\n    };\r\n  }\r\n}\r\n","import * as React from \"react\";\r\nimport * as qs from \"query-string\";\r\nimport \"./DocumentsContainer.scss\";\r\nimport { DocumentSearchActions, IDocumentSearchActions, DocumentSearchParams } from \"../../store/documents/documentSearchReducer\";\r\nimport { RessortActions, IRessortActions } from \"../../store/ressorter/ressortReducer\";\r\nimport { connect } from \"react-redux\";\r\nimport { bindActionCreators } from \"redux\";\r\nimport { RouteComponentProps } from \"react-router\";\r\nimport { apiGET } from \"../../store/api\";\r\nimport { Col, Row, Card, Input } from \"reactstrap\";\r\nimport {\r\n  IconType,\r\n  SearchChip,\r\n  DoubleSlider,\r\n  CollapsableTree,\r\n  ICollapsableTreeNode,\r\n  updateOnArrowClick,\r\n  LiveSearch,\r\n  EmptyStringArray,\r\n  ILiveResultItemProps,\r\n  SearchChipHistory,\r\n  LiveResultTemplateEnum,\r\n  IKeywordSection,\r\n  Keyword,\r\n  updateKeywordOnChecked,\r\n  toggleNodeCheckedAndUpdate,\r\n  PageSize,\r\n  SearchResultView,\r\n  CollapsibleBox,\r\n  IOrderByValue,\r\n} from \"@lexdania/components\";\r\nimport { IDocumentSearchResult } from \"models/IDocumentSearchResult\";\r\nimport { AppState } from \"../../store\";\r\nimport { IRessort } from \"models/IRessort\";\r\nimport { publicationMediaFilterData } from \"../../data/publicationMediaFilterData\";\r\nimport { debounce } from \"ts-debounce\";\r\nimport { IDocument } from \"models/IDocument\";\r\nimport { IRessortCollection } from \"models/IRessortCollection\";\r\nimport { SearchSubscription } from \"./SearchSubscription\";\r\nimport { LiveSearchHitDto } from \"models/LiveSearchHitDto\";\r\nimport { MatchField } from \"models/MatchField\";\r\nimport Document from \"../../components/document/Document\";\r\nimport { orderByValues } from \"./../../data/orderByValues\";\r\nimport { Link } from \"react-router-dom\";\r\nimport { TagActions, ITagActions } from \"store/tags/tagsReducer\";\r\nimport { ITagSectionList } from \"./../../models/ITagSectionList\";\r\nimport { ITag } from \"models/ITag\";\r\n\r\ninterface IDocumentsContainerProps extends IDocumentSearchActions, RouteComponentProps<{}>, IRessortActions, ITagActions {\r\n  paramsString: string;\r\n  paramsOrDefaults: Readonly<DocumentSearchParams>;\r\n  ressorter: IRessortCollection;\r\n  tags: ITagSectionList;\r\n}\r\n\r\ninterface IDocumentSearchParamsState {\r\n  activePage: number;\r\n  activePageSize: PageSize;\r\n  selectedOrderByValue?: IOrderByValue;\r\n  ascendingOrder: boolean;\r\n  yearStart: number;\r\n  yearEnd: number;\r\n  searchTerms: string[];\r\n  titles: string[];\r\n  popularTitles: string[];\r\n  historicalRessorter: string[];\r\n  st: string;\r\n  et: string;\r\n  documentNumberRange: string; // can be values: 10 | <12 | >100 | 20-30\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 IDocumentsContainerState extends IDocumentSearchParamsState {\r\n  searchResult: IDocumentSearchResult;\r\n  ressortList: ICollapsableTreeNode[];\r\n  tagSectionList: IKeywordSection[];\r\n  builtFilters: boolean;\r\n  searchTerms: string[];\r\n  currentSearchTerm: string;\r\n  liveSearchState: ILiveSearchState;\r\n  publicationMediaList: ICollapsableTreeNode[];\r\n  searchSubscriptionModalShown: boolean;\r\n  yearStartTmp: number | \"\";\r\n  yearEndTmp: number | \"\";\r\n}\r\n\r\nconst keys = [\"a\", \"b\", \"c\", \"d\", \"e\", \"f\", \"g\", \"h\", \"i\", \"j\", \"k\", \"l\", \"m\", \"n\", \"o\", \"p\", \"q\", \"r\", \"s\", \"t\", \"u\", \"v\", \"w\", \"x\", \"y\", \"z\", \"æ\", \"ø\", \"å\"];\r\n\r\n// does the rawSearchTerm match number/year pattern\r\n// match for: 20 2018 | >10 2014 | <50 2015 | 22-33 2017 but not 20 1999 | 1-3 1960\r\nconst numberAndYearRegExp: RegExp = /(^(<|>){1}([1-9]\\d*)|^([1-9]\\d*)|^([1-9]\\d*)(-)([1-9]\\d*))( (200[89])|(20[1-9]\\d)|(21\\d\\d))?$/;\r\nconst allNumbersRegExp: RegExp = /\\d+/g;\r\nconst validYearsRegExp: RegExp = /(?:^|\\D)(200[89])|(20[1-9]\\d)|(21\\d\\d)(?!\\d)/g;\r\n\r\nfunction removeNewline(str: string = \"\", replaceWith: string = \"\"): string {\r\n  return str.replace(\"\\\\n\", replaceWith);\r\n}\r\n\r\nfunction getNumberText(number: string | null) {\r\n  if (number === null || number === \"\") return \"\";\r\n  return \"Søg efter nummer <strong>\" + number + \"</strong>\";\r\n}\r\n\r\nfunction getYearText(year: string | null) {\r\n  if (year === null) return \"\";\r\n  return \" i årgang <strong>\" + year + \"</strong>\";\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 <strong>mindre end \" + arr[3] + \"</strong>\";\r\n  }\r\n\r\n  if (arr[2] === \">\") {\r\n    buildText = \"Søg efter numre <strong>større end \" + arr[3] + \"</strong>\";\r\n  }\r\n\r\n  if (arr[6] === \"-\") {\r\n    buildText = \"Søg efter numre i intervallet <strong>\" + arr[1] + \"</strong>\";\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\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 defaultParams: Readonly<DocumentSearchParams> = {\r\n  page: 0,\r\n  ps: PageSize.Ten,\r\n  yh: new Date().getFullYear(),\r\n  yl: 2008,\r\n  o: orderByValues[0].key,\r\n  d: false,\r\n  r: EmptyStringArray,\r\n  t: EmptyStringArray,\r\n  dt: EmptyStringArray,\r\n  ttl: EmptyStringArray,\r\n  pttl: EmptyStringArray,\r\n  hr: EmptyStringArray,\r\n  st: \"\",\r\n  et: \"\",\r\n  dnr: \"\",\r\n  e: EmptyStringArray,\r\n};\r\n\r\nconst yearLow = 2008;\r\nconst yearHigh = new Date().getFullYear();\r\n\r\nconst isNaNOrEmptyString = (numOrEmptyString: number | \"\") => numOrEmptyString === \"\" || Number.isNaN(numOrEmptyString);\r\n\r\nconst clampYear = (year: number) => Math.min(Math.max(year, yearLow), yearHigh);\r\n\r\nfunction paramsToDspState(dsp: DocumentSearchParams): IDocumentSearchParamsState {\r\n  return {\r\n    activePage: dsp.page,\r\n    activePageSize: dsp.ps,\r\n    selectedOrderByValue: orderByValues.find(obv => obv.key === dsp.o) || orderByValues[0],\r\n    ascendingOrder: dsp.d,\r\n    yearStart: clampYear(dsp.yl),\r\n    yearEnd: clampYear(dsp.yh),\r\n    searchTerms: dsp.t,\r\n    titles: dsp.ttl,\r\n    popularTitles: dsp.pttl,\r\n    historicalRessorter: dsp.hr,\r\n    st: dsp.st,\r\n    et: dsp.et,\r\n    documentNumberRange: dsp.dnr,\r\n  };\r\n}\r\n\r\nclass DocumentsContainer extends React.Component<IDocumentsContainerProps, IDocumentsContainerState> {\r\n  public readonly state: IDocumentsContainerState = {\r\n    searchResult: { pageCount: 0, documents: [], resultCount: 0 },\r\n    ...paramsToDspState(this.props.paramsOrDefaults),\r\n    ressortList: [],\r\n    tagSectionList: [{ label: \"Lovtidende X\", id: \"lovX\", keywords: [] }],\r\n    currentSearchTerm: \"\",\r\n    liveSearchState: defaultLiveSearchState,\r\n    builtFilters: false,\r\n    publicationMediaList: [],\r\n    searchSubscriptionModalShown: false,\r\n    yearStartTmp: \"\",\r\n    yearEndTmp: \"\",\r\n  };\r\n\r\n  componentDidMount() {\r\n    document.title = \"Lovtidende | Søg dokumenter\";\r\n    this.initFiltersAndSearch();\r\n    this.props.getRessorter();\r\n    this.props.getTags();\r\n  }\r\n\r\n  componentDidUpdate() {\r\n    this.initFiltersAndSearch();\r\n  }\r\n\r\n  public initFiltersAndSearch() {\r\n    if (this.props.paramsString !== this.props.location.search) {\r\n      if (this.props.location.search) {\r\n        this.props.setParams(this.props.location.search);\r\n      } else {\r\n        this.props.history.replace(this.props.paramsString);\r\n      }\r\n      this.setState({ builtFilters: false });\r\n      return;\r\n    }\r\n\r\n    if (this.props.ressorter.active.length === 0) {\r\n      return;\r\n    }\r\n    if (this.props.tags.lovA.length === 0) {\r\n      return;\r\n    }\r\n\r\n    if (this.state.builtFilters) {\r\n      return;\r\n    }\r\n\r\n    const stateFromParams = paramsToDspState(this.props.paramsOrDefaults);\r\n    this.setState(\r\n      {\r\n        ...stateFromParams,\r\n        builtFilters: true,\r\n        ressortList: this.getRessortFilters(this.props.ressorter.active!),\r\n        tagSectionList: this.getTagSectionListFilters(this.props.tags),\r\n        publicationMediaList: this.getPublicationMediaDocTypeFilters(publicationMediaFilterData),\r\n        yearStartTmp: stateFromParams.yearStart,\r\n        yearEndTmp: stateFromParams.yearEnd,\r\n      },\r\n      () => this.doSearch(this.props.paramsString)\r\n    );\r\n  }\r\n\r\n  public onOrderByChange = (value: IOrderByValue) => (e: React.SyntheticEvent) => {\r\n    e.preventDefault();\r\n    if (this.state.selectedOrderByValue !== value) {\r\n      this.setState(\r\n        {\r\n          selectedOrderByValue: value,\r\n          ascendingOrder: value.isDefaultDirectionAscending || false,\r\n          activePage: 0,\r\n        },\r\n        this.setParamsAndSearch\r\n      );\r\n    }\r\n  };\r\n\r\n  public onOrderChange = () => this.setState({ ascendingOrder: !this.state.ascendingOrder, activePage: 0 }, this.setParamsAndSearch);\r\n\r\n  private historicalRessortNameById = (id: string): string => {\r\n    const ressorter = this.props.ressorter.all.find(hr => hr.id === id);\r\n    return ressorter ? ressorter.name : \"Ukendt ministerie\";\r\n  };\r\n\r\n  public render() {\r\n    const {\r\n      searchResult,\r\n      activePage,\r\n      activePageSize,\r\n      selectedOrderByValue,\r\n      ascendingOrder,\r\n      yearStart,\r\n      yearStartTmp,\r\n      yearEnd,\r\n      yearEndTmp,\r\n      currentSearchTerm,\r\n      liveSearchState,\r\n    } = this.state;\r\n\r\n    return (\r\n      <div className=\"documents-container\">\r\n        {/* Modal */}\r\n        {this.state.searchSubscriptionModalShown && (\r\n          <SearchSubscription\r\n            showModal={true}\r\n            subscriptionUrl={`api/document/search/subscribe`}\r\n            titleErrorText=\"Titel er ikke gyldig\"\r\n            emailErrorText=\"Emailadressen er ikke gyldig\"\r\n            formErrorText=\"Ikke gyldig\"\r\n            onDismiss={this.onToggleSubscribeModal}\r\n            ressortFilters={this.state.ressortList}\r\n            publicationMediaFilters={this.state.publicationMediaList}\r\n            tagsFilters={this.state.tagSectionList}\r\n            chips={this.renderChips(false)}\r\n          />\r\n        )}\r\n        {/* Search box */}\r\n        <Row className=\"mb-3\">\r\n          <Col className=\"px-xs-0\">\r\n            <Card color=\"primary\" className=\"searchbox-container p-4\">\r\n              <LiveSearch\r\n                onChange={e => this.onLiveSearchTermChange(e, false)}\r\n                onSearchButtonClicked={this.onSearchButtonClicked}\r\n                searchTerm={currentSearchTerm}\r\n                data={liveSearchState.hits}\r\n                searchPlaceHolder=\"Søg efter nummer og år, titel eller populærtitel\"\r\n                buttonStyle=\"secondary\"\r\n                autofocus={true}\r\n              />\r\n            </Card>\r\n          </Col>\r\n        </Row>\r\n        <Row>\r\n          {/* Filters */}\r\n          <Col lg=\"4\" className=\"search-filter-col px-xs-0\">\r\n            {/* Chip actions */}\r\n            <div className=\"chip-action-container d-flex justify-content-between\">\r\n              <Link\r\n                to=\"#\"\r\n                className=\"font-weight-bold pt-1 ml-3 ml-sm-0\"\r\n                onClick={e => {\r\n                  e.preventDefault();\r\n                  this.clearSearch();\r\n                }}\r\n              >\r\n                Nulstil <span className=\"d-none d-lg-inline\">søgning</span>\r\n              </Link>\r\n              <Link\r\n                to=\"#\"\r\n                className=\"font-weight-bold mr-3 pt-1  mr-sm-0\"\r\n                onClick={e => {\r\n                  e.preventDefault();\r\n                  this.onToggleSubscribeModal();\r\n                }}\r\n              >\r\n                Abonnér <span className=\"d-none d-lg-inline\">på søgning</span>\r\n              </Link>\r\n            </div>\r\n\r\n            {/* Publikations og dokumenttypefiltre */}\r\n            <CollapsibleBox isOpen={true} className=\"filterbox tree-filterbox\" icon={IconType.BookReader} heading=\"Publiceringsmedie\">\r\n              <CollapsableTree\r\n                listOfNodes={this.state.publicationMediaList}\r\n                onChange={this.onPublicationMediaFilterChange}\r\n                className=\"collapsable-tree-container\"\r\n                activeTreeStructure={true}\r\n                onArrowClick={this.onArrowClickPublication}\r\n              />\r\n            </CollapsibleBox>\r\n\r\n            {/* Year filter */}\r\n            <CollapsibleBox isOpen={true} className=\"filterbox\" icon={IconType.CalendarAlt} heading=\"Årgang\">\r\n              <DoubleSlider min={2008} max={new Date().getFullYear()} defaultValueLow={yearStart} defaultValueHigh={yearEnd} onChanged={this.onYearChange} />\r\n              <br />\r\n              <Row>\r\n                <Col>\r\n                  <Input\r\n                    aria-label=\"Søg startende fra årgang\"\r\n                    type=\"number\"\r\n                    value={yearStartTmp}\r\n                    onChange={e => this.onYearStartChange(Number.parseFloat(e.currentTarget.value))}\r\n                    onBlur={e => this.onYearStartBlur(Number.parseFloat(e.currentTarget.value))}\r\n                  />\r\n                </Col>\r\n                <Col>\r\n                  <Input\r\n                    aria-label=\"Søg til og med årgang\"\r\n                    type=\"number\"\r\n                    value={yearEndTmp}\r\n                    onChange={e => this.onYearEndChange(Number.parseFloat(e.currentTarget.value))}\r\n                    onBlur={e => this.onYearEndBlur(Number.parseFloat(e.currentTarget.value))}\r\n                  />\r\n                </Col>\r\n              </Row>\r\n            </CollapsibleBox>\r\n\r\n            {/* Ministrefiltre */}\r\n            <CollapsibleBox isOpen={true} className=\"filterbox tree-filterbox\" icon={IconType.City} heading=\"Ministerium\">\r\n              <CollapsableTree\r\n                listOfNodes={this.state.ressortList}\r\n                onChange={this.onRessortFilterChange}\r\n                className=\"collapsable-tree-container\"\r\n                activeTreeStructure={true}\r\n                onArrowClick={this.onArrowClick}\r\n              />\r\n            </CollapsibleBox>\r\n            {/* Emneord */}\r\n            <CollapsibleBox isOpen={true} className=\"filterbox\" icon={IconType.Font} heading=\"Emneord\">\r\n              <Keyword keys={keys} keywordSections={this.state.tagSectionList} handleKeywordChecked={this.handleKeywordChecked} />\r\n            </CollapsibleBox>\r\n          </Col>\r\n          {/* Search result */}\r\n          <Col lg={8} className=\"mt-3 mt-md-2 mt-lg-0\">\r\n            <SearchResultView\r\n              searchResultItems={searchResult.documents}\r\n              activePage={activePage}\r\n              activePageSize={activePageSize}\r\n              onPageChange={this.onPageChange}\r\n              onPageSizeChange={this.onPageSizeChange}\r\n              pageCount={searchResult.pageCount}\r\n              renderItem={(searchResultItem: IDocument) => <Document sidebarVisible={true} document={searchResultItem} />}\r\n              isSearchDirectionAscending={ascendingOrder}\r\n              onOrderByChanged={this.onOrderByChange}\r\n              onSearchDirectionChange={this.onOrderChange}\r\n              orderByValues={orderByValues.map(obv => obv)}\r\n              renderChips={() => this.renderChips(true)}\r\n              resultCount={searchResult.resultCount}\r\n              searchOrderBy={selectedOrderByValue}\r\n            ></SearchResultView>\r\n          </Col>\r\n        </Row>\r\n      </div>\r\n    );\r\n  }\r\n\r\n  public onSearchButtonClicked = (searchTerm: string, skipNumberYearMatch: boolean = false) => {\r\n    const trimmedSearchTerm = searchTerm.trim();\r\n    if (!trimmedSearchTerm) {\r\n      return;\r\n    }\r\n\r\n    if (!skipNumberYearMatch) {\r\n      const numberYearMatch = trimmedSearchTerm.match(numberAndYearRegExp);\r\n      const numberMatches = trimmedSearchTerm.match(allNumbersRegExp);\r\n\r\n      if (numberYearMatch !== null) {\r\n        this.onYearAndNumberMatchClicked(numberYearMatch[1], numberYearMatch[8]);\r\n        return;\r\n      } else if (numberMatches !== null && typeof numberMatches !== \"undefined\") {\r\n        var validYearsMatch = searchTerm.match(validYearsRegExp);\r\n        var year = validYearsMatch && numberMatches.length !== 1 ? validYearsMatch[validYearsMatch.length - 1].replace(/\\D/, \"\") : null;\r\n        var num = numberMatches.find(x => x !== year) || \"\";\r\n        this.onYearAndNumberMatchClicked(num, year);\r\n        return;\r\n      }\r\n    }\r\n\r\n    if (!this.state.searchTerms.some(t => t === trimmedSearchTerm)) {\r\n      this.state.searchTerms.push(trimmedSearchTerm);\r\n    }\r\n\r\n    this.setState(\r\n      {\r\n        currentSearchTerm: \"\",\r\n        searchTerms: this.state.searchTerms,\r\n        liveSearchState: defaultLiveSearchState,\r\n        activePage: 0,\r\n      },\r\n      this.setParamsAndSearch\r\n    );\r\n  };\r\n\r\n  public addLiveSearchTerm = (hit: LiveSearchHitDto) => {\r\n    const stateKey: keyof IDocumentSearchParamsState = hit.field === MatchField.Title ? \"titles\" : \"popularTitles\";\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 }, activePage: 0 }, this.setParamsAndSearch);\r\n  };\r\n\r\n  private renderChips = (renderAllChips: boolean) => {\r\n    return (\r\n      <React.Fragment>\r\n        {renderAllChips && this.state.documentNumberRange && (\r\n          <SearchChip icon={IconType.Hashtag} onClick={() => this.removeDocumentNumber()}>\r\n            Nr: {this.state.documentNumberRange}\r\n          </SearchChip>\r\n        )}\r\n        {renderAllChips && this.isYearFilterChipVisible() && (\r\n          <SearchChip key={\"chip_years\"} icon={IconType.CalendarAlt} onClick={this.onYearChipRemove}>\r\n            År: {this.state.yearStart}-{this.state.yearEnd}\r\n          </SearchChip>\r\n        )}\r\n\r\n        {renderAllChips &&\r\n          this.state.searchTerms.map((searchTerm, index) => {\r\n            return (\r\n              <SearchChip title={searchTerm} icon={IconType.Search} key={\"chip_searchTerm_\" + index} onClick={() => this.removeSearchTerm(index)}>\r\n                {searchTerm}\r\n              </SearchChip>\r\n            );\r\n          })}\r\n\r\n        {renderAllChips &&\r\n          this.state.titles.map((title, index) => {\r\n            return (\r\n              <SearchChip icon={IconType.Search} title={removeNewline(title, \" \")} key={\"chip_ttl_\" + index} onClick={() => this.removeTitle(index)}>\r\n                {removeNewline(title, \" \")}\r\n              </SearchChip>\r\n            );\r\n          })}\r\n\r\n        {renderAllChips &&\r\n          this.state.popularTitles.map((popularTitle, index) => {\r\n            return (\r\n              <SearchChip icon={IconType.Search} key={\"chip_pttl_\" + index} onClick={() => this.removePopularTitle(index)}>\r\n                {removeNewline(popularTitle, \" \")}\r\n              </SearchChip>\r\n            );\r\n          })}\r\n\r\n        {renderAllChips &&\r\n          this.state.historicalRessorter.map((historicalRessorter, index: number) => {\r\n            return (\r\n              <SearchChipHistory icon={IconType.City} key={\"chip_hr_\" + index} onClick={() => this.removeHistoricalRessort(index)}>\r\n                {this.historicalRessortNameById(historicalRessorter)}\r\n              </SearchChipHistory>\r\n            );\r\n          })}\r\n\r\n        {this.state.ressortList.map((ressortParent: ICollapsableTreeNode, indexParent: number) => {\r\n          return (\r\n            ressortParent.checked && (\r\n              <SearchChip icon={IconType.City} key={\"chip_ressort_\" + indexParent} onClick={this.onRessortChipRemove(ressortParent)}>\r\n                {ressortParent.label}\r\n              </SearchChip>\r\n            )\r\n          );\r\n        })}\r\n        {this.state.tagSectionList.map(section =>\r\n          section.keywords.map(tag => {\r\n            return (\r\n              tag.checked && (\r\n                <SearchChip icon={IconType.Font} key={\"chip_tag_\" + tag.id} onClick={this.onTagChipRemove(section.id, tag.id)}>\r\n                  {tag.label}\r\n                </SearchChip>\r\n              )\r\n            );\r\n          })\r\n        )}\r\n\r\n        {this.state.publicationMediaList.map((pubMedParent: ICollapsableTreeNode, indexParent: number) => {\r\n          return pubMedParent && !pubMedParent.children!.some(child => child.checked === false && child.noCheckBox === false) ? (\r\n            <SearchChip icon={IconType.BookReader} key={\"chip_pubmed_\" + indexParent} onClick={this.onPublicationMediaChipRemove(pubMedParent)}>\r\n              {pubMedParent.label}\r\n            </SearchChip>\r\n          ) : (\r\n            pubMedParent.children!.map((pubMedChild: ICollapsableTreeNode, indexChild: number) => {\r\n              return (\r\n                pubMedChild.checked && (\r\n                  <SearchChip\r\n                    icon={IconType.BookReader}\r\n                    key={\"chip_pubmed_\" + indexParent + \"_\" + indexChild}\r\n                    onClick={this.onPublicationMediaChipRemove(pubMedChild)}\r\n                  >\r\n                    {pubMedParent.label} {\">\"} {pubMedChild.label}\r\n                  </SearchChip>\r\n                )\r\n              );\r\n            })\r\n          );\r\n        })}\r\n      </React.Fragment>\r\n    );\r\n  };\r\n  private removeDocumentNumber = () => {\r\n    this.setState({ documentNumberRange: \"\", activePage: 0 }, this.setParamsAndSearch);\r\n  };\r\n\r\n  private onPageChange = (newPage: number) => {\r\n    this.setState({ activePage: newPage - 1 }, this.setParamsAndSearch);\r\n    this.scrollToTop();\r\n  };\r\n\r\n  private onPageSizeChange = (newPageSize: number) => {\r\n    this.setState({ activePageSize: newPageSize, activePage: 0 }, this.setParamsAndSearch);\r\n    this.scrollToTop();\r\n  };\r\n\r\n  private scrollToTop() {\r\n    const scrollHere = document.getElementById(\"scroll-here\")!;\r\n    window.getComputedStyle(scrollHere).display === \"none\" ? window.scrollTo(0, 0) : scrollHere.scrollIntoView();\r\n  }\r\n\r\n  private onYearChange = (yearStart: number, yearEnd: number) => {\r\n    if (\r\n      this.state.yearStart !== yearStart ||\r\n      this.state.yearEnd !== yearEnd ||\r\n      this.state.yearStart !== this.state.yearStartTmp ||\r\n      this.state.yearEnd !== this.state.yearEndTmp\r\n    ) {\r\n      this.setState({ yearStart, yearEnd, yearStartTmp: yearStart, yearEndTmp: yearEnd, activePage: 0 }, this.setParamsAndSearch);\r\n    }\r\n  };\r\n\r\n  private onYearStartChange = (year: number) => {\r\n    this.setState({ yearStartTmp: isNaNOrEmptyString(year) ? \"\" : year });\r\n    if (!isNaNOrEmptyString(year)) {\r\n      const startClamped = clampYear(year);\r\n      if (startClamped === year) {\r\n        const end = this.state.yearEnd > startClamped ? this.state.yearEnd : startClamped;\r\n        this.onYearChange(startClamped, end);\r\n      }\r\n    }\r\n  };\r\n\r\n  private onYearEndChange = (year: number) => {\r\n    this.setState({ yearEndTmp: isNaNOrEmptyString(year) ? \"\" : year });\r\n    if (!isNaNOrEmptyString(year)) {\r\n      const endClamped = clampYear(year);\r\n      if (endClamped === year) {\r\n        const start = this.state.yearStart < endClamped ? this.state.yearStart : endClamped;\r\n        this.onYearChange(start, endClamped);\r\n      }\r\n    }\r\n  };\r\n\r\n  private onYearStartBlur = (year: number) => {\r\n    if (isNaNOrEmptyString(year) || year < yearLow || year > yearHigh) {\r\n      this.onYearChange(yearLow, this.state.yearEnd);\r\n    }\r\n  };\r\n\r\n  private onYearEndBlur = (year: number) => {\r\n    if (isNaNOrEmptyString(year) || year < yearLow || year > yearHigh) {\r\n      this.onYearChange(this.state.yearStart, yearHigh);\r\n    }\r\n  };\r\n\r\n  private removeSearchTerm = (index: number) => {\r\n    this.state.searchTerms.splice(index, 1);\r\n    this.setState({ searchTerms: this.state.searchTerms, activePage: 0 }, this.setParamsAndSearch);\r\n  };\r\n\r\n  private removeHistoricalRessort = (index: number) => {\r\n    this.state.historicalRessorter.splice(index, 1);\r\n    this.setState({ historicalRessorter: this.state.historicalRessorter, activePage: 0 }, this.setParamsAndSearch);\r\n  };\r\n\r\n  private removeTitle = (index: number) => {\r\n    this.state.titles.splice(index, 1);\r\n    this.setState({ titles: this.state.titles, activePage: 0 }, this.setParamsAndSearch);\r\n  };\r\n\r\n  private removePopularTitle = (index: number) => {\r\n    this.state.popularTitles.splice(index, 1);\r\n    this.setState({ popularTitles: this.state.popularTitles, activePage: 0 }, this.setParamsAndSearch);\r\n  };\r\n\r\n  private onToggleSubscribeModal = () => {\r\n    this.setState({\r\n      searchSubscriptionModalShown: !this.state.searchSubscriptionModalShown,\r\n    });\r\n  };\r\n\r\n  private handleKeywordChecked = (sectionId: string, keywordId: string) => {\r\n    const updatedTagSectionList = updateKeywordOnChecked(sectionId, keywordId, [...this.state.tagSectionList]);\r\n    this.setState({ tagSectionList: updatedTagSectionList, activePage: 0 }, this.setParamsAndSearch);\r\n  };\r\n  private onRessortFilterChange = (selectedNode: ICollapsableTreeNode) => {\r\n    toggleNodeCheckedAndUpdate(selectedNode, this.state.ressortList);\r\n\r\n    this.setState({ ressortList: this.state.ressortList, activePage: 0 }, this.setParamsAndSearch);\r\n  };\r\n\r\n  private onPublicationMediaFilterChange = (selectedNode: ICollapsableTreeNode) => {\r\n    toggleNodeCheckedAndUpdate(selectedNode, this.state.publicationMediaList);\r\n\r\n    this.setState({ publicationMediaList: this.state.publicationMediaList, activePage: 0 }, this.setParamsAndSearch);\r\n  };\r\n\r\n  private onArrowClick = (selectedNode: ICollapsableTreeNode) => {\r\n    updateOnArrowClick(selectedNode, this.state.ressortList);\r\n    this.setState({ ressortList: this.state.ressortList });\r\n  };\r\n\r\n  private onArrowClickPublication = (selectedNode: ICollapsableTreeNode) => {\r\n    updateOnArrowClick(selectedNode, this.state.publicationMediaList);\r\n    this.setState({ publicationMediaList: this.state.publicationMediaList });\r\n  };\r\n\r\n  private clearSearch = () => {\r\n    const clearedRessortFilters = this.clearAllRessortFilters();\r\n    const clearedPubMedFilters = this.clearAllPublicationMediaFilters();\r\n    const clearedTagFilters = this.clearAllTagFilters();\r\n\r\n    this.setState(\r\n      {\r\n        yearStart: yearLow,\r\n        yearEnd: yearHigh,\r\n        yearStartTmp: yearLow,\r\n        yearEndTmp: yearHigh,\r\n        ressortList: clearedRessortFilters,\r\n        tagSectionList: clearedTagFilters,\r\n        publicationMediaList: clearedPubMedFilters,\r\n        searchTerms: [],\r\n        titles: [],\r\n        popularTitles: [],\r\n        liveSearchState: defaultLiveSearchState,\r\n        historicalRessorter: [],\r\n        documentNumberRange: \"\",\r\n        activePage: 0,\r\n        ascendingOrder: defaultParams.d,\r\n        selectedOrderByValue: orderByValues[0],\r\n      },\r\n      this.setParamsAndSearch\r\n    );\r\n  };\r\n\r\n  private clearAllRessortFilters = () => {\r\n    this.state.ressortList.forEach(filter => (filter.checked = false));\r\n    return this.state.ressortList;\r\n  };\r\n\r\n  private clearAllPublicationMediaFilters = () => {\r\n    this.state.publicationMediaList.forEach(section => {\r\n      section.checked = false;\r\n      section.indeterminate = undefined;\r\n      section.children!.forEach(filter => {\r\n        if (!filter.noCheckBox) {\r\n          filter.checked = false;\r\n        }\r\n      });\r\n    });\r\n    return this.state.publicationMediaList;\r\n  };\r\n\r\n  private clearAllTagFilters = () => {\r\n    const tagSectionListCopy = [...this.state.tagSectionList];\r\n    tagSectionListCopy.forEach(section => section.keywords.forEach(tag => (tag.checked = false)));\r\n    return tagSectionListCopy;\r\n  };\r\n\r\n  private onYearChipRemove = () => {\r\n    this.onYearChange(defaultParams.yl, defaultParams.yh);\r\n  };\r\n\r\n  private isYearFilterChipVisible = () => !(this.state.yearStart === 2008 && this.state.yearEnd === new Date().getFullYear());\r\n\r\n  private setParamsAndSearch() {\r\n    const {\r\n      activePage,\r\n      activePageSize,\r\n      ascendingOrder,\r\n      selectedOrderByValue,\r\n      yearStart,\r\n      yearEnd,\r\n      ressortList,\r\n      tagSectionList,\r\n      searchTerms,\r\n      publicationMediaList,\r\n      titles,\r\n      popularTitles,\r\n      historicalRessorter,\r\n      st,\r\n      et,\r\n      documentNumberRange: documentNumber,\r\n    } = this.state;\r\n\r\n    const params: Partial<DocumentSearchParams> = {};\r\n\r\n    if (activePage !== defaultParams.page) {\r\n      params.page = activePage;\r\n    }\r\n\r\n    if (activePageSize !== defaultParams.ps) {\r\n      params.ps = activePageSize;\r\n    }\r\n\r\n    if (ascendingOrder) {\r\n      params.d = ascendingOrder;\r\n    }\r\n\r\n    if (selectedOrderByValue && selectedOrderByValue.key !== defaultParams.o) {\r\n      params.o = selectedOrderByValue.key;\r\n    }\r\n\r\n    if (st !== defaultParams.st) {\r\n      params.st = st;\r\n    }\r\n\r\n    if (et !== defaultParams.et) {\r\n      params.et = et;\r\n    }\r\n\r\n    if (yearStart !== defaultParams.yl) {\r\n      params.yl = yearStart;\r\n    }\r\n\r\n    if (yearEnd !== defaultParams.yh) {\r\n      params.yh = yearEnd;\r\n    }\r\n\r\n    if (documentNumber !== \"\") {\r\n      params.dnr = documentNumber;\r\n    }\r\n\r\n    if (historicalRessorter.length > 0) {\r\n      params.hr = historicalRessorter;\r\n    }\r\n\r\n    if (ressortList.some(ressorter => ressorter.checked)) {\r\n      params.r = ressortList.filter(ressorter => ressorter.checked).map(r => r.value);\r\n    }\r\n\r\n    if (tagSectionList.some(section => section.keywords.some(tag => tag.checked)))\r\n      params.e = tagSectionList.flatMap(section => section.keywords.filter(tag => tag.checked).map(e => e.id));\r\n\r\n    if (searchTerms.length > 0) {\r\n      params.t = searchTerms;\r\n    }\r\n\r\n    if (publicationMediaList.some(section => section.indeterminate || section.checked)) {\r\n      params.dt = publicationMediaList\r\n        .filter(section => section.indeterminate || section.checked)\r\n        .flatMap(section => section.children!)\r\n        .filter(docType => !docType.noCheckBox)\r\n        .filter(docType => docType.checked)\r\n        .map(docType => docType.value);\r\n    }\r\n\r\n    if (titles.length > 0) {\r\n      params.ttl = titles;\r\n    }\r\n\r\n    if (popularTitles.length > 0) {\r\n      params.pttl = popularTitles;\r\n    }\r\n\r\n    const paramsString = qs.stringify(params);\r\n    const paramsQuery = `?${paramsString}`;\r\n    this.props.history.replace(paramsString ? paramsQuery : this.props.history.location.pathname);\r\n    this.doSearch(paramsQuery);\r\n    this.props.setParams(paramsQuery === \"?\" ? \"\" : paramsQuery);\r\n    // Force update on liveseach\r\n    if (this.state.currentSearchTerm) this.onLiveSearchTermChange(this.state.currentSearchTerm, true);\r\n  }\r\n\r\n  private doSearchDocumentCount(paramsString: string) {\r\n    apiGET<{ [k: string]: number | undefined }>(\"api/document/search/count\", {\r\n      params: qs.parse(paramsString),\r\n      paramsSerializer: (p: object) => qs.stringify(p),\r\n    }).then(response => {\r\n      for (const child of this.state.publicationMediaList.flatMap(p => p.children || [])) {\r\n        child.count = response[child.value] || 0;\r\n      }\r\n      this.setState({\r\n        publicationMediaList: this.state.publicationMediaList,\r\n      });\r\n    });\r\n  }\r\n\r\n  private doSearch(paramsString: string) {\r\n    apiGET<IDocumentSearchResult>(\"api/document/search\", {\r\n      params: qs.parse(paramsString),\r\n      paramsSerializer: (p: object) => qs.stringify(p),\r\n    }).then(response => {\r\n      this.setState({ searchResult: response });\r\n    });\r\n\r\n    this.doSearchDocumentCount(paramsString);\r\n  }\r\n\r\n  private onLiveSearchTermChange = (rawSearchTerm: string, forceSeach: boolean) => {\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 });\r\n      return;\r\n    }\r\n\r\n    // If only different in spaces and not forceSeach, update state but dont do livesearch request\r\n    if (trimmedSearchTerm === this.state.currentSearchTerm.trim() && !forceSeach) {\r\n      this.setState({ currentSearchTerm: rawSearchTerm });\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);\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      var validYearsMatch = rawSearchTerm.match(validYearsRegExp);\r\n      var year = validYearsMatch && numberMatches.length !== 1 ? validYearsMatch[validYearsMatch.length - 1].replace(/\\D/, \"\") : null;\r\n      var num = numberMatches.find(x => x !== year) || \"\";\r\n\r\n      const buildText = getNumberText(num) + getYearText(year);\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: RegExp = /\"[^\"]+\"$/;\r\n    if (quoteDelimited.test(trimmedSearchTerm)) {\r\n      newLiveSearchState.hits.push({\r\n        text: \"Søg efter nøjagtigt udtryk <strong>\" + trimmedSearchTerm + \"</strong>\",\r\n        onClick: () => this.onSearchButtonClicked(trimmedSearchTerm, true),\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 <strong>\" + trimmedSearchTerm + \"</strong>\",\r\n        onClick: () => this.onSearchButtonClicked(trimmedSearchTerm, true),\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 \"<strong>' + trimmedSearchTerm + '</strong>\"',\r\n        onClick: () => this.onSearchButtonClicked('\"' + trimmedSearchTerm + '\"', true),\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\r\n    this.setState(\r\n      { currentSearchTerm: rawSearchTerm, liveSearchState: newLiveSearchState },\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.getLiveSearchSuggestionItems();\r\n    }\r\n  };\r\n\r\n  private getLiveSearchSuggestionItems() {\r\n    var lst: ILiveSearchState = this.state.liveSearchState;\r\n    var parameterString;\r\n    if (this.props.paramsString) parameterString = this.props.paramsString + \"&q=\" + lst.liveSearchTerm;\r\n    else parameterString = \"q=\" + lst.liveSearchTerm;\r\n\r\n    apiGET<LiveSearchHitDto[]>(\"api/document/search/matching\", {\r\n      params: qs.parse(parameterString),\r\n      paramsSerializer: (p: object) => qs.stringify(p),\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: `${hit.value.replace(/\\\\n/g, \"<br />\")}`,\r\n        icon: IconType.Search,\r\n        onClick: () => this.addLiveSearchTerm(hit),\r\n        label: hit.field === MatchField.Title ? \"(titel)\" : \"(populærtitel)\",\r\n        template: LiveResultTemplateEnum.DOUBLE_LINE_WITH_LABEL,\r\n        aria: \"Klik her for at søge efter dokumenter med \" + (hit.field === MatchField.Title ? \"titlen\" : \"populærtitlen\") + \": \" + hit.value,\r\n      }));\r\n      // remember to prepend hits with the sliced static items\r\n      this.setState({ liveSearchState: { ...lst, hits: [...lst.hits, ...hits] } });\r\n    });\r\n  }\r\n\r\n  private getRessortFilters(resorts: IRessort[]): ICollapsableTreeNode[] {\r\n    return resorts.map(resort => {\r\n      return {\r\n        value: resort.id,\r\n        label: resort.name,\r\n        checked: this.props.paramsOrDefaults.r.some(r => r === resort.id),\r\n        children: undefined,\r\n        isOpen: false,\r\n        indeterminate: undefined,\r\n        isChild: false,\r\n      };\r\n    });\r\n  }\r\n\r\n  // reuse then yearStart and yearEnd filter, update the documentNumberRange\r\n  private onYearAndNumberMatchClicked = (num: string, year: string | null) => {\r\n    if (year) {\r\n      this.setState(\r\n        {\r\n          yearStart: +year,\r\n          yearEnd: +year,\r\n          yearStartTmp: +year,\r\n          yearEndTmp: +year,\r\n          documentNumberRange: num,\r\n          liveSearchState: defaultLiveSearchState,\r\n          currentSearchTerm: \"\",\r\n          activePage: 0,\r\n        },\r\n        this.setParamsAndSearch\r\n      );\r\n    } else {\r\n      this.setState(\r\n        {\r\n          yearStart: +yearLow,\r\n          yearEnd: +yearHigh,\r\n          yearStartTmp: +yearLow,\r\n          yearEndTmp: +yearHigh,\r\n          documentNumberRange: num,\r\n          liveSearchState: defaultLiveSearchState,\r\n          currentSearchTerm: \"\",\r\n          activePage: 0,\r\n        },\r\n        this.setParamsAndSearch\r\n      );\r\n    }\r\n  };\r\n\r\n  private getTagSectionListFilters(tags: ITagSectionList): IKeywordSection[] {\r\n    var tagList: IKeywordSection[] = [this.addTagSection(tags.lovA, \"Lovtidende A\", \"lovA\")];\r\n    tagList.push(this.addTagSection(tags.lovCBilateral, \"Lovtidende C Bilaterale overenskomster\", \"lovCBi\"));\r\n    tagList.push(this.addTagSection(tags.lovCMultilateral, \"Lovtidende C Multilaterale overenskomster\", \"lovCMulti\"));\r\n\r\n    return tagList;\r\n  }\r\n\r\n  private addTagSection(tagSection: ITag[], label: string, id: string): IKeywordSection {\r\n    var tagFilterSection: IKeywordSection = { id: id, label: label, keywords: [] };\r\n    tagSection.forEach((tag, index) => {\r\n      tagFilterSection.keywords[index] = {\r\n        key: tag.key,\r\n        label: tag.label,\r\n        id: tag.id,\r\n        checked: this.props.paramsOrDefaults.e.some(e => e === tag.id),\r\n      };\r\n    });\r\n    return tagFilterSection;\r\n  }\r\n\r\n  private getPublicationMediaDocTypeFilters(publicationMediaFilterData: any[]): ICollapsableTreeNode[] {\r\n    const pubMedDocFilter: ICollapsableTreeNode[] = [];\r\n\r\n    publicationMediaFilterData.map((parentNode: ICollapsableTreeNode, parentIndex: number) => {\r\n      pubMedDocFilter[parentIndex] = {\r\n        value: parentNode.value,\r\n        label: parentNode.label,\r\n        children: [],\r\n        isChild: false,\r\n        checked: false,\r\n        isOpen: false,\r\n      };\r\n      return parentNode.children!.map((childNode: ICollapsableTreeNode, childIndex: number) => {\r\n        return (pubMedDocFilter[parentIndex].children![childIndex] = {\r\n          value: childNode.value,\r\n          label: childNode.label,\r\n          isChild: true,\r\n          checked: this.props.paramsOrDefaults.dt.some(dt => dt === childNode.value),\r\n          isOpen: false,\r\n          noCheckBox: childNode.noCheckBox ? childNode.noCheckBox : false,\r\n        });\r\n      });\r\n    });\r\n\r\n    for (const filter of pubMedDocFilter) {\r\n      filter.checked = filter.children!.filter(c => !c.noCheckBox).every(f => f.checked) ? true : false;\r\n      filter.indeterminate = !filter.checked && filter.children!.filter(c => !c.noCheckBox).some(f => f.checked) ? \" \" : undefined;\r\n      filter.isOpen = filter.checked || filter.indeterminate;\r\n    }\r\n\r\n    return pubMedDocFilter;\r\n  }\r\n\r\n  private onRessortChipRemove = (selectedNode: ICollapsableTreeNode) => () => {\r\n    this.onRessortFilterChange(selectedNode);\r\n  };\r\n\r\n  private onPublicationMediaChipRemove = (selectedNode: ICollapsableTreeNode) => () => {\r\n    this.onPublicationMediaFilterChange(selectedNode);\r\n  };\r\n\r\n  private onTagChipRemove = (sectionId: string, tagId: string) => () => {\r\n    this.handleKeywordChecked(sectionId, tagId);\r\n  };\r\n}\r\n\r\nexport default connect(\r\n  ({ documentSearch, ressorter, tags }: AppState, ownProps: IDocumentsContainerProps): IDocumentsContainerProps => {\r\n    return {\r\n      ...ownProps,\r\n      paramsString: documentSearch.params,\r\n      paramsOrDefaults: documentSearch.parseWithDefaults(defaultParams),\r\n      ressorter: ressorter,\r\n      tags: tags,\r\n    };\r\n  },\r\n  dispatch =>\r\n    bindActionCreators(\r\n      {\r\n        ...DocumentSearchActions,\r\n        ...RessortActions,\r\n        ...TagActions,\r\n      },\r\n      dispatch\r\n    )\r\n)(DocumentsContainer);\r\n","import { IOrderByValue } from \"@lexdania/components/build/lib/components/search/models/SearchModels\";\r\n\r\nexport enum OrderByKey {\r\n  Underskrift = 10,\r\n  Titel = 20,\r\n  Ministerium = 30,\r\n  NummerOgAar = 40,\r\n  Rank = 50,\r\n  Offentliggoerelse = 80,\r\n}\r\n\r\nexport const orderByValues: ReadonlyArray<IOrderByValue> = [\r\n  { text: \"Relevans\", key: OrderByKey.Rank, hasOrderDirection: false, isDefaultDirectionAscending: false },\r\n  { text: \"Offentliggørelsesdato\", key: OrderByKey.Offentliggoerelse, hasOrderDirection: true, isDefaultDirectionAscending: false },\r\n  { text: \"Forskriftens nr. / år\", key: OrderByKey.NummerOgAar, hasOrderDirection: true, isDefaultDirectionAscending: false },\r\n  { text: \"Ministerium\", key: OrderByKey.Ministerium, hasOrderDirection: true, isDefaultDirectionAscending: true },\r\n  { text: \"Titel\", key: OrderByKey.Titel, hasOrderDirection: true, isDefaultDirectionAscending: true },\r\n  { text: \"Underskriftdato\", key: OrderByKey.Underskrift, hasOrderDirection: true, isDefaultDirectionAscending: false },\r\n];\r\n","const publicationMediaFilterData: any[] = [];\r\n\r\nconst lovA = {\r\n  id: 10,\r\n  value: \"A\",\r\n  label: \"Lovtidende A\",\r\n  children: [\r\n    {\r\n      value: \"\",\r\n      label: \"Love & lovbekendtgørelser\",\r\n      noCheckBox: true,\r\n    },\r\n    {\r\n      value: \"10\",\r\n      label: \"Lov\",\r\n      noCheckBox: false,\r\n    },\r\n    {\r\n      value: \"20\",\r\n      label: \"Ændringslov\",\r\n      noCheckBox: false,\r\n    },\r\n    {\r\n      value: \"30\",\r\n      label: \"Lovbekendtgørelse\",\r\n      noCheckBox: false,\r\n    },\r\n    {\r\n      value: \"\",\r\n      label: \"Administrative forskrifter\",\r\n      noCheckBox: true,\r\n    },\r\n    {\r\n      value: \"90\",\r\n      label: \"Ikrafttræd. bekendtgørelse\",\r\n      noCheckBox: false,\r\n    },\r\n    {\r\n      value: \"120\",\r\n      label: \"Ikrafttræd. anordning\",\r\n      noCheckBox: false,\r\n    },\r\n    {\r\n      value: \"270\",\r\n      label: \"Ikrafttræd. anordning (GL og FO)\",\r\n      noCheckBox: false,\r\n    },\r\n    {\r\n      value: \"60\",\r\n      label: \"Bekendtgørelse\",\r\n      noCheckBox: false,\r\n    },\r\n    {\r\n      value: \"100\",\r\n      label: \"Anordning\",\r\n      noCheckBox: false,\r\n    },\r\n    {\r\n      value: \"80\",\r\n      label: \"Ændringsbekendtgørelse\",\r\n      noCheckBox: false,\r\n    },\r\n    {\r\n      value: \"110\",\r\n      label: \"Ændringsanordning\",\r\n      noCheckBox: false,\r\n    },\r\n    {\r\n      value: \"130\",\r\n      label: \"Åbent brev\",\r\n      noCheckBox: false,\r\n    },\r\n    {\r\n      value: \"1510\",\r\n      label: \"Anordningsbekendtgørelse\",\r\n      noCheckBox: false,\r\n    },\r\n  ],\r\n};\r\npublicationMediaFilterData.push(lovA);\r\n\r\nconst lovB = {\r\n  id: 20,\r\n  value: \"B\",\r\n  label: \"Lovtidende B\",\r\n  children: [\r\n    {\r\n      value: \"1480\",\r\n      label: \"Lovtidende B dokument\",\r\n      noCheckBox: false,\r\n    },\r\n  ],\r\n};\r\npublicationMediaFilterData.push(lovB);\r\n\r\nconst lovC = {\r\n  id: 30,\r\n  value: \"C\",\r\n  label: \"Lovtidende C\",\r\n  children: [\r\n    {\r\n      value: \"220\",\r\n      label: \"Bekendtgørelse (international)\",\r\n      noCheckBox: false,\r\n    },\r\n  ],\r\n};\r\npublicationMediaFilterData.push(lovC);\r\n\r\nexport { publicationMediaFilterData };\r\n","export enum MatchField {\r\n  Title = 1,\r\n  PopularTitle = 2,\r\n}\r\n","/**\n * A function that emits a side effect and does not return anything.\n */\nexport type Procedure = (...args: any[]) => void;\n\nexport type Options = {\n  isImmediate: boolean,\n}\n\nexport function debounce<F extends Procedure>(\n  func: F,\n  waitMilliseconds = 50,\n  options: Options = {\n    isImmediate: false\n  },\n): F {\n  let timeoutId: NodeJS.Timeout | undefined;\n\n  return function(this: any, ...args: any[]) {\n    const context = this;\n\n    const doLater = function() {\n      timeoutId = undefined;\n      if (!options.isImmediate) {\n        func.apply(context, args);\n      }\n    }\n\n    const shouldCallNow = options.isImmediate && timeoutId === undefined;\n\n    if (timeoutId !== undefined) {\n      clearTimeout(timeoutId);\n    }\n\n    timeoutId = setTimeout(doLater, waitMilliseconds);\n\n    if (shouldCallNow) {\n      func.apply(context, args);\n    }\n  } as any\n}\n","import arrayWithoutHoles from \"./arrayWithoutHoles.js\";\nimport iterableToArray from \"./iterableToArray.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableSpread from \"./nonIterableSpread.js\";\nexport default function _toConsumableArray(arr) {\n  return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _arrayWithoutHoles(arr) {\n  if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}","export default function _iterableToArray(iter) {\n  if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}","export default function _nonIterableSpread() {\n  throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}"],"names":["connect","ownProps","notes","reprintNotes","dispatch","bindActionCreators","ReprintInformationActions","props","toggleModal","isOpen","getReprintNotes","docId","shortName","title","ressort","React","Modal","className","ModalHeader","tag","ModalBody","map","note","index","Row","Col","date","classname","href","reprintOfId","Icon","icon","IconType","iconSize","dangerouslySetInnerHTML","__html","replace","ModalFooter","Button","color","onClick","Tags","tags","length","lg","publicationMediaId","heading","emneord","underskriftDato","underskriftSted","documentId","id","nlToBr","str","arr","split","elmsArr","flatMap","s","i","pop","d","document","showReprintNotes","setShowReprintNotes","showTags","setShowTags","toggleReprintNotes","Container","ressortName","xl","Badge","publicationMedia","name","isReprint","md","sidebarVisible","offentliggoerelsesDato","popularTitle","lovtidendeAEmneord","lovtidendeCBilateraleEmneord","lovtidendeCMultilateraleEmneord","Link","to","e","preventDefault","retsinfoLink","target","rel","_createForOfIteratorHelper","o","allowArrayLike","it","Symbol","iterator","Array","isArray","unsupportedIterableToArray","F","n","done","value","_e","f","TypeError","err","normalCompletion","didErr","call","step","next","_e2","_excluded","propTypes","children","PropTypes","type","size","bsSize","valid","invalid","tagPropType","innerRef","plaintext","addon","cssModule","Input","_React$Component","_this","this","getRef","bind","_assertThisInitialized","focus","_inheritsLoose","_proto","prototype","ref","render","_this$props","attributes","_objectWithoutPropertiesLoose","checkInput","indexOf","isNotaNumber","RegExp","Tag","formControlClass","test","warnOnce","classes","mapToCssModules","classNames","_extends","defaultProps","inline","Form","_Component","submit","Component","row","check","disabled","FormGroup","stringOrNumberProp","columnProps","order","offset","hidden","for","xs","sm","widths","getColumnSizeClass","isXs","colWidth","colSize","Label","htmlFor","colClasses","forEach","columnProp","colClass","isObject","_classNames","colSizeInterfix","push","tooltip","undefined","FormFeedback","validMode","SearchSubscription","InputEmailId","InputTitleId","handleInputChange","currentTarget","setState","email","isEmailValid","isTitleValid","handleSubmit","subscribeForm","checkValidity","body","getQuerySubscriberModel","apiPOST","subscriptionUrl","JSON","stringify","result","isFormValid","isError","isSubmitted","handleFormErrors","state","showModal","onDismiss","titleErrorText","emailErrorText","formErrorText","ressortFilters","tagsFilters","chips","publicationMediaFilters","subscription","onSubmit","noValidate","Alert","required","pattern","onChange","formElements","from","elements","filter","element","includes","el","validity","rFilters","checked","key","dtFilters","pubMedParent","eFilters","x","keywords","v","searchFilters","r","dt","keys","numberAndYearRegExp","allNumbersRegExp","validYearsRegExp","removeNewline","replaceWith","getNumberText","number","getYearText","year","getNumberAndYearText","buildText","defaultLiveSearchState","liveSearchTerm","hits","staticLiveSearchItemsCount","defaultParams","page","ps","PageSize","yh","Date","getFullYear","yl","orderByValues","EmptyStringArray","t","ttl","pttl","hr","st","et","dnr","yearLow","yearHigh","isNaNOrEmptyString","numOrEmptyString","Number","isNaN","clampYear","Math","min","max","paramsToDspState","dsp","activePage","activePageSize","selectedOrderByValue","obv","ascendingOrder","yearStart","yearEnd","searchTerms","titles","popularTitles","historicalRessorter","documentNumberRange","DocumentsContainer","searchResult","pageCount","documents","resultCount","paramsOrDefaults","ressortList","tagSectionList","label","currentSearchTerm","liveSearchState","builtFilters","publicationMediaList","searchSubscriptionModalShown","yearStartTmp","yearEndTmp","onOrderByChange","isDefaultDirectionAscending","setParamsAndSearch","onOrderChange","historicalRessortNameById","ressorter","all","find","onSearchButtonClicked","searchTerm","skipNumberYearMatch","trimmedSearchTerm","trim","numberYearMatch","match","numberMatches","onYearAndNumberMatchClicked","validYearsMatch","num","some","addLiveSearchTerm","hit","stateKey","field","MatchField","renderChips","renderAllChips","SearchChip","removeDocumentNumber","isYearFilterChipVisible","onYearChipRemove","removeSearchTerm","removeTitle","removePopularTitle","SearchChipHistory","removeHistoricalRessort","ressortParent","indexParent","onRessortChipRemove","section","onTagChipRemove","child","noCheckBox","onPublicationMediaChipRemove","pubMedChild","indexChild","onPageChange","newPage","scrollToTop","onPageSizeChange","newPageSize","onYearChange","onYearStartChange","startClamped","end","onYearEndChange","endClamped","start","onYearStartBlur","onYearEndBlur","splice","onToggleSubscribeModal","handleKeywordChecked","sectionId","keywordId","updatedTagSectionList","updateKeywordOnChecked","onRessortFilterChange","selectedNode","toggleNodeCheckedAndUpdate","onPublicationMediaFilterChange","onArrowClick","updateOnArrowClick","onArrowClickPublication","clearSearch","clearedRessortFilters","clearAllRessortFilters","clearedPubMedFilters","clearAllPublicationMediaFilters","clearedTagFilters","clearAllTagFilters","indeterminate","tagSectionListCopy","onLiveSearchTermChange","rawSearchTerm","forceSeach","newLiveSearchState","counter","text","aria","debounce","getDynamicLiveSearchItems","getLiveSearchSuggestionItems","tagId","initFiltersAndSearch","getRessorter","getTags","paramsString","location","search","setParams","history","active","lovA","stateFromParams","getRessortFilters","getTagSectionListFilters","getPublicationMediaDocTypeFilters","publicationMediaFilterData","doSearch","Card","LiveSearch","data","searchPlaceHolder","buttonStyle","autofocus","CollapsibleBox","CollapsableTree","listOfNodes","activeTreeStructure","DoubleSlider","defaultValueLow","defaultValueHigh","onChanged","parseFloat","onBlur","Keyword","keywordSections","SearchResultView","searchResultItems","renderItem","searchResultItem","Document","isSearchDirectionAscending","onOrderByChanged","onSearchDirectionChange","searchOrderBy","scrollHere","getElementById","window","getComputedStyle","display","scrollTo","scrollIntoView","documentNumber","params","docType","qs","paramsQuery","pathname","apiGET","paramsSerializer","p","then","response","count","doSearchDocumentCount","parameterString","lst","template","LiveResultTemplateEnum","resorts","resort","isChild","tagList","addTagSection","lovCBilateral","lovCMultilateral","tagSection","tagFilterSection","pubMedDocFilter","parentNode","parentIndex","childNode","childIndex","c","every","documentSearch","parseWithDefaults","DocumentSearchActions","RessortActions","TagActions","OrderByKey","Rank","hasOrderDirection","Offentliggoerelse","NummerOgAar","Ministerium","Titel","Underskrift","func","waitMilliseconds","options","timeoutId","isImmediate","_i","args","context","shouldCallNow","clearTimeout","setTimeout","apply","_toConsumableArray","arrayLikeToArray","iter"],"sourceRoot":""}