{"version":3,"file":"js/404-0434b2609c7fb806eeea.js","mappings":"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","sources":["webpack:///./app/javascript/helpers/actions/index.js","webpack:///./app/javascript/actions/administration/widgetbar.js","webpack:///./app/javascript/actions/appCreator/index.js","webpack:///./app/javascript/actions/helpers.js","webpack:///./app/javascript/actions/files.js","webpack:///./app/javascript/components/administration/designManager/defaultThemes.ts","webpack:///./app/javascript/components/administration/designManager/themeSlice.ts","webpack:///./app/javascript/components/administration/designManager/functions.ts","webpack:///./app/javascript/components/administration/designManager/rules.ts","webpack:///./app/javascript/components/administration/designManager/useTheme.ts","webpack:///./app/javascript/components/administration/designManager/deriveColors.ts","webpack:///./app/javascript/components/administration/designManagerLight/groupCategoryThemeSlice.ts","webpack:///./app/javascript/components/administration/designManagerLight/groupThemeSlice.ts","webpack:///./app/javascript/components/appCreator/api.tsx","webpack:///./app/javascript/components/appCreator/properties/helpers.js","webpack:///./app/javascript/components/channels/design/channelThemeSlice.ts","webpack:///./app/javascript/helpers/api/bustCache.js","webpack:///./app/javascript/helpers/api/transformLinkHeader.js","webpack:///./app/javascript/helpers/api.js","webpack:///./app/javascript/helpers/api/parseHeader.js","webpack:///./app/javascript/helpers/documentReady.ts","webpack:///./app/javascript/helpers/indexBy.ts","webpack:///./app/javascript/helpers/extractUrl.ts","webpack:///./app/javascript/helpers/setApplication.js","webpack:///./app/javascript/reducers/app.ts","webpack:///./app/javascript/reducers/groups.ts","webpack:///./app/javascript/sagas/files.js","webpack:///./app/javascript/selectors/appCreator.js","webpack:///./app/javascript/selectors/navigation.js","webpack:///./app/javascript/actions/navigation.js","webpack:///./app/javascript/reducers/navigation.js","webpack:///./app/javascript/actions/administration/appCreator.js","webpack:///./app/javascript/reducers/appCreator/items.js","webpack:///./app/javascript/reducers/appCreator/index.js","webpack:///./app/javascript/reducers/folders.js","webpack:///./app/javascript/reducers/administration/widgetbar/edit.js","webpack:///./app/javascript/reducers/administration/widgetbar/index.js","webpack:///./app/javascript/reducers/administration/widgetbar.js","webpack:///./app/javascript/store.js","webpack:///./app/javascript/reducers/currentMember.ts","webpack:///./app/javascript/sagas/index.js"],"sourcesContent":["export const action = (type, payload = {}) => ({\n  type,\n  ...payload,\n});\n","import { action } from \"helpers/actions\";\n\nconst NAMESPACE = \"administration/widgetbar\";\n\nexport const ADD_OR_MOVE_WIDGET = NAMESPACE + \"/ADD_WIDGET\";\nexport const REMOVE_WIDGET = NAMESPACE + \"/REMOVE_WIDGET\";\nexport const CHANGE_WIDGET_VALUE = NAMESPACE + \"/CHANGE_VALUE\";\nexport const SELECT_WIDGET = NAMESPACE + \"/SELECT_WIDGET\";\nexport const FETCH_WIDGETBAR = NAMESPACE + \"/FETCH_WIDGETBAR\";\nexport const UPDATE_WIDGETBAR = NAMESPACE + \"/UPDATE_WIDGETBAR\";\nexport const SET_GROUP_ID = NAMESPACE + \"/SET_GROUP_ID\";\nexport const RESET_SUCCESSFUL_SAVE = NAMESPACE + \"/RESET_SUCCESSFUL_SAVE\";\nexport const RESET_ERRORS = NAMESPACE + \"/RESET_ERRORS\";\nexport const FETCH_WIDGETBARS = NAMESPACE + \"/FETCH_WIDGETBARS\";\nexport const FETCH_CALENDARS = NAMESPACE + \"/FETCH_CALENDARS\";\nexport const SET_IDENTIFIER = NAMESPACE + \"/SET_IDENTIFIER\";\nexport const FETCH_WIDGETBAR_ACTIONS = {\n  REQUEST: `${FETCH_WIDGETBAR}/REQUEST`,\n  SUCCESS: `${FETCH_WIDGETBAR}/SUCCESS`,\n  FAILURE: `${FETCH_WIDGETBAR}/FAILURE`,\n};\nexport const FETCH_CALENDARS_ACTIONS = {\n  REQUEST: `${FETCH_CALENDARS}/REQUEST`,\n  SUCCESS: `${FETCH_CALENDARS}/SUCCESS`,\n  FAILURE: `${FETCH_CALENDARS}/FAILURE`,\n};\nexport const UPDATE_WIDGETBAR_ACTIONS = {\n  REQUEST: `${UPDATE_WIDGETBAR}/REQUEST`,\n  SUCCESS: `${UPDATE_WIDGETBAR}/SUCCESS`,\n  FAILURE: `${UPDATE_WIDGETBAR}/FAILURE`,\n};\n\nexport const addOrMoveWidget = (data, index) =>\n  action(ADD_OR_MOVE_WIDGET, { data, index });\nexport const removeWidget = () => action(REMOVE_WIDGET);\nexport const selectWidget = (data) => action(SELECT_WIDGET, { data });\nexport const setGroupId = (data) => action(SET_GROUP_ID, { data });\nexport const resetSuccessfulSave = (data) =>\n  action(RESET_SUCCESSFUL_SAVE, { data });\nexport const changeValue = (propertyKey, data) =>\n  action(CHANGE_WIDGET_VALUE, { propertyKey, data });\n","import { createApiAction, parseHeader } from \"helpers/api\";\nimport { stringify } from \"query-string\";\nimport { each, get } from \"lodash\";\nimport { createFormAction } from \"redux-form-saga\";\n\nimport { appSelector } from \"selectors/appCreator\";\nimport { appUrl, itemUrl } from \"components/appCreator/api\";\n\nconst parseArchivedPerColumn = (header) => {\n  const archivedPerColumn = {};\n  each(header.split(\",\"), (item) => {\n    const info = item.split(\"=\");\n    archivedPerColumn[info[0]] = info[1];\n  });\n  return archivedPerColumn;\n};\n\nexport const NAMESPACE = \"appCreator\";\n\nconst transformHeaders = (_action, state, res) =>\n  res.json().then((json) => {\n    if (get(appSelector(state), \"collection_layout.layout\") === \"wall\") {\n      let payload = { data: json };\n\n      if (res.headers && res.headers.get(\"Link\")) {\n        payload[\"loadMoreUrls\"] = parseHeader(res.headers.get(\"Link\"));\n      }\n\n      if (res.headers && res.headers.get(\"X-Total-Archived-Per-Column\")) {\n        payload[\"totalArchivedItems\"] = parseArchivedPerColumn(\n          res.headers.get(\"X-Total-Archived-Per-Column\"),\n        );\n      }\n\n      return payload;\n    } else {\n      return {\n        data: json,\n        pagination: {\n          nextPage: res.headers.get(\"X-Next-Page\"),\n          page: res.headers.get(\"X-Page\"),\n          perPage: res.headers.get(\"X-Per-Page\"),\n          prevPage: res.headers.get(\"X-Prev-Page\"),\n          total: res.headers.get(\"X-Total\"),\n          totalPages: res.headers.get(\"X-Total-Pages\"),\n        },\n        totalArchivedItems: res.headers.get(\"X-Total-Archived\"),\n      };\n    }\n  });\n\nexport const fetchAppLink = createApiAction({\n  method: \"GET\",\n  endpoint: ({ appSlug, groupSlug }) =>\n    `/${groupSlug ? `groups/${groupSlug}/` : \"\"}apps/${appSlug}`,\n  baseType: `${NAMESPACE}/APP_LINK`,\n});\n\nexport const fetchApp = createApiAction({\n  method: \"GET\",\n  endpoint: appUrl,\n  baseType: `${NAMESPACE}/APP`,\n});\n\nexport const subscribeApp = createApiAction({\n  method: \"PUT\",\n  endpoint: ({ appId, externalAppId }) =>\n    `${appUrl({ appId, externalAppId })}/subscription`,\n  baseType: `${NAMESPACE}/SUBSCRIBE`,\n});\n\nexport const unsubscribeApp = createApiAction({\n  method: \"DELETE\",\n  endpoint: ({ appId, externalAppId }) =>\n    `${appUrl({ appId, externalAppId })}/subscription`,\n  baseType: `${NAMESPACE}/UNSUBSCRIBE`,\n});\n\nexport const fetchItem = createApiAction({\n  method: \"GET\",\n  endpoint: itemUrl,\n  baseType: `${NAMESPACE}/ITEM`,\n});\n\nexport const archiveItem = createApiAction({\n  method: \"POST\",\n  endpoint: ({ appId, itemId, externalAppId }) =>\n    `${appUrl({ appId, externalAppId })}/items/${itemId}/archive`,\n  baseType: `${NAMESPACE}/ITEM/ARCHIVE`,\n});\n\nexport const unarchiveItem = createApiAction({\n  method: \"POST\",\n  endpoint: ({ appId, itemId, externalAppId }) =>\n    `${appUrl({ appId, externalAppId })}/items/${itemId}/unarchive`,\n  baseType: `${NAMESPACE}/ITEM/UNARCHIVE`,\n});\n\nexport const deleteItem = createApiAction({\n  method: \"DELETE\",\n  endpoint: ({ appId, itemId, externalAppId }) =>\n    `${appUrl({ appId, externalAppId })}/items/${itemId}`,\n  baseType: `${NAMESPACE}/ITEM/DELETE`,\n});\n\nexport const fetchItems = createApiAction({\n  method: \"GET\",\n  endpoint: ({\n    appId,\n    view = \"default\",\n    archived = false,\n    tag,\n    assignee_id,\n    page,\n    q,\n    filters,\n    externalAppId,\n  }) => {\n    let endpointUrl = `${appUrl({ appId, externalAppId })}/items?`;\n    let queryParamsObject = {\n      view: view,\n      archived: archived,\n      filters: filters,\n      tag: tag,\n      assignee_id: assignee_id,\n      page: page,\n      q: q,\n    };\n\n    return (\n      endpointUrl +\n      stringify(queryParamsObject, { skipNull: true, skipEmptyString: true })\n    );\n  },\n  baseType: `${NAMESPACE}/ITEMS`,\n  transformPayload: transformHeaders,\n});\n\nexport const loadMoreItemsByColumn = createApiAction({\n  method: \"GET\",\n  endpoint: ({ url }) => `${url}`,\n  baseType: `${NAMESPACE}/MORE_ITEMS`,\n  transformPayload: transformHeaders,\n});\n\nexport const createItem = createApiAction({\n  method: \"POST\",\n  endpoint: ({ appId, externalAppId }) =>\n    `${appUrl({ appId, externalAppId })}/items`,\n  baseType: `${NAMESPACE}/ITEM/CREATE`,\n});\n\nexport const updateItem = createApiAction({\n  method: \"PUT\",\n  endpoint: itemUrl,\n  baseType: `${NAMESPACE}/ITEM/UPDATE`,\n});\n\nexport const saveItem = createFormAction(`${NAMESPACE}/ITEM/SAVE`);\nexport const saveItem2 = createApiAction({\n  method: \"PUT\",\n  endpoint: itemUrl,\n  baseType: `${NAMESPACE}/MOVE_ITEM`,\n});\n\nexport const moveItem = createApiAction({\n  method: \"PUT\",\n  endpoint: ({ appId, externalAppId, itemId, externalItemId }) =>\n    `${itemUrl({ appId, externalAppId, itemId, externalItemId })}`,\n  baseType: `${NAMESPACE}/MOVE_ITEM`,\n});\n\nexport const exportItems = createApiAction({\n  method: \"POST\",\n  endpoint: ({ appSlug, groupSlug }) =>\n    `/${groupSlug ? `groups/${groupSlug}/` : \"\"}apps/${appSlug}/items/exports`,\n  baseType: `${NAMESPACE}/EXPORT_ITEMS`,\n});\n\nexport const exportItemsGetLast = createApiAction({\n  method: \"GET\",\n  endpoint: ({ appSlug, groupSlug }) =>\n    `/${\n      groupSlug ? `groups/${groupSlug}/` : \"\"\n    }apps/${appSlug}/items/exports/last`,\n  baseType: `${NAMESPACE}/EXPORT_ITEMS_GET_LAST`,\n});\n\nexport const fetchRelationOptions = createApiAction({\n  method: \"GET\",\n  endpoint: ({ appId, externalAppId, propertyName, q }) =>\n    `${appUrl({ appId, externalAppId })}/options/${propertyName}?${stringify({\n      q: `${q}*`,\n    })}`,\n  baseType: `${NAMESPACE}/APP/OPTIONS`,\n});\n","export const REQUEST = \"REQUEST\";\nexport const SUCCESS = \"SUCCESS\";\nexport const FAILURE = \"FAILURE\";\nexport const PROGRESS = \"PROGRESS\";\n\nexport function createRequestTypes(base) {\n  return {\n    REQUEST: `${base}/${REQUEST}`,\n    SUCCESS: `${base}/${SUCCESS}`,\n    FAILURE: `${base}/${FAILURE}`,\n    PROGRESS: `${base}/${PROGRESS}`,\n  };\n}\n\nexport function action(type, payload = {}) {\n  return { ...payload, type };\n}\n\n// Creates action with included REQUEST supertype\nexport function requestAction(type, payload = {}) {\n  return action(type.REQUEST, { ...payload, superType: REQUEST });\n}\n\n// Creates action with included SUCCESS supertype\nexport function successAction(type, payload = {}) {\n  return action(type.SUCCESS, { ...payload, superType: SUCCESS });\n}\n\n// Creates action with included FAILURE supertype\nexport function failureAction(type, payload = {}) {\n  return action(type.FAILURE, { ...payload, superType: FAILURE });\n}\n\n// Creates action with included PROGRESS supertype\nexport function progressAction(type, payload = {}) {\n  return action(type.PROGRESS, { ...payload, superType: PROGRESS });\n}\n","import { createApiAction } from \"helpers/api\";\nimport { createRequestTypes, requestAction, action } from \"./helpers\";\n\nexport const FILE = {\n  PUBLISH: \"/FILE/PUBLISH\",\n  REMOVE: \"/FILE/REMOVE\",\n  UPLOAD: createRequestTypes(\"/FILE/UPLOAD\"),\n};\n\nexport const FILES = {\n  SET_UPLOAD_IDS: \"/FILES/SET_UPLOAD_IDS\",\n  ADD_UPLOAD_ID: \"FILES/ADD_UPLOAD_ID\",\n  UPLOAD: createRequestTypes(\"/FILES/UPLOAD\"),\n  PUBLISH: \"/FILES/PUBLISH\",\n  DESTROY: \"/FILES/DESTROY\",\n};\n\nexport const FOLDERS = {\n  SELECT: \"FOLDERS/SELECT\",\n};\n\nexport const FOLDER = {\n  SELECT: \"FOLDER/SELECT\",\n};\n\nexport const publishFiles = createApiAction({\n  method: \"POST\",\n  endpoint: ({ storageDirectory = \"files\" }) =>\n    `/api/storage/${storageDirectory}/publish`,\n  baseType: FILES.PUBLISH,\n});\n\nexport const uploadFile = (payload) => {\n  return requestAction(FILES.UPLOAD, payload);\n};\n\nexport const destroyFile = createApiAction({\n  method: \"DELETE\",\n  endpoint: ({ storageDirectory, id }) =>\n    `/api/storage/${storageDirectory}/${id}`,\n  baseType: FILES.DESTROY,\n});\n\nexport const selectFolder = ({ id, namespace }) =>\n  action(FOLDER.SELECT, { meta: { id, namespace } });\n","import { Theme } from \"./types\";\n\n/*\nDo not forget to `scripts/dev/frontend_prebuild.sh` after making changes here.\n */\n\nconst tixxt: Theme = {\n  id: \"tixxt\",\n  name: \"tixxt Standard\",\n  isPreset: true,\n  colors: {\n    primary: { color: \"#99BEDA\" },\n    secondary: { color: \"#412C7C\" },\n    white: { color: \"#FFFFFF\" },\n    favorite: { color: \"#FCD34D\" }, // amber-300\n    info: { color: \"#0284C7\" }, // sky-600\n    success: { color: \"#22C55E\" }, // green-500\n    warning: { color: \"#FACC15\" }, // yellow-400\n    danger: { color: \"#DC2626\" }, // red-600\n\n    // \"gray\" palette\n    \"gray-50\": { color: \"#FAFAFA\" },\n    \"gray-100\": { color: \"#F4F4F5\" },\n    \"gray-200\": { color: \"#E4E4E7\" },\n    \"gray-300\": { color: \"#D4D4D8\" },\n    \"gray-400\": { color: \"#A1A1AA\" },\n    \"gray-500\": { color: \"#71717A\" },\n    \"gray-600\": { color: \"#52525B\" },\n    \"gray-700\": { color: \"#3F3F46\" },\n    \"gray-800\": { color: \"#27272A\" },\n    \"gray-900\": { color: \"#18181B\" },\n  },\n  userbarIconType: \"light\",\n  logoType: \"hidden\",\n  bannerType: \"hidden\",\n  bannerImage: null,\n  logoImage: null,\n  faviconImage: null,\n  emailLogoImage: null,\n  fullWidth: false,\n};\n\nexport { tixxt as defaultTheme };\n\nexport default [tixxt];\n","import { createSlice, PayloadAction } from \"@reduxjs/toolkit\";\nimport {\n  ColorObject,\n  Theme,\n} from \"components/administration/designManager/types\";\nimport { defaultTheme } from \"components/administration/designManager/defaultThemes\";\nimport { loadOverrideTheme } from \"components/administration/designManager/useTheme\";\n\nexport type ThemeState = Theme;\n\nconst initialState: ThemeState =\n  loadOverrideTheme() || window.Preload?.theme || defaultTheme;\n\nexport const reducers = ({ override }: { override: boolean }) => ({\n  setTheme(state, action: PayloadAction<Theme>) {\n    return { ...action.payload, override };\n  },\n  setUserbarIconType(state, action: PayloadAction<Theme[\"userbarIconType\"]>) {\n    state.userbarIconType = action.payload;\n    state.override = override;\n  },\n  setBannerImage(state, action: PayloadAction<Theme[\"bannerImage\"]>) {\n    state.bannerImage = action.payload;\n    state.override = override;\n  },\n  setLogoImage(state, action: PayloadAction<Theme[\"logoImage\"]>) {\n    state.logoImage = action.payload;\n    state.override = override;\n  },\n  setFaviconImage(state, action: PayloadAction<Theme[\"faviconImage\"]>) {\n    state.faviconImage = action.payload;\n    state.override = override;\n  },\n  setEmailLogoImage(state, action: PayloadAction<Theme[\"emailLogoImage\"]>) {\n    state.emailLogoImage = action.payload;\n    state.override = override;\n  },\n  changeColor(state, action: PayloadAction<[string, ColorObject | null]>) {\n    const [name, colorObj] = action.payload;\n    if (!state.colors) state.colors = {};\n    if (colorObj) state.colors[name] = colorObj;\n    else delete state.colors[name];\n    state.override = override;\n  },\n  mergeColors(state, action: PayloadAction<Record<string, ColorObject>>) {\n    state.colors = { ...state.colors, ...action.payload };\n    state.override = override;\n  },\n  setHeaderVariant(\n    state,\n    action: PayloadAction<Pick<Theme, \"logoType\" | \"bannerType\">>,\n  ) {\n    state.logoType = action.payload.logoType;\n    state.bannerType = action.payload.bannerType;\n    state.override = override;\n  },\n  setCustomCss(state, action: PayloadAction<Theme[\"customCss\"]>) {\n    state.customCss = action.payload;\n    state.override = override;\n  },\n  setFullWidth(state, action: PayloadAction<Theme[\"fullWidth\"]>) {\n    state.fullWidth = action.payload;\n    state.override = override;\n  },\n});\n\nconst themeSlice = createSlice({\n  name: \"theme\",\n  initialState,\n  reducers: {\n    ...reducers({ override: true }),\n    resetTheme() {\n      return window.Preload?.theme || defaultTheme;\n    },\n  },\n});\n\nexport const {\n  setTheme,\n  resetTheme,\n  setUserbarIconType,\n  setBannerImage,\n  setLogoImage,\n  setFaviconImage,\n  setEmailLogoImage,\n  changeColor,\n  mergeColors,\n  setHeaderVariant,\n  setCustomCss,\n  setFullWidth,\n} = themeSlice.actions;\nexport default themeSlice.reducer;\n","import { DeriveFnEnv, DeriveFnResult } from \"./types\";\nimport {\n  TinyColor,\n  mostReadable as tcMostReadable,\n  isReadable,\n} from \"@ctrl/tinycolor\";\nimport { isEmpty, map } from \"lodash\";\nimport { generate as generateColors } from \"@k-vyn/coloralgorithm\";\n\nfunction getColor({ colors, scope }: DeriveFnEnv, name: string) {\n  let color;\n  if (scope) color = colors[`${scope}-${name}`]?.color;\n  if (!color) color = colors[name]?.color;\n\n  if (!color)\n    throw `Color with name \"${name}\" not found! (scope=${scope} theme=${JSON.stringify(\n      colors,\n    )})`;\n  return color;\n}\n\nexport function val(this: DeriveFnEnv, c: string): DeriveFnResult {\n  const color = getColor(this, c);\n\n  return { color, debug: `val(${c})` };\n}\n\nexport function mix(\n  this: DeriveFnEnv,\n  c1: string,\n  c2: string,\n  amount: number,\n): DeriveFnResult {\n  const color1 = getColor(this, c1);\n  const color2 = getColor(this, c2);\n\n  return {\n    color: new TinyColor(color1)\n      .mix(new TinyColor(color2), amount)\n      .toHexString(),\n    debug: `mix(${c1}, ${c2}, ${amount})`,\n  };\n}\n\nexport function mostReadable(\n  this: DeriveFnEnv,\n  c: string,\n  ...candidateNames: string[]\n): DeriveFnResult {\n  const color = getColor(this, c);\n  const candidates = map(candidateNames, (c) => getColor(this, c));\n  if (isEmpty(candidates)) candidates.push(\"white\", \"black\");\n\n  return {\n    color:\n      tcMostReadable(color, candidates, {\n        includeFallbackColors: true,\n      })?.toHexString() || color,\n    debug: `mostReadable(${c}, ${candidateNames.join(\", \")})`,\n  };\n}\n\nexport function shade(\n  this: DeriveFnEnv,\n  c: string,\n  amount: number,\n): DeriveFnResult {\n  const color = getColor(this, c);\n\n  return {\n    color: new TinyColor(color).shade(amount).toHexString(),\n    debug: `shade(${c}, ${amount})`,\n  };\n}\n\nexport function shadeOrTint(\n  this: DeriveFnEnv,\n  c: string,\n  amount: number,\n): DeriveFnResult {\n  const color = getColor(this, c);\n  const tColor = new TinyColor(color);\n  let result;\n  if (tColor.isLight()) result = tColor.shade(amount);\n  else result = tColor.tint(amount);\n\n  return {\n    color: result.toHexString(),\n    debug: `shadeOrTint(${c}, ${amount})`,\n  };\n}\n\nexport function lighten(\n  this: DeriveFnEnv,\n  c: string,\n  amount: number,\n): DeriveFnResult {\n  const color = getColor(this, c);\n\n  return {\n    color: new TinyColor(color).lighten(amount).toHexString(),\n    debug: `lighten(${c}, ${amount})`,\n  };\n}\n\nexport function makeReadable(this: DeriveFnEnv, c: string): DeriveFnResult {\n  let color = getColor(this, c);\n\n  while (!isReadable(color, \"white\", { level: \"AAA\", size: \"small\" })) {\n    color = new TinyColor(color).shade(5).toHexString();\n  }\n\n  return {\n    color,\n    debug: `makeReadable(${c})`,\n  };\n}\n\nexport function variant(\n  this: DeriveFnEnv,\n  c: string,\n  variant: number,\n  options?: {\n    saturation?: { start?: number; end?: number; rate?: number };\n  },\n): DeriveFnResult {\n  if (!(variant >= 0 && variant <= 9))\n    throw \"variant must be in the range of 0-9\";\n\n  const { h: hue } = new TinyColor(getColor(this, c)).toHsv();\n\n  const [{ colors }] = generateColors(\n    // Play around with this at https://colorbox.io/\n    {\n      steps: 10,\n      hue: { start: hue, end: hue, curve: \"easeInQuad\" },\n      saturation: {\n        start: 0.08,\n        end: 1,\n        curve: \"easeInSine\",\n        rate: 1,\n        ...options?.saturation,\n      },\n      brightness: { start: 1, end: 0.2, curve: \"easeInSine\" },\n    },\n  );\n\n  return {\n    color: map(colors, \"hex\")[variant],\n    debug: `variant(${c}, ${variant})`,\n  };\n}\n\nexport type DeriveExp =\n  | [\"val\", ...Parameters<typeof val>]\n  | [\"mix\", ...Parameters<typeof mix>]\n  | [\"mostReadable\", ...Parameters<typeof mostReadable>]\n  | [\"shade\", ...Parameters<typeof shade>]\n  | [\"shadeOrTint\", ...Parameters<typeof shadeOrTint>]\n  | [\"lighten\", ...Parameters<typeof lighten>]\n  | [\"makeReadable\", ...Parameters<typeof makeReadable>]\n  | [\"variant\", ...Parameters<typeof variant>];\n","import { ColorRule } from \"./types\";\nimport { flatMap } from \"lodash\";\n\n/*\nDo not forget to `scripts/dev/frontend_prebuild.sh` after making changes here.\n */\n\nconst abstract = true;\nconst tailwind = true;\n\n/* Global */\nlet colorRules: ColorRule[] = [\n  { name: \"primary\", abstract, tailwind },\n  { name: \"secondary\", abstract, tailwind },\n  { name: \"white\", abstract, tailwind },\n  { name: \"neutral\", derive: [\"val\", \"gray-300\"], abstract, tailwind },\n  { name: \"favorite\", abstract, tailwind },\n  { name: \"info\", abstract, tailwind },\n  { name: \"success\", abstract, tailwind },\n  { name: \"warning\", abstract, tailwind },\n  { name: \"danger\", abstract, tailwind },\n  { name: \"normal-text\", derive: [\"val\", \"gray-800\"], tailwind },\n  { name: \"link-text\", derive: [\"variant\", \"primary\", 7] },\n  { name: \"link--hover-text\", derive: [\"variant\", \"primary\", 8] },\n  { name: \"unread__content-background\", derive: [\"variant\", \"secondary\", 0] },\n  { name: \"banner-background\", abstract, derive: [\"val\", \"secondary\"] },\n];\n\n/* Buttons */\ncolorRules = colorRules\n  .concat(\n    scoped(\"btn-primary\", [\n      { name: \"background\", derive: [\"val\", \"primary\"] },\n      { name: \"text\", derive: [\"mostReadable\", \"background\", \"normal-text\"] },\n      { name: \"border\", derive: [\"val\", \"background\"] },\n      { name: \"-hover-background\", derive: [\"shade\", \"background\", 15] },\n      { name: \"-hover-border\", derive: [\"shade\", \"border\", 25] },\n      {\n        name: \"-hover-text\",\n        derive: [\"mostReadable\", \"-hover-background\", \"normal-text\"],\n      },\n    ]),\n  )\n  .concat(\n    scoped(\"btn-light\", [\n      { name: \"background\", derive: [\"val\", \"white\"] },\n      { name: \"text\", derive: [\"mostReadable\", \"background\", \"normal-text\"] },\n      { name: \"border\", derive: [\"val\", \"gray-300\"] },\n      { name: \"-hover-background\", derive: [\"val\", \"gray-100\"] },\n      { name: \"-hover-border\", derive: [\"val\", \"gray-400\"] },\n      {\n        name: \"-hover-text\",\n        derive: [\"mostReadable\", \"-hover-background\", \"normal-text\"],\n      },\n    ]),\n  )\n  .concat(\n    flatMap([\"danger\", \"secondary\"], (name) =>\n      scoped(`btn-${name}`, [\n        { name: \"background\", derive: [\"val\", name] },\n        { name: \"text\", derive: [\"mostReadable\", \"background\", \"normal-text\"] },\n        { name: \"border\", derive: [\"val\", \"background\"] },\n        { name: \"-hover-background\", derive: [\"shade\", \"background\", 15] },\n        { name: \"-hover-border\", derive: [\"shade\", \"border\", 25] },\n        {\n          name: \"-hover-text\",\n          derive: [\"mostReadable\", \"-hover-background\", \"normal-text\"],\n        },\n      ]),\n    ),\n  );\n\n/* Alerts */\ncolorRules = colorRules.concat(\n  flatMap([\"info\", \"success\", \"warning\", \"danger\"], (name) =>\n    scoped(`alert-${name}`, [\n      { name: \"background\", derive: [\"variant\", name, 2] },\n      { name: \"border\", derive: [\"variant\", name, 4] },\n      { name: \"text\", derive: [\"variant\", name, 9] },\n    ]),\n  ),\n);\n\n/* Tags */\ncolorRules = colorRules.concat(\n  scoped(\"tag\", [\n    { name: \"background\", derive: [\"variant\", \"primary\", 2] },\n    { name: \"text\", derive: [\"variant\", \"primary\", 8] },\n    { name: \"-reader-background\", derive: [\"variant\", \"secondary\", 2] },\n    {\n      name: \"-reader-text\",\n      derive: [\"variant\", \"secondary\", 8],\n    },\n  ]),\n);\n\n/* ModuleSwitcher */\ncolorRules = colorRules.concat(\n  scoped(\"module-switcher\", [\n    { name: \"accent\", derive: [\"val\", \"primary\"], abstract },\n    { name: \"background\", derive: [\"val\", \"gray-200\"] },\n    { name: \"text\", derive: [\"val\", \"gray-500\"] },\n    { name: \"-hover-background\", derive: [\"mix\", \"background\", \"accent\", 5] },\n    { name: \"-hover-text\", derive: [\"mix\", \"text\", \"accent\", 50] },\n    { name: \"-active-background\", derive: [\"val\", \"accent\"] },\n    {\n      name: \"-active-text\",\n      derive: [\"mostReadable\", \"-active-background\", \"text\"],\n    },\n  ]),\n);\n\n/* UnreadCounter */\ncolorRules = colorRules.concat(\n  scoped(\"unread-counter\", [\n    { name: \"background\", derive: [\"val\", \"secondary\"] },\n    { name: \"text\", derive: [\"mostReadable\", \"background\", \"normal-text\"] },\n  ]),\n);\n\n/* Userbar */\ncolorRules = colorRules.concat(\n  scoped(\"userbar\", [\n    { name: \"accent\", derive: [\"val\", \"primary\"], abstract },\n    { name: \"background\", derive: [\"val\", \"gray-100\"] },\n    { name: \"section-background\", derive: [\"val\", \"white\"] },\n    { name: \"section__title-text\", derive: [\"val\", \"gray-800\"] },\n    { name: \"section__indicator-color\", derive: [\"val\", \"gray-500\"] },\n    { name: \"link-text\", derive: [\"val\", \"gray-800\"] },\n    {\n      name: \"link--hover-background\",\n      derive: [\"mix\", \"section-background\", \"accent\", 5],\n    },\n    { name: \"link--hover-text\", derive: [\"mix\", \"link-text\", \"accent\", 50] },\n    { name: \"link--active-background\", derive: [\"val\", \"accent\"] },\n    {\n      name: \"link--active-text\",\n      derive: [\"mostReadable\", \"link--active-background\", \"link-text\"],\n    },\n  ]),\n);\n\n/* Chat */\ncolorRules = colorRules.concat(\n  scoped(\"chat\", [\n    { name: \"accent\", derive: [\"val\", \"primary\"] },\n    { name: \"accent-contrast\", derive: [\"mostReadable\", \"accent\", \"gray-800\"] },\n    { name: \"background\", derive: [\"val\", \"gray-100\"] },\n    {\n      name: \"text\",\n      derive: [\"mostReadable\", \"background\", \"normal-text\"],\n      tailwind,\n    },\n    { name: \"header-background\", derive: [\"val\", \"gray-200\"] },\n    {\n      name: \"header-text\",\n      derive: [\"mostReadable\", \"header-background\", \"normal-text\"],\n      tailwind,\n    },\n    {\n      name: \"list--hover-background\",\n      derive: [\"mix\", \"background\", \"accent\", 5],\n    },\n    { name: \"message-background\", derive: [\"val\", \"white\"] },\n    {\n      name: \"message-text\",\n      derive: [\"mostReadable\", \"message-background\", \"normal-text\"],\n      tailwind,\n    },\n    { name: \"message--my-background\", derive: [\"variant\", \"accent\", 1] },\n    {\n      name: \"message--my-text\",\n      derive: [\"mostReadable\", \"message--my-background\", \"normal-text\"],\n      tailwind,\n    },\n    { name: \"composer-background\", derive: [\"val\", \"white\"] },\n    {\n      name: \"composer-text\",\n      derive: [\"mostReadable\", \"composer-background\", \"normal-text\"],\n      tailwind,\n    },\n  ]),\n);\n\n/* Chat */\ncolorRules = colorRules.concat(\n  scoped(\"calendar\", [\n    { name: \"today-background\", derive: [\"variant\", \"primary\", 1] },\n  ]),\n);\n\n/* Header & Topbar */\ncolorRules = colorRules.concat(\n  scoped(\"header\", [\n    { name: \"topbar-background\", derive: [\"val\", \"gray-800\"] },\n    {\n      name: \"topbar-contrast\",\n      derive: [\"mostReadable\", \"topbar-background\", \"white\", \"gray-800\"],\n    },\n    {\n      name: \"topbar-contrast--hover\",\n      derive: [\"shadeOrTint\", \"header-topbar-contrast\", 25],\n    },\n    { name: \"logo-background\", derive: [\"val\", \"white\"] },\n  ]),\n);\n\n/* SearchBar */\ncolorRules = colorRules.concat(\n  scoped(\"search-bar__input\", [\n    { name: \"background\", derive: [\"val\", \"header-topbar-background\"] },\n    { name: \"color\", derive: [\"val\", \"header-topbar-contrast\"] },\n    { name: \"border-color\", derive: [\"val\", \"header-topbar-contrast--hover\"] },\n    { name: \"-hover-border\", derive: [\"val\", \"header-topbar-contrast--hover\"] },\n    { name: \"-focus-background\", derive: [\"val\", \"white\"] },\n    {\n      name: \"-focus-color\",\n      derive: [\"val\", \"gray-800\"],\n    },\n    { name: \"-focus-border-color\", derive: [\"val\", \"header-topbar-contrast\"] },\n  ]),\n);\n\n/* Navigation */\ncolorRules = colorRules.concat(\n  scoped(\"navigation\", [\n    { name: \"background\", derive: [\"val\", \"gray-50\"] },\n    { name: \"text\", derive: [\"val\", \"gray-500\"] },\n    { name: \"-hover-text\", derive: [\"mix\", \"text\", \"background\", 25] },\n  ]),\n);\n\n/* BorderBox */\ncolorRules = colorRules.concat(\n  scoped(\"border-box\", [\n    { name: \"background\", derive: [\"val\", \"white\"] },\n    { name: \"border\", derive: [\"val\", \"gray-300\"] },\n  ]),\n);\n\ncolorRules = colorRules.concat(\n  scoped(\"question\", [\n    { name: \"accent\", derive: [\"val\", \"secondary\"] },\n    { name: \"background\", derive: [\"variant\", \"accent\", 1] },\n    { name: \"border\", derive: [\"variant\", \"accent\", 3] },\n    { name: \"text\", derive: [\"variant\", \"accent\", 9] },\n    { name: \"-question-mark\", derive: [\"variant\", \"accent\", 5] },\n    { name: \"answer-background\", derive: [\"val\", \"background\"] },\n    { name: \"answer-text\", derive: [\"variant\", \"accent\", 9] },\n  ]),\n);\n\n/* Mobile App */\ncolorRules = colorRules.concat(\n  scoped(\"mobile-app\", [\n    { name: \"tab-bar\", derive: [\"val\", \"module-switcher-background\"] },\n    { name: \"tab-bar-item\", derive: [\"val\", \"module-switcher-text\"] },\n    {\n      name: \"tab-bar-item-active\",\n      derive: [\"val\", \"module-switcher--active-text\"],\n    },\n    {\n      name: \"tab-bar-item-active-bg\",\n      derive: [\"val\", \"module-switcher--active-background\"],\n    },\n    { name: \"navigation-bar\", derive: [\"val\", \"header-topbar-background\"] },\n    { name: \"navigation-bar-text\", derive: [\"val\", \"header-topbar-contrast\"] },\n  ]),\n);\n\n/* Channels */\ncolorRules = colorRules.concat(\n  scoped(\"channel\", [\n    { name: \"primary\", derive: [\"val\", \"primary\"], abstract, tailwind },\n    { name: \"background\", derive: [\"val\", \"white\"] },\n    { name: \"widget-background\", derive: [\"val\", \"gray-50\"] },\n    { name: \"widget-title-background\", derive: [\"variant\", \"primary\", 2] },\n    { name: \"link-text\", derive: [\"variant\", \"primary\", 7] },\n    { name: \"link--hover-text\", derive: [\"variant\", \"link-text\", 8] },\n  ]),\n);\ncolorRules = colorRules.concat(\n  flatMap(\n    [\n      [\"spotlight\", \"warning\"],\n      [\"current\", \"info\"],\n      [\"important\", \"danger\"],\n    ],\n    ([name, alert]) =>\n      scoped(`channel-label-${name}`, [\n        {\n          name: \"background\",\n          derive: [\n            \"variant\",\n            alert,\n            2,\n            { saturation: { start: 0.5, rate: 0.8 } },\n          ],\n        },\n        { name: \"text\", derive: [\"mostReadable\", \"background\"] },\n      ]),\n  ),\n);\n\nexport { colorRules };\n\nfunction scoped(scope: string, rules: ColorRule[]): ColorRule[] {\n  return rules.map((r) => ({ ...r, scope }));\n}\n","import {\n  DerivedTheme,\n  ModifiedTheme,\n  Theme,\n} from \"components/administration/designManager/types\";\nimport { useSelector } from \"react-redux\";\nimport { State } from \"../../../@types\";\nimport { defaultTheme } from \"components/administration/designManager/defaultThemes\";\nimport { omit, pickBy } from \"lodash\";\nimport { useMemo } from \"react\";\nimport deriveColors from \"components/administration/designManager/deriveColors\";\nimport { colorRules } from \"components/administration/designManager/rules\";\nimport { ThemeType } from \"components/administration/designManager/api\";\n\nexport function loadOverrideTheme(): Theme | null {\n  const themeRaw = localStorage.getItem(\"overrideTheme\");\n  let theme = null;\n  if (themeRaw) theme = JSON.parse(themeRaw);\n  return theme;\n}\n\n// If the possibility of a test drive is desired, context_slug and theme_type must be included here\nexport function storeOverrideTheme(theme: Theme | null) {\n  if (theme) localStorage.setItem(\"overrideTheme\", JSON.stringify(theme));\n  else localStorage.removeItem(\"overrideTheme\");\n}\n\ntype UseThemeOptions = {\n  baseTheme?: ModifiedTheme | Theme;\n  derive?: \"always\" | \"onOverride\";\n  themeType?: ThemeType;\n};\n\nexport function useTheme({\n  baseTheme,\n  derive,\n  themeType,\n}: UseThemeOptions = {}): DerivedTheme {\n  if (!derive) derive = \"onOverride\";\n\n  // Select theme from state\n  const themeFromState = useSelector((state: State) => {\n    switch (themeType) {\n      case \"network\":\n        return state.theme;\n      case \"groupCategory\":\n        return state.groupCategoryTheme;\n      case \"group\":\n        return state.groupTheme;\n      case \"channel\":\n        return state.channelTheme;\n      default:\n        return state.theme;\n    }\n  });\n\n  // Determine if deriveColors should happen\n  const shouldDerive =\n    derive === \"onOverride\" ? themeFromState?.override : derive === \"always\";\n\n  const [derivedColors, themeWithDefaults] = useMemo(() => {\n    if (!baseTheme) baseTheme = defaultTheme;\n\n    // Add everything from default theme that might be missing in themeFromState\n    const themeWithDefaults = {\n      ...omit(baseTheme, [\"isPreset\"]),\n      ...themeFromState,\n      colors: {\n        ...(\"base\" in baseTheme ? baseTheme.base.colors : {}),\n        ...baseTheme.colors,\n        ...pickBy(themeFromState?.colors, \"color\"),\n      },\n    };\n\n    const derivedColors = shouldDerive\n      ? deriveColors(themeWithDefaults.colors, colorRules)\n      : null;\n\n    return [derivedColors, themeWithDefaults];\n  }, [shouldDerive, baseTheme, themeFromState]);\n\n  return { ...themeWithDefaults, derivedColors };\n}\n","import { cloneDeep } from \"lodash\";\nimport { ColorRule, DeriveFnEnv, ColorObject } from \"./types\";\nimport * as functions from \"./functions\";\n\nexport default function deriveColors(\n  colors: Record<string, ColorObject | undefined>,\n  colorRules: ColorRule[],\n) {\n  const result = cloneDeep(colors);\n\n  colorRules.forEach(({ scope, name, derive, abstract, tailwind }) => {\n    const variableName = scope ? `${scope}-${name}` : name;\n    const env: DeriveFnEnv = { colors: result, scope };\n\n    if (derive && !result[variableName]) {\n      const [fnName, ...args] = derive;\n      const fn = functions[fnName];\n      // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n      // @ts-ignore\n      result[variableName] = fn.apply(env, args);\n    }\n\n    const singleResult = result[variableName];\n    if (singleResult) {\n      if (abstract) singleResult.abstract = true;\n      if (tailwind) singleResult.tailwind = true;\n    }\n  });\n\n  return result;\n}\n","import { reducers } from \"components/administration/designManager/themeSlice\";\nimport { createSlice } from \"@reduxjs/toolkit\";\n\nconst groupCategoryThemeSlice = createSlice({\n  name: \"groupCategoryTheme\",\n  initialState: {},\n  reducers: {\n    ...reducers({ override: false }),\n    resetTheme() {\n      return {};\n    },\n  },\n});\n\nexport const {\n  setTheme,\n  resetTheme,\n  setBannerImage,\n  setLogoImage,\n  changeColor,\n  setHeaderVariant,\n} = groupCategoryThemeSlice.actions;\nexport default groupCategoryThemeSlice.reducer;\n","import { reducers } from \"components/administration/designManager/themeSlice\";\nimport { createSlice } from \"@reduxjs/toolkit\";\n\nconst groupThemeSlice = createSlice({\n  name: \"groupTheme\",\n  initialState: {},\n  reducers: {\n    ...reducers({ override: false }),\n    resetTheme() {\n      return {};\n    },\n  },\n});\n\nexport const {\n  setTheme,\n  resetTheme,\n  setBannerImage,\n  setLogoImage,\n  changeColor,\n  setHeaderVariant,\n} = groupThemeSlice.actions;\nexport default groupThemeSlice.reducer;\n","import { useQuery } from \"react-query\";\nimport { isEmpty } from \"lodash\";\n\nexport const appsApiBaseUrl = () => \"/api/apps\";\nexport const appUrl = ({ externalAppId, appId }) => {\n  if (isEmpty(externalAppId) && isEmpty(appId))\n    throw new Error(\"appId or externalAppId required to build appUrl\");\n\n  return [\n    appsApiBaseUrl(),\n    \"apps\",\n    externalAppId ? `external/${externalAppId}` : appId,\n  ].join(\"/\");\n};\n\nexport const itemUrl = ({ appId, externalAppId, itemId, externalItemId }) => {\n  if (isEmpty(itemId) && isEmpty(externalItemId))\n    throw new Error(\"itemId or externalItemId required to build itemUrl\");\n\n  return [\n    appUrl({ appId, externalAppId }),\n    \"items\",\n    externalItemId ? `external/${externalItemId}` : itemId,\n  ].join(\"/\");\n};\n\ntype Property = {\n  type: string;\n  name: string;\n};\n\ntype AppPayload = {\n  collection_layout: {\n    layout: \"table\" | \"list\" | \"wall\";\n    options: {\n      table: { stage: boolean };\n      list: {\n        stage: boolean;\n        teaser: {\n          body_template: string | undefined;\n        };\n      };\n      wall: { stage: boolean };\n    };\n  };\n  id: string;\n  name: string;\n  title_property: string;\n  properties: Property[];\n};\n\nexport const useLoadApp = ({ appId, externalAppId }, options?) =>\n  useQuery<AppPayload>(appUrl({ appId, externalAppId }), options);\n\ntype ItemPayload = {\n  id: string;\n  values: {\n    [key: string]: undefined | string | { url: string } | { url: string }[];\n  };\n  display_values: object;\n};\n\nexport const useLoadItem = ({ appId, externalAppId, itemId, externalItemId }) =>\n  useQuery<ItemPayload>(\n    itemUrl({ appId, externalAppId, itemId, externalItemId }),\n  );\n","import {\n  isPlainObject,\n  some,\n  each,\n  get,\n  map,\n  find,\n  isEmpty,\n  isArray,\n  compact,\n  split,\n  flatten,\n  values,\n} from \"lodash\";\n\nexport const isPropRequired = (prop) =>\n  isPlainObject(get(prop, \"required\"))\n    ? some(values(prop.required))\n    : !!get(prop, \"required\");\n\n// TODO maybe remove?\nexport const transformPropsForReduxForm = (item, properties) => {\n  let values = {};\n  each(get(item, \"values\"), (value, key) => {\n    const prop = find(properties, (prop) => prop.name === key);\n    values[key] = transformProp(\n      get(prop, \"type\"),\n      get(item, [\"display_values\", key])\n        ? get(item, [\"display_values\", key])\n        : value,\n    );\n  });\n  return values;\n};\n\n// TODO maybe remove?\nexport const transformPropsFromReduxForm = (propType, properties, values) => {\n  const propsForType = getPropsForType(propType, properties);\n  let transformedValues = {};\n\n  each(propsForType, (prop) => {\n    const value = get(values, get(prop, \"name\"));\n    if (!isEmpty(value)) {\n      transformedValues[get(prop, \"name\")] = isArray(value)\n        ? flatten(map(value, (val) => transformValue(propType, val)))\n        : transformValue(propType, value);\n    }\n  });\n\n  return transformedValues;\n};\n\nexport const getPropsForType = (type, properties) =>\n  compact(\n    map(properties, (prop) => {\n      if (get(prop, \"type\") === type) {\n        return prop;\n      }\n    }),\n  );\n\nexport const transformValue = (type, value) => {\n  switch (type) {\n    case \"image\":\n      return [\n        {\n          id: get(value, \"id\"),\n          state: get(value, \"state\"),\n        },\n      ];\n    case \"file\":\n      return {\n        id: get(value, \"id\"),\n        state: get(value, \"state\"),\n      };\n    case \"tag\": {\n      let isNew = split(get(value, \"value\"), \"_\")[0] === \"new\";\n\n      const name = isNew ? get(value, \"label\")[2] : get(value, \"label\");\n\n      isNew = isNew ? { new: true } : {};\n\n      return { id: get(value, \"value\"), name, ...isNew };\n    }\n    case \"selection\":\n      return get(value, \"value\");\n    case \"html\":\n      return value;\n    case \"relation\":\n    case \"membership\":\n      return {\n        id: get(value, \"value\"),\n        displayValue: get(value, \"label\"),\n      };\n  }\n};\n\nexport const transformProp = (type, value) => {\n  switch (type) {\n    case \"url\":\n      return get(value, \"url\");\n    case \"tag\":\n      return map(value, (tag) => ({ value: tag.id, label: tag.name }));\n    case \"selection\":\n    case \"relation\":\n    case \"membership\":\n      return isArray(value)\n        ? map(value, (v) => ({\n            value: v.id,\n            label: v.displayValue,\n          }))\n        : {\n            value: value.id,\n            label: value.displayValue,\n          };\n    default:\n      return value;\n  }\n};\n","import { reducers } from \"components/administration/designManager/themeSlice\";\nimport { createSlice } from \"@reduxjs/toolkit\";\n\nconst channelThemeSlice = createSlice({\n  name: \"channelTheme\",\n  initialState: {},\n  reducers: {\n    ...reducers({ override: true }),\n    resetTheme() {\n      return {};\n    },\n  },\n});\n\nexport const {\n  setTheme,\n  resetTheme,\n  setBannerImage,\n  setLogoImage,\n  changeColor,\n  setHeaderVariant,\n} = channelThemeSlice.actions;\nexport default channelThemeSlice.reducer;\n","const reParamSearch = /([?&])_=[^&]*/;\nconst reQueryString = /\\?/;\nlet nonce = new Date().getTime();\n\n// Search for a '_' parameter in the query string\n// If it already exists then set the value with the current time\n// Otherwise add a new '_' parameter to the end with the current time\n//\n// Inspired by https://github.com/github/fetch/issues/629#issuecomment-581652775\nexport default function bustCache(url) {\n  if (reParamSearch.test(url)) {\n    return url.replace(reParamSearch, \"$1_=\" + nonce++);\n  }\n  return `${url}${(reQueryString.test(url) ? \"&\" : \"?\") + \"_=\" + nonce++}`;\n}\n","import parseHeader from \"./parseHeader\";\n\nconst transformLinkHeader = (action, state, res) =>\n  res.json().then((json) => ({\n    data: json,\n    loadMoreUrl: parseHeader(res.headers.get(\"Link\")),\n  }));\n\nexport default transformLinkHeader;\n","import { RSAA } from \"redux-api-middleware\";\nimport { isPlainObject, isEmpty, get, flow } from \"lodash\";\nimport { SubmissionError } from \"redux-form\";\nimport bustCache from \"./api/bustCache\";\n\nexport { default as parseHeader } from \"./api/parseHeader\";\nexport { default as transformLinkHeader } from \"./api/transformLinkHeader\";\nimport indexBy from \"./indexBy\";\n\nconst maybeSerializeBodyAsJson = ({ body }) =>\n  isPlainObject(body) ? JSON.stringify(body) : body;\n\nexport const csrfTokenHeader = () => {\n  const meta = document.querySelector('meta[name=\"csrf-token\"]');\n  return { \"X-CSRF-Token\": meta ? meta.getAttribute(\"content\") : null };\n};\n\nexport const headers = (method, meta = {}) => {\n  let h = { Accept: \"application/json\", \"Cache-Control\": \"no-store\" };\n\n  if (method === \"POST\" || method === \"PUT\" || method === \"DELETE\") {\n    h = { ...h, ...csrfTokenHeader() };\n  }\n\n  if (!isEmpty(meta.body)) {\n    h[\"Content-Type\"] = \"application/json\";\n  }\n\n  if (isPlainObject(meta.headers)) {\n    return h;\n  } else {\n    return { ...h, ...meta.headers };\n  }\n};\n\nconst defaultTransformer = async (action, state, res) => {\n  if (res.status == 204) {\n    return null;\n  }\n\n  return res.json().then((json) => json);\n};\n\nconst createApiAction = ({\n  baseType,\n  endpoint,\n  method = \"GET\",\n  transformPayload = defaultTransformer,\n}) => {\n  const types = [\"REQUEST\", \"SUCCESS\", \"FAILURE\"].map(\n    (t) => `${baseType}/${t}`,\n  );\n\n  if (fetch.polyfill) {\n    endpoint = flow(\n      endpoint,\n      // Appends cache busting param to polyfilled fetch requests for IE11 compat\n      bustCache,\n    );\n  }\n\n  const actionCreator = (meta) => {\n    return {\n      [RSAA]: {\n        method,\n        endpoint: endpoint(meta),\n        types: [\n          { type: `${baseType}/REQUEST`, meta },\n          {\n            type: `${baseType}/SUCCESS`,\n            payload: transformPayload,\n            meta: meta,\n          },\n          { type: `${baseType}/FAILURE`, meta },\n        ],\n        credentials: \"same-origin\",\n        headers: headers(method, meta),\n        body: maybeSerializeBodyAsJson(meta),\n      },\n    };\n  };\n\n  actionCreator.REQUEST = types[0];\n  actionCreator.SUCCESS = types[1];\n  actionCreator.FAILURE = types[2];\n\n  return actionCreator;\n};\n\nconst createApiResultReducer = (\n  { REQUEST, SUCCESS, FAILURE },\n  options = {},\n) => {\n  const defaultState = {\n    data: options.defaultData || {},\n    loading: false,\n    error: null,\n    pagination: options.pagination ? { page: 1 } : {},\n    meta: {},\n  };\n\n  return (state = defaultState, action) => {\n    switch (action.type) {\n      case REQUEST: {\n        return {\n          ...state,\n          data: options.resetOnRequest ? defaultState.data : state.data,\n          loading: true,\n          error: null,\n          meta: action.meta,\n        };\n      }\n      case SUCCESS: {\n        let payload = options.nestedEntries\n          ? get(action.payload, options.nestedEntries)\n          : action.payload;\n\n        const dataKey = options.dataKey || \"data\";\n        const moreUrlKey = options.moreUrlKey || \"loadMoreUrl\";\n        const loadMoreUrl = get(payload, moreUrlKey);\n\n        if (get(payload, dataKey)) {\n          payload = get(payload, dataKey);\n        }\n        const data = options.indexBy\n          ? indexBy(payload, options.indexBy)\n          : payload;\n\n        return {\n          ...state,\n          data,\n          loading: false,\n          pagination: options.pagination\n            ? {\n                ...action.payload.pagination,\n                limit: get(action, \"payload.limit\"),\n                total: get(action, \"payload.total\"),\n                offset: get(action, \"payload.offset\"),\n              }\n            : null,\n          meta: action.meta,\n          loadMoreUrl: loadMoreUrl,\n        };\n      }\n      case FAILURE: {\n        return {\n          ...state,\n          data: {},\n          loading: false,\n          error: action.payload,\n        };\n      }\n      default:\n        return state;\n    }\n  };\n};\n\n// Adapt redux-api-middleware action creators to be used as onSubmit in reduxForm\n// @example\n//   submitApi((values, props) => ({ /* my payload */ }))(persistItem)\nconst submitApi =\n  (valuesAndPropsToMeta, errorsTransformer = null) =>\n  (actionCreator) =>\n  async (values, dispatch, props) => {\n    const response = await dispatch(\n      actionCreator(valuesAndPropsToMeta(values, props)),\n    );\n    if (response.error) {\n      const [errorMessage, errors] = errorsTransformer\n        ? errorsTransformer(response.payload)\n        : [I18n.t(\"js.generic_error\"), {}];\n\n      throw new SubmissionError({\n        originalError: response.payload,\n        _error: errorMessage,\n        ...errors,\n      });\n    }\n    return response.payload;\n  };\n\nexport { createApiAction, indexBy, createApiResultReducer, submitApi };\n","import { reduce, filter, map, isString } from \"lodash\";\n\nconst parserRegex = /\\s*(.+)\\s*=\\s*\"(.+)\"/;\n\nexport function parseLink(link) {\n  const parts = link.split(\";\");\n  const result = {\n    url: parts\n      .shift()\n      .trim()\n      .replace(/(^<|>$)/g, \"\"),\n  };\n  return parts.reduce((acc, part) => {\n    const match = part.match(parserRegex);\n    if (match) {\n      return { ...acc, [match[1]]: match[2] };\n    }\n    return acc;\n  }, result);\n}\n\nexport default function parseHeader(header) {\n  if (!isString(header)) {\n    return {};\n  }\n  return reduce(\n    filter(map(header.split(\",\"), parseLink), (x) => x && x.rel),\n    (acc, x) => ({ ...acc, [x.rel]: x.url }),\n    {},\n  );\n}\n","export default function documentReady(fn) {\n  if (document.readyState !== \"loading\") {\n    fn();\n  } else {\n    document.addEventListener(\"DOMContentLoaded\", fn);\n  }\n}\n","import { reduce } from \"lodash\";\n\n// Turns given collection into lookup object using given key value\nexport default function indexBy<T>(\n  collection: T[] | undefined,\n  key: string,\n): { [key: string]: T | undefined } {\n  return reduce(\n    collection,\n    (obj, elem) => {\n      obj[elem[key]] = elem;\n      return obj;\n    },\n    {},\n  );\n}\n","export default function extractUrl(content: string) {\n  const regex =\n    /(?:^|\\s|[^\\w/])(?<url>((https?:\\/\\/)|(www\\.))[\\w-]+(?:\\.[\\w-]+)+(?:[\\w.,@?^=%&:/~+#-]*[\\w/])?)/gi;\n  const match = regex.exec(content);\n  if (match) return match.groups?.url || null;\n  return null;\n}\n","import { Remarkable } from \"remarkable\";\nimport { linkify } from \"remarkable/linkify\";\nimport { isString, memoize } from \"lodash\";\nimport extractUrl from \"./extractUrl\";\n\nexport const setApplication = () => ({\n  ...window.Application,\n  getNewMarkdownRenderer: (options = {}) =>\n    new Remarkable(options).use(linkify),\n  getMarkdownRenderer: memoize(() =>\n    window.Application.getNewMarkdownRenderer(),\n  ),\n  markdown: (text) => {\n    if (isString(text)) {\n      return (\n        window.Application.getMarkdownRenderer()\n          .render(text)\n          // convert <h1> to <h2> etc.\n          .replace(\n            /<(\\/?)h([1-5])>/g,\n            (match, slash, number) => `<${slash}h${number * 1 + 1}>`,\n          )\n      );\n    } else {\n      return \"\";\n    }\n  },\n  extractUrl,\n});\n","import { createSlice, PayloadAction } from \"@reduxjs/toolkit\";\n\nexport type AppState = {\n  title: string | null;\n};\n\nconst initialState: AppState = {\n  title: null,\n};\n\nconst appSlice = createSlice({\n  name: \"app\",\n  initialState,\n  reducers: {\n    setTitle(state, action: PayloadAction<string>) {\n      state.title = action.payload;\n    },\n  },\n});\n\nexport const { setTitle } = appSlice.actions;\nexport default appSlice.reducer;\n","import { combineReducers } from \"redux\";\nimport { createSlice, PayloadAction } from \"@reduxjs/toolkit\";\n\nimport { Group } from \"../@types\";\n\ntype GroupsBySlugState = {\n  [slug: string]: Group | undefined;\n};\n\nconst initialState: GroupsBySlugState = {};\n\nconst groupsBySlugSlice = createSlice({\n  name: \"groupsBySlug\",\n  initialState,\n  reducers: {\n    toggleFavorited(\n      state,\n      { payload }: PayloadAction<{ groupSlug: string; favorited: boolean }>,\n    ) {\n      const group = state[payload.groupSlug];\n      if (group) group.favorited = payload.favorited;\n    },\n    toggleSubscribed(\n      state,\n      {\n        payload,\n      }: PayloadAction<{ groupSlug: string; subscription_status: boolean }>,\n    ) {\n      const group = state[payload.groupSlug];\n      if (group) group.subscription_status = payload.subscription_status;\n    },\n  },\n});\n\nconst reducer = combineReducers({\n  bySlug: groupsBySlugSlice.reducer,\n  myGroupSlugs: (state = null) => state,\n});\n\nexport default reducer;\nexport const { toggleFavorited, toggleSubscribed } = groupsBySlugSlice.actions;\n","import { put, take, call, select, actionChannel } from \"redux-saga/effects\";\nimport { END, eventChannel, buffers } from \"redux-saga\";\nimport { map, get, find } from \"lodash\";\nimport axios from \"axios\";\nimport { change, formValueSelector } from \"redux-form\";\n\nimport { FILES } from \"actions/files\";\n\n// Returns change action with updated file in value\nconst createUpdateFileValue =\n  ({ form, inputName, clientId }) =>\n  (value, file) => {\n    const newFileValues = map(value, (fileValue) =>\n      fileValue.clientId === clientId ? { ...fileValue, ...file } : fileValue,\n    );\n    return change(form, inputName, newFileValues);\n  };\n\n// Returns true if file identified by given clientId is not present in value\nconst fileWasRemoved = (value, { clientId }) =>\n  find(value, { clientId }) === undefined;\n\n/*\nManages the upload of a single file\n@param {function} postWithProgress - function which performs the upload, DI for storybook\n@param {File} file\n@param {storageDirectory} string - \"images\" or \"files\"\n@param {form} string - name of the form where we are uploading\n@param {inputName} string - name of the field where we are uploading\n */\nexport function* fileUploader(\n  postWithProgress,\n  { file, clientId, storageDirectory, form, inputName },\n) {\n  const data = new FormData();\n  data.append(\"file\", file);\n  data.append(\"name\", file.name);\n  data.append(\"type\", file.type);\n  data.append(\"client_size\", file.size); // for debugging of #897\n  data.append(\"external_id\", clientId);\n\n  // This creates a upload channel which emits the different\n  // callbacks and promises in an action like style.\n  const channel = postWithProgress(`/api/storage/${storageDirectory}`, data);\n\n  const updateFileValue = createUpdateFileValue({ form, inputName, clientId });\n\n  while (true) {\n    const emitterResult = yield take(channel);\n\n    const value = yield select(formValueSelector(form), inputName);\n    if (fileWasRemoved(value, { clientId })) {\n      channel.close();\n      return;\n    }\n\n    switch (emitterResult.type) {\n      case \"PROGRESS\": {\n        yield put(updateFileValue(value, { progress: emitterResult.progress }));\n        break;\n      }\n      case \"SUCCESS\": {\n        yield put(\n          updateFileValue(value, {\n            ...get(emitterResult, [\"result\", \"data\"]),\n            progress: 100,\n          }),\n        );\n        yield put({\n          type: FILES.UPLOAD.SUCCESS,\n          payload: get(emitterResult, [\"result\", \"data\"]),\n        });\n        break;\n      }\n      case \"FAILURE\": {\n        yield put(\n          updateFileValue(value, {\n            state: \"failed\",\n            status: emitterResult.error.response.status,\n          }),\n        );\n        yield put({ type: FILES.UPLOAD.FAILURE, error: emitterResult.error });\n        break;\n      }\n    }\n  }\n}\n\n// Creates cancelable event channel where the following events are emitted:\n// - { type: \"PROGRESS\", progress: 96.2 }\n// - { type: \"SUCCESS\", result: { id: 123, ... } } // result = api response json\n// - { type: \"FAILURE\", error: ApiError }\nconst defaultPostWithProgress = (url, data) =>\n  eventChannel((emit) => {\n    const controller = new AbortController();\n    const uploader = axios.post(url, data, {\n      signal: controller.signal,\n      onUploadProgress: ({ loaded, total }) => {\n        emit({ type: \"PROGRESS\", progress: (loaded * 100) / total });\n      },\n    });\n\n    uploader\n      .then((result) => {\n        emit({ type: \"SUCCESS\", result });\n        emit(END);\n      })\n      .catch((e) => {\n        emit({ type: \"FAILURE\", error: e });\n        emit(END);\n      });\n\n    return () => {\n      controller.abort();\n    };\n  });\n\n// Saga to manage file uploads\n// postWithProgress function is dependency injectable (i.e. for storybook)\n// and defaults to defaultPostWithProgress\nexport default function* filesSaga(options = {}) {\n  const postWithProgress = options.postWithProgress || defaultPostWithProgress;\n\n  const uploadRequestChannel = yield actionChannel(\n    FILES.UPLOAD.REQUEST,\n    buffers.expanding(10),\n  );\n\n  // can be replaced with takeLeading after upgrading redux-saga\n  while (true) {\n    const action = yield take(uploadRequestChannel);\n    yield call(fileUploader, postWithProgress, action);\n  }\n}\n","import { get } from \"lodash\";\nimport { createSelector } from \"reselect\";\nimport { currentRouteParamsSelector } from \"./navigation\";\n\nimport { transformPropsForReduxForm } from \"components/appCreator/properties/helpers\";\n\nexport const itemsInfoSelector = (state) => get(state, \"appCreator.items\");\n\nexport const itemsSelector = (state) =>\n  get(state, [\"appCreator\", \"items\", \"data\"]);\n\nexport const selectItemResult = (state) => get(state, [\"appCreator\", \"item\"]);\nexport const itemSelector = (state) => get(state, \"appCreator.item.data\");\nexport const currentItemIdSelector = (state) => get(itemSelector(state), \"id\");\n\nexport const loadMoreUrlsSelector = (state) =>\n  get(state, [\"appCreator\", \"items\", \"loadMoreUrls\"]);\n\nexport const totalArchivedItemsSelector = (state) =>\n  get(state, [\"appCreator\", \"items\", \"totalArchivedItems\"]);\n\nexport const itemPaginationSelector = (state) =>\n  get(itemsInfoSelector(state), \"pagination\");\n\nexport const appsInfoSelector = (state) => get(state, \"appCreator.apps\");\n\nexport const appsSelector = (state) => get(appsInfoSelector(state), \"data\");\n\nexport const selectAppResult = (state) => get(state, [\"appCreator\", \"app\"]);\nexport const appSelector = (state) => get(state, \"appCreator.app.data\");\n\nexport const appLinkSelector = (state) => get(state, \"appCreator.appLink\");\n\nexport const propertiesSelector = (state) =>\n  get(appSelector(state), \"properties\");\n\nexport const itemsExportsSelector = (state) =>\n  get(state, \"appCreator.exports.data\");\n\nexport const itemsLoadingSelector = (state) =>\n  get(state, \"appCreator.items.loading\");\n\nexport const itemsErrorSelector = (state) =>\n  get(state, \"appCreator.items.error\");\n\nexport const itemLoadingSelector = (state) =>\n  get(state, \"appCreator.item.loading\");\n\n// item form\nexport const initialFormValuesSelector = createSelector(\n  [itemSelector, appSelector],\n  (item, app) => transformPropsForReduxForm(item, get(app, \"properties\")),\n);\n\nexport const appSlugSelector = (state) =>\n  get(currentRouteParamsSelector(state), \"slug\");\n\nexport const relationOptionsSelector = (state) =>\n  get(state, [\"appCreator\", \"relationOptions\"]);\n","import { createSelector } from \"reselect\";\nimport { get } from \"lodash\";\n\nexport const currentRouteSelector = (state) =>\n  get(state, \"navigation.currentRoute\");\n\nexport const currentRouteParamsSelector = (state) =>\n  get(currentRouteSelector(state), \"params\");\n\nexport const currentGroupSlugSelector = (state) =>\n  get(currentRouteParamsSelector(state), \"groupSlug\");\n\nexport const currentAppSlugSelector = (state) =>\n  get(currentRouteParamsSelector(state), \"appSlug\");\n\nexport const currentPageSelector = (state) =>\n  get(currentRouteParamsSelector(state), \"page\");\n\nexport const currentAppUrlSelector = createSelector(\n  [currentGroupSlugSelector, currentAppSlugSelector],\n  (groupSlug, appSlug) =>\n    `/${groupSlug ? `groups/${groupSlug}/` : \"\"}apps/${appSlug}/items`,\n);\n","import { createAction } from \"redux-actions\";\n\nexport const route = createAction(\"ROUTE\");\n","import { combineReducers } from \"redux\";\nimport { handleAction } from \"redux-actions\";\nimport { route } from \"actions/navigation\";\n\nexport default combineReducers({\n  currentRoute: handleAction(route, (state, { payload }) => payload, null),\n});\n","import { createApiAction } from \"helpers/api\";\nimport { createFormAction } from \"redux-form-saga\";\n\nexport const NAMESPACE = \"administration/appCreator\";\n\nexport const fetchApps = createApiAction({\n  method: \"GET\",\n  endpoint: ({ url }) => url,\n  baseType: `${NAMESPACE}/APPS`,\n});\n\nexport const saveApp = createFormAction(`${NAMESPACE}/APP/SAVE`);\n\nexport const createApp = createApiAction({\n  method: \"POST\",\n  endpoint: () => \"/api/apps/apps\",\n  baseType: `${NAMESPACE}/APP/CREATE`,\n});\n\nexport const postAppId = createApiAction({\n  method: \"POST\",\n  endpoint: ({ groupSlug }) =>\n    `${groupSlug ? `/groups/${groupSlug}` : \"\"}/administration/apps`,\n  baseType: `${NAMESPACE}/APPS/POST_APP_ID`,\n});\n\nexport const updateApp = createApiAction({\n  method: \"PUT\",\n  endpoint: ({ appId }) => `/api/apps/apps/${appId}`,\n  baseType: `${NAMESPACE}/APP/UPDATE`,\n});\n\nexport const deleteApp = createApiAction({\n  method: \"DELETE\",\n  endpoint: ({ appSlug }) => `apps/${appSlug}`,\n  baseType: `${NAMESPACE}/APP/DELETE`,\n});\n","import {\n  archiveItem,\n  fetchItems,\n  loadMoreItemsByColumn,\n  moveItem,\n  unarchiveItem,\n  updateItem,\n} from \"../../actions/appCreator\";\nimport {\n  concat,\n  filter,\n  findIndex,\n  findKey,\n  flatMap,\n  get,\n  isEmpty,\n  omit,\n  pull,\n  toNumber,\n} from \"lodash\";\n\nconst defaultState = {\n  data: [],\n  loadMoreUrls: {},\n  loading: false,\n  error: null,\n  meta: {},\n};\n\nconst itemsRequestReducer = (state = defaultState, action) => {\n  let loadMoreUrls = get(action.payload, \"loadMoreUrls\");\n\n  switch (action.type) {\n    case fetchItems.REQUEST:\n    case loadMoreItemsByColumn.REQUEST:\n      return {\n        ...state,\n        loading: true,\n        error: null,\n      };\n    case loadMoreItemsByColumn.SUCCESS:\n      return {\n        ...state,\n        data: concat(state.data, get(action.payload, \"data\")),\n        loadMoreUrls: !isEmpty(loadMoreUrls)\n          ? { ...state.loadMoreUrls, ...loadMoreUrls }\n          : omit(\n              state.loadMoreUrls,\n              findKey(\n                state.loadMoreUrls,\n                (url) => url === get(action, \"meta.url\"),\n              ),\n            ),\n        loading: false,\n        meta: action.meta,\n      };\n    case fetchItems.SUCCESS:\n      return {\n        ...state,\n        data: get(action, \"payload.data\") || get(action, \"payload\"),\n        pagination: get(action, \"payload.pagination\") || null,\n        loadMoreUrls: {\n          ...state.loadMoreUrls,\n          ...loadMoreUrls,\n        },\n        totalArchivedItems: get(action.payload, \"totalArchivedItems\"),\n        loading: false,\n        meta: action.meta,\n      };\n    case fetchItems.FAILURE: {\n      return {\n        ...state,\n        data: [],\n        loading: false,\n        error: action.payload,\n      };\n    }\n    case archiveItem.REQUEST: {\n      const column = get(action, \"meta.column\");\n      const totalArchivedItems = column\n        ? {\n            ...state.totalArchivedItems,\n            [column]: state.totalArchivedItems\n              ? toNumber(state.totalArchivedItems[column]) + 1\n              : 0 + 1,\n          }\n        : toNumber(state.totalArchivedItems) + 1;\n\n      return {\n        ...state,\n        data: filter(state.data, (i) => i.id !== action.meta.itemId),\n        totalArchivedItems,\n      };\n    }\n    case unarchiveItem.REQUEST: {\n      return {\n        ...state,\n        data: filter(state.data, (i) => i.id !== action.meta.itemId),\n      };\n    }\n    default:\n      return state;\n  }\n};\n\nexport default (state, action) => {\n  if (\n    action.type === updateItem.REQUEST &&\n    action.meta.optimistic &&\n    action.meta.insertAfterCardId !== action.meta.itemId\n  ) {\n    const newItem =\n      state.data[findIndex(state.data, (i) => i.id === action.meta.itemId)];\n    const changedItem = {\n      ...newItem,\n      values: { ...newItem.values, ...get(action, \"meta.body.values\") },\n    };\n    const data = !isEmpty(action.meta.insertAfterCardId)\n      ? flatMap(pull(state.data, newItem), (item) => {\n          if (item.id === action.meta.insertAfterCardId) {\n            return [item, changedItem];\n          }\n          return item;\n        })\n      : flatMap([changedItem, pull(state.data, newItem)]);\n    return { ...state, data };\n  }\n\n  switch (action.type) {\n    case moveItem.REQUEST: {\n      const newItem = get(state, \"data\")[\n        findIndex(\n          get(state, \"data\"),\n          (i) => i.id === get(action, \"meta.itemId\"),\n        )\n      ];\n      const changedItem = {\n        ...newItem,\n        values: { ...newItem.values, ...get(action, \"meta.body.values\") },\n      };\n      const data = !isEmpty(action.meta.insertAfterCardId)\n        ? flatMap(pull(state.data, newItem), (item) => {\n            if (item.id === action.meta.insertAfterCardId) {\n              return [item, changedItem];\n            }\n            return item;\n          })\n        : flatMap([changedItem, pull(state.data, newItem)]);\n      return { ...state, data };\n    }\n    case moveItem.SUCCESS: {\n      const newItem = get(state, \"data\")[\n        findIndex(\n          get(state, \"data\"),\n          (i) => i.id === get(action, \"meta.itemId\"),\n        )\n      ];\n\n      const data = !isEmpty(action.meta.insertAfterCardId)\n        ? flatMap(pull(state.data, newItem), (item) => {\n            if (item.id === action.meta.insertAfterCardId) {\n              return [item, get(action, \"payload\")];\n            }\n            return item;\n          })\n        : flatMap([get(action, \"payload\"), pull(state.data, newItem)]);\n      return { ...state, data };\n    }\n  }\n  return itemsRequestReducer(state, action);\n};\n","import { combineReducers } from \"redux\";\nimport { createApiResultReducer } from \"helpers/api\";\nimport {\n  fetchApp,\n  fetchAppLink,\n  fetchItem,\n  exportItemsGetLast,\n} from \"actions/appCreator\";\nimport { fetchApps } from \"actions/administration/appCreator\";\nimport items from \"./items\";\n\nexport default combineReducers({\n  item: createApiResultReducer(fetchItem, {\n    resetOnRequest: true,\n  }),\n  items,\n  app: createApiResultReducer(fetchApp, {\n    resetOnRequest: true,\n  }),\n  appLink: createApiResultReducer(fetchAppLink),\n  apps: createApiResultReducer(fetchApps, {\n    defaultData: [],\n    resetOnRequest: true,\n  }),\n  exports: createApiResultReducer(exportItemsGetLast),\n});\n","import { combineReducers } from \"redux\";\n\nimport { FOLDER } from \"actions/files\";\n\nconst currentFolder = (state = null, action) => {\n  switch (action.type) {\n    case FOLDER.SELECT:\n      return { id: action.meta.id, namespace: action.meta.namespace };\n    default:\n      return state;\n  }\n};\n\nconst reducer = combineReducers({\n  currentFolder,\n});\n\nexport default reducer;\n","import { map } from \"lodash\";\nimport {\n  REMOVE_WIDGET,\n  CHANGE_WIDGET_VALUE,\n  SELECT_WIDGET,\n  ADD_OR_MOVE_WIDGET,\n  SET_GROUP_ID,\n  RESET_SUCCESSFUL_SAVE,\n  SET_IDENTIFIER,\n} from \"actions/administration/widgetbar\";\nimport {\n  FETCH_CALENDARS_ACTIONS,\n  FETCH_WIDGETBAR_ACTIONS,\n  UPDATE_WIDGETBAR_ACTIONS,\n} from \"../../../actions/administration/widgetbar\";\n\nconst initialState = {\n  widgets: [],\n  selectedWidgetIndex: 0,\n  identifier: \"\",\n  groupId: \"\",\n  successfulSave: false,\n  calendars: [],\n};\n\nconst editWidgetbarReducer = (state = initialState, action) => {\n  switch (action.type) {\n    case FETCH_WIDGETBAR_ACTIONS.SUCCESS: {\n      const widgets = map(action.payload.widgets, (w) => {\n        // radio buttons are needing the bool as a string\n        if (w.properties.show_age) {\n          return {\n            ...w,\n            properties: {\n              ...w.properties,\n              show_age: w.properties.show_age.toString(),\n            },\n          };\n        }\n        return w;\n      });\n\n      return {\n        ...state,\n        widgets: widgets,\n        selectedWidgetIndex: 0,\n      };\n    }\n    case FETCH_CALENDARS_ACTIONS.SUCCESS: {\n      return {\n        ...state,\n        calendars: action.payload.calendars,\n      };\n    }\n    case UPDATE_WIDGETBAR_ACTIONS.SUCCESS: {\n      return {\n        ...state,\n        successfulSave: true,\n      };\n    }\n    case RESET_SUCCESSFUL_SAVE: {\n      return {\n        ...state,\n        successfulSave: false,\n      };\n    }\n    case ADD_OR_MOVE_WIDGET: {\n      const widgets = [...state.widgets];\n      const index = state.widgets.indexOf(action.data);\n      let widget;\n\n      // widget not found then it is new, if it is found then change position\n      if (index === -1) {\n        widget = {\n          type: action.data.type,\n          properties: {\n            ...action.data.properties,\n          },\n        };\n      } else {\n        widget = widgets.splice(index, 1)[0];\n      }\n      widgets.splice(action.index, 0, widget);\n\n      return {\n        ...state,\n        widgets: widgets,\n        selectedWidgetIndex: action.index,\n      };\n    }\n    case REMOVE_WIDGET: {\n      return {\n        ...state,\n        widgets: [\n          ...state.widgets.slice(0, state.selectedWidgetIndex),\n          ...state.widgets.slice(\n            state.selectedWidgetIndex + 1,\n            state.widgets.length,\n          ),\n        ],\n        selectedWidgetIndex: 0,\n      };\n    }\n    case CHANGE_WIDGET_VALUE: {\n      return {\n        ...state,\n        widgets: [\n          ...state.widgets.slice(\n            0,\n            state.selectedWidgetIndex === 0 ? 0 : state.selectedWidgetIndex,\n          ),\n          {\n            ...state.widgets[state.selectedWidgetIndex],\n            properties: {\n              ...state.widgets[state.selectedWidgetIndex].properties,\n              [action.propertyKey]: action.data,\n            },\n          },\n          ...state.widgets.slice(\n            state.selectedWidgetIndex + 1,\n            state.widgets.length,\n          ),\n        ],\n      };\n    }\n    case SELECT_WIDGET: {\n      return {\n        ...state,\n        selectedWidgetIndex: action.data,\n      };\n    }\n    case SET_GROUP_ID: {\n      return {\n        ...state,\n        ...action.data,\n      };\n    }\n    case SET_IDENTIFIER: {\n      return {\n        ...state,\n        identifier: action.data,\n      };\n    }\n    default:\n      return state;\n  }\n};\n\nexport default editWidgetbarReducer;\n","import { FETCH_WIDGETBAR_ACTIONS } from \"../../../actions/administration/widgetbar\";\n\nconst initialState = {\n  widgetbars: [],\n};\n\nconst indexReducer = (state = initialState, action) => {\n  switch (action.type) {\n    case FETCH_WIDGETBAR_ACTIONS.SUCCESS: {\n      return {\n        ...state,\n        widgetbars: action.payload.widgetbars,\n      };\n    }\n    default: {\n      return state;\n    }\n  }\n};\n\nexport default indexReducer;\n","import { createApiResultReducer } from \"helpers/api\";\nimport { combineReducers } from \"redux\";\nimport editWidgetbarReducer from \"reducers/administration/widgetbar/edit\";\nimport indexReducer from \"reducers/administration/widgetbar/index\";\nimport { FETCH_WIDGETBAR_ACTIONS } from \"../../actions/administration/widgetbar\";\n\nexport default combineReducers({\n  fetchWidgetbar: createApiResultReducer(FETCH_WIDGETBAR_ACTIONS),\n  edit: editWidgetbarReducer,\n  index: indexReducer,\n});\n","import { createStore, applyMiddleware, combineReducers } from \"redux\";\nimport promiseMiddleware from \"redux-promise\";\nimport { createLogger } from \"redux-logger\";\nimport { apiMiddleware } from \"redux-api-middleware\";\nimport { reducer as formReducer } from \"redux-form\";\nimport createSagaMiddleware from \"redux-saga\";\nimport { map } from \"lodash\";\n\nimport app from \"reducers/app\";\nimport theme from \"components/administration/designManager/themeSlice\";\nimport groupCategoryTheme from \"components/administration/designManagerLight/groupCategoryThemeSlice\";\nimport groupTheme from \"components/administration/designManagerLight/groupThemeSlice\";\nimport channelTheme from \"components/channels/design/channelThemeSlice\";\nimport navigation from \"reducers/navigation\";\nimport groups from \"reducers/groups\";\nimport appCreator from \"reducers/appCreator\";\nimport folders from \"reducers/folders\";\nimport currentMember from \"reducers/currentMember\";\n\nimport administrationWidgetbarReducer from \"reducers/administration/widgetbar\";\nimport indexBy from \"helpers/indexBy\";\nimport rootSaga from \"./sagas\";\n\nconst defaultReducers = {\n  app,\n  theme,\n  groupCategoryTheme,\n  groupTheme,\n  channelTheme,\n  network: (state = null) => state, // from init\n  groups,\n  currentMember,\n  form: formReducer,\n  appCreator,\n  navigation,\n  folders,\n  administration: combineReducers({\n    widgetbar: administrationWidgetbarReducer,\n  }),\n};\n\n// Useful in storybook where there is no Preload\nconst Preload = window.Preload || {\n  current_network: {},\n  my_groups: [],\n  current_member: {},\n};\n\nconst initialState = {\n  network: Preload.current_network,\n  groups: {\n    bySlug: indexBy(Preload.my_groups, \"slug\"),\n    myGroupSlugs: map(Preload.my_groups, \"slug\"),\n  },\n  currentMember: Preload.current_member,\n};\nconst sagaMiddleware = createSagaMiddleware();\nconst middlewares = [\n  apiMiddleware,\n  promiseMiddleware, // Deprecated! Dont use and remove when it is not required anymore\n  sagaMiddleware,\n];\n\n/* Run sessionStorage.setItem('debug', true) to enable redux logger output */\nif (sessionStorage.getItem(\"debug\")) {\n  const loggerMiddleware = createLogger({ collapsed: true });\n  middlewares.push(loggerMiddleware);\n} else {\n  console.log(\n    \"redux-logger output is disabled, run `sessionStorage.setItem('debug', true)` to enable\",\n  );\n}\nconst store = createStore(\n  combineReducers(defaultReducers),\n  initialState,\n  applyMiddleware(...middlewares),\n);\n\n// Use this to run a saga from a custom pack or something optional (like the chat)\nstore.runSaga = sagaMiddleware.run;\nstore.runSaga(rootSaga);\n\n// Use this to add reducers from a custom pack or something optional (like the chat)\nstore.currentReducers = defaultReducers;\nstore.addReducers = (reducerMap) => {\n  store.currentReducers = { ...store.currentReducers, ...reducerMap };\n  store.replaceReducer(combineReducers(store.currentReducers));\n};\n\nwindow.store = store;\n\nexport default store;\n","export default function currentMember(\n  state = {},\n  action: { type: string; payload: string },\n) {\n  switch (action.type) {\n    case \"currentMember/LANGUAGE/SET_LAST_USED\": {\n      return {\n        ...state,\n        last_used_translation_language: action.payload,\n      };\n    }\n    default:\n      return state;\n  }\n}\n","import { fork, all } from \"redux-saga/effects\";\nimport formActionSaga from \"redux-form-saga\";\nimport filesSaga from \"./files\";\n\nexport default function* rootSaga() {\n  yield all([fork(filesSaga), fork(formActionSaga)]);\n}\n"],"names":["action","type","payload","NAMESPACE","ADD_OR_MOVE_WIDGET","REMOVE_WIDGET","CHANGE_WIDGET_VALUE","SELECT_WIDGET","FETCH_WIDGETBAR","UPDATE_WIDGETBAR","SET_GROUP_ID","RESET_SUCCESSFUL_SAVE","FETCH_CALENDARS","SET_IDENTIFIER","FETCH_WIDGETBAR_ACTIONS","REQUEST","SUCCESS","FAILURE","FETCH_CALENDARS_ACTIONS","UPDATE_WIDGETBAR_ACTIONS","addOrMoveWidget","data","index","removeWidget","selectWidget","setGroupId","changeValue","propertyKey","transformHeaders","_action","state","res","json","then","get","appSelector","headers","parseHeader","header","archivedPerColumn","each","split","item","info","parseArchivedPerColumn","pagination","nextPage","page","perPage","prevPage","total","totalPages","totalArchivedItems","fetchAppLink","createApiAction","method","endpoint","appSlug","groupSlug","baseType","fetchApp","appUrl","fetchItem","appId","externalAppId","itemUrl","archiveItem","itemId","unarchiveItem","fetchItems","view","archived","tag","assignee_id","q","filters","queryParamsObject","stringify","skipNull","skipEmptyString","transformPayload","loadMoreItemsByColumn","url","createItem","updateItem","moveItem","createFormAction","externalItemId","exportItemsGetLast","fetchRelationOptions","propertyName","PROGRESS","createRequestTypes","base","FILES","SET_UPLOAD_IDS","ADD_UPLOAD_ID","UPLOAD","PUBLISH","DESTROY","FOLDER","SELECT","publishFiles","storageDirectory","uploadFile","superType","requestAction","destroyFile","id","selectFolder","namespace","meta","tixxt","name","isPreset","colors","primary","color","secondary","white","favorite","success","warning","danger","userbarIconType","logoType","bannerType","bannerImage","logoImage","faviconImage","emailLogoImage","fullWidth","initialState","loadOverrideTheme","window","Preload","theme","defaultTheme","reducers","override","setTheme","setUserbarIconType","setBannerImage","setLogoImage","setFaviconImage","setEmailLogoImage","changeColor","colorObj","mergeColors","setHeaderVariant","setCustomCss","customCss","setFullWidth","themeSlice","createSlice","resetTheme","actions","getColor","scope","JSON","val","c","this","debug","mix","c1","c2","amount","color1","color2","TinyColor","toHexString","mostReadable","candidateNames","candidates","map","isEmpty","push","tcMostReadable","includeFallbackColors","join","shade","shadeOrTint","tColor","result","isLight","tint","lighten","makeReadable","isReadable","level","size","variant","options","h","hue","toHsv","generateColors","steps","start","end","curve","saturation","rate","brightness","abstract","tailwind","colorRules","derive","scoped","rules","r","themeRaw","localStorage","getItem","parse","storeOverrideTheme","setItem","removeItem","useTheme","baseTheme","themeType","themeFromState","useSelector","groupCategoryTheme","groupTheme","channelTheme","shouldDerive","derivedColors","themeWithDefaults","useMemo","omit","pickBy","cloneDeep","forEach","variableName","env","fnName","args","fn","functions","apply","singleResult","deriveColors","concat","flatMap","alert","groupCategoryThemeSlice","groupThemeSlice","Error","useLoadApp","useQuery","useLoadItem","isPropRequired","prop","isPlainObject","some","values","required","transformPropsForReduxForm","properties","value","key","find","transformProp","label","isArray","v","displayValue","channelThemeSlice","reParamSearch","reQueryString","nonce","Date","getTime","bustCache","test","replace","maybeSerializeBodyAsJson","body","csrfTokenHeader","document","querySelector","getAttribute","Accept","defaultTransformer","async","status","types","t","fetch","polyfill","flow","actionCreator","RSAA","credentials","createApiResultReducer","defaultState","defaultData","loading","error","resetOnRequest","nestedEntries","dataKey","moreUrlKey","loadMoreUrl","indexBy","limit","offset","submitApi","valuesAndPropsToMeta","errorsTransformer","dispatch","props","response","errorMessage","errors","I18n","SubmissionError","originalError","_error","parserRegex","parseLink","link","parts","shift","trim","reduce","acc","part","match","isString","filter","x","rel","documentReady","readyState","addEventListener","collection","obj","elem","extractUrl","content","exec","groups","setApplication","Application","getNewMarkdownRenderer","Remarkable","use","linkify","getMarkdownRenderer","memoize","markdown","text","render","slash","number","appSlice","title","setTitle","groupsBySlugSlice","toggleFavorited","group","favorited","toggleSubscribed","subscription_status","reducer","combineReducers","bySlug","myGroupSlugs","createUpdateFileValue","form","inputName","clientId","file","newFileValues","fileValue","change","fileWasRemoved","undefined","fileUploader","postWithProgress","FormData","append","channel","updateFileValue","emitterResult","take","select","formValueSelector","close","put","progress","defaultPostWithProgress","eventChannel","emit","controller","AbortController","axios","post","signal","onUploadProgress","loaded","END","catch","e","abort","filesSaga","uploadRequestChannel","actionChannel","buffers","expanding","call","itemsSelector","itemSelector","loadMoreUrlsSelector","totalArchivedItemsSelector","createSelector","app","currentRouteParamsSelector","currentRouteSelector","currentAppUrlSelector","route","createAction","currentRoute","handleAction","fetchApps","loadMoreUrls","items","optimistic","insertAfterCardId","newItem","findIndex","i","changedItem","pull","itemsRequestReducer","findKey","column","toNumber","appLink","apps","exports","currentFolder","widgets","selectedWidgetIndex","identifier","groupId","successfulSave","calendars","editWidgetbarReducer","w","show_age","toString","indexOf","widget","splice","slice","length","widgetbars","indexReducer","fetchWidgetbar","edit","defaultReducers","network","currentMember","last_used_translation_language","formReducer","appCreator","navigation","folders","administration","widgetbar","administrationWidgetbarReducer","current_network","my_groups","current_member","sagaMiddleware","createSagaMiddleware","middlewares","apiMiddleware","promiseMiddleware","sessionStorage","loggerMiddleware","createLogger","collapsed","console","log","store","createStore","applyMiddleware","runSaga","run","all","fork","formActionSaga","currentReducers","addReducers","reducerMap","replaceReducer"],"sourceRoot":""}