{"version":3,"file":"js/404-34ddccf409c455613cb7.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) {\n return { ...action.payload, override };\n },\n setUserbarIconType(state, action: PayloadAction) {\n state.userbarIconType = action.payload;\n state.override = override;\n },\n setBannerImage(state, action: PayloadAction) {\n state.bannerImage = action.payload;\n state.override = override;\n },\n setLogoImage(state, action: PayloadAction) {\n state.logoImage = action.payload;\n state.override = override;\n },\n setFaviconImage(state, action: PayloadAction) {\n state.faviconImage = action.payload;\n state.override = override;\n },\n setEmailLogoImage(state, action: PayloadAction) {\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>) {\n state.colors = { ...state.colors, ...action.payload };\n state.override = override;\n },\n setHeaderVariant(\n state,\n action: PayloadAction>,\n ) {\n state.logoType = action.payload.logoType;\n state.bannerType = action.payload.bannerType;\n state.override = override;\n },\n setCustomCss(state, action: PayloadAction) {\n state.customCss = action.payload;\n state.override = override;\n },\n setFullWidth(state, action: PayloadAction) {\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]\n | [\"mix\", ...Parameters]\n | [\"mostReadable\", ...Parameters]\n | [\"shade\", ...Parameters]\n | [\"shadeOrTint\", ...Parameters]\n | [\"lighten\", ...Parameters]\n | [\"makeReadable\", ...Parameters]\n | [\"variant\", ...Parameters];\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: \"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,\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(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(\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(\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/])(?((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

to

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) {\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":""}