{"version":3,"file":"js/common_error_pages-78b45403cf2246862fe4.js","mappings":"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","sources":["webpack://user-interviews/./app/javascript/researcher/participant_search/filtered_view/utils.js","webpack://user-interviews/./app/javascript/hooks/use_media_query.js","webpack://user-interviews/./app/javascript/hooks/use_sidebar_mobile_breakpoint.ts","webpack://user-interviews/./app/javascript/researcher/participant_search/segment_builder/lib/filter_list.js","webpack://user-interviews/./app/javascript/hooks/use_http.js","webpack://user-interviews/./app/javascript/components/page/components/sidebar/hooks/use_sidebar_context.ts","webpack://user-interviews/./app/javascript/api/population_labels/endpoints.ts","webpack://user-interviews/./app/javascript/api/projects/endpoints.ts","webpack://user-interviews/./app/javascript/researcher/project_workspace/constants.ts","webpack://user-interviews/./app/javascript/hooks/use_authorization.js","webpack://user-interviews/./app/javascript/researcher/project_workspace/hooks/use_project_workspace_context.tsx","webpack://user-interviews/./app/javascript/store/slices/column_configuration_slice.js","webpack://user-interviews/./app/javascript/api/utils.ts","webpack://user-interviews/./app/javascript/components/owner_boundary/context.tsx","webpack://user-interviews/./app/javascript/researcher/participant_search/invite_rules_drawer/constants.js","webpack://user-interviews/./app/javascript/api/segments/endpoints.js","webpack://user-interviews/./app/javascript/api/participant_population_opt_in_forms/endpoints.js","webpack://user-interviews/./app/javascript/hooks/use_rails_context.tsx","webpack://user-interviews/./app/javascript/researcher/project_workspace/slice.js","webpack://user-interviews/./app/javascript/researcher/project_workspace/store/utils.js","webpack://user-interviews/./app/javascript/components/connect_calendar/prop_types.js","webpack://user-interviews/./app/javascript/store/slices/segments_slice.js","webpack://user-interviews/./app/javascript/researcher/participant_search/segment_builder/lib/filter_utils.js","webpack://user-interviews/./app/javascript/components/dope_browser_router.tsx","webpack://user-interviews/./app/javascript/api/tag_types.js","webpack://user-interviews/./app/javascript/hoc/with_page_providers.tsx","webpack://user-interviews/./app/javascript/api/team_projects/endpoints.js","webpack://user-interviews/./app/javascript/researcher/project_workspace/hooks/use_get_project_state.ts","webpack://user-interviews/./app/javascript/hoc/utils.ts","webpack://user-interviews/./app/javascript/hooks/use_auth_user_context.ts","webpack://user-interviews/./app/javascript/components/page/components/footer/footer.module.scss?ffdc","webpack://user-interviews/./app/javascript/components/page/components/footer/footer.tsx","webpack://user-interviews/./app/javascript/api/account_hub_configurations/endpoints.ts","webpack://user-interviews/./app/javascript/api/participants/endpoints.js","webpack://user-interviews/./app/javascript/participant/participant_profile/constants.js","webpack://user-interviews/./app/javascript/hoc/with_auth_user_context.jsx","webpack://user-interviews/./app/javascript/store/slices/project_details_slice.js","webpack://user-interviews/./app/javascript/store/root_reducer.js","webpack://user-interviews/./app/javascript/store/store.js","webpack://user-interviews/./app/javascript/components/page/components/sidebar/hooks/use_is_sidebar_open.ts","webpack://user-interviews/./app/javascript/components/page/components/sidebar_context_provider/sidebar_context_provider.tsx","webpack://user-interviews/./app/javascript/components/page/components/navigation_item/navigation_item.module.scss?4926","webpack://user-interviews/./app/javascript/components/page/components/navigation_item/navigation_item.tsx","webpack://user-interviews/./app/javascript/components/page/components/navigation_item/hooks/use_is_active.ts","webpack://user-interviews/./app/javascript/api/base_slice.js","webpack://user-interviews/./app/javascript/api/population_attributes/endpoints.ts","webpack://user-interviews/./app/javascript/components/page/components/sidebar/sidebar_entrypoint.ts","webpack://user-interviews/./app/javascript/components/page/components/footer/footer_entrypoint.ts","webpack://user-interviews/./app/javascript/packs/common_error_pages.js","webpack://user-interviews/./app/javascript/store/slices/participant_profile_slice.js","webpack://user-interviews/./app/javascript/hooks/use_error_logger.tsx","webpack://user-interviews/./app/javascript/components/page/components/sidebar/components/account_navigation_item/components/account_menu_popover/account_menu_popover.module.scss?a55e","webpack://user-interviews/./app/javascript/components/page/components/sidebar/components/account_navigation_item/components/account_menu_popover/account_menu_popover.tsx","webpack://user-interviews/./app/javascript/components/page/components/sidebar/components/account_navigation_item/account_navigation_item.module.scss?7b53","webpack://user-interviews/./app/javascript/components/page/components/sidebar/components/account_navigation_item/account_navigation_item.tsx","webpack://user-interviews/./app/javascript/components/page/components/sidebar/sidebar.module.scss?3dae","webpack://user-interviews/./app/javascript/components/page/components/sidebar/sidebar.tsx","webpack://user-interviews/./app/javascript/hooks/use_tracking_with_default_dispatch.ts","webpack://user-interviews/./app/javascript/api/population_invite_filters/endpoints.js"],"sourcesContent":["export const firstNameAccessor = 'firstName';\nexport const lastNameAccessor = 'lastName';\nexport const phoneNumberAccessor = 'phoneNumber';\nexport const timezoneAccessor = 'timezone';\nexport const sourceTypeAccessor = 'sourceType';\nexport const participantLabelsAccessor = 'participantLabels';\nexport const createdAtAccessor = 'activityStats.createdAt';\nexport const daysSinceInvitedAccessor = 'activityStats.daysSinceInvited';\nexport const lastBulkEmailAccessor = 'lastBulkEmailSentAt';\nexport const daysSinceAppliedAccessor = 'activityStats.daysSinceApplied';\nexport const daysSinceParticipatedAccessor =\n  'activityStats.daysSinceParticipated';\nexport const totalIncentivesEarnedAccessor = 'totalIncentivesEarned';\nexport const unsubscribedAccessor = 'unsubscribed';\n\nexport const populationAttributeAccessorPrefix = `participantAttribute`;\n\nexport const buildColumns = ({\n  canViewPii,\n  columnOrder,\n  hiddenColumns,\n  maxIncentiveYear,\n  minIncentiveYear,\n  populationAttributes,\n}) => {\n  const hiddenColumnsLookUp = buildHiddenColumnsLookUp(hiddenColumns);\n\n  const populationAttributesLookUp = buildPopulationAttributeColumnsLookUp({\n    hiddenColumnsLookUp,\n    populationAttributes,\n  });\n\n  const baseColumnLookUp = buildHubDefaultColumnsLookUp({\n    canViewPii,\n    hiddenColumnsLookUp,\n    maxIncentiveYear,\n    minIncentiveYear,\n  });\n\n  const columnMap = new Map([\n    ...baseColumnLookUp,\n    ...populationAttributesLookUp,\n  ]);\n\n  const order = columnOrder?.length\n    ? completeColumnOrder({\n        columnOrder,\n        populationAttributes,\n      })\n    : buildHubDefaultColumnOrder({\n        maxIncentiveYear,\n        minIncentiveYear,\n        populationAttributes,\n      });\n\n  const columns = [];\n\n  order.forEach((columnAccessor) => {\n    const column = columnMap.get(columnAccessor);\n\n    if (column) columns.push(column);\n  });\n\n  return columns;\n};\n\nconst buildHubDefaultColumnOrder = ({\n  maxIncentiveYear,\n  minIncentiveYear,\n  populationAttributes,\n}) => [\n  firstNameAccessor,\n  lastNameAccessor,\n  phoneNumberAccessor,\n  timezoneAccessor,\n  createdAtAccessor,\n  sourceTypeAccessor,\n  participantLabelsAccessor,\n  daysSinceInvitedAccessor,\n  lastBulkEmailAccessor,\n  daysSinceAppliedAccessor,\n  daysSinceParticipatedAccessor,\n  totalIncentivesEarnedAccessor,\n  ...yearlyIncentiveAccessors(maxIncentiveYear, minIncentiveYear),\n  'unsubscribed',\n  ...populationAttributeAccessors(populationAttributes),\n];\n\nexport const buildHiddenColumnsLookUp = (hiddenColumns) => {\n  const lookup = new Map();\n\n  if (hiddenColumns?.length) {\n    hiddenColumns.forEach((hiddenColumn) => {\n      lookup.set(hiddenColumn, true);\n    });\n  }\n\n  return lookup;\n};\n\nexport const buildHubDefaultColumnsLookUp = ({\n  canViewPii,\n  hiddenColumnsLookUp,\n  maxIncentiveYear,\n  minIncentiveYear,\n}) => {\n  const hiddenColumns = hiddenColumnsLookUp || new Map();\n\n  return new Map([\n    [\n      firstNameAccessor,\n      {\n        accessor: firstNameAccessor,\n        Header: 'First name',\n        hidden: !!hiddenColumns.get(firstNameAccessor),\n        id: firstNameAccessor,\n        meta: nonEditableMetaData,\n      },\n    ],\n    [\n      lastNameAccessor,\n      {\n        accessor: lastNameAccessor,\n        Header: canViewPii ? 'Last name' : 'Last Initial',\n        hidden: !!hiddenColumns.get(lastNameAccessor),\n        id: lastNameAccessor,\n        meta: nonEditableMetaData,\n      },\n    ],\n    [\n      phoneNumberAccessor,\n      {\n        accessor: phoneNumberAccessor,\n        Header: 'Phone number',\n        hidden: !!hiddenColumns.get(phoneNumberAccessor),\n        id: phoneNumberAccessor,\n        meta: nonEditableMetaData,\n      },\n    ],\n    [\n      timezoneAccessor,\n      {\n        accessor: timezoneAccessor,\n        Header: 'Timezone',\n        hidden: !!hiddenColumns.get(timezoneAccessor),\n        id: timezoneAccessor,\n        meta: nonEditableMetaData,\n      },\n    ],\n    [\n      sourceTypeAccessor,\n      {\n        accessor: sourceTypeAccessor,\n        Header: 'Source',\n        hidden: !!hiddenColumns.get(sourceTypeAccessor),\n        id: sourceTypeAccessor,\n        meta: nonEditableMetaData,\n      },\n    ],\n    [\n      participantLabelsAccessor,\n      {\n        accessor: participantLabelsAccessor,\n        Header: 'Labels',\n        hidden: !!hiddenColumns.get(participantLabelsAccessor),\n        id: participantLabelsAccessor,\n        meta: nonEditableMetaData,\n      },\n    ],\n    [\n      createdAtAccessor,\n      {\n        accessor: createdAtAccessor,\n        Header: 'Date added',\n        hidden: !!hiddenColumns.get(createdAtAccessor),\n        id: createdAtAccessor,\n        meta: nonEditableMetaData,\n      },\n    ],\n    [\n      daysSinceInvitedAccessor,\n      {\n        accessor: daysSinceInvitedAccessor,\n        Header: 'Last invited',\n        hidden: !!hiddenColumns.get(daysSinceInvitedAccessor),\n        id: daysSinceInvitedAccessor,\n        meta: nonEditableMetaData,\n      },\n    ],\n    [\n      lastBulkEmailAccessor,\n      {\n        accessor: lastBulkEmailAccessor,\n        Header: 'Last bulk email',\n        hidden: !!hiddenColumns.get(lastBulkEmailAccessor),\n        id: lastBulkEmailAccessor,\n        meta: nonEditableMetaData,\n      },\n    ],\n    [\n      daysSinceAppliedAccessor,\n      {\n        accessor: daysSinceAppliedAccessor,\n        Header: 'Last applied',\n        hidden: !!hiddenColumns.get(daysSinceAppliedAccessor),\n        id: daysSinceAppliedAccessor,\n        meta: nonEditableMetaData,\n      },\n    ],\n    [\n      daysSinceParticipatedAccessor,\n      {\n        accessor: daysSinceParticipatedAccessor,\n        Header: 'Last participated',\n        hidden: !!hiddenColumns.get(daysSinceParticipatedAccessor),\n        id: daysSinceParticipatedAccessor,\n        meta: nonEditableMetaData,\n      },\n    ],\n    [\n      totalIncentivesEarnedAccessor,\n      {\n        accessor: totalIncentivesEarnedAccessor,\n        Header: 'Total incentives earned',\n        hidden: !!hiddenColumns.get(totalIncentivesEarnedAccessor),\n        id: totalIncentivesEarnedAccessor,\n        meta: nonEditableMetaData,\n      },\n    ],\n    [\n      unsubscribedAccessor,\n      {\n        accessor: unsubscribedAccessor,\n        Header: 'Unsubscribed',\n        hidden: !!hiddenColumns.get(unsubscribedAccessor),\n        id: unsubscribedAccessor,\n        meta: nonEditableMetaData,\n      },\n    ],\n    ...buildYearlyIncentiveColumnsLookUp({\n      hiddenColumnsLookUp,\n      maxIncentiveYear,\n      minIncentiveYear,\n    }),\n  ]);\n};\n\nexport const buildPopulationAttributeColumnsLookUp = ({\n  hiddenColumnsLookUp,\n  populationAttributes,\n}) => {\n  if (!populationAttributes) return [];\n\n  const hiddenColumns = hiddenColumnsLookUp || new Map();\n\n  const lookUp = new Map();\n\n  populationAttributes.forEach((populationAttribute) => {\n    const accessor = `${populationAttributeAccessorPrefix}${populationAttribute.id}`;\n\n    lookUp.set(accessor, {\n      accessor,\n      editable: true,\n      id: populationAttribute.id,\n      Header: populationAttribute.name,\n      hidden: !!hiddenColumns.get(accessor),\n      meta: populationAttribute.meta,\n    });\n  });\n\n  return lookUp;\n};\n\nexport const buildYearlyIncentiveColumnsLookUp = ({\n  hiddenColumnsLookUp,\n  maxIncentiveYear,\n  minIncentiveYear,\n}) => {\n  const hiddenColumns = hiddenColumnsLookUp || new Map();\n\n  const lookUp = new Map();\n\n  yearlyIncentiveYears(maxIncentiveYear, minIncentiveYear).forEach((year) => {\n    const accessor = `totalIncentives${year}`;\n\n    lookUp.set(accessor, {\n      accessor,\n      Header: `Total incentives (${year})`,\n      hidden: !!hiddenColumns.get(accessor),\n      id: accessor,\n      meta: nonEditableMetaData,\n    });\n  });\n\n  return lookUp;\n};\n\nconst completeColumnOrder = ({ columnOrder, populationAttributes }) => {\n  if (!populationAttributes?.length || !columnOrder?.length) return columnOrder;\n\n  const missingPopulationAttributes = [];\n\n  populationAttributes.forEach((populationAttribute) => {\n    const accessor = `${populationAttributeAccessorPrefix}${populationAttribute.id}`;\n\n    if (!columnOrder.includes(accessor))\n      missingPopulationAttributes.push(accessor);\n  });\n\n  return [...columnOrder, ...missingPopulationAttributes];\n};\n\nexport const nonEditableMetaData = {\n  canDelete: false,\n  canUpdate: false,\n};\n\nexport const populationAttributeAccessors = (populationAttributes) => {\n  if (!populationAttributes) {\n    return [];\n  }\n\n  return populationAttributes.map(\n    (populationAttribute) =>\n      `${populationAttributeAccessorPrefix}${populationAttribute.id}`,\n  );\n};\n\nexport const rearrangeColumnOrder = ({\n  activeAccessor,\n  columnOrder,\n  overAccessor,\n}) => {\n  const reorderColumns = [...columnOrder];\n\n  const activeColumnIndex = reorderColumns.indexOf(activeAccessor);\n\n  const activeColumn = reorderColumns.splice(activeColumnIndex, 1);\n  if (activeColumn) {\n    const spliceIndex = reorderColumns.indexOf(overAccessor);\n    reorderColumns.splice(spliceIndex, 0, activeColumn[0]);\n  }\n\n  return reorderColumns;\n};\n\nexport const updateHiddenColumns = (accessor, hiddenColumns) => {\n  if (!hiddenColumns) return [accessor];\n\n  const index = hiddenColumns.indexOf(accessor);\n\n  if (index === -1) {\n    hiddenColumns.push(accessor);\n  } else {\n    hiddenColumns.splice(index, 1);\n  }\n\n  return hiddenColumns;\n};\n\nexport const yearlyIncentiveAccessors = (maxIncentiveYear, minIncentiveYear) =>\n  yearlyIncentiveYears(maxIncentiveYear, minIncentiveYear).map(\n    (year) => `totalIncentives${year}`,\n  );\n\nexport const yearlyIncentiveYears = (maxIncentiveYear, minIncentiveYear) => {\n  const years = [];\n\n  let currentYear = maxIncentiveYear;\n\n  if (currentYear === 0 || minIncentiveYear === 0) {\n    return years;\n  }\n\n  while (currentYear >= minIncentiveYear) {\n    years.push(currentYear);\n\n    currentYear -= 1;\n  }\n\n  return years;\n};\n","import { useCallback, useEffect, useMemo, useState } from 'react';\nimport { isServer } from 'lib/ssr_utils';\n\nexport const MEDIA_BREAKPOINT_LG = '(min-width: 992px)';\nexport const MEDIA_BREAKPOINT_MD = '(min-width: 768px)';\nexport const MEDIA_BREAKPOINT_SM = '(min-width: 576px)';\nexport const MEDIA_BREAKPOINT_XS = '(max-width: 575px)';\n\nexport default (mediaQuery) => {\n  const mediaQueryList = useMemo(\n    () => (isServer ? null : window.matchMedia(mediaQuery)),\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n    [],\n  );\n\n  const [mediaQueryMatches, setMediaQueryMatches] = useState(\n    mediaQueryList?.matches,\n  );\n\n  const handleMediaQueryChange = useCallback(\n    ({ matches }) => setMediaQueryMatches(matches),\n    [],\n  );\n\n  useEffect(() => {\n    function addEventListener() {\n      if (!mediaQueryList) return;\n\n      if (typeof mediaQueryList.addEventListener === 'function') {\n        mediaQueryList.addEventListener('change', handleMediaQueryChange);\n      } else {\n        // This is deprecated, though Safari 13 still has this so keep it here until that's old\n        mediaQueryList.addListener(handleMediaQueryChange);\n      }\n    }\n\n    function removeEventListener() {\n      if (!mediaQueryList) return;\n\n      if (typeof mediaQueryList.removeEventListener === 'function') {\n        mediaQueryList.removeEventListener('change', handleMediaQueryChange);\n      } else {\n        // This is deprecated, though Safari 13 still has this so keep it here until that's old\n        mediaQueryList.removeListener(handleMediaQueryChange);\n      }\n    }\n\n    addEventListener();\n\n    return removeEventListener;\n  }, [handleMediaQueryChange, mediaQueryList]);\n\n  return mediaQueryMatches;\n};\n","import useMediaQuery, { MEDIA_BREAKPOINT_MD } from 'hooks/use_media_query';\n\nexport function useSidebarMobileBreakpoint() {\n  const isMobile = !useMediaQuery(MEDIA_BREAKPOINT_MD);\n\n  return isMobile;\n}\n","import {\n  FIELD_FILTER_OPERANDS,\n  ACTIVITY_STAT_FILTER_OPERANDS,\n  ATTRIBUTE_FILTER_OPERANDS,\n  INCENTIVE_OPERANDS,\n  PARTICIPANT_LABEL_OPERANDS,\n  POPULATION_ATTRIBUTE_IS_NOT_SET_OPERANDS,\n  POPULATION_ATTRIBUTE_IS_SET_OPERANDS,\n  PROJECT_OPERANDS,\n  OPT_IN_FORM_OPERANDS,\n} from 'lib/generated_constants/filters_constants';\n\nimport generateUUID from 'lib/generate_uuid';\n\nexport const FILTER_KEYS = {\n  email: 'email',\n  created_at: 'created_at',\n  first_name: 'first_name',\n  labels: 'labels',\n  last_applied_at: 'last_applied_at',\n  last_invited_at: 'last_invited_at',\n  last_participated_at: 'last_participated_at',\n  last_name: 'last_name',\n  opt_in_form: 'opt_in_form',\n  phone_number: 'phone_number',\n  project_participation: 'project_participation',\n  source: 'source',\n  yearly_payment: 'yearly_payment',\n  unsubscribed: 'unsubscribed',\n};\n\nexport const getParamKey = () => `filter-param-key-${generateUUID()}`;\n\nexport const getDefaultParams = (isNotSetOperand) => {\n  if (isNotSetOperand) {\n    return {\n      key: getParamKey(),\n      orIsNotSet: false,\n    };\n  }\n\n  return {\n    key: getParamKey(),\n  };\n};\n\nconst defaultFilterRuleOperand = (operands, type) => {\n  // Note: Some operands are limited by type, if not all operands are available\n  // to each filter type.  If type is passed, only return operands relevant to that type.\n  const availableOperands = type ? operands[type] : operands;\n\n  return availableOperands[0] || {};\n};\n\nconst createPopulationAttributeFilter = (attribute) => {\n  const { id, name, type } = attribute;\n\n  const defaultAttributeFilterRuleOperand = defaultFilterRuleOperand(\n    ATTRIBUTE_FILTER_OPERANDS,\n    type,\n  );\n\n  const availableOperands = type\n    ? ATTRIBUTE_FILTER_OPERANDS[type]\n    : ATTRIBUTE_FILTER_OPERANDS;\n\n  return {\n    availableOperands,\n    defaultFilterRuleShape: {\n      activityStat: null,\n      field: null,\n      operand: defaultAttributeFilterRuleOperand.key,\n      params: [\n        getDefaultParams(POPULATION_ATTRIBUTE_IS_NOT_SET_OPERANDS[type]),\n      ],\n      participantPopulationAttributeId: id,\n      type,\n    },\n    attribute,\n    id,\n    name,\n    isSetOperand: POPULATION_ATTRIBUTE_IS_SET_OPERANDS[type],\n    isNotSetOperand: POPULATION_ATTRIBUTE_IS_NOT_SET_OPERANDS[type],\n  };\n};\n\nexport const defaultLabelOperand = defaultFilterRuleOperand(\n  PARTICIPANT_LABEL_OPERANDS,\n);\n\nconst defaultBooleanOperand = defaultFilterRuleOperand(\n  FIELD_FILTER_OPERANDS,\n  'boolean',\n);\n\nconst defaultActivityStatDateOperand = defaultFilterRuleOperand(\n  ACTIVITY_STAT_FILTER_OPERANDS,\n  'date',\n);\n\nconst defaultDecimalOperand = defaultFilterRuleOperand(\n  INCENTIVE_OPERANDS,\n  'decimal',\n);\n\nconst defaultIntegerOperand = defaultFilterRuleOperand(\n  FIELD_FILTER_OPERANDS,\n  'integer',\n);\n\nconst defaultStringOperand = defaultFilterRuleOperand(\n  FIELD_FILTER_OPERANDS,\n  'string',\n);\n\nexport const standardFilters = {\n  [FILTER_KEYS.labels]: {\n    availableOperands: PARTICIPANT_LABEL_OPERANDS,\n    defaultFilterRuleShape: {\n      activityStat: null,\n      field: null,\n      operand: defaultLabelOperand.key,\n      params: [getDefaultParams()],\n      participantPopulationAttributeId: null,\n    },\n    name: 'Labels',\n    id: FILTER_KEYS.labels,\n  },\n  [FILTER_KEYS.project_participation]: {\n    availableOperands: PROJECT_OPERANDS,\n    defaultFilterRuleShape: {\n      activityStat: null,\n      field: null,\n      operand: defaultFilterRuleOperand(PROJECT_OPERANDS).key,\n      params: [getDefaultParams()],\n      participantPopulationAttributeId: null,\n    },\n    addRowLabel: 'Add another project',\n    name: 'Project history',\n    id: FILTER_KEYS.project_participation,\n  },\n  [FILTER_KEYS.opt_in_form]: {\n    availableOperands: OPT_IN_FORM_OPERANDS,\n    defaultFilterRuleShape: {\n      activityStat: null,\n      field: null,\n      operand: defaultFilterRuleOperand(OPT_IN_FORM_OPERANDS).key,\n      params: [getDefaultParams()],\n      participantPopulationAttributeId: null,\n    },\n    addRowLabel: 'Add another opt-in form',\n    id: FILTER_KEYS.opt_in_form,\n    name: 'Opt-in form history',\n  },\n  [FILTER_KEYS.email]: {\n    availableOperands: FIELD_FILTER_OPERANDS.string,\n    defaultFilterRuleShape: {\n      activityStat: null,\n      field: FILTER_KEYS.email,\n      operand: defaultStringOperand.key,\n      params: [getDefaultParams()],\n      participantPopulationAttributeId: null,\n      type: 'string',\n    },\n    id: FILTER_KEYS.email,\n    name: 'Email',\n  },\n  [FILTER_KEYS.first_name]: {\n    availableOperands: FIELD_FILTER_OPERANDS.string,\n    defaultFilterRuleShape: {\n      activityStat: null,\n      field: FILTER_KEYS.first_name,\n      operand: defaultStringOperand.key,\n      params: [getDefaultParams()],\n      participantPopulationAttributeId: null,\n      type: 'string',\n    },\n    id: FILTER_KEYS.first_name,\n    name: 'First name',\n  },\n  [FILTER_KEYS.last_name]: {\n    availableOperands: FIELD_FILTER_OPERANDS.string,\n    defaultFilterRuleShape: {\n      activityStat: null,\n      field: FILTER_KEYS.last_name,\n      operand: defaultStringOperand.key,\n      participantPopulationAttributeId: null,\n      params: [getDefaultParams()],\n      type: 'string',\n    },\n    id: FILTER_KEYS.last_name,\n    name: 'Last name',\n  },\n  [FILTER_KEYS.phone_number]: {\n    availableOperands: FIELD_FILTER_OPERANDS.string,\n    defaultFilterRuleShape: {\n      activityStat: null,\n      field: FILTER_KEYS.phone_number,\n      operand: defaultStringOperand.key,\n      params: [getDefaultParams()],\n      participantPopulationAttributeId: null,\n      type: 'string',\n    },\n    id: FILTER_KEYS.phone_number,\n    name: 'Phone number',\n  },\n  [FILTER_KEYS.source]: {\n    availableOperands: FIELD_FILTER_OPERANDS.integer,\n    defaultFilterRuleShape: {\n      activityStat: null,\n      field: FILTER_KEYS.source,\n      operand: defaultIntegerOperand.key,\n      params: [getDefaultParams()],\n      participantPopulationAttributeId: null,\n      type: 'integer',\n    },\n    id: FILTER_KEYS.source,\n    name: 'First source',\n  },\n  [FILTER_KEYS.unsubscribed]: {\n    availableOperands: FIELD_FILTER_OPERANDS.boolean,\n    defaultFilterRuleShape: {\n      activityStat: null,\n      field: FILTER_KEYS.unsubscribed,\n      operand: defaultBooleanOperand.key,\n      params: [getDefaultParams()],\n      participantPopulationAttributeId: null,\n      type: 'boolean',\n    },\n    id: FILTER_KEYS.unsubscribed,\n    name: 'Unsubscribed',\n  },\n  [FILTER_KEYS.last_applied_at]: {\n    availableOperands: ACTIVITY_STAT_FILTER_OPERANDS.date,\n    defaultFilterRuleShape: {\n      activityStat: FILTER_KEYS.last_applied_at,\n      field: null,\n      operand: defaultActivityStatDateOperand.key,\n      params: [getDefaultParams(true)],\n      participantPopulationAttributeId: null,\n      type: 'date',\n    },\n    id: FILTER_KEYS.last_applied_at,\n    name: 'Last applied date',\n    isSetOperand: 'activity_stat_date_is_set',\n    isNotSetOperand: 'activity_stat_date_is_not_set',\n  },\n  [FILTER_KEYS.last_invited_at]: {\n    availableOperands: ACTIVITY_STAT_FILTER_OPERANDS.date,\n    defaultFilterRuleShape: {\n      activityStat: FILTER_KEYS.last_invited_at,\n      field: null,\n      operand: defaultActivityStatDateOperand.key,\n      params: [getDefaultParams(true)],\n      participantPopulationAttributeId: null,\n      type: 'date',\n    },\n    id: FILTER_KEYS.last_invited_at,\n    name: 'Last invited date',\n    isSetOperand: 'activity_stat_date_is_set',\n    isNotSetOperand: 'activity_stat_date_is_not_set',\n  },\n  [FILTER_KEYS.last_participated_at]: {\n    availableOperands: ACTIVITY_STAT_FILTER_OPERANDS.date,\n    defaultFilterRuleShape: {\n      activityStat: FILTER_KEYS.last_participated_at,\n      field: null,\n      operand: defaultActivityStatDateOperand.key,\n      params: [getDefaultParams(true)],\n      participantPopulationAttributeId: null,\n      type: 'date',\n    },\n    id: FILTER_KEYS.last_participated_at,\n    name: 'Last participated date',\n    isSetOperand: 'activity_stat_date_is_set',\n    isNotSetOperand: 'activity_stat_date_is_not_set',\n  },\n  [FILTER_KEYS.yearly_payment]: {\n    availableOperands: INCENTIVE_OPERANDS.decimal,\n    defaultFilterRuleShape: {\n      activityStat: null,\n      field: null,\n      operand: defaultDecimalOperand.key,\n      params: [getDefaultParams()],\n      participantPopulationAttributeId: null,\n      type: 'decimal',\n    },\n    id: FILTER_KEYS.yearly_payment,\n    name: 'Incentives earned',\n  },\n  [FILTER_KEYS.created_at]: {\n    availableOperands: FIELD_FILTER_OPERANDS.date,\n    defaultFilterRuleShape: {\n      activityStat: null,\n      field: FILTER_KEYS.created_at,\n      operand: 'field_date_before',\n      params: [getDefaultParams()],\n      participantPopulationAttributeId: null,\n      type: 'date',\n    },\n    id: FILTER_KEYS.created_at,\n    name: 'Date added',\n  },\n};\n\nexport const buildFilterList = ({ populationAttributes }) => {\n  if (!populationAttributes?.length > 0) return standardFilters;\n\n  const attributes = {};\n\n  populationAttributes.forEach((attribute) => {\n    attributes[attribute.id] = createPopulationAttributeFilter(attribute);\n  });\n\n  return { ...attributes, ...standardFilters };\n};\n","import { useMemo, useState } from 'react';\n\nimport Http, { FormatResponse } from 'lib/http';\nimport { useTracking } from 'react-tracking';\nimport { reactTrackingEvent } from 'lib/analytics';\n\nconst defaultOnError = (error) => {\n  throw error;\n};\n\nconst defaultOnSuccess = FormatResponse.jsonApi({});\n\nfunction buildMakeRequest(method, setLoading, trackEvent) {\n  return async (\n    url,\n    { data = {}, onSuccess = defaultOnSuccess, onError = defaultOnError } = {},\n  ) => {\n    let start;\n    try {\n      setLoading(true);\n\n      start = performance.now();\n      const response = await Http[method].call(null, url, data);\n      return onSuccess(response);\n    } catch (error) {\n      return onError(error);\n    } finally {\n      setLoading(false);\n      const end = performance.now() - start;\n      const pageLocation = window.location.pathname\n        .replace(/\\/[0-9]+\\//g, '/:id/')\n        .replace(/\\/[0-9]+/g, '/:id');\n      // e.g.: Loading Page -- '/projects/:id/messages/:id'\n      trackEvent({\n        event: `Loading Page -- '${pageLocation.replace(/\\/+$/, '')}'`,\n        request_url: url,\n        timeSpent: end,\n      });\n    }\n  };\n}\n\nconst useHttp = () => {\n  const [loading, setLoading] = useState(false);\n  const { trackEvent } = useTracking({}, { dispatch: reactTrackingEvent });\n  /* eslint-disable react-hooks/exhaustive-deps */\n  return {\n    loading,\n    delete: useMemo(\n      () => buildMakeRequest('delete', setLoading, trackEvent),\n      [],\n    ),\n    get: useMemo(() => buildMakeRequest('get', setLoading, trackEvent), []),\n    patch: useMemo(() => buildMakeRequest('patch', setLoading, trackEvent), []),\n    post: useMemo(() => buildMakeRequest('post', setLoading, trackEvent), []),\n    put: useMemo(() => buildMakeRequest('put', setLoading, trackEvent), []),\n  };\n  /* eslint-enable react-hooks/exhaustive-deps */\n};\n\nexport default useHttp;\n","import { useContext } from 'react';\nimport { SidebarContext } from '../../sidebar_context_provider';\n\nexport function useSidebarContext() {\n  return useContext(SidebarContext);\n}\n","/* eslint-disable camelcase */\nimport type {\n  RequestOperations,\n  PathParameters,\n  ResponseBody,\n} from 'lib/swagger_helper';\nimport * as routes from 'lib/routes';\nimport { apiSlice } from 'api/base_slice';\nimport { POPULATION_LABELS_TAG } from 'api/tag_types';\nimport { headersAndCredentials } from 'api/utils';\n\nexport type ParticipantPopulationLabelsRawResponse =\n  ResponseBody<'getParticipantPopulationLabels'>;\nexport type BulkParticipantPopulationLabelOperations =\n  RequestOperations<'bulkParticipantPopulationLabels'>;\n\nfunction transformResponse(response: ParticipantPopulationLabelsRawResponse) {\n  const { data } = response;\n\n  return data\n    .sort((a, b) => a.attributes.label.localeCompare(b.attributes.label))\n    .map((raw) => ({\n      ...raw.attributes,\n      id: raw.id,\n      meta: raw.meta,\n      // older code expects this transformation of API response state\n      value: raw.attributes.label,\n    }));\n}\n\nexport type ParticipantPopulationLabelsApiResponse = ReturnType<\n  typeof transformResponse\n>;\n\nexport const populationLabelsApi = apiSlice.injectEndpoints({\n  endpoints: (builder) => ({\n    getPopulationLabels: builder.query<\n      ParticipantPopulationLabelsApiResponse,\n      PathParameters<'getParticipantPopulationLabels'>\n    >({\n      query: ({ participant_population_id }) =>\n        routes.api_participant_population_labels_path(\n          participant_population_id,\n        ),\n      providesTags: [POPULATION_LABELS_TAG],\n      transformResponse,\n    }),\n    bulkPopulationLabels: builder.mutation<\n      unknown,\n      {\n        operations: BulkParticipantPopulationLabelOperations;\n      } & PathParameters<'bulkParticipantPopulationLabels'>\n    >({\n      query: ({ operations, participant_population_id }) => ({\n        url: routes.bulk_api_participant_population_labels_path(\n          participant_population_id,\n        ),\n        method: 'POST',\n        body: { 'atomic:operations': operations },\n        ...headersAndCredentials(),\n      }),\n      invalidatesTags: [POPULATION_LABELS_TAG],\n    }),\n  }),\n  overrideExisting: 'throw',\n});\n\nexport const { useGetPopulationLabelsQuery, useBulkPopulationLabelsMutation } =\n  populationLabelsApi;\n","// using the any type here until this endpoint gets RSwag.\n// The API has a lot of conditionally included resources  so its a bit of work\n// to tease it out.\nimport { merge } from 'lodash';\nimport * as routes from 'lib/routes';\nimport type { RequestBodyAttributes } from 'lib/swagger_helper';\n\nimport { deserializeJSONApiResponse, headersAndCredentials } from 'api/utils';\nimport { apiSlice } from 'api/base_slice';\nimport {\n  PROJECT_TAG,\n  PROJECT_COST_BREAKDOWN_TAG,\n  PROJECT_EXPECTED_COST_DETAILS_TAG,\n  PROJECT_PAYMENT_METHODS_TAG,\n  PROJECT_DEMOGRAPHIC_RULES_TAG,\n  PROJECT_AVAILABILITY_SETTINGS_TAG,\n  PARTICIPANT_MANAGEMENT_SHORTLISTED_PARTICIPANTS_TAG,\n} from 'api/tag_types';\n\nexport const projectsApi = apiSlice.injectEndpoints({\n  endpoints: (builder) => ({\n    getProject: builder.query<\n      // eslint-disable-next-line @typescript-eslint/no-explicit-any\n      any,\n      {\n        projectId: string;\n        include?: string;\n      }\n    >({\n      query: ({ projectId, include }) =>\n        routes.api_project_path(projectId, { include }),\n      // eslint-disable-next-line @typescript-eslint/no-explicit-any\n      transformResponse: (response: any) =>\n        merge(deserializeJSONApiResponse(response), {\n          meta: {\n            invalidLaunchMessages: response.meta?.invalidLaunchMessages,\n            invalidLaunchProps: response.meta?.invalidLaunchProps,\n            firstProjectId: response.meta?.firstProjectId,\n            canEdit: response.meta?.canEdit,\n          },\n        }),\n      providesTags: (_result, _error, { projectId }) => [\n        { type: PROJECT_TAG, id: projectId },\n      ],\n    }),\n    createProject: builder.mutation<\n      { id: string },\n      RequestBodyAttributes<'createProject'>\n    >({\n      query: (attributes) => ({\n        url: routes.api_projects_path(),\n        method: 'POST',\n        body: { data: { attributes, type: 'project' } },\n        ...headersAndCredentials(),\n      }),\n      transformResponse: deserializeJSONApiResponse,\n    }),\n    updateProject: builder.mutation<\n      unknown,\n      {\n        projectId: string;\n        skipProjectInvalidation?: boolean;\n        attributes: unknown;\n      }\n    >({\n      query: ({ projectId, attributes }) => ({\n        url: routes.api_project_path(projectId),\n        method: 'PATCH',\n        body: { data: { attributes } },\n        ...headersAndCredentials(),\n      }),\n      transformResponse: deserializeJSONApiResponse,\n      invalidatesTags: (\n        _result,\n        _error,\n        { projectId, skipProjectInvalidation },\n      ) => [\n        ...(skipProjectInvalidation\n          ? []\n          : [{ type: PROJECT_TAG, id: projectId } as const]),\n        { type: PROJECT_COST_BREAKDOWN_TAG, id: projectId },\n        { type: PROJECT_EXPECTED_COST_DETAILS_TAG, id: projectId },\n        { type: PROJECT_PAYMENT_METHODS_TAG, id: projectId },\n        { type: PROJECT_DEMOGRAPHIC_RULES_TAG, id: projectId },\n        {\n          type: PARTICIPANT_MANAGEMENT_SHORTLISTED_PARTICIPANTS_TAG,\n          id: 'LIST',\n        },\n        PROJECT_AVAILABILITY_SETTINGS_TAG,\n      ],\n    }),\n    deleteProject: builder.mutation<unknown, { projectId: string | number }>({\n      query: ({ projectId }) => ({\n        url: routes.api_project_path(projectId),\n        method: 'DELETE',\n        ...headersAndCredentials(),\n      }),\n      invalidatesTags: (_result, _error, { projectId }) => [\n        { type: PROJECT_TAG, id: projectId },\n      ],\n    }),\n  }),\n  overrideExisting: 'throw',\n});\n\nexport const {\n  useGetProjectQuery,\n  useCreateProjectMutation,\n  useUpdateProjectMutation,\n  useDeleteProjectMutation,\n} = projectsApi;\n","export const ACTIVITY_STEP = 'activity';\nexport const DETAILS_STEP = 'details';\nexport const EXPERIENCE_STEP = 'experience';\nexport const RECRUITMENT_STEP = 'recruitment';\nexport const SCHEDULING_DRAWER = 'scheduling_drawer';\nexport const PREPARATION_INSTRUCTIONS_DRAWER =\n  'preparation_instructions_drawer';\nexport const TASK_LOCATION_DRAWER = 'task_location_drawer';\nexport const RECRUITMENT_CRITERIA_DRAWER = 'recruitment_criteria_drawer';\nexport const SCREENER_SURVEY_DRAWER = 'screener_survey_drawer';\nexport const SCREENER_VIDEO_DRAWER = 'screener_video_drawer';\nexport const INTERNAL_TITLE_DESCRIPTION_MODAL =\n  'internal_title_description_modal';\nexport const URL_REGEX = /https?:\\/\\/\\w+((:\\d+)?\\/\\S*)?/;\nexport const URL_SECURED_REGEX = /^https:\\/\\/(?:[\\w-]+\\.)*[\\w-]+\\.\\w+(?:.*)?$/;\nexport const TRACKING_ID = 'TRACKINGID';\nexport const VALID_TRACKING_ID_REGEX =\n  /(?:\\/TRACKINGID(?:\\/|$)|[?&][^=]+=TRACKINGID(?:&|$))/;\nexport const COMPENSATION_TYPE_OTHER = 'Other';\nexport const CASH_COMPENSATION_OPTION = { label: 'Cash', value: 'Cash' };\nexport const OTHER_COMPENSATION_OPTION = {\n  label: 'Other',\n  value: COMPENSATION_TYPE_OTHER,\n};\nexport const VISA_GIFT_CARD_COMPENSATION_OPTION = {\n  label: 'Visa gift card',\n  value: 'Visa gift card',\n};\nexport const ALL_THEY_PAY_COMPENSATION_OPTIONS = [\n  CASH_COMPENSATION_OPTION,\n  VISA_GIFT_CARD_COMPENSATION_OPTION,\n  { label: 'Tango gift card', value: 'Tango gift card' },\n  { label: 'Amazon gift card', value: 'Amazon gift card' },\n  OTHER_COMPENSATION_OPTION,\n];\n\nexport const THEY_PAY_IN_PERSON_DEFAULT_COMPENSATION =\n  CASH_COMPENSATION_OPTION.value;\nexport const THEY_PAY_DEFAULT_COMPENSATION =\n  VISA_GIFT_CARD_COMPENSATION_OPTION.value;\n\nexport const THEY_PAY_COMPENSATION_OPTION_VALUES = [\n  'Visa gift card',\n  'Tango gift card',\n  'Amazon gift card',\n];\n\nexport const THEY_PAY_COMPENSATION_IN_PERSON_OPTION_VALUES = [\n  CASH_COMPENSATION_OPTION.value,\n  ...THEY_PAY_COMPENSATION_OPTION_VALUES,\n];\n\nexport const TOAST_PROJECT_UPDATE_SUCCESS = 'Project updated.';\n","import { useContext, useMemo } from 'react';\nimport AuthUserContext from 'common/authorization/auth_user_context';\n\nimport { MATCH_TYPES } from 'common/authorization/match_types';\n\nconst MATCH_HANDLERS = {\n  [MATCH_TYPES.ANY]: (permissions) => permissions.some.bind(permissions),\n  [MATCH_TYPES.ALL]: (permissions) => permissions.every.bind(permissions),\n};\n\nconst checkAuthorization = (config, authorization) => {\n  const { matchType = MATCH_TYPES.ALL, to, notTo } = config;\n  const hasAllowlist = to && to.length > 0;\n  const hasBlocklist = notTo && notTo.length > 0;\n  if (!hasAllowlist && !hasBlocklist) {\n    return false;\n  }\n\n  const authorize = (permissions, target) => {\n    const permissionsArray = [].concat(permissions);\n    const checkPermissions = MATCH_HANDLERS[matchType](permissionsArray);\n    return checkPermissions(\n      (permission) => (authorization[permission] === true) === target,\n    );\n  };\n\n  const authorizationList = [];\n  if (hasAllowlist) {\n    authorizationList.push(authorize(to, true));\n  }\n  if (hasBlocklist) {\n    authorizationList.push(authorize(notTo, false));\n  }\n\n  return authorizationList.every((auth) => auth === true);\n};\n\nconst useAuthorization = (config) => {\n  const { matchType = MATCH_TYPES.ALL } = config;\n  if (MATCH_HANDLERS[matchType] === undefined) {\n    throw new Error(`matchType must be one of: ${Object.keys(MATCH_HANDLERS)}`);\n  }\n\n  const context = useContext(AuthUserContext);\n  if (!context) {\n    throw new Error('useAuthorization invoked without AuthUserContext');\n  }\n\n  // eslint-disable-next-line react-hooks/exhaustive-deps\n  const authorization = context.authorization || {};\n\n  return useMemo(\n    () => checkAuthorization(config, authorization),\n    [config, authorization],\n  );\n};\n\nexport default useAuthorization;\n","import React, { createContext, useContext, useMemo } from 'react';\nimport propTypes from 'prop-types';\n\nimport {\n  Toast,\n  useToast,\n  MessageTypes,\n} from '@user-interviews/ui-design-system';\nimport { useTracking } from 'react-tracking';\nimport { connectedCalendarDetailsPropType } from 'components/connect_calendar/prop_types';\nimport { useAuthUserContext } from 'hooks/use_auth_user_context';\nimport { type SyncTrackingHook } from 'hooks/use_tracking_with_default_dispatch';\n\ntype ProjectWorkspaceProviderProps = {\n  children: React.ReactNode;\n\n  projectId: string;\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  connectedCalendarDetails?: any;\n  serverProject?: {\n    isDraft: boolean;\n    isPrivate: boolean | null;\n    isUnmoderatedTask: boolean | null;\n  };\n};\n\ntype ProjectWorkspaceContextType = Omit<\n  ProjectWorkspaceProviderProps,\n  'children'\n> & {\n  setToastMessage: (options: {\n    title?: string;\n    type: (typeof MessageTypes)[keyof typeof MessageTypes];\n    message: string;\n  }) => void;\n};\n\nconst ProjectWorkspaceContext = createContext<ProjectWorkspaceContextType>(\n  {} as ProjectWorkspaceContextType,\n);\n\nexport function ProjectWorkspaceProvider({\n  children,\n  connectedCalendarDetails,\n  projectId,\n  serverProject,\n}: ProjectWorkspaceProviderProps) {\n  const authUserContext = useAuthUserContext();\n  const { dismissMessage, messages, setMessage } = useToast();\n\n  const { Track } = useTracking({\n    eventData: {\n      project_id: projectId,\n      ...(authUserContext?.account && {\n        account_id: authUserContext.account.id,\n      }),\n      ...(authUserContext?.user && { user_id: authUserContext.user.id }),\n    },\n  }) as SyncTrackingHook;\n\n  const contextValue = useMemo(\n    () => ({\n      connectedCalendarDetails,\n      projectId,\n      serverProject,\n      setToastMessage: setMessage,\n    }),\n    [connectedCalendarDetails, projectId, serverProject, setMessage],\n  );\n\n  return (\n    <ProjectWorkspaceContext.Provider value={contextValue}>\n      <Toast autoDismiss messages={messages} onToastClosed={dismissMessage} />\n      <Track>{children}</Track>\n    </ProjectWorkspaceContext.Provider>\n  );\n}\n\nProjectWorkspaceProvider.propTypes = {\n  connectedCalendarDetails: connectedCalendarDetailsPropType,\n  projectId: propTypes.string.isRequired,\n  serverProject: propTypes.object,\n};\n\n/**\n * Hook to access the project workspace context.\n *\n * @returns {ProjectWorkspaceContextType} The project workspace context containing:\n * - projectId: The ID of the current project\n * - connectedCalendarDetails: Details about connected calendar integrations\n * - serverProject: Server-side project data including draft/private/unmoderated status\n * - setToastMessage: Function to display toast notifications with title, type and message\n */\nexport function useProjectWorkspaceContext() {\n  return useContext(ProjectWorkspaceContext);\n}\n","/* eslint-disable no-param-reassign */\nimport { createSlice, isAnyOf } from '@reduxjs/toolkit';\n\nimport { populationAttributesApi } from 'api/population_attributes';\n\nimport { accountHubConfigurationsApi } from 'api/account_hub_configurations';\n\nimport {\n  rearrangeColumnOrder,\n  updateHiddenColumns,\n} from 'researcher/participant_search/filtered_view/utils';\n\nconst matchPopulationAttributesFetched = isAnyOf(\n  populationAttributesApi.endpoints.getPopulationAttributes.matchFulfilled,\n);\n\nconst matchAccountHubConfigurationsFetched = isAnyOf(\n  accountHubConfigurationsApi.endpoints.getAccountHubConfigurations\n    .matchFulfilled,\n);\n\nconst initialState = {\n  columnOrder: [],\n  hiddenColumns: [],\n  populationAttributes: [],\n};\n\nexport const columnConfigurationSlice = createSlice({\n  name: 'columnConfiguration',\n  initialState,\n  reducers: {\n    HIDE_ALL_COLUMNS: (state, action) => {\n      const { columns } = action.payload;\n\n      const columnAccessors = columns.map((column) => column.accessor);\n\n      state.hiddenColumns = columnAccessors;\n    },\n    REORDER_COLUMNS: (state, action) => {\n      const { activeAccessor, currentColumnOrder, overAccessor } =\n        action.payload;\n\n      const reorderedColumns = rearrangeColumnOrder({\n        activeAccessor,\n        columnOrder: currentColumnOrder,\n        overAccessor,\n      });\n\n      state.columnOrder = reorderedColumns;\n    },\n    SHOW_ALL_COLUMNS: (state) => {\n      state.hiddenColumns = [];\n    },\n    TOGGLE_HIDDEN_COLUMN: (state, action) => {\n      const { hiddenColumns } = state;\n\n      const { accessor } = action.payload;\n\n      const updatedHiddenColumns = updateHiddenColumns(accessor, hiddenColumns);\n\n      state.hiddenColumns = updatedHiddenColumns;\n    },\n  },\n  extraReducers(builder) {\n    builder.addMatcher(matchPopulationAttributesFetched, (state, action) => {\n      const populationAttributes = action.payload;\n\n      return {\n        ...state,\n        populationAttributes,\n      };\n    });\n    builder.addMatcher(\n      matchAccountHubConfigurationsFetched,\n      (state, action) => {\n        const columnOrder = action.payload?.settings?.columns.order;\n        const hiddenColumns = action.payload?.settings?.columns.hidden || [];\n\n        return {\n          ...state,\n          columnOrder,\n          hiddenColumns,\n        };\n      },\n    );\n  },\n});\n\nexport const {\n  HIDE_ALL_COLUMNS,\n  REORDER_COLUMNS,\n  SHOW_ALL_COLUMNS,\n  TOGGLE_HIDDEN_COLUMN,\n} = columnConfigurationSlice.actions;\n\nexport const columnConfigurationSliceReducer = columnConfigurationSlice.reducer;\n","// eslint-disable-next-line no-restricted-imports\nimport { getCSRFToken } from 'lib/csrf';\n\nimport Jsona from 'jsona';\n\nexport const dataFormatter = new Jsona();\n\nconst ACCEPT_V1_HEADER = 'application/json';\nexport const ACCEPT_V2_HEADER = 'application/vnd.user-interviews.v2';\n\nexport const headersAndCredentials = (accept = ACCEPT_V1_HEADER) => ({\n  headers: {\n    Accept: accept,\n    'X-Requested-With': 'XMLHTTPRequest',\n    'X-CSRF-Token': getCSRFToken() as string | undefined,\n  },\n  credentials: 'same-origin' as RequestCredentials,\n});\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const deserializeJSONApiResponse = (response: any) =>\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  dataFormatter.deserialize(response) as any;\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const deserializeJSONApiResponseWithMeta = (response: any) => {\n  const data = dataFormatter.deserialize(response);\n\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  return { data: data as any, meta: response.meta as any };\n};\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const parseJSONApiResponse = (schema: Zod.Schema) => (response: any) =>\n  schema.parse(deserializeJSONApiResponse(response));\n\nexport const parseJSONApiResponseWithMeta =\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  (schema: Zod.Schema) => (response: any) =>\n    schema.parse(deserializeJSONApiResponseWithMeta(response));\n\nconst sortAlphabeticalByKey = <T>(objectArray: T[], key: keyof T) =>\n  objectArray.sort((a, b) =>\n    (a[key] as string).localeCompare(b[key] as string),\n  );\n\nexport const sortAlphabeticalByName = <T>(\n  objectArray: Array<T & { name: string }>,\n) => sortAlphabeticalByKey(objectArray, 'name');\n\nexport const sortAlphabeticalByTitle = <T>(\n  objectArray: Array<T & { title: string }>,\n) => sortAlphabeticalByKey(objectArray, 'title');\n","import React, {\n  createContext,\n  useMemo,\n  useContext,\n  type ReactNode,\n} from 'react';\nimport { type JSClient } from '@appsignal/types';\nimport { Ownership } from 'lib/generated_constants/ownership';\n\nconst OwnershipContext = createContext<{\n  owner: Ownership | 'frontend';\n  logError: (error: Error) => void;\n} | null>(null);\n\ntype OwnershipProviderProps = {\n  owner: Ownership | 'frontend';\n  appsignal: JSClient | null;\n  children: ReactNode;\n};\n\nfunction fallbackErrorLogger(error: Error) {\n  // eslint-disable-next-line no-console\n  console.error(error);\n}\n\nexport function OwnershipProvider({\n  owner,\n  appsignal,\n  children,\n}: OwnershipProviderProps) {\n  const contextValue = useMemo(\n    () => ({\n      owner,\n      logError: appsignal ? appsignal.sendError : fallbackErrorLogger,\n    }),\n    [appsignal, owner],\n  );\n\n  return (\n    <OwnershipContext.Provider value={contextValue}>\n      {children}\n    </OwnershipContext.Provider>\n  );\n}\n\nexport function useOwnershipContext() {\n  const ownershipContext = useContext(OwnershipContext);\n  const logError = useMemo(\n    () => (ownershipContext ? ownershipContext.logError : () => {}),\n    [ownershipContext],\n  );\n\n  if (!ownershipContext) {\n    return {\n      owner: 'frontend' as const,\n      logError,\n    };\n  }\n\n  return ownershipContext;\n}\n","export const HUB_INVITE_RULES_HEADER = 'Edit Hub invite rules';\n\nexport const PROJECT_INVITE_LIMIT_TITLE = 'Project invite limits';\n\nexport const PROJECT_INVITE_LIMIT_MIN = 1;\nexport const PROJECT_INVITE_LIMIT_MAX = 99;\n\nexport const PROJECT_INVITE_LIMIT_OUT_OF_RANGE_ERROR = `Project invite limit must be between ${PROJECT_INVITE_LIMIT_MIN} and ${PROJECT_INVITE_LIMIT_MAX}.`;\n\nexport const PROJECT_INVITE_LIMIT_ENABLED_ERROR =\n  'Please enter a number to set your project invite limit.';\n\nexport const PROJECT_INVITE_LIMIT_INPUT_LABEL = 'Project invite multiplier';\nexport const PROJECT_INVITE_LIMIT_ENABLED_LABEL =\n  'Project invite multiplier enabled';\n\nexport const PROJECT_INVITE_LIMIT_TEXT =\n  'Set the maximum number of invites a researcher can send per project to prevent over recruiting. ' +\n  \"Invitation limits are set as a multiple of a project's requested participants.\";\nexport const PROJECT_INVITE_LIMIT_LINK_TEXT =\n  'Learn more about invitation limits';\nexport const PROJECT_INVITE_LIMIT_FORM_TEXT =\n  'x number of requested participants on project';\n\nexport const INVITE_FILTER_RULES_TITLE = 'Invite filter rules';\n\nexport const PUBLISH_INVITE_RULES = 'Publish changes';\n\nexport const PUBLISH_INVITE_RULES_SUCCESS_MESSAGE =\n  'Changes to Hub invite rules saved successfully';\nexport const PUBLISH_INVITE_RULES_ERROR_MESSAGE =\n  'There was an error saving Hub invite rules';\n\nexport const UNSUBSCRIBED_FILTER_KEY = 'unsubscribed';\n\nexport const UNSUBSCRIBED_PARTICIPANT_ALERT_MESSAGE =\n  'Unsubscribed participants are automatically excluded from invites.';\n\nexport const MULTI_TEAM_ORG_ALERT_MESSAGE =\n  'Invite rules affect all teams within your organization.';\n","import * as routes from 'lib/routes';\n\nimport { apiSlice } from 'api/base_slice';\n\nimport { SEGMENTS_TAG } from 'api/tag_types';\nimport {\n  deserializeJSONApiResponse,\n  headersAndCredentials,\n  sortAlphabeticalByName,\n} from 'api/utils';\n\nexport const segmentsApi = apiSlice.injectEndpoints({\n  endpoints: (builder) => ({\n    createSegment: builder.mutation({\n      query: ({\n        filterParams,\n        participantPopulationId,\n        teamId,\n        populationPanelId,\n        teamRoleId,\n      }) => {\n        // TODO: RS-15240 Update this to use V2 API\n        const { filterName, filters } = filterParams;\n        const params = {\n          filter_name: filterName,\n          filters: filters,\n          participant_population_id: participantPopulationId,\n          team_role_id: teamRoleId,\n          ...(populationPanelId\n            ? { population_panel_id: populationPanelId }\n            : { team_id: teamId }),\n        };\n\n        return {\n          url: routes.create_participant_population_search_filter_path({\n            participant_population_id: participantPopulationId,\n          }),\n          method: 'POST',\n          body: params,\n          ...headersAndCredentials(),\n        };\n      },\n      invalidatesTags: [SEGMENTS_TAG],\n    }),\n    deleteSegment: builder.mutation({\n      query: ({ populationId, segmentId }) => ({\n        url: routes.api_participant_population_segment_path(segmentId, {\n          participant_population_id: populationId,\n        }),\n        method: 'DELETE',\n        ...headersAndCredentials(),\n      }),\n      invalidatesTags: (result, error, { segmentId }) => [\n        { type: SEGMENTS_TAG, id: segmentId },\n      ],\n    }),\n    duplicateSegment: builder.mutation({\n      query: ({ populationId, segmentId, teamRoleId, attributes }) => ({\n        url: routes.api_participant_population_segment_duplicate_path(\n          segmentId,\n          {\n            participant_population_id: populationId,\n            team_role_id: teamRoleId,\n          },\n        ),\n        method: 'POST',\n        body: { data: { attributes } },\n        ...headersAndCredentials(),\n      }),\n      invalidatesTags: (result, error, { populationId }) => [\n        { type: SEGMENTS_TAG, id: populationId },\n      ],\n      transformResponse: deserializeJSONApiResponse,\n    }),\n    getSegments: builder.query({\n      query: ({ populationId, teamId, populationPanelId }) =>\n        routes.api_participant_population_segments_path({\n          participant_population_id: populationId,\n          ...(populationPanelId\n            ? { population_panel_id: populationPanelId }\n            : { team_id: teamId }),\n        }),\n      providesTags: (result, error, { populationId }) => [\n        { type: SEGMENTS_TAG, id: populationId },\n        ...(result?.data\n          ? result.data.map(({ id }) => ({ type: SEGMENTS_TAG, id }))\n          : []),\n      ],\n      transformResponse: (response) => {\n        const data = sortAlphabeticalByName(\n          deserializeJSONApiResponse(response),\n        );\n        const { meta } = response;\n        return { data, meta };\n      },\n    }),\n\n    updateSegment: builder.mutation({\n      query: ({ populationId, segmentId, attributes }) => ({\n        url: routes.api_participant_population_segment_path(segmentId, {\n          participant_population_id: populationId,\n        }),\n        method: 'PATCH',\n        body: { data: { attributes } },\n        ...headersAndCredentials(),\n      }),\n      invalidatesTags: (result, error, { segmentId }) => [\n        { type: SEGMENTS_TAG, id: segmentId },\n      ],\n      transformResponse: deserializeJSONApiResponse,\n    }),\n  }),\n  overrideExisting: 'throw',\n});\n\nexport const {\n  useCreateSegmentMutation,\n  useDeleteSegmentMutation,\n  useDuplicateSegmentMutation,\n  useGetSegmentsQuery,\n  useUpdateSegmentMutation,\n} = segmentsApi;\n","import { apiSlice } from 'api/base_slice';\nimport * as routes from 'lib/routes';\nimport {\n  deserializeJSONApiResponse,\n  headersAndCredentials,\n  sortAlphabeticalByTitle,\n} from 'api/utils';\nimport { OPT_IN_FORMS_TAG } from 'api/tag_types';\n\nexport const participantPopulationOptInFormsApi = apiSlice.injectEndpoints({\n  endpoints: (builder) => ({\n    getParticipantPopulationOptInForms: builder.query({\n      query: (participantPopulationId) =>\n        routes.api_participant_population_opt_in_forms_path({\n          participant_population_id: participantPopulationId,\n        }),\n      transformResponse: (response) =>\n        sortAlphabeticalByTitle(deserializeJSONApiResponse(response)),\n    }),\n    createOptInForm: builder.mutation({\n      query: ({ participantPopulationId, attributes }) => ({\n        url: routes.api_participant_population_opt_in_forms_path(\n          participantPopulationId,\n        ),\n        method: 'POST',\n        body: {\n          data: {\n            attributes,\n          },\n        },\n        ...headersAndCredentials(),\n      }),\n      transformResponse: deserializeJSONApiResponse,\n      invalidatesTags: [OPT_IN_FORMS_TAG],\n    }),\n  }),\n  overrideExisting: 'throw',\n});\n\nexport const {\n  useGetParticipantPopulationOptInFormsQuery,\n  useCreateOptInFormMutation,\n} = participantPopulationOptInFormsApi;\n","import React, {\n  useMemo,\n  useContext,\n  createContext,\n  type ReactNode,\n} from 'react';\nimport { z } from 'zod';\n\nimport { customContextSchema } from 'lib/react_on_rails/custom_context_schema';\n\ntype ReactOnRailsContext = z.infer<typeof customContextSchema>;\n\nexport type RailsContextValue = {\n  env: ReactOnRailsContext['env'];\n  request: {\n    csrfParam: ReactOnRailsContext['request']['csrfParam'];\n    csrfToken: ReactOnRailsContext['request']['csrfToken'];\n    location: ReactOnRailsContext['location'];\n  };\n  uiState: ReactOnRailsContext['uiState'];\n  user: ReactOnRailsContext['user'];\n};\n\nexport const RailsContext = createContext<RailsContextValue | null>(null);\n\nexport function useRailsContext() {\n  const ctx = useContext(RailsContext);\n\n  if (!ctx) return null;\n\n  return ctx;\n}\n\ntype RailsContextProviderProps = {\n  railsContext: unknown;\n  children: ReactNode;\n};\n\nexport function RailsContextProvider({\n  railsContext,\n  children,\n}: RailsContextProviderProps) {\n  const { env, location, request, uiState, user } =\n    customContextSchema.parse(railsContext);\n\n  const contextValue = useMemo(\n    () => ({\n      env,\n      request: {\n        ...request,\n        location,\n      },\n      uiState,\n      user,\n    }),\n    [env, location, request, uiState, user],\n  );\n\n  return (\n    <RailsContext.Provider value={contextValue}>\n      {children}\n    </RailsContext.Provider>\n  );\n}\n","import { createSelector, createSlice, isAnyOf } from '@reduxjs/toolkit';\n\nimport { projectsApi } from 'api/projects';\n\nimport { buildProjectState } from 'researcher/project_workspace/hooks/use_get_project_state';\n\nimport {\n  ACTIVITY_STEP,\n  DETAILS_STEP,\n  EXPERIENCE_STEP,\n  RECRUITMENT_STEP,\n} from './constants';\nimport {\n  buildActivityStepFields,\n  buildDetailsStepFields,\n  buildExperienceStepFields,\n  buildRecruitmentStepFields,\n} from './store/utils';\n\nexport const STEPS_REQUIRED_FIELDS_SCHEMA = {\n  [ACTIVITY_STEP]: buildActivityStepFields,\n  [DETAILS_STEP]: buildDetailsStepFields,\n  [EXPERIENCE_STEP]: buildExperienceStepFields,\n  [RECRUITMENT_STEP]: buildRecruitmentStepFields,\n};\n\nconst matchProjectFetched = isAnyOf(\n  projectsApi.endpoints.getProject.matchFulfilled,\n);\n\nconst calculateStepCompletionPercentage = ({\n  invalidCount,\n  totalRequiredCount,\n}) => {\n  if (invalidCount === 0 && totalRequiredCount === 0) {\n    return 100;\n  }\n\n  return Math.round(\n    ((totalRequiredCount - invalidCount) / totalRequiredCount) * 100,\n  );\n};\n\nconst initializeForm = (stepId) => ({\n  stepId,\n});\n\nconst initializePrimaryForm = (stepId) => ({\n  ...initializeForm(stepId),\n  syncedValues: {},\n  isValid: false,\n});\n\nconst initializeStep = (stepId) => ({\n  id: stepId,\n  forms: {\n    primary: initializePrimaryForm(stepId),\n  },\n  metrics: {\n    invalidCount: 0,\n    totalRequiredCount: 0,\n  },\n});\n\nconst initialState = {\n  researchDesign: {\n    currentStepId: null,\n    steps: {\n      [ACTIVITY_STEP]: initializeStep(ACTIVITY_STEP),\n      [DETAILS_STEP]: initializeStep(DETAILS_STEP),\n      [EXPERIENCE_STEP]: initializeStep(EXPERIENCE_STEP),\n      [RECRUITMENT_STEP]: initializeStep(RECRUITMENT_STEP),\n    },\n  },\n};\n\nexport const projectWorkspaceSlice = createSlice({\n  name: 'projectWorkspace',\n  initialState,\n  /* eslint-disable no-param-reassign */\n  reducers: {\n    formPrimaryRegister(state, { payload }) {\n      const { stepId, defaultValues, isValid } = payload;\n\n      state.researchDesign.currentStepId = stepId;\n      state.researchDesign.steps[stepId].forms.primary.syncedValues =\n        defaultValues;\n      state.researchDesign.steps[stepId].forms.primary.isValid = isValid;\n    },\n    formPrimarySyncState(state, { payload }) {\n      const { stepId, values, isValid } = payload;\n\n      state.researchDesign.steps[stepId].forms.primary.syncedValues = {\n        ...state.researchDesign.steps[stepId].forms.primary.syncedValues,\n        ...values,\n      };\n      state.researchDesign.steps[stepId].forms.primary.isValid = isValid;\n    },\n  },\n  extraReducers(builder) {\n    /* the following logic handles updating step progressions after\n       a user hits the save button. This general procedure is followed:\n\n       1. watch for any RTK-Q project query to resolve\n       2. grab the invalidLaunchProps from the meta key on the json:api payload\n       3. loop over each step form (primary and drawers) to build our metrics state by\n          looking for the intersection between invalid launch props (from the server)\n          and required fields for that particular form.\n    */\n    builder.addMatcher(matchProjectFetched, (state, { payload }) => {\n      const { invalidLaunchProps, isDraft } = buildProjectState(payload);\n      const { steps } = state.researchDesign;\n\n      if (!isDraft || !invalidLaunchProps) return;\n\n      Object.entries(steps).forEach(([stepId, step]) => {\n        const requiredFieldsFn = STEPS_REQUIRED_FIELDS_SCHEMA[stepId];\n        const requiredFields = requiredFieldsFn(payload);\n\n        if (requiredFields) {\n          step.metrics.totalRequiredCount = requiredFields.length;\n          step.metrics.invalidCount = requiredFields.filter((field) =>\n            invalidLaunchProps.includes(field),\n          ).length;\n        }\n      });\n    });\n  },\n  /* eslint-enable no-param-reassign */\n});\n\nexport const { formPrimaryRegister, formPrimarySyncState } =\n  projectWorkspaceSlice.actions;\n\nconst rootSelector = (state) => state.projectWorkspace;\n\nconst stepsSelector = createSelector(\n  rootSelector,\n  (state) => state.researchDesign.steps,\n);\n\nexport const currentStepSelector = createSelector(rootSelector, (state) => {\n  const { currentStepId, steps } = state.researchDesign;\n  return steps[currentStepId];\n});\n\nexport const currentStepFormSelector = createSelector(\n  currentStepSelector,\n  (currentStep) => currentStep?.forms.primary,\n);\n\nexport const stepMetricsSelector = createSelector(\n  stepsSelector,\n  (_, stepId) => stepId,\n  (steps, stepId) => {\n    const { invalidCount, totalRequiredCount } = steps[stepId].metrics;\n\n    return {\n      completionPercentage: calculateStepCompletionPercentage({\n        invalidCount,\n        totalRequiredCount,\n      }),\n    };\n  },\n);\n","import { buildProjectState } from 'researcher/project_workspace/hooks/use_get_project_state';\n\n// the following `buildXStepFields` functions help derive the completion percentage\n// of a particular step. I have mapped all relevant model validation error keys\n// e.g. `:foo` from `errors.add(:foo, 'is required')` to the step that manages said field\n\nexport function buildActivityStepFields(projectPayload) {\n  const {\n    isInPersonInterview,\n    isOnlineInterview,\n    isUnmoderatedTask,\n    studyTypeId,\n  } = buildProjectState(projectPayload);\n  const fields = [\n    'estimatedTime', // Session length (Mod) || Task length (Unmod)\n    'interviewTypeId',\n    'studyType',\n  ];\n\n  if (isOnlineInterview) {\n    // Prep instructions drawer\n    fields.push('deviceRequirements');\n  }\n\n  if (studyTypeId) {\n    if (isUnmoderatedTask) {\n      // Deadline\n      fields.push('availabilityRanges');\n      // Task drawer\n      fields.push('task');\n      fields.push('timezone');\n    } else {\n      // Scheduling drawer (Attendance and location)\n      fields.push('defaultModeratorId');\n      // Scheduling drawer (Attendance and location)\n      fields.push('defaultSessionLocation');\n      // Scheduling drawer (scheduling rules)\n      fields.push('timezone');\n\n      if (isInPersonInterview) {\n        // Scheduling drawer (Attendance and location)\n        fields.push('location');\n        // Scheduling drawer (Attendance and location)\n        fields.push('locationExtraInfo');\n        // Scheduling drawer (Attendance and location)\n        fields.push('locationDetail');\n        // Scheduling drawer (Attendance and location)\n        fields.push('parkingDetails');\n      }\n    }\n  }\n\n  return fields;\n}\n\nexport function buildDetailsStepFields(projectPayload) {\n  const { compensationMethodId } = projectPayload;\n  const fields = ['compensationMethodId', 'numParticipants'];\n\n  // account for the fact that compensationInfo errors will only be present\n  // once all compensationMethodId errors are satisfied on the backend.\n  // HasCompensation#compensation_method_valid\n  if (compensationMethodId) {\n    fields.push('compensationInfo');\n  }\n\n  return fields;\n}\n\nexport function buildExperienceStepFields(_projectPayload) {\n  return ['publicDescription', 'publicTitle'];\n}\n\nexport function buildRecruitmentStepFields(projectPayload) {\n  const { isOnlineInterview, isPhoneInterview, isHubProject } =\n    buildProjectState(projectPayload);\n\n  const fields = ['sourceType'];\n\n  if (isHubProject) return fields;\n\n  // survey drawer\n  fields.push('surveyDraft');\n\n  if (isOnlineInterview || isPhoneInterview) {\n    // recruitment drawer\n    fields.push('location');\n  }\n\n  return fields;\n}\n","import propTypes from 'prop-types';\n\nexport const connectedCalendarDetailsPropType = propTypes.shape({\n  email: propTypes.string,\n  preferences: propTypes.shape({ allowTentativeEvents: propTypes.bool }),\n  provider: propTypes.string.isRequired,\n  tokenInvalid: propTypes.bool.isRequired,\n  tokenUpgradeRequested: propTypes.bool.isRequired,\n});\n"," import {\n  createEntityAdapter,\n  createSelector,\n  createSlice,\n  isAnyOf,\n} from '@reduxjs/toolkit';\n\nimport { participantPopulationOptInFormsApi } from 'api/participant_population_opt_in_forms';\n\nimport { populationInviteFiltersApi } from 'api/population_invite_filters';\n\nimport { populationLabelsApi } from 'api/population_labels';\n\nimport { populationAttributesApi } from 'api/population_attributes';\n\nimport { segmentsApi } from 'api/segments';\n\nimport { teamProjectsApi } from 'api/team_projects';\n\nimport {\n  PROJECT_INVITE_LIMIT_MAX,\n  PROJECT_INVITE_LIMIT_MIN,\n} from 'researcher/participant_search/invite_rules_drawer/constants';\n\nimport {\n  buildFilterList,\n  getDefaultParams,\n  getParamKey,\n} from 'researcher/participant_search/segment_builder/lib/filter_list';\n\nimport {\n  FILTER_RULE_APPLIED_SECTIONS,\n  FILTER_RULE_PENDING_SECTIONS,\n  appliedSectionLookup,\n  buildFromServerFilterRules,\n  hasApplicableFilterRule,\n} from 'researcher/participant_search/segment_builder/lib/filter_utils';\n\nimport { sortAlphabeticalByName } from 'api/utils';\n\nconst adapter = createEntityAdapter();\n\nconst matchPopulationInviteFilterFetched = isAnyOf(\n  populationInviteFiltersApi.endpoints.getInviteFilter.matchFulfilled,\n);\n\nconst matchLabelsFetched = isAnyOf(\n  populationLabelsApi.endpoints.getPopulationLabels.matchFulfilled,\n);\n\nconst matchOptInFormsFetched = isAnyOf(\n  participantPopulationOptInFormsApi.endpoints\n    .getParticipantPopulationOptInForms.matchFulfilled,\n);\n\nconst matchPopulationAttributesFetched = isAnyOf(\n  populationAttributesApi.endpoints.getPopulationAttributes.matchFulfilled,\n);\n\nconst matchSegmentsFetched = isAnyOf(\n  segmentsApi.endpoints.getSegments.matchFulfilled,\n);\n\nconst matchTeamProjectsFetched = isAnyOf(\n  teamProjectsApi.endpoints.getTeamProjects.matchFulfilled,\n);\n\nconst appliedInitialState = {\n  filterFlags: {},\n  filterKeys: [],\n  filterRules: {},\n};\n\nconst pendingInitialState = {\n  ...appliedInitialState,\n  removedFilterKeys: [],\n};\n\nexport const initialState = {\n  filterRules: {\n    filters: {},\n    applied: {\n      [FILTER_RULE_APPLIED_SECTIONS.edit]: appliedInitialState,\n      [FILTER_RULE_APPLIED_SECTIONS.inviteFilter]: appliedInitialState,\n      [FILTER_RULE_APPLIED_SECTIONS.segment]: appliedInitialState,\n    },\n    pending: {\n      [FILTER_RULE_PENDING_SECTIONS.builder]: pendingInitialState,\n      [FILTER_RULE_PENDING_SECTIONS.create]: pendingInitialState,\n      [FILTER_RULE_PENDING_SECTIONS.edit]: pendingInitialState,\n      [FILTER_RULE_PENDING_SECTIONS.inviteFilter]: pendingInitialState,\n    },\n  },\n  inviteFilter: {\n    applied: {},\n    pending: {},\n  },\n  labels: adapter.getInitialState(),\n  optInForms: adapter.getInitialState(),\n  populationAttributes: adapter.getInitialState(),\n  projects: adapter.getInitialState(),\n  segments: {\n    activeId: null,\n    meta: {},\n    ...adapter.getInitialState(),\n  },\n};\n\nexport const segmentsSlice = createSlice({\n  name: 'segments',\n  initialState,\n  reducers: {\n    ADD_FILTER_RULE_PARAM: (state, action) => {\n      const { filterKey, filterRuleSection } = action.payload;\n\n      const filter = state.filterRules.filters[filterKey];\n      const filterRule =\n        state.filterRules.pending[filterRuleSection].filterRules[filterKey];\n\n      const newParams = [...filterRule.params];\n\n      newParams.push(getDefaultParams(filter.isNotSetOperand));\n\n      const newFilter = {\n        ...filterRule,\n        params: newParams,\n      };\n\n      state.filterRules.pending[filterRuleSection].filterRules[filterKey] =\n        newFilter;\n    },\n    CLEAR_FILTERS: (state) => {\n      state.segments.activeId = initialState.segments.activeId;\n      state.filterRules.applied = initialState.filterRules.applied;\n      state.filterRules.pending = initialState.filterRules.pending;\n    },\n    CREATE_FILTER_RULE: (state, action) => {\n      const { filterKey, filterRuleSection } = action.payload;\n\n      const filter = state.filterRules.filters[filterKey];\n\n      state.filterRules.pending[filterRuleSection].filterRules[filterKey] = {\n        ...filter.defaultFilterRuleShape,\n      };\n    },\n    REMOVE_FILTER_RULE: (state, action) => {\n      const { filterKey, filterRuleSection } = action.payload;\n\n      const { removedFilterKeys } =\n        state.filterRules.pending[filterRuleSection];\n\n      if (!removedFilterKeys.includes(filterKey))\n        removedFilterKeys.push(filterKey);\n\n      state.filterRules.pending[filterRuleSection].removedFilterKeys =\n        removedFilterKeys;\n\n      delete state.filterRules.pending[filterRuleSection].filterFlags[\n        filterKey\n      ];\n      delete state.filterRules.pending[filterRuleSection].filterRules[\n        filterKey\n      ];\n\n      state.filterRules.pending[filterRuleSection].filterKeys =\n        state.filterRules.pending[filterRuleSection].filterKeys.filter(\n          (key) => key !== filterKey,\n        );\n    },\n    REMOVE_FILTER_RULE_PARAM: (state, action) => {\n      const { filterKey, filterParamKey, filterRuleSection } = action.payload;\n\n      const filter = state.filterRules.filters[filterKey];\n      const filterRule =\n        state.filterRules.pending[filterRuleSection].filterRules[filterKey];\n\n      let newParams = [...filterRule.params];\n\n      if (newParams.length === 1) {\n        newParams = [getDefaultParams(filter.isNotSetOperand)];\n      } else {\n        const paramIndex = newParams.findIndex(\n          (param) => param.key === filterParamKey,\n        );\n        newParams.splice(paramIndex, 1);\n      }\n\n      const newFilterRule = {\n        ...filterRule,\n        params: newParams,\n      };\n\n      state.filterRules.pending[filterRuleSection].filterRules[filterKey] =\n        newFilterRule;\n    },\n    RESET_PENDING_FILTERS: (state, action) => {\n      const { filterRuleSection } = action.payload;\n\n      state.filterRules.pending[filterRuleSection] = pendingInitialState;\n    },\n    SELECT_FILTER_RULE: (state, action) => {\n      const { activeFilterKey, filterKey, filterRuleSection } = action.payload;\n\n      if (activeFilterKey) {\n        const activeFilterIndex =\n          state.filterRules.pending[filterRuleSection].filterKeys.indexOf(\n            activeFilterKey,\n          );\n\n        if (activeFilterIndex !== -1) {\n          state.filterRules.pending[filterRuleSection].filterKeys[\n            activeFilterIndex\n          ] = filterKey;\n        }\n\n        delete state.filterRules.pending[filterRuleSection].filterRules[\n          activeFilterKey\n        ];\n      } else {\n        state.filterRules.pending[filterRuleSection].filterKeys = [\n          ...state.filterRules.pending[filterRuleSection].filterKeys,\n          filterKey,\n        ];\n      }\n    },\n    SELECT_FILTER_RULE_OPERAND: (state, action) => {\n      const { filterKey, filterRuleSection, operand } = action.payload;\n\n      const filterRule =\n        state.filterRules.pending[filterRuleSection].filterRules[filterKey];\n\n      const newFilterRule = {\n        ...filterRule,\n        operand: operand.key,\n        params: [getDefaultParams(filterRule.isNotSetOperand)],\n      };\n\n      state.filterRules.pending[filterRuleSection].filterRules[filterKey] =\n        newFilterRule;\n    },\n    SET_ACTIVE_SEGMENT_ID: (state, action) => {\n      const { segmentId } = action.payload;\n\n      state.segments.activeId = segmentId;\n    },\n    SET_APPLIED_FILTER_RULES: (state, action) => {\n      const { filterRuleSection, filterRules } = action.payload;\n\n      const applied = buildFromServerFilterRules({\n        filters: state.filterRules.filters,\n        filterRules,\n      });\n\n      const section = appliedSectionLookup[filterRuleSection];\n\n      state.filterRules.applied[section] = {\n        ...appliedInitialState,\n        filterFlags: applied.filterFlags,\n        filterKeys: applied.filterKeys,\n        filterRules: applied.filterRules,\n      };\n    },\n    SET_FILTER_RULE: (state, action) => {\n      const { filterKey, pendingFilterRule, filterRuleSection } =\n        action.payload;\n\n      state.filterRules.pending[filterRuleSection].filterRules[filterKey] =\n        pendingFilterRule;\n    },\n    SET_INVITE_FILTER_ATTRIBUTES: (state, action) => {\n      const { attributes } = action.payload;\n\n      state.inviteFilter.pending = {\n        ...state.inviteFilter.pending,\n        ...attributes,\n      };\n    },\n    SET_PENDING_FILTER_RULES: (state, action) => {\n      const { filterRules, filterRuleSection } = action.payload;\n\n      const pending = buildFromServerFilterRules({\n        filters: state.filterRules.filters,\n        filterRules,\n      });\n\n      state.filterRules.pending[filterRuleSection] = {\n        ...state.filterRules.pending[filterRuleSection],\n        filterFlags: {\n          ...state.filterRules.pending[filterRuleSection].filterFlags,\n          ...pending.filterFlags,\n        },\n        filterKeys: {\n          ...state.filterRules.pending[filterRuleSection].filterKeys,\n          ...pending.filterKeys,\n        },\n        filterRules: {\n          ...state.filterRules.pending[filterRuleSection].filterRules,\n          ...pending.filterRules,\n        },\n      };\n    },\n    SET_PENDING_FROM_APPLIED: (state, action) => {\n      const { filterRuleSection } = action.payload;\n\n      const section = appliedSectionLookup[filterRuleSection];\n\n      state.filterRules.pending[filterRuleSection] = {\n        ...pendingInitialState,\n        ...state.filterRules.applied[section],\n      };\n    },\n    SET_PENDING_FROM_SEGMENT: (state, action) => {\n      const { segmentId, filterRuleSection } = action.payload;\n\n      const { filterRules } = state.segments.entities[segmentId];\n\n      const pending = buildFromServerFilterRules({\n        filters: state.filterRules.filters,\n        filterRules,\n      });\n\n      const section = appliedSectionLookup[filterRuleSection];\n\n      state.filterRules.applied[section] = {\n        ...pendingInitialState,\n        filterFlags: pending.filterFlags,\n        filterKeys: pending.filterKeys,\n        filterRules: pending.filterRules,\n      };\n\n      state.filterRules.pending[filterRuleSection] = {\n        ...pendingInitialState,\n        filterFlags: pending.filterFlags,\n        filterKeys: pending.filterKeys,\n        filterRules: pending.filterRules,\n      };\n    },\n    TOGGLE_IS_NOT_SET_CHECKED: (state, action) => {\n      const { filterKey, filterRuleSection } = action.payload;\n\n      const isNotSetChecked =\n        state.filterRules.pending[filterRuleSection].filterFlags[filterKey]\n          ?.isNotSetChecked;\n\n      state.filterRules.pending[filterRuleSection].filterFlags[filterKey] = {\n        isNotSetChecked: !isNotSetChecked,\n        isSetChecked: false,\n      };\n    },\n    TOGGLE_IS_SET_CHECKED: (state, action) => {\n      const { filterKey, filterRuleSection } = action.payload;\n\n      const isSetChecked =\n        state.filterRules.pending[filterRuleSection].filterFlags[filterKey]\n          ?.isSetChecked;\n\n      if (!isSetChecked) {\n        state.filterRules.pending[filterRuleSection].filterRules[\n          filterKey\n        ].params = [{ key: getParamKey() }];\n      }\n\n      state.filterRules.pending[filterRuleSection].filterFlags[filterKey] = {\n        isNotSetChecked: false,\n        isSetChecked: !isSetChecked,\n      };\n    },\n    UPDATE_FILTER_RULE_PARAM: (state, action) => {\n      const {\n        filterKey,\n        filterRuleKey,\n        paramKey,\n        paramValue,\n        filterRuleSection,\n      } = action.payload;\n\n      const filterRule =\n        state.filterRules.pending[filterRuleSection].filterRules[filterKey];\n\n      const paramIndex = filterRule.params.findIndex(\n        (param) => param.key === filterRuleKey,\n      );\n\n      const newParam = {\n        ...filterRule.params[paramIndex],\n        [paramKey]: paramValue,\n      };\n\n      const { params } = filterRule;\n\n      params.splice(paramIndex, 1, newParam);\n\n      const newFilterRule = {\n        ...filterRule,\n        params,\n      };\n\n      state.filterRules.pending[filterRuleSection].filterRules[filterKey] =\n        newFilterRule;\n    },\n  },\n  extraReducers(builder) {\n    builder.addMatcher(matchPopulationInviteFilterFetched, (state, action) => {\n      state.inviteFilter.applied = action.payload;\n      state.inviteFilter.pending = action.payload;\n    });\n    builder.addMatcher(matchLabelsFetched, (state, action) => {\n      adapter.setAll(state.labels, action.payload);\n    });\n    builder.addMatcher(matchOptInFormsFetched, (state, action) => {\n      adapter.setAll(state.optInForms, action.payload);\n    });\n    builder.addMatcher(matchPopulationAttributesFetched, (state, action) => {\n      const populationAttributes = action.payload;\n\n      state.filterRules.filters = buildFilterList({ populationAttributes });\n\n      adapter.setAll(state.populationAttributes, populationAttributes);\n    });\n    builder.addMatcher(matchSegmentsFetched, (state, action) => {\n      state.segments.meta = action.payload.meta;\n      adapter.setAll(state.segments, action.payload.data);\n    });\n    builder.addMatcher(matchTeamProjectsFetched, (state, action) => {\n      adapter.setAll(state.projects, action.payload);\n    });\n  },\n});\n\nexport const { selectAll: selectAllLabels, selectEntities: selectLabels } =\n  adapter.getSelectors((state) => state.segments.labels);\n\nexport const { selectEntities: selectOptInForms } = adapter.getSelectors(\n  (state) => state.segments.optInForms,\n);\n\nexport const {\n  selectAll: selectAllPopulationAttributes,\n  selectIds: selectPopulationAttributeIds,\n} = adapter.getSelectors((state) => state.segments.populationAttributes);\n\nexport const {\n  selectEntities: selectSegmentsById,\n  selectAll: selectAllSegments,\n  selectEntities: selectSegments,\n} = adapter.getSelectors((state) => state.segments.segments);\n\nexport const selectSegmentsByAccessLevel = createSelector(\n  [selectSegments],\n  (segments) => {\n    let privateSegments = [];\n    let sharedSegments = [];\n\n    Object.values(segments).forEach((segment) => {\n      if (\n        segment.teamPermissionRoleId ||\n        segment.organizationPermissionRoleId\n      ) {\n        sharedSegments.push(segment);\n      } else {\n        privateSegments.push(segment);\n      }\n    });\n\n    privateSegments = sortAlphabeticalByName(privateSegments);\n    sharedSegments = sortAlphabeticalByName(sharedSegments);\n\n    return { privateSegments, sharedSegments };\n  },\n);\nexport const selectActiveSegmentId = (state) =>\n  state.segments.segments.activeId;\n\nconst selectPendingSections = (state) => state.segments.filterRules.pending;\n\nexport const selectPendingSection = createSelector(\n  [selectPendingSections, (_, sectionKey) => sectionKey],\n  (pendingSections, sectionKey) => pendingSections[sectionKey],\n);\n\nconst selectAppliedEditSection = (state) =>\n  state.segments.filterRules.applied[FILTER_RULE_APPLIED_SECTIONS.edit];\nconst selectAppliedInviteFilterSection = (state) =>\n  state.segments.filterRules.applied[FILTER_RULE_APPLIED_SECTIONS.inviteFilter];\nexport const selectAppliedSegmentSection = (state) =>\n  state.segments.filterRules.applied[FILTER_RULE_APPLIED_SECTIONS.segment];\nexport const selectAppliedSegmentFilterRules = (state) =>\n  state.segments.filterRules.applied[FILTER_RULE_APPLIED_SECTIONS.segment]\n    .filterRules;\n\nexport const selectPersistedFilterRule = createSelector(\n  [\n    selectAppliedEditSection,\n    selectAppliedInviteFilterSection,\n    selectAppliedSegmentSection,\n    (_, keys) => keys,\n  ],\n  (\n    editAppliedFilterRulesSection,\n    inviteFilterAppliedFilterRulesSection,\n    segmentFilterAppliedRulesSection,\n    keys,\n  ) => {\n    const { filterRuleSection, filterKey } = keys;\n\n    const appliedSectionKey = appliedSectionLookup[filterRuleSection];\n\n    switch (appliedSectionKey) {\n      case FILTER_RULE_APPLIED_SECTIONS.edit:\n        return editAppliedFilterRulesSection.filterRules[filterKey];\n      case FILTER_RULE_APPLIED_SECTIONS.inviteFilter:\n        return inviteFilterAppliedFilterRulesSection.filterRules[filterKey];\n      case FILTER_RULE_APPLIED_SECTIONS.segment:\n        return segmentFilterAppliedRulesSection.filterRules[filterKey];\n      default:\n        return undefined;\n    }\n  },\n);\n\nexport const selectSegmentRoles = (state) =>\n  state.segments.segments.meta?.roles;\n\nexport const selectFilters = (state) => state.segments.filterRules.filters;\n\nexport const selectInviteFilter = (state) =>\n  state.segments.inviteFilter.pending;\nexport const selectAppliedInviteFilter = (state) =>\n  state.segments.inviteFilter.applied;\n\nconst selectInviteFilterMultiplier = (state) =>\n  state.segments.inviteFilter.pending.projectInviteMultiplier;\nconst selectInviteFilterMultiplierEnabled = (state) =>\n  state.segments.inviteFilter.pending.projectInviteMultiplierEnabled;\n\nexport const selectAppliedInviteFilterRules = (state) =>\n  state.segments.filterRules.applied[FILTER_RULE_APPLIED_SECTIONS.inviteFilter];\nexport const selectInviteFilterRules = (state) =>\n  state.segments.filterRules.pending[FILTER_RULE_PENDING_SECTIONS.inviteFilter];\n\nexport const selectProjectInviteMultiplierOutOfRange = createSelector(\n  [selectInviteFilterMultiplier, selectInviteFilterMultiplierEnabled],\n  (projectInviteMultiplier, projectInviteMultiplierEnabled) =>\n    projectInviteMultiplierEnabled &&\n    Number.isInteger(projectInviteMultiplier) &&\n    (projectInviteMultiplier < PROJECT_INVITE_LIMIT_MIN ||\n      projectInviteMultiplier > PROJECT_INVITE_LIMIT_MAX),\n);\n\nconst selectPendingCreateFilterFlags = (state) =>\n  state.segments.filterRules.pending[FILTER_RULE_PENDING_SECTIONS.create]\n    .filterFlags;\n\nconst selectPendingCreateFilterRules = (state) =>\n  state.segments.filterRules.pending[FILTER_RULE_PENDING_SECTIONS.create]\n    .filterRules;\n\nconst selectPendingEditFilterFlags = (state) =>\n  state.segments.filterRules.pending[FILTER_RULE_PENDING_SECTIONS.edit]\n    .filterFlags;\n\nconst selectPendingEditFilterRules = (state) =>\n  state.segments.filterRules.pending[FILTER_RULE_PENDING_SECTIONS.edit]\n    .filterRules;\n\nexport const selectFilterOptions = createSelector([selectFilters], (filters) =>\n  Object.values(filters).map((filter) => ({\n    custom: !!filter.attribute,\n    label: filter.name,\n    value: filter.id,\n  })),\n);\n\nexport const selectAllFiltersCount = createSelector(\n  [selectFilters],\n  (filters) => Object.keys(filters).length,\n);\n\nexport const selectActiveSegment = createSelector(\n  [selectActiveSegmentId, selectSegments],\n  (activeSegmentId, segmentsByIds) => segmentsByIds[activeSegmentId],\n);\n\nexport const selectAppliedFilterCount = createSelector(\n  [selectAppliedSegmentFilterRules],\n  (filterRules) => Object.keys(filterRules).length,\n);\n\nexport const selectHasApplicableCreateFilterRule = createSelector(\n  [selectPendingCreateFilterFlags, selectPendingCreateFilterRules],\n  (filterFlags, filterRules) =>\n    hasApplicableFilterRule({ filterFlags, filterRules }),\n);\n\nexport const selectHasApplicableEditFilterRule = createSelector(\n  [selectPendingEditFilterFlags, selectPendingEditFilterRules],\n  (filterFlags, filterRules) =>\n    hasApplicableFilterRule({ filterFlags, filterRules }),\n);\n\nexport const selectSegmentName = createSelector(\n  [selectSegments, (_, segmentId) => segmentId],\n  (segmentsById, segmentId) => segmentsById[segmentId]?.name,\n);\n\nexport const {\n  ADD_FILTER_RULE_PARAM,\n  CLEAR_FILTERS,\n  CREATE_FILTER_RULE,\n  REMOVE_FILTER_RULE,\n  REMOVE_FILTER_RULE_PARAM,\n  RESET_PENDING_FILTERS,\n  SELECT_FILTER_RULE,\n  SELECT_FILTER_RULE_OPERAND,\n  SET_ACTIVE_SEGMENT_ID,\n  SET_APPLIED_FILTER_RULES,\n  SET_FILTER_RULE,\n  SET_INVITE_FILTER_ATTRIBUTES,\n  SET_PENDING_FILTER_RULES,\n  SET_PENDING_FROM_APPLIED,\n  SET_PENDING_FROM_SEGMENT,\n  TOGGLE_IS_NOT_SET_CHECKED,\n  TOGGLE_IS_SET_CHECKED,\n  UPDATE_FILTER_RULE_PARAM,\n} = segmentsSlice.actions;\n\nexport const segmentsSliceReducer = segmentsSlice.reducer;\n","import equal from 'fast-deep-equal/es6';\n\nimport {\n  INCENTIVE_IS_NOT_SET_OPERAND,\n  INCENTIVE_IS_SET_OPERAND,\n  PROJECT_OPERANDS,\n  OPT_IN_FORM_OPERANDS,\n  OR_IS_NOT_SET_PARAM_KEY,\n} from 'lib/generated_constants/filters_constants';\n\nimport { QueryString } from 'lib/http';\nimport { FILTER_KEYS, defaultLabelOperand, getParamKey } from './filter_list';\n\nconst OPTIONAL_ROW_PARAM_KEYS = [\n  OR_IS_NOT_SET_PARAM_KEY,\n  'yearCeiling',\n  'yearFloor',\n];\n\nconst EMPTY_INCENTIVE_OPERANDS = [\n  INCENTIVE_IS_NOT_SET_OPERAND,\n  INCENTIVE_IS_SET_OPERAND,\n];\n\nexport const INVITE_FILTER_HIDDEN_FIELDS = [\n  FILTER_KEYS.labels,\n  FILTER_KEYS.project_participation,\n];\n\nexport const PII_HIDDEN_FIELDS = [\n  FILTER_KEYS.email,\n  FILTER_KEYS.last_name,\n  FILTER_KEYS.phone_number,\n];\n\nexport const FILTER_RULE_APPLIED_SECTIONS = {\n  edit: 'edit',\n  inviteFilter: 'inviteFilter',\n  segment: 'segment',\n};\n\nexport const FILTER_RULE_PENDING_SECTIONS = {\n  builder: 'builder',\n  create: 'create',\n  edit: 'edit',\n  inviteFilter: 'inviteFilter',\n};\n\nexport const appliedSectionLookup = {\n  [FILTER_RULE_PENDING_SECTIONS.builder]: FILTER_RULE_APPLIED_SECTIONS.segment,\n  [FILTER_RULE_PENDING_SECTIONS.create]: FILTER_RULE_APPLIED_SECTIONS.segment,\n  [FILTER_RULE_PENDING_SECTIONS.edit]: FILTER_RULE_APPLIED_SECTIONS.edit,\n  [FILTER_RULE_PENDING_SECTIONS.inviteFilter]:\n    FILTER_RULE_APPLIED_SECTIONS.inviteFilter,\n};\n\nexport const getIsInviteFilter = (filterRuleSection) =>\n  filterRuleSection === FILTER_RULE_PENDING_SECTIONS.inviteFilter;\n\nexport const defaultLabelFilterOperandKey = defaultLabelOperand.key;\n\nconst getKeylessParams = (params) => {\n  const keylessParams = [];\n\n  [...params].forEach((param) => {\n    const newParam = { ...param };\n    delete newParam.key;\n    keylessParams.push(newParam);\n  });\n\n  return keylessParams;\n};\n\nexport const buildLabelFilterRule = (labelIds = []) => ({\n  operand: defaultLabelFilterOperandKey,\n  params: [{ ids: labelIds }],\n});\n\nconst getProjectFilterKey = (jsonRule) => {\n  const operandKeys = PROJECT_OPERANDS.map((operand) => operand.key);\n\n  if (operandKeys.includes(jsonRule.operand))\n    return FILTER_KEYS.project_participation;\n\n  return undefined;\n};\n\nconst getOptInFormFilterKey = (jsonRule) => {\n  const operandKeys = OPT_IN_FORM_OPERANDS.map((operand) => operand.key);\n\n  if (operandKeys.includes(jsonRule.operand)) return FILTER_KEYS.opt_in_form;\n\n  return undefined;\n};\n\nconst getIncentiveFilterKey = (jsonRule) => {\n  if (jsonRule.operand.match(/^incentive/)) return FILTER_KEYS.yearly_payment;\n\n  return undefined;\n};\n\nconst getParticipantLabelFilterKey = (jsonRule) => {\n  if (jsonRule.operand.match(/^participant_label_has_any/))\n    return FILTER_KEYS.labels;\n\n  return undefined;\n};\n\nexport const getFilterKeyFromJsonRule = (jsonRule) =>\n  jsonRule.participantPopulationAttributeId ||\n  jsonRule.activityStat ||\n  jsonRule.field ||\n  getIncentiveFilterKey(jsonRule) ||\n  getProjectFilterKey(jsonRule) ||\n  getOptInFormFilterKey(jsonRule) ||\n  getParticipantLabelFilterKey(jsonRule);\n\nexport const buildFromServerFilterRules = ({ filters, filterRules }) => {\n  const appliedFilterRules = filterRules.reduce((acc, appliedFilterRule) => {\n    acc[getFilterKeyFromJsonRule(appliedFilterRule)] = appliedFilterRule;\n\n    return acc;\n  }, {});\n\n  const appliedFilterKeys = Object.keys(appliedFilterRules);\n\n  const appliedFilterFlags = appliedFilterKeys.reduce((acc, filterKey) => {\n    const appliedFilterRule = appliedFilterRules[filterKey];\n    const filter = filters[filterKey];\n\n    if (filter && appliedFilterRule) {\n      const { operand, params } = appliedFilterRule;\n\n      const { isNotSetOperand, isSetOperand } = filter;\n\n      const orIsNotSetParams = params?.some((param) => param.orIsNotSet);\n\n      acc[filterKey] = {\n        isNotSetChecked: !!(operand === isNotSetOperand || orIsNotSetParams),\n        isSetChecked: operand === isSetOperand,\n      };\n    }\n\n    return acc;\n  }, {});\n\n  const keyedAppliedFilterRules = {};\n\n  appliedFilterKeys.forEach((appliedFilterKey) => {\n    const isSetChecked = appliedFilterFlags[appliedFilterKey]?.isSetChecked;\n    const isNotSetOperand = filters[appliedFilterKey]?.isNotSetOperand;\n    const isIsNotSetOperand =\n      appliedFilterRules[appliedFilterKey].operand === isNotSetOperand;\n    const defaultOperand =\n      filters[appliedFilterKey]?.defaultFilterRuleShape.operand;\n    const operand =\n      isSetChecked || isIsNotSetOperand\n        ? defaultOperand\n        : appliedFilterRules[appliedFilterKey].operand;\n\n    keyedAppliedFilterRules[appliedFilterKey] = {\n      ...appliedFilterRules[appliedFilterKey],\n      operand,\n      params: [...appliedFilterRules[appliedFilterKey].params].map((param) => ({\n        ...param,\n        key: getParamKey(),\n      })),\n    };\n  });\n\n  return {\n    filterFlags: appliedFilterFlags,\n    filterKeys: appliedFilterKeys,\n    filterRules: keyedAppliedFilterRules,\n  };\n};\n\n// This is expected to return true if any values, including booleans, are set.\nexport const getHasValueSet = (param) => {\n  const {\n    ceiling,\n    days,\n    endAt,\n    endDate,\n    floor,\n    ids,\n    projectId,\n    startAt,\n    startDate,\n    value,\n  } = param;\n\n  // Due to value possibly being false it needs to be last option\n  const valueToCheck =\n    ceiling ||\n    days ||\n    endAt ||\n    endDate ||\n    floor ||\n    ids ||\n    projectId ||\n    startAt ||\n    startDate ||\n    value;\n\n  return (\n    valueToCheck !== null &&\n    valueToCheck !== undefined &&\n    valueToCheck.toString().trim() !== ''\n  );\n};\n\nexport const hasValueSet = (params) =>\n  params.some((param) => getHasValueSet(param));\n\nexport const hasApplicableFilterRule = ({ filterFlags, filterRules }) =>\n  Object.keys(filterRules).some(\n    (filterKey) =>\n      filterFlags[filterKey]?.isNotSetChecked ||\n      filterFlags[filterKey]?.isSetChecked ||\n      EMPTY_INCENTIVE_OPERANDS.includes(filterRules[filterKey].operand) ||\n      hasValueSet(filterRules[filterKey].params),\n  );\n\nconst preparePendingFilterRule = ({\n  filterFlags,\n  pendingFilterRule,\n  isNotSetOperand,\n  isSetOperand,\n}) => {\n  const preparedRule = { ...pendingFilterRule };\n\n  const emptyParams = [{}];\n\n  if (filterFlags?.isSetChecked) {\n    preparedRule.params = emptyParams;\n    preparedRule.operand = isSetOperand;\n  } else if (filterFlags?.isNotSetChecked) {\n    if (\n      !hasValueSet(preparedRule.params) ||\n      preparedRule.operand === isSetOperand\n    ) {\n      preparedRule.operand = isNotSetOperand;\n      preparedRule.params = emptyParams;\n    } else {\n      preparedRule.params = pendingFilterRule.params.map((param) => ({\n        ...param,\n        orIsNotSet: true,\n      }));\n    }\n  } else if (hasValueSet(preparedRule.params)) {\n    if (isNotSetOperand) {\n      preparedRule.params = pendingFilterRule.params.map((param) => ({\n        ...param,\n        orIsNotSet: false,\n      }));\n    }\n  } else if (!EMPTY_INCENTIVE_OPERANDS.includes(preparedRule.operand)) {\n    return null;\n  }\n\n  preparedRule.params = getKeylessParams(preparedRule.params);\n\n  return preparedRule;\n};\n\nexport const buildFilterRulesToApply = ({\n  filterFlags,\n  filters,\n  pendingFilterRules,\n}) =>\n  Object.keys(pendingFilterRules).reduce((acc, filterKey) => {\n    const filterRule = preparePendingFilterRule({\n      filterFlags: filterFlags[filterKey],\n      pendingFilterRule: pendingFilterRules[filterKey],\n      isNotSetOperand: filters[filterKey].isNotSetOperand,\n      isSetOperand: filters[filterKey].isSetOperand,\n    });\n\n    if (filterRule) acc[filterKey] = filterRule;\n\n    return acc;\n  }, {});\n\nexport const encodeFilterRules = (filterRules) =>\n  QueryString.base64Encode(Object.values(filterRules));\n\nexport const hasSegmentChanged = ({\n  activeSegmentId,\n  segmentsById,\n  appliedFilterRules,\n}) => {\n  if (!activeSegmentId) return false;\n\n  const activeSegment = segmentsById[activeSegmentId];\n\n  if (!activeSegment) return false;\n\n  const { filterRules } = segmentsById[activeSegmentId];\n\n  const appliedFilterKeys = Object.keys(appliedFilterRules);\n\n  if (appliedFilterKeys.length !== filterRules.length) return true;\n\n  return filterRules.some((filterRule) => {\n    const filterKey = getFilterKeyFromJsonRule(filterRule);\n\n    const appliedFilterRule = appliedFilterRules[filterKey];\n\n    if (!appliedFilterRule) return true;\n\n    const keylessAppliedFilterRule = {\n      ...appliedFilterRule,\n      params: getKeylessParams(appliedFilterRule.params),\n    };\n\n    if (!equal(keylessAppliedFilterRule, filterRule)) return true;\n\n    return false;\n  });\n};\n\nexport const getRowParams = (operand) => {\n  const params = Object.keys(operand.params)\n    .filter((param) => !OPTIONAL_ROW_PARAM_KEYS.includes(param))\n    .reduce((parsedParams, paramKey) => {\n      // Params either map directly to their type (string value) or to a more complex structure\n      // so we will unify them into one object interface every time the operand is set\n      const paramValue = operand.params[paramKey];\n\n      let parsedParam;\n      if (paramValue instanceof Object) {\n        parsedParam = {\n          attributes: {},\n          label: undefined,\n          ...paramValue,\n          key: paramKey,\n        };\n      } else {\n        parsedParam = {\n          attributes: {},\n          label: undefined,\n          key: paramKey,\n          type: paramValue,\n        };\n      }\n\n      return {\n        ...parsedParams,\n        [paramKey]: parsedParam,\n      };\n    }, {});\n\n  // Will only ever be one param object\n  return Object.values(params)[0] || {};\n};\n","import type { ReactElement } from 'react';\n\nimport React from 'react';\nimport { BrowserRouter, StaticRouter } from 'react-router';\nimport { isServer } from 'lib/ssr_utils';\n\nexport function DopeBrowserRouter({\n  location,\n  children,\n}: {\n  location: string;\n  children: ReactElement;\n}) {\n  if (isServer) {\n    return <StaticRouter location={location}>{children}</StaticRouter>;\n  }\n\n  return <BrowserRouter>{children}</BrowserRouter>;\n}\n","export const ACCESS_GRANTS_TAG = 'AccessGrants';\nexport const ACCOUNT_AVAILABILITY_SETTINGS_TAG = 'AccountAvailabilitySettings';\nexport const ACCOUNT_CHECKLIST_TAG = 'AccountChecklist';\nexport const ACCOUNT_COLLABORATORS_TAG = 'AccountCollaborators';\nexport const ACCOUNT_HUB_CONFIGURATIONS = 'AccountHubConfigurations';\nexport const ACCOUNT_INTEGRATIONS_TAG = 'AccountIntegrations';\nexport const ACCOUNT_PROJECT_TASK_EVENTS_TAG = 'AccountProjectTaskEvents';\nexport const ACCOUNT_PROJECTS_TAG = 'AccountProjects';\nexport const ACCOUNT_SIGNUP_INFO_TAG = 'AccountSignupInfo';\nexport const ACCOUNTS_TAG = 'Accounts';\nexport const ACCOUNT_TEAMS_TAG = 'AccountTeams';\nexport const BULK_EMAIL_TAG = 'BulkEmail';\nexport const COMMENTERS_TAG = 'Commenters';\nexport const COMMENTS_TAG = 'Comments';\nexport const DATA_JOB_TAG = 'DataJob';\nexport const PROJECT_AVAILABILITY_RANGES_TAG = 'ProjectAvailabilityRanges';\nexport const DEFAULT_SESSION_ROLES_TAG = 'DefaultSessionRoles';\nexport const DOPE_TABLE_COLUMNS_TAG = 'DopeTableColumns';\nexport const EMAIL_DOMAINS_TAG = 'EmailDomains';\nexport const EMAIL_PROFILE_TAG = 'EmailProfile';\nexport const EMAIL_THEME_TAG = 'EmailTheme';\nexport const FEATURE_FLAG_TAG = 'FeatureFlag';\nexport const OPEN_RECRUIT_PERIOD_TAG = 'OpenRecruitPeriod';\nexport const OPT_IN_FORMS_TAG = 'OptInForms';\nexport const PROJECT_COLLABORATOR_CALENDAR_EVENTS_TAG =\n  'ProjectCollaboratorCalendarEvents';\nexport const ORGANIZATION_ACCOUNTS_TAG = 'OrganizationAccounts';\nexport const ORGANIZATION_EMAIL_THEMES_TAG = 'OrganizationEmailThemes';\nexport const ORGANIZATION_PARTICIPANTS_TAG = 'OrganizationParticipants';\nexport const ORGANIZATION_POPULATION_PANELS_TAG =\n  'OrganizationPopulationPanels';\nexport const ORGANIZATION_PROJECT_CUSTOM_EMAIL_SETS_TAG =\n  'OrganizationProjectCustomEmailSets';\nexport const ORGANIZATION_TEAMS_TAG = 'OrganizationTeams';\nexport const PARTICIPANT_ATTRIBUTE_VALUES_TAG = 'ParticipantAttributeValues';\nexport const PARTICIPANT_FRAUD_REPORT_TAG = 'FraudReport';\nexport const PARTICIPANT_LABELS_TAG = 'ParticipantLabels';\nexport const PARTICIPANT_MANAGEMENT_INVITED_PARTICIPANTS_TAG =\n  'ParticipantManagementInvitedParticipants';\nexport const PARTICIPANT_MANAGEMENT_SHORTLISTED_PARTICIPANTS_TAG =\n  'ParticipantManagementShortlistedParticipants';\nexport const PARTICIPANT_PROJECT_PARTICIPANTS_TAG =\n  'ParticipantProjectParticipants';\nexport const PARTICIPANT_PROJECTS_TAG = 'ParticipantProjects';\nexport const PARTICIPANT_SURVEY_RESPONSE_SETS_TAG =\n  'ParticipantSurveyResponseSets';\nexport const PARTICIPANT_TASK_EVENT_STATS_TAG = 'ParticipantTaskEventStats';\nexport const PARTICIPANTS_TAG = 'Participants';\nexport const PARTICIPATION_DETAILS_TAG = 'ParticipationDetails';\nexport const POPULATION_ATTRIBUTES_TAG = 'PopulationAttributes';\nexport const POPULATION_INVITE_FILTERS_TAG = 'PopulationInviteFilters';\nexport const POPULATION_LABELS_TAG = 'PopulationLabels';\nexport const POPULATION_PANEL_PARTICIPANTS_TAG = 'PopulationPanelParticipants';\nexport const PREPAID_BALANCE_ACCOUNTS_TAG = 'PrepaidBalanceAccounts';\nexport const PREPAID_BALANCE_INVITATIONS_TAG = 'PrepaidBalanceInvitations';\nexport const PREPAID_BALANCE_TAG = 'PrepaidBalance';\nexport const PREPAID_BALANCE_TRANSACTIONS_TAG = 'PrepaidBalanceTransactions';\nexport const PREPAID_BALANCES_TAG = 'PrepaidBalances';\nexport const PROJECT_ACCOUNT_ROLES_TAG = 'ProjectAccountRoles';\nexport const PROJECT_AVAILABILITY_SETTINGS_TAG = 'ProjectAvailabilitySettings';\nexport const PROJECT_CLOSE_REQUEST_TAG = 'ProjectCloseRequest';\nexport const PROJECT_COLLABORATORS_TAG = 'ProjectCollaborators';\nexport const PROJECT_COST_BREAKDOWN_TAG = 'ProjectCostBreakdown';\nexport const PROJECT_CUSTOM_EMAILS_TAG = 'ProjectCustomEmails';\nexport const PROJECT_DEMOGRAPHIC_RULES_TAG = 'ProjectDemographicRules';\nexport const PROJECT_EMAIL_STATS_TAG = 'ProjectEmailStats';\nexport const PROJECT_EXPECTED_COST_DETAILS_TAG = 'ProjectExpectedCostDetails';\nexport const PROJECT_FILE_UPLOADS_TAG = 'ProjectFileUploads';\nexport const PROJECT_INVOICES_TAG = 'ProjectInvoices';\nexport const PROJECT_LISTINGS_TAG = 'ProjectListings';\nexport const PROJECT_OCCUPATION_LINKS_TAG = 'ProjectOccupationLinks';\nexport const PROJECT_OCCUPATION_TAGS_TAG = 'ProjectOccupationTags';\nexport const PROJECT_PARTICIPANT_ADMIN_DATA_TAG = 'ProjectParticipantAdminData';\nexport const PROJECT_PARTICIPANT_APPLICATION_STATUSES_TAG =\n  'ProjectParticipantApplicationStatuses';\nexport const PROJECT_PARTICIPANT_TAG_TAG = 'ProjectParticipantTags';\nexport const PROJECT_PARTICIPANTS_TAG = 'ProjectParticipants';\nexport const PROJECT_PAYMENT_METHODS_TAG = 'ProjectPaymentMethods';\nexport const PROJECT_PROJECT_PARTICIPANTS_TAG = 'ProjectProjectParticipants';\nexport const PROJECT_PROJECT_SKILLS_TAG = 'ProjectProjectSkills';\nexport const PROJECT_PROJECT_TASKS_TAG = 'ProjectProjectTasks';\nexport const PROJECT_PROPOSED_AVAILABILITY_RANGE_COLLECTIONS_TAG =\n  'ProjectProposedAvailabilityRangeCollections';\nexport const PROJECT_PROPOSED_AVAILABILITY_RANGES_TAG =\n  'ProjectProposedAvailabilityRanges';\nexport const PROJECT_SCHEDULED_INVITE_SETTINGS_TAG =\n  'ProjectScheduledInviteSettings';\nexport const PROJECT_SESSIONS_SIGNUP_PAGE_TAG = 'ProjectSessionsSignupPage';\nexport const PROJECT_SESSIONS_TAG = 'ProjectSessions';\nexport const PROJECT_SETTINGS_TAG = 'ProjectSettings';\nexport const PROJECT_SUMMARIES_TAG = 'ProjectSummaries';\nexport const PROJECT_SURVEY_KEYS_TAG = 'ProjectSurveyKeys';\nexport const PROJECT_SURVEYS_TAG = 'ProjectSurveys';\nexport const PROJECT_TAG = 'Projects';\nexport const PROJECT_TAG_TAG = 'ProjectTag';\nexport const PROJECT_VIDEO_UPLOADS_TAG = 'ProjectVideoUploads';\nexport const PROJECT_WORKSPACE_CALENDAR_TAG = 'ProjectWorkspaceCalendar';\nexport const PROJECT_WORKSPACE_SESSIONS_TAG = 'ProjectWorkspaceSessions';\nexport const RECRUIT_PERIOD_TAG = 'RecruitPeriod';\nexport const REPORT_TAG = 'Report';\nexport const REPORTS_TAG = 'Reports';\nexport const RESEARCHER_NOTE_TAG = 'ResearcherNote';\nexport const RESPONSE_SETS_TAG = 'ResponseSets';\nexport const SCHEDULABLE_RANGES_TAG = 'SchedulableRanges';\nexport const SEGMENTS_TAG = 'Segments';\nexport const SESSION_PROJECT_PARTICIPANTS_TAG = 'SessionProjectParticipants';\nexport const SESSION_ROLES_TAG = 'SessionRoles';\nexport const SESSION_SIGNUP_PAGES_SESSIONS_TAG = 'SessionSignupPagesSessions';\nexport const SIGNATURE_REQUESTS_TAG = 'SignatureRequests';\nexport const STRIPE_CARDS_TAG = 'StripeCards';\nexport const SURVEY_PREVIEW_SECTIONS_TAG = 'SurveyPreviewSections';\nexport const SURVEY_SECTIONS_TAG = 'SurveySections';\nexport const TEAM_BILLING_INFOS_TAG = 'TeamBillingInfos';\nexport const TEAM_HUB_USAGE_TAG = 'TeamHubUsage';\nexport const TEAM_INVITES_TAG = 'TeamInvites';\nexport const TEAM_MEMBERS_TAG = 'TeamMembers';\nexport const TEAM_PARTICIPANTS_TAG = 'TeamParticipants';\nexport const TEAM_PROJECT_TEMPLATES_TAG = 'TeamProjectTemplates';\nexport const TEAM_PROJECTS_TAG = 'TeamProjects';\nexport const TEAM_SETTINGS_TAG = 'TeamSettings';\nexport const TEAM_SUBSCRIPTIONS_TAG = 'TeamSubscriptions';\nexport const TEAM_TAG = 'Team';\nexport const WORKSPACE_PARTICIPANTS_TAG = 'WorkspaceParticipants';\n","import React, { type ComponentType } from 'react';\nimport { Provider } from 'react-redux';\nimport { ErrorBoundary as AppsignalErrorBoundary } from '@appsignal/react';\n\nimport store from 'store/store';\nimport { DopeBrowserRouter } from 'components/dope_browser_router';\nimport { useTrackingWithDefaultDispatch } from 'hooks/use_tracking_with_default_dispatch';\nimport { RailsContextProvider, useRailsContext } from 'hooks/use_rails_context';\n// eslint-disable-next-line no-restricted-imports\nimport appsignal from 'lib/telemetry/appsignal';\n\nimport { getDisplayName } from './utils';\n\ntype PageProvidersProps = {\n  children: React.ReactNode;\n};\n\nfunction PageProviders({ children }: PageProvidersProps) {\n  const { Track } = useTrackingWithDefaultDispatch();\n  const railsContext = useRailsContext();\n\n  if (!appsignal) {\n    return (\n      <DopeBrowserRouter location={railsContext?.request.location ?? '/'}>\n        <Provider store={store}>\n          <Track>{children}</Track>\n        </Provider>\n      </DopeBrowserRouter>\n    );\n  }\n\n  return (\n    <AppsignalErrorBoundary\n      fallback={\n        railsContext?.env.APPSIGNAL_FALLBACK\n          ? (error?: Error) => (\n              <div className=\"ui-error-boundary-fallback\">\n                There was an error loading this component\n                <span aria-label=\"warning\" role=\"img\">\n                  {' '}\n                  ⚠️{' '}\n                </span>\n                {error && error.message}\n              </div>\n            )\n          : undefined\n      }\n      instance={appsignal}\n    >\n      <DopeBrowserRouter location={railsContext?.request.location ?? '/'}>\n        <Provider store={store}>\n          <Track>{children}</Track>\n        </Provider>\n      </DopeBrowserRouter>\n    </AppsignalErrorBoundary>\n  );\n}\n\nexport function withPageProviders<T extends object>(\n  WrappedComponent: ComponentType<T>,\n) {\n  function WithPageProviders(props: T, railsContext: unknown) {\n    return function () {\n      return (\n        <RailsContextProvider railsContext={railsContext}>\n          <PageProviders>\n            <WrappedComponent {...props} />\n          </PageProviders>\n        </RailsContextProvider>\n      );\n    };\n  }\n\n  WithPageProviders.displayName = `withPageProviders(${getDisplayName(WrappedComponent)})`;\n  return WithPageProviders;\n}\n","import * as routes from 'lib/routes';\n\nimport { apiSlice } from 'api/base_slice';\nimport { TEAM_PROJECTS_TAG } from 'api/tag_types';\nimport { deserializeJSONApiResponse, sortAlphabeticalByName } from 'api/utils';\n\n// TODO: Find graceful way to switch between sorted or not, likely backend?\n// Also researched passing args into transformResponse, but would not work even with upgrade\n// eslint-disable-next-line max-len\n// https://stackoverflow.com/questions/73070967/how-to-access-the-query-arguments-in-transformresponse-with-redux-toolkit-query\n// transformResponse: (response, meta, arg) => {\n\nexport const teamProjectsApi = apiSlice.injectEndpoints({\n  endpoints: (builder) => ({\n    getTeamProjects: builder.query({\n      query: ({ teamId, ...rest }) =>\n        routes.api_team_projects_path({ team_id: teamId, ...rest }),\n      transformResponse: (response) =>\n        sortAlphabeticalByName(deserializeJSONApiResponse(response)),\n      providesTags: [TEAM_PROJECTS_TAG],\n    }),\n    getUnsortedTeamProjects: builder.query({\n      query: ({ teamId, ...rest }) =>\n        routes.api_team_projects_path({ team_id: teamId, ...rest }),\n      transformResponse: deserializeJSONApiResponse,\n      providesTags: (_result, _error, { id }) => [\n        { type: TEAM_PROJECTS_TAG, id },\n      ],\n    }),\n  }),\n  overrideExisting: 'throw',\n});\n\nexport const { useGetTeamProjectsQuery, useGetUnsortedTeamProjectsQuery } =\n  teamProjectsApi;\n","import { useMemo } from 'react';\nimport { z, type ZodSchema } from 'zod';\n\nimport { useGetProjectQuery } from 'api/projects';\n\nimport { useErrorLogger } from 'hooks/use_error_logger';\nimport {\n  COMPENSATION_TYPE_OTHER,\n  THEY_PAY_COMPENSATION_OPTION_VALUES,\n  THEY_PAY_COMPENSATION_IN_PERSON_OPTION_VALUES,\n} from 'researcher/project_workspace/constants';\n\nimport { PARTICIPANT_EMAIL_CLASSES } from 'lib/generated_constants/emails';\nimport { PROJECT_SOURCE_TYPES } from 'lib/generated_constants/project_source_types';\nimport {\n  CompensationMethods,\n  IntegrationProviders,\n  ProjectSettings,\n  StudyTypes,\n  InterviewTypes,\n  ProjectStatuses,\n} from 'lib/generated_constants/projects';\n\nimport { useProjectWorkspaceContext } from './use_project_workspace_context';\n\nconst computeIsAutopayEnabled = (projectSettings: unknown) => {\n  if (!projectSettings || typeof projectSettings !== 'object') return false;\n  if (!('disableAutopay' in projectSettings)) return false;\n\n  if (typeof projectSettings.disableAutopay === 'boolean')\n    return projectSettings.disableAutopay === false;\n  if (typeof projectSettings.disableAutopay === 'string')\n    return projectSettings.disableAutopay === 'false';\n\n  return false;\n};\n\nconst projectSchema = z\n  .object({\n    id: z.string(),\n    accessCode: z.string(),\n    additionalRecruitmentRequirementsHtml: z.string().nullable(),\n    advancedScreening: z.boolean(),\n    billingAccount: z.object({\n      id: z.string(),\n      commenterId: z.string(),\n      initials: z.string(),\n      email: z.string(),\n      firstName: z.string(),\n      lastName: z.string(),\n      fullName: z.string(),\n      lookbackEnabledAt: z.string().nullable(),\n      name: z.string(),\n      nameLastFirst: z.string(),\n      messagerId: z.number(),\n      roleId: z.number().nullable().optional(),\n      phoneNumber: z.string().nullable(),\n      teams: z\n        .array(z.object({ id: z.string() }))\n        .optional()\n        .nullable(),\n    }),\n    compensationAmount: z.string().nullable(),\n    compensationMethodId: z.number().nullable(),\n    compensationType: z.string().nullable(),\n    confirmationNotesHtml: z.string().nullable(),\n    consumerFee: z.number(),\n    createdAt: z.string(),\n    currentStatus: z.string(),\n    defaultSessionLocation: z.string().nullable(),\n    deviceRequirements: z\n      .object({\n        summary: z.array(z.array(z.string())),\n        ids: z.array(z.number()),\n      })\n      .nullable(),\n    documentDescription: z.object({\n      description: z.string().nullable(),\n      signatureRequestDataKey: z.string().nullable(),\n    }),\n    documentName: z.string().optional(),\n    draftParticipantsCount: z.number(),\n    emailProfileId: z.number().nullable(),\n    emails: z.array(\n      z.object({\n        allowEdit: z.boolean(),\n        class: z.enum(PARTICIPANT_EMAIL_CLASSES as [string, ...string[]]),\n        description: z.string(),\n        id: z.number().nullable(),\n        purpose: z.string(),\n        name: z.string(),\n        slug: z.string(),\n      }),\n    ),\n    emailThemeId: z.number().nullable(),\n    hasDocumentSigning: z.boolean(),\n    incentive: z.string(),\n    internalDescription: z.string().nullable(),\n    interviewType: z.string().nullable(),\n    interviewTypeId: z.number().nullable(),\n    isActive: z.boolean(),\n    isEligibleForSessionObservers: z.boolean().nullable(),\n    isPrivate: z.boolean(),\n    isSystemHidden: z.boolean(),\n    isZeroCost: z.boolean(),\n    latestStatusTypeId: z.number(),\n    location: z\n      .object({\n        address: z.string().nullable().optional(),\n        autocomplete: z.string().nullable().optional(),\n        city: z.string().nullable().optional(),\n        countries: z.array(z.string()).optional(),\n        detail: z.string().nullable().optional(),\n        // TODO: Get a working type for this column; afaict it is indeed an array of objects. For some reason though, when\n        // specifying the type as z.array(z.object({})), the data is not being coerced into an empty object making users unable\n        // to see their City selections in the UI\n        // googleLocationInfo: z.array(z.object({})).optional(),\n        googleLocationInfo: z.any(),\n        googleMapsUrl: z.string().nullable().optional(),\n        latitude: z.number().nullable().optional().optional(),\n        locationExtraInfo: z.string().nullable().optional(),\n        longitude: z.number().nullable().optional().optional(),\n        parkingAvailable: z.boolean().optional(),\n        parkingInfo: z.string().nullable().optional(),\n        regions: z.array(z.string()).optional(),\n      })\n      .nullable(),\n    meta: z.object({\n      canView: z.boolean(),\n      canEdit: z.boolean(),\n      invalidLaunchMessages: z.string().optional(),\n      invalidLaunchProps: z.array(z.string()).optional(),\n      firstProjectId: z.string().optional(),\n    }),\n    name: z.string().nullable(),\n    numParticipants: z.number().nullable(),\n    organizationId: z.number(),\n    originalNumParticipants: z.number().nullable(),\n    owner: z.object({\n      id: z.string(),\n      commenterId: z.string(),\n      initials: z.string(),\n      email: z.string(),\n      firstName: z.string(),\n      lastName: z.string(),\n      fullName: z.string(),\n      lookbackEnabledAt: z.string().nullable(),\n      name: z.string(),\n      nameLastFirst: z.string(),\n      messagerId: z.number(),\n      roleId: z.number().nullable().optional(),\n      phoneNumber: z.string().nullable(),\n      teams: z\n        .array(z.object({ id: z.string() }))\n        .optional()\n        .nullable(),\n      relationshipNames: z.array(z.string()).optional(),\n    }),\n    participantPopulationId: z.number().nullable(),\n    participantReferrals: z.boolean(),\n    professionalFee: z.number(),\n    projectCustomEmailSetId: z.number().nullable(),\n    projectStatus: z.string(),\n    publicDescription: z.string().nullable(),\n    publicTitle: z.string().nullable(),\n    remainingInviteCount: z.number().optional(),\n    requireApproval: z.boolean().optional(),\n    researcherWillCall: z.boolean(),\n    screenerVideo: z\n      .object({\n        id: z.string(),\n        prompt: z.string(),\n      })\n      .nullable(),\n    sessionLength: z.string().nullable(),\n    settings: z.object({\n      // TODO: There are many more settings; their types are defined by the ProjectSetting BobEnum\n      confirmOnJoin: z.boolean().optional(),\n      requireApproval: z.boolean().optional(),\n      participantReschedulingEnabled: z.boolean().optional(),\n      rptInvitesOnly: z.boolean().optional(),\n    }),\n    sourceType: z.string(),\n    studyLength: z.object({\n      days: z.number().optional(),\n      hours: z.number().optional(),\n      minutes: z.number().optional(),\n    }),\n    studyType: z.string(),\n    studyTypeId: z.number().nullable(),\n    studyTypeName: z.string(),\n    surveyDraft: z\n      .object({\n        id: z.string(),\n        surveyJson: z.string(),\n      })\n      .nullable(),\n    targetProfessionals: z.boolean(),\n    task: z\n      .object({\n        id: z.string(),\n        externalId: z.string().nullable(),\n        provider: z.string(),\n        repositoryUrl: z.string().nullable(),\n        providerDisplayName: z.string().nullable(),\n        title: z.string().nullable(),\n        url: z.string().nullable(),\n      })\n      .nullable(),\n    taskSession: z\n      .object({\n        id: z.string(),\n        moderatorId: z.number(),\n        numScheduled: z.number(),\n        numSlots: z.number(),\n        sessionLocation: z.string().nullable(),\n        startTime: z.string(),\n        datetimeDisplay: z.string(),\n        hasPassed: z.boolean(),\n        hostUrl: z.string().nullable(),\n        hasZoomSessionLocation: z.boolean(),\n        hasMeetSessionLocation: z.boolean(),\n        start: z.string(),\n        startDate: z.string(),\n        timeDisplay: z.string(),\n      })\n      .nullable(),\n    teamDomain: z.string().nullable(),\n    teamId: z.number(),\n    timezone: z.string(),\n    timezoneAbbreviation: z.string(),\n    useEmailTheme: z.boolean(),\n    wePay: z.boolean().nullable(),\n  })\n  .passthrough()\n  .optional();\n\nexport function buildProjectState(project: z.infer<typeof projectSchema>) {\n  if (!project) return undefined;\n\n  const {\n    accessCode,\n    additionalRecruitmentRequirementsHtml,\n    advancedScreening,\n    billingAccount,\n    compensationAmount,\n    compensationMethodId,\n    compensationType,\n    confirmationNotesHtml,\n    consumerFee,\n    defaultSessionLocation,\n    deviceRequirements,\n    documentDescription,\n    documentName,\n    draftParticipantsCount,\n    emailProfileId,\n    emailThemeId,\n    emails,\n    hasDocumentSigning,\n    id,\n    internalDescription,\n    interviewTypeId,\n    isActive,\n    isEligibleForSessionObservers,\n    isPrivate,\n    isSystemHidden,\n    isZeroCost,\n    latestStatusTypeId,\n    location,\n    meta: { invalidLaunchMessages, invalidLaunchProps, firstProjectId } = {},\n    name,\n    numParticipants,\n    organizationId,\n    originalNumParticipants,\n    owner,\n    participantPopulationId,\n    participantReferrals,\n    professionalFee,\n    projectCustomEmailSetId,\n    publicDescription,\n    publicTitle,\n    remainingInviteCount,\n    requireApproval,\n    researcherWillCall,\n    screenerVideo,\n    sourceType,\n    studyLength,\n    studyTypeId,\n    surveyDraft,\n    targetProfessionals,\n    task,\n    taskSession,\n    teamDomain,\n    teamId,\n    timezone,\n    timezoneAbbreviation,\n    useEmailTheme,\n  } = project;\n\n  const isAutopayEnabled = computeIsAutopayEnabled(project.settings);\n  const isNoIncentiveTypeProject =\n    compensationMethodId === CompensationMethods.NONE;\n  const isWePay = compensationMethodId === CompensationMethods.WE_PAY;\n  const senderId = project.owner?.messagerId;\n  const hasIntegration =\n    !!task?.provider &&\n    IntegrationProviders.TRACKED_PROVIDERS.includes(task.provider);\n  const isConfirmOnJoin =\n    project.settings?.confirmOnJoin ?? ProjectSettings.confirmOnJoin.default;\n  const isParticipantApprovalRequired =\n    project.settings?.requireApproval ??\n    ProjectSettings.requireApproval.default;\n  const isRptProject =\n    project.settings?.rptInvitesOnly ?? ProjectSettings.rptInvitesOnly.default;\n  const isRecruitProject = sourceType === PROJECT_SOURCE_TYPES.PROJECT;\n  const isHubProject = sourceType === PROJECT_SOURCE_TYPES.BYOA_PROJECT;\n  const isSourcelessProject =\n    sourceType === PROJECT_SOURCE_TYPES.SOURCELESS_PROJECT;\n  const hasParticipantSource = !isSourcelessProject;\n  const isOneOnOne = studyTypeId === StudyTypes.ONE_ON_ONE;\n  const isFocusGroup = studyTypeId === StudyTypes.FOCUS_GROUP;\n  const isMultiDay = studyTypeId === StudyTypes.MULTI_DAY;\n  const isUnmoderatedTask = studyTypeId === StudyTypes.UNMODERATED_TASK;\n  const hasStudyType =\n    studyTypeId && Object.values(StudyTypes).includes(studyTypeId);\n  const isModerated = hasStudyType && !isUnmoderatedTask;\n  const isOnlineInterview = interviewTypeId === InterviewTypes.ONLINE;\n  const isPhoneInterview = interviewTypeId === InterviewTypes.PHONE;\n  const isInPersonInterview = interviewTypeId === InterviewTypes.IN_PERSON;\n  const isDraft = latestStatusTypeId === ProjectStatuses.DRAFT;\n  const isLaunchable = !invalidLaunchProps?.length;\n  const isLaunched = latestStatusTypeId === ProjectStatuses.LAUNCHED;\n  const participantReschedulingEnabled =\n    project.settings?.participantReschedulingEnabled;\n  const isFirstProject = String(firstProjectId) === String(id);\n\n  const hasOtherCompensationType =\n    !!compensationType &&\n    (isInPersonInterview\n      ? !THEY_PAY_COMPENSATION_IN_PERSON_OPTION_VALUES.includes(\n          compensationType,\n        )\n      : !THEY_PAY_COMPENSATION_OPTION_VALUES.includes(compensationType));\n  const derivedCompensationType = hasOtherCompensationType\n    ? COMPENSATION_TYPE_OTHER\n    : compensationType;\n  const compensationTypeOtherCustomValue = hasOtherCompensationType\n    ? compensationType\n    : undefined;\n\n  return {\n    accessCode,\n    additionalRecruitmentRequirementsHtml,\n    advancedScreening,\n    billingAccount,\n    compensationAmount,\n    compensationMethodId,\n    compensationType: derivedCompensationType,\n    compensationTypeOtherCustomValue,\n    confirmationNotesHtml,\n    consumerFee,\n    defaultSessionLocation,\n    deviceRequirements,\n    documentDescription,\n    documentName,\n    draftParticipantsCount,\n    emailProfileId,\n    emailThemeId,\n    emails,\n    hasDocumentSigning,\n    hasIntegration,\n    hasParticipantSource,\n    hasStudyType,\n    id,\n    internalDescription,\n    interviewTypeId,\n    invalidLaunchMessages,\n    invalidLaunchProps,\n    isActive,\n    isAutopayEnabled,\n    isConfirmOnJoin,\n    isDraft,\n    isEligibleForSessionObservers,\n    isFirstProject,\n    isFocusGroup,\n    isHubProject,\n    isInPersonInterview,\n    isLaunchable,\n    isLaunched,\n    isModerated,\n    isMultiDay,\n    isNoIncentiveTypeProject,\n    isOneOnOne,\n    isOnlineInterview,\n    isParticipantApprovalRequired,\n    isPhoneInterview,\n    isPrivate,\n    isRecruitProject,\n    isRptProject,\n    isSourcelessProject,\n    isSystemHidden,\n    isUnmoderatedTask,\n    isWePay,\n    isZeroCost,\n    latestStatusTypeId,\n    location,\n    name,\n    numParticipants,\n    organizationId,\n    originalNumParticipants,\n    owner,\n    participantPopulationId,\n    participantReferrals,\n    participantReschedulingEnabled,\n    professionalFee,\n    projectCustomEmailSetId,\n    publicDescription,\n    publicTitle,\n    remainingInviteCount,\n    requireApproval,\n    researcherWillCall,\n    screenerVideo,\n    senderId,\n    sourceType,\n    studyLength,\n    studyTypeId,\n    surveyDraft,\n    targetProfessionals,\n    task,\n    taskSession,\n    teamDomain,\n    teamId,\n    timezone,\n    timezoneAbbreviation,\n    useEmailTheme,\n  };\n}\n\nexport type ProjectState = ReturnType<typeof buildProjectState>;\n\nfunction safelyParseSchema<T>(\n  data: unknown,\n  schema: ZodSchema<T>,\n  callback: (error: Error) => void,\n) {\n  if (['development', 'test'].includes(process.env.NODE_ENV ?? '')) {\n    return schema.parse(data);\n  }\n\n  try {\n    return schema.parse(data);\n  } catch (error) {\n    callback(error as Error);\n\n    return data as T;\n  }\n}\n\n// use this hook to pull project state instead of the rtk query directly.\n// this allows us to deserialize the data into a more usable format\n// and prevents a bunch of potential fallout if/when we rework the project\n// model for \"continuous research.\"\nexport function useGetProjectState() {\n  const logError = useErrorLogger();\n  const { projectId } = useProjectWorkspaceContext();\n  const { data, ...rest } = useGetProjectQuery({\n    projectId,\n    include: [\n      'billing_account',\n      'default_session_location',\n      'document_description',\n      'document_name',\n      // TODO: remove draft_participants_count once we're not using it\n      // https://linear.app/user-interviews/issue/RXS-1981/[cleanup]-remove-feature-flag\n      'draft_participants_count',\n      'emails',\n      'screener_video',\n      'survey_draft',\n      'task',\n      'task_session',\n    ].join(','),\n  });\n\n  const schema = useMemo(() => projectSchema, []);\n\n  const projectState = useMemo(() => {\n    if (!data) return undefined;\n    const project = safelyParseSchema(data, schema, (error) => {\n      logError(error);\n    });\n\n    return buildProjectState(project);\n  }, [data, logError, schema]);\n\n  return {\n    ...rest,\n    projectState,\n  };\n}\n","import type { ComponentType } from 'react';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function getDisplayName(WrappedComponent: ComponentType<any>) {\n  return WrappedComponent.displayName || WrappedComponent.name || 'Component';\n}\n","import { useContext } from 'react';\nimport { AuthUserContext } from 'common/authorization';\n\nexport function useAuthUserContext() {\n  return useContext(AuthUserContext);\n}\n","// extracted by mini-css-extract-plugin\nvar _1 = \"uZ8MYdiaESWJCjqimXr_\";\nvar _2 = \"aa9WlUhp90siVi_Ayqxn\";\nvar _3 = \"i_7LQn2fzgWYqOghLEsJ\";\nvar _4 = \"bOP4we4EJhWfZ29hojhw\";\nvar _5 = \"GpMsvbkp0xzLDEAdAY1P\";\nvar _6 = \"anplxCL1Xh4TQfnAP6m5\";\nvar _7 = \"WTDCDb0MrH_KJyB2KqJC\";\nvar _8 = \"yHeLU4wrRNzbB9A6Bsm6\";\nvar _9 = \"o4iyErwAfjslH12W8ZrQ\";\nvar _a = \"weOS2ShpYK55NLNmwQso\";\nvar _b = \"pUQlsNTSySEI3mf31Ie2\";\nvar _c = \"Wl9T3o9_QVLnptqBY2a7\";\nvar _d = \"MG27koMBbHco262N2hsH\";\nvar _e = \"_JZqcqc8HGsVbMVsr037\";\nvar _f = \"SijfAn9XLWNIE3g60WXj\";\nvar _10 = \"ABf0lDMn9qxRJGK0aTJM\";\nvar _11 = \"lMpXHGKGf9MSv3RGnAdA\";\nvar _12 = \"XNff4WDFfomxfyjEQ21A\";\nexport { _1 as \"ApplySuccessCard__detail__date\", _2 as \"BillingInfoCard__column\", _3 as \"CopyToClipboard\", _4 as \"DataConsentNotice__content__preview__body\", _5 as \"MessageList__message__timestamp\", _6 as \"ParticipantProfile__participant-details__attribute-value\", _7 as \"ProjectCustomEmailSets\", _8 as \"ProjectListItem__status-date\", _9 as \"ProjectListing__detail\", _a as \"ProjectListing__details\", _b as \"TeamMemberInviterForm__section__invite-via-link\", _c as \"UnmoderatedTask__deadline\", _d as \"btn-link--neutral\", _e as \"btn-outline-secondary\", _f as \"footer\", _10 as \"footerNavigationItem\", _11 as \"participant-dashboard__project__info__status__string\", _12 as \"schedule-project-participant-page__time-slots\" }\n","import React from 'react';\n\nimport * as routes from 'lib/routes';\nimport { trackingEvents } from 'lib/analytics/constants';\nimport { TeamActionTypes } from 'lib/generated_constants/team_action_types';\n\nimport { Authorization } from 'common/authorization';\nimport { NavigationItem } from '../navigation_item';\n\n// eslint-disable-next-line local-rules/css_modules\nimport * as styles from './footer.module.scss';\n\nconst { NAVIGATION_PARTICIPANTS_CLICKED, NAVIGATION_PROJECTS_CLICKED } =\n  trackingEvents;\n\nexport function Footer() {\n  return (\n    <footer className={styles.footer}>\n      <nav>\n        <NavigationItem\n          className={styles.footerNavigationItem}\n          event={NAVIGATION_PROJECTS_CLICKED}\n          href={routes.account_dashboard_path()}\n          iconSrcBase=\"/images/nav_icon_projects\"\n          label=\"Projects\"\n        />\n\n        <Authorization to={TeamActionTypes.SEARCH_PARTICIPANTS}>\n          <NavigationItem\n            className={styles.footerNavigationItem}\n            event={NAVIGATION_PARTICIPANTS_CLICKED}\n            href={routes.search_participants_path()}\n            iconSrcBase=\"/images/nav_icon_participants\"\n            label=\"Participants\"\n          />\n        </Authorization>\n      </nav>\n    </footer>\n  );\n}\n","/* eslint-disable camelcase */\nimport type {\n  PathParameters,\n  ResponseBody,\n  RequestBodyAttributes,\n} from 'lib/swagger_helper';\nimport * as routes from 'lib/routes';\n\nimport { apiSlice } from 'api/base_slice';\nimport { ACCOUNT_HUB_CONFIGURATIONS } from 'api/tag_types';\n\nimport { headersAndCredentials } from 'api/utils';\n\nexport type AccountHubConfigurationsRawResponse =\n  ResponseBody<'getAccountHubConfigurations'>;\nexport type AccountHubConfigurationsApiResponse = ReturnType<\n  typeof transformResponse\n>;\n\nexport const accountHubConfigurationsApi = apiSlice.injectEndpoints({\n  endpoints: (builder) => ({\n    getAccountHubConfigurations: builder.query<\n      AccountHubConfigurationsApiResponse,\n      PathParameters<'getAccountHubConfigurations'>\n    >({\n      query: ({ participant_population_id }) =>\n        routes.api_participant_population_hub_configs_path(\n          participant_population_id,\n        ),\n      providesTags: (_result, _error, { participant_population_id }) => [\n        { type: ACCOUNT_HUB_CONFIGURATIONS, id: participant_population_id },\n      ],\n      transformResponse,\n    }),\n    upsertAccountHubConfiguration: builder.mutation<\n      AccountHubConfigurationsApiResponse,\n      RequestBodyAttributes<'upsertAccountHubConfiguration'> &\n        PathParameters<'upsertAccountHubConfiguration'>\n    >({\n      query: ({ participant_population_id, ...configurations }) => ({\n        url: routes.api_participant_population_hub_configs_path(\n          participant_population_id,\n        ),\n        method: 'PATCH',\n        body: { data: { attributes: configurations } },\n        ...headersAndCredentials(),\n      }),\n      invalidatesTags: (_result, _error, { participant_population_id }) => [\n        { type: ACCOUNT_HUB_CONFIGURATIONS, id: participant_population_id },\n      ],\n      transformResponse,\n    }),\n  }),\n  overrideExisting: 'throw',\n});\n\nfunction transformResponse(\n  response:\n    | ResponseBody<'getAccountHubConfigurations'>\n    | ResponseBody<'upsertAccountHubConfiguration'>,\n) {\n  const { data } = response;\n\n  if (!data) return undefined;\n\n  return {\n    id: data.id,\n    ...data.attributes,\n  };\n}\n\nexport const {\n  useGetAccountHubConfigurationsQuery,\n  useUpsertAccountHubConfigurationMutation,\n} = accountHubConfigurationsApi;\n","import * as routes from 'lib/routes';\n\nimport { apiSlice } from 'api/base_slice';\nimport { PARTICIPANTS_TAG, TEAM_HUB_USAGE_TAG } from 'api/tag_types';\nimport {\n  ACCEPT_V2_HEADER,\n  deserializeJSONApiResponse,\n  headersAndCredentials,\n} from 'api/utils';\n\nexport const participantsApi = apiSlice.injectEndpoints({\n  endpoints: (builder) => ({\n    createParticipants: builder.mutation({\n      query: ({ email, teamIds }) => {\n        const params = { data: { attributes: { email } } };\n\n        if (teamIds) params.data.team_ids = teamIds;\n\n        return {\n          url: routes.api_participants_path(),\n          method: 'POST',\n          body: params,\n          ...headersAndCredentials(ACCEPT_V2_HEADER),\n        };\n      },\n      invalidatesTags: [TEAM_HUB_USAGE_TAG],\n    }),\n    getParticipant: builder.query({\n      query: ({ id, params }) => routes.api_participant_path(id, params),\n      providesTags: (result, error, { id }) => [{ type: PARTICIPANTS_TAG, id }],\n      transformResponse: deserializeJSONApiResponse,\n    }),\n    updateParticipant: builder.mutation({\n      query: ({ id, params }) => ({\n        url: routes.api_participant_path(id),\n        method: 'PATCH',\n        body: params,\n        ...headersAndCredentials(),\n      }),\n      invalidatesTags: (result, error, { id }) => [\n        { type: PARTICIPANTS_TAG, id },\n      ],\n    }),\n    updateParticipantTeams: builder.mutation({\n      query: ({ encodedFilterParams, teamIds, teamId }) => ({\n        url: routes.api_teams_participants_path({ team_id: teamId }),\n        method: 'PATCH',\n        body: {\n          team_ids: teamIds,\n          participant_filter: encodedFilterParams,\n        },\n        ...headersAndCredentials(),\n      }),\n    }),\n    upsertParticipants: builder.mutation({\n      query: ({ email, teamIds, teamId, populationId }) => {\n        const params = { data: { attributes: { email } } };\n\n        if (teamIds) params.data.team_ids = teamIds;\n\n        return {\n          url: routes.api_participants_path({\n            participant_population_id: populationId,\n            team_id: teamId,\n          }),\n          method: 'PATCH',\n          body: params,\n          ...headersAndCredentials(ACCEPT_V2_HEADER),\n        };\n      },\n      invalidatesTags: [TEAM_HUB_USAGE_TAG],\n    }),\n  }),\n  overrideExisting: 'throw',\n});\n\nexport const {\n  useGetParticipantQuery,\n  useUpdateParticipantMutation,\n  useUpdateParticipantTeamsMutation,\n  useUpsertParticipantsMutation,\n} = participantsApi;\n","import * as backendConstants from 'lib/generated_constants/participant_attributes';\n\nexport const updateSections = {\n  INFO: 'participant-info',\n  PASSWORD: 'participant-password',\n};\n\nconst BROWSERS_FORM_INPUT_LABEL = 'Which internet browser(s) do you use?';\nconst COMPUTER_OS_FORM_INPUT_LABEL =\n  'What computer operating system(s) do you use?';\nconst COMPUTER_WEBCAM_FORM_INPUT_LABEL =\n  'Do you have a computer with a webcam?';\nconst DISABILITIES_FORM_INPUT_LABEL =\n  'Do you identify as having any of the following disabilities?';\nconst HOUSEHOLD_INCOME_FORM_INPUT_LABEL = 'Household income per year';\nconst LEVEL_OF_EDUCATION_FORM_INPUT_LABEL = 'Highest level of education';\nconst SMALL_BUSINESS_OWNER_FORM_INPUT_LABEL = 'Small business owner?';\nconst SMARTPHONE_OS_FORM_INPUT_LABEL =\n  'What smartphone operating system(s) do you use?';\nconst TABLET_OS_FORM_INPUT_LABEL =\n  'What tablet operating system(s) do you use?';\n\nexport const attributeSlugsToInputLabels = {\n  [backendConstants.BROWSERS_SLUG]: BROWSERS_FORM_INPUT_LABEL,\n  [backendConstants.COMPUTER_OS_SLUG]: COMPUTER_OS_FORM_INPUT_LABEL,\n  [backendConstants.COMPUTER_WEBCAM_SLUG]: COMPUTER_WEBCAM_FORM_INPUT_LABEL,\n  [backendConstants.DISABILITIES_SLUG]: DISABILITIES_FORM_INPUT_LABEL,\n  [backendConstants.HOUSEHOLD_INCOME_SLUG]: HOUSEHOLD_INCOME_FORM_INPUT_LABEL,\n  [backendConstants.LEVEL_OF_EDUCATION_SLUG]:\n    LEVEL_OF_EDUCATION_FORM_INPUT_LABEL,\n  [backendConstants.SMALL_BUSINESS_OWNER_SLUG]:\n    SMALL_BUSINESS_OWNER_FORM_INPUT_LABEL,\n  [backendConstants.SMARTPHONE_OS_SLUG]: SMARTPHONE_OS_FORM_INPUT_LABEL,\n  [backendConstants.TABLET_OS_SLUG]: TABLET_OS_FORM_INPUT_LABEL,\n};\n\nexport const attributeSlugsToDefaultOptionNames = {\n  [backendConstants.CHILDREN_SLUG]:\n    backendConstants.CHILDREN_DEFAULT_OPTION_NAME,\n  [backendConstants.COMPUTER_OS_SLUG]:\n    backendConstants.COMPUTER_OS_DEFAULT_OPTION_NAME,\n  [backendConstants.SMARTPHONE_OS_SLUG]:\n    backendConstants.SMARTPHONE_OS_DEFAULT_OPTION_NAME,\n  [backendConstants.TABLET_OS_SLUG]:\n    backendConstants.TABLET_OS_DEFAULT_OPTION_NAME,\n  [backendConstants.TYPE_OF_INCOME_SLUG]:\n    backendConstants.TYPE_OF_INCOME_DEFAULT_OPTION_NAME,\n};\n\nexport * from 'lib/generated_constants/participant_attributes';\n","import React, { useState } from 'react';\nimport { JsonApiDataStore } from 'jsonapi-datastore';\nimport { LoadingOverlay } from '@user-interviews/ui-design-system';\n\nimport { AuthUserContext } from 'common/authorization';\nimport useHttp from 'hooks/use_http';\n\nimport { ErrorRenderer } from 'lib/errors';\nimport * as routes from 'lib/routes';\n\nimport { getDisplayName } from './utils';\n\n// authUserParams() takes props and returns a object of params to merge into the API call to\n// /authorization-user.\n// ex. props => ({ project_id: 17 })\n//\n// defaultValue() takes props and returns a object to use as the default value for the context\n// The object should be in the format expected by JsonAPIDataStore\n// ex. props => props.authUser\nfunction withAuthUserContext(\n  WrappedComponent,\n  authUserParams = () => ({}),\n  defaultValue = (props) => props.authUser || {},\n) {\n  function WithAuthUserContext(props) {\n    const { get, loading } = useHttp();\n\n    const [contextValue, setContextValue] = useState(\n      new JsonApiDataStore().sync(defaultValue(props)),\n    );\n    const [loadingOverlayEnabled, setLoadingOverlayEnabled] = useState(true);\n\n    const refreshAuthUserContext = async ({\n      skipLoadingOverlay = false,\n    } = {}) => {\n      if (skipLoadingOverlay) {\n        setLoadingOverlayEnabled(false);\n      }\n\n      const contextData = await get(\n        routes.api_authorization_user_path(authUserParams(props)),\n        { onError: ErrorRenderer.alert },\n      ).finally(() => setLoadingOverlayEnabled(true));\n\n      if (contextData) {\n        setContextValue(contextData);\n      }\n    };\n\n    return (\n      // TODO: RS-19294\n      // eslint-disable-next-line react/jsx-no-constructed-context-values\n      <AuthUserContext.Provider\n        value={{ ...contextValue, refreshAuthUserContext }}\n      >\n        <LoadingOverlay visible={loadingOverlayEnabled && loading} />\n        <WrappedComponent {...props} />\n      </AuthUserContext.Provider>\n    );\n  }\n\n  WithAuthUserContext.displayName = `withAuthUserContext(${getDisplayName(WrappedComponent)})`;\n\n  return WithAuthUserContext;\n}\n\nexport default withAuthUserContext;\n","/* eslint-disable no-param-reassign */\nimport { createSlice } from '@reduxjs/toolkit';\n\nconst initialState = {\n  isActive: true,\n};\n\nexport const projectDetailsSlice = createSlice({\n  name: 'projectDetails',\n  initialState,\n  reducers: {\n    ADD_WORKSPACE_ATTRIBUTES: (state, action) => {\n      const { attributes } = action.payload;\n\n      state.isActive = !!attributes?.isActive;\n    },\n  },\n});\n\nexport const { ADD_WORKSPACE_ATTRIBUTES } = projectDetailsSlice.actions;\n\nexport const projectDetailsSliceReducer = projectDetailsSlice.reducer;\n","import { apiSlice } from 'api/base_slice';\nimport { columnConfigurationSliceReducer } from 'store/slices/column_configuration_slice';\nimport { segmentsSliceReducer } from 'store/slices/segments_slice';\nimport { participantProfileSliceReducer } from 'store/slices/participant_profile_slice';\nimport { projectDetailsSliceReducer } from 'store/slices/project_details_slice';\n\nimport { projectWorkspaceSlice } from 'researcher/project_workspace/slice';\n\nexport const rootReducer = {\n  [apiSlice.reducerPath]: apiSlice.reducer,\n  columnConfiguration: columnConfigurationSliceReducer,\n  participantProfile: participantProfileSliceReducer,\n  projectDetails: projectDetailsSliceReducer,\n  projectWorkspace: projectWorkspaceSlice.reducer,\n  segments: segmentsSliceReducer,\n};\n","import { configureStore } from '@reduxjs/toolkit';\nimport { setupListeners } from '@reduxjs/toolkit/query/react';\n\nimport { apiSlice } from '../api/base_slice';\n\nimport { rootReducer } from './root_reducer';\n\nconst isDevelopmentEnv = process.env.NODE_ENV === 'development';\n\n// When unit-testing there are times when a component uses Redux state populated from\n// sibling or parent actions.\n// This is to allow our specs to optionally pass in a preloaded state and avoid the overhead of\n// manually dispatching actions w/in the spec or mocking the store itself.\nexport const buildStore = (preloadedState = {}) =>\n  configureStore({\n    reducer: rootReducer,\n    middleware: (getDefaultMiddleware) =>\n      getDefaultMiddleware({\n        // disable for test env to speed up specs (always disabled for prod)\n        // https://redux-toolkit.js.org/api/getDefaultMiddleware#api-reference\n        actionCreatorCheck: isDevelopmentEnv,\n        immutableCheck: isDevelopmentEnv,\n        serializableCheck: isDevelopmentEnv,\n      }).concat(apiSlice.middleware),\n    preloadedState,\n  });\n\nconst store = buildStore();\n\nsetupListeners(store.dispatch);\n\nexport default store;\n","import {\n  useState,\n  useRef,\n  useMemo,\n  useCallback,\n  useEffect,\n  type RefObject,\n} from 'react';\nimport { isServer } from 'lib/ssr_utils';\nimport { useSidebarMobileBreakpoint } from 'hooks/use_sidebar_mobile_breakpoint';\n\nconst SidebarOpenDebounceMS = 200;\nconst SidebarCloseDebounceMS = 125;\n\ntype UseIsSidebarOpenArgs = {\n  isNavItemHovered: boolean;\n  isSidebarHovered: boolean;\n  sidebarRef: RefObject<HTMLElement | null>;\n};\n\nexport function useIsSidebarOpen({\n  sidebarRef,\n  isNavItemHovered,\n  isSidebarHovered,\n}: UseIsSidebarOpenArgs) {\n  const [isOpen, setIsOpen] = useState(false);\n  const [isTransitioning, setIsTransitioning] = useState(false);\n\n  const openSidebarTimeout = useRef<ReturnType<typeof setTimeout> | null>(null);\n  const closeSidebarTimeout = useRef<ReturnType<typeof setTimeout> | null>(\n    null,\n  );\n\n  const isMobile = useSidebarMobileBreakpoint();\n  const isReducedMotion = useMemo(() => {\n    if (isServer) return true;\n\n    return window.matchMedia('(prefers-reduced-motion: reduce)').matches;\n  }, []);\n\n  const openSidebar = useCallback(() => {\n    if (isOpen || isMobile) return;\n\n    if (openSidebarTimeout.current) {\n      clearTimeout(openSidebarTimeout.current);\n    }\n\n    if (closeSidebarTimeout.current) {\n      clearTimeout(closeSidebarTimeout.current);\n    }\n\n    openSidebarTimeout.current = setTimeout(() => {\n      if (!isReducedMotion) setIsTransitioning(true);\n\n      setIsOpen(true);\n    }, SidebarOpenDebounceMS);\n  }, [isMobile, isOpen, isReducedMotion]);\n\n  const closeSidebar = useCallback(() => {\n    if (!isOpen) return;\n\n    if (openSidebarTimeout.current) {\n      clearTimeout(openSidebarTimeout.current);\n    }\n\n    if (closeSidebarTimeout.current) {\n      clearTimeout(closeSidebarTimeout.current);\n    }\n\n    closeSidebarTimeout.current = setTimeout(() => {\n      if (!isReducedMotion) setIsTransitioning(true);\n\n      setIsOpen(false);\n    }, SidebarCloseDebounceMS);\n  }, [isOpen, isReducedMotion]);\n\n  // This effect sets transitioning state back to false once the css transition has completed (via open or close)\n  useEffect(() => {\n    if (!sidebarRef.current) return undefined;\n\n    const { current: sidebar } = sidebarRef;\n\n    function handleTransitionEnd(event: TransitionEvent) {\n      if (event.propertyName !== 'width') return;\n\n      setIsTransitioning(false);\n    }\n\n    sidebar.addEventListener('transitionend', handleTransitionEnd);\n\n    return () => {\n      sidebar.removeEventListener('transitionend', handleTransitionEnd);\n    };\n  }, [sidebarRef]);\n\n  useEffect(() => {\n    if (isTransitioning) return;\n\n    if (isNavItemHovered) openSidebar();\n    if (!isNavItemHovered && !isSidebarHovered) closeSidebar();\n  }, [\n    closeSidebar,\n    isNavItemHovered,\n    isSidebarHovered,\n    isTransitioning,\n    openSidebar,\n  ]);\n\n  useEffect(() => {\n    setIsOpen(false);\n  }, [isMobile]);\n\n  return { isOpen, isTransitioning };\n}\n","import React, {\n  createContext,\n  useEffect,\n  useMemo,\n  useState,\n  type RefObject,\n  type ReactElement,\n} from 'react';\n\nimport { useIsSidebarOpen } from '../sidebar/hooks/use_is_sidebar_open';\n\nexport const SidebarContext = createContext<{\n  isOpen: boolean;\n  isTransitioning: boolean;\n  isRenderingOpen: boolean;\n  setIsNavItemHovered: React.Dispatch<React.SetStateAction<boolean>>;\n}>({\n  isOpen: false,\n  isTransitioning: false,\n  isRenderingOpen: false,\n  setIsNavItemHovered: () => {},\n});\n\nexport function SidebarContextProvider({\n  sidebarRef,\n  children,\n}: {\n  sidebarRef: RefObject<HTMLElement | null>;\n  children: ReactElement;\n}) {\n  const [isNavItemHovered, setIsNavItemHovered] = useState(false);\n  const [isSidebarHovered, setIsSidebarHovered] = useState(false);\n  const { isOpen, isTransitioning } = useIsSidebarOpen({\n    sidebarRef,\n    isNavItemHovered,\n    isSidebarHovered,\n  });\n\n  useEffect(() => {\n    if (!sidebarRef.current) return undefined;\n    const { current: sidebar } = sidebarRef;\n\n    function handleMouseEnter() {\n      setIsSidebarHovered(true);\n    }\n\n    function handleMouseLeave() {\n      setIsSidebarHovered(false);\n      setIsNavItemHovered(false);\n    }\n\n    sidebar.addEventListener('mouseenter', handleMouseEnter);\n    sidebar.addEventListener('mouseleave', handleMouseLeave);\n\n    return () => {\n      sidebar.removeEventListener('mouseenter', handleMouseEnter);\n      sidebar.removeEventListener('mouseleave', handleMouseLeave);\n    };\n  }, [sidebarRef]);\n\n  const contextValue = useMemo(\n    () => ({\n      isOpen,\n      isTransitioning,\n      isRenderingOpen: isOpen || isTransitioning,\n      setIsNavItemHovered,\n    }),\n    [isTransitioning, isOpen],\n  );\n\n  return (\n    <SidebarContext.Provider value={contextValue}>\n      {children}\n    </SidebarContext.Provider>\n  );\n}\n","// extracted by mini-css-extract-plugin\nvar _1 = \"TJi9zqadPTOyC5gz6BRu\";\nvar _2 = \"jHnNImjCVl9PvGMLs2wg\";\nvar _3 = \"JB4BkRvi_uTLHYXcQiJi\";\nvar _4 = \"ux2gkrWfKY27ZpqhxRo8\";\nvar _5 = \"K0jv5HLaqm8IdOuuUPZP\";\nvar _6 = \"PNcQrVL8GRhx2uV2JnDc\";\nvar _7 = \"k4Z4dVFkr45WyJsH8Jjj\";\nvar _8 = \"CfzV4WPD7dBdqYSoo3zJ\";\nvar _9 = \"xWlNHGUmAGfxDiaHCMMb\";\nvar _a = \"_PQr8FcZt7AYkpdesE4W\";\nvar _b = \"WGY9pgQZaDKH48nRGJAi\";\nvar _c = \"ghSRwZMPc8BUDh9B7RPr\";\nvar _d = \"ZF_hUaXPVReq1DAgQizJ\";\nvar _e = \"IASiXeOHWN0kvie4DWv9\";\nvar _f = \"C6oK68KR9JiskX06ocFo\";\nvar _10 = \"DW_HPJ0LyHgxgR3epmur\";\nvar _11 = \"KbWMn2iIgVPPqwRXLYmw\";\nvar _12 = \"cHFJeUAVz6JKDAAs_f7Y\";\nvar _13 = \"aYjbQ6OkPC_7SFBega6J\";\nexport { _1 as \"ApplySuccessCard__detail__date\", _2 as \"BillingInfoCard__column\", _3 as \"CopyToClipboard\", _4 as \"DataConsentNotice__content__preview__body\", _5 as \"MessageList__message__timestamp\", _6 as \"ParticipantProfile__participant-details__attribute-value\", _7 as \"ProjectCustomEmailSets\", _8 as \"ProjectListItem__status-date\", _9 as \"ProjectListing__detail\", _a as \"ProjectListing__details\", _b as \"TeamMemberInviterForm__section__invite-via-link\", _c as \"UnmoderatedTask__deadline\", _d as \"active\", _e as \"btn-link--neutral\", _f as \"btn-outline-secondary\", _10 as \"loadingBackground\", _11 as \"navigationItem\", _12 as \"participant-dashboard__project__info__status__string\", _13 as \"schedule-project-participant-page__time-slots\" }\n","import React, { useState, useEffect, useMemo } from 'react';\nimport type { MouseEvent as ReactMouseEvent } from 'react';\n\nimport classNames from 'classnames';\nimport { NavLink } from 'react-router';\nimport { Text } from '@user-interviews/ui-design-system';\nimport { useTracking } from 'react-tracking';\n\nimport { useSidebarContext } from '../sidebar/hooks/use_sidebar_context';\nimport { useIsActive } from './hooks/use_is_active';\n\n// eslint-disable-next-line local-rules/css_modules\nimport * as styles from './navigation_item.module.scss';\n\ntype LinkProps = {\n  href: string;\n  target?: string;\n};\n\ntype ReactRouterLinkProps = {\n  to: string;\n};\n\ntype SidebarNavigationItemProps = {\n  className?: string;\n  event?: string;\n  iconSrcBase: string;\n  label: string;\n  onHandleNavigating?: () => void;\n};\n\nexport function NavigationItem({\n  className,\n  event,\n  iconSrcBase,\n  label,\n  onHandleNavigating,\n  ...linkProps\n}:\n  | (SidebarNavigationItemProps & LinkProps)\n  | (SidebarNavigationItemProps & ReactRouterLinkProps)) {\n  const { isRenderingOpen, setIsNavItemHovered } = useSidebarContext();\n  const { trackEvent } = useTracking();\n  const isActive = useIsActive(\n    'href' in linkProps ? linkProps.href : linkProps.to,\n  );\n  const [isHovered, setIsHovered] = useState(false);\n\n  const SRCs = useMemo(\n    () => ({\n      active: `${iconSrcBase}-selected.svg`,\n      hovered: `${iconSrcBase}-hover.svg`,\n      default: `${iconSrcBase}.svg`,\n    }),\n    [iconSrcBase],\n  );\n\n  useEffect(() => {\n    Object.values(SRCs).forEach((src) => {\n      const img = new Image();\n      img.src = src;\n    });\n  }, [SRCs]);\n\n  const iconSrc = isActive\n    ? SRCs.active\n    : isHovered\n      ? SRCs.hovered\n      : SRCs.default;\n\n  function handleMouseEnter() {\n    setIsHovered(true);\n    setIsNavItemHovered(true);\n  }\n\n  function handleMouseLeave() {\n    setIsHovered(false);\n    setIsNavItemHovered(false);\n  }\n\n  const baseProps = {\n    'aria-label': label,\n    className: classNames(className, styles.navigationItem, {\n      [styles.active]: isActive,\n    }),\n    onMouseEnter: handleMouseEnter,\n    onFocus: handleMouseEnter,\n    onBlur: handleMouseLeave,\n    onMouseLeave: handleMouseLeave,\n  };\n\n  function handleClick(ev: ReactMouseEvent<HTMLAnchorElement>) {\n    // Check if user uses CMD or Ctrl + Click to open new tab and not trigger loading animation.\n    // This prevents having a persistent loading animation on current tab if no page refresh happens.\n    const isCmdorCtrlPressed = ev.metaKey || ev.ctrlKey;\n\n    if (onHandleNavigating && !isCmdorCtrlPressed) {\n      onHandleNavigating();\n    }\n\n    if (!event) return;\n\n    trackEvent({ event });\n  }\n\n  if ('href' in linkProps) {\n    return (\n      <a\n        aria-current={isActive ? 'page' : undefined}\n        href={linkProps.href}\n        target={linkProps.target}\n        onClick={(ev) => handleClick(ev)}\n        {...baseProps}\n      >\n        <img alt=\"\" src={iconSrc} />\n        {isRenderingOpen && <Text>{label}</Text>}\n      </a>\n    );\n  }\n\n  return (\n    <NavLink to={linkProps.to} onClick={handleClick} {...baseProps}>\n      <img alt=\"\" src={iconSrc} />\n      {isRenderingOpen && <Text>{label}</Text>}\n    </NavLink>\n  );\n}\n","import { useLocation } from 'react-router';\nimport * as routes from 'lib/routes';\n\n// We have two primary navigation elements: Projects and Participants.\n// However, the pages the fall under these two categories span a number of different URL schemes.\n// For now, rather than changing our existing URL schemes to match the information architecture,\n// this hook instead just maps these URLs to their corresponding primary nav element.\n// eg:\n//\n// Project nav items:\n// - pre-builder  /start\n// - builder      /projects/builder/:id\n// - workspace    /projects/:id\n//\n// Participant nav items:\n// - RPT /teams/:id/recruit-participants\n// - Hub /research-hub/participants\n// - Opt in forms /participant-populations/:id\n\nexport function useIsActive(path: string) {\n  const { pathname } = useLocation();\n\n  if (pathname === path) return true;\n\n  if (path === routes.account_dashboard_path()) {\n    const projectRoutes = [\n      /\\/start/,\n      /\\/projects\\/builder\\/\\d+/,\n      /\\/projects\\/\\d+/,\n      /\\/projects\\/review/,\n    ];\n    return projectRoutes.some((regExp) => pathname.match(regExp));\n  }\n\n  if (path === routes.search_participants_path()) {\n    const participantRoutes = [\n      /\\/teams\\/\\d+\\/recruit-participants/,\n      /\\/research-hub\\/participants/,\n      /\\/participant-populations\\/\\d+/,\n    ];\n\n    return participantRoutes.some((regExp) => pathname.match(regExp));\n  }\n\n  return false;\n}\n","import { createApi, fetchBaseQuery } from '@reduxjs/toolkit/query/react';\n\nimport * as rawTagTypes from './tag_types';\n\nconst tagTypes = Object.values(rawTagTypes);\n\nexport const apiSlice = createApi({\n  reducerPath: 'api',\n  baseQuery: fetchBaseQuery({ baseUrl: '' }),\n  tagTypes,\n  endpoints: () => ({}),\n});\n","import { z } from 'zod';\nimport * as routes from 'lib/routes';\nimport { apiSlice } from 'api/base_slice';\nimport { POPULATION_ATTRIBUTES_TAG } from 'api/tag_types';\nimport {\n  deserializeJSONApiResponse,\n  headersAndCredentials,\n  sortAlphabeticalByName,\n} from 'api/utils';\n\n// TODO: Update to use RSwag instead of explicitly declaring this\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nconst populationAttributesSchema = z.object({\n  data: z.array(\n    z.object({\n      id: z.string(),\n      attributes: z.object({\n        name: z.string(),\n        required: z.boolean(),\n        type: z.string(),\n        slug: z.string(),\n      }),\n      relationships: z.object({\n        options: z.object({\n          data: z.array(\n            z.object({\n              id: z.string(),\n            }),\n          ),\n        }),\n      }),\n      meta: z.object({\n        canDelete: z.boolean(),\n        canUpdate: z.boolean(),\n      }),\n    }),\n  ),\n  included: z\n    .array(\n      z.object({\n        id: z.string(),\n        type: z.literal('participantPopulationAttributeSelectOption'),\n        attributes: z.object({\n          description: z.string().nullable(),\n          isExclusive: z.boolean(),\n          participantPopulationAttributeId: z.number(),\n          position: z.number(),\n          name: z.string(),\n        }),\n      }),\n    )\n    .optional(),\n});\n\nexport type PopulationAttributesRawResponse = z.infer<\n  typeof populationAttributesSchema\n>;\nexport type PopulationAttributesAPIResponse = ReturnType<\n  typeof sortAlphabeticalByName<ReturnType<typeof deserializeJSONApiResponse>>\n>;\n\ntype DeletePopulationAttributeParams = {\n  participantPopulationId: string;\n  participantPopulationAttributeId: string;\n};\n\ntype UpdatePopulationAttributeParams = {\n  participantPopulationId: string;\n  participantPopulationAttributeId: string;\n  patch: string;\n};\n\ntype CreatePopulationAttributeParams = {\n  participantPopulationId: string;\n  name: string;\n  type: string;\n};\n\nexport const populationAttributesApi = apiSlice.injectEndpoints({\n  endpoints: (builder) => ({\n    getPopulationAttributes: builder.query<\n      PopulationAttributesAPIResponse,\n      string\n    >({\n      query: (participantPopulationId: string) =>\n        routes.api_participant_population_attributes_path(\n          participantPopulationId,\n        ),\n      providesTags: [POPULATION_ATTRIBUTES_TAG],\n      transformResponse: (\n        response: PopulationAttributesRawResponse,\n      ): PopulationAttributesAPIResponse =>\n        sortAlphabeticalByName(deserializeJSONApiResponse(response)),\n    }),\n    deletePopulationAttribute: builder.mutation<\n      void,\n      DeletePopulationAttributeParams\n    >({\n      query: ({\n        participantPopulationId,\n        participantPopulationAttributeId,\n      }) => ({\n        url: routes.api_participant_population_attribute_path(\n          participantPopulationId,\n          participantPopulationAttributeId,\n        ),\n        method: 'DELETE',\n        ...headersAndCredentials(),\n      }),\n      invalidatesTags: [POPULATION_ATTRIBUTES_TAG],\n    }),\n    updatePopulationAttribute: builder.mutation<\n      PopulationAttributesRawResponse,\n      UpdatePopulationAttributeParams\n    >({\n      query: ({\n        participantPopulationId,\n        participantPopulationAttributeId,\n        ...patch\n      }) => ({\n        url: routes.api_participant_population_attribute_path(\n          participantPopulationId,\n          participantPopulationAttributeId,\n        ),\n        method: 'PATCH',\n        body: {\n          data: {\n            attributes: patch,\n          },\n        },\n        ...headersAndCredentials(),\n      }),\n      invalidatesTags: [POPULATION_ATTRIBUTES_TAG],\n    }),\n    createPopulationAttribute: builder.mutation<\n      PopulationAttributesRawResponse,\n      CreatePopulationAttributeParams\n    >({\n      query: ({ participantPopulationId, name, type }) => {\n        const params = {\n          data: {\n            attributes: {\n              name,\n              type,\n            },\n          },\n        };\n\n        return {\n          url: routes.api_participant_population_attributes_path(\n            participantPopulationId,\n          ),\n          method: 'POST',\n          body: params,\n          ...headersAndCredentials(),\n        };\n      },\n      invalidatesTags: [POPULATION_ATTRIBUTES_TAG],\n    }),\n  }),\n  overrideExisting: 'throw',\n});\n\nexport const {\n  useCreatePopulationAttributeMutation,\n  useDeletePopulationAttributeMutation,\n  useGetPopulationAttributesQuery,\n  useUpdatePopulationAttributeMutation,\n} = populationAttributesApi;\n","import { withPageProviders } from 'hoc/with_page_providers';\nimport withAuthUserContext from 'hoc/with_auth_user_context';\nimport { Sidebar } from './sidebar';\n\nexport const SidebarEntrypoint = withPageProviders(\n  withAuthUserContext(Sidebar),\n);\n","import { withPageProviders } from 'hoc/with_page_providers';\nimport withAuthUserContext from 'hoc/with_auth_user_context';\nimport { Footer } from './footer';\n\nexport const FooterEntrypoint = withPageProviders(withAuthUserContext(Footer));\n","import { registerComponent } from 'lib/react_on_rails';\n\nimport { SidebarEntrypoint } from 'components/page/components/sidebar/sidebar_entrypoint';\nimport { FooterEntrypoint } from 'components/page/components/footer/footer_entrypoint';\n\n// eslint-disable-next-line local-rules/css_modules\nimport 'common/error_pages/error_pages.scss';\n\nregisterComponent('Sidebar', SidebarEntrypoint);\nregisterComponent('Footer', FooterEntrypoint);\n","import {\n  createEntityAdapter,\n  createSelector,\n  createSlice,\n  isAnyOf,\n} from '@reduxjs/toolkit';\n\nimport { participantsApi } from 'api/participants';\nimport { populationAttributesApi } from 'api/population_attributes';\n\nimport * as profileConstants from 'participant/participant_profile/constants';\n\nconst matchParticipantFetched = isAnyOf(\n  participantsApi.endpoints.getParticipant.matchFulfilled,\n);\nconst matchPopulationAttributesFetched = isAnyOf(\n  populationAttributesApi.endpoints.getPopulationAttributes.matchFulfilled,\n);\n\nconst populationAttributesAdapter = createEntityAdapter({\n  selectId: (attribute) => attribute.slug,\n});\n\nexport const participantProfileSlice = createSlice({\n  name: 'participantProfile',\n  initialState: {\n    dirtyPages: [],\n    participant: undefined,\n    populationAttributes: populationAttributesAdapter.getInitialState(),\n    redirectTo: undefined,\n  },\n  reducers: {\n    SET_DIRTY_PAGE: (state, action) => {\n      state.dirtyPages = [\n        ...new Set([...state.dirtyPages, action.payload.pageName]),\n      ];\n    },\n    SET_REDIRECT_TO: (state, action) => {\n      state.redirectTo = action.payload.redirectTo;\n    },\n  },\n  extraReducers(builder) {\n    builder.addMatcher(matchParticipantFetched, (state, action) => ({\n      ...state,\n      participant: action.payload,\n    }));\n    builder.addMatcher(matchPopulationAttributesFetched, (state, action) => {\n      populationAttributesAdapter.setAll(\n        state.populationAttributes,\n        action.payload,\n      );\n    });\n  },\n});\n\nexport const { SET_DIRTY_PAGE, SET_REDIRECT_TO } =\n  participantProfileSlice.actions;\n\nexport const participantProfileSliceReducer = participantProfileSlice.reducer;\n\nexport const selectParticipant = (state) =>\n  state.participantProfile.participant;\nexport const selectRedirectTo = (state) => state.participantProfile.redirectTo;\n\nexport const {\n  selectAll: selectAllAttributes,\n  selectById: selectAttributeBySlug,\n  selectEntities: selectAttributes,\n} = populationAttributesAdapter.getSelectors(\n  (state) => state.participantProfile.populationAttributes,\n);\n\nexport const selectAttributeBySlugWithMetadata = createSelector(\n  [selectAttributeBySlug],\n  (attribute) => ({\n    ...attribute,\n    defaultOptionName:\n      profileConstants.attributeSlugsToDefaultOptionNames[attribute.slug],\n    inputLabel:\n      profileConstants.attributeSlugsToInputLabels[attribute.slug] ||\n      attribute.name,\n  }),\n);\n\nexport const selectEmploymentAttribute = (state) =>\n  selectAttributeBySlugWithMetadata(\n    state,\n    profileConstants.EMPLOYMENT_STATUS_SLUG,\n  );\n\nconst selectDirtyPages = (state) => state.participantProfile.dirtyPages;\n\nexport const selectPageIsDirty = createSelector(\n  [selectDirtyPages, (_, pageName) => pageName],\n  (dirtyPages, pageName) => dirtyPages.includes(pageName),\n);\n","import { useCallback } from 'react';\nimport { useOwnershipContext } from 'components/owner_boundary/context';\nimport { useRailsContext } from './use_rails_context';\n\nconst errorMessages = new Map<string, number>();\n\nexport function useErrorLogger() {\n  const ctx = useRailsContext();\n  const expirationSeconds =\n    ctx?.env.APPSIGNAL_JS_ERROR_LOG_EXPIRATION_SECONDS ?? 30;\n\n  const { logError } = useOwnershipContext();\n\n  return useCallback(\n    (error: Error) => {\n      const lastLoggedAt = errorMessages.get(error.message);\n      const now = Date.now();\n\n      if (!lastLoggedAt || now - lastLoggedAt > expirationSeconds * 1000) {\n        logError(error);\n        errorMessages.set(error.message, Date.now());\n      }\n    },\n    [expirationSeconds, logError],\n  );\n}\n","// extracted by mini-css-extract-plugin\nvar _1 = \"Z5DmoCIG5yo9JljcboTA\";\nvar _2 = \"PmkMvIZViFGtxI01RESJ\";\nvar _3 = \"XSHRkeJML_qa75MgKJbX\";\nvar _4 = \"g_U2RoctRopmrOk18lzb\";\nexport { _1 as \"accountSettingsPopover\", _2 as \"link\", _3 as \"teamLink\", _4 as \"text\" }\n","import React, { forwardRef, type MouseEvent } from 'react';\nimport classNames from 'classnames';\nimport { useTracking } from 'react-tracking';\nimport { Flex } from '@user-interviews/ui-design-system';\nimport * as routes from 'lib/routes';\nimport { trackingEvents } from 'lib/analytics';\n\nimport { useAuthUserContext } from 'hooks/use_auth_user_context';\nimport { TeamActionTypes } from 'lib/generated_constants/team_action_types';\n\nimport { Authorization } from 'common/authorization';\n\n// eslint-disable-next-line local-rules/css_modules, local-rules/no_leaky_css_modules\nimport * as accountSettingsNavigationItemStyles from '../../account_navigation_item.module.scss';\n// eslint-disable-next-line local-rules/css_modules\nimport * as styles from './account_menu_popover.module.scss';\n\nconst {\n  NAVIGATION_ACCOUNT_CLICKED,\n  NAVIGATION_SIGN_OUT_CLICKED,\n  NAVIGATION_TEAMS_CLICKED,\n} = trackingEvents;\n\nexport const AccountMenuPopover = forwardRef<HTMLDivElement>((_props, ref) => {\n  const { trackEvent } = useTracking();\n  const authUserContext = useAuthUserContext();\n\n  if (!authUserContext?.account) return null;\n\n  const { account, team } = authUserContext;\n\n  function handleLinkClick({ currentTarget }: MouseEvent<HTMLAnchorElement>) {\n    const trackingEvent = currentTarget.dataset.event;\n    if (!trackingEvent) return;\n\n    trackEvent({ event: trackingEvent });\n  }\n\n  return (\n    <div\n      className={\n        accountSettingsNavigationItemStyles.accountMenuPopoverContainer\n      }\n      ref={ref}\n    >\n      <Flex\n        alignItems=\"flex-start\"\n        className={classNames(styles.accountSettingsPopover)}\n        container\n        flexDirection=\"column\"\n      >\n        {team && (\n          <Authorization to={TeamActionTypes.VIEW_MEMBERS}>\n            <a\n              className={styles.link}\n              data-event={NAVIGATION_TEAMS_CLICKED}\n              href={routes.team_members_path()}\n              onClick={handleLinkClick}\n            >\n              Team settings\n            </a>\n          </Authorization>\n        )}\n        <a\n          className={styles.link}\n          data-event={NAVIGATION_ACCOUNT_CLICKED}\n          href={routes.edit_account_path(account.id)}\n          onClick={handleLinkClick}\n        >\n          Account settings\n        </a>\n        <a\n          className={styles.link}\n          data-event={NAVIGATION_SIGN_OUT_CLICKED}\n          data-method=\"delete\"\n          href=\"/accounts/signout\"\n          onClick={handleLinkClick}\n        >\n          Sign out\n        </a>\n      </Flex>\n    </div>\n  );\n});\n","// extracted by mini-css-extract-plugin\nvar _1 = \"ifHaWxzJApaaaXMQhaTN\";\nvar _2 = \"q_JAcmqf3jguxMUeNY2x\";\nvar _3 = \"Eilkb4fe8vxD3KkSBzo7\";\nvar _4 = \"LEac1e_DBMe4gPnVSgzf\";\nvar _5 = \"sVMmOOVIR1bZUvrJzxY2\";\nvar _6 = \"cHtrnXP35bF4gkbtPk0h\";\nvar _7 = \"t23wNS_GUoYISAyrPpBN\";\nvar _8 = \"gzgkzMNxCN6C3P5v6yaQ\";\nvar _9 = \"lQCYBtzgu7f0AU_9xRqR\";\nvar _a = \"BnI3yTU8FBuiG4dKRKYe\";\nvar _b = \"_EOjKws8kZOmafrjGJg7\";\nvar _c = \"ijdPHe4_2hyvE21Uit6y\";\nvar _d = \"IZlCPYN_dkKUeVY0df79\";\nvar _e = \"SR1QXWkIibsPWrq4Ec7u\";\nvar _f = \"x1v2t1BqrwSQ88P2Leyx\";\nvar _10 = \"XTeiZnwiDBBXGhKZ1A_Q\";\nvar _11 = \"W0vFLGpQWSRIpeTdPeGO\";\nvar _12 = \"wRIfQ3b53v1puSENjkVB\";\nvar _13 = \"CVRSr7TvXfHmouIOi1HR\";\nvar _14 = \"b2jEh17oobkfohB0ZJi_\";\nvar _15 = \"PW1VRyyHa3R9CjtVgV6a\";\nvar _16 = \"ohuJKe1pDDnppn93itwP\";\nvar _17 = \"UUKUDQBv0qTP2qEhpgta\";\nvar _18 = \"Ot5by4Zm3t1nt8d52fKL\";\nexport { _1 as \"ApplySuccessCard__detail__date\", _2 as \"BillingInfoCard__column\", _3 as \"CopyToClipboard\", _4 as \"DataConsentNotice__content__preview__body\", _5 as \"MessageList__message__timestamp\", _6 as \"ParticipantProfile__participant-details__attribute-value\", _7 as \"ProjectCustomEmailSets\", _8 as \"ProjectListItem__status-date\", _9 as \"ProjectListing__detail\", _a as \"ProjectListing__details\", _b as \"TeamMemberInviterForm__section__invite-via-link\", _c as \"UnmoderatedTask__deadline\", _d as \"accountDetails\", _e as \"accountMenuPopoverContainer\", _f as \"accountNavItemText\", _10 as \"accountSettingsNavigationItem\", _11 as \"accountSettingsNavigationItemContainer\", _12 as \"avatar\", _13 as \"boldedText\", _14 as \"btn-link--neutral\", _15 as \"btn-outline-secondary\", _16 as \"participant-dashboard__project__info__status__string\", _17 as \"schedule-project-participant-page__time-slots\", _18 as \"text\" }\n","import type { MouseEvent as ReactMouseEvent } from 'react';\n\nimport React, { useEffect, useRef, useState } from 'react';\nimport { Text, TEXT_PROPS } from '@user-interviews/ui-design-system';\nimport { useTracking } from 'react-tracking';\n\nimport { trackingEvents } from 'lib/analytics';\n\nimport { useAuthUserContext } from 'hooks/use_auth_user_context';\n\nimport { useSidebarMobileBreakpoint } from 'hooks/use_sidebar_mobile_breakpoint';\nimport { useSidebarContext } from '../../hooks/use_sidebar_context';\nimport { AccountMenuPopover } from './components/account_menu_popover';\n\n// eslint-disable-next-line local-rules/css_modules\nimport * as styles from './account_navigation_item.module.scss';\n\nconst { NAVIGATION_ACCOUNT_POPOVER_OPENED } = trackingEvents;\n\nexport function AccountNavigationItem() {\n  const { trackEvent } = useTracking();\n  const ref = useRef<HTMLDivElement>(null);\n  const { isRenderingOpen, setIsNavItemHovered } = useSidebarContext();\n  const isMobile = useSidebarMobileBreakpoint();\n  const [isAccountMenuOpen, setIsAccountMenuOpen] = useState(false);\n  const authUserContext = useAuthUserContext();\n\n  useEffect(() => {\n    if (isRenderingOpen) return;\n\n    setIsAccountMenuOpen(false);\n  }, [isRenderingOpen]);\n\n  useEffect(() => {\n    function handleDocumentClick(event: MouseEvent) {\n      if (!ref.current) return;\n      const { clientX, clientY } = event;\n      const { top, bottom, left, right } = ref.current.getBoundingClientRect();\n\n      if (\n        clientX >= left &&\n        clientX <= right &&\n        clientY >= top &&\n        clientY <= bottom\n      )\n        return;\n\n      setIsAccountMenuOpen(false);\n    }\n\n    function addEventListener() {\n      window.addEventListener('click', handleDocumentClick);\n    }\n\n    function removeEventListener() {\n      window.removeEventListener('click', handleDocumentClick);\n    }\n\n    addEventListener();\n\n    return removeEventListener;\n  }, []);\n\n  function handlePopoverButtonClick(event: ReactMouseEvent) {\n    event.stopPropagation();\n    setIsAccountMenuOpen((prev) => !prev);\n  }\n\n  function handleMouseEnter() {\n    setIsNavItemHovered(true);\n  }\n\n  function handleMouseLeave() {\n    setIsNavItemHovered(false);\n  }\n\n  useEffect(() => {\n    if (!isAccountMenuOpen) return;\n\n    trackEvent({ event: NAVIGATION_ACCOUNT_POPOVER_OPENED });\n  }, [isAccountMenuOpen, trackEvent]);\n\n  if (!authUserContext?.account) return null;\n\n  const { account, organization } = authUserContext;\n  const isRenderingAccountMenu =\n    isAccountMenuOpen && (isRenderingOpen || isMobile);\n\n  return (\n    <div className={styles.accountSettingsNavigationItemContainer}>\n      <button\n        aria-label=\"open account menu\"\n        className={styles.accountSettingsNavigationItem}\n        type=\"button\"\n        onClick={handlePopoverButtonClick}\n        onFocus={handleMouseEnter}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n      >\n        <div className={styles.avatar}>\n          <span>{account.initials}</span>\n        </div>\n\n        {isRenderingOpen && (\n          <div className={styles.accountDetails}>\n            <Text className={styles.boldedText} size={TEXT_PROPS.size.sm}>\n              {account.fullName}\n            </Text>\n            {organization && (\n              <Text className={styles.text} size={TEXT_PROPS.size.sm}>\n                {organization.name}\n              </Text>\n            )}\n          </div>\n        )}\n      </button>\n      {isRenderingAccountMenu && <AccountMenuPopover ref={ref} />}\n    </div>\n  );\n}\n","// extracted by mini-css-extract-plugin\nvar _1 = \"GOtNPedALIgxJEGA5WKI\";\nvar _2 = \"bfLpZr2Gll2UzSE12qQ_\";\nvar _3 = \"xkGU3cvLGHrZhUtDe1_g\";\nvar _4 = \"ql7v321JNf2eCxRtYUOX\";\nvar _5 = \"cYvhDWWOpBjvIKrPy2rX\";\nvar _6 = \"ts3qwQY8yu8PnQCBayOA\";\nvar _7 = \"Vle68HDjZe4239MT898p\";\nvar _8 = \"GXuZdKLsqk7pzxiNFPce\";\nvar _9 = \"L3005TumQe0jN9S4et2g\";\nvar _a = \"afAFGGzd5i1JYG1KYhs4\";\nvar _b = \"JByjrMNXtursxRyO4Wk6\";\nvar _c = \"QFO8PDFPS5WY03w0XxQy\";\nvar _d = \"QOTnwtIOIdxn_QQZE0L8\";\nvar _e = \"W7h6R5cYtaPhbMVNuHJL\";\nvar _f = \"t2EkOKJAyRC2sJtGfCaQ\";\nvar _10 = \"yO_M6bb8Puc6XUD9skmm\";\nvar _11 = \"ZfEUB0JxyiPwMO96esDD\";\nvar _12 = \"k3fLPAhhtM7pNUCWP9S0\";\nvar _13 = \"oa5fjdCL9NS8BANEhjxQ\";\nvar _14 = \"r2khQ9dNmhqnCLt0lgQ5\";\nvar _15 = \"cBPRidm9bKMcNc6FT49U\";\nvar _16 = \"gVYnDGSxpZbIS2xRlkWm\";\nvar _17 = \"w_7XxcrTZPfV3tzW2BRL\";\nvar _18 = \"sp8XFlrb3u__HQCSh75j\";\nexport { _1 as \"ApplySuccessCard__detail__date\", _2 as \"BillingInfoCard__column\", _3 as \"CopyToClipboard\", _4 as \"DataConsentNotice__content__preview__body\", _5 as \"MessageList__message__timestamp\", _6 as \"ParticipantProfile__participant-details__attribute-value\", _7 as \"ProjectCustomEmailSets\", _8 as \"ProjectListItem__status-date\", _9 as \"ProjectListing__detail\", _a as \"ProjectListing__details\", _b as \"TeamMemberInviterForm__section__invite-via-link\", _c as \"UnmoderatedTask__deadline\", _d as \"btn-link--neutral\", _e as \"btn-outline-secondary\", _f as \"isOpen\", _10 as \"isTransitioning\", _11 as \"logo\", _12 as \"logoWrapper\", _13 as \"mobileLogo\", _14 as \"navLeft\", _15 as \"navRight\", _16 as \"participant-dashboard__project__info__status__string\", _17 as \"schedule-project-participant-page__time-slots\", _18 as \"sidebar\" }\n","import React, { forwardRef, type ForwardedRef } from 'react';\nimport classNames from 'classnames';\n\nimport * as routes from 'lib/routes';\nimport { trackingEvents } from 'lib/analytics/constants';\nimport { useAuthUserContext } from 'hooks/use_auth_user_context';\nimport { TeamActionTypes } from 'lib/generated_constants/team_action_types';\n\nimport { Authorization } from 'common/authorization';\nimport { NavigationItem } from '../navigation_item';\nimport { AccountNavigationItem } from './components/account_navigation_item';\nimport { useSidebarContext } from './hooks/use_sidebar_context';\n\n// eslint-disable-next-line local-rules/css_modules\nimport * as styles from './sidebar.module.scss';\n\nconst {\n  NAVIGATION_PARTICIPANTS_CLICKED,\n  NAVIGATION_PLANS_CLICKED,\n  NAVIGATION_PROJECTS_CLICKED,\n  NAVIGATION_SUPPORT_CLICKED,\n} = trackingEvents;\n\ntype SidebarProps = {\n  onHandlePageLoading?: () => void;\n};\n\nexport const Sidebar = forwardRef(\n  (\n    { onHandlePageLoading }: SidebarProps,\n    sidebarRef: ForwardedRef<HTMLDivElement>,\n  ) => {\n    const { isOpen, isTransitioning } = useSidebarContext();\n    const authContext = useAuthUserContext();\n\n    const isAccount = !!authContext.account;\n    const isStaff = !!authContext.user;\n    const rootPath = isAccount ? routes.account_dashboard_path() : '/staff';\n\n    return (\n      <div\n        className={classNames(\n          styles.sidebar,\n          { [styles.isOpen]: isOpen },\n          { [styles.isTransitioning]: isTransitioning },\n        )}\n        ref={sidebarRef}\n      >\n        <a href={rootPath}>\n          <img\n            alt=\"User Interview logo\"\n            className={styles.mobileLogo}\n            src=\"/images/ui-logo-white.svg\"\n          />\n        </a>\n\n        <nav aria-label=\"primary navigation\">\n          <div className={styles.navLeft}>\n            <div className={styles.logoWrapper}>\n              <a href={rootPath}>\n                <img\n                  alt=\"User Interview logo\"\n                  className={styles.logo}\n                  src={\n                    isOpen ? '/images/ui-logo-white.svg' : '/images/ui-icon.svg'\n                  }\n                />\n              </a>\n            </div>\n\n            {isAccount && (\n              <>\n                <NavigationItem\n                  event={NAVIGATION_PROJECTS_CLICKED}\n                  href={routes.account_dashboard_path()}\n                  iconSrcBase=\"/images/nav_icon_projects\"\n                  label=\"Projects\"\n                  onHandleNavigating={onHandlePageLoading}\n                />\n\n                <Authorization to={TeamActionTypes.SEARCH_PARTICIPANTS}>\n                  <NavigationItem\n                    event={NAVIGATION_PARTICIPANTS_CLICKED}\n                    href={routes.search_participants_path()}\n                    iconSrcBase=\"/images/nav_icon_participants\"\n                    label=\"Participants\"\n                    onHandleNavigating={onHandlePageLoading}\n                  />\n                </Authorization>\n              </>\n            )}\n\n            {isStaff && (\n              <NavigationItem\n                href=\"/staff\"\n                iconSrcBase=\"/images/nav_icon_participants\"\n                label=\"Staff\"\n              />\n            )}\n          </div>\n          <div className={styles.navRight}>\n            {isAccount && (\n              <>\n                {!authContext?.teamSubscription?.paidSubscription && (\n                  <Authorization to={TeamActionTypes.VIEW_BILLING}>\n                    <NavigationItem\n                      event={NAVIGATION_PLANS_CLICKED}\n                      href={routes.team_billing_url()}\n                      iconSrcBase=\"/images/nav_icon_explore_plans\"\n                      label=\"Explore plans\"\n                      onHandleNavigating={onHandlePageLoading}\n                    />\n                  </Authorization>\n                )}\n                <NavigationItem\n                  event={NAVIGATION_SUPPORT_CLICKED}\n                  href=\"/support\"\n                  iconSrcBase=\"/images/nav_icon_support\"\n                  label=\"Support\"\n                  target=\"_blank\"\n                />\n              </>\n            )}\n\n            <AccountNavigationItem />\n          </div>\n        </nav>\n      </div>\n    );\n  },\n);\n","import { useTracking } from 'react-tracking';\nimport { reactTrackingEvent } from 'lib/analytics';\nimport type { TrackingHook } from 'react-tracking';\n\n// Force the Track component to be synchronous\nexport type SyncTrackingHook = Omit<TrackingHook, 'Track'> & {\n  Track: React.ComponentType<{ children?: React.ReactNode }>;\n};\n\nexport const useTrackingWithDefaultDispatch = (\n  trackingData = {},\n): SyncTrackingHook =>\n  useTracking(trackingData, {\n    dispatch: reactTrackingEvent,\n  }) as SyncTrackingHook;\n","import * as routes from 'lib/routes';\n\nimport { apiSlice } from 'api/base_slice';\n\nimport { POPULATION_INVITE_FILTERS_TAG } from 'api/tag_types';\nimport { deserializeJSONApiResponse, headersAndCredentials } from 'api/utils';\n\nexport const populationInviteFiltersApi = apiSlice.injectEndpoints({\n  endpoints: (builder) => ({\n    createInviteFilter: builder.mutation({\n      query: ({ populationId, attributes }) => ({\n        url: routes.api_participant_population_invite_filters_path({\n          participant_population_id: populationId,\n        }),\n        method: 'POST',\n        body: {\n          data: { attributes },\n        },\n        ...headersAndCredentials(),\n      }),\n      invalidatesTags: [POPULATION_INVITE_FILTERS_TAG],\n    }),\n    getInviteFilter: builder.query({\n      query: ({ populationId, id }) =>\n        routes.api_participant_population_invite_filter_path(id, {\n          participant_population_id: populationId,\n        }),\n      providesTags: (_result, _error, { id }) => [\n        { type: POPULATION_INVITE_FILTERS_TAG, id },\n      ],\n      transformResponse: deserializeJSONApiResponse,\n    }),\n    updateInviteFilter: builder.mutation({\n      query: ({ populationId, id, attributes }) => ({\n        url: routes.api_participant_population_invite_filter_path(id, {\n          participant_population_id: populationId,\n        }),\n        method: 'PATCH',\n        body: {\n          data: { attributes },\n        },\n        ...headersAndCredentials(),\n      }),\n      invalidatesTags: [POPULATION_INVITE_FILTERS_TAG],\n    }),\n  }),\n  overrideExisting: 'throw',\n});\n\nexport const {\n  useGetInviteFilterQuery,\n  useCreateInviteFilterMutation,\n  useUpdateInviteFilterMutation,\n} = populationInviteFiltersApi;\n"],"names":["firstNameAccessor","lastNameAccessor","phoneNumberAccessor","timezoneAccessor","sourceTypeAccessor","participantLabelsAccessor","createdAtAccessor","daysSinceInvitedAccessor","lastBulkEmailAccessor","daysSinceAppliedAccessor","daysSinceParticipatedAccessor","totalIncentivesEarnedAccessor","unsubscribedAccessor","populationAttributeAccessorPrefix","buildColumns","canViewPii","columnOrder","hiddenColumns","maxIncentiveYear","minIncentiveYear","populationAttributes","hiddenColumnsLookUp","buildHiddenColumnsLookUp","populationAttributesLookUp","buildPopulationAttributeColumnsLookUp","baseColumnLookUp","buildHubDefaultColumnsLookUp","columnMap","Map","order","length","completeColumnOrder","buildHubDefaultColumnOrder","columns","forEach","columnAccessor","column","get","push","yearlyIncentiveAccessors","populationAttributeAccessors","lookup","hiddenColumn","set","accessor","Header","hidden","id","meta","nonEditableMetaData","buildYearlyIncentiveColumnsLookUp","lookUp","populationAttribute","editable","name","yearlyIncentiveYears","year","missingPopulationAttributes","includes","canDelete","canUpdate","map","rearrangeColumnOrder","activeAccessor","overAccessor","reorderColumns","activeColumnIndex","indexOf","activeColumn","splice","spliceIndex","updateHiddenColumns","index","years","currentYear","MEDIA_BREAKPOINT_LG","MEDIA_BREAKPOINT_MD","MEDIA_BREAKPOINT_SM","MEDIA_BREAKPOINT_XS","mediaQuery","mediaQueryList","useMemo","isServer","window","matchMedia","_useState2","useState","matches","mediaQueryMatches","setMediaQueryMatches","handleMediaQueryChange","useCallback","useEffect","addEventListener","addListener","removeEventListener","removeListener","useSidebarMobileBreakpoint","useMediaQuery","FILTER_KEYS","email","created_at","first_name","labels","last_applied_at","last_invited_at","last_participated_at","last_name","opt_in_form","phone_number","project_participation","source","yearly_payment","unsubscribed","getParamKey","generateUUID","getDefaultParams","isNotSetOperand","key","orIsNotSet","defaultFilterRuleOperand","operands","type","defaultLabelOperand","PARTICIPANT_LABEL_OPERANDS","defaultBooleanOperand","FIELD_FILTER_OPERANDS","defaultActivityStatDateOperand","ACTIVITY_STAT_FILTER_OPERANDS","defaultDecimalOperand","INCENTIVE_OPERANDS","defaultIntegerOperand","defaultStringOperand","standardFilters","availableOperands","defaultFilterRuleShape","activityStat","field","operand","params","participantPopulationAttributeId","PROJECT_OPERANDS","addRowLabel","OPT_IN_FORM_OPERANDS","string","integer","boolean","date","isSetOperand","decimal","buildFilterList","attributes","attribute","defaultAttributeFilterRuleOperand","ATTRIBUTE_FILTER_OPERANDS","POPULATION_ATTRIBUTE_IS_NOT_SET_OPERANDS","POPULATION_ATTRIBUTE_IS_SET_OPERANDS","createPopulationAttributeFilter","_objectSpread","defaultOnError","error","defaultOnSuccess","FormatResponse","jsonApi","buildMakeRequest","method","setLoading","trackEvent","async","url","data","onSuccess","onError","start","performance","now","Http","call","end","pageLocation","location","pathname","replace","event","request_url","timeSpent","useHttp","loading","useTracking","dispatch","reactTrackingEvent","delete","patch","post","put","useSidebarContext","useContext","SidebarContext","transformResponse","response","sort","a","b","label","localeCompare","raw","value","populationLabelsApi","apiSlice","injectEndpoints","endpoints","builder","getPopulationLabels","query","participant_population_id","routes","providesTags","POPULATION_LABELS_TAG","bulkPopulationLabels","mutation","operations","body","headersAndCredentials","invalidatesTags","overrideExisting","useGetPopulationLabelsQuery","useBulkPopulationLabelsMutation","projectsApi","getProject","projectId","include","merge","deserializeJSONApiResponse","invalidLaunchMessages","invalidLaunchProps","firstProjectId","canEdit","_result","_error","PROJECT_TAG","createProject","updateProject","skipProjectInvalidation","PROJECT_COST_BREAKDOWN_TAG","PROJECT_EXPECTED_COST_DETAILS_TAG","PROJECT_PAYMENT_METHODS_TAG","PROJECT_DEMOGRAPHIC_RULES_TAG","PARTICIPANT_MANAGEMENT_SHORTLISTED_PARTICIPANTS_TAG","PROJECT_AVAILABILITY_SETTINGS_TAG","deleteProject","useGetProjectQuery","useCreateProjectMutation","useUpdateProjectMutation","useDeleteProjectMutation","ACTIVITY_STEP","DETAILS_STEP","EXPERIENCE_STEP","RECRUITMENT_STEP","SCHEDULING_DRAWER","PREPARATION_INSTRUCTIONS_DRAWER","RECRUITMENT_CRITERIA_DRAWER","SCREENER_SURVEY_DRAWER","INTERNAL_TITLE_DESCRIPTION_MODAL","URL_SECURED_REGEX","TRACKING_ID","VALID_TRACKING_ID_REGEX","COMPENSATION_TYPE_OTHER","CASH_COMPENSATION_OPTION","VISA_GIFT_CARD_COMPENSATION_OPTION","ALL_THEY_PAY_COMPENSATION_OPTIONS","THEY_PAY_IN_PERSON_DEFAULT_COMPENSATION","THEY_PAY_DEFAULT_COMPENSATION","THEY_PAY_COMPENSATION_OPTION_VALUES","THEY_PAY_COMPENSATION_IN_PERSON_OPTION_VALUES","TOAST_PROJECT_UPDATE_SUCCESS","MATCH_HANDLERS","MATCH_TYPES","ANY","permissions","some","bind","ALL","every","config","_config$matchType2","matchType","undefined","Error","Object","keys","context","AuthUserContext","authorization","checkAuthorization","_config$matchType","to","notTo","hasAllowlist","hasBlocklist","authorize","target","permissionsArray","concat","checkPermissions","permission","authorizationList","auth","ProjectWorkspaceContext","createContext","ProjectWorkspaceProvider","children","connectedCalendarDetails","serverProject","authUserContext","useAuthUserContext","_useToast","useToast","dismissMessage","messages","setMessage","Track","eventData","project_id","account","account_id","user","user_id","contextValue","setToastMessage","React","Provider","Toast","autoDismiss","onToastClosed","useProjectWorkspaceContext","propTypes","connectedCalendarDetailsPropType","isRequired","matchPopulationAttributesFetched","isAnyOf","populationAttributesApi","getPopulationAttributes","matchFulfilled","matchAccountHubConfigurationsFetched","accountHubConfigurationsApi","getAccountHubConfigurations","columnConfigurationSlice","createSlice","initialState","reducers","HIDE_ALL_COLUMNS","state","action","columnAccessors","payload","REORDER_COLUMNS","_action$payload","currentColumnOrder","reorderedColumns","SHOW_ALL_COLUMNS","TOGGLE_HIDDEN_COLUMN","updatedHiddenColumns","extraReducers","addMatcher","settings","_columnConfigurationS","actions","columnConfigurationSliceReducer","reducer","dataFormatter","Jsona","ACCEPT_V2_HEADER","accept","headers","Accept","getCSRFToken","credentials","deserialize","deserializeJSONApiResponseWithMeta","parseJSONApiResponse","schema","parse","parseJSONApiResponseWithMeta","sortAlphabeticalByKey","objectArray","sortAlphabeticalByName","sortAlphabeticalByTitle","OwnershipContext","fallbackErrorLogger","console","OwnershipProvider","owner","appsignal","logError","sendError","useOwnershipContext","ownershipContext","HUB_INVITE_RULES_HEADER","PROJECT_INVITE_LIMIT_TITLE","PROJECT_INVITE_LIMIT_MIN","PROJECT_INVITE_LIMIT_MAX","PROJECT_INVITE_LIMIT_OUT_OF_RANGE_ERROR","PROJECT_INVITE_LIMIT_ENABLED_ERROR","PROJECT_INVITE_LIMIT_INPUT_LABEL","PROJECT_INVITE_LIMIT_ENABLED_LABEL","PROJECT_INVITE_LIMIT_TEXT","PROJECT_INVITE_LIMIT_LINK_TEXT","INVITE_FILTER_RULES_TITLE","PUBLISH_INVITE_RULES","PUBLISH_INVITE_RULES_SUCCESS_MESSAGE","PUBLISH_INVITE_RULES_ERROR_MESSAGE","UNSUBSCRIBED_PARTICIPANT_ALERT_MESSAGE","MULTI_TEAM_ORG_ALERT_MESSAGE","segmentsApi","createSegment","filterParams","participantPopulationId","teamId","populationPanelId","teamRoleId","filter_name","filterName","filters","team_role_id","population_panel_id","team_id","SEGMENTS_TAG","deleteSegment","populationId","segmentId","result","duplicateSegment","getSegments","updateSegment","useCreateSegmentMutation","useDeleteSegmentMutation","useDuplicateSegmentMutation","useGetSegmentsQuery","useUpdateSegmentMutation","participantPopulationOptInFormsApi","getParticipantPopulationOptInForms","createOptInForm","OPT_IN_FORMS_TAG","useGetParticipantPopulationOptInFormsQuery","useCreateOptInFormMutation","RailsContext","useRailsContext","RailsContextProvider","railsContext","_customContextSchema$","customContextSchema","env","request","uiState","STEPS_REQUIRED_FIELDS_SCHEMA","projectPayload","_buildProjectState","buildProjectState","isInPersonInterview","isOnlineInterview","isUnmoderatedTask","studyTypeId","fields","compensationMethodId","_projectPayload","_buildProjectState2","isPhoneInterview","isHubProject","matchProjectFetched","calculateStepCompletionPercentage","invalidCount","totalRequiredCount","Math","round","initializePrimaryForm","stepId","initializeForm","syncedValues","isValid","initializeStep","forms","primary","metrics","researchDesign","currentStepId","steps","projectWorkspaceSlice","formPrimaryRegister","defaultValues","formPrimarySyncState","values","isDraft","entries","step","requiredFields","requiredFieldsFn","filter","_projectWorkspaceSlic","rootSelector","projectWorkspace","stepsSelector","createSelector","currentStepSelector","_state$researchDesign","currentStepFormSelector","currentStep","stepMetricsSelector","_","_steps$stepId$metrics","completionPercentage","preferences","allowTentativeEvents","provider","tokenInvalid","tokenUpgradeRequested","adapter","createEntityAdapter","matchPopulationInviteFilterFetched","populationInviteFiltersApi","getInviteFilter","matchLabelsFetched","matchOptInFormsFetched","matchSegmentsFetched","matchTeamProjectsFetched","teamProjectsApi","getTeamProjects","appliedInitialState","filterFlags","filterKeys","filterRules","pendingInitialState","removedFilterKeys","applied","FILTER_RULE_APPLIED_SECTIONS","edit","inviteFilter","segment","pending","FILTER_RULE_PENDING_SECTIONS","create","getInitialState","optInForms","projects","segments","activeId","segmentsSlice","ADD_FILTER_RULE_PARAM","filterKey","filterRuleSection","filterRule","newParams","newFilter","CLEAR_FILTERS","CREATE_FILTER_RULE","_action$payload2","REMOVE_FILTER_RULE","_action$payload3","REMOVE_FILTER_RULE_PARAM","_action$payload4","filterParamKey","paramIndex","findIndex","param","newFilterRule","RESET_PENDING_FILTERS","SELECT_FILTER_RULE","_action$payload5","activeFilterKey","activeFilterIndex","SELECT_FILTER_RULE_OPERAND","_action$payload6","SET_ACTIVE_SEGMENT_ID","SET_APPLIED_FILTER_RULES","_action$payload7","buildFromServerFilterRules","section","appliedSectionLookup","SET_FILTER_RULE","_action$payload8","pendingFilterRule","SET_INVITE_FILTER_ATTRIBUTES","SET_PENDING_FILTER_RULES","_action$payload9","SET_PENDING_FROM_APPLIED","SET_PENDING_FROM_SEGMENT","_action$payload10","entities","TOGGLE_IS_NOT_SET_CHECKED","_action$payload11","isNotSetChecked","isSetChecked","TOGGLE_IS_SET_CHECKED","_action$payload12","UPDATE_FILTER_RULE_PARAM","_action$payload13","filterRuleKey","paramKey","paramValue","newParam","setAll","_adapter$getSelectors","getSelectors","selectAllLabels","selectAll","selectLabels","selectEntities","selectOptInForms","_adapter$getSelectors3","selectAllPopulationAttributes","_adapter$getSelectors4","selectIds","selectAllSegments","selectSegments","selectSegmentsByAccessLevel","privateSegments","sharedSegments","teamPermissionRoleId","organizationPermissionRoleId","selectActiveSegmentId","selectPendingSection","sectionKey","pendingSections","selectPersistedFilterRule","editAppliedFilterRulesSection","inviteFilterAppliedFilterRulesSection","segmentFilterAppliedRulesSection","selectSegmentRoles","roles","selectFilters","selectInviteFilter","selectAppliedInviteFilter","selectAppliedInviteFilterRules","selectInviteFilterRules","selectProjectInviteMultiplierOutOfRange","projectInviteMultiplier","projectInviteMultiplierEnabled","Number","isInteger","selectFilterOptions","custom","selectAllFiltersCount","selectActiveSegment","activeSegmentId","segmentsByIds","selectSegmentName","hasApplicableFilterRule","segmentsById","_segmentsSlice$action","segmentsSliceReducer","OPTIONAL_ROW_PARAM_KEYS","OR_IS_NOT_SET_PARAM_KEY","EMPTY_INCENTIVE_OPERANDS","INCENTIVE_IS_NOT_SET_OPERAND","INCENTIVE_IS_SET_OPERAND","INVITE_FILTER_HIDDEN_FIELDS","PII_HIDDEN_FIELDS","getIsInviteFilter","getKeylessParams","keylessParams","appliedFilterRules","reduce","acc","appliedFilterRule","jsonRule","match","getIncentiveFilterKey","getProjectFilterKey","getOptInFormFilterKey","getParticipantLabelFilterKey","appliedFilterKeys","appliedFilterFlags","orIsNotSetParams","keyedAppliedFilterRules","appliedFilterKey","isIsNotSetOperand","defaultOperand","getHasValueSet","ceiling","days","endAt","endDate","floor","ids","startAt","startDate","valueToCheck","toString","trim","hasValueSet","buildFilterRulesToApply","pendingFilterRules","preparePendingFilterRule","preparedRule","emptyParams","getRowParams","parsedParams","parsedParam","DopeBrowserRouter","StaticRouter","BrowserRouter","ACCESS_GRANTS_TAG","ACCOUNT_AVAILABILITY_SETTINGS_TAG","ACCOUNT_CHECKLIST_TAG","ACCOUNT_COLLABORATORS_TAG","ACCOUNT_HUB_CONFIGURATIONS","ACCOUNT_INTEGRATIONS_TAG","ACCOUNT_PROJECT_TASK_EVENTS_TAG","ACCOUNT_PROJECTS_TAG","ACCOUNT_SIGNUP_INFO_TAG","ACCOUNTS_TAG","ACCOUNT_TEAMS_TAG","BULK_EMAIL_TAG","COMMENTERS_TAG","COMMENTS_TAG","DATA_JOB_TAG","PROJECT_AVAILABILITY_RANGES_TAG","DEFAULT_SESSION_ROLES_TAG","DOPE_TABLE_COLUMNS_TAG","EMAIL_DOMAINS_TAG","EMAIL_PROFILE_TAG","EMAIL_THEME_TAG","FEATURE_FLAG_TAG","OPEN_RECRUIT_PERIOD_TAG","PROJECT_COLLABORATOR_CALENDAR_EVENTS_TAG","ORGANIZATION_ACCOUNTS_TAG","ORGANIZATION_EMAIL_THEMES_TAG","ORGANIZATION_PARTICIPANTS_TAG","ORGANIZATION_POPULATION_PANELS_TAG","ORGANIZATION_PROJECT_CUSTOM_EMAIL_SETS_TAG","ORGANIZATION_TEAMS_TAG","PARTICIPANT_ATTRIBUTE_VALUES_TAG","PARTICIPANT_FRAUD_REPORT_TAG","PARTICIPANT_LABELS_TAG","PARTICIPANT_MANAGEMENT_INVITED_PARTICIPANTS_TAG","PARTICIPANT_PROJECT_PARTICIPANTS_TAG","PARTICIPANT_PROJECTS_TAG","PARTICIPANT_SURVEY_RESPONSE_SETS_TAG","PARTICIPANT_TASK_EVENT_STATS_TAG","PARTICIPANTS_TAG","PARTICIPATION_DETAILS_TAG","POPULATION_ATTRIBUTES_TAG","POPULATION_INVITE_FILTERS_TAG","POPULATION_PANEL_PARTICIPANTS_TAG","PREPAID_BALANCE_ACCOUNTS_TAG","PREPAID_BALANCE_INVITATIONS_TAG","PREPAID_BALANCE_TAG","PREPAID_BALANCE_TRANSACTIONS_TAG","PREPAID_BALANCES_TAG","PROJECT_ACCOUNT_ROLES_TAG","PROJECT_CLOSE_REQUEST_TAG","PROJECT_COLLABORATORS_TAG","PROJECT_CUSTOM_EMAILS_TAG","PROJECT_EMAIL_STATS_TAG","PROJECT_FILE_UPLOADS_TAG","PROJECT_INVOICES_TAG","PROJECT_LISTINGS_TAG","PROJECT_OCCUPATION_LINKS_TAG","PROJECT_OCCUPATION_TAGS_TAG","PROJECT_PARTICIPANT_ADMIN_DATA_TAG","PROJECT_PARTICIPANT_APPLICATION_STATUSES_TAG","PROJECT_PARTICIPANT_TAG_TAG","PROJECT_PARTICIPANTS_TAG","PROJECT_PROJECT_PARTICIPANTS_TAG","PROJECT_PROJECT_SKILLS_TAG","PROJECT_PROJECT_TASKS_TAG","PROJECT_PROPOSED_AVAILABILITY_RANGE_COLLECTIONS_TAG","PROJECT_PROPOSED_AVAILABILITY_RANGES_TAG","PROJECT_SCHEDULED_INVITE_SETTINGS_TAG","PROJECT_SESSIONS_SIGNUP_PAGE_TAG","PROJECT_SESSIONS_TAG","PROJECT_SETTINGS_TAG","PROJECT_SUMMARIES_TAG","PROJECT_SURVEY_KEYS_TAG","PROJECT_SURVEYS_TAG","PROJECT_TAG_TAG","PROJECT_VIDEO_UPLOADS_TAG","PROJECT_WORKSPACE_CALENDAR_TAG","PROJECT_WORKSPACE_SESSIONS_TAG","RECRUIT_PERIOD_TAG","REPORT_TAG","REPORTS_TAG","RESEARCHER_NOTE_TAG","RESPONSE_SETS_TAG","SCHEDULABLE_RANGES_TAG","SESSION_PROJECT_PARTICIPANTS_TAG","SESSION_ROLES_TAG","SESSION_SIGNUP_PAGES_SESSIONS_TAG","SIGNATURE_REQUESTS_TAG","STRIPE_CARDS_TAG","SURVEY_PREVIEW_SECTIONS_TAG","SURVEY_SECTIONS_TAG","TEAM_BILLING_INFOS_TAG","TEAM_HUB_USAGE_TAG","TEAM_INVITES_TAG","TEAM_MEMBERS_TAG","TEAM_PARTICIPANTS_TAG","TEAM_PROJECT_TEMPLATES_TAG","TEAM_PROJECTS_TAG","TEAM_SETTINGS_TAG","TEAM_SUBSCRIPTIONS_TAG","TEAM_TAG","WORKSPACE_PARTICIPANTS_TAG","PageProviders","useTrackingWithDefaultDispatch","AppsignalErrorBoundary","fallback","APPSIGNAL_FALLBACK","className","role","message","instance","store","withPageProviders","WrappedComponent","WithPageProviders","props","displayName","getDisplayName","_ref","rest","_objectWithoutProperties","_excluded","getUnsortedTeamProjects","_ref2","_excluded2","useGetTeamProjectsQuery","useGetUnsortedTeamProjectsQuery","computeIsAutopayEnabled","projectSettings","disableAutopay","projectSchema","z","object","accessCode","additionalRecruitmentRequirementsHtml","nullable","advancedScreening","billingAccount","commenterId","initials","firstName","lastName","fullName","lookbackEnabledAt","nameLastFirst","messagerId","number","roleId","optional","phoneNumber","teams","array","compensationAmount","compensationType","confirmationNotesHtml","consumerFee","createdAt","currentStatus","defaultSessionLocation","deviceRequirements","summary","documentDescription","description","signatureRequestDataKey","documentName","draftParticipantsCount","emailProfileId","emails","allowEdit","class","enum","PARTICIPANT_EMAIL_CLASSES","purpose","slug","emailThemeId","hasDocumentSigning","incentive","internalDescription","interviewType","interviewTypeId","isActive","isEligibleForSessionObservers","isPrivate","isSystemHidden","isZeroCost","latestStatusTypeId","address","autocomplete","city","countries","detail","googleLocationInfo","any","googleMapsUrl","latitude","locationExtraInfo","longitude","parkingAvailable","parkingInfo","regions","canView","numParticipants","organizationId","originalNumParticipants","relationshipNames","participantReferrals","professionalFee","projectCustomEmailSetId","projectStatus","publicDescription","publicTitle","remainingInviteCount","requireApproval","researcherWillCall","screenerVideo","prompt","sessionLength","confirmOnJoin","participantReschedulingEnabled","rptInvitesOnly","sourceType","studyLength","hours","minutes","studyType","studyTypeName","surveyDraft","surveyJson","targetProfessionals","task","externalId","repositoryUrl","providerDisplayName","title","taskSession","moderatorId","numScheduled","numSlots","sessionLocation","startTime","datetimeDisplay","hasPassed","hostUrl","hasZoomSessionLocation","hasMeetSessionLocation","timeDisplay","teamDomain","timezone","timezoneAbbreviation","useEmailTheme","wePay","passthrough","project","_project$meta","_project$meta2","isAutopayEnabled","isNoIncentiveTypeProject","CompensationMethods","NONE","isWePay","WE_PAY","senderId","hasIntegration","IntegrationProviders","TRACKED_PROVIDERS","isConfirmOnJoin","ProjectSettings","default","isParticipantApprovalRequired","isRptProject","isRecruitProject","PROJECT_SOURCE_TYPES","PROJECT","BYOA_PROJECT","isSourcelessProject","SOURCELESS_PROJECT","hasParticipantSource","isOneOnOne","StudyTypes","ONE_ON_ONE","isFocusGroup","FOCUS_GROUP","isMultiDay","MULTI_DAY","UNMODERATED_TASK","hasStudyType","isModerated","InterviewTypes","ONLINE","PHONE","IN_PERSON","ProjectStatuses","DRAFT","isLaunchable","isLaunched","LAUNCHED","isFirstProject","String","hasOtherCompensationType","compensationTypeOtherCustomValue","useGetProjectState","useErrorLogger","_useGetProjectQuery","join","projectState","process","callback","safelyParseSchema","_f","_10","NAVIGATION_PARTICIPANTS_CLICKED","trackingEvents","NAVIGATION_PROJECTS_CLICKED","Footer","styles","NavigationItem","href","iconSrcBase","Authorization","TeamActionTypes","SEARCH_PARTICIPANTS","upsertAccountHubConfiguration","configurations","useGetAccountHubConfigurationsQuery","useUpsertAccountHubConfigurationMutation","participantsApi","createParticipants","teamIds","team_ids","getParticipant","updateParticipant","updateParticipantTeams","encodedFilterParams","participant_filter","upsertParticipants","useGetParticipantQuery","useUpdateParticipantMutation","useUpdateParticipantTeamsMutation","useUpsertParticipantsMutation","attributeSlugsToInputLabels","backendConstants","attributeSlugsToDefaultOptionNames","authUserParams","defaultValue","authUser","WithAuthUserContext","_useHttp","_slicedToArray","JsonApiDataStore","sync","setContextValue","_useState4","loadingOverlayEnabled","setLoadingOverlayEnabled","refreshAuthUserContext","skipLoadingOverlay","contextData","ErrorRenderer","alert","finally","LoadingOverlay","visible","projectDetailsSlice","ADD_WORKSPACE_ATTRIBUTES","projectDetailsSliceReducer","rootReducer","reducerPath","columnConfiguration","participantProfile","participantProfileSliceReducer","projectDetails","isDevelopmentEnv","buildStore","preloadedState","configureStore","middleware","getDefaultMiddleware","actionCreatorCheck","immutableCheck","serializableCheck","setupListeners","SidebarOpenDebounceMS","SidebarCloseDebounceMS","isOpen","isTransitioning","isRenderingOpen","setIsNavItemHovered","SidebarContextProvider","sidebarRef","isNavItemHovered","isSidebarHovered","setIsSidebarHovered","_useIsSidebarOpen","setIsOpen","setIsTransitioning","openSidebarTimeout","useRef","closeSidebarTimeout","isMobile","isReducedMotion","openSidebar","current","clearTimeout","setTimeout","closeSidebar","sidebar","handleTransitionEnd","propertyName","useIsSidebarOpen","handleMouseEnter","handleMouseLeave","_d","_11","onHandleNavigating","linkProps","_useSidebarContext","path","useLocation","regExp","useIsActive","isHovered","setIsHovered","SRCs","active","hovered","src","Image","iconSrc","baseProps","classNames","onMouseEnter","onFocus","onBlur","onMouseLeave","handleClick","ev","isCmdorCtrlPressed","metaKey","ctrlKey","assign","onClick","alt","Text","NavLink","tagTypes","rawTagTypes","createApi","baseQuery","fetchBaseQuery","baseUrl","required","relationships","options","included","literal","isExclusive","position","deletePopulationAttribute","updatePopulationAttribute","createPopulationAttribute","useCreatePopulationAttributeMutation","useDeletePopulationAttributeMutation","useGetPopulationAttributesQuery","useUpdatePopulationAttributeMutation","SidebarEntrypoint","withAuthUserContext","Sidebar","FooterEntrypoint","registerComponent","matchParticipantFetched","populationAttributesAdapter","selectId","participantProfileSlice","dirtyPages","participant","redirectTo","SET_DIRTY_PAGE","Set","pageName","SET_REDIRECT_TO","_participantProfileSl","selectParticipant","selectRedirectTo","_populationAttributes","selectAllAttributes","selectAttributeBySlug","selectById","selectAttributes","selectAttributeBySlugWithMetadata","defaultOptionName","profileConstants","inputLabel","selectEmploymentAttribute","selectPageIsDirty","errorMessages","ctx","expirationSeconds","APPSIGNAL_JS_ERROR_LOG_EXPIRATION_SECONDS","lastLoggedAt","Date","NAVIGATION_ACCOUNT_CLICKED","NAVIGATION_SIGN_OUT_CLICKED","NAVIGATION_TEAMS_CLICKED","AccountMenuPopover","forwardRef","_props","ref","team","handleLinkClick","currentTarget","trackingEvent","dataset","Flex","alignItems","container","flexDirection","VIEW_MEMBERS","NAVIGATION_ACCOUNT_POPOVER_OPENED","AccountNavigationItem","isAccountMenuOpen","setIsAccountMenuOpen","handleDocumentClick","clientX","clientY","_ref$current$getBound","getBoundingClientRect","top","bottom","left","right","organization","isRenderingAccountMenu","stopPropagation","prev","size","TEXT_PROPS","sm","NAVIGATION_PLANS_CLICKED","NAVIGATION_SUPPORT_CLICKED","onHandlePageLoading","authContext","isAccount","isStaff","rootPath","teamSubscription","paidSubscription","VIEW_BILLING","trackingData","createInviteFilter","updateInviteFilter","useGetInviteFilterQuery","useCreateInviteFilterMutation","useUpdateInviteFilterMutation"],"sourceRoot":""}