{"version":3,"file":"bundle.70102.f730b566b6096b6cdaa4.js","mappings":"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","sources":["webpack://goformz-web-app/./src/components/FormVersionRevertModal/FormVersionRevertModal.scss","webpack://goformz-web-app/./src/forms/components/FormHistoryModal.scss","webpack://goformz-web-app/./src/components/FormVersionRevertModal/FormVersionRevertModal.scss?fecc","webpack://goformz-web-app/./src/forms/components/FormHistoryModal.scss?44ae","webpack://goformz-web-app/./src/components/FormVersionRevertModal/FormVersionRevertModal.tsx","webpack://goformz-web-app/./src/components/PopupDropdown.tsx","webpack://goformz-web-app/./src/components/TransferModal.tsx","webpack://goformz-web-app/./src/formeditor/components/GeneratePdfModal.tsx","webpack://goformz-web-app/./src/components/Map.tsx","webpack://goformz-web-app/./src/forms/components/FormHistoryModal.tsx","webpack://goformz-web-app/./src/tags/components/FormTagItem.tsx","webpack://goformz-web-app/./src/tags/components/FormTags.tsx","webpack://goformz-web-app/./src/tags/components/TagItem.tsx","webpack://goformz-web-app/./src/tags/components/TagList.tsx","webpack://goformz-web-app/./src/tags/components/TagsModal.tsx"],"sourcesContent":["// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \".form-version-revert-modal .form-version-revert-modal-description{display:flex;flex-direction:column;row-gap:10px}.form-version-revert-modal .form-version-revert-modal-description .form-name{display:inline;font-weight:bold}\", \"\"]);\n// Exports\nmodule.exports = exports;\n","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \".ui.modal.form-history{min-height:360px}.ui.modal.form-history p{padding:0px 16px}.ui.modal.form-history .content .form-name .name-label{font-weight:bold}.ui.modal.form-history .content .history-items{margin-top:8px}.ui.modal.form-history .content .history-items .history-item-row{padding-left:5px}.light-theme .ui.modal.form-history .content .history-items .history-item-row{border-bottom:1px solid #f3f3f3}.dark-theme .ui.modal.form-history .content .history-items .history-item-row{border-bottom:1px solid #33383a}.ui.modal.form-history .content .history-items .history-item-row .map-wrapper{height:240px;margin-top:8px}.ui.modal.form-history .content .history-items .history-item-row .history-item{display:flex;flex-direction:row;align-items:center;padding:4px 0;height:60px}.ui.modal.form-history .content .history-items .history-item-row .history-item:last-child{border-bottom:rgba(0,0,0,0)}.ui.modal.form-history .content .history-items .history-item-row .history-item.sub-item{padding-left:34px;height:40px}.ui.modal.form-history .content .history-items .history-item-row .history-item.sub-item .item-content .item-header{font-size:13px}.ui.modal.form-history .content .history-items .history-item-row .history-item .icon{width:28px;height:28px;position:relative;display:inline-block;font-size:20px;margin-right:8px;margin-top:4px}.ui.modal.form-history .content .history-items .history-item-row .history-item .map-icon{cursor:pointer;display:flex;justify-content:right}.light-theme .ui.modal.form-history .content .history-items .history-item-row .history-item .map-icon{color:#e8ebec}.dark-theme .ui.modal.form-history .content .history-items .history-item-row .history-item .map-icon{color:#363a3d}.ui.modal.form-history .content .history-items .history-item-row .history-item .form-revert{visibility:hidden;display:inline-block;width:125px;font-size:12px;margin-left:auto;margin-top:auto;cursor:pointer;padding-right:10px}.ui.modal.form-history .content .history-items .history-item-row .history-item .item-content{position:relative;width:100%}.ui.modal.form-history .content .history-items .history-item-row .history-item .item-content .item-header{font-size:14px}.ui.modal.form-history .content .history-items .history-item-row .history-item .item-content .item-description{font-size:12px;display:flex;align-items:center;column-gap:5px}.ui.modal.form-history .content .history-items .history-item-row .history-item .item-content .item-description a{border:none}.ui.modal.form-history .content .history-items .history-item-row .history-item .item-content .item-description button{font-size:12px}.ui.modal.form-history .content .history-items .history-item-row .history-item .item-content .item-description .circle.icon{font-size:6px;margin-top:0;padding:0;display:inline-block;height:9px}.light-theme .ui.modal.form-history .content .history-items .history-item-row .history-item .item-content .item-description .circle.icon{color:#636363}.dark-theme .ui.modal.form-history .content .history-items .history-item-row .history-item .item-content .item-description .circle.icon{color:#a9a297}.ui.modal.form-history .content .history-items .history-item-row .history-item .history-item-row-right-container{display:flex;flex-direction:column;align-items:flex-end;height:100%}.light-theme .ui.modal.form-history .content .history-items .history-item-row:hover{background-color:#eefafe}.dark-theme .ui.modal.form-history .content .history-items .history-item-row:hover{background-color:#032d3a}.ui.modal.form-history .content .history-items .history-item-row:hover .history-item .form-revert{visibility:visible}\", \"\"]);\n// Exports\nmodule.exports = exports;\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[4].use[1]!../../../node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[4].use[2]!./FormVersionRevertModal.scss\");\nif(typeof content === 'string') content = [[module.id, content, '']];\n// add the styles to the DOM\nvar update = require(\"!../../../node_modules/style-loader/addStyles.js\")(content, {});\nif(content.locals) module.exports = content.locals;\n// Hot Module Replacement\nif(module.hot) {\n\t// When the styles change, update the <style> tags\n\tif(!content.locals) {\n\t\tmodule.hot.accept(\"!!../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[4].use[1]!../../../node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[4].use[2]!./FormVersionRevertModal.scss\", function() {\n\t\t\tvar newContent = require(\"!!../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[4].use[1]!../../../node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[4].use[2]!./FormVersionRevertModal.scss\");\n\t\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\t\t\tupdate(newContent);\n\t\t});\n\t}\n\t// When the module is disposed, remove the <style> tags\n\tmodule.hot.dispose(function() { update(); });\n}","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[4].use[1]!../../../node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[4].use[2]!./FormHistoryModal.scss\");\nif(typeof content === 'string') content = [[module.id, content, '']];\n// add the styles to the DOM\nvar update = require(\"!../../../node_modules/style-loader/addStyles.js\")(content, {});\nif(content.locals) module.exports = content.locals;\n// Hot Module Replacement\nif(module.hot) {\n\t// When the styles change, update the <style> tags\n\tif(!content.locals) {\n\t\tmodule.hot.accept(\"!!../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[4].use[1]!../../../node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[4].use[2]!./FormHistoryModal.scss\", function() {\n\t\t\tvar newContent = require(\"!!../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[4].use[1]!../../../node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[4].use[2]!./FormHistoryModal.scss\");\n\t\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\t\t\tupdate(newContent);\n\t\t});\n\t}\n\t// When the module is disposed, remove the <style> tags\n\tmodule.hot.dispose(function() { update(); });\n}","import React, { useState } from 'react';\nimport Loader from '../loader';\nimport GfModal from '../../gfcomponents/GfModal/GfModal';\nimport './FormVersionRevertModal.scss';\nimport { useApim } from '../../hooks/useApi';\nimport { GoFormzServices } from '../../AppSettings';\nimport { Form, FormAndTemplate, FormTag } from '../../types/form-types';\nimport { apimCall } from '../../helpers/api';\nimport { Checkbox } from 'semantic-ui-react';\nimport moment from 'moment';\n\nexport interface FormHistorFormVersionRevertModalProps {\n  formId?: string;\n  versionId?: string;\n  onClose?: VoidFunction;\n}\n\nexport default function FormVersionRevertModal(props: FormHistorFormVersionRevertModalProps) {\n  const [saving, setSaving] = useState(false);\n  const [formReverted, setFormReverted] = useState(false);\n  const [error, setError] = useState(null);\n  const [reOpenFormBeforeSaving, setReOpenFormBeforeSaving] = useState(false);\n  const [formVersionResult, formVersionResultLoading] = useApim<FormAndTemplate>(\n    GoFormzServices.TemplateService,\n    `/formAndTemplate/${props.formId}/versions/${props.versionId}`\n  );\n\n  const [formResult, formResultLoading] = useApim<FormAndTemplate>(GoFormzServices.TemplateService, `/formAndTemplate/${props.formId}`);\n\n  const cleanAutoTags = (form: Form) => {\n    form?.tags?.forEach((x: FormTag) => {\n      if (x.isAutoTag) {\n        x.operation = null;\n      }\n    });\n  };\n\n  const getFormVersionForRevert = () => {\n    if (formVersionResult?.form == null) {\n      setError('This form version is unable to be reverted to.');\n    }\n    const formVersion = JSON.parse(JSON.stringify(formVersionResult.form)) as Form;\n    cleanAutoTags(formVersion);\n    formVersion.versionId = null;\n    formVersion.versionNumber = null;\n    formVersion.hasBeenReopened = null;\n    //update the completed date to the current date\n    if (formVersion.completedDate) {\n      formVersion.completedDate = moment.utc().format('YYYY-MM-DDTHH:mm:ss');\n    }\n\n    formVersion.values = formVersion.values ?? [];\n\n    //loop through the latest version values and clear any that are not in the form version we are reverting to\n    (formResult.form?.values ?? []).forEach((value) => {\n      const matchingValue = formVersion.values.find((x) => x.fieldId === value.fieldId);\n\n      // If the value is not in the form version, then we want to add it as a cleared value\n      if (!matchingValue) {\n        formVersion.values.push({ fieldId: value.fieldId, operation: 2 });\n      }\n    });\n\n    ///set all values to an update operation\n    (formVersion.values ?? []).forEach((value) => {\n      value.operation = 2;\n    });\n\n    return formVersion;\n  };\n\n  const onNavigateToLatest = () => {\n    const url = `/forms/${props.formId}`;\n    window.open(url);\n    props.onClose();\n  };\n\n  const onConfirmRevert = async () => {\n    // Clone the form so it can be manipulated before submitting\n    // For autotags, remove the operation - the server will handle applying the autotags\n    const currentForm = JSON.parse(JSON.stringify(formResult.form)) as Form;\n    cleanAutoTags(currentForm);\n\n    const formVersion = getFormVersionForRevert();\n    setSaving(true);\n\n    try {\n      // If the form is completed, reopen it before saving the new version\n      if (reOpenFormBeforeSaving) {\n        currentForm.completedDate = null;\n        await apimCall(GoFormzServices.TemplateService, `/forms/${props.formId}`, 'PUT', currentForm);\n      }\n    } catch (error) {\n      console.error('Error occurred reopening form', error);\n      setError('An error occurred while reopening the form before saving the new version');\n      setSaving(false);\n      return; // Don't continue if there was an error reopening the form\n    }\n\n    try {\n      // Save the new form version as the one we are reverting to\n      await apimCall(GoFormzServices.TemplateService, `/forms/${props.formId}`, 'PUT', formVersion);\n      setSaving(false);\n      setFormReverted(true);\n    } catch (error) {\n      console.error('Error occurred reverting form version', error);\n      setError('AAn error occurred while reverting the Form version');\n      setSaving(false);\n    }\n  };\n\n  const loading = formVersionResultLoading || formResultLoading || saving;\n  const primaryText = formReverted ? 'View Latest Version' : 'Revert to Version';\n  const onPrimaryClick = formReverted ? onNavigateToLatest : onConfirmRevert;\n\n  return (\n    <GfModal\n      className=\"form-version-revert-modal\"\n      title={`Revert to Version ${formVersionResult?.form?.versionNumber ?? ''} `}\n      onClose={props.onClose}\n      onPrimaryClick={onPrimaryClick}\n      primaryText={primaryText}\n      errorText={error}\n      semanticUiModalProps={{ size: 'small' }}\n    >\n      <Loader isLoading={loading} />\n      <div className=\"form-version-revert-modal-description\">\n        {formReverted && (\n          <>\n            <span>\n              Version {formVersionResult?.form?.versionNumber} of <span className=\"form-name\">{formVersionResult?.form?.name}</span> is now the latest version.\n            </span>\n          </>\n        )}\n        {!formReverted && (\n          <>\n            <span>\n              Version {formVersionResult?.form?.versionNumber} of <span className=\"form-name\">{formVersionResult?.form?.name}</span> will be recreated as the\n              lastest version.\n            </span>\n            {formResult?.form?.completedDate != null && (\n              <Checkbox\n                label=\"Reopen form before saving version\"\n                checked={reOpenFormBeforeSaving}\n                onChange={() => setReOpenFormBeforeSaving(!reOpenFormBeforeSaving)}\n              />\n            )}\n          </>\n        )}\n      </div>\n    </GfModal>\n  );\n}\n","import React, { useRef, useState } from 'react';\nimport { Menu, Icon, SemanticICONS } from 'semantic-ui-react';\nimport CloseablePopup from './closeable_popup';\n\nexport interface PopupDropdownProps {\n  trigger?: TypeMePlease;\n  content?: TypeMePlease;\n  children?: TypeMePlease | TypeMePlease[];\n  basic?: boolean;\n  position?: string;\n  offset?: string | number[];\n  className?: string;\n  selection?: boolean;\n  search?: boolean;\n  value?: string;\n  onChange?: AnyFunc;\n  placeholder?: string;\n  options?: TypeMePlease;\n  clearable?: boolean;\n  loading?: boolean;\n}\n\nexport interface PopupDropdownMenuProps {\n  children?: TypeMePlease | TypeMePlease[];\n  className?: string;\n  vertical?: boolean;\n}\n\nexport interface PopupDropdownItemProps {\n  icon?: string;\n  children?: any;\n  text?: string;\n  onClick?: AnyFunc;\n  active?: boolean;\n  selected?: boolean;\n}\n\nconst { Provider, Consumer } = React.createContext<TypeMePlease>(undefined);\n\nconst PopupDropdown = (props: PopupDropdownProps) => {\n  const [popupOpened, setPopupOpened] = useState(false);\n  const popup = useRef<TypeMePlease>();\n  const searchInput = useRef<TypeMePlease>();\n  const [searchTerm, setSearchTerm] = useState<string>();\n  const [activeOptionIndex, setActiveOptionIndex] = useState<number>();\n\n  const popupOnOpen = () => {\n    setPopupOpened(true);\n  };\n  const popupOnClose = () => {\n    if (searchInput.current) {\n      searchInput.current.blur();\n    }\n    setSearchTerm(null);\n    setPopupOpened(false);\n  };\n  const closePopup = () => {\n    popup.current.close();\n    popupOnClose();\n  };\n\n  const selectValue = (option) => {\n    setSearchTerm(null);\n    props.onChange(option);\n    closePopup();\n  };\n\n  const filteredOptions =\n    props.options && searchTerm ? props.options.filter((x) => x.text.toLowerCase().indexOf(searchTerm.toLowerCase()) > -1) : props.options;\n\n  const searchOnChange = (e) => {\n    const value = e.target.value;\n    setSearchTerm(value);\n    setActiveOptionIndex(0);\n  };\n  const searchOnKeyDown = (e) => {\n    if (filteredOptions && filteredOptions.length > 0) {\n      if (e.keyCode === 13) {\n        selectValue(filteredOptions[activeOptionIndex]);\n        e.preventDefault();\n      } else if (e.keyCode === 38) {\n        setActiveOptionIndex((i) => Math.max(i - 1, 0));\n        e.preventDefault();\n      } else if (e.keyCode === 40) {\n        setActiveOptionIndex((i) => Math.min(i + 1, filteredOptions.length - 1));\n        e.preventDefault();\n      }\n    }\n  };\n\n  const clearSelection = (e) => {\n    props.onChange('');\n    e.stopPropagation();\n  };\n\n  let trigger = props.trigger;\n  if (props.selection) {\n    let text = props.value;\n    if (props.options) {\n      const matchingOption = props.options.find((x) => x.value === props.value);\n      if (matchingOption) {\n        text = matchingOption.text;\n      }\n    }\n\n    trigger = (\n      <div className={`popup-dropdown-trigger selection ${props.clearable ? `clearable` : null}`}>\n        {!searchTerm && !popupOpened ? <span className=\"text\">{text}</span> : null}\n        {props.placeholder && !searchTerm && !props.value ? <span className=\"placeholder\">{props.placeholder}</span> : null}\n        {props.search ? (\n          <input\n            className={`search ${props.clearable ? `clearable` : null}`}\n            value={searchTerm || ''}\n            onKeyDown={searchOnKeyDown}\n            onChange={searchOnChange}\n            autoComplete=\"stop-autocomplete\"\n            ref={searchInput}\n          />\n        ) : null}\n        {props.value && props.clearable ? <Icon name=\"close\" className=\"clearable-icon\" onClick={clearSelection} /> : null}\n        <i className=\"ui icon angle down\" />\n      </div>\n    );\n  }\n\n  let content = props.content || props.children;\n  if (filteredOptions) {\n    content = (\n      <PopupDropdown.Menu className=\"options\">\n        {filteredOptions.map((option, i) => (\n          <PopupDropdown.Item key={option.value} onClick={() => selectValue(option)} active={i === activeOptionIndex} selected={option.value === props.value}>\n            {option.text}\n          </PopupDropdown.Item>\n        ))}\n        {filteredOptions.length === 0 ? <div className=\"no-results\">No results found.</div> : null}\n      </PopupDropdown.Menu>\n    );\n  }\n\n  const contentWrapper = <Provider value={{ closePopup }}>{content}</Provider>;\n  return (\n    <CloseablePopup\n      trigger={trigger}\n      content={contentWrapper}\n      on=\"click\"\n      basic={props.basic ? props.basic : false}\n      position={(props.position as any) ?? 'bottom right'}\n      // per: https://popper.js.org/docs/v2/modifiers/prevent-overflow/\n      popperModifiers={[{ name: 'preventOverflow', options: { escapeWithReference: true } }]}\n      offset={props.offset as any}\n      className={`popup-dropdown${props.className ? ` ${props.className}` : ''}`}\n      ref={popup}\n      onClose={popupOnClose}\n      onOpen={popupOnOpen}\n    />\n  );\n};\n\nPopupDropdown.Menu = (props: PopupDropdownMenuProps) => {\n  return (\n    <Menu vertical fluid className={props.className}>\n      {props.children}\n    </Menu>\n  );\n};\n\nPopupDropdown.Header = ({ children }) => {\n  return <div className=\"header\">{children}</div>;\n};\n\nPopupDropdown.Item = (props: PopupDropdownItemProps) => {\n  return (\n    <Consumer>\n      {(context) => (\n        <Menu.Item\n          onClick={() => {\n            context.closePopup();\n            if (props.onClick) {\n              props.onClick();\n            }\n          }}\n          active={props.active}\n          className={props.selected ? 'selected' : ''}\n        >\n          {props.icon && <Icon name={props.icon as SemanticICONS} />}\n          {props.text}\n          {props.children}\n        </Menu.Item>\n      )}\n    </Consumer>\n  );\n};\n\nexport default PopupDropdown;\n","import React, { useCallback, useState } from 'react';\nimport { Provider, ReactReduxContext } from 'react-redux';\nimport GfModal from '../gfcomponents/GfModal/GfModal';\nimport UserGroupDropdown from './UserGroupDropdown';\n\nexport interface TransferModalProps {\n  currentOwnerId?: string;\n  isTransferring?: boolean;\n  bulkTransfer?: boolean;\n  transferForms?: (item: string, transerType: number) => Promise<void>;\n  toggleTransferModal?: VoidFunction;\n}\n\nexport type TransferModalState = {\n  userPage: number;\n  searchInput: string;\n  typingTimeout: number;\n  showSearchResults: boolean;\n  selectedItem?: string;\n  transferType?: number;\n  selectedId?: string;\n  selectedName?: string;\n};\n\nexport default function TransferModal(props: TransferModalProps) {\n  const { bulkTransfer, isTransferring, toggleTransferModal, transferForms } = props;\n  const [modalState, setModalState] = useState<TransferModalState>({\n    userPage: 1,\n    searchInput: '',\n    typingTimeout: 0,\n    showSearchResults: false\n  });\n\n  const handleClose = useCallback(() => {\n    if (modalState.typingTimeout) {\n      clearTimeout(modalState.typingTimeout);\n    }\n\n    toggleTransferModal();\n  }, [modalState.typingTimeout]);\n\n  const handleTransferClick = useCallback(async () => {\n    if (modalState.selectedItem) {\n      await transferForms(modalState.selectedItem, modalState.transferType);\n    }\n\n    handleClose();\n  }, [modalState.selectedItem, modalState.transferType]);\n\n  const onChange = useCallback(\n    (id: string, name: string, type: 'user' | 'group') => {\n      let transferType = -1;\n      if (type === 'user') {\n        transferType = 0;\n      } else if (type === 'group') {\n        transferType = 1;\n      }\n\n      setModalState({ ...modalState, selectedItem: id, selectedId: id, selectedName: name, transferType });\n    },\n    [modalState]\n  );\n\n  return (\n    <ReactReduxContext.Consumer>\n      {(ctx) => (\n        <Provider store={ctx.store}>\n          <GfModal\n            className=\"transfer-form-modal\"\n            title={bulkTransfer ? 'Transfer Forms' : 'Transfer Form'}\n            primaryText=\"Transfer\"\n            tertiaryText=\"Cancel\"\n            onClose={handleClose}\n            onPrimaryClick={handleTransferClick}\n            onTertiaryClick={handleClose}\n            loading={isTransferring}\n            actionButtonProps={{ primary: { disabled: !modalState.selectedItem } }}\n          >\n            <UserGroupDropdown\n              onChange={onChange}\n              selectedId={modalState.selectedId}\n              selectedName={modalState.selectedName}\n              hideAdministrator={true}\n              hideDeactivatedUsers={true}\n              hideCurrentUser={true}\n              hidePendingUsers={true}\n              groupSelected={modalState.transferType === 1}\n            />\n          </GfModal>\n        </Provider>\n      )}\n    </ReactReduxContext.Consumer>\n  );\n}\n","import React, { useEffect, useState } from 'react';\nimport { Dropdown, Input } from 'semantic-ui-react';\nimport { showMessage } from '../../helpers/MessageUtility';\nimport { useApim } from '../../hooks/useApi';\nimport CalculationRunner from '../../calculation/CalculationRunner';\nimport { checkIfCalculationValueIsTrue, parsePageRange } from '../helpers';\nimport { GoFormzServices } from '../../AppSettings';\nimport GfModal from '../../gfcomponents/GfModal/GfModal';\n\nexport interface GeneratePdfModalProps {\n  formId?: string;\n  templateId?: string;\n  printConfigs?: unknown[];\n  onClose?: VoidFunction;\n  versionId?: string;\n  saveFirst?: boolean;\n  saveForm?: VoidFunction;\n  template?: unknown;\n  form?: unknown;\n}\n\nexport default function GeneratePdfModal(props: GeneratePdfModalProps) {\n  const [pageRange, setPageRange] = useState('');\n  const [pageOutOfRange, setPageOutOfRange] = useState(false);\n  const [validPages, setValidPages] = useState(true);\n  const [pageVisibility, setPageVisibility] = useState<boolean>();\n  const [selectionType, setSelectionType] = useState('All');\n  const [exportingHiddenPages, setExportingHiddenPages] = useState(false);\n  const [selectedPages, setSelectedPages] = useState('');\n\n  const [formAndTemplateResult, loading, loaded] = useApim<{ template: unknown; form: unknown }>(\n    GoFormzServices.TemplateService,\n    props.versionId ? `/formAndTemplate/${props.formId}/versions/${props.versionId}` : `/formAndTemplate/${props.formId}`,\n    !!(props.form && props.template)\n  );\n\n  let template;\n  let form;\n  if (props.form && props.template) {\n    template = props.template;\n    form = props.form;\n  } else if (loaded) {\n    template = formAndTemplateResult.template;\n    form = formAndTemplateResult.form;\n  }\n\n  useEffect(() => {\n    if (template) {\n      getPageVisibility(template, form).then((pv: TypeMePlease) => {\n        setPageVisibility(pv);\n      });\n    }\n  }, [form, template]);\n\n  useEffect(() => {\n    if (pageVisibility) {\n      let pages;\n\n      if (selectionType === 'All') {\n        pages = template.pages.map((x) => x.number).sort((a, b) => a - b);\n        setSelectedPages('');\n        setValidPages(true);\n        setExportingHiddenPages(!template.pdfExportUseVisible && includesHiddenPage(pages, pageVisibility));\n      } else if (selectionType === 'Custom') {\n        pages = parsePageRange(\n          pageRange,\n          template.pages.map((x) => x.number).reduce((a, b) => Math.max(a, b))\n        );\n        const transformedPages = transformPages(pages, pageVisibility);\n        setSelectedPages(transformedPages.join(','));\n        setPageOutOfRange(!!(pageRange && transformedPages.length === 0));\n        setValidPages(transformedPages.length > 0);\n      } else {\n        // preset\n        const preset = template.printConfigs.find((x) => x.name === selectionType);\n        pages = parsePageRange(\n          preset.pages,\n          template.pages.map((x) => x.number).reduce((a, b) => Math.max(a, b))\n        );\n        setSelectedPages(preset.pages);\n        setValidPages(true);\n        setExportingHiddenPages(!template.pdfExportUseVisible && includesHiddenPage(pages, pageVisibility));\n      }\n    }\n  }, [selectionType, pageRange, pageVisibility]);\n\n  const handleSelectButtonClicked = async (download: boolean) => {\n    // TODO enable this once we want to do async pdf downloads\n    const async = false;\n    const exportSubmission = {\n      type: 'pdf',\n      pages: selectedPages,\n      forceDownload: download\n    };\n\n    if (props.saveFirst && props.saveForm) {\n      await props.saveForm();\n    }\n\n    let pdfWindow = null;\n    if (!download && !async) {\n      pdfWindow = window.open('/loading', '_blank');\n    }\n    try {\n      const { downloadPdf } = await import('../../helpers/PdfUtility');\n      const resultJson = await downloadPdf(props.formId, props.versionId, exportSubmission, async);\n\n      if (!async) {\n        if (!download) {\n          pdfWindow.location.href = resultJson.data.downloadUrl;\n        } else {\n          window.location.href = resultJson.data.downloadUrl;\n        }\n      }\n    } catch (err) {\n      if (pdfWindow != null) {\n        pdfWindow.close();\n      }\n      showMessage('Error', 'There was an error generating the pdf');\n    }\n\n    props.onClose();\n  };\n\n  const handlePageRangeChanged = (e) => {\n    setPageRange(e.target.value);\n  };\n\n  const selectPageRange = [\n    {\n      text: 'All pages',\n      value: 'All'\n    }\n  ];\n\n  if (pageVisibility && template && template.pages && template.pages.length > 0) {\n    selectPageRange.push({\n      text: 'Custom',\n      value: 'Custom'\n    });\n  }\n\n  if (template && template.printConfigs && template.pages && template.pages.length > 0) {\n    for (const printConfig of template.printConfigs) {\n      selectPageRange.push({\n        text: printConfig.name,\n        value: printConfig.name\n      });\n    }\n  }\n\n  return (\n    <GfModal\n      className=\"pdf-modal\"\n      title=\"Select Pages\"\n      primaryText=\"Download\"\n      secondaryText=\"Open\"\n      onPrimaryClick={() => handleSelectButtonClicked(true)}\n      onSecondaryClick={() => handleSelectButtonClicked(false)}\n      onClose={props.onClose}\n      actionButtonProps={{ primary: { disabled: !validPages }, secondary: { disabled: !validPages } }}\n    >\n      <Dropdown\n        placeholder=\"Select Pages\"\n        fluid\n        selection\n        options={selectPageRange}\n        value={selectionType}\n        onChange={(e, data) => setSelectionType(data.value as string)}\n        loading={loading || !pageVisibility}\n      />\n      {selectionType === 'Custom' ? (\n        <>\n          <div style={{ marginTop: '8px' }}>Pages</div>\n          <div style={{ marginTop: '8px' }}>\n            <Input placeholder=\"e.g. 1-3, 4-7\" value={pageRange} onChange={handlePageRangeChanged} error={pageOutOfRange} />\n          </div>\n        </>\n      ) : null}\n      {selectionType !== 'Custom' && exportingHiddenPages ? (\n        <>\n          <div style={{ marginTop: '16px', color: '#9b870c' }}>\n            <i className=\"ui icon warning sign\" />\n            Some pages that are hidden will be included in the PDF.\n          </div>\n        </>\n      ) : null}\n    </GfModal>\n  );\n}\n\n// TODO - GD-20719 web app perf cleanup\n\nasync function getPageVisibility(template, form) {\n  const pageVisibility = [];\n  for (const page of [...template.pages].sort((a, b) => a.number - b.number)) {\n    pageVisibility.push({ pageNumber: page.number, visible: page.visible !== false });\n  }\n\n  const pageVisibleFormulas = getPageVisibleFormulas(template);\n\n  if (pageVisibleFormulas.length > 0) {\n    const calculationRunner = new CalculationRunner(form.id, template);\n    await calculationRunner.init();\n\n    for (const pageVisibleFormula of pageVisibleFormulas) {\n      const result = await calculationRunner.executeFormula(pageVisibleFormula.formula, form.values);\n      pageVisibility.find((x) => x.pageNumber === pageVisibleFormula.pageNumber).visible = checkIfCalculationValueIsTrue(result);\n    }\n  }\n\n  return pageVisibility;\n}\n\nfunction getPageVisibleFormulas(template) {\n  const pageVisibleFormulas = [];\n  for (const page of template.pages) {\n    if (page.formulas) {\n      for (const formula of page.formulas) {\n        if (formula.key === 'Visible') {\n          pageVisibleFormulas.push({\n            pageNumber: page.number,\n            formula: formula.value\n          });\n        }\n      }\n    }\n  }\n  return pageVisibleFormulas;\n}\n\nfunction includesHiddenPage(pages, pageVisibility) {\n  for (const page of pages) {\n    const pageItem = pageVisibility.find((x) => x.pageNumber === page);\n    if (!pageItem.visible) {\n      return true;\n    }\n  }\n  return false;\n}\n\nfunction transformPages(pages, pageVisibility) {\n  const newPages = [];\n  let pageOffset = 0;\n  for (const { pageNumber, visible } of pageVisibility) {\n    if (!visible) {\n      pageOffset++;\n    } else {\n      const includePage = pages.indexOf(pageNumber - pageOffset) > -1;\n      if (includePage) {\n        newPages.push(pageNumber);\n      }\n    }\n  }\n  return newPages;\n}\n","/* eslint-disable global-require */\n/* boilerplate example of leaflet and webpack: https://github.com/btpschroeder/leaflet-webpack */\nimport React, { PureComponent } from 'react';\n\nimport L, { Map as LeafletMap } from 'leaflet';\nimport { analyticsTrack } from '../helpers/AnalyticsUtility';\nimport '../../node_modules/leaflet/dist/leaflet.css';\nimport icon from '../../node_modules/leaflet/dist/images/marker-icon.png';\nimport iconShadow from '../../node_modules/leaflet/dist/images/marker-shadow.png';\nimport { EditionCode } from '../subscription/subscription-types';\n\n/* This code is needed to properly load the images in the Leaflet CSS */\ndelete L.Icon.Default.prototype._getIconUrl;\n\nconst DefaultIcon = L.icon({\n  iconUrl: icon,\n  shadowUrl: iconShadow\n});\n\nL.Marker.prototype.options.icon = DefaultIcon;\n\ntype Coordinates = {\n  latitude: number;\n  longitude: number;\n};\n\ntype MapProps = {\n  center: Coordinates;\n  markers: Coordinates[];\n  subscription: EditionCode;\n};\n\nexport default class Map extends PureComponent<MapProps> {\n  map: LeafletMap;\n\n  componentDidMount() {\n    this.map = L.map(this.mapDiv).setView([this.props.center.latitude, this.props.center.longitude], 12);\n\n    analyticsTrack('Form History Map Clicked', {\n      tier: this.props.subscription\n    });\n\n    L.tileLayer('https://{s}.basemaps.cartocdn.com/rastertiles/voyager/{z}/{x}/{y}{r}.png', {\n      attribution: '&copy; <a href=\"http://www.openstreetmap.org/copyright\">OpenStreetMap</a> &copy; <a href=\"https://carto.com/attributions\">CARTO</a>',\n      subdomains: 'abcd',\n      maxZoom: 19\n    }).addTo(this.map);\n\n    for (const marker of this.props.markers) {\n      L.marker([marker.latitude, marker.longitude]).addTo(this.map);\n    }\n  }\n\n  mapDiv() {\n    throw new Error('Method not implemented.');\n  }\n\n  render() {\n    return (\n      <div\n        style={{ width: '100%', height: '100%' }}\n        ref={(r) => {\n          this.mapDiv = r as any;\n        }}\n      />\n    );\n  }\n}\n","import './FormHistoryModal.scss';\n\nimport React, { useEffect, useState } from 'react';\nimport moment from 'moment';\nimport { Icon } from 'semantic-ui-react';\nimport { Link } from 'react-router-dom';\nimport Map from '../../components/Map';\nimport ErrorBoundary from '../../components/ErrorBoundary';\nimport { apimCall } from '../../helpers/api';\nimport { getDateTimeFormat } from '../../helpers/DateTimeUtility';\nimport { useApim } from '../../hooks/useApi';\nimport { GoFormzServices } from '../../AppSettings';\nimport GfModal from '../../gfcomponents/GfModal/GfModal';\nimport { AppFeatures, canIUse } from '../../helpers/PermissionUtility';\nimport { FormVersion, FormAndTemplate } from '../../types/form-types';\nimport { useAppSelector } from '../../hooks/ReduxHooks';\nimport { EditionCode } from '../../subscription/subscription-types';\n\nexport interface FormHistoryModalProps {\n  name?: string;\n  id?: string;\n  latitude?: number;\n  longitude?: number;\n  onClose?: VoidFunction;\n  onRevertToVersion?: (formId: string, versionId: string) => void;\n  formAndTemplate?: unknown;\n  open?: boolean;\n}\n\nexport default function FormHistoryModal(props: FormHistoryModalProps) {\n  const [versions, versionsLoading, versionsLoaded] = useApim<FormVersion[]>(GoFormzServices.TemplateService, `/forms/${props.id}/versions`);\n\n  const [formAndTemplate, setFormAndTemplate] = useState<FormAndTemplate>({});\n  const [loading, setLoading] = useState(false);\n  const isAdmin = useAppSelector((state) => state.profile.isAdmin);\n\n  useEffect(() => {\n    async function fetchFormAndTemplate() {\n      try {\n        setLoading(true);\n        if (props.formAndTemplate === undefined) {\n          const response = await apimCall(GoFormzServices.TemplateService, `/formAndTemplate/${props.id}`);\n          setFormAndTemplate(response.data);\n        } else {\n          setFormAndTemplate(props.formAndTemplate);\n        }\n      } finally {\n        setLoading(false);\n      }\n    }\n    fetchFormAndTemplate();\n  }, []);\n\n  const getUserName = (id) => (formAndTemplate.userMap ? formAndTemplate.userMap[id] : null);\n  const calendarOptions = {\n    sameElse: getDateTimeFormat()\n  };\n\n  let templateHeader = null;\n  let historyBody: React.Component = null;\n\n  if (formAndTemplate && formAndTemplate.form && versionsLoaded) {\n    if (versions && versions.length > 0) {\n      // @ts-ignore - FIX\n      historyBody = (\n        // @ts-ignore - FIX\n        <VersionHistory\n          isAdmin={isAdmin}\n          formAndTemplate={formAndTemplate}\n          versions={versions}\n          getUserName={getUserName}\n          calendarOptions={calendarOptions}\n          onRevertToVersion={(versionId: string) => props.onRevertToVersion(props.id, versionId)}\n        />\n      );\n\n      if (versions[0].templateName && versions[0].templateVersionNumber) {\n        templateHeader = (\n          <p>\n            Template: {versions[0].templateName} (Version {versions[0].templateVersionNumber})\n          </p>\n        );\n      }\n    } else {\n      // @ts-ignore - FIX\n      historyBody = <LegacyHistory formAndTemplate={formAndTemplate} getUserName={getUserName} calendarOptions={calendarOptions} />;\n    }\n  }\n\n  return (\n    <GfModal className=\"form-history\" title=\"Form History\" onClose={props.onClose} scrolling semanticUiModalProps={{ size: 'small' }}>\n      {templateHeader}\n      {loading || versionsLoading ? <div className=\"ui active loader right-aligned\" /> : null}\n      <div className=\"history-items\">{historyBody}</div>\n    </GfModal>\n  );\n}\n\n// TODO - GD-20719 web app performance, cleanup below\n\nfunction getVersionActions(version, previousVersion, formAndTemplate) {\n  const actions = [];\n\n  let previousVersionStatus = null;\n  let previousVersionOwnerId = null;\n\n  if (version.missingPriorVersions) {\n    previousVersionStatus = formAndTemplate.form.completedDate ? 1 : 0;\n    previousVersionOwnerId = formAndTemplate.form.userId || formAndTemplate.form.groupId;\n  } else if (previousVersion !== null) {\n    previousVersionStatus = previousVersion.status;\n    previousVersionOwnerId = previousVersion.ownerId;\n  }\n\n  if (previousVersion === null && !version.missingPriorVersions) {\n    // first version\n    if (version.copiedForm) {\n      actions.push('duplicated');\n    } else {\n      actions.push('created');\n    }\n\n    if (version.status === 1) {\n      actions.push('completed');\n    }\n\n    // first version was created and transferred while offline on mobile\n    if (version.createdBy !== version.ownerId) {\n      actions.push('transferred');\n    }\n  } else {\n    actions.push('modified');\n\n    if (previousVersionStatus === 0 && version.status === 1) {\n      actions.push('completed');\n    } else if (previousVersionStatus === 1 && version.status === 0) {\n      actions.push('reopened');\n    }\n\n    if (previousVersionOwnerId !== version.ownerId) {\n      if (version.ownerId === version.createdBy) {\n        actions.push('takeownership');\n      } else {\n        actions.push('transferred');\n      }\n    }\n    if (version.publicFormSubmission) {\n      actions.push('publicFormSubmission');\n    }\n\n    if (previousVersion && previousVersion.templateVersionId !== version.templateVersionId) {\n      actions.push('templateVersionChanged');\n    }\n\n    if (version.esigned) {\n      actions.push('esigned');\n    }\n  }\n\n  return actions;\n}\n\nfunction getVersionActionTitle(version, actions, template, isAdmin) {\n  const safeName = (name) => (name ? name : 'Unknown User');\n  const workflowLink = (version.createdByName === 'Workflow' && isAdmin && version.workflowJobId) ?? false;\n  const templateLink = canIUse(AppFeatures.TemplateList) ?? false;\n  if (actions.indexOf('completed') > -1 && actions.indexOf('created') > -1 && !version.templateVersionNumber) {\n    return (\n      <span>\n        Created and completed from Template {templateLink ? <a href={`/templates/${template.id}`}>{`'${template.name}'`}</a> : `'${template.name}'`} by{' '}\n        {safeName(version.createdByName)}\n      </span>\n    );\n  } else if (actions.indexOf('completed') > -1 && actions.indexOf('created') > -1) {\n    return (\n      <span>\n        Created and completed from Template{' '}\n        {templateLink ? (\n          <a href={`/templates/${template.id}?versionId=${version.templateVersionId}`}>\n            {`'${template.name}`} (Version {version.templateVersionNumber})'\n          </a>\n        ) : (\n          `${`'${template.name}`} (Version ${version.templateVersionNumber})'`\n        )}{' '}\n        by {safeName(version.createdByName)}\n      </span>\n    );\n  } else if (actions.indexOf('transferred') > -1 && actions.indexOf('created') > -1 && !version.templateVersionNumber) {\n    return (\n      <span>\n        Created by {workflowLink ? <a href={`/workflows/jobs/${version.workflowJobId}`}>{safeName(version.createdByName)}</a> : safeName(version.createdByName)}{' '}\n        and transferred to {version.ownerType === 2 ? `Group '${safeName(version.ownerName)}'` : safeName(version.ownerName)} from Template{' '}\n        {templateLink ? <a href={`/templates/${template.id}`}>{`'${template.name}'`}</a> : `'${template.name}'`}\n      </span>\n    );\n  } else if (actions.indexOf('transferred') > -1 && actions.indexOf('created') > -1) {\n    return (\n      <span>\n        Created by {workflowLink ? <a href={`/workflows/jobs/${version.workflowJobId}`}>{safeName(version.createdByName)}</a> : safeName(version.createdByName)}{' '}\n        and transferred to {version.ownerType === 2 ? `Group '${safeName(version.ownerName)}'` : safeName(version.ownerName)} from Template{' '}\n        {templateLink ? (\n          <a href={`/templates/${template.id}?versionId=${version.templateVersionId}`}>\n            {`'${template.name}`} (Version {version.templateVersionNumber}')\n          </a>\n        ) : (\n          `${`'${template.name}`} (Version ${version.templateVersionNumber})'`\n        )}\n      </span>\n    );\n  } else if (actions.indexOf('reopened') > -1 && actions.indexOf('transferred') > -1 && workflowLink) {\n    return (\n      <span>\n        Reopened and transferred to {version.ownerType === 2 ? `Group '${safeName(version.ownerName)}'` : safeName(version.ownerName)} by{' '}\n        <a href={`/workflows/jobs/${version.workflowJobId}`}>{safeName(version.createdByName)}</a>\n      </span>\n    );\n  } else if (actions.indexOf('reopened') > -1 && actions.indexOf('transferred') > -1) {\n    return `Reopened and transferred to ${version.ownerType === 2 ? `Group '${safeName(version.ownerName)}'` : safeName(version.ownerName)}`;\n  } else if (actions.indexOf('completed') > -1) {\n    return `Completed by ${safeName(version.createdByName)}`;\n  } else if (version.publicFormSubmission && version.versionNumber === 1) {\n    return (\n      <span>\n        Created using a Public Form from Template '\n        {templateLink ? (\n          <a href={`/templates/${template.id}`}>{`${template.name} (Version ${version.templateVersionNumber})'`}</a>\n        ) : (\n          `'${template.name} (Version ${version.templateVersionNumber})'`\n        )}{' '}\n        - Owned by {safeName(version.createdByName)}\n      </span>\n    );\n  } else if (version.publicFormSubmission) {\n    const identifyingText =\n      version.publicFormRecipient?.name && (version.publicFormRecipient?.phoneNumber || version.publicFormRecipient?.email)\n        ? ` by ${version.publicFormRecipient.name} (${version.publicFormRecipient.phoneNumber || version.publicFormRecipient.email})`\n        : '';\n    return `Modified using a Public Form${identifyingText}`;\n  } else if (actions.indexOf('created') > -1 && !version.templateVersionNumber) {\n    return (\n      <span>\n        Created from Template {templateLink ? <a href={`/templates/${template.id}`}>{`'${template.name}'`}</a> : `'${template.name}'`} by{' '}\n        {workflowLink ? <a href={`/workflows/jobs/${version.workflowJobId}`}>{safeName(version.createdByName)}</a> : safeName(version.createdByName)}\n      </span>\n    );\n  } else if (actions.indexOf('created') > -1) {\n    return (\n      <span>\n        Created from Template{' '}\n        {templateLink ? (\n          <a href={`/templates/${template.id}?versionId=${version.templateVersionId}`}>\n            {`'${template.name}`} (Version {version.templateVersionNumber})'\n          </a>\n        ) : (\n          `${`'${template.name}`} (Version ${version.templateVersionNumber})'`\n        )}{' '}\n        by {safeName(version.createdByName)}\n      </span>\n    );\n  } else if (actions.indexOf('reopened') > -1) {\n    return (\n      <span>\n        Reopened by{' '}\n        {workflowLink ? <a href={`/workflows/jobs/${version.workflowJobId}`}>{safeName(version.createdByName)}</a> : safeName(version.createdByName)}\n      </span>\n    );\n  } else if (actions.indexOf('transferred') > -1) {\n    return `Transferred to ${version.ownerType === 2 ? `Group '${safeName(version.ownerName)}'` : safeName(version.ownerName)}`;\n  } else if (actions.indexOf('takeownership') > -1) {\n    return `Ownership taken by ${version.ownerType === 2 ? `Group '${safeName(version.ownerName)}'` : safeName(version.ownerName)}`;\n  } else if (actions.indexOf('templateVersionChanged') > -1) {\n    return `Updated to Template Version ${version.templateVersionNumber} by ${safeName(version.createdByName)}`;\n  } else if (actions.indexOf('duplicated') > -1) {\n    return `Duplicated from ${version.copiedForm.name} by ${safeName(version.createdByName)}`;\n  }\n  return (\n    <span>\n      Modified by {workflowLink ? <a href={`/workflows/jobs/${version.workflowJobId}`}>{safeName(version.createdByName)}</a> : safeName(version.createdByName)}\n    </span>\n  );\n}\n\nfunction getVersionIcon(actions) {\n  if (actions.indexOf('completed') > -1) {\n    return 'check circle outline';\n  } else if (actions.indexOf('publicFormSubmission') > -1) {\n    return 'file alternate outline';\n  } else if (actions.indexOf('transferred') > -1 || actions.indexOf('takeownership') > -1) {\n    return 'arrow alternate circle right outline';\n  } else if (actions.indexOf('created') > -1) {\n    return 'file text outline';\n  } else if (actions.indexOf('reopened') > -1) {\n    return 'undo';\n  } else if (actions.indexOf('duplicated') > -1) {\n    return 'copy outline';\n  }\n  return 'file alternate outline';\n}\n\nexport interface VersionHistoryProps {\n  isAdmin: boolean;\n  formAndTemplate: FormAndTemplate;\n  versions: FormVersion[];\n  getUserName: (id: string) => string;\n  calendarOptions: {\n    sameElse: string;\n  };\n  onRevertToVersion: (versionId: string) => void;\n}\nfunction VersionHistory(props: VersionHistoryProps) {\n  const { isAdmin, formAndTemplate, versions, getUserName, calendarOptions } = props;\n  const [expandedVersionGroup, setExpandedVersionGroup] = useState();\n  const [showMapVersionId, setShowMapVersionId] = useState();\n  const subscription = useAppSelector<EditionCode>((state) => state.profile.client.subscription);\n\n  const historyItems = [];\n  const versionsGroupedByActions = [];\n  const latestFormVersion = versions[versions.length - 1];\n  for (let i = 0; i < versions.length; i++) {\n    const version = versions[i];\n    const previousVersion = i > 0 ? versions[i - 1] : null;\n    const versionActions = getVersionActions(version, previousVersion, formAndTemplate);\n\n    const previousVersionsGroupedByAction = versionsGroupedByActions.length > 0 ? versionsGroupedByActions[versionsGroupedByActions.length - 1] : null;\n    if (\n      previousVersionsGroupedByAction &&\n      previousVersionsGroupedByAction.versionActions.length === 1 &&\n      previousVersionsGroupedByAction.versionActions[0] === 'modified' &&\n      versionActions.length === 1 &&\n      versionActions[0] === 'modified' &&\n      previousVersionsGroupedByAction.versions[0].createdBy === version.createdBy &&\n      previousVersionsGroupedByAction.versions[0].source === version.source\n    ) {\n      previousVersionsGroupedByAction.versions.push(version);\n    } else {\n      versionsGroupedByActions.push({\n        groupId: version.versionId,\n        versionActions,\n        versions: [version]\n      });\n    }\n  }\n\n  for (const versionsGroupedByAction of versionsGroupedByActions) {\n    const { versionActions } = versionsGroupedByAction;\n    const groupedVersions = versionsGroupedByAction.versions;\n    const firstVersion = groupedVersions[0];\n    const lastVersion = groupedVersions[groupedVersions.length - 1];\n\n    historyItems.push(\n      <React.Fragment key={firstVersion.versionId}>\n        {firstVersion.missingPriorVersions ? (\n          <React.Fragment>\n            <div key=\"created\" className=\"history-item-row\">\n              <div className=\"history-item\">\n                <Icon name=\"file text outline\" />\n                <div className=\"item-content\">\n                  <div className=\"item-header\">\n                    Created from {formAndTemplate.template.name} (Version {firstVersion.templateVersionNumber}) by {getUserName(formAndTemplate.form.createdBy)}\n                  </div>\n                  <div className=\"item-description\">{moment.utc(formAndTemplate.form.createdDate).local().calendar(null, calendarOptions)}</div>\n                </div>\n              </div>\n            </div>\n            {getMergedTransferHistory(formAndTemplate, versionsGroupedByActions).map((item, i) => (\n              <div key={i} className=\"history-item-row\">\n                <div className=\"history-item\">\n                  <Icon name=\"arrow alternate circle right outline\" />\n                  <div className=\"item-content\">\n                    <div className=\"item-header\">Transferred to {getUserName(item.destId)}</div>\n                    <div className=\"item-description\">{moment.utc(item.date).local().calendar(null, calendarOptions)}</div>\n                  </div>\n                </div>\n              </div>\n            ))}\n          </React.Fragment>\n        ) : null}\n        <div className=\"history-item-row\">\n          <div className=\"history-item\">\n            <Icon name={getVersionIcon(versionActions)} />\n            <div className=\"item-content\">\n              <div className=\"item-header\">{getVersionActionTitle(firstVersion, versionActions, formAndTemplate.template, isAdmin)}</div>\n              <div className=\"item-description\">\n                <span>{moment.utc(lastVersion.createdDate).local().calendar(null, calendarOptions)}</span>\n                {firstVersion.source ? <span>{getSourceDisplay(firstVersion.source)}</span> : null}\n                <span>-</span>\n                {groupedVersions.length > 1 ? (\n                  <React.Fragment>\n                    <span>{groupedVersions.length} versions -</span>\n                    <button\n                      className=\"link-button\"\n                      onClick={() => setExpandedVersionGroup(expandedVersionGroup === versionsGroupedByAction.groupId ? null : versionsGroupedByAction.groupId)}\n                    >\n                      {expandedVersionGroup === versionsGroupedByAction.groupId ? 'Collapse' : 'Expand'}\n                    </button>\n                  </React.Fragment>\n                ) : (\n                  <React.Fragment>\n                    <Link to={`/forms/${firstVersion.formId}?versionId=${firstVersion.versionId}`} target=\"_blank\">\n                      Form Version {firstVersion.versionNumber}\n                    </Link>\n                    {firstVersion.esigned ? ' - eSigned' : ''}\n                  </React.Fragment>\n                )}\n              </div>\n            </div>\n            <div className=\"history-item-row-right-container\">\n              {firstVersion.location && (\n                <div\n                  className=\"map-icon\"\n                  onClick={() => {\n                    setShowMapVersionId(showMapVersionId === firstVersion.versionId ? '' : firstVersion.versionId);\n                  }}\n                >\n                  <Icon name={'map outline'} />\n                </div>\n              )}\n              {(groupedVersions.length ?? 0) <= 1 && (\n                <RevertVersion formVersion={firstVersion} latestFormVersion={latestFormVersion} onRevertToVersion={props?.onRevertToVersion} />\n              )}\n            </div>\n          </div>\n          {showMapVersionId === firstVersion.versionId ? (\n            <div className=\"map-wrapper\">\n              <ErrorBoundary errorContent=\"Error rendering location\">\n                <Map center={firstVersion.location} markers={[firstVersion.location]} subscription={subscription} />\n              </ErrorBoundary>\n            </div>\n          ) : (\n            ''\n          )}\n        </div>\n        {expandedVersionGroup === versionsGroupedByAction.groupId\n          ? groupedVersions.map((groupedVersion) => (\n              <div key={groupedVersion.versionId} className=\"history-item-row\">\n                <div className=\"history-item sub-item\">\n                  <div className=\"item-content\">\n                    <div className=\"item-description\">\n                      <Icon name=\"circle\" />\n                      <React.Fragment>\n                        <span>{moment.utc(groupedVersion.createdDate).local().calendar(null, calendarOptions)}</span>\n                        &nbsp;-&nbsp;\n                        <Link to={`/forms/${groupedVersion.formId}?versionId=${groupedVersion.versionId}`} target=\"_blank\">\n                          Form Version {groupedVersion.versionNumber}\n                        </Link>\n                      </React.Fragment>\n                    </div>\n                  </div>\n                  <div className=\"history-item-row-right-container\">\n                    <RevertVersion formVersion={groupedVersion} latestFormVersion={latestFormVersion} onRevertToVersion={props?.onRevertToVersion} />\n                  </div>\n                </div>\n              </div>\n            ))\n          : null}\n      </React.Fragment>\n    );\n  }\n\n  return historyItems;\n}\n\nfunction RevertVersion(props) {\n  const { formVersion, latestFormVersion } = props;\n  if (latestFormVersion?.versionId === formVersion?.versionId || !canIUse(AppFeatures.FormRevert)) {\n    return <></>;\n  }\n  return (\n    <div\n      className=\"form-revert\"\n      onClick={() => {\n        props?.onRevertToVersion(formVersion.versionId);\n      }}\n    >\n      <a>Revert to this version</a>\n    </div>\n  );\n}\n\nfunction getSourceDisplay(source) {\n  switch (source) {\n    case 'web':\n      return 'using Web App';\n    case 'ios':\n      return 'using iOS App';\n    case 'android':\n      return 'using Android App';\n    case 'windows':\n      return 'using Windows App';\n    case 'mobile':\n      return 'using Mobile App';\n    case 'system':\n      return 'by System';\n    default:\n      return '';\n  }\n}\n\nfunction getMergedTransferHistory(formAndTemplate, versionsGroupedByActions) {\n  const transferVersions = versionsGroupedByActions\n    .filter((x) => x.versionActions.indexOf('transferred') > -1 || x.versionActions.indexOf('takeownership') > -1)\n    .map((x) => x.versions[0]);\n\n  let transferHistory = formAndTemplate.form.transferHistory || [];\n\n  console.log(transferVersions);\n  console.log(JSON.parse(JSON.stringify(transferHistory)));\n\n  transferHistory = transferHistory.slice(0, Math.max(0, transferHistory.length - transferVersions.length));\n\n  console.log(transferHistory);\n\n  return transferHistory;\n}\n\nfunction LegacyHistory(props) {\n  const { formAndTemplate, getUserName, calendarOptions } = props;\n  const historyItems = [];\n  const subscription = useAppSelector<EditionCode>((state) => state.profile.client.subscription);\n  const [showMap, setShowMap] = useState<boolean>(false);\n\n  historyItems.push(\n    <div key=\"created\" className=\"history-item-row\">\n      <div className=\"history-item\">\n        <Icon name=\"file alternate outline\" />\n        <div className=\"item-content\">\n          <div className=\"item-header\">Created by {getUserName(formAndTemplate.form.createdBy)}</div>\n          <div className=\"item-description\">{moment.utc(formAndTemplate.form.createdDate).local().calendar(null, calendarOptions)}</div>\n        </div>\n      </div>\n    </div>\n  );\n\n  if (formAndTemplate.form.transferHistory && formAndTemplate.form.transferHistory.length > 0) {\n    let i = 0;\n    for (const item of formAndTemplate.form.transferHistory) {\n      historyItems.push(\n        <div key={i} className=\"history-item-row\">\n          <div className=\"history-item\">\n            <Icon name=\"arrow alternate circle right outline\" />\n            <div className=\"item-content\">\n              <div className=\"item-header\">Transferred to {getUserName(item.destId)}</div>\n              <div className=\"item-description\">{moment.utc(item.date).local().calendar(null, calendarOptions)}</div>\n            </div>\n          </div>\n        </div>\n      );\n      i++;\n    }\n  }\n\n  if (formAndTemplate.form.completedDate) {\n    historyItems.push(\n      <div key=\"completed\" className=\"history-item-row\">\n        <div className=\"history-item\">\n          <Icon name=\"check circle outline\" />\n          <div className=\"item-content\">\n            <div className=\"item-header\">Completed by {getUserName(formAndTemplate.form.userId)}</div>\n            <div className=\"item-description\">{moment.utc(formAndTemplate.form.completedDate).local().calendar(null, calendarOptions)}</div>\n          </div>\n          <div className=\"history-item-row-right-container\">\n            {formAndTemplate.form.longitude && formAndTemplate.form.latitude ? (\n              <div\n                className=\"map-icon\"\n                onClick={() => {\n                  setShowMap(!showMap);\n                }}\n              >\n                <Icon name={'map outline'} />\n              </div>\n            ) : null}\n          </div>\n        </div>\n        {showMap && (\n          <div className=\"map-wrapper\">\n            <ErrorBoundary errorContent=\"Error rendering location\">\n              <Map\n                center={{ latitude: formAndTemplate.form.latitude, longitude: formAndTemplate.form.longitude }}\n                markers={[{ latitude: formAndTemplate.form.latitude, longitude: formAndTemplate.form.longitude }]}\n                subscription={subscription}\n              />\n            </ErrorBoundary>\n          </div>\n        )}\n      </div>\n    );\n  }\n  return historyItems;\n}\n","import React, { PureComponent } from 'react';\n\nimport { canIUse, AppFeatures } from '../../helpers/PermissionUtility';\nimport { FormTag } from '../tags-types';\n\nexport type FormTagItemProps = {\n  tag: FormTag;\n  onRemove: (id: string) => void;\n};\n\nexport default class FormTagItem extends PureComponent<FormTagItemProps, FormTag> {\n  render() {\n    const { tag, onRemove } = this.props;\n\n    return (\n      <div className=\"form-tag-item\">\n        {tag.tagName}\n        <button\n          className=\"plain-button delete-button\"\n          onClick={() => {\n            onRemove(tag.tagId);\n          }}\n        >\n          {canIUse(AppFeatures.TagAdd) ? <i className=\"ui icon delete\" /> : null}\n        </button>\n      </div>\n    );\n  }\n}\n","import React, { PureComponent } from 'react';\n\nimport { connect } from 'react-redux';\nimport { getFormTags, removeFormTag } from './../actions';\nimport Loader from '../../components/loader';\nimport FormTagItem from './FormTagItem';\nimport { RootState } from 'gf-types';\nimport { FormTag } from '../tags-types';\n\nexport type FormTagsProps = {\n  formId?: string;\n  tags?: FormTag[];\n  loading?: boolean;\n  getFormTags?: (id: string) => void;\n  removeFormTag?: () => void;\n};\n\n//@ts-ignore - FIX\n@connect(\n  (state: RootState) => ({\n    tags: state.tags?.formTags,\n    loading: state.tags?.formTagsLoading\n  }),\n  { getFormTags, removeFormTag }\n)\nexport default class FormTags extends PureComponent<FormTagsProps, FormTag> {\n  constructor(props: FormTagsProps) {\n    super(props);\n  }\n\n  componentDidMount() {\n    this.props.getFormTags(this.props.formId);\n  }\n\n  render() {\n    const { tags, loading } = this.props;\n\n    if (loading) {\n      return (\n        <div className=\"form-tags\">\n          <Loader isLoading />\n        </div>\n      );\n    }\n\n    const items = [];\n    if (tags) {\n      for (const tag of tags) {\n        items.push(<FormTagItem key={tag.tagId} tag={tag} onRemove={this.props.removeFormTag} />);\n      }\n    }\n\n    return <div className=\"form-tags\">{items}</div>;\n  }\n}\n","import React, { PureComponent } from 'react';\n\nimport { DndProvider, DragSource, DropTarget } from 'react-dnd';\nimport { HTML5Backend } from 'react-dnd-html5-backend';\nimport reactStringReplace from 'react-string-replace';\nimport { canIUse, AppFeatures } from '../../helpers/PermissionUtility';\nimport { showPrompt } from '../../helpers/MessageUtility';\nimport PopupDropdown from '../../components/PopupDropdown';\nimport { TagsItem } from '../tags-types';\n\nexport type TagItemProps = {\n  tag: TagsItem;\n  selectTag: (id: string, name: string) => void;\n  level: number;\n  expandedItems: string[];\n  toggleExpanded: (id: string) => void;\n  onRemove: (id: string) => void;\n  onRename: (id: string, text: string, parentId: string) => void;\n  onMove: (draggedId: string, name: string, droppedId: string) => void;\n  parentId: string;\n  parentIds: string[];\n  connectDragSource?: AnyFunc;\n  connectDropTarget?: AnyFunc;\n  isOver?: boolean;\n  canDrop?: boolean;\n  highlight: string;\n};\n\nconst dragSource = {\n  beginDrag(props) {\n    return {\n      tag: props.tag,\n      parentId: props.parentId\n    };\n  }\n};\n\nconst dropTarget = {\n  drop(props: TagItemProps, monitor) {\n    const draggedItem = monitor.getItem();\n    const draggedTag = draggedItem.tag;\n    const dropTag = props.tag;\n    props.onMove(draggedTag.id, draggedTag.name, dropTag.id);\n  },\n  canDrop(props: TagItemProps, monitor) {\n    const draggedItem = monitor.getItem();\n    const draggedTagId = draggedItem.tag.id;\n    const dropTagId = props.tag.id;\n\n    if (props.parentIds.indexOf(draggedTagId) > -1 || draggedTagId === dropTagId) {\n      return false;\n    }\n    return true;\n  }\n};\n//@ts-ignore - FIX\n@DropTarget('tagitem', dropTarget, (c, monitor) => ({\n  connectDropTarget: c.dropTarget(),\n  isOver: monitor.isOver(),\n  canDrop: monitor.canDrop()\n}))\n//@ts-ignore - FIX\n@DragSource('tagitem', dragSource, (c, monitor) => ({\n  connectDragSource: c.dragSource(),\n  isDragging: monitor.isDragging()\n}))\nexport default class TagItem extends PureComponent<TagItemProps, TagItem> {\n  private div: HTMLDivElement;\n\n  constructor(props: TagItemProps) {\n    super(props);\n\n    this.toggleExpanded = this.toggleExpanded.bind(this);\n    this.rename = this.rename.bind(this);\n  }\n\n  toggleExpanded() {\n    this.props.toggleExpanded(this.props.tag.id);\n  }\n\n  isExpanded() {\n    return this.props.expandedItems.includes(this.props.tag.id);\n  }\n\n  rename() {\n    const { tag, parentId, onRename } = this.props;\n    showPrompt(\n      {\n        title: 'Rename Tag',\n        msg: 'Tag name',\n        text: tag.name,\n        maxLength: 50\n      },\n      (result, text) => {\n        if (result) {\n          onRename(tag.id, text, parentId);\n        }\n      }\n    );\n  }\n\n  render() {\n    const { tag, selectTag, level, connectDragSource, connectDropTarget, isOver, parentId, canDrop, highlight } = this.props;\n    const expanded = this.isExpanded();\n    const canManageTags = canIUse(AppFeatures.TagManage);\n    const canAddTags = canIUse(AppFeatures.TagAdd);\n\n    const children = tag.children;\n    let icon;\n    if (children?.length > 0) {\n      icon = (\n        <button className=\"plain-button expand-icon\" onClick={this.toggleExpanded}>\n          <i className={`icon angle ${expanded ? 'down' : 'right'}`} />\n        </button>\n      );\n    } else {\n      icon = <i className=\"icon tag\" />;\n    }\n\n    let tagNameRender = null;\n    if (highlight) {\n      tagNameRender = reactStringReplace(tag.name, highlight, (match) => <span className=\"highlight\">{match}</span>);\n    } else {\n      tagNameRender = tag.name;\n    }\n\n    const tagLink = canAddTags ? (\n      <div className=\"tag-link\">\n        <a onClick={() => selectTag(tag.id, tag.name)}>{tagNameRender}</a>\n      </div>\n    ) : (\n      <div className=\"tag-link\">{tagNameRender}</div>\n    );\n\n    const tagItem = canManageTags ? (\n      <div\n        key={tag.id}\n        className={`tag-item${canManageTags ? ' draggable' : ''}${isOver && canDrop ? ' over' : ''}`}\n        ref={(r) => {\n          this.div = r;\n        }}\n        style={{ paddingLeft: `${2 + level * 16}px` }}\n      >\n        {icon}\n        {tagLink}\n        <PopupDropdown\n          trigger={\n            <button className=\"plain-button menu-button\">\n              <i className=\"ellipsis horizontal icon\" />\n            </button>\n          }\n          content={\n            <PopupDropdown.Menu vertical>\n              {parentId ? (\n                <PopupDropdown.Item\n                  text=\"Move to root\"\n                  icon=\"move\"\n                  onClick={() => {\n                    this.props.onMove(tag.id, tag.name, null);\n                  }}\n                />\n              ) : null}\n              <PopupDropdown.Item text=\"Rename\" icon=\"edit\" onClick={this.rename} />\n              <PopupDropdown.Item\n                text=\"Delete\"\n                icon=\"remove\"\n                onClick={() => {\n                  this.props.onRemove(tag.id);\n                }}\n              />\n            </PopupDropdown.Menu>\n          }\n        />\n      </div>\n    ) : (\n      <div key={tag.id} className=\"tag-item\" style={{ paddingLeft: `${2 + level * 16}px` }}>\n        {icon}\n        {tagLink}\n      </div>\n    );\n\n    return canManageTags ? <DndProvider backend={HTML5Backend}>{connectDropTarget(connectDragSource(tagItem))}</DndProvider> : tagItem;\n  }\n}\n","import React, { PureComponent } from 'react';\n\nimport { connect } from 'react-redux';\nimport VirtualizedList from '@enykeev/react-virtualized/dist/commonjs/List';\nimport ResizeSensor from 'resize-sensor';\nimport { getAllNestedTags, addFormTag, deleteTag, renameTag, moveTag } from './../actions';\nimport TagItem from './TagItem';\nimport Loader from '../../components/loader';\nimport { RootState } from 'gf-types';\nimport { TagsItem, TagsList, TagState } from './../tags-types';\n\nexport type TagListProps = {\n  tags?: TagsItem[];\n  getAllNestedTags?: () => void;\n  tagsLoading?: boolean;\n  tagsLoaded?: boolean;\n  addFormTag?: () => void;\n  search?: string;\n  deleteTag?: () => void;\n  renameTag?: () => void;\n  moveTag?: () => void;\n};\n\n//@ts-ignore - FIX\n@connect(\n  (state: RootState) => ({\n    tags: state.tags?.items,\n    tagsLoading: state.tags?.loading,\n    tagsLoaded: state.tags?.loaded\n  }),\n  { getAllNestedTags, addFormTag, deleteTag, renameTag, moveTag }\n)\nexport default class TagList extends PureComponent<TagListProps, TagsList> {\n  private resizeSensor: ResizeSensor;\n  private tagList: TagsList;\n\n  constructor(props: TagListProps) {\n    super(props);\n\n    this.toggleExpanded = this.toggleExpanded.bind(this);\n    this.updateDimensions = this.updateDimensions.bind(this);\n\n    this.state = {\n      expandedItems: [],\n      tags: this.props.tags,\n      listWidth: 0,\n      listHeight: 0\n    };\n  }\n\n  componentDidMount() {\n    if (!this.props.tagsLoaded && !this.props.tagsLoading) {\n      this.props.getAllNestedTags();\n    }\n\n    this.resizeSensor = new ResizeSensor(this.tagList, this.updateDimensions);\n  }\n\n  componentDidUpdate(prevProps: TagListProps, prevState: TagState) {\n    if (prevProps.tags !== this.props.tags || prevProps.search !== this.props.search) {\n      if (this.props.search) {\n        const result = this.getTagsBySearch(this.props.tags);\n        this.setState({\n          tags: result.filteredTags,\n          expandedItems: result.expandedIds\n        });\n      } else {\n        this.setState({ tags: this.props.tags, expandedItems: prevProps.search !== this.props.search ? [] : prevState.expandedItems });\n      }\n    }\n  }\n\n  componentWillUnmount() {\n    if (this.resizeSensor) {\n      this.resizeSensor.detach();\n    }\n  }\n\n  getTagsBySearch(tags: TagsItem[]) {\n    const filteredTags = [];\n    let expandedIds = [];\n    for (const tag of tags) {\n      const c = this.getTagsBySearch(tag.children);\n      const filteredChildren = c.filteredTags;\n      if (filteredChildren.length > 0 || tag.name.toLowerCase().indexOf(this.props.search.toLowerCase()) > -1) {\n        filteredTags.push({\n          id: tag.id,\n          name: tag.name,\n          children: filteredChildren\n        });\n      }\n      if (filteredChildren.length > 0) {\n        expandedIds = [...expandedIds, tag.id, ...c.expandedIds];\n      }\n    }\n    return { filteredTags: filteredTags, expandedIds };\n  }\n\n  getFlattenedTagList(tags: TagsItem[], level: number, parentIds: string[]) {\n    let list = [];\n    if (tags) {\n      for (const tag of tags) {\n        list.push({\n          level,\n          tag,\n          parentIds\n        });\n        if (this.state.expandedItems.indexOf(tag.id) > -1) {\n          list = [...list, ...this.getFlattenedTagList(tag.children, level + 1, [...parentIds, tag.id])];\n        }\n      }\n    }\n    return list;\n  }\n\n  updateDimensions() {\n    this.setState({\n      listWidth: this.tagList.offsetWidth,\n      listHeight: this.tagList.offsetHeight\n    });\n  }\n\n  toggleExpanded(id: string) {\n    this.setState((prevState: TagState) => {\n      let expandedItems;\n      const currentIndex = prevState.expandedItems.indexOf(id);\n      if (currentIndex > -1) {\n        expandedItems = [...prevState.expandedItems];\n        expandedItems.splice(currentIndex, 1);\n      } else {\n        expandedItems = [id, ...prevState.expandedItems];\n      }\n      return { expandedItems };\n    });\n  }\n\n  render() {\n    const { tagsLoading, tagsLoaded, search } = this.props;\n\n    if (!tagsLoaded || tagsLoading) {\n      return (\n        <div\n          key=\"tag-list\"\n          className=\"tag-list\"\n          ref={(r) => {\n            this.tagList = r;\n          }}\n        >\n          <Loader isLoading />\n        </div>\n      );\n    }\n\n    const flattenedList = this.getFlattenedTagList(this.state.tags, 0, []);\n\n    const rowRenderer = (options) => {\n      const { key, index, style } = options;\n      const listItem = flattenedList[index];\n      const { tag, level, parentIds } = listItem;\n      return (\n        <div key={key} style={style}>\n          <TagItem\n            tag={tag}\n            selectTag={this.props.addFormTag}\n            level={level}\n            expandedItems={this.state.expandedItems}\n            toggleExpanded={this.toggleExpanded}\n            onRemove={this.props.deleteTag}\n            onRename={this.props.renameTag}\n            onMove={this.props.moveTag}\n            parentIds={parentIds}\n            parentId={parentIds.length > 0 ? parentIds[parentIds.length - 1] : null}\n            highlight={search}\n          />\n        </div>\n      );\n    };\n\n    return (\n      <div\n        key=\"tag-list\"\n        className=\"tag-list\"\n        ref={(r) => {\n          this.tagList = r;\n        }}\n      >\n        <VirtualizedList rowCount={flattenedList.length} height={this.state.listHeight} width={this.state.listWidth} rowHeight={32} rowRenderer={rowRenderer} />\n      </div>\n    );\n  }\n}\n","import React, { useEffect, useState } from 'react';\nimport { AppFeatures, canIUse } from '../../helpers/PermissionUtility';\nimport { DndProvider } from 'react-dnd';\nimport { FormTag } from '../tags-types';\nimport { Grid } from 'semantic-ui-react';\nimport { HTML5Backend } from 'react-dnd-html5-backend';\nimport { Provider, ReactReduxContext, connect } from 'react-redux';\nimport { saveFormTagChanges, createAndAddTag, createTag, getAllNestedTags } from '../actions';\nimport { useAppSelector } from '../../hooks/ReduxHooks';\nimport FormTags from './FormTags';\nimport GfModal from '../../gfcomponents/GfModal/GfModal';\nimport TagList from './TagList';\nimport Loader from '../../components/loader';\n\nexport type TagsModalProps = {\n  formId: string;\n  formName: string;\n  onClose: (formTags?: FormTag[]) => void;\n  saveFormTagChanges?: (formId: string, onClose: () => void) => void;\n  createAndAddTag?: (id: string) => void;\n  createTag?: (id: string) => void;\n  getAllNestedTags?: () => void;\n};\n\nconst mapDispatchToProps = {\n  saveFormTagChanges,\n  createAndAddTag,\n  createTag,\n  getAllNestedTags\n};\n\nfunction ConnectedTagsModal(props: TagsModalProps) {\n  const [search, setSearch] = useState('');\n  const saving = useAppSelector<boolean>((state) => !!state.tags?.saving);\n  const savingTag = useAppSelector<boolean>((state) => !!state.tags?.savingTag);\n  const canAddTags = canIUse(AppFeatures.TagAdd);\n  const canCreateTags = canIUse(AppFeatures.TagCreate);\n\n  useEffect(() => {\n    // refresh the tags list every time the modal is opened\n    props.getAllNestedTags();\n  }, []);\n\n  function searchChanged(e: React.ChangeEvent<HTMLInputElement>) {\n    setSearch(e.target.value);\n  }\n\n  function searchKeyDown(e: React.KeyboardEvent) {\n    if (e.key === 'Enter' && canCreateTags) {\n      createTag();\n    }\n  }\n\n  function createTag() {\n    if (!!search?.trim() && canCreateTags) {\n      if (canAddTags) {\n        props.createAndAddTag(search);\n      } else {\n        props.createTag(search);\n      }\n    }\n\n    setSearch('');\n  }\n\n  function handleSaveChangesClick() {\n    props.saveFormTagChanges(props.formId, props.onClose);\n  }\n\n  function closeModal() {\n    props.onClose(null);\n  }\n\n  return (\n    <ReactReduxContext.Consumer>\n      {(ctx) => (\n        <DndProvider backend={HTML5Backend}>\n          <Provider store={ctx.store}>\n            <GfModal\n              title={`Tags - ${props.formName}`}\n              onClose={() => closeModal()}\n              className=\"tags-modal\"\n              primaryText=\"Save Changes\"\n              onPrimaryClick={handleSaveChangesClick}\n              tertiaryText=\"Cancel\"\n              onTertiaryClick={() => closeModal()}\n              loading={saving}\n              semanticUiModalProps={{ size: 'small' }}\n            >\n              <Grid divided=\"vertically\">\n                <Grid.Column width={8}>\n                  <div className=\"tag-column\">\n                    <h3>Tags</h3>\n                    <div className=\"select-add-label\">{canCreateTags ? 'Select a tag or create a new tag' : 'Select a tag'}</div>\n                    <div className=\"add-search\">\n                      <input\n                        className=\"add-search-input\"\n                        value={search}\n                        onChange={searchChanged}\n                        onKeyDown={searchKeyDown}\n                        style={{ paddingRight: canCreateTags ? '32px' : '8px' }}\n                        maxLength={50}\n                      />\n                      {canCreateTags ? (\n                        <button className=\"plain-button add-tag-button\" onClick={createTag}>\n                          <i className=\"icon plus circle\" />\n                        </button>\n                      ) : null}\n                    </div>\n                    <TagList search={search} />\n                    <Loader isLoading={savingTag || false} />\n                  </div>\n                </Grid.Column>\n                <Grid.Column width={8}>\n                  <div className=\"tag-column\">\n                    <h3>Tags In-Use</h3>\n                    <FormTags formId={props.formId} />\n                  </div>\n                </Grid.Column>\n              </Grid>\n            </GfModal>\n          </Provider>\n        </DndProvider>\n      )}\n    </ReactReduxContext.Consumer>\n  );\n}\n\nconst TagsModal = connect(null, mapDispatchToProps)(ConnectedTagsModal);\n\nexport default TagsModal;\n"],"names":["exports","___CSS_LOADER_API_IMPORT___","push","module","id","content","locals","FormVersionRevertModal","props","useState","saving","setSaving","formReverted","setFormReverted","error","setError","reOpenFormBeforeSaving","setReOpenFormBeforeSaving","TemplateService","formId","versionId","formVersionResult","formVersionResultLoading","formResult","formResultLoading","cleanAutoTags","form","tags","forEach","x","isAutoTag","operation","loading","primaryText","onPrimaryClick","url","window","open","onClose","currentForm","JSON","parse","stringify","formVersion","versionNumber","hasBeenReopened","completedDate","format","values","value","find","fieldId","getFormVersionForRevert","console","className","title","errorText","semanticUiModalProps","size","isLoading","name","label","checked","onChange","undefined","Provider","Consumer","PopupDropdown","popupOpened","setPopupOpened","popup","useRef","searchInput","searchTerm","setSearchTerm","activeOptionIndex","setActiveOptionIndex","popupOnClose","current","blur","closePopup","close","selectValue","option","filteredOptions","options","filter","text","toLowerCase","indexOf","trigger","selection","matchingOption","clearable","placeholder","search","onKeyDown","e","length","keyCode","preventDefault","i","Math","max","min","target","autoComplete","ref","onClick","stopPropagation","children","Menu","map","Item","key","active","selected","contentWrapper","on","basic","position","popperModifiers","escapeWithReference","offset","onOpen","vertical","fluid","Header","context","icon","TransferModal","bulkTransfer","isTransferring","toggleTransferModal","transferForms","userPage","typingTimeout","showSearchResults","modalState","setModalState","handleClose","useCallback","clearTimeout","handleTransferClick","selectedItem","transferType","type","selectedId","selectedName","ctx","store","tertiaryText","onTertiaryClick","actionButtonProps","primary","disabled","hideAdministrator","hideDeactivatedUsers","hideCurrentUser","hidePendingUsers","groupSelected","GeneratePdfModal","template","pageRange","setPageRange","pageOutOfRange","setPageOutOfRange","validPages","setValidPages","pageVisibility","setPageVisibility","selectionType","setSelectionType","exportingHiddenPages","setExportingHiddenPages","selectedPages","setSelectedPages","formAndTemplateResult","loaded","useEffect","pages","sort","a","b","number","page","pageNumber","visible","pageVisibleFormulas","formulas","formula","getPageVisibleFormulas","calculationRunner","init","pageVisibleFormula","executeFormula","result","getPageVisibility","then","pv","pdfExportUseVisible","includesHiddenPage","transformedPages","newPages","pageOffset","transformPages","reduce","join","preset","printConfigs","handleSelectButtonClicked","download","async","exportSubmission","forceDownload","saveFirst","saveForm","pdfWindow","downloadPdf","resultJson","location","href","data","downloadUrl","showMessage","selectPageRange","printConfig","secondaryText","onSecondaryClick","secondary","style","marginTop","color","Default","prototype","_getIconUrl","DefaultIcon","iconUrl","shadowUrl","componentDidMount","this","mapDiv","setView","center","latitude","longitude","tier","subscription","attribution","subdomains","maxZoom","addTo","markers","marker","Error","render","width","height","r","PureComponent","useApi","versions","versionsLoading","versionsLoaded","formAndTemplate","setFormAndTemplate","setLoading","isAdmin","state","profile","api","response","fetchFormAndTemplate","getUserName","userMap","calendarOptions","sameElse","templateHeader","historyBody","VersionHistory","onRevertToVersion","templateName","templateVersionNumber","LegacyHistory","GfModal","scrolling","getVersionActions","version","previousVersion","actions","previousVersionStatus","previousVersionOwnerId","missingPriorVersions","userId","groupId","status","ownerId","createdBy","publicFormSubmission","templateVersionId","esigned","copiedForm","expandedVersionGroup","setExpandedVersionGroup","showMapVersionId","setShowMapVersionId","client","historyItems","versionsGroupedByActions","latestFormVersion","versionActions","previousVersionsGroupedByAction","source","versionsGroupedByAction","groupedVersions","firstVersion","lastVersion","Icon","createdDate","local","calendar","transferVersions","transferHistory","log","slice","getMergedTransferHistory","item","destId","date","safeName","workflowLink","createdByName","workflowJobId","templateLink","TemplateList","ownerType","ownerName","identifyingText","publicFormRecipient","phoneNumber","email","getVersionActionTitle","getSourceDisplay","to","RevertVersion","ErrorBoundary","errorContent","groupedVersion","FormRevert","showMap","setShowMap","tag","onRemove","tagName","tagId","TagAdd","getFormTags","items","removeFormTag","FormTags","formTags","formTagsLoading","dragSource","beginDrag","parentId","dropTarget","drop","monitor","draggedTag","getItem","dropTag","onMove","canDrop","draggedTagId","dropTagId","parentIds","toggleExpanded","bind","rename","isExpanded","expandedItems","includes","onRename","showPrompt","msg","maxLength","selectTag","level","connectDragSource","connectDropTarget","isOver","highlight","expanded","canManageTags","TagManage","canAddTags","tagNameRender","match","tagLink","tagItem","div","paddingLeft","DndProvider","backend","TagItem","DropTarget","c","DragSource","isDragging","updateDimensions","listWidth","listHeight","tagsLoaded","tagsLoading","getAllNestedTags","resizeSensor","tagList","componentDidUpdate","prevProps","prevState","getTagsBySearch","setState","filteredTags","expandedIds","componentWillUnmount","detach","filteredChildren","getFlattenedTagList","list","offsetWidth","offsetHeight","currentIndex","splice","flattenedList","rowCount","rowHeight","rowRenderer","index","listItem","addFormTag","deleteTag","renameTag","moveTag","TagList","mapDispatchToProps","saveFormTagChanges","createAndAddTag","createTag","setSearch","savingTag","canCreateTags","TagCreate","searchChanged","searchKeyDown","trim","handleSaveChangesClick","closeModal","formName","Grid","divided","Column","paddingRight"],"sourceRoot":""}