{"version":3,"file":"oda-registration-button-BYqV3x-E.js","sources":["../../../node_modules/date-fns/addDays.js","../../../node_modules/date-fns/getDefaultOptions.js","../../../node_modules/date-fns/getISODay.js","../../../node_modules/date-fns/transpose.js","../../../node_modules/date-fns/parse/_lib/Setter.js","../../../node_modules/date-fns/parse/_lib/Parser.js","../../../node_modules/date-fns/parse/_lib/parsers/EraParser.js","../../../node_modules/date-fns/parse/_lib/constants.js","../../../node_modules/date-fns/parse/_lib/utils.js","../../../node_modules/date-fns/parse/_lib/parsers/YearParser.js","../../../node_modules/date-fns/parse/_lib/parsers/LocalWeekYearParser.js","../../../node_modules/date-fns/parse/_lib/parsers/ISOWeekYearParser.js","../../../node_modules/date-fns/parse/_lib/parsers/ExtendedYearParser.js","../../../node_modules/date-fns/parse/_lib/parsers/QuarterParser.js","../../../node_modules/date-fns/parse/_lib/parsers/StandAloneQuarterParser.js","../../../node_modules/date-fns/parse/_lib/parsers/MonthParser.js","../../../node_modules/date-fns/parse/_lib/parsers/StandAloneMonthParser.js","../../../node_modules/date-fns/setWeek.js","../../../node_modules/date-fns/parse/_lib/parsers/LocalWeekParser.js","../../../node_modules/date-fns/setISOWeek.js","../../../node_modules/date-fns/parse/_lib/parsers/ISOWeekParser.js","../../../node_modules/date-fns/parse/_lib/parsers/DateParser.js","../../../node_modules/date-fns/parse/_lib/parsers/DayOfYearParser.js","../../../node_modules/date-fns/setDay.js","../../../node_modules/date-fns/parse/_lib/parsers/DayParser.js","../../../node_modules/date-fns/parse/_lib/parsers/LocalDayParser.js","../../../node_modules/date-fns/parse/_lib/parsers/StandAloneLocalDayParser.js","../../../node_modules/date-fns/setISODay.js","../../../node_modules/date-fns/parse/_lib/parsers/ISODayParser.js","../../../node_modules/date-fns/parse/_lib/parsers/AMPMParser.js","../../../node_modules/date-fns/parse/_lib/parsers/AMPMMidnightParser.js","../../../node_modules/date-fns/parse/_lib/parsers/DayPeriodParser.js","../../../node_modules/date-fns/parse/_lib/parsers/Hour1to12Parser.js","../../../node_modules/date-fns/parse/_lib/parsers/Hour0to23Parser.js","../../../node_modules/date-fns/parse/_lib/parsers/Hour0To11Parser.js","../../../node_modules/date-fns/parse/_lib/parsers/Hour1To24Parser.js","../../../node_modules/date-fns/parse/_lib/parsers/MinuteParser.js","../../../node_modules/date-fns/parse/_lib/parsers/SecondParser.js","../../../node_modules/date-fns/parse/_lib/parsers/FractionOfSecondParser.js","../../../node_modules/date-fns/parse/_lib/parsers/ISOTimezoneWithZParser.js","../../../node_modules/date-fns/parse/_lib/parsers/ISOTimezoneParser.js","../../../node_modules/date-fns/parse/_lib/parsers/TimestampSecondsParser.js","../../../node_modules/date-fns/parse/_lib/parsers/TimestampMillisecondsParser.js","../../../node_modules/date-fns/parse/_lib/parsers.js","../../../node_modules/date-fns/parse.js","../../../Scripts/components/oda-registration-button.html?vue-htmltemplate","../../../node_modules/filepond/dist/filepond.esm.js","../../../node_modules/filepond-plugin-file-validate-size/dist/filepond-plugin-file-validate-size.esm.js","../../../node_modules/filepond-plugin-file-validate-type/dist/filepond-plugin-file-validate-type.esm.js","../../../Scripts/models/oda-registration-viewmodel.ts","../../../Scripts/components/oda-registration.html?vue-htmltemplate","../../../Scripts/components/oda-registration.ts","../../../Scripts/components/oda-registration-button.ts"],"sourcesContent":["import { constructFrom } from \"./constructFrom.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link addDays} function options.\n */\n\n/**\n * @name addDays\n * @category Day Helpers\n * @summary Add the specified number of days to the given date.\n *\n * @description\n * Add the specified number of days to the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param amount - The amount of days to be added.\n * @param options - An object with options\n *\n * @returns The new date with the days added\n *\n * @example\n * // Add 10 days to 1 September 2014:\n * const result = addDays(new Date(2014, 8, 1), 10)\n * //=> Thu Sep 11 2014 00:00:00\n */\nexport function addDays(date, amount, options) {\n const _date = toDate(date, options?.in);\n if (isNaN(amount)) return constructFrom(options?.in || date, NaN);\n\n // If 0 days, no-op to avoid changing times in the hour before end of DST\n if (!amount) return _date;\n\n _date.setDate(_date.getDate() + amount);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default addDays;\n","import { getDefaultOptions as getInternalDefaultOptions } from \"./_lib/defaultOptions.js\";\n\n/**\n * @name getDefaultOptions\n * @category Common Helpers\n * @summary Get default options.\n * @pure false\n *\n * @description\n * Returns an object that contains defaults for\n * `options.locale`, `options.weekStartsOn` and `options.firstWeekContainsDate`\n * arguments for all functions.\n *\n * You can change these with [setDefaultOptions](https://date-fns.org/docs/setDefaultOptions).\n *\n * @returns The default options\n *\n * @example\n * const result = getDefaultOptions()\n * //=> {}\n *\n * @example\n * setDefaultOptions({ weekStarsOn: 1, firstWeekContainsDate: 4 })\n * const result = getDefaultOptions()\n * //=> { weekStarsOn: 1, firstWeekContainsDate: 4 }\n */\nexport function getDefaultOptions() {\n return Object.assign({}, getInternalDefaultOptions());\n}\n\n// Fallback for modularized imports:\nexport default getDefaultOptions;\n","import { toDate } from \"./toDate.js\";\n\n/**\n * The {@link getISODay} function options.\n */\n\n/**\n * @name getISODay\n * @category Weekday Helpers\n * @summary Get the day of the ISO week of the given date.\n *\n * @description\n * Get the day of the ISO week of the given date,\n * which is 7 for Sunday, 1 for Monday etc.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param date - The given date\n * @param options - An object with options\n *\n * @returns The day of ISO week\n *\n * @example\n * // Which day of the ISO week is 26 February 2012?\n * const result = getISODay(new Date(2012, 1, 26))\n * //=> 7\n */\nexport function getISODay(date, options) {\n const day = toDate(date, options?.in).getDay();\n return day === 0 ? 7 : day;\n}\n\n// Fallback for modularized imports:\nexport default getISODay;\n","import { constructFrom } from \"./constructFrom.js\";\n\n/**\n * @name transpose\n * @category Generic Helpers\n * @summary Transpose the date to the given constructor.\n *\n * @description\n * The function transposes the date to the given constructor. It helps you\n * to transpose the date in the system time zone to say `UTCDate` or any other\n * date extension.\n *\n * @typeParam InputDate - The input `Date` type derived from the passed argument.\n * @typeParam ResultDate - The result `Date` type derived from the passed constructor.\n *\n * @param date - The date to use values from\n * @param constructor - The date constructor to use\n *\n * @returns Date transposed to the given constructor\n *\n * @example\n * // Create July 10, 2022 00:00 in locale time zone\n * const date = new Date(2022, 6, 10)\n * //=> 'Sun Jul 10 2022 00:00:00 GMT+0800 (Singapore Standard Time)'\n *\n * @example\n * // Transpose the date to July 10, 2022 00:00 in UTC\n * transpose(date, UTCDate)\n * //=> 'Sun Jul 10 2022 00:00:00 GMT+0000 (Coordinated Universal Time)'\n */\nexport function transpose(date, constructor) {\n const date_ = isConstructor(constructor)\n ? new constructor(0)\n : constructFrom(constructor, 0);\n date_.setFullYear(date.getFullYear(), date.getMonth(), date.getDate());\n date_.setHours(\n date.getHours(),\n date.getMinutes(),\n date.getSeconds(),\n date.getMilliseconds(),\n );\n return date_;\n}\n\nfunction isConstructor(constructor) {\n return (\n typeof constructor === \"function\" &&\n constructor.prototype?.constructor === constructor\n );\n}\n\n// Fallback for modularized imports:\nexport default transpose;\n","import { constructFrom } from \"../../constructFrom.js\";\nimport { transpose } from \"../../transpose.js\";\n\nconst TIMEZONE_UNIT_PRIORITY = 10;\n\nexport class Setter {\n subPriority = 0;\n\n validate(_utcDate, _options) {\n return true;\n }\n}\n\nexport class ValueSetter extends Setter {\n constructor(\n value,\n\n validateValue,\n\n setValue,\n\n priority,\n subPriority,\n ) {\n super();\n this.value = value;\n this.validateValue = validateValue;\n this.setValue = setValue;\n this.priority = priority;\n if (subPriority) {\n this.subPriority = subPriority;\n }\n }\n\n validate(date, options) {\n return this.validateValue(date, this.value, options);\n }\n\n set(date, flags, options) {\n return this.setValue(date, flags, this.value, options);\n }\n}\n\nexport class DateTimezoneSetter extends Setter {\n priority = TIMEZONE_UNIT_PRIORITY;\n subPriority = -1;\n\n constructor(context, reference) {\n super();\n this.context = context || ((date) => constructFrom(reference, date));\n }\n\n set(date, flags) {\n if (flags.timestampIsSet) return date;\n return constructFrom(date, transpose(date, this.context));\n }\n}\n","import { ValueSetter } from \"./Setter.js\";\n\nexport class Parser {\n run(dateString, token, match, options) {\n const result = this.parse(dateString, token, match, options);\n if (!result) {\n return null;\n }\n\n return {\n setter: new ValueSetter(\n result.value,\n this.validate,\n this.set,\n this.priority,\n this.subPriority,\n ),\n rest: result.rest,\n };\n }\n\n validate(_utcDate, _value, _options) {\n return true;\n }\n}\n","import { Parser } from \"../Parser.js\";\n\nexport class EraParser extends Parser {\n priority = 140;\n\n parse(dateString, token, match) {\n switch (token) {\n // AD, BC\n case \"G\":\n case \"GG\":\n case \"GGG\":\n return (\n match.era(dateString, { width: \"abbreviated\" }) ||\n match.era(dateString, { width: \"narrow\" })\n );\n\n // A, B\n case \"GGGGG\":\n return match.era(dateString, { width: \"narrow\" });\n // Anno Domini, Before Christ\n case \"GGGG\":\n default:\n return (\n match.era(dateString, { width: \"wide\" }) ||\n match.era(dateString, { width: \"abbreviated\" }) ||\n match.era(dateString, { width: \"narrow\" })\n );\n }\n }\n\n set(date, flags, value) {\n flags.era = value;\n date.setFullYear(value, 0, 1);\n date.setHours(0, 0, 0, 0);\n return date;\n }\n\n incompatibleTokens = [\"R\", \"u\", \"t\", \"T\"];\n}\n","export const numericPatterns = {\n month: /^(1[0-2]|0?\\d)/, // 0 to 12\n date: /^(3[0-1]|[0-2]?\\d)/, // 0 to 31\n dayOfYear: /^(36[0-6]|3[0-5]\\d|[0-2]?\\d?\\d)/, // 0 to 366\n week: /^(5[0-3]|[0-4]?\\d)/, // 0 to 53\n hour23h: /^(2[0-3]|[0-1]?\\d)/, // 0 to 23\n hour24h: /^(2[0-4]|[0-1]?\\d)/, // 0 to 24\n hour11h: /^(1[0-1]|0?\\d)/, // 0 to 11\n hour12h: /^(1[0-2]|0?\\d)/, // 0 to 12\n minute: /^[0-5]?\\d/, // 0 to 59\n second: /^[0-5]?\\d/, // 0 to 59\n\n singleDigit: /^\\d/, // 0 to 9\n twoDigits: /^\\d{1,2}/, // 0 to 99\n threeDigits: /^\\d{1,3}/, // 0 to 999\n fourDigits: /^\\d{1,4}/, // 0 to 9999\n\n anyDigitsSigned: /^-?\\d+/,\n singleDigitSigned: /^-?\\d/, // 0 to 9, -0 to -9\n twoDigitsSigned: /^-?\\d{1,2}/, // 0 to 99, -0 to -99\n threeDigitsSigned: /^-?\\d{1,3}/, // 0 to 999, -0 to -999\n fourDigitsSigned: /^-?\\d{1,4}/, // 0 to 9999, -0 to -9999\n};\n\nexport const timezonePatterns = {\n basicOptionalMinutes: /^([+-])(\\d{2})(\\d{2})?|Z/,\n basic: /^([+-])(\\d{2})(\\d{2})|Z/,\n basicOptionalSeconds: /^([+-])(\\d{2})(\\d{2})((\\d{2}))?|Z/,\n extended: /^([+-])(\\d{2}):(\\d{2})|Z/,\n extendedOptionalSeconds: /^([+-])(\\d{2}):(\\d{2})(:(\\d{2}))?|Z/,\n};\n","import {\n millisecondsInHour,\n millisecondsInMinute,\n millisecondsInSecond,\n} from \"../../constants.js\";\n\nimport { numericPatterns } from \"./constants.js\";\n\nexport function mapValue(parseFnResult, mapFn) {\n if (!parseFnResult) {\n return parseFnResult;\n }\n\n return {\n value: mapFn(parseFnResult.value),\n rest: parseFnResult.rest,\n };\n}\n\nexport function parseNumericPattern(pattern, dateString) {\n const matchResult = dateString.match(pattern);\n\n if (!matchResult) {\n return null;\n }\n\n return {\n value: parseInt(matchResult[0], 10),\n rest: dateString.slice(matchResult[0].length),\n };\n}\n\nexport function parseTimezonePattern(pattern, dateString) {\n const matchResult = dateString.match(pattern);\n\n if (!matchResult) {\n return null;\n }\n\n // Input is 'Z'\n if (matchResult[0] === \"Z\") {\n return {\n value: 0,\n rest: dateString.slice(1),\n };\n }\n\n const sign = matchResult[1] === \"+\" ? 1 : -1;\n const hours = matchResult[2] ? parseInt(matchResult[2], 10) : 0;\n const minutes = matchResult[3] ? parseInt(matchResult[3], 10) : 0;\n const seconds = matchResult[5] ? parseInt(matchResult[5], 10) : 0;\n\n return {\n value:\n sign *\n (hours * millisecondsInHour +\n minutes * millisecondsInMinute +\n seconds * millisecondsInSecond),\n rest: dateString.slice(matchResult[0].length),\n };\n}\n\nexport function parseAnyDigitsSigned(dateString) {\n return parseNumericPattern(numericPatterns.anyDigitsSigned, dateString);\n}\n\nexport function parseNDigits(n, dateString) {\n switch (n) {\n case 1:\n return parseNumericPattern(numericPatterns.singleDigit, dateString);\n case 2:\n return parseNumericPattern(numericPatterns.twoDigits, dateString);\n case 3:\n return parseNumericPattern(numericPatterns.threeDigits, dateString);\n case 4:\n return parseNumericPattern(numericPatterns.fourDigits, dateString);\n default:\n return parseNumericPattern(new RegExp(\"^\\\\d{1,\" + n + \"}\"), dateString);\n }\n}\n\nexport function parseNDigitsSigned(n, dateString) {\n switch (n) {\n case 1:\n return parseNumericPattern(numericPatterns.singleDigitSigned, dateString);\n case 2:\n return parseNumericPattern(numericPatterns.twoDigitsSigned, dateString);\n case 3:\n return parseNumericPattern(numericPatterns.threeDigitsSigned, dateString);\n case 4:\n return parseNumericPattern(numericPatterns.fourDigitsSigned, dateString);\n default:\n return parseNumericPattern(new RegExp(\"^-?\\\\d{1,\" + n + \"}\"), dateString);\n }\n}\n\nexport function dayPeriodEnumToHours(dayPeriod) {\n switch (dayPeriod) {\n case \"morning\":\n return 4;\n case \"evening\":\n return 17;\n case \"pm\":\n case \"noon\":\n case \"afternoon\":\n return 12;\n case \"am\":\n case \"midnight\":\n case \"night\":\n default:\n return 0;\n }\n}\n\nexport function normalizeTwoDigitYear(twoDigitYear, currentYear) {\n const isCommonEra = currentYear > 0;\n // Absolute number of the current year:\n // 1 -> 1 AC\n // 0 -> 1 BC\n // -1 -> 2 BC\n const absCurrentYear = isCommonEra ? currentYear : 1 - currentYear;\n\n let result;\n if (absCurrentYear <= 50) {\n result = twoDigitYear || 100;\n } else {\n const rangeEnd = absCurrentYear + 50;\n const rangeEndCentury = Math.trunc(rangeEnd / 100) * 100;\n const isPreviousCentury = twoDigitYear >= rangeEnd % 100;\n result = twoDigitYear + rangeEndCentury - (isPreviousCentury ? 100 : 0);\n }\n\n return isCommonEra ? result : 1 - result;\n}\n\nexport function isLeapYearIndex(year) {\n return year % 400 === 0 || (year % 4 === 0 && year % 100 !== 0);\n}\n","import { Parser } from \"../Parser.js\";\n\nimport { mapValue, normalizeTwoDigitYear, parseNDigits } from \"../utils.js\";\n\n// From http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_Patterns\n// | Year | y | yy | yyy | yyyy | yyyyy |\n// |----------|-------|----|-------|-------|-------|\n// | AD 1 | 1 | 01 | 001 | 0001 | 00001 |\n// | AD 12 | 12 | 12 | 012 | 0012 | 00012 |\n// | AD 123 | 123 | 23 | 123 | 0123 | 00123 |\n// | AD 1234 | 1234 | 34 | 1234 | 1234 | 01234 |\n// | AD 12345 | 12345 | 45 | 12345 | 12345 | 12345 |\nexport class YearParser extends Parser {\n priority = 130;\n incompatibleTokens = [\"Y\", \"R\", \"u\", \"w\", \"I\", \"i\", \"e\", \"c\", \"t\", \"T\"];\n\n parse(dateString, token, match) {\n const valueCallback = (year) => ({\n year,\n isTwoDigitYear: token === \"yy\",\n });\n\n switch (token) {\n case \"y\":\n return mapValue(parseNDigits(4, dateString), valueCallback);\n case \"yo\":\n return mapValue(\n match.ordinalNumber(dateString, {\n unit: \"year\",\n }),\n valueCallback,\n );\n default:\n return mapValue(parseNDigits(token.length, dateString), valueCallback);\n }\n }\n\n validate(_date, value) {\n return value.isTwoDigitYear || value.year > 0;\n }\n\n set(date, flags, value) {\n const currentYear = date.getFullYear();\n\n if (value.isTwoDigitYear) {\n const normalizedTwoDigitYear = normalizeTwoDigitYear(\n value.year,\n currentYear,\n );\n date.setFullYear(normalizedTwoDigitYear, 0, 1);\n date.setHours(0, 0, 0, 0);\n return date;\n }\n\n const year =\n !(\"era\" in flags) || flags.era === 1 ? value.year : 1 - value.year;\n date.setFullYear(year, 0, 1);\n date.setHours(0, 0, 0, 0);\n return date;\n }\n}\n","import { getWeekYear } from \"../../../getWeekYear.js\";\n\nimport { startOfWeek } from \"../../../startOfWeek.js\";\nimport { Parser } from \"../Parser.js\";\n\nimport { mapValue, normalizeTwoDigitYear, parseNDigits } from \"../utils.js\";\n\n// Local week-numbering year\nexport class LocalWeekYearParser extends Parser {\n priority = 130;\n\n parse(dateString, token, match) {\n const valueCallback = (year) => ({\n year,\n isTwoDigitYear: token === \"YY\",\n });\n\n switch (token) {\n case \"Y\":\n return mapValue(parseNDigits(4, dateString), valueCallback);\n case \"Yo\":\n return mapValue(\n match.ordinalNumber(dateString, {\n unit: \"year\",\n }),\n valueCallback,\n );\n default:\n return mapValue(parseNDigits(token.length, dateString), valueCallback);\n }\n }\n\n validate(_date, value) {\n return value.isTwoDigitYear || value.year > 0;\n }\n\n set(date, flags, value, options) {\n const currentYear = getWeekYear(date, options);\n\n if (value.isTwoDigitYear) {\n const normalizedTwoDigitYear = normalizeTwoDigitYear(\n value.year,\n currentYear,\n );\n date.setFullYear(\n normalizedTwoDigitYear,\n 0,\n options.firstWeekContainsDate,\n );\n date.setHours(0, 0, 0, 0);\n return startOfWeek(date, options);\n }\n\n const year =\n !(\"era\" in flags) || flags.era === 1 ? value.year : 1 - value.year;\n date.setFullYear(year, 0, options.firstWeekContainsDate);\n date.setHours(0, 0, 0, 0);\n return startOfWeek(date, options);\n }\n\n incompatibleTokens = [\n \"y\",\n \"R\",\n \"u\",\n \"Q\",\n \"q\",\n \"M\",\n \"L\",\n \"I\",\n \"d\",\n \"D\",\n \"i\",\n \"t\",\n \"T\",\n ];\n}\n","import { startOfISOWeek } from \"../../../startOfISOWeek.js\";\nimport { constructFrom } from \"../../../constructFrom.js\";\nimport { Parser } from \"../Parser.js\";\n\nimport { parseNDigitsSigned } from \"../utils.js\";\n\n// ISO week-numbering year\nexport class ISOWeekYearParser extends Parser {\n priority = 130;\n\n parse(dateString, token) {\n if (token === \"R\") {\n return parseNDigitsSigned(4, dateString);\n }\n\n return parseNDigitsSigned(token.length, dateString);\n }\n\n set(date, _flags, value) {\n const firstWeekOfYear = constructFrom(date, 0);\n firstWeekOfYear.setFullYear(value, 0, 4);\n firstWeekOfYear.setHours(0, 0, 0, 0);\n return startOfISOWeek(firstWeekOfYear);\n }\n\n incompatibleTokens = [\n \"G\",\n \"y\",\n \"Y\",\n \"u\",\n \"Q\",\n \"q\",\n \"M\",\n \"L\",\n \"w\",\n \"d\",\n \"D\",\n \"e\",\n \"c\",\n \"t\",\n \"T\",\n ];\n}\n","import { Parser } from \"../Parser.js\";\n\nimport { parseNDigitsSigned } from \"../utils.js\";\n\nexport class ExtendedYearParser extends Parser {\n priority = 130;\n\n parse(dateString, token) {\n if (token === \"u\") {\n return parseNDigitsSigned(4, dateString);\n }\n\n return parseNDigitsSigned(token.length, dateString);\n }\n\n set(date, _flags, value) {\n date.setFullYear(value, 0, 1);\n date.setHours(0, 0, 0, 0);\n return date;\n }\n\n incompatibleTokens = [\"G\", \"y\", \"Y\", \"R\", \"w\", \"I\", \"i\", \"e\", \"c\", \"t\", \"T\"];\n}\n","import { Parser } from \"../Parser.js\";\n\nimport { parseNDigits } from \"../utils.js\";\n\nexport class QuarterParser extends Parser {\n priority = 120;\n\n parse(dateString, token, match) {\n switch (token) {\n // 1, 2, 3, 4\n case \"Q\":\n case \"QQ\": // 01, 02, 03, 04\n return parseNDigits(token.length, dateString);\n // 1st, 2nd, 3rd, 4th\n case \"Qo\":\n return match.ordinalNumber(dateString, { unit: \"quarter\" });\n // Q1, Q2, Q3, Q4\n case \"QQQ\":\n return (\n match.quarter(dateString, {\n width: \"abbreviated\",\n context: \"formatting\",\n }) ||\n match.quarter(dateString, {\n width: \"narrow\",\n context: \"formatting\",\n })\n );\n\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case \"QQQQQ\":\n return match.quarter(dateString, {\n width: \"narrow\",\n context: \"formatting\",\n });\n // 1st quarter, 2nd quarter, ...\n case \"QQQQ\":\n default:\n return (\n match.quarter(dateString, {\n width: \"wide\",\n context: \"formatting\",\n }) ||\n match.quarter(dateString, {\n width: \"abbreviated\",\n context: \"formatting\",\n }) ||\n match.quarter(dateString, {\n width: \"narrow\",\n context: \"formatting\",\n })\n );\n }\n }\n\n validate(_date, value) {\n return value >= 1 && value <= 4;\n }\n\n set(date, _flags, value) {\n date.setMonth((value - 1) * 3, 1);\n date.setHours(0, 0, 0, 0);\n return date;\n }\n\n incompatibleTokens = [\n \"Y\",\n \"R\",\n \"q\",\n \"M\",\n \"L\",\n \"w\",\n \"I\",\n \"d\",\n \"D\",\n \"i\",\n \"e\",\n \"c\",\n \"t\",\n \"T\",\n ];\n}\n","import { Parser } from \"../Parser.js\";\n\nimport { parseNDigits } from \"../utils.js\";\n\nexport class StandAloneQuarterParser extends Parser {\n priority = 120;\n\n parse(dateString, token, match) {\n switch (token) {\n // 1, 2, 3, 4\n case \"q\":\n case \"qq\": // 01, 02, 03, 04\n return parseNDigits(token.length, dateString);\n // 1st, 2nd, 3rd, 4th\n case \"qo\":\n return match.ordinalNumber(dateString, { unit: \"quarter\" });\n // Q1, Q2, Q3, Q4\n case \"qqq\":\n return (\n match.quarter(dateString, {\n width: \"abbreviated\",\n context: \"standalone\",\n }) ||\n match.quarter(dateString, {\n width: \"narrow\",\n context: \"standalone\",\n })\n );\n\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case \"qqqqq\":\n return match.quarter(dateString, {\n width: \"narrow\",\n context: \"standalone\",\n });\n // 1st quarter, 2nd quarter, ...\n case \"qqqq\":\n default:\n return (\n match.quarter(dateString, {\n width: \"wide\",\n context: \"standalone\",\n }) ||\n match.quarter(dateString, {\n width: \"abbreviated\",\n context: \"standalone\",\n }) ||\n match.quarter(dateString, {\n width: \"narrow\",\n context: \"standalone\",\n })\n );\n }\n }\n\n validate(_date, value) {\n return value >= 1 && value <= 4;\n }\n\n set(date, _flags, value) {\n date.setMonth((value - 1) * 3, 1);\n date.setHours(0, 0, 0, 0);\n return date;\n }\n\n incompatibleTokens = [\n \"Y\",\n \"R\",\n \"Q\",\n \"M\",\n \"L\",\n \"w\",\n \"I\",\n \"d\",\n \"D\",\n \"i\",\n \"e\",\n \"c\",\n \"t\",\n \"T\",\n ];\n}\n","import { numericPatterns } from \"../constants.js\";\nimport { Parser } from \"../Parser.js\";\n\nimport { mapValue, parseNDigits, parseNumericPattern } from \"../utils.js\";\n\nexport class MonthParser extends Parser {\n incompatibleTokens = [\n \"Y\",\n \"R\",\n \"q\",\n \"Q\",\n \"L\",\n \"w\",\n \"I\",\n \"D\",\n \"i\",\n \"e\",\n \"c\",\n \"t\",\n \"T\",\n ];\n\n priority = 110;\n\n parse(dateString, token, match) {\n const valueCallback = (value) => value - 1;\n\n switch (token) {\n // 1, 2, ..., 12\n case \"M\":\n return mapValue(\n parseNumericPattern(numericPatterns.month, dateString),\n valueCallback,\n );\n // 01, 02, ..., 12\n case \"MM\":\n return mapValue(parseNDigits(2, dateString), valueCallback);\n // 1st, 2nd, ..., 12th\n case \"Mo\":\n return mapValue(\n match.ordinalNumber(dateString, {\n unit: \"month\",\n }),\n valueCallback,\n );\n // Jan, Feb, ..., Dec\n case \"MMM\":\n return (\n match.month(dateString, {\n width: \"abbreviated\",\n context: \"formatting\",\n }) ||\n match.month(dateString, { width: \"narrow\", context: \"formatting\" })\n );\n\n // J, F, ..., D\n case \"MMMMM\":\n return match.month(dateString, {\n width: \"narrow\",\n context: \"formatting\",\n });\n // January, February, ..., December\n case \"MMMM\":\n default:\n return (\n match.month(dateString, { width: \"wide\", context: \"formatting\" }) ||\n match.month(dateString, {\n width: \"abbreviated\",\n context: \"formatting\",\n }) ||\n match.month(dateString, { width: \"narrow\", context: \"formatting\" })\n );\n }\n }\n\n validate(_date, value) {\n return value >= 0 && value <= 11;\n }\n\n set(date, _flags, value) {\n date.setMonth(value, 1);\n date.setHours(0, 0, 0, 0);\n return date;\n }\n}\n","import { numericPatterns } from \"../constants.js\";\nimport { Parser } from \"../Parser.js\";\n\nimport { mapValue, parseNDigits, parseNumericPattern } from \"../utils.js\";\n\nexport class StandAloneMonthParser extends Parser {\n priority = 110;\n\n parse(dateString, token, match) {\n const valueCallback = (value) => value - 1;\n\n switch (token) {\n // 1, 2, ..., 12\n case \"L\":\n return mapValue(\n parseNumericPattern(numericPatterns.month, dateString),\n valueCallback,\n );\n // 01, 02, ..., 12\n case \"LL\":\n return mapValue(parseNDigits(2, dateString), valueCallback);\n // 1st, 2nd, ..., 12th\n case \"Lo\":\n return mapValue(\n match.ordinalNumber(dateString, {\n unit: \"month\",\n }),\n valueCallback,\n );\n // Jan, Feb, ..., Dec\n case \"LLL\":\n return (\n match.month(dateString, {\n width: \"abbreviated\",\n context: \"standalone\",\n }) ||\n match.month(dateString, { width: \"narrow\", context: \"standalone\" })\n );\n\n // J, F, ..., D\n case \"LLLLL\":\n return match.month(dateString, {\n width: \"narrow\",\n context: \"standalone\",\n });\n // January, February, ..., December\n case \"LLLL\":\n default:\n return (\n match.month(dateString, { width: \"wide\", context: \"standalone\" }) ||\n match.month(dateString, {\n width: \"abbreviated\",\n context: \"standalone\",\n }) ||\n match.month(dateString, { width: \"narrow\", context: \"standalone\" })\n );\n }\n }\n\n validate(_date, value) {\n return value >= 0 && value <= 11;\n }\n\n set(date, _flags, value) {\n date.setMonth(value, 1);\n date.setHours(0, 0, 0, 0);\n return date;\n }\n\n incompatibleTokens = [\n \"Y\",\n \"R\",\n \"q\",\n \"Q\",\n \"M\",\n \"w\",\n \"I\",\n \"D\",\n \"i\",\n \"e\",\n \"c\",\n \"t\",\n \"T\",\n ];\n}\n","import { getWeek } from \"./getWeek.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link setWeek} function options.\n */\n\n/**\n * @name setWeek\n * @category Week Helpers\n * @summary Set the local week to the given date.\n *\n * @description\n * Set the local week to the given date, saving the weekday number.\n * The exact calculation depends on the values of\n * `options.weekStartsOn` (which is the index of the first day of the week)\n * and `options.firstWeekContainsDate` (which is the day of January, which is always in\n * the first week of the week-numbering year)\n *\n * Week numbering: https://en.wikipedia.org/wiki/Week#The_ISO_week_date_system\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param week - The week of the new date\n * @param options - An object with options\n *\n * @returns The new date with the local week set\n *\n * @example\n * // Set the 1st week to 2 January 2005 with default options:\n * const result = setWeek(new Date(2005, 0, 2), 1)\n * //=> Sun Dec 26 2004 00:00:00\n *\n * @example\n * // Set the 1st week to 2 January 2005,\n * // if Monday is the first day of the week,\n * // and the first week of the year always contains 4 January:\n * const result = setWeek(new Date(2005, 0, 2), 1, {\n * weekStartsOn: 1,\n * firstWeekContainsDate: 4\n * })\n * //=> Sun Jan 4 2004 00:00:00\n */\nexport function setWeek(date, week, options) {\n const date_ = toDate(date, options?.in);\n const diff = getWeek(date_, options) - week;\n date_.setDate(date_.getDate() - diff * 7);\n return toDate(date_, options?.in);\n}\n\n// Fallback for modularized imports:\nexport default setWeek;\n","import { setWeek } from \"../../../setWeek.js\";\nimport { startOfWeek } from \"../../../startOfWeek.js\";\nimport { numericPatterns } from \"../constants.js\";\nimport { Parser } from \"../Parser.js\";\n\nimport { parseNDigits, parseNumericPattern } from \"../utils.js\";\n\n// Local week of year\nexport class LocalWeekParser extends Parser {\n priority = 100;\n\n parse(dateString, token, match) {\n switch (token) {\n case \"w\":\n return parseNumericPattern(numericPatterns.week, dateString);\n case \"wo\":\n return match.ordinalNumber(dateString, { unit: \"week\" });\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n\n validate(_date, value) {\n return value >= 1 && value <= 53;\n }\n\n set(date, _flags, value, options) {\n return startOfWeek(setWeek(date, value, options), options);\n }\n\n incompatibleTokens = [\n \"y\",\n \"R\",\n \"u\",\n \"q\",\n \"Q\",\n \"M\",\n \"L\",\n \"I\",\n \"d\",\n \"D\",\n \"i\",\n \"t\",\n \"T\",\n ];\n}\n","import { getISOWeek } from \"./getISOWeek.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link setISOWeek} function options.\n */\n\n/**\n * @name setISOWeek\n * @category ISO Week Helpers\n * @summary Set the ISO week to the given date.\n *\n * @description\n * Set the ISO week to the given date, saving the weekday number.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The `Date` type of the context function.\n *\n * @param date - The date to be changed\n * @param week - The ISO week of the new date\n * @param options - An object with options\n *\n * @returns The new date with the ISO week set\n *\n * @example\n * // Set the 53rd ISO week to 7 August 2004:\n * const result = setISOWeek(new Date(2004, 7, 7), 53)\n * //=> Sat Jan 01 2005 00:00:00\n */\nexport function setISOWeek(date, week, options) {\n const _date = toDate(date, options?.in);\n const diff = getISOWeek(_date, options) - week;\n _date.setDate(_date.getDate() - diff * 7);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default setISOWeek;\n","import { setISOWeek } from \"../../../setISOWeek.js\";\nimport { startOfISOWeek } from \"../../../startOfISOWeek.js\";\nimport { numericPatterns } from \"../constants.js\";\nimport { Parser } from \"../Parser.js\";\n\nimport { parseNDigits, parseNumericPattern } from \"../utils.js\";\n\n// ISO week of year\nexport class ISOWeekParser extends Parser {\n priority = 100;\n\n parse(dateString, token, match) {\n switch (token) {\n case \"I\":\n return parseNumericPattern(numericPatterns.week, dateString);\n case \"Io\":\n return match.ordinalNumber(dateString, { unit: \"week\" });\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n\n validate(_date, value) {\n return value >= 1 && value <= 53;\n }\n\n set(date, _flags, value) {\n return startOfISOWeek(setISOWeek(date, value));\n }\n\n incompatibleTokens = [\n \"y\",\n \"Y\",\n \"u\",\n \"q\",\n \"Q\",\n \"M\",\n \"L\",\n \"w\",\n \"d\",\n \"D\",\n \"e\",\n \"c\",\n \"t\",\n \"T\",\n ];\n}\n","import { numericPatterns } from \"../constants.js\";\nimport { Parser } from \"../Parser.js\";\n\nimport {\n isLeapYearIndex,\n parseNDigits,\n parseNumericPattern,\n} from \"../utils.js\";\n\nconst DAYS_IN_MONTH = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\nconst DAYS_IN_MONTH_LEAP_YEAR = [\n 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31,\n];\n\n// Day of the month\nexport class DateParser extends Parser {\n priority = 90;\n subPriority = 1;\n\n parse(dateString, token, match) {\n switch (token) {\n case \"d\":\n return parseNumericPattern(numericPatterns.date, dateString);\n case \"do\":\n return match.ordinalNumber(dateString, { unit: \"date\" });\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n\n validate(date, value) {\n const year = date.getFullYear();\n const isLeapYear = isLeapYearIndex(year);\n const month = date.getMonth();\n if (isLeapYear) {\n return value >= 1 && value <= DAYS_IN_MONTH_LEAP_YEAR[month];\n } else {\n return value >= 1 && value <= DAYS_IN_MONTH[month];\n }\n }\n\n set(date, _flags, value) {\n date.setDate(value);\n date.setHours(0, 0, 0, 0);\n return date;\n }\n\n incompatibleTokens = [\n \"Y\",\n \"R\",\n \"q\",\n \"Q\",\n \"w\",\n \"I\",\n \"D\",\n \"i\",\n \"e\",\n \"c\",\n \"t\",\n \"T\",\n ];\n}\n","import { numericPatterns } from \"../constants.js\";\nimport { Parser } from \"../Parser.js\";\n\nimport {\n isLeapYearIndex,\n parseNDigits,\n parseNumericPattern,\n} from \"../utils.js\";\n\nexport class DayOfYearParser extends Parser {\n priority = 90;\n\n subpriority = 1;\n\n parse(dateString, token, match) {\n switch (token) {\n case \"D\":\n case \"DD\":\n return parseNumericPattern(numericPatterns.dayOfYear, dateString);\n case \"Do\":\n return match.ordinalNumber(dateString, { unit: \"date\" });\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n\n validate(date, value) {\n const year = date.getFullYear();\n const isLeapYear = isLeapYearIndex(year);\n if (isLeapYear) {\n return value >= 1 && value <= 366;\n } else {\n return value >= 1 && value <= 365;\n }\n }\n\n set(date, _flags, value) {\n date.setMonth(0, value);\n date.setHours(0, 0, 0, 0);\n return date;\n }\n\n incompatibleTokens = [\n \"Y\",\n \"R\",\n \"q\",\n \"Q\",\n \"M\",\n \"L\",\n \"w\",\n \"I\",\n \"d\",\n \"E\",\n \"i\",\n \"e\",\n \"c\",\n \"t\",\n \"T\",\n ];\n}\n","import { getDefaultOptions } from \"./_lib/defaultOptions.js\";\nimport { addDays } from \"./addDays.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link setDay} function options.\n */\n\n/**\n * @name setDay\n * @category Weekday Helpers\n * @summary Set the day of the week to the given date.\n *\n * @description\n * Set the day of the week to the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param day - The day of the week of the new date\n * @param options - An object with options.\n *\n * @returns The new date with the day of the week set\n *\n * @example\n * // Set week day to Sunday, with the default weekStartsOn of Sunday:\n * const result = setDay(new Date(2014, 8, 1), 0)\n * //=> Sun Aug 31 2014 00:00:00\n *\n * @example\n * // Set week day to Sunday, with a weekStartsOn of Monday:\n * const result = setDay(new Date(2014, 8, 1), 0, { weekStartsOn: 1 })\n * //=> Sun Sep 07 2014 00:00:00\n */\nexport function setDay(date, day, options) {\n const defaultOptions = getDefaultOptions();\n const weekStartsOn =\n options?.weekStartsOn ??\n options?.locale?.options?.weekStartsOn ??\n defaultOptions.weekStartsOn ??\n defaultOptions.locale?.options?.weekStartsOn ??\n 0;\n\n const date_ = toDate(date, options?.in);\n const currentDay = date_.getDay();\n\n const remainder = day % 7;\n const dayIndex = (remainder + 7) % 7;\n\n const delta = 7 - weekStartsOn;\n const diff =\n day < 0 || day > 6\n ? day - ((currentDay + delta) % 7)\n : ((dayIndex + delta) % 7) - ((currentDay + delta) % 7);\n return addDays(date_, diff, options);\n}\n\n// Fallback for modularized imports:\nexport default setDay;\n","import { setDay } from \"../../../setDay.js\";\nimport { Parser } from \"../Parser.js\";\n\n// Day of week\nexport class DayParser extends Parser {\n priority = 90;\n\n parse(dateString, token, match) {\n switch (token) {\n // Tue\n case \"E\":\n case \"EE\":\n case \"EEE\":\n return (\n match.day(dateString, {\n width: \"abbreviated\",\n context: \"formatting\",\n }) ||\n match.day(dateString, { width: \"short\", context: \"formatting\" }) ||\n match.day(dateString, { width: \"narrow\", context: \"formatting\" })\n );\n\n // T\n case \"EEEEE\":\n return match.day(dateString, {\n width: \"narrow\",\n context: \"formatting\",\n });\n // Tu\n case \"EEEEEE\":\n return (\n match.day(dateString, { width: \"short\", context: \"formatting\" }) ||\n match.day(dateString, { width: \"narrow\", context: \"formatting\" })\n );\n\n // Tuesday\n case \"EEEE\":\n default:\n return (\n match.day(dateString, { width: \"wide\", context: \"formatting\" }) ||\n match.day(dateString, {\n width: \"abbreviated\",\n context: \"formatting\",\n }) ||\n match.day(dateString, { width: \"short\", context: \"formatting\" }) ||\n match.day(dateString, { width: \"narrow\", context: \"formatting\" })\n );\n }\n }\n\n validate(_date, value) {\n return value >= 0 && value <= 6;\n }\n\n set(date, _flags, value, options) {\n date = setDay(date, value, options);\n date.setHours(0, 0, 0, 0);\n return date;\n }\n\n incompatibleTokens = [\"D\", \"i\", \"e\", \"c\", \"t\", \"T\"];\n}\n","import { setDay } from \"../../../setDay.js\";\nimport { Parser } from \"../Parser.js\";\n\nimport { mapValue, parseNDigits } from \"../utils.js\";\n\n// Local day of week\nexport class LocalDayParser extends Parser {\n priority = 90;\n parse(dateString, token, match, options) {\n const valueCallback = (value) => {\n // We want here floor instead of trunc, so we get -7 for value 0 instead of 0\n const wholeWeekDays = Math.floor((value - 1) / 7) * 7;\n return ((value + options.weekStartsOn + 6) % 7) + wholeWeekDays;\n };\n\n switch (token) {\n // 3\n case \"e\":\n case \"ee\": // 03\n return mapValue(parseNDigits(token.length, dateString), valueCallback);\n // 3rd\n case \"eo\":\n return mapValue(\n match.ordinalNumber(dateString, {\n unit: \"day\",\n }),\n valueCallback,\n );\n // Tue\n case \"eee\":\n return (\n match.day(dateString, {\n width: \"abbreviated\",\n context: \"formatting\",\n }) ||\n match.day(dateString, { width: \"short\", context: \"formatting\" }) ||\n match.day(dateString, { width: \"narrow\", context: \"formatting\" })\n );\n\n // T\n case \"eeeee\":\n return match.day(dateString, {\n width: \"narrow\",\n context: \"formatting\",\n });\n // Tu\n case \"eeeeee\":\n return (\n match.day(dateString, { width: \"short\", context: \"formatting\" }) ||\n match.day(dateString, { width: \"narrow\", context: \"formatting\" })\n );\n\n // Tuesday\n case \"eeee\":\n default:\n return (\n match.day(dateString, { width: \"wide\", context: \"formatting\" }) ||\n match.day(dateString, {\n width: \"abbreviated\",\n context: \"formatting\",\n }) ||\n match.day(dateString, { width: \"short\", context: \"formatting\" }) ||\n match.day(dateString, { width: \"narrow\", context: \"formatting\" })\n );\n }\n }\n\n validate(_date, value) {\n return value >= 0 && value <= 6;\n }\n\n set(date, _flags, value, options) {\n date = setDay(date, value, options);\n date.setHours(0, 0, 0, 0);\n return date;\n }\n\n incompatibleTokens = [\n \"y\",\n \"R\",\n \"u\",\n \"q\",\n \"Q\",\n \"M\",\n \"L\",\n \"I\",\n \"d\",\n \"D\",\n \"E\",\n \"i\",\n \"c\",\n \"t\",\n \"T\",\n ];\n}\n","import { setDay } from \"../../../setDay.js\";\nimport { Parser } from \"../Parser.js\";\n\nimport { mapValue, parseNDigits } from \"../utils.js\";\n\n// Stand-alone local day of week\nexport class StandAloneLocalDayParser extends Parser {\n priority = 90;\n\n parse(dateString, token, match, options) {\n const valueCallback = (value) => {\n // We want here floor instead of trunc, so we get -7 for value 0 instead of 0\n const wholeWeekDays = Math.floor((value - 1) / 7) * 7;\n return ((value + options.weekStartsOn + 6) % 7) + wholeWeekDays;\n };\n\n switch (token) {\n // 3\n case \"c\":\n case \"cc\": // 03\n return mapValue(parseNDigits(token.length, dateString), valueCallback);\n // 3rd\n case \"co\":\n return mapValue(\n match.ordinalNumber(dateString, {\n unit: \"day\",\n }),\n valueCallback,\n );\n // Tue\n case \"ccc\":\n return (\n match.day(dateString, {\n width: \"abbreviated\",\n context: \"standalone\",\n }) ||\n match.day(dateString, { width: \"short\", context: \"standalone\" }) ||\n match.day(dateString, { width: \"narrow\", context: \"standalone\" })\n );\n\n // T\n case \"ccccc\":\n return match.day(dateString, {\n width: \"narrow\",\n context: \"standalone\",\n });\n // Tu\n case \"cccccc\":\n return (\n match.day(dateString, { width: \"short\", context: \"standalone\" }) ||\n match.day(dateString, { width: \"narrow\", context: \"standalone\" })\n );\n\n // Tuesday\n case \"cccc\":\n default:\n return (\n match.day(dateString, { width: \"wide\", context: \"standalone\" }) ||\n match.day(dateString, {\n width: \"abbreviated\",\n context: \"standalone\",\n }) ||\n match.day(dateString, { width: \"short\", context: \"standalone\" }) ||\n match.day(dateString, { width: \"narrow\", context: \"standalone\" })\n );\n }\n }\n\n validate(_date, value) {\n return value >= 0 && value <= 6;\n }\n\n set(date, _flags, value, options) {\n date = setDay(date, value, options);\n date.setHours(0, 0, 0, 0);\n return date;\n }\n\n incompatibleTokens = [\n \"y\",\n \"R\",\n \"u\",\n \"q\",\n \"Q\",\n \"M\",\n \"L\",\n \"I\",\n \"d\",\n \"D\",\n \"E\",\n \"i\",\n \"e\",\n \"t\",\n \"T\",\n ];\n}\n","import { addDays } from \"./addDays.js\";\nimport { getISODay } from \"./getISODay.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link setISODay} function options.\n */\n\n/**\n * @name setISODay\n * @category Weekday Helpers\n * @summary Set the day of the ISO week to the given date.\n *\n * @description\n * Set the day of the ISO week to the given date.\n * ISO week starts with Monday.\n * 7 is the index of Sunday, 1 is the index of Monday, etc.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param day - The day of the ISO week of the new date\n * @param options - An object with options\n *\n * @returns The new date with the day of the ISO week set\n *\n * @example\n * // Set Sunday to 1 September 2014:\n * const result = setISODay(new Date(2014, 8, 1), 7)\n * //=> Sun Sep 07 2014 00:00:00\n */\nexport function setISODay(date, day, options) {\n const date_ = toDate(date, options?.in);\n const currentDay = getISODay(date_, options);\n const diff = day - currentDay;\n return addDays(date_, diff, options);\n}\n\n// Fallback for modularized imports:\nexport default setISODay;\n","import { setISODay } from \"../../../setISODay.js\";\nimport { Parser } from \"../Parser.js\";\n\nimport { mapValue, parseNDigits } from \"../utils.js\";\n\n// ISO day of week\nexport class ISODayParser extends Parser {\n priority = 90;\n\n parse(dateString, token, match) {\n const valueCallback = (value) => {\n if (value === 0) {\n return 7;\n }\n return value;\n };\n\n switch (token) {\n // 2\n case \"i\":\n case \"ii\": // 02\n return parseNDigits(token.length, dateString);\n // 2nd\n case \"io\":\n return match.ordinalNumber(dateString, { unit: \"day\" });\n // Tue\n case \"iii\":\n return mapValue(\n match.day(dateString, {\n width: \"abbreviated\",\n context: \"formatting\",\n }) ||\n match.day(dateString, {\n width: \"short\",\n context: \"formatting\",\n }) ||\n match.day(dateString, {\n width: \"narrow\",\n context: \"formatting\",\n }),\n valueCallback,\n );\n // T\n case \"iiiii\":\n return mapValue(\n match.day(dateString, {\n width: \"narrow\",\n context: \"formatting\",\n }),\n valueCallback,\n );\n // Tu\n case \"iiiiii\":\n return mapValue(\n match.day(dateString, {\n width: \"short\",\n context: \"formatting\",\n }) ||\n match.day(dateString, {\n width: \"narrow\",\n context: \"formatting\",\n }),\n valueCallback,\n );\n // Tuesday\n case \"iiii\":\n default:\n return mapValue(\n match.day(dateString, {\n width: \"wide\",\n context: \"formatting\",\n }) ||\n match.day(dateString, {\n width: \"abbreviated\",\n context: \"formatting\",\n }) ||\n match.day(dateString, {\n width: \"short\",\n context: \"formatting\",\n }) ||\n match.day(dateString, {\n width: \"narrow\",\n context: \"formatting\",\n }),\n valueCallback,\n );\n }\n }\n\n validate(_date, value) {\n return value >= 1 && value <= 7;\n }\n\n set(date, _flags, value) {\n date = setISODay(date, value);\n date.setHours(0, 0, 0, 0);\n return date;\n }\n\n incompatibleTokens = [\n \"y\",\n \"Y\",\n \"u\",\n \"q\",\n \"Q\",\n \"M\",\n \"L\",\n \"w\",\n \"d\",\n \"D\",\n \"E\",\n \"e\",\n \"c\",\n \"t\",\n \"T\",\n ];\n}\n","import { Parser } from \"../Parser.js\";\n\nimport { dayPeriodEnumToHours } from \"../utils.js\";\n\nexport class AMPMParser extends Parser {\n priority = 80;\n\n parse(dateString, token, match) {\n switch (token) {\n case \"a\":\n case \"aa\":\n case \"aaa\":\n return (\n match.dayPeriod(dateString, {\n width: \"abbreviated\",\n context: \"formatting\",\n }) ||\n match.dayPeriod(dateString, {\n width: \"narrow\",\n context: \"formatting\",\n })\n );\n\n case \"aaaaa\":\n return match.dayPeriod(dateString, {\n width: \"narrow\",\n context: \"formatting\",\n });\n case \"aaaa\":\n default:\n return (\n match.dayPeriod(dateString, {\n width: \"wide\",\n context: \"formatting\",\n }) ||\n match.dayPeriod(dateString, {\n width: \"abbreviated\",\n context: \"formatting\",\n }) ||\n match.dayPeriod(dateString, {\n width: \"narrow\",\n context: \"formatting\",\n })\n );\n }\n }\n\n set(date, _flags, value) {\n date.setHours(dayPeriodEnumToHours(value), 0, 0, 0);\n return date;\n }\n\n incompatibleTokens = [\"b\", \"B\", \"H\", \"k\", \"t\", \"T\"];\n}\n","import { Parser } from \"../Parser.js\";\n\nimport { dayPeriodEnumToHours } from \"../utils.js\";\n\nexport class AMPMMidnightParser extends Parser {\n priority = 80;\n\n parse(dateString, token, match) {\n switch (token) {\n case \"b\":\n case \"bb\":\n case \"bbb\":\n return (\n match.dayPeriod(dateString, {\n width: \"abbreviated\",\n context: \"formatting\",\n }) ||\n match.dayPeriod(dateString, {\n width: \"narrow\",\n context: \"formatting\",\n })\n );\n\n case \"bbbbb\":\n return match.dayPeriod(dateString, {\n width: \"narrow\",\n context: \"formatting\",\n });\n case \"bbbb\":\n default:\n return (\n match.dayPeriod(dateString, {\n width: \"wide\",\n context: \"formatting\",\n }) ||\n match.dayPeriod(dateString, {\n width: \"abbreviated\",\n context: \"formatting\",\n }) ||\n match.dayPeriod(dateString, {\n width: \"narrow\",\n context: \"formatting\",\n })\n );\n }\n }\n\n set(date, _flags, value) {\n date.setHours(dayPeriodEnumToHours(value), 0, 0, 0);\n return date;\n }\n\n incompatibleTokens = [\"a\", \"B\", \"H\", \"k\", \"t\", \"T\"];\n}\n","import { Parser } from \"../Parser.js\";\n\nimport { dayPeriodEnumToHours } from \"../utils.js\";\n\n// in the morning, in the afternoon, in the evening, at night\nexport class DayPeriodParser extends Parser {\n priority = 80;\n\n parse(dateString, token, match) {\n switch (token) {\n case \"B\":\n case \"BB\":\n case \"BBB\":\n return (\n match.dayPeriod(dateString, {\n width: \"abbreviated\",\n context: \"formatting\",\n }) ||\n match.dayPeriod(dateString, {\n width: \"narrow\",\n context: \"formatting\",\n })\n );\n\n case \"BBBBB\":\n return match.dayPeriod(dateString, {\n width: \"narrow\",\n context: \"formatting\",\n });\n case \"BBBB\":\n default:\n return (\n match.dayPeriod(dateString, {\n width: \"wide\",\n context: \"formatting\",\n }) ||\n match.dayPeriod(dateString, {\n width: \"abbreviated\",\n context: \"formatting\",\n }) ||\n match.dayPeriod(dateString, {\n width: \"narrow\",\n context: \"formatting\",\n })\n );\n }\n }\n\n set(date, _flags, value) {\n date.setHours(dayPeriodEnumToHours(value), 0, 0, 0);\n return date;\n }\n\n incompatibleTokens = [\"a\", \"b\", \"t\", \"T\"];\n}\n","import { numericPatterns } from \"../constants.js\";\nimport { Parser } from \"../Parser.js\";\n\nimport { parseNDigits, parseNumericPattern } from \"../utils.js\";\n\nexport class Hour1to12Parser extends Parser {\n priority = 70;\n\n parse(dateString, token, match) {\n switch (token) {\n case \"h\":\n return parseNumericPattern(numericPatterns.hour12h, dateString);\n case \"ho\":\n return match.ordinalNumber(dateString, { unit: \"hour\" });\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n\n validate(_date, value) {\n return value >= 1 && value <= 12;\n }\n\n set(date, _flags, value) {\n const isPM = date.getHours() >= 12;\n if (isPM && value < 12) {\n date.setHours(value + 12, 0, 0, 0);\n } else if (!isPM && value === 12) {\n date.setHours(0, 0, 0, 0);\n } else {\n date.setHours(value, 0, 0, 0);\n }\n return date;\n }\n\n incompatibleTokens = [\"H\", \"K\", \"k\", \"t\", \"T\"];\n}\n","import { numericPatterns } from \"../constants.js\";\nimport { Parser } from \"../Parser.js\";\n\nimport { parseNDigits, parseNumericPattern } from \"../utils.js\";\n\nexport class Hour0to23Parser extends Parser {\n priority = 70;\n\n parse(dateString, token, match) {\n switch (token) {\n case \"H\":\n return parseNumericPattern(numericPatterns.hour23h, dateString);\n case \"Ho\":\n return match.ordinalNumber(dateString, { unit: \"hour\" });\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n\n validate(_date, value) {\n return value >= 0 && value <= 23;\n }\n\n set(date, _flags, value) {\n date.setHours(value, 0, 0, 0);\n return date;\n }\n\n incompatibleTokens = [\"a\", \"b\", \"h\", \"K\", \"k\", \"t\", \"T\"];\n}\n","import { numericPatterns } from \"../constants.js\";\nimport { Parser } from \"../Parser.js\";\n\nimport { parseNDigits, parseNumericPattern } from \"../utils.js\";\n\nexport class Hour0To11Parser extends Parser {\n priority = 70;\n\n parse(dateString, token, match) {\n switch (token) {\n case \"K\":\n return parseNumericPattern(numericPatterns.hour11h, dateString);\n case \"Ko\":\n return match.ordinalNumber(dateString, { unit: \"hour\" });\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n\n validate(_date, value) {\n return value >= 0 && value <= 11;\n }\n\n set(date, _flags, value) {\n const isPM = date.getHours() >= 12;\n if (isPM && value < 12) {\n date.setHours(value + 12, 0, 0, 0);\n } else {\n date.setHours(value, 0, 0, 0);\n }\n return date;\n }\n\n incompatibleTokens = [\"h\", \"H\", \"k\", \"t\", \"T\"];\n}\n","import { numericPatterns } from \"../constants.js\";\nimport { Parser } from \"../Parser.js\";\n\nimport { parseNDigits, parseNumericPattern } from \"../utils.js\";\n\nexport class Hour1To24Parser extends Parser {\n priority = 70;\n\n parse(dateString, token, match) {\n switch (token) {\n case \"k\":\n return parseNumericPattern(numericPatterns.hour24h, dateString);\n case \"ko\":\n return match.ordinalNumber(dateString, { unit: \"hour\" });\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n\n validate(_date, value) {\n return value >= 1 && value <= 24;\n }\n\n set(date, _flags, value) {\n const hours = value <= 24 ? value % 24 : value;\n date.setHours(hours, 0, 0, 0);\n return date;\n }\n\n incompatibleTokens = [\"a\", \"b\", \"h\", \"H\", \"K\", \"t\", \"T\"];\n}\n","import { numericPatterns } from \"../constants.js\";\nimport { Parser } from \"../Parser.js\";\n\nimport { parseNDigits, parseNumericPattern } from \"../utils.js\";\n\nexport class MinuteParser extends Parser {\n priority = 60;\n\n parse(dateString, token, match) {\n switch (token) {\n case \"m\":\n return parseNumericPattern(numericPatterns.minute, dateString);\n case \"mo\":\n return match.ordinalNumber(dateString, { unit: \"minute\" });\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n\n validate(_date, value) {\n return value >= 0 && value <= 59;\n }\n\n set(date, _flags, value) {\n date.setMinutes(value, 0, 0);\n return date;\n }\n\n incompatibleTokens = [\"t\", \"T\"];\n}\n","import { numericPatterns } from \"../constants.js\";\nimport { Parser } from \"../Parser.js\";\n\nimport { parseNDigits, parseNumericPattern } from \"../utils.js\";\n\nexport class SecondParser extends Parser {\n priority = 50;\n\n parse(dateString, token, match) {\n switch (token) {\n case \"s\":\n return parseNumericPattern(numericPatterns.second, dateString);\n case \"so\":\n return match.ordinalNumber(dateString, { unit: \"second\" });\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n\n validate(_date, value) {\n return value >= 0 && value <= 59;\n }\n\n set(date, _flags, value) {\n date.setSeconds(value, 0);\n return date;\n }\n\n incompatibleTokens = [\"t\", \"T\"];\n}\n","import { Parser } from \"../Parser.js\";\n\nimport { mapValue, parseNDigits } from \"../utils.js\";\n\nexport class FractionOfSecondParser extends Parser {\n priority = 30;\n\n parse(dateString, token) {\n const valueCallback = (value) =>\n Math.trunc(value * Math.pow(10, -token.length + 3));\n return mapValue(parseNDigits(token.length, dateString), valueCallback);\n }\n\n set(date, _flags, value) {\n date.setMilliseconds(value);\n return date;\n }\n\n incompatibleTokens = [\"t\", \"T\"];\n}\n","import { constructFrom } from \"../../../constructFrom.js\";\nimport { getTimezoneOffsetInMilliseconds } from \"../../../_lib/getTimezoneOffsetInMilliseconds.js\";\nimport { timezonePatterns } from \"../constants.js\";\nimport { Parser } from \"../Parser.js\";\n\nimport { parseTimezonePattern } from \"../utils.js\";\n\n// Timezone (ISO-8601. +00:00 is `'Z'`)\nexport class ISOTimezoneWithZParser extends Parser {\n priority = 10;\n\n parse(dateString, token) {\n switch (token) {\n case \"X\":\n return parseTimezonePattern(\n timezonePatterns.basicOptionalMinutes,\n dateString,\n );\n case \"XX\":\n return parseTimezonePattern(timezonePatterns.basic, dateString);\n case \"XXXX\":\n return parseTimezonePattern(\n timezonePatterns.basicOptionalSeconds,\n dateString,\n );\n case \"XXXXX\":\n return parseTimezonePattern(\n timezonePatterns.extendedOptionalSeconds,\n dateString,\n );\n case \"XXX\":\n default:\n return parseTimezonePattern(timezonePatterns.extended, dateString);\n }\n }\n\n set(date, flags, value) {\n if (flags.timestampIsSet) return date;\n return constructFrom(\n date,\n date.getTime() - getTimezoneOffsetInMilliseconds(date) - value,\n );\n }\n\n incompatibleTokens = [\"t\", \"T\", \"x\"];\n}\n","import { constructFrom } from \"../../../constructFrom.js\";\nimport { getTimezoneOffsetInMilliseconds } from \"../../../_lib/getTimezoneOffsetInMilliseconds.js\";\nimport { timezonePatterns } from \"../constants.js\";\nimport { Parser } from \"../Parser.js\";\n\nimport { parseTimezonePattern } from \"../utils.js\";\n\n// Timezone (ISO-8601)\nexport class ISOTimezoneParser extends Parser {\n priority = 10;\n\n parse(dateString, token) {\n switch (token) {\n case \"x\":\n return parseTimezonePattern(\n timezonePatterns.basicOptionalMinutes,\n dateString,\n );\n case \"xx\":\n return parseTimezonePattern(timezonePatterns.basic, dateString);\n case \"xxxx\":\n return parseTimezonePattern(\n timezonePatterns.basicOptionalSeconds,\n dateString,\n );\n case \"xxxxx\":\n return parseTimezonePattern(\n timezonePatterns.extendedOptionalSeconds,\n dateString,\n );\n case \"xxx\":\n default:\n return parseTimezonePattern(timezonePatterns.extended, dateString);\n }\n }\n\n set(date, flags, value) {\n if (flags.timestampIsSet) return date;\n return constructFrom(\n date,\n date.getTime() - getTimezoneOffsetInMilliseconds(date) - value,\n );\n }\n\n incompatibleTokens = [\"t\", \"T\", \"X\"];\n}\n","import { constructFrom } from \"../../../constructFrom.js\";\nimport { Parser } from \"../Parser.js\";\n\nimport { parseAnyDigitsSigned } from \"../utils.js\";\n\nexport class TimestampSecondsParser extends Parser {\n priority = 40;\n\n parse(dateString) {\n return parseAnyDigitsSigned(dateString);\n }\n\n set(date, _flags, value) {\n return [constructFrom(date, value * 1000), { timestampIsSet: true }];\n }\n\n incompatibleTokens = \"*\";\n}\n","import { constructFrom } from \"../../../constructFrom.js\";\nimport { Parser } from \"../Parser.js\";\n\nimport { parseAnyDigitsSigned } from \"../utils.js\";\n\nexport class TimestampMillisecondsParser extends Parser {\n priority = 20;\n\n parse(dateString) {\n return parseAnyDigitsSigned(dateString);\n }\n\n set(date, _flags, value) {\n return [constructFrom(date, value), { timestampIsSet: true }];\n }\n\n incompatibleTokens = \"*\";\n}\n","import { EraParser } from \"./parsers/EraParser.js\";\nimport { YearParser } from \"./parsers/YearParser.js\";\nimport { LocalWeekYearParser } from \"./parsers/LocalWeekYearParser.js\";\nimport { ISOWeekYearParser } from \"./parsers/ISOWeekYearParser.js\";\nimport { ExtendedYearParser } from \"./parsers/ExtendedYearParser.js\";\nimport { QuarterParser } from \"./parsers/QuarterParser.js\";\nimport { StandAloneQuarterParser } from \"./parsers/StandAloneQuarterParser.js\";\nimport { MonthParser } from \"./parsers/MonthParser.js\";\nimport { StandAloneMonthParser } from \"./parsers/StandAloneMonthParser.js\";\nimport { LocalWeekParser } from \"./parsers/LocalWeekParser.js\";\nimport { ISOWeekParser } from \"./parsers/ISOWeekParser.js\";\nimport { DateParser } from \"./parsers/DateParser.js\";\nimport { DayOfYearParser } from \"./parsers/DayOfYearParser.js\";\nimport { DayParser } from \"./parsers/DayParser.js\";\nimport { LocalDayParser } from \"./parsers/LocalDayParser.js\";\nimport { StandAloneLocalDayParser } from \"./parsers/StandAloneLocalDayParser.js\";\nimport { ISODayParser } from \"./parsers/ISODayParser.js\";\nimport { AMPMParser } from \"./parsers/AMPMParser.js\";\nimport { AMPMMidnightParser } from \"./parsers/AMPMMidnightParser.js\";\nimport { DayPeriodParser } from \"./parsers/DayPeriodParser.js\";\nimport { Hour1to12Parser } from \"./parsers/Hour1to12Parser.js\";\nimport { Hour0to23Parser } from \"./parsers/Hour0to23Parser.js\";\nimport { Hour0To11Parser } from \"./parsers/Hour0To11Parser.js\";\nimport { Hour1To24Parser } from \"./parsers/Hour1To24Parser.js\";\nimport { MinuteParser } from \"./parsers/MinuteParser.js\";\nimport { SecondParser } from \"./parsers/SecondParser.js\";\nimport { FractionOfSecondParser } from \"./parsers/FractionOfSecondParser.js\";\nimport { ISOTimezoneWithZParser } from \"./parsers/ISOTimezoneWithZParser.js\";\nimport { ISOTimezoneParser } from \"./parsers/ISOTimezoneParser.js\";\nimport { TimestampSecondsParser } from \"./parsers/TimestampSecondsParser.js\";\nimport { TimestampMillisecondsParser } from \"./parsers/TimestampMillisecondsParser.js\";\n\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | Milliseconds in day |\n * | b | AM, PM, noon, midnight | B | Flexible day period |\n * | c | Stand-alone local day of week | C* | Localized hour w/ day period |\n * | d | Day of month | D | Day of year |\n * | e | Local day of week | E | Day of week |\n * | f | | F* | Day of week in month |\n * | g* | Modified Julian day | G | Era |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | i! | ISO day of week | I! | ISO week of year |\n * | j* | Localized hour w/ day period | J* | Localized hour w/o day period |\n * | k | Hour [1-24] | K | Hour [0-11] |\n * | l* | (deprecated) | L | Stand-alone month |\n * | m | Minute | M | Month |\n * | n | | N | |\n * | o! | Ordinal number modifier | O* | Timezone (GMT) |\n * | p | | P | |\n * | q | Stand-alone quarter | Q | Quarter |\n * | r* | Related Gregorian year | R! | ISO week-numbering year |\n * | s | Second | S | Fraction of second |\n * | t! | Seconds timestamp | T! | Milliseconds timestamp |\n * | u | Extended year | U* | Cyclic year |\n * | v* | Timezone (generic non-locat.) | V* | Timezone (location) |\n * | w | Local week of year | W* | Week of month |\n * | x | Timezone (ISO-8601 w/o Z) | X | Timezone (ISO-8601) |\n * | y | Year (abs) | Y | Local week-numbering year |\n * | z* | Timezone (specific non-locat.) | Z* | Timezone (aliases) |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n *\n * Letters marked by ! are non-standard, but implemented by date-fns:\n * - `o` modifies the previous token to turn it into an ordinal (see `parse` docs)\n * - `i` is ISO day of week. For `i` and `ii` is returns numeric ISO week days,\n * i.e. 7 for Sunday, 1 for Monday, etc.\n * - `I` is ISO week of year, as opposed to `w` which is local week of year.\n * - `R` is ISO week-numbering year, as opposed to `Y` which is local week-numbering year.\n * `R` is supposed to be used in conjunction with `I` and `i`\n * for universal ISO week-numbering date, whereas\n * `Y` is supposed to be used in conjunction with `w` and `e`\n * for week-numbering date specific to the locale.\n */\nexport const parsers = {\n G: new EraParser(),\n y: new YearParser(),\n Y: new LocalWeekYearParser(),\n R: new ISOWeekYearParser(),\n u: new ExtendedYearParser(),\n Q: new QuarterParser(),\n q: new StandAloneQuarterParser(),\n M: new MonthParser(),\n L: new StandAloneMonthParser(),\n w: new LocalWeekParser(),\n I: new ISOWeekParser(),\n d: new DateParser(),\n D: new DayOfYearParser(),\n E: new DayParser(),\n e: new LocalDayParser(),\n c: new StandAloneLocalDayParser(),\n i: new ISODayParser(),\n a: new AMPMParser(),\n b: new AMPMMidnightParser(),\n B: new DayPeriodParser(),\n h: new Hour1to12Parser(),\n H: new Hour0to23Parser(),\n K: new Hour0To11Parser(),\n k: new Hour1To24Parser(),\n m: new MinuteParser(),\n s: new SecondParser(),\n S: new FractionOfSecondParser(),\n X: new ISOTimezoneWithZParser(),\n x: new ISOTimezoneParser(),\n t: new TimestampSecondsParser(),\n T: new TimestampMillisecondsParser(),\n};\n","import { defaultLocale } from \"./_lib/defaultLocale.js\";\nimport { longFormatters } from \"./_lib/format/longFormatters.js\";\nimport {\n isProtectedDayOfYearToken,\n isProtectedWeekYearToken,\n warnOrThrowProtectedError,\n} from \"./_lib/protectedTokens.js\";\nimport { constructFrom } from \"./constructFrom.js\";\nimport { getDefaultOptions } from \"./getDefaultOptions.js\";\nimport { toDate } from \"./toDate.js\";\n\nimport { DateTimezoneSetter } from \"./parse/_lib/Setter.js\";\nimport { parsers } from \"./parse/_lib/parsers.js\";\n\n// Rexports of internal for libraries to use.\n// See: https://github.com/date-fns/date-fns/issues/3638#issuecomment-1877082874\nexport { longFormatters, parsers };\n\n/**\n * The {@link parse} function options.\n */\n\n// This RegExp consists of three parts separated by `|`:\n// - [yYQqMLwIdDecihHKkms]o matches any available ordinal number token\n// (one of the certain letters followed by `o`)\n// - (\\w)\\1* matches any sequences of the same letter\n// - '' matches two quote characters in a row\n// - '(''|[^'])+('|$) matches anything surrounded by two quote characters ('),\n// except a single quote symbol, which ends the sequence.\n// Two quote characters do not end the sequence.\n// If there is no matching single quote\n// then the sequence will continue until the end of the string.\n// - . matches any single character unmatched by previous parts of the RegExps\nconst formattingTokensRegExp =\n /[yYQqMLwIdDecihHKkms]o|(\\w)\\1*|''|'(''|[^'])+('|$)|./g;\n\n// This RegExp catches symbols escaped by quotes, and also\n// sequences of symbols P, p, and the combinations like `PPPPPPPppppp`\nconst longFormattingTokensRegExp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g;\n\nconst escapedStringRegExp = /^'([^]*?)'?$/;\nconst doubleQuoteRegExp = /''/g;\n\nconst notWhitespaceRegExp = /\\S/;\nconst unescapedLatinCharacterRegExp = /[a-zA-Z]/;\n\n/**\n * @name parse\n * @category Common Helpers\n * @summary Parse the date.\n *\n * @description\n * Return the date parsed from string using the given format string.\n *\n * > ⚠️ Please note that the `format` tokens differ from Moment.js and other libraries.\n * > See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * The characters in the format string wrapped between two single quotes characters (') are escaped.\n * Two single quotes in a row, whether inside or outside a quoted sequence, represent a 'real' single quote.\n *\n * Format of the format string is based on Unicode Technical Standard #35:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * with a few additions (see note 5 below the table).\n *\n * Not all tokens are compatible. Combinations that don't make sense or could lead to bugs are prohibited\n * and will throw `RangeError`. For example usage of 24-hour format token with AM/PM token will throw an exception:\n *\n * ```javascript\n * parse('23 AM', 'HH a', new Date())\n * //=> RangeError: The format string mustn't contain `HH` and `a` at the same time\n * ```\n *\n * See the compatibility table: https://docs.google.com/spreadsheets/d/e/2PACX-1vQOPU3xUhplll6dyoMmVUXHKl_8CRDs6_ueLmex3SoqwhuolkuN3O05l4rqx5h1dKX8eb46Ul-CCSrq/pubhtml?gid=0&single=true\n *\n * Accepted format string patterns:\n * | Unit |Prior| Pattern | Result examples | Notes |\n * |---------------------------------|-----|---------|-----------------------------------|-------|\n * | Era | 140 | G..GGG | AD, BC | |\n * | | | GGGG | Anno Domini, Before Christ | 2 |\n * | | | GGGGG | A, B | |\n * | Calendar year | 130 | y | 44, 1, 1900, 2017, 9999 | 4 |\n * | | | yo | 44th, 1st, 1900th, 9999999th | 4,5 |\n * | | | yy | 44, 01, 00, 17 | 4 |\n * | | | yyy | 044, 001, 123, 999 | 4 |\n * | | | yyyy | 0044, 0001, 1900, 2017 | 4 |\n * | | | yyyyy | ... | 2,4 |\n * | Local week-numbering year | 130 | Y | 44, 1, 1900, 2017, 9000 | 4 |\n * | | | Yo | 44th, 1st, 1900th, 9999999th | 4,5 |\n * | | | YY | 44, 01, 00, 17 | 4,6 |\n * | | | YYY | 044, 001, 123, 999 | 4 |\n * | | | YYYY | 0044, 0001, 1900, 2017 | 4,6 |\n * | | | YYYYY | ... | 2,4 |\n * | ISO week-numbering year | 130 | R | -43, 1, 1900, 2017, 9999, -9999 | 4,5 |\n * | | | RR | -43, 01, 00, 17 | 4,5 |\n * | | | RRR | -043, 001, 123, 999, -999 | 4,5 |\n * | | | RRRR | -0043, 0001, 2017, 9999, -9999 | 4,5 |\n * | | | RRRRR | ... | 2,4,5 |\n * | Extended year | 130 | u | -43, 1, 1900, 2017, 9999, -999 | 4 |\n * | | | uu | -43, 01, 99, -99 | 4 |\n * | | | uuu | -043, 001, 123, 999, -999 | 4 |\n * | | | uuuu | -0043, 0001, 2017, 9999, -9999 | 4 |\n * | | | uuuuu | ... | 2,4 |\n * | Quarter (formatting) | 120 | Q | 1, 2, 3, 4 | |\n * | | | Qo | 1st, 2nd, 3rd, 4th | 5 |\n * | | | QQ | 01, 02, 03, 04 | |\n * | | | QQQ | Q1, Q2, Q3, Q4 | |\n * | | | QQQQ | 1st quarter, 2nd quarter, ... | 2 |\n * | | | QQQQQ | 1, 2, 3, 4 | 4 |\n * | Quarter (stand-alone) | 120 | q | 1, 2, 3, 4 | |\n * | | | qo | 1st, 2nd, 3rd, 4th | 5 |\n * | | | qq | 01, 02, 03, 04 | |\n * | | | qqq | Q1, Q2, Q3, Q4 | |\n * | | | qqqq | 1st quarter, 2nd quarter, ... | 2 |\n * | | | qqqqq | 1, 2, 3, 4 | 3 |\n * | Month (formatting) | 110 | M | 1, 2, ..., 12 | |\n * | | | Mo | 1st, 2nd, ..., 12th | 5 |\n * | | | MM | 01, 02, ..., 12 | |\n * | | | MMM | Jan, Feb, ..., Dec | |\n * | | | MMMM | January, February, ..., December | 2 |\n * | | | MMMMM | J, F, ..., D | |\n * | Month (stand-alone) | 110 | L | 1, 2, ..., 12 | |\n * | | | Lo | 1st, 2nd, ..., 12th | 5 |\n * | | | LL | 01, 02, ..., 12 | |\n * | | | LLL | Jan, Feb, ..., Dec | |\n * | | | LLLL | January, February, ..., December | 2 |\n * | | | LLLLL | J, F, ..., D | |\n * | Local week of year | 100 | w | 1, 2, ..., 53 | |\n * | | | wo | 1st, 2nd, ..., 53th | 5 |\n * | | | ww | 01, 02, ..., 53 | |\n * | ISO week of year | 100 | I | 1, 2, ..., 53 | 5 |\n * | | | Io | 1st, 2nd, ..., 53th | 5 |\n * | | | II | 01, 02, ..., 53 | 5 |\n * | Day of month | 90 | d | 1, 2, ..., 31 | |\n * | | | do | 1st, 2nd, ..., 31st | 5 |\n * | | | dd | 01, 02, ..., 31 | |\n * | Day of year | 90 | D | 1, 2, ..., 365, 366 | 7 |\n * | | | Do | 1st, 2nd, ..., 365th, 366th | 5 |\n * | | | DD | 01, 02, ..., 365, 366 | 7 |\n * | | | DDD | 001, 002, ..., 365, 366 | |\n * | | | DDDD | ... | 2 |\n * | Day of week (formatting) | 90 | E..EEE | Mon, Tue, Wed, ..., Sun | |\n * | | | EEEE | Monday, Tuesday, ..., Sunday | 2 |\n * | | | EEEEE | M, T, W, T, F, S, S | |\n * | | | EEEEEE | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | ISO day of week (formatting) | 90 | i | 1, 2, 3, ..., 7 | 5 |\n * | | | io | 1st, 2nd, ..., 7th | 5 |\n * | | | ii | 01, 02, ..., 07 | 5 |\n * | | | iii | Mon, Tue, Wed, ..., Sun | 5 |\n * | | | iiii | Monday, Tuesday, ..., Sunday | 2,5 |\n * | | | iiiii | M, T, W, T, F, S, S | 5 |\n * | | | iiiiii | Mo, Tu, We, Th, Fr, Sa, Su | 5 |\n * | Local day of week (formatting) | 90 | e | 2, 3, 4, ..., 1 | |\n * | | | eo | 2nd, 3rd, ..., 1st | 5 |\n * | | | ee | 02, 03, ..., 01 | |\n * | | | eee | Mon, Tue, Wed, ..., Sun | |\n * | | | eeee | Monday, Tuesday, ..., Sunday | 2 |\n * | | | eeeee | M, T, W, T, F, S, S | |\n * | | | eeeeee | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | Local day of week (stand-alone) | 90 | c | 2, 3, 4, ..., 1 | |\n * | | | co | 2nd, 3rd, ..., 1st | 5 |\n * | | | cc | 02, 03, ..., 01 | |\n * | | | ccc | Mon, Tue, Wed, ..., Sun | |\n * | | | cccc | Monday, Tuesday, ..., Sunday | 2 |\n * | | | ccccc | M, T, W, T, F, S, S | |\n * | | | cccccc | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | AM, PM | 80 | a..aaa | AM, PM | |\n * | | | aaaa | a.m., p.m. | 2 |\n * | | | aaaaa | a, p | |\n * | AM, PM, noon, midnight | 80 | b..bbb | AM, PM, noon, midnight | |\n * | | | bbbb | a.m., p.m., noon, midnight | 2 |\n * | | | bbbbb | a, p, n, mi | |\n * | Flexible day period | 80 | B..BBB | at night, in the morning, ... | |\n * | | | BBBB | at night, in the morning, ... | 2 |\n * | | | BBBBB | at night, in the morning, ... | |\n * | Hour [1-12] | 70 | h | 1, 2, ..., 11, 12 | |\n * | | | ho | 1st, 2nd, ..., 11th, 12th | 5 |\n * | | | hh | 01, 02, ..., 11, 12 | |\n * | Hour [0-23] | 70 | H | 0, 1, 2, ..., 23 | |\n * | | | Ho | 0th, 1st, 2nd, ..., 23rd | 5 |\n * | | | HH | 00, 01, 02, ..., 23 | |\n * | Hour [0-11] | 70 | K | 1, 2, ..., 11, 0 | |\n * | | | Ko | 1st, 2nd, ..., 11th, 0th | 5 |\n * | | | KK | 01, 02, ..., 11, 00 | |\n * | Hour [1-24] | 70 | k | 24, 1, 2, ..., 23 | |\n * | | | ko | 24th, 1st, 2nd, ..., 23rd | 5 |\n * | | | kk | 24, 01, 02, ..., 23 | |\n * | Minute | 60 | m | 0, 1, ..., 59 | |\n * | | | mo | 0th, 1st, ..., 59th | 5 |\n * | | | mm | 00, 01, ..., 59 | |\n * | Second | 50 | s | 0, 1, ..., 59 | |\n * | | | so | 0th, 1st, ..., 59th | 5 |\n * | | | ss | 00, 01, ..., 59 | |\n * | Seconds timestamp | 40 | t | 512969520 | |\n * | | | tt | ... | 2 |\n * | Fraction of second | 30 | S | 0, 1, ..., 9 | |\n * | | | SS | 00, 01, ..., 99 | |\n * | | | SSS | 000, 001, ..., 999 | |\n * | | | SSSS | ... | 2 |\n * | Milliseconds timestamp | 20 | T | 512969520900 | |\n * | | | TT | ... | 2 |\n * | Timezone (ISO-8601 w/ Z) | 10 | X | -08, +0530, Z | |\n * | | | XX | -0800, +0530, Z | |\n * | | | XXX | -08:00, +05:30, Z | |\n * | | | XXXX | -0800, +0530, Z, +123456 | 2 |\n * | | | XXXXX | -08:00, +05:30, Z, +12:34:56 | |\n * | Timezone (ISO-8601 w/o Z) | 10 | x | -08, +0530, +00 | |\n * | | | xx | -0800, +0530, +0000 | |\n * | | | xxx | -08:00, +05:30, +00:00 | 2 |\n * | | | xxxx | -0800, +0530, +0000, +123456 | |\n * | | | xxxxx | -08:00, +05:30, +00:00, +12:34:56 | |\n * | Long localized date | NA | P | 05/29/1453 | 5,8 |\n * | | | PP | May 29, 1453 | |\n * | | | PPP | May 29th, 1453 | |\n * | | | PPPP | Sunday, May 29th, 1453 | 2,5,8 |\n * | Long localized time | NA | p | 12:00 AM | 5,8 |\n * | | | pp | 12:00:00 AM | |\n * | Combination of date and time | NA | Pp | 05/29/1453, 12:00 AM | |\n * | | | PPpp | May 29, 1453, 12:00:00 AM | |\n * | | | PPPpp | May 29th, 1453 at ... | |\n * | | | PPPPpp | Sunday, May 29th, 1453 at ... | 2,5,8 |\n * Notes:\n * 1. \"Formatting\" units (e.g. formatting quarter) in the default en-US locale\n * are the same as \"stand-alone\" units, but are different in some languages.\n * \"Formatting\" units are declined according to the rules of the language\n * in the context of a date. \"Stand-alone\" units are always nominative singular.\n * In `format` function, they will produce different result:\n *\n * `format(new Date(2017, 10, 6), 'do LLLL', {locale: cs}) //=> '6. listopad'`\n *\n * `format(new Date(2017, 10, 6), 'do MMMM', {locale: cs}) //=> '6. listopadu'`\n *\n * `parse` will try to match both formatting and stand-alone units interchangeably.\n *\n * 2. Any sequence of the identical letters is a pattern, unless it is escaped by\n * the single quote characters (see below).\n * If the sequence is longer than listed in table:\n * - for numerical units (`yyyyyyyy`) `parse` will try to match a number\n * as wide as the sequence\n * - for text units (`MMMMMMMM`) `parse` will try to match the widest variation of the unit.\n * These variations are marked with \"2\" in the last column of the table.\n *\n * 3. `QQQQQ` and `qqqqq` could be not strictly numerical in some locales.\n * These tokens represent the shortest form of the quarter.\n *\n * 4. The main difference between `y` and `u` patterns are B.C. years:\n *\n * | Year | `y` | `u` |\n * |------|-----|-----|\n * | AC 1 | 1 | 1 |\n * | BC 1 | 1 | 0 |\n * | BC 2 | 2 | -1 |\n *\n * Also `yy` will try to guess the century of two digit year by proximity with `referenceDate`:\n *\n * `parse('50', 'yy', new Date(2018, 0, 1)) //=> Sat Jan 01 2050 00:00:00`\n *\n * `parse('75', 'yy', new Date(2018, 0, 1)) //=> Wed Jan 01 1975 00:00:00`\n *\n * while `uu` will just assign the year as is:\n *\n * `parse('50', 'uu', new Date(2018, 0, 1)) //=> Sat Jan 01 0050 00:00:00`\n *\n * `parse('75', 'uu', new Date(2018, 0, 1)) //=> Tue Jan 01 0075 00:00:00`\n *\n * The same difference is true for local and ISO week-numbering years (`Y` and `R`),\n * except local week-numbering years are dependent on `options.weekStartsOn`\n * and `options.firstWeekContainsDate` (compare [setISOWeekYear](https://date-fns.org/docs/setISOWeekYear)\n * and [setWeekYear](https://date-fns.org/docs/setWeekYear)).\n *\n * 5. These patterns are not in the Unicode Technical Standard #35:\n * - `i`: ISO day of week\n * - `I`: ISO week of year\n * - `R`: ISO week-numbering year\n * - `o`: ordinal number modifier\n * - `P`: long localized date\n * - `p`: long localized time\n *\n * 6. `YY` and `YYYY` tokens represent week-numbering years but they are often confused with years.\n * You should enable `options.useAdditionalWeekYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * 7. `D` and `DD` tokens represent days of the year but they are often confused with days of the month.\n * You should enable `options.useAdditionalDayOfYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * 8. `P+` tokens do not have a defined priority since they are merely aliases to other tokens based\n * on the given locale.\n *\n * using `en-US` locale: `P` => `MM/dd/yyyy`\n * using `en-US` locale: `p` => `hh:mm a`\n * using `pt-BR` locale: `P` => `dd/MM/yyyy`\n * using `pt-BR` locale: `p` => `HH:mm`\n *\n * Values will be assigned to the date in the descending order of its unit's priority.\n * Units of an equal priority overwrite each other in the order of appearance.\n *\n * If no values of higher priority are parsed (e.g. when parsing string 'January 1st' without a year),\n * the values will be taken from 3rd argument `referenceDate` which works as a context of parsing.\n *\n * `referenceDate` must be passed for correct work of the function.\n * If you're not sure which `referenceDate` to supply, create a new instance of Date:\n * `parse('02/11/2014', 'MM/dd/yyyy', new Date())`\n * In this case parsing will be done in the context of the current date.\n * If `referenceDate` is `Invalid Date` or a value not convertible to valid `Date`,\n * then `Invalid Date` will be returned.\n *\n * The result may vary by locale.\n *\n * If `formatString` matches with `dateString` but does not provides tokens, `referenceDate` will be returned.\n *\n * If parsing failed, `Invalid Date` will be returned.\n * Invalid Date is a Date, whose time value is NaN.\n * Time value of Date: http://es5.github.io/#x15.9.1.1\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param dateStr - The string to parse\n * @param formatStr - The string of tokens\n * @param referenceDate - defines values missing from the parsed dateString\n * @param options - An object with options.\n * see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * @returns The parsed date\n *\n * @throws `options.locale` must contain `match` property\n * @throws use `yyyy` instead of `YYYY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws use `yy` instead of `YY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws use `d` instead of `D` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws use `dd` instead of `DD` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws format string contains an unescaped latin alphabet character\n *\n * @example\n * // Parse 11 February 2014 from middle-endian format:\n * var result = parse('02/11/2014', 'MM/dd/yyyy', new Date())\n * //=> Tue Feb 11 2014 00:00:00\n *\n * @example\n * // Parse 28th of February in Esperanto locale in the context of 2010 year:\n * import eo from 'date-fns/locale/eo'\n * var result = parse('28-a de februaro', \"do 'de' MMMM\", new Date(2010, 0, 1), {\n * locale: eo\n * })\n * //=> Sun Feb 28 2010 00:00:00\n */\nexport function parse(dateStr, formatStr, referenceDate, options) {\n const invalidDate = () => constructFrom(options?.in || referenceDate, NaN);\n const defaultOptions = getDefaultOptions();\n const locale = options?.locale ?? defaultOptions.locale ?? defaultLocale;\n\n const firstWeekContainsDate =\n options?.firstWeekContainsDate ??\n options?.locale?.options?.firstWeekContainsDate ??\n defaultOptions.firstWeekContainsDate ??\n defaultOptions.locale?.options?.firstWeekContainsDate ??\n 1;\n\n const weekStartsOn =\n options?.weekStartsOn ??\n options?.locale?.options?.weekStartsOn ??\n defaultOptions.weekStartsOn ??\n defaultOptions.locale?.options?.weekStartsOn ??\n 0;\n\n if (!formatStr)\n return dateStr ? invalidDate() : toDate(referenceDate, options?.in);\n\n const subFnOptions = {\n firstWeekContainsDate,\n weekStartsOn,\n locale,\n };\n\n // If timezone isn't specified, it will try to use the context or\n // the reference date and fallback to the system time zone.\n const setters = [new DateTimezoneSetter(options?.in, referenceDate)];\n\n const tokens = formatStr\n .match(longFormattingTokensRegExp)\n .map((substring) => {\n const firstCharacter = substring[0];\n if (firstCharacter in longFormatters) {\n const longFormatter = longFormatters[firstCharacter];\n return longFormatter(substring, locale.formatLong);\n }\n return substring;\n })\n .join(\"\")\n .match(formattingTokensRegExp);\n\n const usedTokens = [];\n\n for (let token of tokens) {\n if (\n !options?.useAdditionalWeekYearTokens &&\n isProtectedWeekYearToken(token)\n ) {\n warnOrThrowProtectedError(token, formatStr, dateStr);\n }\n if (\n !options?.useAdditionalDayOfYearTokens &&\n isProtectedDayOfYearToken(token)\n ) {\n warnOrThrowProtectedError(token, formatStr, dateStr);\n }\n\n const firstCharacter = token[0];\n const parser = parsers[firstCharacter];\n if (parser) {\n const { incompatibleTokens } = parser;\n if (Array.isArray(incompatibleTokens)) {\n const incompatibleToken = usedTokens.find(\n (usedToken) =>\n incompatibleTokens.includes(usedToken.token) ||\n usedToken.token === firstCharacter,\n );\n if (incompatibleToken) {\n throw new RangeError(\n `The format string mustn't contain \\`${incompatibleToken.fullToken}\\` and \\`${token}\\` at the same time`,\n );\n }\n } else if (parser.incompatibleTokens === \"*\" && usedTokens.length > 0) {\n throw new RangeError(\n `The format string mustn't contain \\`${token}\\` and any other token at the same time`,\n );\n }\n\n usedTokens.push({ token: firstCharacter, fullToken: token });\n\n const parseResult = parser.run(\n dateStr,\n token,\n locale.match,\n subFnOptions,\n );\n\n if (!parseResult) {\n return invalidDate();\n }\n\n setters.push(parseResult.setter);\n\n dateStr = parseResult.rest;\n } else {\n if (firstCharacter.match(unescapedLatinCharacterRegExp)) {\n throw new RangeError(\n \"Format string contains an unescaped latin alphabet character `\" +\n firstCharacter +\n \"`\",\n );\n }\n\n // Replace two single quote characters with one single quote character\n if (token === \"''\") {\n token = \"'\";\n } else if (firstCharacter === \"'\") {\n token = cleanEscapedString(token);\n }\n\n // Cut token from string, or, if string doesn't match the token, return Invalid Date\n if (dateStr.indexOf(token) === 0) {\n dateStr = dateStr.slice(token.length);\n } else {\n return invalidDate();\n }\n }\n }\n\n // Check if the remaining input contains something other than whitespace\n if (dateStr.length > 0 && notWhitespaceRegExp.test(dateStr)) {\n return invalidDate();\n }\n\n const uniquePrioritySetters = setters\n .map((setter) => setter.priority)\n .sort((a, b) => b - a)\n .filter((priority, index, array) => array.indexOf(priority) === index)\n .map((priority) =>\n setters\n .filter((setter) => setter.priority === priority)\n .sort((a, b) => b.subPriority - a.subPriority),\n )\n .map((setterArray) => setterArray[0]);\n\n let date = toDate(referenceDate, options?.in);\n\n if (isNaN(+date)) return invalidDate();\n\n const flags = {};\n for (const setter of uniquePrioritySetters) {\n if (!setter.validate(date, subFnOptions)) {\n return invalidDate();\n }\n\n const result = setter.set(date, flags, subFnOptions);\n // Result is tuple (date, flags)\n if (Array.isArray(result)) {\n date = result[0];\n Object.assign(flags, result[1]);\n // Result is date\n } else {\n date = result;\n }\n }\n\n return date;\n}\n\nfunction cleanEscapedString(input) {\n return input.match(escapedStringRegExp)[1].replace(doubleQuoteRegExp, \"'\");\n}\n\n// Fallback for modularized imports:\nexport default parse;\n","
\n\t\n\t\t\n\t\t\n\t\n
\n","/*!\n * FilePond 4.32.7\n * Licensed under MIT, https://opensource.org/licenses/MIT/\n * Please visit https://pqina.nl/filepond/ for details.\n */\n\n/* eslint-disable */\n\nconst isNode = value => value instanceof HTMLElement;\n\nconst createStore = (initialState, queries = [], actions = []) => {\n // internal state\n const state = {\n ...initialState,\n };\n\n // contains all actions for next frame, is clear when actions are requested\n const actionQueue = [];\n const dispatchQueue = [];\n\n // returns a duplicate of the current state\n const getState = () => ({ ...state });\n\n // returns a duplicate of the actions array and clears the actions array\n const processActionQueue = () => {\n // create copy of actions queue\n const queue = [...actionQueue];\n\n // clear actions queue (we don't want no double actions)\n actionQueue.length = 0;\n\n return queue;\n };\n\n // processes actions that might block the main UI thread\n const processDispatchQueue = () => {\n // create copy of actions queue\n const queue = [...dispatchQueue];\n\n // clear actions queue (we don't want no double actions)\n dispatchQueue.length = 0;\n\n // now dispatch these actions\n queue.forEach(({ type, data }) => {\n dispatch(type, data);\n });\n };\n\n // adds a new action, calls its handler and\n const dispatch = (type, data, isBlocking) => {\n // is blocking action (should never block if document is hidden)\n if (isBlocking && !document.hidden) {\n dispatchQueue.push({ type, data });\n return;\n }\n\n // if this action has a handler, handle the action\n if (actionHandlers[type]) {\n actionHandlers[type](data);\n }\n\n // now add action\n actionQueue.push({\n type,\n data,\n });\n };\n\n const query = (str, ...args) => (queryHandles[str] ? queryHandles[str](...args) : null);\n\n const api = {\n getState,\n processActionQueue,\n processDispatchQueue,\n dispatch,\n query,\n };\n\n let queryHandles = {};\n queries.forEach(query => {\n queryHandles = {\n ...query(state),\n ...queryHandles,\n };\n });\n\n let actionHandlers = {};\n actions.forEach(action => {\n actionHandlers = {\n ...action(dispatch, query, state),\n ...actionHandlers,\n };\n });\n\n return api;\n};\n\nconst defineProperty = (obj, property, definition) => {\n if (typeof definition === 'function') {\n obj[property] = definition;\n return;\n }\n Object.defineProperty(obj, property, { ...definition });\n};\n\nconst forin = (obj, cb) => {\n for (const key in obj) {\n if (!obj.hasOwnProperty(key)) {\n continue;\n }\n\n cb(key, obj[key]);\n }\n};\n\nconst createObject = definition => {\n const obj = {};\n forin(definition, property => {\n defineProperty(obj, property, definition[property]);\n });\n return obj;\n};\n\nconst attr = (node, name, value = null) => {\n if (value === null) {\n return node.getAttribute(name) || node.hasAttribute(name);\n }\n node.setAttribute(name, value);\n};\n\nconst ns = 'http://www.w3.org/2000/svg';\nconst svgElements = ['svg', 'path']; // only svg elements used\n\nconst isSVGElement = tag => svgElements.includes(tag);\n\nconst createElement = (tag, className, attributes = {}) => {\n if (typeof className === 'object') {\n attributes = className;\n className = null;\n }\n const element = isSVGElement(tag)\n ? document.createElementNS(ns, tag)\n : document.createElement(tag);\n if (className) {\n if (isSVGElement(tag)) {\n attr(element, 'class', className);\n } else {\n element.className = className;\n }\n }\n forin(attributes, (name, value) => {\n attr(element, name, value);\n });\n return element;\n};\n\nconst appendChild = parent => (child, index) => {\n if (typeof index !== 'undefined' && parent.children[index]) {\n parent.insertBefore(child, parent.children[index]);\n } else {\n parent.appendChild(child);\n }\n};\n\nconst appendChildView = (parent, childViews) => (view, index) => {\n if (typeof index !== 'undefined') {\n childViews.splice(index, 0, view);\n } else {\n childViews.push(view);\n }\n\n return view;\n};\n\nconst removeChildView = (parent, childViews) => view => {\n // remove from child views\n childViews.splice(childViews.indexOf(view), 1);\n\n // remove the element\n if (view.element.parentNode) {\n parent.removeChild(view.element);\n }\n\n return view;\n};\n\nconst IS_BROWSER = (() =>\n typeof window !== 'undefined' && typeof window.document !== 'undefined')();\nconst isBrowser = () => IS_BROWSER;\n\nconst testElement = isBrowser() ? createElement('svg') : {};\nconst getChildCount =\n 'children' in testElement ? el => el.children.length : el => el.childNodes.length;\n\nconst getViewRect = (elementRect, childViews, offset, scale) => {\n const left = offset[0] || elementRect.left;\n const top = offset[1] || elementRect.top;\n const right = left + elementRect.width;\n const bottom = top + elementRect.height * (scale[1] || 1);\n\n const rect = {\n // the rectangle of the element itself\n element: {\n ...elementRect,\n },\n\n // the rectangle of the element expanded to contain its children, does not include any margins\n inner: {\n left: elementRect.left,\n top: elementRect.top,\n right: elementRect.right,\n bottom: elementRect.bottom,\n },\n\n // the rectangle of the element expanded to contain its children including own margin and child margins\n // margins will be added after we've recalculated the size\n outer: {\n left,\n top,\n right,\n bottom,\n },\n };\n\n // expand rect to fit all child rectangles\n childViews\n .filter(childView => !childView.isRectIgnored())\n .map(childView => childView.rect)\n .forEach(childViewRect => {\n expandRect(rect.inner, { ...childViewRect.inner });\n expandRect(rect.outer, { ...childViewRect.outer });\n });\n\n // calculate inner width and height\n calculateRectSize(rect.inner);\n\n // append additional margin (top and left margins are included in top and left automatically)\n rect.outer.bottom += rect.element.marginBottom;\n rect.outer.right += rect.element.marginRight;\n\n // calculate outer width and height\n calculateRectSize(rect.outer);\n\n return rect;\n};\n\nconst expandRect = (parent, child) => {\n // adjust for parent offset\n child.top += parent.top;\n child.right += parent.left;\n child.bottom += parent.top;\n child.left += parent.left;\n\n if (child.bottom > parent.bottom) {\n parent.bottom = child.bottom;\n }\n\n if (child.right > parent.right) {\n parent.right = child.right;\n }\n};\n\nconst calculateRectSize = rect => {\n rect.width = rect.right - rect.left;\n rect.height = rect.bottom - rect.top;\n};\n\nconst isNumber = value => typeof value === 'number';\n\n/**\n * Determines if position is at destination\n * @param position\n * @param destination\n * @param velocity\n * @param errorMargin\n * @returns {boolean}\n */\nconst thereYet = (position, destination, velocity, errorMargin = 0.001) => {\n return Math.abs(position - destination) < errorMargin && Math.abs(velocity) < errorMargin;\n};\n\n/**\n * Spring animation\n */\nconst spring =\n // default options\n ({ stiffness = 0.5, damping = 0.75, mass = 10 } = {}) =>\n // method definition\n {\n let target = null;\n let position = null;\n let velocity = 0;\n let resting = false;\n\n // updates spring state\n const interpolate = (ts, skipToEndState) => {\n // in rest, don't animate\n if (resting) return;\n\n // need at least a target or position to do springy things\n if (!(isNumber(target) && isNumber(position))) {\n resting = true;\n velocity = 0;\n return;\n }\n\n // calculate spring force\n const f = -(position - target) * stiffness;\n\n // update velocity by adding force based on mass\n velocity += f / mass;\n\n // update position by adding velocity\n position += velocity;\n\n // slow down based on amount of damping\n velocity *= damping;\n\n // we've arrived if we're near target and our velocity is near zero\n if (thereYet(position, target, velocity) || skipToEndState) {\n position = target;\n velocity = 0;\n resting = true;\n\n // we done\n api.onupdate(position);\n api.oncomplete(position);\n } else {\n // progress update\n api.onupdate(position);\n }\n };\n\n /**\n * Set new target value\n * @param value\n */\n const setTarget = value => {\n // if currently has no position, set target and position to this value\n if (isNumber(value) && !isNumber(position)) {\n position = value;\n }\n\n // next target value will not be animated to\n if (target === null) {\n target = value;\n position = value;\n }\n\n // let start moving to target\n target = value;\n\n // already at target\n if (position === target || typeof target === 'undefined') {\n // now resting as target is current position, stop moving\n resting = true;\n velocity = 0;\n\n // done!\n api.onupdate(position);\n api.oncomplete(position);\n\n return;\n }\n\n resting = false;\n };\n\n // need 'api' to call onupdate callback\n const api = createObject({\n interpolate,\n target: {\n set: setTarget,\n get: () => target,\n },\n resting: {\n get: () => resting,\n },\n onupdate: value => {},\n oncomplete: value => {},\n });\n\n return api;\n };\n\nconst easeLinear = t => t;\nconst easeInOutQuad = t => (t < 0.5 ? 2 * t * t : -1 + (4 - 2 * t) * t);\n\nconst tween =\n // default values\n ({ duration = 500, easing = easeInOutQuad, delay = 0 } = {}) =>\n // method definition\n {\n let start = null;\n let t;\n let p;\n let resting = true;\n let reverse = false;\n let target = null;\n\n const interpolate = (ts, skipToEndState) => {\n if (resting || target === null) return;\n\n if (start === null) {\n start = ts;\n }\n\n if (ts - start < delay) return;\n\n t = ts - start - delay;\n\n if (t >= duration || skipToEndState) {\n t = 1;\n p = reverse ? 0 : 1;\n api.onupdate(p * target);\n api.oncomplete(p * target);\n resting = true;\n } else {\n p = t / duration;\n api.onupdate((t >= 0 ? easing(reverse ? 1 - p : p) : 0) * target);\n }\n };\n\n // need 'api' to call onupdate callback\n const api = createObject({\n interpolate,\n target: {\n get: () => (reverse ? 0 : target),\n set: value => {\n // is initial value\n if (target === null) {\n target = value;\n api.onupdate(value);\n api.oncomplete(value);\n return;\n }\n\n // want to tween to a smaller value and have a current value\n if (value < target) {\n target = 1;\n reverse = true;\n } else {\n // not tweening to a smaller value\n reverse = false;\n target = value;\n }\n\n // let's go!\n resting = false;\n start = null;\n },\n },\n resting: {\n get: () => resting,\n },\n onupdate: value => {},\n oncomplete: value => {},\n });\n\n return api;\n };\n\nconst animator = {\n spring,\n tween,\n};\n\n/*\n { type: 'spring', stiffness: .5, damping: .75, mass: 10 };\n { translation: { type: 'spring', ... }, ... }\n { translation: { x: { type: 'spring', ... } } }\n*/\nconst createAnimator = (definition, category, property) => {\n // default is single definition\n // we check if transform is set, if so, we check if property is set\n const def =\n definition[category] && typeof definition[category][property] === 'object'\n ? definition[category][property]\n : definition[category] || definition;\n\n const type = typeof def === 'string' ? def : def.type;\n const props = typeof def === 'object' ? { ...def } : {};\n\n return animator[type] ? animator[type](props) : null;\n};\n\nconst addGetSet = (keys, obj, props, overwrite = false) => {\n obj = Array.isArray(obj) ? obj : [obj];\n obj.forEach(o => {\n keys.forEach(key => {\n let name = key;\n let getter = () => props[key];\n let setter = value => (props[key] = value);\n\n if (typeof key === 'object') {\n name = key.key;\n getter = key.getter || getter;\n setter = key.setter || setter;\n }\n\n if (o[name] && !overwrite) {\n return;\n }\n\n o[name] = {\n get: getter,\n set: setter,\n };\n });\n });\n};\n\n// add to state,\n// add getters and setters to internal and external api (if not set)\n// setup animators\n\nconst animations = ({ mixinConfig, viewProps, viewInternalAPI, viewExternalAPI }) => {\n // initial properties\n const initialProps = { ...viewProps };\n\n // list of all active animations\n const animations = [];\n\n // setup animators\n forin(mixinConfig, (property, animation) => {\n const animator = createAnimator(animation);\n if (!animator) {\n return;\n }\n\n // when the animator updates, update the view state value\n animator.onupdate = value => {\n viewProps[property] = value;\n };\n\n // set animator target\n animator.target = initialProps[property];\n\n // when value is set, set the animator target value\n const prop = {\n key: property,\n setter: value => {\n // if already at target, we done!\n if (animator.target === value) {\n return;\n }\n\n animator.target = value;\n },\n getter: () => viewProps[property],\n };\n\n // add getters and setters\n addGetSet([prop], [viewInternalAPI, viewExternalAPI], viewProps, true);\n\n // add it to the list for easy updating from the _write method\n animations.push(animator);\n });\n\n // expose internal write api\n return {\n write: ts => {\n let skipToEndState = document.hidden;\n let resting = true;\n animations.forEach(animation => {\n if (!animation.resting) resting = false;\n animation.interpolate(ts, skipToEndState);\n });\n return resting;\n },\n destroy: () => {},\n };\n};\n\nconst addEvent = element => (type, fn) => {\n element.addEventListener(type, fn);\n};\n\nconst removeEvent = element => (type, fn) => {\n element.removeEventListener(type, fn);\n};\n\n// mixin\nconst listeners = ({\n mixinConfig,\n viewProps,\n viewInternalAPI,\n viewExternalAPI,\n viewState,\n view,\n}) => {\n const events = [];\n\n const add = addEvent(view.element);\n const remove = removeEvent(view.element);\n\n viewExternalAPI.on = (type, fn) => {\n events.push({\n type,\n fn,\n });\n add(type, fn);\n };\n\n viewExternalAPI.off = (type, fn) => {\n events.splice(events.findIndex(event => event.type === type && event.fn === fn), 1);\n remove(type, fn);\n };\n\n return {\n write: () => {\n // not busy\n return true;\n },\n destroy: () => {\n events.forEach(event => {\n remove(event.type, event.fn);\n });\n },\n };\n};\n\n// add to external api and link to props\n\nconst apis = ({ mixinConfig, viewProps, viewExternalAPI }) => {\n addGetSet(mixinConfig, viewExternalAPI, viewProps);\n};\n\nconst isDefined = value => value != null;\n\n// add to state,\n// add getters and setters to internal and external api (if not set)\n// set initial state based on props in viewProps\n// apply as transforms each frame\n\nconst defaults = {\n opacity: 1,\n scaleX: 1,\n scaleY: 1,\n translateX: 0,\n translateY: 0,\n rotateX: 0,\n rotateY: 0,\n rotateZ: 0,\n originX: 0,\n originY: 0,\n};\n\nconst styles = ({ mixinConfig, viewProps, viewInternalAPI, viewExternalAPI, view }) => {\n // initial props\n const initialProps = { ...viewProps };\n\n // current props\n const currentProps = {};\n\n // we will add those properties to the external API and link them to the viewState\n addGetSet(mixinConfig, [viewInternalAPI, viewExternalAPI], viewProps);\n\n // override rect on internal and external rect getter so it takes in account transforms\n const getOffset = () => [viewProps['translateX'] || 0, viewProps['translateY'] || 0];\n const getScale = () => [viewProps['scaleX'] || 0, viewProps['scaleY'] || 0];\n const getRect = () =>\n view.rect ? getViewRect(view.rect, view.childViews, getOffset(), getScale()) : null;\n viewInternalAPI.rect = { get: getRect };\n viewExternalAPI.rect = { get: getRect };\n\n // apply view props\n mixinConfig.forEach(key => {\n viewProps[key] =\n typeof initialProps[key] === 'undefined' ? defaults[key] : initialProps[key];\n });\n\n // expose api\n return {\n write: () => {\n // see if props have changed\n if (!propsHaveChanged(currentProps, viewProps)) {\n return;\n }\n\n // moves element to correct position on screen\n applyStyles(view.element, viewProps);\n\n // store new transforms\n Object.assign(currentProps, { ...viewProps });\n\n // no longer busy\n return true;\n },\n destroy: () => {},\n };\n};\n\nconst propsHaveChanged = (currentProps, newProps) => {\n // different amount of keys\n if (Object.keys(currentProps).length !== Object.keys(newProps).length) {\n return true;\n }\n\n // lets analyze the individual props\n for (const prop in newProps) {\n if (newProps[prop] !== currentProps[prop]) {\n return true;\n }\n }\n\n return false;\n};\n\nconst applyStyles = (\n element,\n {\n opacity,\n perspective,\n translateX,\n translateY,\n scaleX,\n scaleY,\n rotateX,\n rotateY,\n rotateZ,\n originX,\n originY,\n width,\n height,\n }\n) => {\n let transforms = '';\n let styles = '';\n\n // handle transform origin\n if (isDefined(originX) || isDefined(originY)) {\n styles += `transform-origin: ${originX || 0}px ${originY || 0}px;`;\n }\n\n // transform order is relevant\n // 0. perspective\n if (isDefined(perspective)) {\n transforms += `perspective(${perspective}px) `;\n }\n\n // 1. translate\n if (isDefined(translateX) || isDefined(translateY)) {\n transforms += `translate3d(${translateX || 0}px, ${translateY || 0}px, 0) `;\n }\n\n // 2. scale\n if (isDefined(scaleX) || isDefined(scaleY)) {\n transforms += `scale3d(${isDefined(scaleX) ? scaleX : 1}, ${\n isDefined(scaleY) ? scaleY : 1\n }, 1) `;\n }\n\n // 3. rotate\n if (isDefined(rotateZ)) {\n transforms += `rotateZ(${rotateZ}rad) `;\n }\n\n if (isDefined(rotateX)) {\n transforms += `rotateX(${rotateX}rad) `;\n }\n\n if (isDefined(rotateY)) {\n transforms += `rotateY(${rotateY}rad) `;\n }\n\n // add transforms\n if (transforms.length) {\n styles += `transform:${transforms};`;\n }\n\n // add opacity\n if (isDefined(opacity)) {\n styles += `opacity:${opacity};`;\n\n // if we reach zero, we make the element inaccessible\n if (opacity === 0) {\n styles += `visibility:hidden;`;\n }\n\n // if we're below 100% opacity this element can't be clicked\n if (opacity < 1) {\n styles += `pointer-events:none;`;\n }\n }\n\n // add height\n if (isDefined(height)) {\n styles += `height:${height}px;`;\n }\n\n // add width\n if (isDefined(width)) {\n styles += `width:${width}px;`;\n }\n\n // apply styles\n const elementCurrentStyle = element.elementCurrentStyle || '';\n\n // if new styles does not match current styles, lets update!\n if (styles.length !== elementCurrentStyle.length || styles !== elementCurrentStyle) {\n element.style.cssText = styles;\n // store current styles so we can compare them to new styles later on\n // _not_ getting the style value is faster\n element.elementCurrentStyle = styles;\n }\n};\n\nconst Mixins = {\n styles,\n listeners,\n animations,\n apis,\n};\n\nconst updateRect = (rect = {}, element = {}, style = {}) => {\n if (!element.layoutCalculated) {\n rect.paddingTop = parseInt(style.paddingTop, 10) || 0;\n rect.marginTop = parseInt(style.marginTop, 10) || 0;\n rect.marginRight = parseInt(style.marginRight, 10) || 0;\n rect.marginBottom = parseInt(style.marginBottom, 10) || 0;\n rect.marginLeft = parseInt(style.marginLeft, 10) || 0;\n element.layoutCalculated = true;\n }\n\n rect.left = element.offsetLeft || 0;\n rect.top = element.offsetTop || 0;\n rect.width = element.offsetWidth || 0;\n rect.height = element.offsetHeight || 0;\n\n rect.right = rect.left + rect.width;\n rect.bottom = rect.top + rect.height;\n\n rect.scrollTop = element.scrollTop;\n\n rect.hidden = element.offsetParent === null;\n\n return rect;\n};\n\nconst createView =\n // default view definition\n ({\n // element definition\n tag = 'div',\n name = null,\n attributes = {},\n\n // view interaction\n read = () => {},\n write = () => {},\n create = () => {},\n destroy = () => {},\n\n // hooks\n filterFrameActionsForChild = (child, actions) => actions,\n didCreateView = () => {},\n didWriteView = () => {},\n\n // rect related\n ignoreRect = false,\n ignoreRectUpdate = false,\n\n // mixins\n mixins = [],\n } = {}) => (\n // each view requires reference to store\n store,\n // specific properties for this view\n props = {}\n ) => {\n // root element should not be changed\n const element = createElement(tag, `filepond--${name}`, attributes);\n\n // style reference should also not be changed\n const style = window.getComputedStyle(element, null);\n\n // element rectangle\n const rect = updateRect();\n let frameRect = null;\n\n // rest state\n let isResting = false;\n\n // pretty self explanatory\n const childViews = [];\n\n // loaded mixins\n const activeMixins = [];\n\n // references to created children\n const ref = {};\n\n // state used for each instance\n const state = {};\n\n // list of writers that will be called to update this view\n const writers = [\n write, // default writer\n ];\n\n const readers = [\n read, // default reader\n ];\n\n const destroyers = [\n destroy, // default destroy\n ];\n\n // core view methods\n const getElement = () => element;\n const getChildViews = () => childViews.concat();\n const getReference = () => ref;\n const createChildView = store => (view, props) => view(store, props);\n const getRect = () => {\n if (frameRect) {\n return frameRect;\n }\n frameRect = getViewRect(rect, childViews, [0, 0], [1, 1]);\n return frameRect;\n };\n const getStyle = () => style;\n\n /**\n * Read data from DOM\n * @private\n */\n const _read = () => {\n frameRect = null;\n\n // read child views\n childViews.forEach(child => child._read());\n\n const shouldUpdate = !(ignoreRectUpdate && rect.width && rect.height);\n if (shouldUpdate) {\n updateRect(rect, element, style);\n }\n\n // readers\n const api = { root: internalAPI, props, rect };\n readers.forEach(reader => reader(api));\n };\n\n /**\n * Write data to DOM\n * @private\n */\n const _write = (ts, frameActions, shouldOptimize) => {\n // if no actions, we assume that the view is resting\n let resting = frameActions.length === 0;\n\n // writers\n writers.forEach(writer => {\n const writerResting = writer({\n props,\n root: internalAPI,\n actions: frameActions,\n timestamp: ts,\n shouldOptimize,\n });\n if (writerResting === false) {\n resting = false;\n }\n });\n\n // run mixins\n activeMixins.forEach(mixin => {\n // if one of the mixins is still busy after write operation, we are not resting\n const mixinResting = mixin.write(ts);\n if (mixinResting === false) {\n resting = false;\n }\n });\n\n // updates child views that are currently attached to the DOM\n childViews\n .filter(child => !!child.element.parentNode)\n .forEach(child => {\n // if a child view is not resting, we are not resting\n const childResting = child._write(\n ts,\n filterFrameActionsForChild(child, frameActions),\n shouldOptimize\n );\n if (!childResting) {\n resting = false;\n }\n });\n\n // append new elements to DOM and update those\n childViews\n //.filter(child => !child.element.parentNode)\n .forEach((child, index) => {\n // skip\n if (child.element.parentNode) {\n return;\n }\n\n // append to DOM\n internalAPI.appendChild(child.element, index);\n\n // call read (need to know the size of these elements)\n child._read();\n\n // re-call write\n child._write(\n ts,\n filterFrameActionsForChild(child, frameActions),\n shouldOptimize\n );\n\n // we just added somthing to the dom, no rest\n resting = false;\n });\n\n // update resting state\n isResting = resting;\n\n didWriteView({\n props,\n root: internalAPI,\n actions: frameActions,\n timestamp: ts,\n });\n\n // let parent know if we are resting\n return resting;\n };\n\n const _destroy = () => {\n activeMixins.forEach(mixin => mixin.destroy());\n destroyers.forEach(destroyer => {\n destroyer({ root: internalAPI, props });\n });\n childViews.forEach(child => child._destroy());\n };\n\n // sharedAPI\n const sharedAPIDefinition = {\n element: {\n get: getElement,\n },\n style: {\n get: getStyle,\n },\n childViews: {\n get: getChildViews,\n },\n };\n\n // private API definition\n const internalAPIDefinition = {\n ...sharedAPIDefinition,\n rect: {\n get: getRect,\n },\n\n // access to custom children references\n ref: {\n get: getReference,\n },\n\n // dom modifiers\n is: needle => name === needle,\n appendChild: appendChild(element),\n createChildView: createChildView(store),\n linkView: view => {\n childViews.push(view);\n return view;\n },\n unlinkView: view => {\n childViews.splice(childViews.indexOf(view), 1);\n },\n appendChildView: appendChildView(element, childViews),\n removeChildView: removeChildView(element, childViews),\n registerWriter: writer => writers.push(writer),\n registerReader: reader => readers.push(reader),\n registerDestroyer: destroyer => destroyers.push(destroyer),\n invalidateLayout: () => (element.layoutCalculated = false),\n\n // access to data store\n dispatch: store.dispatch,\n query: store.query,\n };\n\n // public view API methods\n const externalAPIDefinition = {\n element: {\n get: getElement,\n },\n childViews: {\n get: getChildViews,\n },\n rect: {\n get: getRect,\n },\n resting: {\n get: () => isResting,\n },\n isRectIgnored: () => ignoreRect,\n _read,\n _write,\n _destroy,\n };\n\n // mixin API methods\n const mixinAPIDefinition = {\n ...sharedAPIDefinition,\n rect: {\n get: () => rect,\n },\n };\n\n // add mixin functionality\n Object.keys(mixins)\n .sort((a, b) => {\n // move styles to the back of the mixin list (so adjustments of other mixins are applied to the props correctly)\n if (a === 'styles') {\n return 1;\n } else if (b === 'styles') {\n return -1;\n }\n return 0;\n })\n .forEach(key => {\n const mixinAPI = Mixins[key]({\n mixinConfig: mixins[key],\n viewProps: props,\n viewState: state,\n viewInternalAPI: internalAPIDefinition,\n viewExternalAPI: externalAPIDefinition,\n view: createObject(mixinAPIDefinition),\n });\n\n if (mixinAPI) {\n activeMixins.push(mixinAPI);\n }\n });\n\n // construct private api\n const internalAPI = createObject(internalAPIDefinition);\n\n // create the view\n create({\n root: internalAPI,\n props,\n });\n\n // append created child views to root node\n const childCount = getChildCount(element); // need to know the current child count so appending happens in correct order\n childViews.forEach((child, index) => {\n internalAPI.appendChild(child.element, childCount + index);\n });\n\n // call did create\n didCreateView(internalAPI);\n\n // expose public api\n return createObject(externalAPIDefinition);\n };\n\nconst createPainter = (read, write, fps = 60) => {\n const name = '__framePainter';\n\n // set global painter\n if (window[name]) {\n window[name].readers.push(read);\n window[name].writers.push(write);\n return;\n }\n\n window[name] = {\n readers: [read],\n writers: [write],\n };\n\n const painter = window[name];\n\n const interval = 1000 / fps;\n let last = null;\n let id = null;\n let requestTick = null;\n let cancelTick = null;\n\n const setTimerType = () => {\n if (document.hidden) {\n requestTick = () => window.setTimeout(() => tick(performance.now()), interval);\n cancelTick = () => window.clearTimeout(id);\n } else {\n requestTick = () => window.requestAnimationFrame(tick);\n cancelTick = () => window.cancelAnimationFrame(id);\n }\n };\n\n document.addEventListener('visibilitychange', () => {\n if (cancelTick) cancelTick();\n setTimerType();\n tick(performance.now());\n });\n\n const tick = ts => {\n // queue next tick\n id = requestTick(tick);\n\n // limit fps\n if (!last) {\n last = ts;\n }\n\n const delta = ts - last;\n\n if (delta <= interval) {\n // skip frame\n return;\n }\n\n // align next frame\n last = ts - (delta % interval);\n\n // update view\n painter.readers.forEach(read => read());\n painter.writers.forEach(write => write(ts));\n };\n\n setTimerType();\n tick(performance.now());\n\n return {\n pause: () => {\n cancelTick(id);\n },\n };\n};\n\nconst createRoute = (routes, fn) => ({ root, props, actions = [], timestamp, shouldOptimize }) => {\n actions\n .filter(action => routes[action.type])\n .forEach(action =>\n routes[action.type]({ root, props, action: action.data, timestamp, shouldOptimize })\n );\n if (fn) {\n fn({ root, props, actions, timestamp, shouldOptimize });\n }\n};\n\nconst insertBefore = (newNode, referenceNode) =>\n referenceNode.parentNode.insertBefore(newNode, referenceNode);\n\nconst insertAfter = (newNode, referenceNode) => {\n return referenceNode.parentNode.insertBefore(newNode, referenceNode.nextSibling);\n};\n\nconst isArray = value => Array.isArray(value);\n\nconst isEmpty = value => value == null;\n\nconst trim = str => str.trim();\n\nconst toString = value => '' + value;\n\nconst toArray = (value, splitter = ',') => {\n if (isEmpty(value)) {\n return [];\n }\n if (isArray(value)) {\n return value;\n }\n return toString(value)\n .split(splitter)\n .map(trim)\n .filter(str => str.length);\n};\n\nconst isBoolean = value => typeof value === 'boolean';\n\nconst toBoolean = value => (isBoolean(value) ? value : value === 'true');\n\nconst isString = value => typeof value === 'string';\n\nconst toNumber = value =>\n isNumber(value) ? value : isString(value) ? toString(value).replace(/[a-z]+/gi, '') : 0;\n\nconst toInt = value => parseInt(toNumber(value), 10);\n\nconst toFloat = value => parseFloat(toNumber(value));\n\nconst isInt = value => isNumber(value) && isFinite(value) && Math.floor(value) === value;\n\nconst toBytes = (value, base = 1000) => {\n // is in bytes\n if (isInt(value)) {\n return value;\n }\n\n // is natural file size\n let naturalFileSize = toString(value).trim();\n\n // if is value in megabytes\n if (/MB$/i.test(naturalFileSize)) {\n naturalFileSize = naturalFileSize.replace(/MB$i/, '').trim();\n return toInt(naturalFileSize) * base * base;\n }\n\n // if is value in kilobytes\n if (/KB/i.test(naturalFileSize)) {\n naturalFileSize = naturalFileSize.replace(/KB$i/, '').trim();\n return toInt(naturalFileSize) * base;\n }\n\n return toInt(naturalFileSize);\n};\n\nconst isFunction = value => typeof value === 'function';\n\nconst toFunctionReference = string => {\n let ref = self;\n let levels = string.split('.');\n let level = null;\n while ((level = levels.shift())) {\n ref = ref[level];\n if (!ref) {\n return null;\n }\n }\n return ref;\n};\n\nconst methods = {\n process: 'POST',\n patch: 'PATCH',\n revert: 'DELETE',\n fetch: 'GET',\n restore: 'GET',\n load: 'GET',\n};\n\nconst createServerAPI = outline => {\n const api = {};\n\n api.url = isString(outline) ? outline : outline.url || '';\n api.timeout = outline.timeout ? parseInt(outline.timeout, 10) : 0;\n api.headers = outline.headers ? outline.headers : {};\n\n forin(methods, key => {\n api[key] = createAction(key, outline[key], methods[key], api.timeout, api.headers);\n });\n\n // remove process if no url or process on outline\n api.process = outline.process || isString(outline) || outline.url ? api.process : null;\n\n // special treatment for remove\n api.remove = outline.remove || null;\n\n // remove generic headers from api object\n delete api.headers;\n\n return api;\n};\n\nconst createAction = (name, outline, method, timeout, headers) => {\n // is explicitely set to null so disable\n if (outline === null) {\n return null;\n }\n\n // if is custom function, done! Dev handles everything.\n if (typeof outline === 'function') {\n return outline;\n }\n\n // build action object\n const action = {\n url: method === 'GET' || method === 'PATCH' ? `?${name}=` : '',\n method,\n headers,\n withCredentials: false,\n timeout,\n onload: null,\n ondata: null,\n onerror: null,\n };\n\n // is a single url\n if (isString(outline)) {\n action.url = outline;\n return action;\n }\n\n // overwrite\n Object.assign(action, outline);\n\n // see if should reformat headers;\n if (isString(action.headers)) {\n const parts = action.headers.split(/:(.+)/);\n action.headers = {\n header: parts[0],\n value: parts[1],\n };\n }\n\n // if is bool withCredentials\n action.withCredentials = toBoolean(action.withCredentials);\n\n return action;\n};\n\nconst toServerAPI = value => createServerAPI(value);\n\nconst isNull = value => value === null;\n\nconst isObject = value => typeof value === 'object' && value !== null;\n\nconst isAPI = value => {\n return (\n isObject(value) &&\n isString(value.url) &&\n isObject(value.process) &&\n isObject(value.revert) &&\n isObject(value.restore) &&\n isObject(value.fetch)\n );\n};\n\nconst getType = value => {\n if (isArray(value)) {\n return 'array';\n }\n\n if (isNull(value)) {\n return 'null';\n }\n\n if (isInt(value)) {\n return 'int';\n }\n\n if (/^[0-9]+ ?(?:GB|MB|KB)$/gi.test(value)) {\n return 'bytes';\n }\n\n if (isAPI(value)) {\n return 'api';\n }\n\n return typeof value;\n};\n\nconst replaceSingleQuotes = str =>\n str\n .replace(/{\\s*'/g, '{\"')\n .replace(/'\\s*}/g, '\"}')\n .replace(/'\\s*:/g, '\":')\n .replace(/:\\s*'/g, ':\"')\n .replace(/,\\s*'/g, ',\"')\n .replace(/'\\s*,/g, '\",');\n\nconst conversionTable = {\n array: toArray,\n boolean: toBoolean,\n int: value => (getType(value) === 'bytes' ? toBytes(value) : toInt(value)),\n number: toFloat,\n float: toFloat,\n bytes: toBytes,\n string: value => (isFunction(value) ? value : toString(value)),\n function: value => toFunctionReference(value),\n serverapi: toServerAPI,\n object: value => {\n try {\n return JSON.parse(replaceSingleQuotes(value));\n } catch (e) {\n return null;\n }\n },\n};\n\nconst convertTo = (value, type) => conversionTable[type](value);\n\nconst getValueByType = (newValue, defaultValue, valueType) => {\n // can always assign default value\n if (newValue === defaultValue) {\n return newValue;\n }\n\n // get the type of the new value\n let newValueType = getType(newValue);\n\n // is valid type?\n if (newValueType !== valueType) {\n // is string input, let's attempt to convert\n const convertedValue = convertTo(newValue, valueType);\n\n // what is the type now\n newValueType = getType(convertedValue);\n\n // no valid conversions found\n if (convertedValue === null) {\n throw `Trying to assign value with incorrect type to \"${option}\", allowed type: \"${valueType}\"`;\n } else {\n newValue = convertedValue;\n }\n }\n\n // assign new value\n return newValue;\n};\n\nconst createOption = (defaultValue, valueType) => {\n let currentValue = defaultValue;\n return {\n enumerable: true,\n get: () => currentValue,\n set: newValue => {\n currentValue = getValueByType(newValue, defaultValue, valueType);\n },\n };\n};\n\nconst createOptions = options => {\n const obj = {};\n forin(options, prop => {\n const optionDefinition = options[prop];\n obj[prop] = createOption(optionDefinition[0], optionDefinition[1]);\n });\n return createObject(obj);\n};\n\nconst createInitialState = options => ({\n // model\n items: [],\n\n // timeout used for calling update items\n listUpdateTimeout: null,\n\n // timeout used for stacking metadata updates\n itemUpdateTimeout: null,\n\n // queue of items waiting to be processed\n processingQueue: [],\n\n // options\n options: createOptions(options),\n});\n\nconst fromCamels = (string, separator = '-') =>\n string\n .split(/(?=[A-Z])/)\n .map(part => part.toLowerCase())\n .join(separator);\n\nconst createOptionAPI = (store, options) => {\n const obj = {};\n forin(options, key => {\n obj[key] = {\n get: () => store.getState().options[key],\n set: value => {\n store.dispatch(`SET_${fromCamels(key, '_').toUpperCase()}`, {\n value,\n });\n },\n };\n });\n return obj;\n};\n\nconst createOptionActions = options => (dispatch, query, state) => {\n const obj = {};\n forin(options, key => {\n const name = fromCamels(key, '_').toUpperCase();\n\n obj[`SET_${name}`] = action => {\n try {\n state.options[key] = action.value;\n } catch (e) {\n // nope, failed\n }\n\n // we successfully set the value of this option\n dispatch(`DID_SET_${name}`, { value: state.options[key] });\n };\n });\n return obj;\n};\n\nconst createOptionQueries = options => state => {\n const obj = {};\n forin(options, key => {\n obj[`GET_${fromCamels(key, '_').toUpperCase()}`] = action => state.options[key];\n });\n return obj;\n};\n\nconst InteractionMethod = {\n API: 1,\n DROP: 2,\n BROWSE: 3,\n PASTE: 4,\n NONE: 5,\n};\n\nconst getUniqueId = () =>\n Math.random()\n .toString(36)\n .substring(2, 11);\n\nconst arrayRemove = (arr, index) => arr.splice(index, 1);\n\nconst run = (cb, sync) => {\n if (sync) {\n cb();\n } else if (document.hidden) {\n Promise.resolve(1).then(cb);\n } else {\n setTimeout(cb, 0);\n }\n};\n\nconst on = () => {\n const listeners = [];\n const off = (event, cb) => {\n arrayRemove(\n listeners,\n listeners.findIndex(listener => listener.event === event && (listener.cb === cb || !cb))\n );\n };\n const fire = (event, args, sync) => {\n listeners\n .filter(listener => listener.event === event)\n .map(listener => listener.cb)\n .forEach(cb => run(() => cb(...args), sync));\n };\n return {\n fireSync: (event, ...args) => {\n fire(event, args, true);\n },\n fire: (event, ...args) => {\n fire(event, args, false);\n },\n on: (event, cb) => {\n listeners.push({ event, cb });\n },\n onOnce: (event, cb) => {\n listeners.push({\n event,\n cb: (...args) => {\n off(event, cb);\n cb(...args);\n },\n });\n },\n off,\n };\n};\n\nconst copyObjectPropertiesToObject = (src, target, excluded) => {\n Object.getOwnPropertyNames(src)\n .filter(property => !excluded.includes(property))\n .forEach(key =>\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(src, key))\n );\n};\n\nconst PRIVATE = [\n 'fire',\n 'process',\n 'revert',\n 'load',\n 'on',\n 'off',\n 'onOnce',\n 'retryLoad',\n 'extend',\n 'archive',\n 'archived',\n 'release',\n 'released',\n 'requestProcessing',\n 'freeze',\n];\n\nconst createItemAPI = item => {\n const api = {};\n copyObjectPropertiesToObject(item, api, PRIVATE);\n return api;\n};\n\nconst removeReleasedItems = items => {\n items.forEach((item, index) => {\n if (item.released) {\n arrayRemove(items, index);\n }\n });\n};\n\nconst ItemStatus = {\n INIT: 1,\n IDLE: 2,\n PROCESSING_QUEUED: 9,\n PROCESSING: 3,\n PROCESSING_COMPLETE: 5,\n PROCESSING_ERROR: 6,\n PROCESSING_REVERT_ERROR: 10,\n LOADING: 7,\n LOAD_ERROR: 8,\n};\n\nconst FileOrigin = {\n INPUT: 1,\n LIMBO: 2,\n LOCAL: 3,\n};\n\nconst getNonNumeric = str => /[^0-9]+/.exec(str);\n\nconst getDecimalSeparator = () => getNonNumeric((1.1).toLocaleString())[0];\n\nconst getThousandsSeparator = () => {\n // Added for browsers that do not return the thousands separator (happend on native browser Android 4.4.4)\n // We check against the normal toString output and if they're the same return a comma when decimal separator is a dot\n const decimalSeparator = getDecimalSeparator();\n const thousandsStringWithSeparator = (1000.0).toLocaleString();\n const thousandsStringWithoutSeparator = (1000.0).toString();\n if (thousandsStringWithSeparator !== thousandsStringWithoutSeparator) {\n return getNonNumeric(thousandsStringWithSeparator)[0];\n }\n return decimalSeparator === '.' ? ',' : '.';\n};\n\nconst Type = {\n BOOLEAN: 'boolean',\n INT: 'int',\n NUMBER: 'number',\n STRING: 'string',\n ARRAY: 'array',\n OBJECT: 'object',\n FUNCTION: 'function',\n ACTION: 'action',\n SERVER_API: 'serverapi',\n REGEX: 'regex',\n};\n\n// all registered filters\nconst filters = [];\n\n// loops over matching filters and passes options to each filter, returning the mapped results\nconst applyFilterChain = (key, value, utils) =>\n new Promise((resolve, reject) => {\n // find matching filters for this key\n const matchingFilters = filters.filter(f => f.key === key).map(f => f.cb);\n\n // resolve now\n if (matchingFilters.length === 0) {\n resolve(value);\n return;\n }\n\n // first filter to kick things of\n const initialFilter = matchingFilters.shift();\n\n // chain filters\n matchingFilters\n .reduce(\n // loop over promises passing value to next promise\n (current, next) => current.then(value => next(value, utils)),\n\n // call initial filter, will return a promise\n initialFilter(value, utils)\n\n // all executed\n )\n .then(value => resolve(value))\n .catch(error => reject(error));\n });\n\nconst applyFilters = (key, value, utils) =>\n filters.filter(f => f.key === key).map(f => f.cb(value, utils));\n\n// adds a new filter to the list\nconst addFilter = (key, cb) => filters.push({ key, cb });\n\nconst extendDefaultOptions = additionalOptions => Object.assign(defaultOptions, additionalOptions);\n\nconst getOptions = () => ({ ...defaultOptions });\n\nconst setOptions = opts => {\n forin(opts, (key, value) => {\n // key does not exist, so this option cannot be set\n if (!defaultOptions[key]) {\n return;\n }\n defaultOptions[key][0] = getValueByType(\n value,\n defaultOptions[key][0],\n defaultOptions[key][1]\n );\n });\n};\n\n// default options on app\nconst defaultOptions = {\n // the id to add to the root element\n id: [null, Type.STRING],\n\n // input field name to use\n name: ['filepond', Type.STRING],\n\n // disable the field\n disabled: [false, Type.BOOLEAN],\n\n // classname to put on wrapper\n className: [null, Type.STRING],\n\n // is the field required\n required: [false, Type.BOOLEAN],\n\n // Allow media capture when value is set\n captureMethod: [null, Type.STRING],\n // - \"camera\", \"microphone\" or \"camcorder\",\n // - Does not work with multiple on apple devices\n // - If set, acceptedFileTypes must be made to match with media wildcard \"image/*\", \"audio/*\" or \"video/*\"\n\n // sync `acceptedFileTypes` property with `accept` attribute\n allowSyncAcceptAttribute: [true, Type.BOOLEAN],\n\n // Feature toggles\n allowDrop: [true, Type.BOOLEAN], // Allow dropping of files\n allowBrowse: [true, Type.BOOLEAN], // Allow browsing the file system\n allowPaste: [true, Type.BOOLEAN], // Allow pasting files\n allowMultiple: [false, Type.BOOLEAN], // Allow multiple files (disabled by default, as multiple attribute is also required on input to allow multiple)\n allowReplace: [true, Type.BOOLEAN], // Allow dropping a file on other file to replace it (only works when multiple is set to false)\n allowRevert: [true, Type.BOOLEAN], // Allows user to revert file upload\n allowRemove: [true, Type.BOOLEAN], // Allow user to remove a file\n allowProcess: [true, Type.BOOLEAN], // Allows user to process a file, when set to false, this removes the file upload button\n allowReorder: [false, Type.BOOLEAN], // Allow reordering of files\n allowDirectoriesOnly: [false, Type.BOOLEAN], // Allow only selecting directories with browse (no support for filtering dnd at this point)\n\n // Try store file if `server` not set\n storeAsFile: [false, Type.BOOLEAN],\n\n // Revert mode\n forceRevert: [false, Type.BOOLEAN], // Set to 'force' to require the file to be reverted before removal\n\n // Input requirements\n maxFiles: [null, Type.INT], // Max number of files\n checkValidity: [false, Type.BOOLEAN], // Enables custom validity messages\n\n // Where to put file\n itemInsertLocationFreedom: [true, Type.BOOLEAN], // Set to false to always add items to begin or end of list\n itemInsertLocation: ['before', Type.STRING], // Default index in list to add items that have been dropped at the top of the list\n itemInsertInterval: [75, Type.INT],\n\n // Drag 'n Drop related\n dropOnPage: [false, Type.BOOLEAN], // Allow dropping of files anywhere on page (prevents browser from opening file if dropped outside of Up)\n dropOnElement: [true, Type.BOOLEAN], // Drop needs to happen on element (set to false to also load drops outside of Up)\n dropValidation: [false, Type.BOOLEAN], // Enable or disable validating files on drop\n ignoredFiles: [['.ds_store', 'thumbs.db', 'desktop.ini'], Type.ARRAY],\n\n // Upload related\n instantUpload: [true, Type.BOOLEAN], // Should upload files immediately on drop\n maxParallelUploads: [2, Type.INT], // Maximum files to upload in parallel\n allowMinimumUploadDuration: [true, Type.BOOLEAN], // if true uploads take at least 750 ms, this ensures the user sees the upload progress giving trust the upload actually happened\n\n // Chunks\n chunkUploads: [false, Type.BOOLEAN], // Enable chunked uploads\n chunkForce: [false, Type.BOOLEAN], // Force use of chunk uploads even for files smaller than chunk size\n chunkSize: [5000000, Type.INT], // Size of chunks (5MB default)\n chunkRetryDelays: [[500, 1000, 3000], Type.ARRAY], // Amount of times to retry upload of a chunk when it fails\n\n // The server api end points to use for uploading (see docs)\n server: [null, Type.SERVER_API],\n\n // File size calculations, can set to 1024, this is only used for display, properties use file size base 1000\n fileSizeBase: [1000, Type.INT],\n\n // Labels and status messages\n labelFileSizeBytes: ['bytes', Type.STRING],\n labelFileSizeKilobytes: ['KB', Type.STRING],\n labelFileSizeMegabytes: ['MB', Type.STRING],\n labelFileSizeGigabytes: ['GB', Type.STRING],\n\n labelDecimalSeparator: [getDecimalSeparator(), Type.STRING], // Default is locale separator\n labelThousandsSeparator: [getThousandsSeparator(), Type.STRING], // Default is locale separator\n\n labelIdle: [\n 'Drag & Drop your files or Browse',\n Type.STRING,\n ],\n labelInvalidField: ['Field contains invalid files', Type.STRING],\n labelFileWaitingForSize: ['Waiting for size', Type.STRING],\n labelFileSizeNotAvailable: ['Size not available', Type.STRING],\n labelFileCountSingular: ['file in list', Type.STRING],\n labelFileCountPlural: ['files in list', Type.STRING],\n labelFileLoading: ['Loading', Type.STRING],\n labelFileAdded: ['Added', Type.STRING], // assistive only\n labelFileLoadError: ['Error during load', Type.STRING],\n labelFileRemoved: ['Removed', Type.STRING], // assistive only\n labelFileRemoveError: ['Error during remove', Type.STRING],\n labelFileProcessing: ['Uploading', Type.STRING],\n labelFileProcessingComplete: ['Upload complete', Type.STRING],\n labelFileProcessingAborted: ['Upload cancelled', Type.STRING],\n labelFileProcessingError: ['Error during upload', Type.STRING],\n labelFileProcessingRevertError: ['Error during revert', Type.STRING],\n\n labelTapToCancel: ['tap to cancel', Type.STRING],\n labelTapToRetry: ['tap to retry', Type.STRING],\n labelTapToUndo: ['tap to undo', Type.STRING],\n\n labelButtonRemoveItem: ['Remove', Type.STRING],\n labelButtonAbortItemLoad: ['Abort', Type.STRING],\n labelButtonRetryItemLoad: ['Retry', Type.STRING],\n labelButtonAbortItemProcessing: ['Cancel', Type.STRING],\n labelButtonUndoItemProcessing: ['Undo', Type.STRING],\n labelButtonRetryItemProcessing: ['Retry', Type.STRING],\n labelButtonProcessItem: ['Upload', Type.STRING],\n\n // make sure width and height plus viewpox are even numbers so icons are nicely centered\n iconRemove: [\n '',\n Type.STRING,\n ],\n iconProcess: [\n '',\n Type.STRING,\n ],\n iconRetry: [\n '',\n Type.STRING,\n ],\n iconUndo: [\n '',\n Type.STRING,\n ],\n iconDone: [\n '',\n Type.STRING,\n ],\n\n // event handlers\n oninit: [null, Type.FUNCTION],\n onwarning: [null, Type.FUNCTION],\n onerror: [null, Type.FUNCTION],\n onactivatefile: [null, Type.FUNCTION],\n oninitfile: [null, Type.FUNCTION],\n onaddfilestart: [null, Type.FUNCTION],\n onaddfileprogress: [null, Type.FUNCTION],\n onaddfile: [null, Type.FUNCTION],\n onprocessfilestart: [null, Type.FUNCTION],\n onprocessfileprogress: [null, Type.FUNCTION],\n onprocessfileabort: [null, Type.FUNCTION],\n onprocessfilerevert: [null, Type.FUNCTION],\n onprocessfile: [null, Type.FUNCTION],\n onprocessfiles: [null, Type.FUNCTION],\n onremovefile: [null, Type.FUNCTION],\n onpreparefile: [null, Type.FUNCTION],\n onupdatefiles: [null, Type.FUNCTION],\n onreorderfiles: [null, Type.FUNCTION],\n\n // hooks\n beforeDropFile: [null, Type.FUNCTION],\n beforeAddFile: [null, Type.FUNCTION],\n beforeRemoveFile: [null, Type.FUNCTION],\n beforePrepareFile: [null, Type.FUNCTION],\n\n // styles\n stylePanelLayout: [null, Type.STRING], // null 'integrated', 'compact', 'circle'\n stylePanelAspectRatio: [null, Type.STRING], // null or '3:2' or 1\n styleItemPanelAspectRatio: [null, Type.STRING],\n styleButtonRemoveItemPosition: ['left', Type.STRING],\n styleButtonProcessItemPosition: ['right', Type.STRING],\n styleLoadIndicatorPosition: ['right', Type.STRING],\n styleProgressIndicatorPosition: ['right', Type.STRING],\n styleButtonRemoveItemAlign: [false, Type.BOOLEAN],\n\n // custom initial files array\n files: [[], Type.ARRAY],\n\n // show support by displaying credits\n credits: [['https://pqina.nl/', 'Powered by PQINA'], Type.ARRAY],\n};\n\nconst getItemByQuery = (items, query) => {\n // just return first index\n if (isEmpty(query)) {\n return items[0] || null;\n }\n\n // query is index\n if (isInt(query)) {\n return items[query] || null;\n }\n\n // if query is item, get the id\n if (typeof query === 'object') {\n query = query.id;\n }\n\n // assume query is a string and return item by id\n return items.find(item => item.id === query) || null;\n};\n\nconst getNumericAspectRatioFromString = aspectRatio => {\n if (isEmpty(aspectRatio)) {\n return aspectRatio;\n }\n if (/:/.test(aspectRatio)) {\n const parts = aspectRatio.split(':');\n return parts[1] / parts[0];\n }\n return parseFloat(aspectRatio);\n};\n\nconst getActiveItems = items => items.filter(item => !item.archived);\n\nconst Status = {\n EMPTY: 0,\n IDLE: 1, // waiting\n ERROR: 2, // a file is in error state\n BUSY: 3, // busy processing or loading\n READY: 4, // all files uploaded\n};\n\nlet res = null;\nconst canUpdateFileInput = () => {\n if (res === null) {\n try {\n const dataTransfer = new DataTransfer();\n dataTransfer.items.add(new File(['hello world'], 'This_Works.txt'));\n const el = document.createElement('input');\n el.setAttribute('type', 'file');\n el.files = dataTransfer.files;\n res = el.files.length === 1;\n } catch (err) {\n res = false;\n }\n }\n return res;\n};\n\nconst ITEM_ERROR = [\n ItemStatus.LOAD_ERROR,\n ItemStatus.PROCESSING_ERROR,\n ItemStatus.PROCESSING_REVERT_ERROR,\n];\nconst ITEM_BUSY = [\n ItemStatus.LOADING,\n ItemStatus.PROCESSING,\n ItemStatus.PROCESSING_QUEUED,\n ItemStatus.INIT,\n];\nconst ITEM_READY = [ItemStatus.PROCESSING_COMPLETE];\n\nconst isItemInErrorState = item => ITEM_ERROR.includes(item.status);\nconst isItemInBusyState = item => ITEM_BUSY.includes(item.status);\nconst isItemInReadyState = item => ITEM_READY.includes(item.status);\n\nconst isAsync = state =>\n isObject(state.options.server) &&\n (isObject(state.options.server.process) || isFunction(state.options.server.process));\n\nconst queries = state => ({\n GET_STATUS: () => {\n const items = getActiveItems(state.items);\n\n const { EMPTY, ERROR, BUSY, IDLE, READY } = Status;\n\n if (items.length === 0) return EMPTY;\n\n if (items.some(isItemInErrorState)) return ERROR;\n\n if (items.some(isItemInBusyState)) return BUSY;\n\n if (items.some(isItemInReadyState)) return READY;\n\n return IDLE;\n },\n\n GET_ITEM: query => getItemByQuery(state.items, query),\n\n GET_ACTIVE_ITEM: query => getItemByQuery(getActiveItems(state.items), query),\n\n GET_ACTIVE_ITEMS: () => getActiveItems(state.items),\n\n GET_ITEMS: () => state.items,\n\n GET_ITEM_NAME: query => {\n const item = getItemByQuery(state.items, query);\n return item ? item.filename : null;\n },\n\n GET_ITEM_SIZE: query => {\n const item = getItemByQuery(state.items, query);\n return item ? item.fileSize : null;\n },\n\n GET_STYLES: () =>\n Object.keys(state.options)\n .filter(key => /^style/.test(key))\n .map(option => ({\n name: option,\n value: state.options[option],\n })),\n\n GET_PANEL_ASPECT_RATIO: () => {\n const isShapeCircle = /circle/.test(state.options.stylePanelLayout);\n const aspectRatio = isShapeCircle\n ? 1\n : getNumericAspectRatioFromString(state.options.stylePanelAspectRatio);\n return aspectRatio;\n },\n\n GET_ITEM_PANEL_ASPECT_RATIO: () => state.options.styleItemPanelAspectRatio,\n\n GET_ITEMS_BY_STATUS: status =>\n getActiveItems(state.items).filter(item => item.status === status),\n\n GET_TOTAL_ITEMS: () => getActiveItems(state.items).length,\n\n SHOULD_UPDATE_FILE_INPUT: () =>\n state.options.storeAsFile && canUpdateFileInput() && !isAsync(state),\n\n IS_ASYNC: () => isAsync(state),\n\n GET_FILE_SIZE_LABELS: query => ({\n labelBytes: query('GET_LABEL_FILE_SIZE_BYTES') || undefined,\n labelKilobytes: query('GET_LABEL_FILE_SIZE_KILOBYTES') || undefined,\n labelMegabytes: query('GET_LABEL_FILE_SIZE_MEGABYTES') || undefined,\n labelGigabytes: query('GET_LABEL_FILE_SIZE_GIGABYTES') || undefined,\n }),\n});\n\nconst hasRoomForItem = state => {\n const count = getActiveItems(state.items).length;\n\n // if cannot have multiple items, to add one item it should currently not contain items\n if (!state.options.allowMultiple) {\n return count === 0;\n }\n\n // if allows multiple items, we check if a max item count has been set, if not, there's no limit\n const maxFileCount = state.options.maxFiles;\n if (maxFileCount === null) {\n return true;\n }\n\n // we check if the current count is smaller than the max count, if so, another file can still be added\n if (count < maxFileCount) {\n return true;\n }\n\n // no more room for another file\n return false;\n};\n\nconst limit = (value, min, max) => Math.max(Math.min(max, value), min);\n\nconst arrayInsert = (arr, index, item) => arr.splice(index, 0, item);\n\nconst insertItem = (items, item, index) => {\n if (isEmpty(item)) {\n return null;\n }\n\n // if index is undefined, append\n if (typeof index === 'undefined') {\n items.push(item);\n return item;\n }\n\n // limit the index to the size of the items array\n index = limit(index, 0, items.length);\n\n // add item to array\n arrayInsert(items, index, item);\n\n // expose\n return item;\n};\n\nconst isBase64DataURI = str =>\n /^\\s*data:([a-z]+\\/[a-z0-9-+.]+(;[a-z-]+=[a-z0-9-]+)?)?(;base64)?,([a-z0-9!$&',()*+;=\\-._~:@\\/?%\\s]*)\\s*$/i.test(\n str\n );\n\nconst getFilenameFromURL = url =>\n `${url}`\n .split('/')\n .pop()\n .split('?')\n .shift();\n\nconst getExtensionFromFilename = name => name.split('.').pop();\n\nconst guesstimateExtension = type => {\n // if no extension supplied, exit here\n if (typeof type !== 'string') {\n return '';\n }\n\n // get subtype\n const subtype = type.split('/').pop();\n\n // is svg subtype\n if (/svg/.test(subtype)) {\n return 'svg';\n }\n\n if (/zip|compressed/.test(subtype)) {\n return 'zip';\n }\n\n if (/plain/.test(subtype)) {\n return 'txt';\n }\n\n if (/msword/.test(subtype)) {\n return 'doc';\n }\n\n // if is valid subtype\n if (/[a-z]+/.test(subtype)) {\n // always use jpg extension\n if (subtype === 'jpeg') {\n return 'jpg';\n }\n\n // return subtype\n return subtype;\n }\n\n return '';\n};\n\nconst leftPad = (value, padding = '') => (padding + value).slice(-padding.length);\n\nconst getDateString = (date = new Date()) =>\n `${date.getFullYear()}-${leftPad(date.getMonth() + 1, '00')}-${leftPad(\n date.getDate(),\n '00'\n )}_${leftPad(date.getHours(), '00')}-${leftPad(date.getMinutes(), '00')}-${leftPad(\n date.getSeconds(),\n '00'\n )}`;\n\nconst getFileFromBlob = (blob, filename, type = null, extension = null) => {\n const file =\n typeof type === 'string'\n ? blob.slice(0, blob.size, type)\n : blob.slice(0, blob.size, blob.type);\n file.lastModifiedDate = new Date();\n\n // copy relative path\n if (blob._relativePath) file._relativePath = blob._relativePath;\n\n // if blob has name property, use as filename if no filename supplied\n if (!isString(filename)) {\n filename = getDateString();\n }\n\n // if filename supplied but no extension and filename has extension\n if (filename && extension === null && getExtensionFromFilename(filename)) {\n file.name = filename;\n } else {\n extension = extension || guesstimateExtension(file.type);\n file.name = filename + (extension ? '.' + extension : '');\n }\n\n return file;\n};\n\nconst getBlobBuilder = () => {\n return (window.BlobBuilder =\n window.BlobBuilder ||\n window.WebKitBlobBuilder ||\n window.MozBlobBuilder ||\n window.MSBlobBuilder);\n};\n\nconst createBlob = (arrayBuffer, mimeType) => {\n const BB = getBlobBuilder();\n\n if (BB) {\n const bb = new BB();\n bb.append(arrayBuffer);\n return bb.getBlob(mimeType);\n }\n\n return new Blob([arrayBuffer], {\n type: mimeType,\n });\n};\n\nconst getBlobFromByteStringWithMimeType = (byteString, mimeType) => {\n const ab = new ArrayBuffer(byteString.length);\n const ia = new Uint8Array(ab);\n\n for (let i = 0; i < byteString.length; i++) {\n ia[i] = byteString.charCodeAt(i);\n }\n\n return createBlob(ab, mimeType);\n};\n\nconst getMimeTypeFromBase64DataURI = dataURI => {\n return (/^data:(.+);/.exec(dataURI) || [])[1] || null;\n};\n\nconst getBase64DataFromBase64DataURI = dataURI => {\n // get data part of string (remove data:image/jpeg...,)\n const data = dataURI.split(',')[1];\n\n // remove any whitespace as that causes InvalidCharacterError in IE\n return data.replace(/\\s/g, '');\n};\n\nconst getByteStringFromBase64DataURI = dataURI => {\n return atob(getBase64DataFromBase64DataURI(dataURI));\n};\n\nconst getBlobFromBase64DataURI = dataURI => {\n const mimeType = getMimeTypeFromBase64DataURI(dataURI);\n const byteString = getByteStringFromBase64DataURI(dataURI);\n\n return getBlobFromByteStringWithMimeType(byteString, mimeType);\n};\n\nconst getFileFromBase64DataURI = (dataURI, filename, extension) => {\n return getFileFromBlob(getBlobFromBase64DataURI(dataURI), filename, null, extension);\n};\n\nconst getFileNameFromHeader = header => {\n // test if is content disposition header, if not exit\n if (!/^content-disposition:/i.test(header)) return null;\n\n // get filename parts\n const matches = header\n .split(/filename=|filename\\*=.+''/)\n .splice(1)\n .map(name => name.trim().replace(/^[\"']|[;\"']{0,2}$/g, ''))\n .filter(name => name.length);\n\n return matches.length ? decodeURI(matches[matches.length - 1]) : null;\n};\n\nconst getFileSizeFromHeader = header => {\n if (/content-length:/i.test(header)) {\n const size = header.match(/[0-9]+/)[0];\n return size ? parseInt(size, 10) : null;\n }\n return null;\n};\n\nconst getTranfserIdFromHeader = header => {\n if (/x-content-transfer-id:/i.test(header)) {\n const id = (header.split(':')[1] || '').trim();\n return id || null;\n }\n return null;\n};\n\nconst getFileInfoFromHeaders = headers => {\n const info = {\n source: null,\n name: null,\n size: null,\n };\n\n const rows = headers.split('\\n');\n for (let header of rows) {\n const name = getFileNameFromHeader(header);\n if (name) {\n info.name = name;\n continue;\n }\n\n const size = getFileSizeFromHeader(header);\n if (size) {\n info.size = size;\n continue;\n }\n\n const source = getTranfserIdFromHeader(header);\n if (source) {\n info.source = source;\n continue;\n }\n }\n\n return info;\n};\n\nconst createFileLoader = fetchFn => {\n const state = {\n source: null,\n complete: false,\n progress: 0,\n size: null,\n timestamp: null,\n duration: 0,\n request: null,\n };\n\n const getProgress = () => state.progress;\n const abort = () => {\n if (state.request && state.request.abort) {\n state.request.abort();\n }\n };\n\n // load source\n const load = () => {\n // get quick reference\n const source = state.source;\n\n api.fire('init', source);\n\n // Load Files\n if (source instanceof File) {\n api.fire('load', source);\n } else if (source instanceof Blob) {\n // Load blobs, set default name to current date\n api.fire('load', getFileFromBlob(source, source.name));\n } else if (isBase64DataURI(source)) {\n // Load base 64, set default name to current date\n api.fire('load', getFileFromBase64DataURI(source));\n } else {\n // Deal as if is external URL, let's load it!\n loadURL(source);\n }\n };\n\n // loads a url\n const loadURL = url => {\n // is remote url and no fetch method supplied\n if (!fetchFn) {\n api.fire('error', {\n type: 'error',\n body: \"Can't load URL\",\n code: 400,\n });\n return;\n }\n\n // set request start\n state.timestamp = Date.now();\n\n // load file\n state.request = fetchFn(\n url,\n response => {\n // update duration\n state.duration = Date.now() - state.timestamp;\n\n // done!\n state.complete = true;\n\n // turn blob response into a file\n if (response instanceof Blob) {\n response = getFileFromBlob(response, response.name || getFilenameFromURL(url));\n }\n\n api.fire(\n 'load',\n // if has received blob, we go with blob, if no response, we return null\n response instanceof Blob ? response : response ? response.body : null\n );\n },\n error => {\n api.fire(\n 'error',\n typeof error === 'string'\n ? {\n type: 'error',\n code: 0,\n body: error,\n }\n : error\n );\n },\n (computable, current, total) => {\n // collected some meta data already\n if (total) {\n state.size = total;\n }\n\n // update duration\n state.duration = Date.now() - state.timestamp;\n\n // if we can't compute progress, we're not going to fire progress events\n if (!computable) {\n state.progress = null;\n return;\n }\n\n // update progress percentage\n state.progress = current / total;\n\n // expose\n api.fire('progress', state.progress);\n },\n () => {\n api.fire('abort');\n },\n response => {\n const fileinfo = getFileInfoFromHeaders(\n typeof response === 'string' ? response : response.headers\n );\n api.fire('meta', {\n size: state.size || fileinfo.size,\n filename: fileinfo.name,\n source: fileinfo.source,\n });\n }\n );\n };\n\n const api = {\n ...on(),\n setSource: source => (state.source = source),\n getProgress, // file load progress\n abort, // abort file load\n load, // start load\n };\n\n return api;\n};\n\nconst isGet = method => /GET|HEAD/.test(method);\n\nconst sendRequest = (data, url, options) => {\n const api = {\n onheaders: () => {},\n onprogress: () => {},\n onload: () => {},\n ontimeout: () => {},\n onerror: () => {},\n onabort: () => {},\n abort: () => {\n aborted = true;\n xhr.abort();\n },\n };\n\n // timeout identifier, only used when timeout is defined\n let aborted = false;\n let headersReceived = false;\n\n // set default options\n options = {\n method: 'POST',\n headers: {},\n withCredentials: false,\n ...options,\n };\n\n // encode url\n url = encodeURI(url);\n\n // if method is GET, add any received data to url\n\n if (isGet(options.method) && data) {\n url = `${url}${encodeURIComponent(typeof data === 'string' ? data : JSON.stringify(data))}`;\n }\n\n // create request\n const xhr = new XMLHttpRequest();\n\n // progress of load\n const process = isGet(options.method) ? xhr : xhr.upload;\n process.onprogress = e => {\n // no progress event when aborted ( onprogress is called once after abort() )\n if (aborted) {\n return;\n }\n\n api.onprogress(e.lengthComputable, e.loaded, e.total);\n };\n\n // tries to get header info to the app as fast as possible\n xhr.onreadystatechange = () => {\n // not interesting in these states ('unsent' and 'openend' as they don't give us any additional info)\n if (xhr.readyState < 2) {\n return;\n }\n\n // no server response\n if (xhr.readyState === 4 && xhr.status === 0) {\n return;\n }\n\n if (headersReceived) {\n return;\n }\n\n headersReceived = true;\n\n // we've probably received some useful data in response headers\n api.onheaders(xhr);\n };\n\n // load successful\n xhr.onload = () => {\n // is classified as valid response\n if (xhr.status >= 200 && xhr.status < 300) {\n api.onload(xhr);\n } else {\n api.onerror(xhr);\n }\n };\n\n // error during load\n xhr.onerror = () => api.onerror(xhr);\n\n // request aborted\n xhr.onabort = () => {\n aborted = true;\n api.onabort();\n };\n\n // request timeout\n xhr.ontimeout = () => api.ontimeout(xhr);\n\n // open up open up!\n xhr.open(options.method, url, true);\n\n // set timeout if defined (do it after open so IE11 plays ball)\n if (isInt(options.timeout)) {\n xhr.timeout = options.timeout;\n }\n\n // add headers\n Object.keys(options.headers).forEach(key => {\n const value = unescape(encodeURIComponent(options.headers[key]));\n xhr.setRequestHeader(key, value);\n });\n\n // set type of response\n if (options.responseType) {\n xhr.responseType = options.responseType;\n }\n\n // set credentials\n if (options.withCredentials) {\n xhr.withCredentials = true;\n }\n\n // let's send our data\n xhr.send(data);\n\n return api;\n};\n\nconst createResponse = (type, code, body, headers) => ({\n type,\n code,\n body,\n headers,\n});\n\nconst createTimeoutResponse = cb => xhr => {\n cb(createResponse('error', 0, 'Timeout', xhr.getAllResponseHeaders()));\n};\n\nconst hasQS = str => /\\?/.test(str);\nconst buildURL = (...parts) => {\n let url = '';\n parts.forEach(part => {\n url += hasQS(url) && hasQS(part) ? part.replace(/\\?/, '&') : part;\n });\n return url;\n};\n\nconst createFetchFunction = (apiUrl = '', action) => {\n // custom handler (should also handle file, load, error, progress and abort)\n if (typeof action === 'function') {\n return action;\n }\n\n // no action supplied\n if (!action || !isString(action.url)) {\n return null;\n }\n\n // set onload hanlder\n const onload = action.onload || (res => res);\n const onerror = action.onerror || (res => null);\n\n // internal handler\n return (url, load, error, progress, abort, headers) => {\n // do local or remote request based on if the url is external\n const request = sendRequest(url, buildURL(apiUrl, action.url), {\n ...action,\n responseType: 'blob',\n });\n\n request.onload = xhr => {\n // get headers\n const headers = xhr.getAllResponseHeaders();\n\n // get filename\n const filename = getFileInfoFromHeaders(headers).name || getFilenameFromURL(url);\n\n // create response\n load(\n createResponse(\n 'load',\n xhr.status,\n action.method === 'HEAD'\n ? null\n : getFileFromBlob(onload(xhr.response), filename),\n headers\n )\n );\n };\n\n request.onerror = xhr => {\n error(\n createResponse(\n 'error',\n xhr.status,\n onerror(xhr.response) || xhr.statusText,\n xhr.getAllResponseHeaders()\n )\n );\n };\n\n request.onheaders = xhr => {\n headers(createResponse('headers', xhr.status, null, xhr.getAllResponseHeaders()));\n };\n\n request.ontimeout = createTimeoutResponse(error);\n request.onprogress = progress;\n request.onabort = abort;\n\n // should return request\n return request;\n };\n};\n\nconst ChunkStatus = {\n QUEUED: 0,\n COMPLETE: 1,\n PROCESSING: 2,\n ERROR: 3,\n WAITING: 4,\n};\n\n/*\nfunction signature:\n (file, metadata, load, error, progress, abort, transfer, options) => {\n return {\n abort:() => {}\n }\n}\n*/\n\n// apiUrl, action, name, file, metadata, load, error, progress, abort, transfer, options\nconst processFileChunked = (\n apiUrl,\n action,\n name,\n file,\n metadata,\n load,\n error,\n progress,\n abort,\n transfer,\n options\n) => {\n // all chunks\n const chunks = [];\n const { chunkTransferId, chunkServer, chunkSize, chunkRetryDelays } = options;\n\n // default state\n const state = {\n serverId: chunkTransferId,\n aborted: false,\n };\n\n // set onload handlers\n const ondata = action.ondata || (fd => fd);\n const onload =\n action.onload ||\n ((xhr, method) =>\n method === 'HEAD' ? xhr.getResponseHeader('Upload-Offset') : xhr.response);\n const onerror = action.onerror || (res => null);\n\n // create server hook\n const requestTransferId = cb => {\n const formData = new FormData();\n\n // add metadata under same name\n if (isObject(metadata)) formData.append(name, JSON.stringify(metadata));\n\n const headers =\n typeof action.headers === 'function'\n ? action.headers(file, metadata)\n : {\n ...action.headers,\n 'Upload-Length': file.size,\n };\n\n const requestParams = {\n ...action,\n headers,\n };\n\n // send request object\n const request = sendRequest(ondata(formData), buildURL(apiUrl, action.url), requestParams);\n\n request.onload = xhr => cb(onload(xhr, requestParams.method));\n\n request.onerror = xhr =>\n error(\n createResponse(\n 'error',\n xhr.status,\n onerror(xhr.response) || xhr.statusText,\n xhr.getAllResponseHeaders()\n )\n );\n\n request.ontimeout = createTimeoutResponse(error);\n };\n\n const requestTransferOffset = cb => {\n const requestUrl = buildURL(apiUrl, chunkServer.url, state.serverId);\n\n const headers =\n typeof action.headers === 'function'\n ? action.headers(state.serverId)\n : {\n ...action.headers,\n };\n\n const requestParams = {\n headers,\n method: 'HEAD',\n };\n\n const request = sendRequest(null, requestUrl, requestParams);\n\n request.onload = xhr => cb(onload(xhr, requestParams.method));\n\n request.onerror = xhr =>\n error(\n createResponse(\n 'error',\n xhr.status,\n onerror(xhr.response) || xhr.statusText,\n xhr.getAllResponseHeaders()\n )\n );\n\n request.ontimeout = createTimeoutResponse(error);\n };\n\n // create chunks\n const lastChunkIndex = Math.floor(file.size / chunkSize);\n for (let i = 0; i <= lastChunkIndex; i++) {\n const offset = i * chunkSize;\n const data = file.slice(offset, offset + chunkSize, 'application/offset+octet-stream');\n chunks[i] = {\n index: i,\n size: data.size,\n offset,\n data,\n file,\n progress: 0,\n retries: [...chunkRetryDelays],\n status: ChunkStatus.QUEUED,\n error: null,\n request: null,\n timeout: null,\n };\n }\n\n const completeProcessingChunks = () => load(state.serverId);\n\n const canProcessChunk = chunk =>\n chunk.status === ChunkStatus.QUEUED || chunk.status === ChunkStatus.ERROR;\n\n const processChunk = chunk => {\n // processing is paused, wait here\n if (state.aborted) return;\n\n // get next chunk to process\n chunk = chunk || chunks.find(canProcessChunk);\n\n // no more chunks to process\n if (!chunk) {\n // all done?\n if (chunks.every(chunk => chunk.status === ChunkStatus.COMPLETE)) {\n completeProcessingChunks();\n }\n\n // no chunk to handle\n return;\n }\n\n // now processing this chunk\n chunk.status = ChunkStatus.PROCESSING;\n chunk.progress = null;\n\n // allow parsing of formdata\n const ondata = chunkServer.ondata || (fd => fd);\n const onerror = chunkServer.onerror || (res => null);\n const onload = chunkServer.onload || (() => {});\n\n // send request object\n const requestUrl = buildURL(apiUrl, chunkServer.url, state.serverId);\n\n const headers =\n typeof chunkServer.headers === 'function'\n ? chunkServer.headers(chunk)\n : {\n ...chunkServer.headers,\n 'Content-Type': 'application/offset+octet-stream',\n 'Upload-Offset': chunk.offset,\n 'Upload-Length': file.size,\n 'Upload-Name': file.name,\n };\n\n const request = (chunk.request = sendRequest(ondata(chunk.data), requestUrl, {\n ...chunkServer,\n headers,\n }));\n\n request.onload = xhr => {\n // allow hooking into request result\n onload(xhr, chunk.index, chunks.length);\n\n // done!\n chunk.status = ChunkStatus.COMPLETE;\n\n // remove request reference\n chunk.request = null;\n\n // start processing more chunks\n processChunks();\n };\n\n request.onprogress = (lengthComputable, loaded, total) => {\n chunk.progress = lengthComputable ? loaded : null;\n updateTotalProgress();\n };\n\n request.onerror = xhr => {\n chunk.status = ChunkStatus.ERROR;\n chunk.request = null;\n chunk.error = onerror(xhr.response) || xhr.statusText;\n if (!retryProcessChunk(chunk)) {\n error(\n createResponse(\n 'error',\n xhr.status,\n onerror(xhr.response) || xhr.statusText,\n xhr.getAllResponseHeaders()\n )\n );\n }\n };\n\n request.ontimeout = xhr => {\n chunk.status = ChunkStatus.ERROR;\n chunk.request = null;\n if (!retryProcessChunk(chunk)) {\n createTimeoutResponse(error)(xhr);\n }\n };\n\n request.onabort = () => {\n chunk.status = ChunkStatus.QUEUED;\n chunk.request = null;\n abort();\n };\n };\n\n const retryProcessChunk = chunk => {\n // no more retries left\n if (chunk.retries.length === 0) return false;\n\n // new retry\n chunk.status = ChunkStatus.WAITING;\n clearTimeout(chunk.timeout);\n chunk.timeout = setTimeout(() => {\n processChunk(chunk);\n }, chunk.retries.shift());\n\n // we're going to retry\n return true;\n };\n\n const updateTotalProgress = () => {\n // calculate total progress fraction\n const totalBytesTransfered = chunks.reduce((p, chunk) => {\n if (p === null || chunk.progress === null) return null;\n return p + chunk.progress;\n }, 0);\n\n // can't compute progress\n if (totalBytesTransfered === null) return progress(false, 0, 0);\n\n // calculate progress values\n const totalSize = chunks.reduce((total, chunk) => total + chunk.size, 0);\n\n // can update progress indicator\n progress(true, totalBytesTransfered, totalSize);\n };\n\n // process new chunks\n const processChunks = () => {\n const totalProcessing = chunks.filter(chunk => chunk.status === ChunkStatus.PROCESSING)\n .length;\n if (totalProcessing >= 1) return;\n processChunk();\n };\n\n const abortChunks = () => {\n chunks.forEach(chunk => {\n clearTimeout(chunk.timeout);\n if (chunk.request) {\n chunk.request.abort();\n }\n });\n };\n\n // let's go!\n if (!state.serverId) {\n requestTransferId(serverId => {\n // stop here if aborted, might have happened in between request and callback\n if (state.aborted) return;\n\n // pass back to item so we can use it if something goes wrong\n transfer(serverId);\n\n // store internally\n state.serverId = serverId;\n processChunks();\n });\n } else {\n requestTransferOffset(offset => {\n // stop here if aborted, might have happened in between request and callback\n if (state.aborted) return;\n\n // mark chunks with lower offset as complete\n chunks\n .filter(chunk => chunk.offset < offset)\n .forEach(chunk => {\n chunk.status = ChunkStatus.COMPLETE;\n chunk.progress = chunk.size;\n });\n\n // continue processing\n processChunks();\n });\n }\n\n return {\n abort: () => {\n state.aborted = true;\n abortChunks();\n },\n };\n};\n\n/*\nfunction signature:\n (file, metadata, load, error, progress, abort) => {\n return {\n abort:() => {}\n }\n}\n*/\nconst createFileProcessorFunction = (apiUrl, action, name, options) => (\n file,\n metadata,\n load,\n error,\n progress,\n abort,\n transfer\n) => {\n // no file received\n if (!file) return;\n\n // if was passed a file, and we can chunk it, exit here\n const canChunkUpload = options.chunkUploads;\n const shouldChunkUpload = canChunkUpload && file.size > options.chunkSize;\n const willChunkUpload = canChunkUpload && (shouldChunkUpload || options.chunkForce);\n if (file instanceof Blob && willChunkUpload)\n return processFileChunked(\n apiUrl,\n action,\n name,\n file,\n metadata,\n load,\n error,\n progress,\n abort,\n transfer,\n options\n );\n\n // set handlers\n const ondata = action.ondata || (fd => fd);\n const onload = action.onload || (res => res);\n const onerror = action.onerror || (res => null);\n\n const headers =\n typeof action.headers === 'function'\n ? action.headers(file, metadata) || {}\n : {\n ...action.headers,\n };\n\n const requestParams = {\n ...action,\n headers,\n };\n\n // create formdata object\n var formData = new FormData();\n\n // add metadata under same name\n if (isObject(metadata)) {\n formData.append(name, JSON.stringify(metadata));\n }\n\n // Turn into an array of objects so no matter what the input, we can handle it the same way\n (file instanceof Blob ? [{ name: null, file }] : file).forEach(item => {\n formData.append(\n name,\n item.file,\n item.name === null ? item.file.name : `${item.name}${item.file.name}`\n );\n });\n\n // send request object\n const request = sendRequest(ondata(formData), buildURL(apiUrl, action.url), requestParams);\n request.onload = xhr => {\n load(createResponse('load', xhr.status, onload(xhr.response), xhr.getAllResponseHeaders()));\n };\n\n request.onerror = xhr => {\n error(\n createResponse(\n 'error',\n xhr.status,\n onerror(xhr.response) || xhr.statusText,\n xhr.getAllResponseHeaders()\n )\n );\n };\n\n request.ontimeout = createTimeoutResponse(error);\n request.onprogress = progress;\n request.onabort = abort;\n\n // should return request\n return request;\n};\n\nconst createProcessorFunction = (apiUrl = '', action, name, options) => {\n // custom handler (should also handle file, load, error, progress and abort)\n if (typeof action === 'function') return (...params) => action(name, ...params, options);\n\n // no action supplied\n if (!action || !isString(action.url)) return null;\n\n // internal handler\n return createFileProcessorFunction(apiUrl, action, name, options);\n};\n\n/*\n function signature:\n (uniqueFileId, load, error) => { }\n */\nconst createRevertFunction = (apiUrl = '', action) => {\n // is custom implementation\n if (typeof action === 'function') {\n return action;\n }\n\n // no action supplied, return stub function, interface will work, but file won't be removed\n if (!action || !isString(action.url)) {\n return (uniqueFileId, load) => load();\n }\n\n // set onload hanlder\n const onload = action.onload || (res => res);\n const onerror = action.onerror || (res => null);\n\n // internal implementation\n return (uniqueFileId, load, error) => {\n const request = sendRequest(\n uniqueFileId,\n apiUrl + action.url,\n action // contains method, headers and withCredentials properties\n );\n request.onload = xhr => {\n load(\n createResponse(\n 'load',\n xhr.status,\n onload(xhr.response),\n xhr.getAllResponseHeaders()\n )\n );\n };\n\n request.onerror = xhr => {\n error(\n createResponse(\n 'error',\n xhr.status,\n onerror(xhr.response) || xhr.statusText,\n xhr.getAllResponseHeaders()\n )\n );\n };\n\n request.ontimeout = createTimeoutResponse(error);\n\n return request;\n };\n};\n\nconst getRandomNumber = (min = 0, max = 1) => min + Math.random() * (max - min);\n\nconst createPerceivedPerformanceUpdater = (\n cb,\n duration = 1000,\n offset = 0,\n tickMin = 25,\n tickMax = 250\n) => {\n let timeout = null;\n const start = Date.now();\n\n const tick = () => {\n let runtime = Date.now() - start;\n let delay = getRandomNumber(tickMin, tickMax);\n\n if (runtime + delay > duration) {\n delay = runtime + delay - duration;\n }\n\n let progress = runtime / duration;\n if (progress >= 1 || document.hidden) {\n cb(1);\n return;\n }\n\n cb(progress);\n\n timeout = setTimeout(tick, delay);\n };\n\n if (duration > 0) tick();\n\n return {\n clear: () => {\n clearTimeout(timeout);\n },\n };\n};\n\nconst createFileProcessor = (processFn, options) => {\n const state = {\n complete: false,\n perceivedProgress: 0,\n perceivedPerformanceUpdater: null,\n progress: null,\n timestamp: null,\n perceivedDuration: 0,\n duration: 0,\n request: null,\n response: null,\n };\n\n const { allowMinimumUploadDuration } = options;\n\n const process = (file, metadata) => {\n const progressFn = () => {\n // we've not yet started the real download, stop here\n // the request might not go through, for instance, there might be some server trouble\n // if state.progress is null, the server does not allow computing progress and we show the spinner instead\n if (state.duration === 0 || state.progress === null) return;\n\n // as we're now processing, fire the progress event\n api.fire('progress', api.getProgress());\n };\n\n const completeFn = () => {\n state.complete = true;\n api.fire('load-perceived', state.response.body);\n };\n\n // let's start processing\n api.fire('start');\n\n // set request start\n state.timestamp = Date.now();\n\n // create perceived performance progress indicator\n state.perceivedPerformanceUpdater = createPerceivedPerformanceUpdater(\n progress => {\n state.perceivedProgress = progress;\n state.perceivedDuration = Date.now() - state.timestamp;\n\n progressFn();\n\n // if fake progress is done, and a response has been received,\n // and we've not yet called the complete method\n if (state.response && state.perceivedProgress === 1 && !state.complete) {\n // we done!\n completeFn();\n }\n },\n // random delay as in a list of files you start noticing\n // files uploading at the exact same speed\n allowMinimumUploadDuration ? getRandomNumber(750, 1500) : 0\n );\n\n // remember request so we can abort it later\n state.request = processFn(\n // the file to process\n file,\n\n // the metadata to send along\n metadata,\n\n // callbacks (load, error, progress, abort, transfer)\n // load expects the body to be a server id if\n // you want to make use of revert\n response => {\n // we put the response in state so we can access\n // it outside of this method\n state.response = isObject(response)\n ? response\n : {\n type: 'load',\n code: 200,\n body: `${response}`,\n headers: {},\n };\n\n // update duration\n state.duration = Date.now() - state.timestamp;\n\n // force progress to 1 as we're now done\n state.progress = 1;\n\n // actual load is done let's share results\n api.fire('load', state.response.body);\n\n // we are really done\n // if perceived progress is 1 ( wait for perceived progress to complete )\n // or if server does not support progress ( null )\n if (\n !allowMinimumUploadDuration ||\n (allowMinimumUploadDuration && state.perceivedProgress === 1)\n ) {\n completeFn();\n }\n },\n\n // error is expected to be an object with type, code, body\n error => {\n // cancel updater\n state.perceivedPerformanceUpdater.clear();\n\n // update others about this error\n api.fire(\n 'error',\n isObject(error)\n ? error\n : {\n type: 'error',\n code: 0,\n body: `${error}`,\n }\n );\n },\n\n // actual processing progress\n (computable, current, total) => {\n // update actual duration\n state.duration = Date.now() - state.timestamp;\n\n // update actual progress\n state.progress = computable ? current / total : null;\n\n progressFn();\n },\n\n // abort does not expect a value\n () => {\n // stop updater\n state.perceivedPerformanceUpdater.clear();\n\n // fire the abort event so we can switch visuals\n api.fire('abort', state.response ? state.response.body : null);\n },\n\n // register the id for this transfer\n transferId => {\n api.fire('transfer', transferId);\n }\n );\n };\n\n const abort = () => {\n // no request running, can't abort\n if (!state.request) return;\n\n // stop updater\n state.perceivedPerformanceUpdater.clear();\n\n // abort actual request\n if (state.request.abort) state.request.abort();\n\n // if has response object, we've completed the request\n state.complete = true;\n };\n\n const reset = () => {\n abort();\n state.complete = false;\n state.perceivedProgress = 0;\n state.progress = 0;\n state.timestamp = null;\n state.perceivedDuration = 0;\n state.duration = 0;\n state.request = null;\n state.response = null;\n };\n\n const getProgress = allowMinimumUploadDuration\n ? () => (state.progress ? Math.min(state.progress, state.perceivedProgress) : null)\n : () => state.progress || null;\n\n const getDuration = allowMinimumUploadDuration\n ? () => Math.min(state.duration, state.perceivedDuration)\n : () => state.duration;\n\n const api = {\n ...on(),\n process, // start processing file\n abort, // abort active process request\n getProgress,\n getDuration,\n reset,\n };\n\n return api;\n};\n\nconst getFilenameWithoutExtension = name => name.substring(0, name.lastIndexOf('.')) || name;\n\nconst createFileStub = source => {\n let data = [source.name, source.size, source.type];\n\n // is blob or base64, then we need to set the name\n if (source instanceof Blob || isBase64DataURI(source)) {\n data[0] = source.name || getDateString();\n } else if (isBase64DataURI(source)) {\n // if is base64 data uri we need to determine the average size and type\n data[1] = source.length;\n data[2] = getMimeTypeFromBase64DataURI(source);\n } else if (isString(source)) {\n // url\n data[0] = getFilenameFromURL(source);\n data[1] = 0;\n data[2] = 'application/octet-stream';\n }\n\n return {\n name: data[0],\n size: data[1],\n type: data[2],\n };\n};\n\nconst isFile = value => !!(value instanceof File || (value instanceof Blob && value.name));\n\nconst deepCloneObject = src => {\n if (!isObject(src)) return src;\n const target = isArray(src) ? [] : {};\n for (const key in src) {\n if (!src.hasOwnProperty(key)) continue;\n const v = src[key];\n target[key] = v && isObject(v) ? deepCloneObject(v) : v;\n }\n return target;\n};\n\nconst createItem = (origin = null, serverFileReference = null, file = null) => {\n // unique id for this item, is used to identify the item across views\n const id = getUniqueId();\n\n /**\n * Internal item state\n */\n const state = {\n // is archived\n archived: false,\n\n // if is frozen, no longer fires events\n frozen: false,\n\n // removed from view\n released: false,\n\n // original source\n source: null,\n\n // file model reference\n file,\n\n // id of file on server\n serverFileReference,\n\n // id of file transfer on server\n transferId: null,\n\n // is aborted\n processingAborted: false,\n\n // current item status\n status: serverFileReference ? ItemStatus.PROCESSING_COMPLETE : ItemStatus.INIT,\n\n // active processes\n activeLoader: null,\n activeProcessor: null,\n };\n\n // callback used when abort processing is called to link back to the resolve method\n let abortProcessingRequestComplete = null;\n\n /**\n * Externally added item metadata\n */\n const metadata = {};\n\n // item data\n const setStatus = status => (state.status = status);\n\n // fire event unless the item has been archived\n const fire = (event, ...params) => {\n if (state.released || state.frozen) return;\n api.fire(event, ...params);\n };\n\n // file data\n const getFileExtension = () => getExtensionFromFilename(state.file.name);\n const getFileType = () => state.file.type;\n const getFileSize = () => state.file.size;\n const getFile = () => state.file;\n\n //\n // logic to load a file\n //\n const load = (source, loader, onload) => {\n // remember the original item source\n state.source = source;\n\n // source is known\n api.fireSync('init');\n\n // file stub is already there\n if (state.file) {\n api.fireSync('load-skip');\n return;\n }\n\n // set a stub file object while loading the actual data\n state.file = createFileStub(source);\n\n // starts loading\n loader.on('init', () => {\n fire('load-init');\n });\n\n // we'eve received a size indication, let's update the stub\n loader.on('meta', meta => {\n // set size of file stub\n state.file.size = meta.size;\n\n // set name of file stub\n state.file.filename = meta.filename;\n\n // if has received source, we done\n if (meta.source) {\n origin = FileOrigin.LIMBO;\n state.serverFileReference = meta.source;\n state.status = ItemStatus.PROCESSING_COMPLETE;\n }\n\n // size has been updated\n fire('load-meta');\n });\n\n // the file is now loading we need to update the progress indicators\n loader.on('progress', progress => {\n setStatus(ItemStatus.LOADING);\n\n fire('load-progress', progress);\n });\n\n // an error was thrown while loading the file, we need to switch to error state\n loader.on('error', error => {\n setStatus(ItemStatus.LOAD_ERROR);\n\n fire('load-request-error', error);\n });\n\n // user or another process aborted the file load (cannot retry)\n loader.on('abort', () => {\n setStatus(ItemStatus.INIT);\n fire('load-abort');\n });\n\n // done loading\n loader.on('load', file => {\n // as we've now loaded the file the loader is no longer required\n state.activeLoader = null;\n\n // called when file has loaded succesfully\n const success = result => {\n // set (possibly) transformed file\n state.file = isFile(result) ? result : state.file;\n\n // file received\n if (origin === FileOrigin.LIMBO && state.serverFileReference) {\n setStatus(ItemStatus.PROCESSING_COMPLETE);\n } else {\n setStatus(ItemStatus.IDLE);\n }\n\n fire('load');\n };\n\n const error = result => {\n // set original file\n state.file = file;\n fire('load-meta');\n\n setStatus(ItemStatus.LOAD_ERROR);\n fire('load-file-error', result);\n };\n\n // if we already have a server file reference, we don't need to call the onload method\n if (state.serverFileReference) {\n success(file);\n return;\n }\n\n // no server id, let's give this file the full treatment\n onload(file, success, error);\n });\n\n // set loader source data\n loader.setSource(source);\n\n // set as active loader\n state.activeLoader = loader;\n\n // load the source data\n loader.load();\n };\n\n const retryLoad = () => {\n if (!state.activeLoader) {\n return;\n }\n state.activeLoader.load();\n };\n\n const abortLoad = () => {\n if (state.activeLoader) {\n state.activeLoader.abort();\n return;\n }\n setStatus(ItemStatus.INIT);\n fire('load-abort');\n };\n\n //\n // logic to process a file\n //\n const process = (processor, onprocess) => {\n // processing was aborted\n if (state.processingAborted) {\n state.processingAborted = false;\n return;\n }\n\n // now processing\n setStatus(ItemStatus.PROCESSING);\n\n // reset abort callback\n abortProcessingRequestComplete = null;\n\n // if no file loaded we'll wait for the load event\n if (!(state.file instanceof Blob)) {\n api.on('load', () => {\n process(processor, onprocess);\n });\n return;\n }\n\n // setup processor\n processor.on('load', serverFileReference => {\n // need this id to be able to revert the upload\n state.transferId = null;\n state.serverFileReference = serverFileReference;\n });\n\n // register transfer id\n processor.on('transfer', transferId => {\n // need this id to be able to revert the upload\n state.transferId = transferId;\n });\n\n processor.on('load-perceived', serverFileReference => {\n // no longer required\n state.activeProcessor = null;\n\n // need this id to be able to rever the upload\n state.transferId = null;\n state.serverFileReference = serverFileReference;\n\n setStatus(ItemStatus.PROCESSING_COMPLETE);\n fire('process-complete', serverFileReference);\n });\n\n processor.on('start', () => {\n fire('process-start');\n });\n\n processor.on('error', error => {\n state.activeProcessor = null;\n setStatus(ItemStatus.PROCESSING_ERROR);\n fire('process-error', error);\n });\n\n processor.on('abort', serverFileReference => {\n state.activeProcessor = null;\n\n // if file was uploaded but processing was cancelled during perceived processor time store file reference\n state.serverFileReference = serverFileReference;\n\n setStatus(ItemStatus.IDLE);\n fire('process-abort');\n\n // has timeout so doesn't interfere with remove action\n if (abortProcessingRequestComplete) {\n abortProcessingRequestComplete();\n }\n });\n\n processor.on('progress', progress => {\n fire('process-progress', progress);\n });\n\n // when successfully transformed\n const success = file => {\n // if was archived in the mean time, don't process\n if (state.archived) return;\n\n // process file!\n processor.process(file, { ...metadata });\n };\n\n // something went wrong during transform phase\n const error = console.error;\n\n // start processing the file\n onprocess(state.file, success, error);\n\n // set as active processor\n state.activeProcessor = processor;\n };\n\n const requestProcessing = () => {\n state.processingAborted = false;\n setStatus(ItemStatus.PROCESSING_QUEUED);\n };\n\n const abortProcessing = () =>\n new Promise(resolve => {\n if (!state.activeProcessor) {\n state.processingAborted = true;\n\n setStatus(ItemStatus.IDLE);\n fire('process-abort');\n\n resolve();\n return;\n }\n\n abortProcessingRequestComplete = () => {\n resolve();\n };\n\n state.activeProcessor.abort();\n });\n\n //\n // logic to revert a processed file\n //\n const revert = (revertFileUpload, forceRevert) =>\n new Promise((resolve, reject) => {\n // a completed upload will have a serverFileReference, a failed chunked upload where\n // getting a serverId succeeded but >=0 chunks have been uploaded will have transferId set\n const serverTransferId =\n state.serverFileReference !== null ? state.serverFileReference : state.transferId;\n\n // cannot revert without a server id for this process\n if (serverTransferId === null) {\n resolve();\n return;\n }\n\n // revert the upload (fire and forget)\n revertFileUpload(\n serverTransferId,\n () => {\n // reset file server id and transfer id as now it's not available on the server\n state.serverFileReference = null;\n state.transferId = null;\n resolve();\n },\n error => {\n // don't set error state when reverting is optional, it will always resolve\n if (!forceRevert) {\n resolve();\n return;\n }\n\n // oh no errors\n setStatus(ItemStatus.PROCESSING_REVERT_ERROR);\n fire('process-revert-error');\n reject(error);\n }\n );\n\n // fire event\n setStatus(ItemStatus.IDLE);\n fire('process-revert');\n });\n\n // exposed methods\n const setMetadata = (key, value, silent) => {\n const keys = key.split('.');\n const root = keys[0];\n const last = keys.pop();\n let data = metadata;\n keys.forEach(key => (data = data[key]));\n\n // compare old value against new value, if they're the same, we're not updating\n if (JSON.stringify(data[last]) === JSON.stringify(value)) return;\n\n // update value\n data[last] = value;\n\n // fire update\n fire('metadata-update', {\n key: root,\n value: metadata[root],\n silent,\n });\n };\n\n const getMetadata = key => deepCloneObject(key ? metadata[key] : metadata);\n\n const api = {\n id: { get: () => id },\n origin: { get: () => origin, set: value => (origin = value) },\n serverId: { get: () => state.serverFileReference },\n transferId: { get: () => state.transferId },\n status: { get: () => state.status },\n filename: { get: () => state.file.name },\n filenameWithoutExtension: { get: () => getFilenameWithoutExtension(state.file.name) },\n fileExtension: { get: getFileExtension },\n fileType: { get: getFileType },\n fileSize: { get: getFileSize },\n file: { get: getFile },\n relativePath: { get: () => state.file._relativePath },\n\n source: { get: () => state.source },\n\n getMetadata,\n setMetadata: (key, value, silent) => {\n if (isObject(key)) {\n const data = key;\n Object.keys(data).forEach(key => {\n setMetadata(key, data[key], value);\n });\n return key;\n }\n setMetadata(key, value, silent);\n return value;\n },\n\n extend: (name, handler) => (itemAPI[name] = handler),\n\n abortLoad,\n retryLoad,\n requestProcessing,\n abortProcessing,\n\n load,\n process,\n revert,\n\n ...on(),\n\n freeze: () => (state.frozen = true),\n\n release: () => (state.released = true),\n released: { get: () => state.released },\n\n archive: () => (state.archived = true),\n archived: { get: () => state.archived },\n\n // replace source and file object\n setFile: file => (state.file = file),\n };\n\n // create it here instead of returning it instantly so we can extend it later\n const itemAPI = createObject(api);\n\n return itemAPI;\n};\n\nconst getItemIndexByQuery = (items, query) => {\n // just return first index\n if (isEmpty(query)) {\n return 0;\n }\n\n // invalid queries\n if (!isString(query)) {\n return -1;\n }\n\n // return item by id (or -1 if not found)\n return items.findIndex(item => item.id === query);\n};\n\nconst getItemById = (items, itemId) => {\n const index = getItemIndexByQuery(items, itemId);\n if (index < 0) {\n return;\n }\n return items[index] || null;\n};\n\nconst fetchBlob = (url, load, error, progress, abort, headers) => {\n const request = sendRequest(null, url, {\n method: 'GET',\n responseType: 'blob',\n });\n\n request.onload = xhr => {\n // get headers\n const headers = xhr.getAllResponseHeaders();\n\n // get filename\n const filename = getFileInfoFromHeaders(headers).name || getFilenameFromURL(url);\n\n // create response\n load(createResponse('load', xhr.status, getFileFromBlob(xhr.response, filename), headers));\n };\n\n request.onerror = xhr => {\n error(createResponse('error', xhr.status, xhr.statusText, xhr.getAllResponseHeaders()));\n };\n\n request.onheaders = xhr => {\n headers(createResponse('headers', xhr.status, null, xhr.getAllResponseHeaders()));\n };\n\n request.ontimeout = createTimeoutResponse(error);\n request.onprogress = progress;\n request.onabort = abort;\n\n // should return request\n return request;\n};\n\nconst getDomainFromURL = url => {\n if (url.indexOf('//') === 0) {\n url = location.protocol + url;\n }\n return url\n .toLowerCase()\n .replace('blob:', '')\n .replace(/([a-z])?:\\/\\//, '$1')\n .split('/')[0];\n};\n\nconst isExternalURL = url =>\n (url.indexOf(':') > -1 || url.indexOf('//') > -1) &&\n getDomainFromURL(location.href) !== getDomainFromURL(url);\n\nconst dynamicLabel = label => (...params) => (isFunction(label) ? label(...params) : label);\n\nconst isMockItem = item => !isFile(item.file);\n\nconst listUpdated = (dispatch, state) => {\n clearTimeout(state.listUpdateTimeout);\n state.listUpdateTimeout = setTimeout(() => {\n dispatch('DID_UPDATE_ITEMS', { items: getActiveItems(state.items) });\n }, 0);\n};\n\nconst optionalPromise = (fn, ...params) =>\n new Promise(resolve => {\n if (!fn) {\n return resolve(true);\n }\n\n const result = fn(...params);\n\n if (result == null) {\n return resolve(true);\n }\n\n if (typeof result === 'boolean') {\n return resolve(result);\n }\n\n if (typeof result.then === 'function') {\n result.then(resolve);\n }\n });\n\nconst sortItems = (state, compare) => {\n state.items.sort((a, b) => compare(createItemAPI(a), createItemAPI(b)));\n};\n\n// returns item based on state\nconst getItemByQueryFromState = (state, itemHandler) => ({\n query,\n success = () => {},\n failure = () => {},\n ...options\n} = {}) => {\n const item = getItemByQuery(state.items, query);\n if (!item) {\n failure({\n error: createResponse('error', 0, 'Item not found'),\n file: null,\n });\n return;\n }\n itemHandler(item, success, failure, options || {});\n};\n\nconst actions = (dispatch, query, state) => ({\n /**\n * Aborts all ongoing processes\n */\n ABORT_ALL: () => {\n getActiveItems(state.items).forEach(item => {\n item.freeze();\n item.abortLoad();\n item.abortProcessing();\n });\n },\n\n /**\n * Sets initial files\n */\n DID_SET_FILES: ({ value = [] }) => {\n // map values to file objects\n const files = value.map(file => ({\n source: file.source ? file.source : file,\n options: file.options,\n }));\n\n // loop over files, if file is in list, leave it be, if not, remove\n // test if items should be moved\n let activeItems = getActiveItems(state.items);\n\n activeItems.forEach(item => {\n // if item not is in new value, remove\n if (!files.find(file => file.source === item.source || file.source === item.file)) {\n dispatch('REMOVE_ITEM', { query: item, remove: false });\n }\n });\n\n // add new files\n activeItems = getActiveItems(state.items);\n files.forEach((file, index) => {\n // if file is already in list\n if (activeItems.find(item => item.source === file.source || item.file === file.source))\n return;\n\n // not in list, add\n dispatch('ADD_ITEM', {\n ...file,\n interactionMethod: InteractionMethod.NONE,\n index,\n });\n });\n },\n\n DID_UPDATE_ITEM_METADATA: ({ id, action, change }) => {\n // don't do anything\n if (change.silent) return;\n\n // if is called multiple times in close succession we combined all calls together to save resources\n clearTimeout(state.itemUpdateTimeout);\n state.itemUpdateTimeout = setTimeout(() => {\n const item = getItemById(state.items, id);\n\n // only revert and attempt to upload when we're uploading to a server\n if (!query('IS_ASYNC')) {\n // should we update the output data\n applyFilterChain('SHOULD_PREPARE_OUTPUT', false, {\n item,\n query,\n action,\n change,\n }).then(shouldPrepareOutput => {\n // plugins determined the output data should be prepared (or not), can be adjusted with beforePrepareOutput hook\n const beforePrepareFile = query('GET_BEFORE_PREPARE_FILE');\n if (beforePrepareFile)\n shouldPrepareOutput = beforePrepareFile(item, shouldPrepareOutput);\n\n if (!shouldPrepareOutput) return;\n\n dispatch(\n 'REQUEST_PREPARE_OUTPUT',\n {\n query: id,\n item,\n success: file => {\n dispatch('DID_PREPARE_OUTPUT', { id, file });\n },\n },\n true\n );\n });\n\n return;\n }\n\n // if is local item we need to enable upload button so change can be propagated to server\n if (item.origin === FileOrigin.LOCAL) {\n dispatch('DID_LOAD_ITEM', {\n id: item.id,\n error: null,\n serverFileReference: item.source,\n });\n }\n\n // for async scenarios\n const upload = () => {\n // we push this forward a bit so the interface is updated correctly\n setTimeout(() => {\n dispatch('REQUEST_ITEM_PROCESSING', { query: id });\n }, 32);\n };\n\n const revert = doUpload => {\n item.revert(\n createRevertFunction(state.options.server.url, state.options.server.revert),\n query('GET_FORCE_REVERT')\n )\n .then(doUpload ? upload : () => {})\n .catch(() => {});\n };\n\n const abort = doUpload => {\n item.abortProcessing().then(doUpload ? upload : () => {});\n };\n\n // if we should re-upload the file immediately\n if (item.status === ItemStatus.PROCESSING_COMPLETE) {\n return revert(state.options.instantUpload);\n }\n\n // if currently uploading, cancel upload\n if (item.status === ItemStatus.PROCESSING) {\n return abort(state.options.instantUpload);\n }\n\n if (state.options.instantUpload) {\n upload();\n }\n }, 0);\n },\n\n MOVE_ITEM: ({ query, index }) => {\n const item = getItemByQuery(state.items, query);\n if (!item) return;\n const currentIndex = state.items.indexOf(item);\n index = limit(index, 0, state.items.length - 1);\n if (currentIndex === index) return;\n state.items.splice(index, 0, state.items.splice(currentIndex, 1)[0]);\n },\n\n SORT: ({ compare }) => {\n sortItems(state, compare);\n dispatch('DID_SORT_ITEMS', {\n items: query('GET_ACTIVE_ITEMS'),\n });\n },\n\n ADD_ITEMS: ({ items, index, interactionMethod, success = () => {}, failure = () => {} }) => {\n let currentIndex = index;\n\n if (index === -1 || typeof index === 'undefined') {\n const insertLocation = query('GET_ITEM_INSERT_LOCATION');\n const totalItems = query('GET_TOTAL_ITEMS');\n currentIndex = insertLocation === 'before' ? 0 : totalItems;\n }\n\n const ignoredFiles = query('GET_IGNORED_FILES');\n const isValidFile = source =>\n isFile(source) ? !ignoredFiles.includes(source.name.toLowerCase()) : !isEmpty(source);\n const validItems = items.filter(isValidFile);\n\n const promises = validItems.map(\n source =>\n new Promise((resolve, reject) => {\n dispatch('ADD_ITEM', {\n interactionMethod,\n source: source.source || source,\n success: resolve,\n failure: reject,\n index: currentIndex++,\n options: source.options || {},\n });\n })\n );\n\n Promise.all(promises)\n .then(success)\n .catch(failure);\n },\n\n /**\n * @param source\n * @param index\n * @param interactionMethod\n */\n ADD_ITEM: ({\n source,\n index = -1,\n interactionMethod,\n success = () => {},\n failure = () => {},\n options = {},\n }) => {\n // if no source supplied\n if (isEmpty(source)) {\n failure({\n error: createResponse('error', 0, 'No source'),\n file: null,\n });\n return;\n }\n\n // filter out invalid file items, used to filter dropped directory contents\n if (isFile(source) && state.options.ignoredFiles.includes(source.name.toLowerCase())) {\n // fail silently\n return;\n }\n\n // test if there's still room in the list of files\n if (!hasRoomForItem(state)) {\n // if multiple allowed, we can't replace\n // or if only a single item is allowed but we're not allowed to replace it we exit\n if (\n state.options.allowMultiple ||\n (!state.options.allowMultiple && !state.options.allowReplace)\n ) {\n const error = createResponse('warning', 0, 'Max files');\n\n dispatch('DID_THROW_MAX_FILES', {\n source,\n error,\n });\n\n failure({ error, file: null });\n\n return;\n }\n\n // let's replace the item\n // id of first item we're about to remove\n const item = getActiveItems(state.items)[0];\n\n // if has been processed remove it from the server as well\n if (\n item.status === ItemStatus.PROCESSING_COMPLETE ||\n item.status === ItemStatus.PROCESSING_REVERT_ERROR\n ) {\n const forceRevert = query('GET_FORCE_REVERT');\n item.revert(\n createRevertFunction(state.options.server.url, state.options.server.revert),\n forceRevert\n )\n .then(() => {\n if (!forceRevert) return;\n\n // try to add now\n dispatch('ADD_ITEM', {\n source,\n index,\n interactionMethod,\n success,\n failure,\n options,\n });\n })\n .catch(() => {}); // no need to handle this catch state for now\n\n if (forceRevert) return;\n }\n\n // remove first item as it will be replaced by this item\n dispatch('REMOVE_ITEM', { query: item.id });\n }\n\n // where did the file originate\n const origin =\n options.type === 'local'\n ? FileOrigin.LOCAL\n : options.type === 'limbo'\n ? FileOrigin.LIMBO\n : FileOrigin.INPUT;\n\n // create a new blank item\n const item = createItem(\n // where did this file come from\n origin,\n\n // an input file never has a server file reference\n origin === FileOrigin.INPUT ? null : source,\n\n // file mock data, if defined\n options.file\n );\n\n // set initial meta data\n Object.keys(options.metadata || {}).forEach(key => {\n item.setMetadata(key, options.metadata[key]);\n });\n\n // created the item, let plugins add methods\n applyFilters('DID_CREATE_ITEM', item, { query, dispatch });\n\n // where to insert new items\n const itemInsertLocation = query('GET_ITEM_INSERT_LOCATION');\n\n // adjust index if is not allowed to pick location\n if (!state.options.itemInsertLocationFreedom) {\n index = itemInsertLocation === 'before' ? -1 : state.items.length;\n }\n\n // add item to list\n insertItem(state.items, item, index);\n\n // sort items in list\n if (isFunction(itemInsertLocation) && source) {\n sortItems(state, itemInsertLocation);\n }\n\n // get a quick reference to the item id\n const id = item.id;\n\n // observe item events\n item.on('init', () => {\n dispatch('DID_INIT_ITEM', { id });\n });\n\n item.on('load-init', () => {\n dispatch('DID_START_ITEM_LOAD', { id });\n });\n\n item.on('load-meta', () => {\n dispatch('DID_UPDATE_ITEM_META', { id });\n });\n\n item.on('load-progress', progress => {\n dispatch('DID_UPDATE_ITEM_LOAD_PROGRESS', { id, progress });\n });\n\n item.on('load-request-error', error => {\n const mainStatus = dynamicLabel(state.options.labelFileLoadError)(error);\n\n // is client error, no way to recover\n if (error.code >= 400 && error.code < 500) {\n dispatch('DID_THROW_ITEM_INVALID', {\n id,\n error,\n status: {\n main: mainStatus,\n sub: `${error.code} (${error.body})`,\n },\n });\n\n // reject the file so can be dealt with through API\n failure({ error, file: createItemAPI(item) });\n return;\n }\n\n // is possible server error, so might be possible to retry\n dispatch('DID_THROW_ITEM_LOAD_ERROR', {\n id,\n error,\n status: {\n main: mainStatus,\n sub: state.options.labelTapToRetry,\n },\n });\n });\n\n item.on('load-file-error', error => {\n dispatch('DID_THROW_ITEM_INVALID', {\n id,\n error: error.status,\n status: error.status,\n });\n failure({ error: error.status, file: createItemAPI(item) });\n });\n\n item.on('load-abort', () => {\n dispatch('REMOVE_ITEM', { query: id });\n });\n\n item.on('load-skip', () => {\n item.on('metadata-update', change => {\n if (!isFile(item.file)) return;\n dispatch('DID_UPDATE_ITEM_METADATA', { id, change });\n });\n\n dispatch('COMPLETE_LOAD_ITEM', {\n query: id,\n item,\n data: {\n source,\n success,\n },\n });\n });\n\n item.on('load', () => {\n const handleAdd = shouldAdd => {\n // no should not add this file\n if (!shouldAdd) {\n dispatch('REMOVE_ITEM', {\n query: id,\n });\n return;\n }\n\n // now interested in metadata updates\n item.on('metadata-update', change => {\n dispatch('DID_UPDATE_ITEM_METADATA', { id, change });\n });\n\n // let plugins decide if the output data should be prepared at this point\n // means we'll do this and wait for idle state\n applyFilterChain('SHOULD_PREPARE_OUTPUT', false, { item, query }).then(\n shouldPrepareOutput => {\n // plugins determined the output data should be prepared (or not), can be adjusted with beforePrepareOutput hook\n const beforePrepareFile = query('GET_BEFORE_PREPARE_FILE');\n if (beforePrepareFile)\n shouldPrepareOutput = beforePrepareFile(item, shouldPrepareOutput);\n\n const loadComplete = () => {\n dispatch('COMPLETE_LOAD_ITEM', {\n query: id,\n item,\n data: {\n source,\n success,\n },\n });\n\n listUpdated(dispatch, state);\n };\n\n // exit\n if (shouldPrepareOutput) {\n // wait for idle state and then run PREPARE_OUTPUT\n dispatch(\n 'REQUEST_PREPARE_OUTPUT',\n {\n query: id,\n item,\n success: file => {\n dispatch('DID_PREPARE_OUTPUT', { id, file });\n loadComplete();\n },\n },\n true\n );\n\n return;\n }\n\n loadComplete();\n }\n );\n };\n\n // item loaded, allow plugins to\n // - read data (quickly)\n // - add metadata\n applyFilterChain('DID_LOAD_ITEM', item, { query, dispatch })\n .then(() => {\n optionalPromise(query('GET_BEFORE_ADD_FILE'), createItemAPI(item)).then(\n handleAdd\n );\n })\n .catch(e => {\n if (!e || !e.error || !e.status) return handleAdd(false);\n dispatch('DID_THROW_ITEM_INVALID', {\n id,\n error: e.error,\n status: e.status,\n });\n });\n });\n\n item.on('process-start', () => {\n dispatch('DID_START_ITEM_PROCESSING', { id });\n });\n\n item.on('process-progress', progress => {\n dispatch('DID_UPDATE_ITEM_PROCESS_PROGRESS', { id, progress });\n });\n\n item.on('process-error', error => {\n dispatch('DID_THROW_ITEM_PROCESSING_ERROR', {\n id,\n error,\n status: {\n main: dynamicLabel(state.options.labelFileProcessingError)(error),\n sub: state.options.labelTapToRetry,\n },\n });\n });\n\n item.on('process-revert-error', error => {\n dispatch('DID_THROW_ITEM_PROCESSING_REVERT_ERROR', {\n id,\n error,\n status: {\n main: dynamicLabel(state.options.labelFileProcessingRevertError)(error),\n sub: state.options.labelTapToRetry,\n },\n });\n });\n\n item.on('process-complete', serverFileReference => {\n dispatch('DID_COMPLETE_ITEM_PROCESSING', {\n id,\n error: null,\n serverFileReference,\n });\n dispatch('DID_DEFINE_VALUE', { id, value: serverFileReference });\n });\n\n item.on('process-abort', () => {\n dispatch('DID_ABORT_ITEM_PROCESSING', { id });\n });\n\n item.on('process-revert', () => {\n dispatch('DID_REVERT_ITEM_PROCESSING', { id });\n dispatch('DID_DEFINE_VALUE', { id, value: null });\n });\n\n // let view know the item has been inserted\n dispatch('DID_ADD_ITEM', { id, index, interactionMethod });\n\n listUpdated(dispatch, state);\n\n // start loading the source\n const { url, load, restore, fetch } = state.options.server || {};\n\n item.load(\n source,\n\n // this creates a function that loads the file based on the type of file (string, base64, blob, file) and location of file (local, remote, limbo)\n createFileLoader(\n origin === FileOrigin.INPUT\n ? // input, if is remote, see if should use custom fetch, else use default fetchBlob\n isString(source) && isExternalURL(source)\n ? fetch\n ? createFetchFunction(url, fetch)\n : fetchBlob // remote url\n : fetchBlob // try to fetch url\n : // limbo or local\n origin === FileOrigin.LIMBO\n ? createFetchFunction(url, restore) // limbo\n : createFetchFunction(url, load) // local\n ),\n\n // called when the file is loaded so it can be piped through the filters\n (file, success, error) => {\n // let's process the file\n applyFilterChain('LOAD_FILE', file, { query })\n .then(success)\n .catch(error);\n }\n );\n },\n\n REQUEST_PREPARE_OUTPUT: ({ item, success, failure = () => {} }) => {\n // error response if item archived\n const err = {\n error: createResponse('error', 0, 'Item not found'),\n file: null,\n };\n\n // don't handle archived items, an item could have been archived (load aborted) while waiting to be prepared\n if (item.archived) return failure(err);\n\n // allow plugins to alter the file data\n applyFilterChain('PREPARE_OUTPUT', item.file, { query, item }).then(result => {\n applyFilterChain('COMPLETE_PREPARE_OUTPUT', result, { query, item }).then(result => {\n // don't handle archived items, an item could have been archived (load aborted) while being prepared\n if (item.archived) return failure(err);\n\n // we done!\n success(result);\n });\n });\n },\n\n COMPLETE_LOAD_ITEM: ({ item, data }) => {\n const { success, source } = data;\n\n // sort items in list\n const itemInsertLocation = query('GET_ITEM_INSERT_LOCATION');\n if (isFunction(itemInsertLocation) && source) {\n sortItems(state, itemInsertLocation);\n }\n\n // let interface know the item has loaded\n dispatch('DID_LOAD_ITEM', {\n id: item.id,\n error: null,\n serverFileReference: item.origin === FileOrigin.INPUT ? null : source,\n });\n\n // item has been successfully loaded and added to the\n // list of items so can now be safely returned for use\n success(createItemAPI(item));\n\n // if this is a local server file we need to show a different state\n if (item.origin === FileOrigin.LOCAL) {\n dispatch('DID_LOAD_LOCAL_ITEM', { id: item.id });\n return;\n }\n\n // if is a temp server file we prevent async upload call here (as the file is already on the server)\n if (item.origin === FileOrigin.LIMBO) {\n dispatch('DID_COMPLETE_ITEM_PROCESSING', {\n id: item.id,\n error: null,\n serverFileReference: source,\n });\n\n dispatch('DID_DEFINE_VALUE', {\n id: item.id,\n value: item.serverId || source,\n });\n return;\n }\n\n // id we are allowed to upload the file immediately, lets do it\n if (query('IS_ASYNC') && state.options.instantUpload) {\n dispatch('REQUEST_ITEM_PROCESSING', { query: item.id });\n }\n },\n\n RETRY_ITEM_LOAD: getItemByQueryFromState(state, item => {\n // try loading the source one more time\n item.retryLoad();\n }),\n\n REQUEST_ITEM_PREPARE: getItemByQueryFromState(state, (item, success, failure) => {\n dispatch(\n 'REQUEST_PREPARE_OUTPUT',\n {\n query: item.id,\n item,\n success: file => {\n dispatch('DID_PREPARE_OUTPUT', { id: item.id, file });\n success({\n file: item,\n output: file,\n });\n },\n failure,\n },\n true\n );\n }),\n\n REQUEST_ITEM_PROCESSING: getItemByQueryFromState(state, (item, success, failure) => {\n // cannot be queued (or is already queued)\n const itemCanBeQueuedForProcessing =\n // waiting for something\n item.status === ItemStatus.IDLE ||\n // processing went wrong earlier\n item.status === ItemStatus.PROCESSING_ERROR;\n\n // not ready to be processed\n if (!itemCanBeQueuedForProcessing) {\n const processNow = () =>\n dispatch('REQUEST_ITEM_PROCESSING', { query: item, success, failure });\n\n const process = () => (document.hidden ? processNow() : setTimeout(processNow, 32));\n\n // if already done processing or tried to revert but didn't work, try again\n if (\n item.status === ItemStatus.PROCESSING_COMPLETE ||\n item.status === ItemStatus.PROCESSING_REVERT_ERROR\n ) {\n item.revert(\n createRevertFunction(state.options.server.url, state.options.server.revert),\n query('GET_FORCE_REVERT')\n )\n .then(process)\n .catch(() => {}); // don't continue with processing if something went wrong\n } else if (item.status === ItemStatus.PROCESSING) {\n item.abortProcessing().then(process);\n }\n\n return;\n }\n\n // already queued for processing\n if (item.status === ItemStatus.PROCESSING_QUEUED) return;\n\n item.requestProcessing();\n\n dispatch('DID_REQUEST_ITEM_PROCESSING', { id: item.id });\n\n dispatch('PROCESS_ITEM', { query: item, success, failure }, true);\n }),\n\n PROCESS_ITEM: getItemByQueryFromState(state, (item, success, failure) => {\n const maxParallelUploads = query('GET_MAX_PARALLEL_UPLOADS');\n const totalCurrentUploads = query('GET_ITEMS_BY_STATUS', ItemStatus.PROCESSING).length;\n\n // queue and wait till queue is freed up\n if (totalCurrentUploads === maxParallelUploads) {\n // queue for later processing\n state.processingQueue.push({\n id: item.id,\n success,\n failure,\n });\n\n // stop it!\n return;\n }\n\n // if was not queued or is already processing exit here\n if (item.status === ItemStatus.PROCESSING) return;\n\n const processNext = () => {\n // process queueud items\n const queueEntry = state.processingQueue.shift();\n\n // no items left\n if (!queueEntry) return;\n\n // get item reference\n const { id, success, failure } = queueEntry;\n const itemReference = getItemByQuery(state.items, id);\n\n // if item was archived while in queue, jump to next\n if (!itemReference || itemReference.archived) {\n processNext();\n return;\n }\n\n // process queued item\n dispatch('PROCESS_ITEM', { query: id, success, failure }, true);\n };\n\n // we done function\n item.onOnce('process-complete', () => {\n success(createItemAPI(item));\n processNext();\n\n // if origin is local, and we're instant uploading, trigger remove of original\n // as revert will remove file from list\n const server = state.options.server;\n const instantUpload = state.options.instantUpload;\n if (instantUpload && item.origin === FileOrigin.LOCAL && isFunction(server.remove)) {\n const noop = () => {};\n item.origin = FileOrigin.LIMBO;\n state.options.server.remove(item.source, noop, noop);\n }\n\n // All items processed? No errors?\n const allItemsProcessed =\n query('GET_ITEMS_BY_STATUS', ItemStatus.PROCESSING_COMPLETE).length ===\n state.items.length;\n if (allItemsProcessed) {\n dispatch('DID_COMPLETE_ITEM_PROCESSING_ALL');\n }\n });\n\n // we error function\n item.onOnce('process-error', error => {\n failure({ error, file: createItemAPI(item) });\n processNext();\n });\n\n // start file processing\n const options = state.options;\n item.process(\n createFileProcessor(\n createProcessorFunction(options.server.url, options.server.process, options.name, {\n chunkTransferId: item.transferId,\n chunkServer: options.server.patch,\n chunkUploads: options.chunkUploads,\n chunkForce: options.chunkForce,\n chunkSize: options.chunkSize,\n chunkRetryDelays: options.chunkRetryDelays,\n }),\n {\n allowMinimumUploadDuration: query('GET_ALLOW_MINIMUM_UPLOAD_DURATION'),\n }\n ),\n // called when the file is about to be processed so it can be piped through the transform filters\n (file, success, error) => {\n // allow plugins to alter the file data\n applyFilterChain('PREPARE_OUTPUT', file, { query, item })\n .then(file => {\n dispatch('DID_PREPARE_OUTPUT', { id: item.id, file });\n\n success(file);\n })\n .catch(error);\n }\n );\n }),\n\n RETRY_ITEM_PROCESSING: getItemByQueryFromState(state, item => {\n dispatch('REQUEST_ITEM_PROCESSING', { query: item });\n }),\n\n REQUEST_REMOVE_ITEM: getItemByQueryFromState(state, item => {\n optionalPromise(query('GET_BEFORE_REMOVE_FILE'), createItemAPI(item)).then(shouldRemove => {\n if (!shouldRemove) {\n return;\n }\n dispatch('REMOVE_ITEM', { query: item });\n });\n }),\n\n RELEASE_ITEM: getItemByQueryFromState(state, item => {\n item.release();\n }),\n\n REMOVE_ITEM: getItemByQueryFromState(state, (item, success, failure, options) => {\n const removeFromView = () => {\n // get id reference\n const id = item.id;\n\n // archive the item, this does not remove it from the list\n getItemById(state.items, id).archive();\n\n // tell the view the item has been removed\n dispatch('DID_REMOVE_ITEM', { error: null, id, item });\n\n // now the list has been modified\n listUpdated(dispatch, state);\n\n // correctly removed\n success(createItemAPI(item));\n };\n\n // if this is a local file and the `server.remove` function has been configured,\n // send source there so dev can remove file from server\n const server = state.options.server;\n if (\n item.origin === FileOrigin.LOCAL &&\n server &&\n isFunction(server.remove) &&\n options.remove !== false\n ) {\n dispatch('DID_START_ITEM_REMOVE', { id: item.id });\n\n server.remove(\n item.source,\n () => removeFromView(),\n status => {\n dispatch('DID_THROW_ITEM_REMOVE_ERROR', {\n id: item.id,\n error: createResponse('error', 0, status, null),\n status: {\n main: dynamicLabel(state.options.labelFileRemoveError)(status),\n sub: state.options.labelTapToRetry,\n },\n });\n }\n );\n } else {\n // if is requesting revert and can revert need to call revert handler (not calling request_ because that would also trigger beforeRemoveHook)\n if (\n (options.revert && item.origin !== FileOrigin.LOCAL && item.serverId !== null) ||\n // if chunked uploads are enabled and we're uploading in chunks for this specific file\n // or if the file isn't big enough for chunked uploads but chunkForce is set then call\n // revert before removing from the view...\n (state.options.chunkUploads && item.file.size > state.options.chunkSize) ||\n (state.options.chunkUploads && state.options.chunkForce)\n ) {\n item.revert(\n createRevertFunction(state.options.server.url, state.options.server.revert),\n query('GET_FORCE_REVERT')\n );\n }\n\n // can now safely remove from view\n removeFromView();\n }\n }),\n\n ABORT_ITEM_LOAD: getItemByQueryFromState(state, item => {\n item.abortLoad();\n }),\n\n ABORT_ITEM_PROCESSING: getItemByQueryFromState(state, item => {\n // test if is already processed\n if (item.serverId) {\n dispatch('REVERT_ITEM_PROCESSING', { id: item.id });\n return;\n }\n\n // abort\n item.abortProcessing().then(() => {\n const shouldRemove = state.options.instantUpload;\n if (shouldRemove) {\n dispatch('REMOVE_ITEM', { query: item.id });\n }\n });\n }),\n\n REQUEST_REVERT_ITEM_PROCESSING: getItemByQueryFromState(state, item => {\n // not instant uploading, revert immediately\n if (!state.options.instantUpload) {\n dispatch('REVERT_ITEM_PROCESSING', { query: item });\n return;\n }\n\n // if we're instant uploading the file will also be removed if we revert,\n // so if a before remove file hook is defined we need to run it now\n const handleRevert = shouldRevert => {\n if (!shouldRevert) return;\n dispatch('REVERT_ITEM_PROCESSING', { query: item });\n };\n\n const fn = query('GET_BEFORE_REMOVE_FILE');\n if (!fn) {\n return handleRevert(true);\n }\n\n const requestRemoveResult = fn(createItemAPI(item));\n if (requestRemoveResult == null) {\n // undefined or null\n return handleRevert(true);\n }\n\n if (typeof requestRemoveResult === 'boolean') {\n return handleRevert(requestRemoveResult);\n }\n\n if (typeof requestRemoveResult.then === 'function') {\n requestRemoveResult.then(handleRevert);\n }\n }),\n\n REVERT_ITEM_PROCESSING: getItemByQueryFromState(state, item => {\n item.revert(\n createRevertFunction(state.options.server.url, state.options.server.revert),\n query('GET_FORCE_REVERT')\n )\n .then(() => {\n const shouldRemove = state.options.instantUpload || isMockItem(item);\n if (shouldRemove) {\n dispatch('REMOVE_ITEM', { query: item.id });\n }\n })\n .catch(() => {});\n }),\n\n SET_OPTIONS: ({ options }) => {\n // get all keys passed\n const optionKeys = Object.keys(options);\n\n // get prioritized keyed to include (remove once not in options object)\n const prioritizedOptionKeys = PrioritizedOptions.filter(key => optionKeys.includes(key));\n\n // order the keys, prioritized first, then rest\n const orderedOptionKeys = [\n // add prioritized first if passed to options, else remove\n ...prioritizedOptionKeys,\n\n // prevent duplicate keys\n ...Object.keys(options).filter(key => !prioritizedOptionKeys.includes(key)),\n ];\n\n // dispatch set event for each option\n orderedOptionKeys.forEach(key => {\n dispatch(`SET_${fromCamels(key, '_').toUpperCase()}`, {\n value: options[key],\n });\n });\n },\n});\n\nconst PrioritizedOptions = [\n 'server', // must be processed before \"files\"\n];\n\nconst formatFilename = name => name;\n\nconst createElement$1 = tagName => {\n return document.createElement(tagName);\n};\n\nconst text = (node, value) => {\n let textNode = node.childNodes[0];\n if (!textNode) {\n textNode = document.createTextNode(value);\n node.appendChild(textNode);\n } else if (value !== textNode.nodeValue) {\n textNode.nodeValue = value;\n }\n};\n\nconst polarToCartesian = (centerX, centerY, radius, angleInDegrees) => {\n const angleInRadians = (((angleInDegrees % 360) - 90) * Math.PI) / 180.0;\n return {\n x: centerX + radius * Math.cos(angleInRadians),\n y: centerY + radius * Math.sin(angleInRadians),\n };\n};\n\nconst describeArc = (x, y, radius, startAngle, endAngle, arcSweep) => {\n const start = polarToCartesian(x, y, radius, endAngle);\n const end = polarToCartesian(x, y, radius, startAngle);\n return ['M', start.x, start.y, 'A', radius, radius, 0, arcSweep, 0, end.x, end.y].join(' ');\n};\n\nconst percentageArc = (x, y, radius, from, to) => {\n let arcSweep = 1;\n if (to > from && to - from <= 0.5) {\n arcSweep = 0;\n }\n if (from > to && from - to >= 0.5) {\n arcSweep = 0;\n }\n return describeArc(\n x,\n y,\n radius,\n Math.min(0.9999, from) * 360,\n Math.min(0.9999, to) * 360,\n arcSweep\n );\n};\n\nconst create = ({ root, props }) => {\n // start at 0\n props.spin = false;\n props.progress = 0;\n props.opacity = 0;\n\n // svg\n const svg = createElement('svg');\n root.ref.path = createElement('path', {\n 'stroke-width': 2,\n 'stroke-linecap': 'round',\n });\n svg.appendChild(root.ref.path);\n\n root.ref.svg = svg;\n\n root.appendChild(svg);\n};\n\nconst write = ({ root, props }) => {\n if (props.opacity === 0) {\n return;\n }\n\n if (props.align) {\n root.element.dataset.align = props.align;\n }\n\n // get width of stroke\n const ringStrokeWidth = parseInt(attr(root.ref.path, 'stroke-width'), 10);\n\n // calculate size of ring\n const size = root.rect.element.width * 0.5;\n\n // ring state\n let ringFrom = 0;\n let ringTo = 0;\n\n // now in busy mode\n if (props.spin) {\n ringFrom = 0;\n ringTo = 0.5;\n } else {\n ringFrom = 0;\n ringTo = props.progress;\n }\n\n // get arc path\n const coordinates = percentageArc(size, size, size - ringStrokeWidth, ringFrom, ringTo);\n\n // update progress bar\n attr(root.ref.path, 'd', coordinates);\n\n // hide while contains 0 value\n attr(root.ref.path, 'stroke-opacity', props.spin || props.progress > 0 ? 1 : 0);\n};\n\nconst progressIndicator = createView({\n tag: 'div',\n name: 'progress-indicator',\n ignoreRectUpdate: true,\n ignoreRect: true,\n create,\n write,\n mixins: {\n apis: ['progress', 'spin', 'align'],\n styles: ['opacity'],\n animations: {\n opacity: { type: 'tween', duration: 500 },\n progress: {\n type: 'spring',\n stiffness: 0.95,\n damping: 0.65,\n mass: 10,\n },\n },\n },\n});\n\nconst create$1 = ({ root, props }) => {\n root.element.innerHTML = (props.icon || '') + `${props.label}`;\n\n props.isDisabled = false;\n};\n\nconst write$1 = ({ root, props }) => {\n const { isDisabled } = props;\n const shouldDisable = root.query('GET_DISABLED') || props.opacity === 0;\n\n if (shouldDisable && !isDisabled) {\n props.isDisabled = true;\n attr(root.element, 'disabled', 'disabled');\n } else if (!shouldDisable && isDisabled) {\n props.isDisabled = false;\n root.element.removeAttribute('disabled');\n }\n};\n\nconst fileActionButton = createView({\n tag: 'button',\n attributes: {\n type: 'button',\n },\n ignoreRect: true,\n ignoreRectUpdate: true,\n name: 'file-action-button',\n mixins: {\n apis: ['label'],\n styles: ['translateX', 'translateY', 'scaleX', 'scaleY', 'opacity'],\n animations: {\n scaleX: 'spring',\n scaleY: 'spring',\n translateX: 'spring',\n translateY: 'spring',\n opacity: { type: 'tween', duration: 250 },\n },\n listeners: true,\n },\n create: create$1,\n write: write$1,\n});\n\nconst toNaturalFileSize = (bytes, decimalSeparator = '.', base = 1000, options = {}) => {\n const {\n labelBytes = 'bytes',\n labelKilobytes = 'KB',\n labelMegabytes = 'MB',\n labelGigabytes = 'GB',\n } = options;\n\n // no negative byte sizes\n bytes = Math.round(Math.abs(bytes));\n\n const KB = base;\n const MB = base * base;\n const GB = base * base * base;\n\n // just bytes\n if (bytes < KB) {\n return `${bytes} ${labelBytes}`;\n }\n\n // kilobytes\n if (bytes < MB) {\n return `${Math.floor(bytes / KB)} ${labelKilobytes}`;\n }\n\n // megabytes\n if (bytes < GB) {\n return `${removeDecimalsWhenZero(bytes / MB, 1, decimalSeparator)} ${labelMegabytes}`;\n }\n\n // gigabytes\n return `${removeDecimalsWhenZero(bytes / GB, 2, decimalSeparator)} ${labelGigabytes}`;\n};\n\nconst removeDecimalsWhenZero = (value, decimalCount, separator) => {\n return value\n .toFixed(decimalCount)\n .split('.')\n .filter(part => part !== '0')\n .join(separator);\n};\n\nconst create$2 = ({ root, props }) => {\n // filename\n const fileName = createElement$1('span');\n fileName.className = 'filepond--file-info-main';\n // hide for screenreaders\n // the file is contained in a fieldset with legend that contains the filename\n // no need to read it twice\n attr(fileName, 'aria-hidden', 'true');\n root.appendChild(fileName);\n root.ref.fileName = fileName;\n\n // filesize\n const fileSize = createElement$1('span');\n fileSize.className = 'filepond--file-info-sub';\n root.appendChild(fileSize);\n root.ref.fileSize = fileSize;\n\n // set initial values\n text(fileSize, root.query('GET_LABEL_FILE_WAITING_FOR_SIZE'));\n text(fileName, formatFilename(root.query('GET_ITEM_NAME', props.id)));\n};\n\nconst updateFile = ({ root, props }) => {\n text(\n root.ref.fileSize,\n toNaturalFileSize(\n root.query('GET_ITEM_SIZE', props.id),\n '.',\n root.query('GET_FILE_SIZE_BASE'),\n root.query('GET_FILE_SIZE_LABELS', root.query)\n )\n );\n text(root.ref.fileName, formatFilename(root.query('GET_ITEM_NAME', props.id)));\n};\n\nconst updateFileSizeOnError = ({ root, props }) => {\n // if size is available don't fallback to unknown size message\n if (isInt(root.query('GET_ITEM_SIZE', props.id))) {\n updateFile({ root, props });\n return;\n }\n\n text(root.ref.fileSize, root.query('GET_LABEL_FILE_SIZE_NOT_AVAILABLE'));\n};\n\nconst fileInfo = createView({\n name: 'file-info',\n ignoreRect: true,\n ignoreRectUpdate: true,\n write: createRoute({\n DID_LOAD_ITEM: updateFile,\n DID_UPDATE_ITEM_META: updateFile,\n DID_THROW_ITEM_LOAD_ERROR: updateFileSizeOnError,\n DID_THROW_ITEM_INVALID: updateFileSizeOnError,\n }),\n didCreateView: root => {\n applyFilters('CREATE_VIEW', { ...root, view: root });\n },\n create: create$2,\n mixins: {\n styles: ['translateX', 'translateY'],\n animations: {\n translateX: 'spring',\n translateY: 'spring',\n },\n },\n});\n\nconst toPercentage = value => Math.round(value * 100);\n\nconst create$3 = ({ root }) => {\n // main status\n const main = createElement$1('span');\n main.className = 'filepond--file-status-main';\n root.appendChild(main);\n root.ref.main = main;\n\n // sub status\n const sub = createElement$1('span');\n sub.className = 'filepond--file-status-sub';\n root.appendChild(sub);\n root.ref.sub = sub;\n\n didSetItemLoadProgress({ root, action: { progress: null } });\n};\n\nconst didSetItemLoadProgress = ({ root, action }) => {\n const title =\n action.progress === null\n ? root.query('GET_LABEL_FILE_LOADING')\n : `${root.query('GET_LABEL_FILE_LOADING')} ${toPercentage(action.progress)}%`;\n text(root.ref.main, title);\n text(root.ref.sub, root.query('GET_LABEL_TAP_TO_CANCEL'));\n};\n\nconst didSetItemProcessProgress = ({ root, action }) => {\n const title =\n action.progress === null\n ? root.query('GET_LABEL_FILE_PROCESSING')\n : `${root.query('GET_LABEL_FILE_PROCESSING')} ${toPercentage(action.progress)}%`;\n text(root.ref.main, title);\n text(root.ref.sub, root.query('GET_LABEL_TAP_TO_CANCEL'));\n};\n\nconst didRequestItemProcessing = ({ root }) => {\n text(root.ref.main, root.query('GET_LABEL_FILE_PROCESSING'));\n text(root.ref.sub, root.query('GET_LABEL_TAP_TO_CANCEL'));\n};\n\nconst didAbortItemProcessing = ({ root }) => {\n text(root.ref.main, root.query('GET_LABEL_FILE_PROCESSING_ABORTED'));\n text(root.ref.sub, root.query('GET_LABEL_TAP_TO_RETRY'));\n};\n\nconst didCompleteItemProcessing = ({ root }) => {\n text(root.ref.main, root.query('GET_LABEL_FILE_PROCESSING_COMPLETE'));\n text(root.ref.sub, root.query('GET_LABEL_TAP_TO_UNDO'));\n};\n\nconst clear = ({ root }) => {\n text(root.ref.main, '');\n text(root.ref.sub, '');\n};\n\nconst error = ({ root, action }) => {\n text(root.ref.main, action.status.main);\n text(root.ref.sub, action.status.sub);\n};\n\nconst fileStatus = createView({\n name: 'file-status',\n ignoreRect: true,\n ignoreRectUpdate: true,\n write: createRoute({\n DID_LOAD_ITEM: clear,\n DID_REVERT_ITEM_PROCESSING: clear,\n DID_REQUEST_ITEM_PROCESSING: didRequestItemProcessing,\n DID_ABORT_ITEM_PROCESSING: didAbortItemProcessing,\n DID_COMPLETE_ITEM_PROCESSING: didCompleteItemProcessing,\n DID_UPDATE_ITEM_PROCESS_PROGRESS: didSetItemProcessProgress,\n DID_UPDATE_ITEM_LOAD_PROGRESS: didSetItemLoadProgress,\n DID_THROW_ITEM_LOAD_ERROR: error,\n DID_THROW_ITEM_INVALID: error,\n DID_THROW_ITEM_PROCESSING_ERROR: error,\n DID_THROW_ITEM_PROCESSING_REVERT_ERROR: error,\n DID_THROW_ITEM_REMOVE_ERROR: error,\n }),\n didCreateView: root => {\n applyFilters('CREATE_VIEW', { ...root, view: root });\n },\n create: create$3,\n mixins: {\n styles: ['translateX', 'translateY', 'opacity'],\n animations: {\n opacity: { type: 'tween', duration: 250 },\n translateX: 'spring',\n translateY: 'spring',\n },\n },\n});\n\n/**\n * Button definitions for the file view\n */\n\nconst Buttons = {\n AbortItemLoad: {\n label: 'GET_LABEL_BUTTON_ABORT_ITEM_LOAD',\n action: 'ABORT_ITEM_LOAD',\n className: 'filepond--action-abort-item-load',\n align: 'LOAD_INDICATOR_POSITION', // right\n },\n RetryItemLoad: {\n label: 'GET_LABEL_BUTTON_RETRY_ITEM_LOAD',\n action: 'RETRY_ITEM_LOAD',\n icon: 'GET_ICON_RETRY',\n className: 'filepond--action-retry-item-load',\n align: 'BUTTON_PROCESS_ITEM_POSITION', // right\n },\n RemoveItem: {\n label: 'GET_LABEL_BUTTON_REMOVE_ITEM',\n action: 'REQUEST_REMOVE_ITEM',\n icon: 'GET_ICON_REMOVE',\n className: 'filepond--action-remove-item',\n align: 'BUTTON_REMOVE_ITEM_POSITION', // left\n },\n ProcessItem: {\n label: 'GET_LABEL_BUTTON_PROCESS_ITEM',\n action: 'REQUEST_ITEM_PROCESSING',\n icon: 'GET_ICON_PROCESS',\n className: 'filepond--action-process-item',\n align: 'BUTTON_PROCESS_ITEM_POSITION', // right\n },\n AbortItemProcessing: {\n label: 'GET_LABEL_BUTTON_ABORT_ITEM_PROCESSING',\n action: 'ABORT_ITEM_PROCESSING',\n className: 'filepond--action-abort-item-processing',\n align: 'BUTTON_PROCESS_ITEM_POSITION', // right\n },\n RetryItemProcessing: {\n label: 'GET_LABEL_BUTTON_RETRY_ITEM_PROCESSING',\n action: 'RETRY_ITEM_PROCESSING',\n icon: 'GET_ICON_RETRY',\n className: 'filepond--action-retry-item-processing',\n align: 'BUTTON_PROCESS_ITEM_POSITION', // right\n },\n RevertItemProcessing: {\n label: 'GET_LABEL_BUTTON_UNDO_ITEM_PROCESSING',\n action: 'REQUEST_REVERT_ITEM_PROCESSING',\n icon: 'GET_ICON_UNDO',\n className: 'filepond--action-revert-item-processing',\n align: 'BUTTON_PROCESS_ITEM_POSITION', // right\n },\n};\n\n// make a list of buttons, we can then remove buttons from this list if they're disabled\nconst ButtonKeys = [];\nforin(Buttons, key => {\n ButtonKeys.push(key);\n});\n\nconst calculateFileInfoOffset = root => {\n if (getRemoveIndicatorAligment(root) === 'right') return 0;\n const buttonRect = root.ref.buttonRemoveItem.rect.element;\n return buttonRect.hidden ? null : buttonRect.width + buttonRect.left;\n};\n\nconst calculateButtonWidth = root => {\n const buttonRect = root.ref.buttonAbortItemLoad.rect.element;\n return buttonRect.width;\n};\n\n// Force on full pixels so text stays crips\nconst calculateFileVerticalCenterOffset = root =>\n Math.floor(root.ref.buttonRemoveItem.rect.element.height / 4);\nconst calculateFileHorizontalCenterOffset = root =>\n Math.floor(root.ref.buttonRemoveItem.rect.element.left / 2);\n\nconst getLoadIndicatorAlignment = root => root.query('GET_STYLE_LOAD_INDICATOR_POSITION');\nconst getProcessIndicatorAlignment = root => root.query('GET_STYLE_PROGRESS_INDICATOR_POSITION');\nconst getRemoveIndicatorAligment = root => root.query('GET_STYLE_BUTTON_REMOVE_ITEM_POSITION');\n\nconst DefaultStyle = {\n buttonAbortItemLoad: { opacity: 0 },\n buttonRetryItemLoad: { opacity: 0 },\n buttonRemoveItem: { opacity: 0 },\n buttonProcessItem: { opacity: 0 },\n buttonAbortItemProcessing: { opacity: 0 },\n buttonRetryItemProcessing: { opacity: 0 },\n buttonRevertItemProcessing: { opacity: 0 },\n loadProgressIndicator: { opacity: 0, align: getLoadIndicatorAlignment },\n processProgressIndicator: { opacity: 0, align: getProcessIndicatorAlignment },\n processingCompleteIndicator: { opacity: 0, scaleX: 0.75, scaleY: 0.75 },\n info: { translateX: 0, translateY: 0, opacity: 0 },\n status: { translateX: 0, translateY: 0, opacity: 0 },\n};\n\nconst IdleStyle = {\n buttonRemoveItem: { opacity: 1 },\n buttonProcessItem: { opacity: 1 },\n info: { translateX: calculateFileInfoOffset },\n status: { translateX: calculateFileInfoOffset },\n};\n\nconst ProcessingStyle = {\n buttonAbortItemProcessing: { opacity: 1 },\n processProgressIndicator: { opacity: 1 },\n status: { opacity: 1 },\n};\n\nconst StyleMap = {\n DID_THROW_ITEM_INVALID: {\n buttonRemoveItem: { opacity: 1 },\n info: { translateX: calculateFileInfoOffset },\n status: { translateX: calculateFileInfoOffset, opacity: 1 },\n },\n DID_START_ITEM_LOAD: {\n buttonAbortItemLoad: { opacity: 1 },\n loadProgressIndicator: { opacity: 1 },\n status: { opacity: 1 },\n },\n DID_THROW_ITEM_LOAD_ERROR: {\n buttonRetryItemLoad: { opacity: 1 },\n buttonRemoveItem: { opacity: 1 },\n info: { translateX: calculateFileInfoOffset },\n status: { opacity: 1 },\n },\n DID_START_ITEM_REMOVE: {\n processProgressIndicator: { opacity: 1, align: getRemoveIndicatorAligment },\n info: { translateX: calculateFileInfoOffset },\n status: { opacity: 0 },\n },\n DID_THROW_ITEM_REMOVE_ERROR: {\n processProgressIndicator: { opacity: 0, align: getRemoveIndicatorAligment },\n buttonRemoveItem: { opacity: 1 },\n info: { translateX: calculateFileInfoOffset },\n status: { opacity: 1, translateX: calculateFileInfoOffset },\n },\n DID_LOAD_ITEM: IdleStyle,\n DID_LOAD_LOCAL_ITEM: {\n buttonRemoveItem: { opacity: 1 },\n info: { translateX: calculateFileInfoOffset },\n status: { translateX: calculateFileInfoOffset },\n },\n DID_START_ITEM_PROCESSING: ProcessingStyle,\n DID_REQUEST_ITEM_PROCESSING: ProcessingStyle,\n DID_UPDATE_ITEM_PROCESS_PROGRESS: ProcessingStyle,\n DID_COMPLETE_ITEM_PROCESSING: {\n buttonRevertItemProcessing: { opacity: 1 },\n info: { opacity: 1 },\n status: { opacity: 1 },\n },\n DID_THROW_ITEM_PROCESSING_ERROR: {\n buttonRemoveItem: { opacity: 1 },\n buttonRetryItemProcessing: { opacity: 1 },\n status: { opacity: 1 },\n info: { translateX: calculateFileInfoOffset },\n },\n DID_THROW_ITEM_PROCESSING_REVERT_ERROR: {\n buttonRevertItemProcessing: { opacity: 1 },\n status: { opacity: 1 },\n info: { opacity: 1 },\n },\n DID_ABORT_ITEM_PROCESSING: {\n buttonRemoveItem: { opacity: 1 },\n buttonProcessItem: { opacity: 1 },\n info: { translateX: calculateFileInfoOffset },\n status: { opacity: 1 },\n },\n DID_REVERT_ITEM_PROCESSING: IdleStyle,\n};\n\n// complete indicator view\nconst processingCompleteIndicatorView = createView({\n create: ({ root }) => {\n root.element.innerHTML = root.query('GET_ICON_DONE');\n },\n name: 'processing-complete-indicator',\n ignoreRect: true,\n mixins: {\n styles: ['scaleX', 'scaleY', 'opacity'],\n animations: {\n scaleX: 'spring',\n scaleY: 'spring',\n opacity: { type: 'tween', duration: 250 },\n },\n },\n});\n\n/**\n * Creates the file view\n */\nconst create$4 = ({ root, props }) => {\n // copy Buttons object\n const LocalButtons = Object.keys(Buttons).reduce((prev, curr) => {\n prev[curr] = { ...Buttons[curr] };\n return prev;\n }, {});\n\n const { id } = props;\n\n // allow reverting upload\n const allowRevert = root.query('GET_ALLOW_REVERT');\n\n // allow remove file\n const allowRemove = root.query('GET_ALLOW_REMOVE');\n\n // allow processing upload\n const allowProcess = root.query('GET_ALLOW_PROCESS');\n\n // is instant uploading, need this to determine the icon of the undo button\n const instantUpload = root.query('GET_INSTANT_UPLOAD');\n\n // is async set up\n const isAsync = root.query('IS_ASYNC');\n\n // should align remove item buttons\n const alignRemoveItemButton = root.query('GET_STYLE_BUTTON_REMOVE_ITEM_ALIGN');\n\n // enabled buttons array\n let buttonFilter;\n if (isAsync) {\n if (allowProcess && !allowRevert) {\n // only remove revert button\n buttonFilter = key => !/RevertItemProcessing/.test(key);\n } else if (!allowProcess && allowRevert) {\n // only remove process button\n buttonFilter = key => !/ProcessItem|RetryItemProcessing|AbortItemProcessing/.test(key);\n } else if (!allowProcess && !allowRevert) {\n // remove all process buttons\n buttonFilter = key => !/Process/.test(key);\n }\n } else {\n // no process controls available\n buttonFilter = key => !/Process/.test(key);\n }\n\n const enabledButtons = buttonFilter ? ButtonKeys.filter(buttonFilter) : ButtonKeys.concat();\n\n // update icon and label for revert button when instant uploading\n if (instantUpload && allowRevert) {\n LocalButtons['RevertItemProcessing'].label = 'GET_LABEL_BUTTON_REMOVE_ITEM';\n LocalButtons['RevertItemProcessing'].icon = 'GET_ICON_REMOVE';\n }\n\n // remove last button (revert) if not allowed\n if (isAsync && !allowRevert) {\n const map = StyleMap['DID_COMPLETE_ITEM_PROCESSING'];\n map.info.translateX = calculateFileHorizontalCenterOffset;\n map.info.translateY = calculateFileVerticalCenterOffset;\n map.status.translateY = calculateFileVerticalCenterOffset;\n map.processingCompleteIndicator = { opacity: 1, scaleX: 1, scaleY: 1 };\n }\n\n // should align center\n if (isAsync && !allowProcess) {\n [\n 'DID_START_ITEM_PROCESSING',\n 'DID_REQUEST_ITEM_PROCESSING',\n 'DID_UPDATE_ITEM_PROCESS_PROGRESS',\n 'DID_THROW_ITEM_PROCESSING_ERROR',\n ].forEach(key => {\n StyleMap[key].status.translateY = calculateFileVerticalCenterOffset;\n });\n StyleMap['DID_THROW_ITEM_PROCESSING_ERROR'].status.translateX = calculateButtonWidth;\n }\n\n // move remove button to right\n if (alignRemoveItemButton && allowRevert) {\n LocalButtons['RevertItemProcessing'].align = 'BUTTON_REMOVE_ITEM_POSITION';\n const map = StyleMap['DID_COMPLETE_ITEM_PROCESSING'];\n map.info.translateX = calculateFileInfoOffset;\n map.status.translateY = calculateFileVerticalCenterOffset;\n map.processingCompleteIndicator = { opacity: 1, scaleX: 1, scaleY: 1 };\n }\n\n // show/hide RemoveItem button\n if (!allowRemove) {\n LocalButtons['RemoveItem'].disabled = true;\n }\n\n // create the button views\n forin(LocalButtons, (key, definition) => {\n // create button\n const buttonView = root.createChildView(fileActionButton, {\n label: root.query(definition.label),\n icon: root.query(definition.icon),\n opacity: 0,\n });\n\n // should be appended?\n if (enabledButtons.includes(key)) {\n root.appendChildView(buttonView);\n }\n\n // toggle\n if (definition.disabled) {\n buttonView.element.setAttribute('disabled', 'disabled');\n buttonView.element.setAttribute('hidden', 'hidden');\n }\n\n // add position attribute\n buttonView.element.dataset.align = root.query(`GET_STYLE_${definition.align}`);\n\n // add class\n buttonView.element.classList.add(definition.className);\n\n // handle interactions\n buttonView.on('click', e => {\n e.stopPropagation();\n if (definition.disabled) return;\n root.dispatch(definition.action, { query: id });\n });\n\n // set reference\n root.ref[`button${key}`] = buttonView;\n });\n\n // checkmark\n root.ref.processingCompleteIndicator = root.appendChildView(\n root.createChildView(processingCompleteIndicatorView)\n );\n root.ref.processingCompleteIndicator.element.dataset.align = root.query(\n `GET_STYLE_BUTTON_PROCESS_ITEM_POSITION`\n );\n\n // create file info view\n root.ref.info = root.appendChildView(root.createChildView(fileInfo, { id }));\n\n // create file status view\n root.ref.status = root.appendChildView(root.createChildView(fileStatus, { id }));\n\n // add progress indicators\n const loadIndicatorView = root.appendChildView(\n root.createChildView(progressIndicator, {\n opacity: 0,\n align: root.query(`GET_STYLE_LOAD_INDICATOR_POSITION`),\n })\n );\n loadIndicatorView.element.classList.add('filepond--load-indicator');\n root.ref.loadProgressIndicator = loadIndicatorView;\n\n const progressIndicatorView = root.appendChildView(\n root.createChildView(progressIndicator, {\n opacity: 0,\n align: root.query(`GET_STYLE_PROGRESS_INDICATOR_POSITION`),\n })\n );\n progressIndicatorView.element.classList.add('filepond--process-indicator');\n root.ref.processProgressIndicator = progressIndicatorView;\n\n // current active styles\n root.ref.activeStyles = [];\n};\n\nconst write$2 = ({ root, actions, props }) => {\n // route actions\n route({ root, actions, props });\n\n // select last state change action\n let action = actions\n .concat()\n .filter(action => /^DID_/.test(action.type))\n .reverse()\n .find(action => StyleMap[action.type]);\n\n // a new action happened, let's get the matching styles\n if (action) {\n // define new active styles\n root.ref.activeStyles = [];\n\n const stylesToApply = StyleMap[action.type];\n forin(DefaultStyle, (name, defaultStyles) => {\n // get reference to control\n const control = root.ref[name];\n\n // loop over all styles for this control\n forin(defaultStyles, (key, defaultValue) => {\n const value =\n stylesToApply[name] && typeof stylesToApply[name][key] !== 'undefined'\n ? stylesToApply[name][key]\n : defaultValue;\n root.ref.activeStyles.push({ control, key, value });\n });\n });\n }\n\n // apply active styles to element\n root.ref.activeStyles.forEach(({ control, key, value }) => {\n control[key] = typeof value === 'function' ? value(root) : value;\n });\n};\n\nconst route = createRoute({\n DID_SET_LABEL_BUTTON_ABORT_ITEM_PROCESSING: ({ root, action }) => {\n root.ref.buttonAbortItemProcessing.label = action.value;\n },\n DID_SET_LABEL_BUTTON_ABORT_ITEM_LOAD: ({ root, action }) => {\n root.ref.buttonAbortItemLoad.label = action.value;\n },\n DID_SET_LABEL_BUTTON_ABORT_ITEM_REMOVAL: ({ root, action }) => {\n root.ref.buttonAbortItemRemoval.label = action.value;\n },\n DID_REQUEST_ITEM_PROCESSING: ({ root }) => {\n root.ref.processProgressIndicator.spin = true;\n root.ref.processProgressIndicator.progress = 0;\n },\n DID_START_ITEM_LOAD: ({ root }) => {\n root.ref.loadProgressIndicator.spin = true;\n root.ref.loadProgressIndicator.progress = 0;\n },\n DID_START_ITEM_REMOVE: ({ root }) => {\n root.ref.processProgressIndicator.spin = true;\n root.ref.processProgressIndicator.progress = 0;\n },\n DID_UPDATE_ITEM_LOAD_PROGRESS: ({ root, action }) => {\n root.ref.loadProgressIndicator.spin = false;\n root.ref.loadProgressIndicator.progress = action.progress;\n },\n DID_UPDATE_ITEM_PROCESS_PROGRESS: ({ root, action }) => {\n root.ref.processProgressIndicator.spin = false;\n root.ref.processProgressIndicator.progress = action.progress;\n },\n});\n\nconst file = createView({\n create: create$4,\n write: write$2,\n didCreateView: root => {\n applyFilters('CREATE_VIEW', { ...root, view: root });\n },\n name: 'file',\n});\n\n/**\n * Creates the file view\n */\nconst create$5 = ({ root, props }) => {\n // filename\n root.ref.fileName = createElement$1('legend');\n root.appendChild(root.ref.fileName);\n\n // file appended\n root.ref.file = root.appendChildView(root.createChildView(file, { id: props.id }));\n\n // data has moved to data.js\n root.ref.data = false;\n};\n\n/**\n * Data storage\n */\nconst didLoadItem = ({ root, props }) => {\n // updates the legend of the fieldset so screenreaders can better group buttons\n text(root.ref.fileName, formatFilename(root.query('GET_ITEM_NAME', props.id)));\n};\n\nconst fileWrapper = createView({\n create: create$5,\n ignoreRect: true,\n write: createRoute({\n DID_LOAD_ITEM: didLoadItem,\n }),\n didCreateView: root => {\n applyFilters('CREATE_VIEW', { ...root, view: root });\n },\n tag: 'fieldset',\n name: 'file-wrapper',\n});\n\nconst PANEL_SPRING_PROPS = { type: 'spring', damping: 0.6, mass: 7 };\n\nconst create$6 = ({ root, props }) => {\n [\n {\n name: 'top',\n },\n {\n name: 'center',\n props: {\n translateY: null,\n scaleY: null,\n },\n mixins: {\n animations: {\n scaleY: PANEL_SPRING_PROPS,\n },\n styles: ['translateY', 'scaleY'],\n },\n },\n {\n name: 'bottom',\n props: {\n translateY: null,\n },\n mixins: {\n animations: {\n translateY: PANEL_SPRING_PROPS,\n },\n styles: ['translateY'],\n },\n },\n ].forEach(section => {\n createSection(root, section, props.name);\n });\n\n root.element.classList.add(`filepond--${props.name}`);\n\n root.ref.scalable = null;\n};\n\nconst createSection = (root, section, className) => {\n const viewConstructor = createView({\n name: `panel-${section.name} filepond--${className}`,\n mixins: section.mixins,\n ignoreRectUpdate: true,\n });\n\n const view = root.createChildView(viewConstructor, section.props);\n\n root.ref[section.name] = root.appendChildView(view);\n};\n\nconst write$3 = ({ root, props }) => {\n // update scalable state\n if (root.ref.scalable === null || props.scalable !== root.ref.scalable) {\n root.ref.scalable = isBoolean(props.scalable) ? props.scalable : true;\n root.element.dataset.scalable = root.ref.scalable;\n }\n\n // no height, can't set\n if (!props.height) return;\n\n // get child rects\n const topRect = root.ref.top.rect.element;\n const bottomRect = root.ref.bottom.rect.element;\n\n // make sure height never is smaller than bottom and top seciton heights combined (will probably never happen, but who knows)\n const height = Math.max(topRect.height + bottomRect.height, props.height);\n\n // offset center part\n root.ref.center.translateY = topRect.height;\n\n // scale center part\n // use math ceil to prevent transparent lines because of rounding errors\n root.ref.center.scaleY = (height - topRect.height - bottomRect.height) / 100;\n\n // offset bottom part\n root.ref.bottom.translateY = height - bottomRect.height;\n};\n\nconst panel = createView({\n name: 'panel',\n read: ({ root, props }) => (props.heightCurrent = root.ref.bottom.translateY),\n write: write$3,\n create: create$6,\n ignoreRect: true,\n mixins: {\n apis: ['height', 'heightCurrent', 'scalable'],\n },\n});\n\nconst createDragHelper = items => {\n const itemIds = items.map(item => item.id);\n let prevIndex = undefined;\n return {\n setIndex: index => {\n prevIndex = index;\n },\n getIndex: () => prevIndex,\n getItemIndex: item => itemIds.indexOf(item.id),\n };\n};\n\nconst ITEM_TRANSLATE_SPRING = {\n type: 'spring',\n stiffness: 0.75,\n damping: 0.45,\n mass: 10,\n};\n\nconst ITEM_SCALE_SPRING = 'spring';\n\nconst StateMap = {\n DID_START_ITEM_LOAD: 'busy',\n DID_UPDATE_ITEM_LOAD_PROGRESS: 'loading',\n DID_THROW_ITEM_INVALID: 'load-invalid',\n DID_THROW_ITEM_LOAD_ERROR: 'load-error',\n DID_LOAD_ITEM: 'idle',\n DID_THROW_ITEM_REMOVE_ERROR: 'remove-error',\n DID_START_ITEM_REMOVE: 'busy',\n DID_START_ITEM_PROCESSING: 'busy processing',\n DID_REQUEST_ITEM_PROCESSING: 'busy processing',\n DID_UPDATE_ITEM_PROCESS_PROGRESS: 'processing',\n DID_COMPLETE_ITEM_PROCESSING: 'processing-complete',\n DID_THROW_ITEM_PROCESSING_ERROR: 'processing-error',\n DID_THROW_ITEM_PROCESSING_REVERT_ERROR: 'processing-revert-error',\n DID_ABORT_ITEM_PROCESSING: 'cancelled',\n DID_REVERT_ITEM_PROCESSING: 'idle',\n};\n\n/**\n * Creates the file view\n */\nconst create$7 = ({ root, props }) => {\n // select\n root.ref.handleClick = e => root.dispatch('DID_ACTIVATE_ITEM', { id: props.id });\n\n // set id\n root.element.id = `filepond--item-${props.id}`;\n root.element.addEventListener('click', root.ref.handleClick);\n\n // file view\n root.ref.container = root.appendChildView(root.createChildView(fileWrapper, { id: props.id }));\n\n // file panel\n root.ref.panel = root.appendChildView(root.createChildView(panel, { name: 'item-panel' }));\n\n // default start height\n root.ref.panel.height = null;\n\n // by default not marked for removal\n props.markedForRemoval = false;\n\n // if not allowed to reorder file items, exit here\n if (!root.query('GET_ALLOW_REORDER')) return;\n\n // set to idle so shows grab cursor\n root.element.dataset.dragState = 'idle';\n\n const grab = e => {\n if (!e.isPrimary) return;\n\n let removedActivateListener = false;\n\n const origin = {\n x: e.pageX,\n y: e.pageY,\n };\n\n props.dragOrigin = {\n x: root.translateX,\n y: root.translateY,\n };\n\n props.dragCenter = {\n x: e.offsetX,\n y: e.offsetY,\n };\n\n const dragState = createDragHelper(root.query('GET_ACTIVE_ITEMS'));\n\n root.dispatch('DID_GRAB_ITEM', { id: props.id, dragState });\n\n const drag = e => {\n if (!e.isPrimary) return;\n\n e.stopPropagation();\n e.preventDefault();\n\n props.dragOffset = {\n x: e.pageX - origin.x,\n y: e.pageY - origin.y,\n };\n\n // if dragged stop listening to clicks, will re-add when done dragging\n const dist =\n props.dragOffset.x * props.dragOffset.x + props.dragOffset.y * props.dragOffset.y;\n if (dist > 16 && !removedActivateListener) {\n removedActivateListener = true;\n root.element.removeEventListener('click', root.ref.handleClick);\n }\n\n root.dispatch('DID_DRAG_ITEM', { id: props.id, dragState });\n };\n\n const drop = e => {\n if (!e.isPrimary) return;\n\n props.dragOffset = {\n x: e.pageX - origin.x,\n y: e.pageY - origin.y,\n };\n\n reset();\n };\n\n const cancel = () => {\n reset();\n };\n\n const reset = () => {\n document.removeEventListener('pointercancel', cancel);\n document.removeEventListener('pointermove', drag);\n document.removeEventListener('pointerup', drop);\n\n root.dispatch('DID_DROP_ITEM', { id: props.id, dragState });\n\n // start listening to clicks again\n if (removedActivateListener) {\n setTimeout(() => root.element.addEventListener('click', root.ref.handleClick), 0);\n }\n };\n\n document.addEventListener('pointercancel', cancel);\n document.addEventListener('pointermove', drag);\n document.addEventListener('pointerup', drop);\n };\n\n root.element.addEventListener('pointerdown', grab);\n};\n\nconst route$1 = createRoute({\n DID_UPDATE_PANEL_HEIGHT: ({ root, action }) => {\n root.height = action.height;\n },\n});\n\nconst write$4 = createRoute(\n {\n DID_GRAB_ITEM: ({ root, props }) => {\n props.dragOrigin = {\n x: root.translateX,\n y: root.translateY,\n };\n },\n DID_DRAG_ITEM: ({ root }) => {\n root.element.dataset.dragState = 'drag';\n },\n DID_DROP_ITEM: ({ root, props }) => {\n props.dragOffset = null;\n props.dragOrigin = null;\n root.element.dataset.dragState = 'drop';\n },\n },\n ({ root, actions, props, shouldOptimize }) => {\n if (root.element.dataset.dragState === 'drop') {\n if (root.scaleX <= 1) {\n root.element.dataset.dragState = 'idle';\n }\n }\n\n // select last state change action\n let action = actions\n .concat()\n .filter(action => /^DID_/.test(action.type))\n .reverse()\n .find(action => StateMap[action.type]);\n\n // no need to set same state twice\n if (action && action.type !== props.currentState) {\n // set current state\n props.currentState = action.type;\n\n // set state\n root.element.dataset.filepondItemState = StateMap[props.currentState] || '';\n }\n\n // route actions\n const aspectRatio =\n root.query('GET_ITEM_PANEL_ASPECT_RATIO') || root.query('GET_PANEL_ASPECT_RATIO');\n if (!aspectRatio) {\n route$1({ root, actions, props });\n if (!root.height && root.ref.container.rect.element.height > 0) {\n root.height = root.ref.container.rect.element.height;\n }\n } else if (!shouldOptimize) {\n root.height = root.rect.element.width * aspectRatio;\n }\n\n // sync panel height with item height\n if (shouldOptimize) {\n root.ref.panel.height = null;\n }\n\n root.ref.panel.height = root.height;\n }\n);\n\nconst item = createView({\n create: create$7,\n write: write$4,\n destroy: ({ root, props }) => {\n root.element.removeEventListener('click', root.ref.handleClick);\n root.dispatch('RELEASE_ITEM', { query: props.id });\n },\n tag: 'li',\n name: 'item',\n mixins: {\n apis: [\n 'id',\n 'interactionMethod',\n 'markedForRemoval',\n 'spawnDate',\n 'dragCenter',\n 'dragOrigin',\n 'dragOffset',\n ],\n styles: ['translateX', 'translateY', 'scaleX', 'scaleY', 'opacity', 'height'],\n animations: {\n scaleX: ITEM_SCALE_SPRING,\n scaleY: ITEM_SCALE_SPRING,\n translateX: ITEM_TRANSLATE_SPRING,\n translateY: ITEM_TRANSLATE_SPRING,\n opacity: { type: 'tween', duration: 150 },\n },\n },\n});\n\nvar getItemsPerRow = (horizontalSpace, itemWidth) => {\n // add one pixel leeway, when using percentages for item width total items can be 1.99 per row\n\n return Math.max(1, Math.floor((horizontalSpace + 1) / itemWidth));\n};\n\nconst getItemIndexByPosition = (view, children, positionInView) => {\n if (!positionInView) return;\n\n const horizontalSpace = view.rect.element.width;\n // const children = view.childViews;\n const l = children.length;\n let last = null;\n\n // -1, don't move items to accomodate (either add to top or bottom)\n if (l === 0 || positionInView.top < children[0].rect.element.top) return -1;\n\n // let's get the item width\n const item = children[0];\n const itemRect = item.rect.element;\n const itemHorizontalMargin = itemRect.marginLeft + itemRect.marginRight;\n const itemWidth = itemRect.width + itemHorizontalMargin;\n const itemsPerRow = getItemsPerRow(horizontalSpace, itemWidth);\n\n // stack\n if (itemsPerRow === 1) {\n for (let index = 0; index < l; index++) {\n const child = children[index];\n const childMid = child.rect.outer.top + child.rect.element.height * 0.5;\n if (positionInView.top < childMid) {\n return index;\n }\n }\n return l;\n }\n\n // grid\n const itemVerticalMargin = itemRect.marginTop + itemRect.marginBottom;\n const itemHeight = itemRect.height + itemVerticalMargin;\n for (let index = 0; index < l; index++) {\n const indexX = index % itemsPerRow;\n const indexY = Math.floor(index / itemsPerRow);\n\n const offsetX = indexX * itemWidth;\n const offsetY = indexY * itemHeight;\n\n const itemTop = offsetY - itemRect.marginTop;\n const itemRight = offsetX + itemWidth;\n const itemBottom = offsetY + itemHeight + itemRect.marginBottom;\n\n if (positionInView.top < itemBottom && positionInView.top > itemTop) {\n if (positionInView.left < itemRight) {\n return index;\n } else if (index !== l - 1) {\n last = index;\n } else {\n last = null;\n }\n }\n }\n\n if (last !== null) {\n return last;\n }\n\n return l;\n};\n\nconst dropAreaDimensions = {\n height: 0,\n width: 0,\n get getHeight() {\n return this.height;\n },\n set setHeight(val) {\n if (this.height === 0 || val === 0) this.height = val;\n },\n get getWidth() {\n return this.width;\n },\n set setWidth(val) {\n if (this.width === 0 || val === 0) this.width = val;\n },\n setDimensions: function(height, width) {\n if (this.height === 0 || height === 0) this.height = height;\n if (this.width === 0 || width === 0) this.width = width;\n },\n};\n\nconst create$8 = ({ root }) => {\n // need to set role to list as otherwise it won't be read as a list by VoiceOver\n attr(root.element, 'role', 'list');\n\n root.ref.lastItemSpanwDate = Date.now();\n};\n\n/**\n * Inserts a new item\n * @param root\n * @param action\n */\nconst addItemView = ({ root, action }) => {\n const { id, index, interactionMethod } = action;\n\n root.ref.addIndex = index;\n\n const now = Date.now();\n let spawnDate = now;\n let opacity = 1;\n\n if (interactionMethod !== InteractionMethod.NONE) {\n opacity = 0;\n const cooldown = root.query('GET_ITEM_INSERT_INTERVAL');\n const dist = now - root.ref.lastItemSpanwDate;\n spawnDate = dist < cooldown ? now + (cooldown - dist) : now;\n }\n\n root.ref.lastItemSpanwDate = spawnDate;\n\n root.appendChildView(\n root.createChildView(\n // view type\n item,\n\n // props\n {\n spawnDate,\n id,\n opacity,\n interactionMethod,\n }\n ),\n index\n );\n};\n\nconst moveItem = (item, x, y, vx = 0, vy = 1) => {\n // set to null to remove animation while dragging\n if (item.dragOffset) {\n item.translateX = null;\n item.translateY = null;\n item.translateX = item.dragOrigin.x + item.dragOffset.x;\n item.translateY = item.dragOrigin.y + item.dragOffset.y;\n item.scaleX = 1.025;\n item.scaleY = 1.025;\n } else {\n item.translateX = x;\n item.translateY = y;\n\n if (Date.now() > item.spawnDate) {\n // reveal element\n if (item.opacity === 0) {\n introItemView(item, x, y, vx, vy);\n }\n\n // make sure is default scale every frame\n item.scaleX = 1;\n item.scaleY = 1;\n item.opacity = 1;\n }\n }\n};\n\nconst introItemView = (item, x, y, vx, vy) => {\n if (item.interactionMethod === InteractionMethod.NONE) {\n item.translateX = null;\n item.translateX = x;\n item.translateY = null;\n item.translateY = y;\n } else if (item.interactionMethod === InteractionMethod.DROP) {\n item.translateX = null;\n item.translateX = x - vx * 20;\n\n item.translateY = null;\n item.translateY = y - vy * 10;\n\n item.scaleX = 0.8;\n item.scaleY = 0.8;\n } else if (item.interactionMethod === InteractionMethod.BROWSE) {\n item.translateY = null;\n item.translateY = y - 30;\n } else if (item.interactionMethod === InteractionMethod.API) {\n item.translateX = null;\n item.translateX = x - 30;\n item.translateY = null;\n }\n};\n\n/**\n * Removes an existing item\n * @param root\n * @param action\n */\nconst removeItemView = ({ root, action }) => {\n const { id } = action;\n\n // get the view matching the given id\n const view = root.childViews.find(child => child.id === id);\n\n // if no view found, exit\n if (!view) {\n return;\n }\n\n // animate view out of view\n view.scaleX = 0.9;\n view.scaleY = 0.9;\n view.opacity = 0;\n\n // mark for removal\n view.markedForRemoval = true;\n};\n\nconst getItemHeight = child =>\n child.rect.element.height +\n child.rect.element.marginBottom * 0.5 +\n child.rect.element.marginTop * 0.5;\nconst getItemWidth = child =>\n child.rect.element.width +\n child.rect.element.marginLeft * 0.5 +\n child.rect.element.marginRight * 0.5;\n\nconst dragItem = ({ root, action }) => {\n const { id, dragState } = action;\n\n // reference to item\n const item = root.query('GET_ITEM', { id });\n\n // get the view matching the given id\n const view = root.childViews.find(child => child.id === id);\n\n const numItems = root.childViews.length;\n const oldIndex = dragState.getItemIndex(item);\n\n // if no view found, exit\n if (!view) return;\n\n const dragPosition = {\n x: view.dragOrigin.x + view.dragOffset.x + view.dragCenter.x,\n y: view.dragOrigin.y + view.dragOffset.y + view.dragCenter.y,\n };\n\n // get drag area dimensions\n const dragHeight = getItemHeight(view);\n const dragWidth = getItemWidth(view);\n\n // get rows and columns (There will always be at least one row and one column if a file is present)\n let cols = Math.floor(root.rect.outer.width / dragWidth);\n if (cols > numItems) cols = numItems;\n\n // rows are used to find when we have left the preview area bounding box\n const rows = Math.floor(numItems / cols + 1);\n\n dropAreaDimensions.setHeight = dragHeight * rows;\n dropAreaDimensions.setWidth = dragWidth * cols;\n\n // get new index of dragged item\n var location = {\n y: Math.floor(dragPosition.y / dragHeight),\n x: Math.floor(dragPosition.x / dragWidth),\n getGridIndex: function getGridIndex() {\n if (\n dragPosition.y > dropAreaDimensions.getHeight ||\n dragPosition.y < 0 ||\n dragPosition.x > dropAreaDimensions.getWidth ||\n dragPosition.x < 0\n )\n return oldIndex;\n return this.y * cols + this.x;\n },\n getColIndex: function getColIndex() {\n const items = root.query('GET_ACTIVE_ITEMS');\n const visibleChildren = root.childViews.filter(child => child.rect.element.height);\n const children = items.map(item =>\n visibleChildren.find(childView => childView.id === item.id)\n );\n const currentIndex = children.findIndex(child => child === view);\n const dragHeight = getItemHeight(view);\n const l = children.length;\n let idx = l;\n let childHeight = 0;\n let childBottom = 0;\n let childTop = 0;\n for (let i = 0; i < l; i++) {\n childHeight = getItemHeight(children[i]);\n childTop = childBottom;\n childBottom = childTop + childHeight;\n if (dragPosition.y < childBottom) {\n if (currentIndex > i) {\n if (dragPosition.y < childTop + dragHeight) {\n idx = i;\n break;\n }\n continue;\n }\n idx = i;\n break;\n }\n }\n return idx;\n },\n };\n\n // get new index\n const index = cols > 1 ? location.getGridIndex() : location.getColIndex();\n root.dispatch('MOVE_ITEM', { query: view, index });\n\n // if the index of the item changed, dispatch reorder action\n const currentIndex = dragState.getIndex();\n\n if (currentIndex === undefined || currentIndex !== index) {\n dragState.setIndex(index);\n\n if (currentIndex === undefined) return;\n\n root.dispatch('DID_REORDER_ITEMS', {\n items: root.query('GET_ACTIVE_ITEMS'),\n origin: oldIndex,\n target: index,\n });\n }\n};\n\n/**\n * Setup action routes\n */\nconst route$2 = createRoute({\n DID_ADD_ITEM: addItemView,\n DID_REMOVE_ITEM: removeItemView,\n DID_DRAG_ITEM: dragItem,\n});\n\n/**\n * Write to view\n * @param root\n * @param actions\n * @param props\n */\nconst write$5 = ({ root, props, actions, shouldOptimize }) => {\n // route actions\n route$2({ root, props, actions });\n\n const { dragCoordinates } = props;\n\n // available space on horizontal axis\n const horizontalSpace = root.rect.element.width;\n\n // only draw children that have dimensions\n const visibleChildren = root.childViews.filter(child => child.rect.element.height);\n\n // sort based on current active items\n const children = root\n .query('GET_ACTIVE_ITEMS')\n .map(item => visibleChildren.find(child => child.id === item.id))\n .filter(item => item);\n\n // get index\n const dragIndex = dragCoordinates\n ? getItemIndexByPosition(root, children, dragCoordinates)\n : null;\n\n // add index is used to reserve the dropped/added item index till the actual item is rendered\n const addIndex = root.ref.addIndex || null;\n\n // add index no longer needed till possibly next draw\n root.ref.addIndex = null;\n\n let dragIndexOffset = 0;\n let removeIndexOffset = 0;\n let addIndexOffset = 0;\n\n if (children.length === 0) return;\n\n const childRect = children[0].rect.element;\n const itemVerticalMargin = childRect.marginTop + childRect.marginBottom;\n const itemHorizontalMargin = childRect.marginLeft + childRect.marginRight;\n const itemWidth = childRect.width + itemHorizontalMargin;\n const itemHeight = childRect.height + itemVerticalMargin;\n const itemsPerRow = getItemsPerRow(horizontalSpace, itemWidth);\n\n // stack\n if (itemsPerRow === 1) {\n let offsetY = 0;\n let dragOffset = 0;\n\n children.forEach((child, index) => {\n if (dragIndex) {\n let dist = index - dragIndex;\n if (dist === -2) {\n dragOffset = -itemVerticalMargin * 0.25;\n } else if (dist === -1) {\n dragOffset = -itemVerticalMargin * 0.75;\n } else if (dist === 0) {\n dragOffset = itemVerticalMargin * 0.75;\n } else if (dist === 1) {\n dragOffset = itemVerticalMargin * 0.25;\n } else {\n dragOffset = 0;\n }\n }\n\n if (shouldOptimize) {\n child.translateX = null;\n child.translateY = null;\n }\n\n if (!child.markedForRemoval) {\n moveItem(child, 0, offsetY + dragOffset);\n }\n\n let itemHeight = child.rect.element.height + itemVerticalMargin;\n\n let visualHeight = itemHeight * (child.markedForRemoval ? child.opacity : 1);\n\n offsetY += visualHeight;\n });\n }\n // grid\n else {\n let prevX = 0;\n let prevY = 0;\n\n children.forEach((child, index) => {\n if (index === dragIndex) {\n dragIndexOffset = 1;\n }\n\n if (index === addIndex) {\n addIndexOffset += 1;\n }\n\n if (child.markedForRemoval && child.opacity < 0.5) {\n removeIndexOffset -= 1;\n }\n\n const visualIndex = index + addIndexOffset + dragIndexOffset + removeIndexOffset;\n\n const indexX = visualIndex % itemsPerRow;\n const indexY = Math.floor(visualIndex / itemsPerRow);\n\n const offsetX = indexX * itemWidth;\n const offsetY = indexY * itemHeight;\n\n const vectorX = Math.sign(offsetX - prevX);\n const vectorY = Math.sign(offsetY - prevY);\n\n prevX = offsetX;\n prevY = offsetY;\n\n if (child.markedForRemoval) return;\n\n if (shouldOptimize) {\n child.translateX = null;\n child.translateY = null;\n }\n\n moveItem(child, offsetX, offsetY, vectorX, vectorY);\n });\n }\n};\n\n/**\n * Filters actions that are meant specifically for a certain child of the list\n * @param child\n * @param actions\n */\nconst filterSetItemActions = (child, actions) =>\n actions.filter(action => {\n // if action has an id, filter out actions that don't have this child id\n if (action.data && action.data.id) {\n return child.id === action.data.id;\n }\n\n // allow all other actions\n return true;\n });\n\nconst list = createView({\n create: create$8,\n write: write$5,\n tag: 'ul',\n name: 'list',\n didWriteView: ({ root }) => {\n root.childViews\n .filter(view => view.markedForRemoval && view.opacity === 0 && view.resting)\n .forEach(view => {\n view._destroy();\n root.removeChildView(view);\n });\n },\n filterFrameActionsForChild: filterSetItemActions,\n mixins: {\n apis: ['dragCoordinates'],\n },\n});\n\nconst create$9 = ({ root, props }) => {\n root.ref.list = root.appendChildView(root.createChildView(list));\n props.dragCoordinates = null;\n props.overflowing = false;\n};\n\nconst storeDragCoordinates = ({ root, props, action }) => {\n if (!root.query('GET_ITEM_INSERT_LOCATION_FREEDOM')) return;\n props.dragCoordinates = {\n left: action.position.scopeLeft - root.ref.list.rect.element.left,\n top:\n action.position.scopeTop -\n (root.rect.outer.top + root.rect.element.marginTop + root.rect.element.scrollTop),\n };\n};\n\nconst clearDragCoordinates = ({ props }) => {\n props.dragCoordinates = null;\n};\n\nconst route$3 = createRoute({\n DID_DRAG: storeDragCoordinates,\n DID_END_DRAG: clearDragCoordinates,\n});\n\nconst write$6 = ({ root, props, actions }) => {\n // route actions\n route$3({ root, props, actions });\n\n // current drag position\n root.ref.list.dragCoordinates = props.dragCoordinates;\n\n // if currently overflowing but no longer received overflow\n if (props.overflowing && !props.overflow) {\n props.overflowing = false;\n\n // reset overflow state\n root.element.dataset.state = '';\n root.height = null;\n }\n\n // if is not overflowing currently but does receive overflow value\n if (props.overflow) {\n const newHeight = Math.round(props.overflow);\n if (newHeight !== root.height) {\n props.overflowing = true;\n root.element.dataset.state = 'overflow';\n root.height = newHeight;\n }\n }\n};\n\nconst listScroller = createView({\n create: create$9,\n write: write$6,\n name: 'list-scroller',\n mixins: {\n apis: ['overflow', 'dragCoordinates'],\n styles: ['height', 'translateY'],\n animations: {\n translateY: 'spring',\n },\n },\n});\n\nconst attrToggle = (element, name, state, enabledValue = '') => {\n if (state) {\n attr(element, name, enabledValue);\n } else {\n element.removeAttribute(name);\n }\n};\n\nconst resetFileInput = input => {\n // no value, no need to reset\n if (!input || input.value === '') {\n return;\n }\n\n try {\n // for modern browsers\n input.value = '';\n } catch (err) {}\n\n // for IE10\n if (input.value) {\n // quickly append input to temp form and reset form\n const form = createElement$1('form');\n const parentNode = input.parentNode;\n const ref = input.nextSibling;\n form.appendChild(input);\n form.reset();\n\n // re-inject input where it originally was\n if (ref) {\n parentNode.insertBefore(input, ref);\n } else {\n parentNode.appendChild(input);\n }\n }\n};\n\nconst create$a = ({ root, props }) => {\n // set id so can be referenced from outside labels\n root.element.id = `filepond--browser-${props.id}`;\n\n // set name of element (is removed when a value is set)\n attr(root.element, 'name', root.query('GET_NAME'));\n\n // we have to link this element to the status element\n attr(root.element, 'aria-controls', `filepond--assistant-${props.id}`);\n\n // set label, we use labelled by as otherwise the screenreader does not read the \"browse\" text in the label (as it has tabindex: 0)\n attr(root.element, 'aria-labelledby', `filepond--drop-label-${props.id}`);\n\n // set configurable props\n setAcceptedFileTypes({ root, action: { value: root.query('GET_ACCEPTED_FILE_TYPES') } });\n toggleAllowMultiple({ root, action: { value: root.query('GET_ALLOW_MULTIPLE') } });\n toggleDirectoryFilter({ root, action: { value: root.query('GET_ALLOW_DIRECTORIES_ONLY') } });\n toggleDisabled({ root });\n toggleRequired({ root, action: { value: root.query('GET_REQUIRED') } });\n setCaptureMethod({ root, action: { value: root.query('GET_CAPTURE_METHOD') } });\n\n // handle changes to the input field\n root.ref.handleChange = e => {\n if (!root.element.value) {\n return;\n }\n\n // extract files and move value of webkitRelativePath path to _relativePath\n const files = Array.from(root.element.files).map(file => {\n file._relativePath = file.webkitRelativePath;\n return file;\n });\n\n // we add a little delay so the OS file select window can move out of the way before we add our file\n setTimeout(() => {\n // load files\n props.onload(files);\n\n // reset input, it's just for exposing a method to drop files, should not retain any state\n resetFileInput(root.element);\n }, 250);\n };\n\n root.element.addEventListener('change', root.ref.handleChange);\n};\n\nconst setAcceptedFileTypes = ({ root, action }) => {\n if (!root.query('GET_ALLOW_SYNC_ACCEPT_ATTRIBUTE')) return;\n attrToggle(root.element, 'accept', !!action.value, action.value ? action.value.join(',') : '');\n};\n\nconst toggleAllowMultiple = ({ root, action }) => {\n attrToggle(root.element, 'multiple', action.value);\n};\n\nconst toggleDirectoryFilter = ({ root, action }) => {\n attrToggle(root.element, 'webkitdirectory', action.value);\n};\n\nconst toggleDisabled = ({ root }) => {\n const isDisabled = root.query('GET_DISABLED');\n const doesAllowBrowse = root.query('GET_ALLOW_BROWSE');\n const disableField = isDisabled || !doesAllowBrowse;\n attrToggle(root.element, 'disabled', disableField);\n};\n\nconst toggleRequired = ({ root, action }) => {\n // want to remove required, always possible\n if (!action.value) {\n attrToggle(root.element, 'required', false);\n }\n // if want to make required, only possible when zero items\n else if (root.query('GET_TOTAL_ITEMS') === 0) {\n attrToggle(root.element, 'required', true);\n }\n};\n\nconst setCaptureMethod = ({ root, action }) => {\n attrToggle(root.element, 'capture', !!action.value, action.value === true ? '' : action.value);\n};\n\nconst updateRequiredStatus = ({ root }) => {\n const { element } = root;\n // always remove the required attribute when more than zero items\n if (root.query('GET_TOTAL_ITEMS') > 0) {\n attrToggle(element, 'required', false);\n attrToggle(element, 'name', false);\n\n // still has items\n const activeItems = root.query('GET_ACTIVE_ITEMS');\n let hasInvalidField = false;\n for (let i = 0; i < activeItems.length; i++) {\n if (activeItems[i].status === ItemStatus.LOAD_ERROR) {\n hasInvalidField = true;\n }\n }\n // set validity status\n root.element.setCustomValidity(\n hasInvalidField ? root.query('GET_LABEL_INVALID_FIELD') : ''\n );\n } else {\n // add name attribute\n attrToggle(element, 'name', true, root.query('GET_NAME'));\n\n // remove any validation messages\n const shouldCheckValidity = root.query('GET_CHECK_VALIDITY');\n if (shouldCheckValidity) {\n element.setCustomValidity('');\n }\n\n // we only add required if the field has been deemed required\n if (root.query('GET_REQUIRED')) {\n attrToggle(element, 'required', true);\n }\n }\n};\n\nconst updateFieldValidityStatus = ({ root }) => {\n const shouldCheckValidity = root.query('GET_CHECK_VALIDITY');\n if (!shouldCheckValidity) return;\n root.element.setCustomValidity(root.query('GET_LABEL_INVALID_FIELD'));\n};\n\nconst browser = createView({\n tag: 'input',\n name: 'browser',\n ignoreRect: true,\n ignoreRectUpdate: true,\n attributes: {\n type: 'file',\n },\n create: create$a,\n destroy: ({ root }) => {\n root.element.removeEventListener('change', root.ref.handleChange);\n },\n write: createRoute({\n DID_LOAD_ITEM: updateRequiredStatus,\n DID_REMOVE_ITEM: updateRequiredStatus,\n DID_THROW_ITEM_INVALID: updateFieldValidityStatus,\n\n DID_SET_DISABLED: toggleDisabled,\n DID_SET_ALLOW_BROWSE: toggleDisabled,\n DID_SET_ALLOW_DIRECTORIES_ONLY: toggleDirectoryFilter,\n DID_SET_ALLOW_MULTIPLE: toggleAllowMultiple,\n DID_SET_ACCEPTED_FILE_TYPES: setAcceptedFileTypes,\n DID_SET_CAPTURE_METHOD: setCaptureMethod,\n DID_SET_REQUIRED: toggleRequired,\n }),\n});\n\nconst Key = {\n ENTER: 13,\n SPACE: 32,\n};\n\nconst create$b = ({ root, props }) => {\n // create the label and link it to the file browser\n const label = createElement$1('label');\n attr(label, 'for', `filepond--browser-${props.id}`);\n\n // use for labeling file input (aria-labelledby on file input)\n attr(label, 'id', `filepond--drop-label-${props.id}`);\n\n // handle keys\n root.ref.handleKeyDown = e => {\n const isActivationKey = e.keyCode === Key.ENTER || e.keyCode === Key.SPACE;\n if (!isActivationKey) return;\n // stops from triggering the element a second time\n e.preventDefault();\n\n // click link (will then in turn activate file input)\n root.ref.label.click();\n };\n\n root.ref.handleClick = e => {\n const isLabelClick = e.target === label || label.contains(e.target);\n\n // don't want to click twice\n if (isLabelClick) return;\n\n // click link (will then in turn activate file input)\n root.ref.label.click();\n };\n\n // attach events\n label.addEventListener('keydown', root.ref.handleKeyDown);\n root.element.addEventListener('click', root.ref.handleClick);\n\n // update\n updateLabelValue(label, props.caption);\n\n // add!\n root.appendChild(label);\n root.ref.label = label;\n};\n\nconst updateLabelValue = (label, value) => {\n label.innerHTML = value;\n const clickable = label.querySelector('.filepond--label-action');\n if (clickable) {\n attr(clickable, 'tabindex', '0');\n }\n return value;\n};\n\nconst dropLabel = createView({\n name: 'drop-label',\n ignoreRect: true,\n create: create$b,\n destroy: ({ root }) => {\n root.ref.label.addEventListener('keydown', root.ref.handleKeyDown);\n root.element.removeEventListener('click', root.ref.handleClick);\n },\n write: createRoute({\n DID_SET_LABEL_IDLE: ({ root, action }) => {\n updateLabelValue(root.ref.label, action.value);\n },\n }),\n mixins: {\n styles: ['opacity', 'translateX', 'translateY'],\n animations: {\n opacity: { type: 'tween', duration: 150 },\n translateX: 'spring',\n translateY: 'spring',\n },\n },\n});\n\nconst blob = createView({\n name: 'drip-blob',\n ignoreRect: true,\n mixins: {\n styles: ['translateX', 'translateY', 'scaleX', 'scaleY', 'opacity'],\n animations: {\n scaleX: 'spring',\n scaleY: 'spring',\n translateX: 'spring',\n translateY: 'spring',\n opacity: { type: 'tween', duration: 250 },\n },\n },\n});\n\nconst addBlob = ({ root }) => {\n const centerX = root.rect.element.width * 0.5;\n const centerY = root.rect.element.height * 0.5;\n\n root.ref.blob = root.appendChildView(\n root.createChildView(blob, {\n opacity: 0,\n scaleX: 2.5,\n scaleY: 2.5,\n translateX: centerX,\n translateY: centerY,\n })\n );\n};\n\nconst moveBlob = ({ root, action }) => {\n if (!root.ref.blob) {\n addBlob({ root });\n return;\n }\n\n root.ref.blob.translateX = action.position.scopeLeft;\n root.ref.blob.translateY = action.position.scopeTop;\n root.ref.blob.scaleX = 1;\n root.ref.blob.scaleY = 1;\n root.ref.blob.opacity = 1;\n};\n\nconst hideBlob = ({ root }) => {\n if (!root.ref.blob) {\n return;\n }\n root.ref.blob.opacity = 0;\n};\n\nconst explodeBlob = ({ root }) => {\n if (!root.ref.blob) {\n return;\n }\n root.ref.blob.scaleX = 2.5;\n root.ref.blob.scaleY = 2.5;\n root.ref.blob.opacity = 0;\n};\n\nconst write$7 = ({ root, props, actions }) => {\n route$4({ root, props, actions });\n\n const { blob } = root.ref;\n\n if (actions.length === 0 && blob && blob.opacity === 0) {\n root.removeChildView(blob);\n root.ref.blob = null;\n }\n};\n\nconst route$4 = createRoute({\n DID_DRAG: moveBlob,\n DID_DROP: explodeBlob,\n DID_END_DRAG: hideBlob,\n});\n\nconst drip = createView({\n ignoreRect: true,\n ignoreRectUpdate: true,\n name: 'drip',\n write: write$7,\n});\n\nconst setInputFiles = (element, files) => {\n try {\n // Create a DataTransfer instance and add a newly created file\n const dataTransfer = new DataTransfer();\n files.forEach(file => {\n if (file instanceof File) {\n dataTransfer.items.add(file);\n } else {\n dataTransfer.items.add(\n new File([file], file.name, {\n type: file.type,\n })\n );\n }\n });\n\n // Assign the DataTransfer files list to the file input\n element.files = dataTransfer.files;\n } catch (err) {\n return false;\n }\n return true;\n};\n\nconst create$c = ({ root }) => {\n root.ref.fields = {};\n const legend = document.createElement('legend');\n legend.textContent = 'Files';\n root.element.appendChild(legend);\n};\n\nconst getField = (root, id) => root.ref.fields[id];\n\nconst syncFieldPositionsWithItems = root => {\n root.query('GET_ACTIVE_ITEMS').forEach(item => {\n if (!root.ref.fields[item.id]) return;\n root.element.appendChild(root.ref.fields[item.id]);\n });\n};\n\nconst didReorderItems = ({ root }) => syncFieldPositionsWithItems(root);\n\nconst didAddItem = ({ root, action }) => {\n const fileItem = root.query('GET_ITEM', action.id);\n const isLocalFile = fileItem.origin === FileOrigin.LOCAL;\n const shouldUseFileInput = !isLocalFile && root.query('SHOULD_UPDATE_FILE_INPUT');\n const dataContainer = createElement$1('input');\n dataContainer.type = shouldUseFileInput ? 'file' : 'hidden';\n dataContainer.name = root.query('GET_NAME');\n root.ref.fields[action.id] = dataContainer;\n syncFieldPositionsWithItems(root);\n};\n\nconst didLoadItem$1 = ({ root, action }) => {\n const field = getField(root, action.id);\n if (!field) return;\n\n // store server ref in hidden input\n if (action.serverFileReference !== null) field.value = action.serverFileReference;\n\n // store file item in file input\n if (!root.query('SHOULD_UPDATE_FILE_INPUT')) return;\n\n const fileItem = root.query('GET_ITEM', action.id);\n setInputFiles(field, [fileItem.file]);\n};\n\nconst didPrepareOutput = ({ root, action }) => {\n // this timeout pushes the handler after 'load'\n if (!root.query('SHOULD_UPDATE_FILE_INPUT')) return;\n setTimeout(() => {\n const field = getField(root, action.id);\n if (!field) return;\n setInputFiles(field, [action.file]);\n }, 0);\n};\n\nconst didSetDisabled = ({ root }) => {\n root.element.disabled = root.query('GET_DISABLED');\n};\n\nconst didRemoveItem = ({ root, action }) => {\n const field = getField(root, action.id);\n if (!field) return;\n if (field.parentNode) field.parentNode.removeChild(field);\n delete root.ref.fields[action.id];\n};\n\n// only runs for server files. will refuse to update the value if the field\n// is a file field\nconst didDefineValue = ({ root, action }) => {\n const field = getField(root, action.id);\n if (!field) return;\n if (action.value === null) {\n // clear field value\n field.removeAttribute('value');\n } else {\n // set field value\n if (field.type != 'file') {\n field.value = action.value;\n }\n }\n syncFieldPositionsWithItems(root);\n};\n\nconst write$8 = createRoute({\n DID_SET_DISABLED: didSetDisabled,\n DID_ADD_ITEM: didAddItem,\n DID_LOAD_ITEM: didLoadItem$1,\n DID_REMOVE_ITEM: didRemoveItem,\n DID_DEFINE_VALUE: didDefineValue,\n DID_PREPARE_OUTPUT: didPrepareOutput,\n DID_REORDER_ITEMS: didReorderItems,\n DID_SORT_ITEMS: didReorderItems,\n});\n\nconst data = createView({\n tag: 'fieldset',\n name: 'data',\n create: create$c,\n write: write$8,\n ignoreRect: true,\n});\n\nconst getRootNode = element => ('getRootNode' in element ? element.getRootNode() : document);\n\nconst images = ['jpg', 'jpeg', 'png', 'gif', 'bmp', 'webp', 'svg', 'tiff'];\nconst text$1 = ['css', 'csv', 'html', 'txt'];\nconst map = {\n zip: 'zip|compressed',\n epub: 'application/epub+zip',\n};\n\nconst guesstimateMimeType = (extension = '') => {\n extension = extension.toLowerCase();\n if (images.includes(extension)) {\n return (\n 'image/' + (extension === 'jpg' ? 'jpeg' : extension === 'svg' ? 'svg+xml' : extension)\n );\n }\n if (text$1.includes(extension)) {\n return 'text/' + extension;\n }\n\n return map[extension] || '';\n};\n\nconst requestDataTransferItems = dataTransfer =>\n new Promise((resolve, reject) => {\n // try to get links from transfer, if found we'll exit immediately (unless a file is in the dataTransfer as well, this is because Firefox could represent the file as a URL and a file object at the same time)\n const links = getLinks(dataTransfer);\n if (links.length && !hasFiles(dataTransfer)) {\n return resolve(links);\n }\n // try to get files from the transfer\n getFiles(dataTransfer).then(resolve);\n });\n\n/**\n * Test if datatransfer has files\n */\nconst hasFiles = dataTransfer => {\n if (dataTransfer.files) return dataTransfer.files.length > 0;\n return false;\n};\n\n/**\n * Extracts files from a DataTransfer object\n */\nconst getFiles = dataTransfer =>\n new Promise((resolve, reject) => {\n // get the transfer items as promises\n const promisedFiles = (dataTransfer.items ? Array.from(dataTransfer.items) : [])\n\n // only keep file system items (files and directories)\n .filter(item => isFileSystemItem(item))\n\n // map each item to promise\n .map(item => getFilesFromItem(item));\n\n // if is empty, see if we can extract some info from the files property as a fallback\n if (!promisedFiles.length) {\n // TODO: test for directories (should not be allowed)\n // Use FileReader, problem is that the files property gets lost in the process\n resolve(dataTransfer.files ? Array.from(dataTransfer.files) : []);\n return;\n }\n\n // done!\n Promise.all(promisedFiles)\n .then(returnedFileGroups => {\n // flatten groups\n const files = [];\n returnedFileGroups.forEach(group => {\n files.push.apply(files, group);\n });\n\n // done (filter out empty files)!\n resolve(\n files\n .filter(file => file)\n .map(file => {\n if (!file._relativePath) file._relativePath = file.webkitRelativePath;\n return file;\n })\n );\n })\n .catch(console.error);\n });\n\nconst isFileSystemItem = item => {\n if (isEntry(item)) {\n const entry = getAsEntry(item);\n if (entry) {\n return entry.isFile || entry.isDirectory;\n }\n }\n return item.kind === 'file';\n};\n\nconst getFilesFromItem = item =>\n new Promise((resolve, reject) => {\n if (isDirectoryEntry(item)) {\n getFilesInDirectory(getAsEntry(item))\n .then(resolve)\n .catch(reject);\n return;\n }\n\n resolve([item.getAsFile()]);\n });\n\nconst getFilesInDirectory = entry =>\n new Promise((resolve, reject) => {\n const files = [];\n\n // the total entries to read\n let dirCounter = 0;\n let fileCounter = 0;\n\n const resolveIfDone = () => {\n if (fileCounter === 0 && dirCounter === 0) {\n resolve(files);\n }\n };\n\n // the recursive function\n const readEntries = dirEntry => {\n dirCounter++;\n\n const directoryReader = dirEntry.createReader();\n\n // directories are returned in batches, we need to process all batches before we're done\n const readBatch = () => {\n directoryReader.readEntries(entries => {\n if (entries.length === 0) {\n dirCounter--;\n resolveIfDone();\n return;\n }\n\n entries.forEach(entry => {\n // recursively read more directories\n if (entry.isDirectory) {\n readEntries(entry);\n } else {\n // read as file\n fileCounter++;\n\n entry.file(file => {\n const correctedFile = correctMissingFileType(file);\n if (entry.fullPath) correctedFile._relativePath = entry.fullPath;\n files.push(correctedFile);\n fileCounter--;\n resolveIfDone();\n });\n }\n });\n\n // try to get next batch of files\n readBatch();\n }, reject);\n };\n\n // read first batch of files\n readBatch();\n };\n\n // go!\n readEntries(entry);\n });\n\nconst correctMissingFileType = file => {\n if (file.type.length) return file;\n const date = file.lastModifiedDate;\n const name = file.name;\n const type = guesstimateMimeType(getExtensionFromFilename(file.name));\n if (!type.length) return file;\n file = file.slice(0, file.size, type);\n file.name = name;\n file.lastModifiedDate = date;\n return file;\n};\n\nconst isDirectoryEntry = item => isEntry(item) && (getAsEntry(item) || {}).isDirectory;\n\nconst isEntry = item => 'webkitGetAsEntry' in item;\n\nconst getAsEntry = item => item.webkitGetAsEntry();\n\n/**\n * Extracts links from a DataTransfer object\n */\nconst getLinks = dataTransfer => {\n let links = [];\n try {\n // look in meta data property\n links = getLinksFromTransferMetaData(dataTransfer);\n if (links.length) {\n return links;\n }\n links = getLinksFromTransferURLData(dataTransfer);\n } catch (e) {\n // nope nope nope (probably IE trouble)\n }\n return links;\n};\n\nconst getLinksFromTransferURLData = dataTransfer => {\n let data = dataTransfer.getData('url');\n if (typeof data === 'string' && data.length) {\n return [data];\n }\n return [];\n};\n\nconst getLinksFromTransferMetaData = dataTransfer => {\n let data = dataTransfer.getData('text/html');\n if (typeof data === 'string' && data.length) {\n const matches = data.match(/src\\s*=\\s*\"(.+?)\"/);\n if (matches) {\n return [matches[1]];\n }\n }\n return [];\n};\n\nconst dragNDropObservers = [];\n\nconst eventPosition = e => ({\n pageLeft: e.pageX,\n pageTop: e.pageY,\n scopeLeft: e.offsetX || e.layerX,\n scopeTop: e.offsetY || e.layerY,\n});\n\nconst createDragNDropClient = (element, scopeToObserve, filterElement) => {\n const observer = getDragNDropObserver(scopeToObserve);\n\n const client = {\n element,\n filterElement,\n state: null,\n ondrop: () => {},\n onenter: () => {},\n ondrag: () => {},\n onexit: () => {},\n onload: () => {},\n allowdrop: () => {},\n };\n\n client.destroy = observer.addListener(client);\n\n return client;\n};\n\nconst getDragNDropObserver = element => {\n // see if already exists, if so, return\n const observer = dragNDropObservers.find(item => item.element === element);\n if (observer) {\n return observer;\n }\n\n // create new observer, does not yet exist for this element\n const newObserver = createDragNDropObserver(element);\n dragNDropObservers.push(newObserver);\n return newObserver;\n};\n\nconst createDragNDropObserver = element => {\n const clients = [];\n\n const routes = {\n dragenter,\n dragover,\n dragleave,\n drop,\n };\n\n const handlers = {};\n\n forin(routes, (event, createHandler) => {\n handlers[event] = createHandler(element, clients);\n element.addEventListener(event, handlers[event], false);\n });\n\n const observer = {\n element,\n addListener: client => {\n // add as client\n clients.push(client);\n\n // return removeListener function\n return () => {\n // remove client\n clients.splice(clients.indexOf(client), 1);\n\n // if no more clients, clean up observer\n if (clients.length === 0) {\n dragNDropObservers.splice(dragNDropObservers.indexOf(observer), 1);\n\n forin(routes, event => {\n element.removeEventListener(event, handlers[event], false);\n });\n }\n };\n },\n };\n\n return observer;\n};\n\nconst elementFromPoint = (root, point) => {\n if (!('elementFromPoint' in root)) {\n root = document;\n }\n return root.elementFromPoint(point.x, point.y);\n};\n\nconst isEventTarget = (e, target) => {\n // get root\n const root = getRootNode(target);\n\n // get element at position\n // if root is not actual shadow DOM and does not have elementFromPoint method, use the one on document\n const elementAtPosition = elementFromPoint(root, {\n x: e.pageX - window.pageXOffset,\n y: e.pageY - window.pageYOffset,\n });\n\n // test if target is the element or if one of its children is\n return elementAtPosition === target || target.contains(elementAtPosition);\n};\n\nlet initialTarget = null;\n\nconst setDropEffect = (dataTransfer, effect) => {\n // is in try catch as IE11 will throw error if not\n try {\n dataTransfer.dropEffect = effect;\n } catch (e) {}\n};\n\nconst dragenter = (root, clients) => e => {\n e.preventDefault();\n\n initialTarget = e.target;\n\n clients.forEach(client => {\n const { element, onenter } = client;\n\n if (isEventTarget(e, element)) {\n client.state = 'enter';\n\n // fire enter event\n onenter(eventPosition(e));\n }\n });\n};\n\nconst dragover = (root, clients) => e => {\n e.preventDefault();\n\n const dataTransfer = e.dataTransfer;\n\n requestDataTransferItems(dataTransfer).then(items => {\n let overDropTarget = false;\n\n clients.some(client => {\n const { filterElement, element, onenter, onexit, ondrag, allowdrop } = client;\n\n // by default we can drop\n setDropEffect(dataTransfer, 'copy');\n\n // allow transfer of these items\n const allowsTransfer = allowdrop(items);\n\n // only used when can be dropped on page\n if (!allowsTransfer) {\n setDropEffect(dataTransfer, 'none');\n return;\n }\n\n // targetting this client\n if (isEventTarget(e, element)) {\n overDropTarget = true;\n\n // had no previous state, means we are entering this client\n if (client.state === null) {\n client.state = 'enter';\n onenter(eventPosition(e));\n return;\n }\n\n // now over element (no matter if it allows the drop or not)\n client.state = 'over';\n\n // needs to allow transfer\n if (filterElement && !allowsTransfer) {\n setDropEffect(dataTransfer, 'none');\n return;\n }\n\n // dragging\n ondrag(eventPosition(e));\n } else {\n // should be over an element to drop\n if (filterElement && !overDropTarget) {\n setDropEffect(dataTransfer, 'none');\n }\n\n // might have just left this client?\n if (client.state) {\n client.state = null;\n onexit(eventPosition(e));\n }\n }\n });\n });\n};\n\nconst drop = (root, clients) => e => {\n e.preventDefault();\n\n const dataTransfer = e.dataTransfer;\n\n requestDataTransferItems(dataTransfer).then(items => {\n clients.forEach(client => {\n const { filterElement, element, ondrop, onexit, allowdrop } = client;\n\n client.state = null;\n\n // if we're filtering on element we need to be over the element to drop\n if (filterElement && !isEventTarget(e, element)) return;\n\n // no transfer for this client\n if (!allowdrop(items)) return onexit(eventPosition(e));\n\n // we can drop these items on this client\n ondrop(eventPosition(e), items);\n });\n });\n};\n\nconst dragleave = (root, clients) => e => {\n if (initialTarget !== e.target) {\n return;\n }\n\n clients.forEach(client => {\n const { onexit } = client;\n\n client.state = null;\n\n onexit(eventPosition(e));\n });\n};\n\nconst createHopper = (scope, validateItems, options) => {\n // is now hopper scope\n scope.classList.add('filepond--hopper');\n\n // shortcuts\n const { catchesDropsOnPage, requiresDropOnElement, filterItems = items => items } = options;\n\n // create a dnd client\n const client = createDragNDropClient(\n scope,\n catchesDropsOnPage ? document.documentElement : scope,\n requiresDropOnElement\n );\n\n // current client state\n let lastState = '';\n let currentState = '';\n\n // determines if a file may be dropped\n client.allowdrop = items => {\n // TODO: if we can, throw error to indicate the items cannot by dropped\n\n return validateItems(filterItems(items));\n };\n\n client.ondrop = (position, items) => {\n const filteredItems = filterItems(items);\n\n if (!validateItems(filteredItems)) {\n api.ondragend(position);\n return;\n }\n\n currentState = 'drag-drop';\n\n api.onload(filteredItems, position);\n };\n\n client.ondrag = position => {\n api.ondrag(position);\n };\n\n client.onenter = position => {\n currentState = 'drag-over';\n\n api.ondragstart(position);\n };\n\n client.onexit = position => {\n currentState = 'drag-exit';\n\n api.ondragend(position);\n };\n\n const api = {\n updateHopperState: () => {\n if (lastState !== currentState) {\n scope.dataset.hopperState = currentState;\n lastState = currentState;\n }\n },\n onload: () => {},\n ondragstart: () => {},\n ondrag: () => {},\n ondragend: () => {},\n destroy: () => {\n // destroy client\n client.destroy();\n },\n };\n\n return api;\n};\n\nlet listening = false;\nconst listeners$1 = [];\n\nconst handlePaste = e => {\n // if is pasting in input or textarea and the target is outside of a filepond scope, ignore\n const activeEl = document.activeElement;\n const isActiveElementEditable =\n activeEl &&\n (/textarea|input/i.test(activeEl.nodeName) ||\n activeEl.getAttribute('contenteditable') === 'true');\n\n if (isActiveElementEditable) {\n // test textarea or input is contained in filepond root\n let inScope = false;\n let element = activeEl;\n while (element !== document.body) {\n if (element.classList.contains('filepond--root')) {\n inScope = true;\n break;\n }\n element = element.parentNode;\n }\n\n if (!inScope) return;\n }\n\n requestDataTransferItems(e.clipboardData).then(files => {\n // no files received\n if (!files.length) {\n return;\n }\n\n // notify listeners of received files\n listeners$1.forEach(listener => listener(files));\n });\n};\n\nconst listen = cb => {\n // can't add twice\n if (listeners$1.includes(cb)) {\n return;\n }\n\n // add initial listener\n listeners$1.push(cb);\n\n // setup paste listener for entire page\n if (listening) {\n return;\n }\n\n listening = true;\n document.addEventListener('paste', handlePaste);\n};\n\nconst unlisten = listener => {\n arrayRemove(listeners$1, listeners$1.indexOf(listener));\n\n // clean up\n if (listeners$1.length === 0) {\n document.removeEventListener('paste', handlePaste);\n listening = false;\n }\n};\n\nconst createPaster = () => {\n const cb = files => {\n api.onload(files);\n };\n\n const api = {\n destroy: () => {\n unlisten(cb);\n },\n onload: () => {},\n };\n\n listen(cb);\n\n return api;\n};\n\n/**\n * Creates the file view\n */\nconst create$d = ({ root, props }) => {\n root.element.id = `filepond--assistant-${props.id}`;\n attr(root.element, 'role', 'alert');\n attr(root.element, 'aria-live', 'polite');\n attr(root.element, 'aria-relevant', 'additions');\n};\n\nlet addFilesNotificationTimeout = null;\nlet notificationClearTimeout = null;\n\nconst filenames = [];\n\nconst assist = (root, message) => {\n root.element.textContent = message;\n};\n\nconst clear$1 = root => {\n root.element.textContent = '';\n};\n\nconst listModified = (root, filename, label) => {\n const total = root.query('GET_TOTAL_ITEMS');\n assist(\n root,\n `${label} ${filename}, ${total} ${\n total === 1\n ? root.query('GET_LABEL_FILE_COUNT_SINGULAR')\n : root.query('GET_LABEL_FILE_COUNT_PLURAL')\n }`\n );\n\n // clear group after set amount of time so the status is not read twice\n clearTimeout(notificationClearTimeout);\n notificationClearTimeout = setTimeout(() => {\n clear$1(root);\n }, 1500);\n};\n\nconst isUsingFilePond = root => root.element.parentNode.contains(document.activeElement);\n\nconst itemAdded = ({ root, action }) => {\n if (!isUsingFilePond(root)) {\n return;\n }\n\n root.element.textContent = '';\n const item = root.query('GET_ITEM', action.id);\n filenames.push(item.filename);\n\n clearTimeout(addFilesNotificationTimeout);\n addFilesNotificationTimeout = setTimeout(() => {\n listModified(root, filenames.join(', '), root.query('GET_LABEL_FILE_ADDED'));\n filenames.length = 0;\n }, 750);\n};\n\nconst itemRemoved = ({ root, action }) => {\n if (!isUsingFilePond(root)) {\n return;\n }\n\n const item = action.item;\n listModified(root, item.filename, root.query('GET_LABEL_FILE_REMOVED'));\n};\n\nconst itemProcessed = ({ root, action }) => {\n // will also notify the user when FilePond is not being used, as the user might be occupied with other activities while uploading a file\n\n const item = root.query('GET_ITEM', action.id);\n const filename = item.filename;\n const label = root.query('GET_LABEL_FILE_PROCESSING_COMPLETE');\n\n assist(root, `${filename} ${label}`);\n};\n\nconst itemProcessedUndo = ({ root, action }) => {\n const item = root.query('GET_ITEM', action.id);\n const filename = item.filename;\n const label = root.query('GET_LABEL_FILE_PROCESSING_ABORTED');\n\n assist(root, `${filename} ${label}`);\n};\n\nconst itemError = ({ root, action }) => {\n const item = root.query('GET_ITEM', action.id);\n const filename = item.filename;\n\n // will also notify the user when FilePond is not being used, as the user might be occupied with other activities while uploading a file\n\n assist(root, `${action.status.main} ${filename} ${action.status.sub}`);\n};\n\nconst assistant = createView({\n create: create$d,\n ignoreRect: true,\n ignoreRectUpdate: true,\n write: createRoute({\n DID_LOAD_ITEM: itemAdded,\n DID_REMOVE_ITEM: itemRemoved,\n DID_COMPLETE_ITEM_PROCESSING: itemProcessed,\n\n DID_ABORT_ITEM_PROCESSING: itemProcessedUndo,\n DID_REVERT_ITEM_PROCESSING: itemProcessedUndo,\n\n DID_THROW_ITEM_REMOVE_ERROR: itemError,\n DID_THROW_ITEM_LOAD_ERROR: itemError,\n DID_THROW_ITEM_INVALID: itemError,\n DID_THROW_ITEM_PROCESSING_ERROR: itemError,\n }),\n tag: 'span',\n name: 'assistant',\n});\n\nconst toCamels = (string, separator = '-') =>\n string.replace(new RegExp(`${separator}.`, 'g'), sub => sub.charAt(1).toUpperCase());\n\nconst debounce = (func, interval = 16, immidiateOnly = true) => {\n let last = Date.now();\n let timeout = null;\n\n return (...args) => {\n clearTimeout(timeout);\n\n const dist = Date.now() - last;\n\n const fn = () => {\n last = Date.now();\n func(...args);\n };\n\n if (dist < interval) {\n // we need to delay by the difference between interval and dist\n // for example: if distance is 10 ms and interval is 16 ms,\n // we need to wait an additional 6ms before calling the function)\n if (!immidiateOnly) {\n timeout = setTimeout(fn, interval - dist);\n }\n } else {\n // go!\n fn();\n }\n };\n};\n\nconst MAX_FILES_LIMIT = 1000000;\n\nconst prevent = e => e.preventDefault();\n\nconst create$e = ({ root, props }) => {\n // Add id\n const id = root.query('GET_ID');\n if (id) {\n root.element.id = id;\n }\n\n // Add className\n const className = root.query('GET_CLASS_NAME');\n if (className) {\n className\n .split(' ')\n .filter(name => name.length)\n .forEach(name => {\n root.element.classList.add(name);\n });\n }\n\n // Field label\n root.ref.label = root.appendChildView(\n root.createChildView(dropLabel, {\n ...props,\n translateY: null,\n caption: root.query('GET_LABEL_IDLE'),\n })\n );\n\n // List of items\n root.ref.list = root.appendChildView(root.createChildView(listScroller, { translateY: null }));\n\n // Background panel\n root.ref.panel = root.appendChildView(root.createChildView(panel, { name: 'panel-root' }));\n\n // Assistant notifies assistive tech when content changes\n root.ref.assistant = root.appendChildView(root.createChildView(assistant, { ...props }));\n\n // Data\n root.ref.data = root.appendChildView(root.createChildView(data, { ...props }));\n\n // Measure (tests if fixed height was set)\n // DOCTYPE needs to be set for this to work\n root.ref.measure = createElement$1('div');\n root.ref.measure.style.height = '100%';\n root.element.appendChild(root.ref.measure);\n\n // information on the root height or fixed height status\n root.ref.bounds = null;\n\n // apply initial style properties\n root.query('GET_STYLES')\n .filter(style => !isEmpty(style.value))\n .map(({ name, value }) => {\n root.element.dataset[name] = value;\n });\n\n // determine if width changed\n root.ref.widthPrevious = null;\n root.ref.widthUpdated = debounce(() => {\n root.ref.updateHistory = [];\n root.dispatch('DID_RESIZE_ROOT');\n }, 250);\n\n // history of updates\n root.ref.previousAspectRatio = null;\n root.ref.updateHistory = [];\n\n // prevent scrolling and zooming on iOS (only if supports pointer events, for then we can enable reorder)\n const canHover = window.matchMedia('(pointer: fine) and (hover: hover)').matches;\n const hasPointerEvents = 'PointerEvent' in window;\n if (root.query('GET_ALLOW_REORDER') && hasPointerEvents && !canHover) {\n root.element.addEventListener('touchmove', prevent, { passive: false });\n root.element.addEventListener('gesturestart', prevent);\n }\n\n // add credits\n const credits = root.query('GET_CREDITS');\n const hasCredits = credits.length === 2;\n if (hasCredits) {\n const frag = document.createElement('a');\n frag.className = 'filepond--credits';\n frag.href = credits[0];\n frag.tabIndex = -1;\n frag.target = '_blank';\n frag.rel = 'noopener noreferrer nofollow';\n frag.textContent = credits[1];\n root.element.appendChild(frag);\n root.ref.credits = frag;\n }\n};\n\nconst write$9 = ({ root, props, actions }) => {\n // route actions\n route$5({ root, props, actions });\n\n // apply style properties\n actions\n .filter(action => /^DID_SET_STYLE_/.test(action.type))\n .filter(action => !isEmpty(action.data.value))\n .map(({ type, data }) => {\n const name = toCamels(type.substring(8).toLowerCase(), '_');\n root.element.dataset[name] = data.value;\n root.invalidateLayout();\n });\n\n if (root.rect.element.hidden) return;\n\n if (root.rect.element.width !== root.ref.widthPrevious) {\n root.ref.widthPrevious = root.rect.element.width;\n root.ref.widthUpdated();\n }\n\n // get box bounds, we do this only once\n let bounds = root.ref.bounds;\n if (!bounds) {\n bounds = root.ref.bounds = calculateRootBoundingBoxHeight(root);\n\n // destroy measure element\n root.element.removeChild(root.ref.measure);\n root.ref.measure = null;\n }\n\n // get quick references to various high level parts of the upload tool\n const { hopper, label, list, panel } = root.ref;\n\n // sets correct state to hopper scope\n if (hopper) {\n hopper.updateHopperState();\n }\n\n // bool to indicate if we're full or not\n const aspectRatio = root.query('GET_PANEL_ASPECT_RATIO');\n const isMultiItem = root.query('GET_ALLOW_MULTIPLE');\n const totalItems = root.query('GET_TOTAL_ITEMS');\n const maxItems = isMultiItem ? root.query('GET_MAX_FILES') || MAX_FILES_LIMIT : 1;\n const atMaxCapacity = totalItems === maxItems;\n\n // action used to add item\n const addAction = actions.find(action => action.type === 'DID_ADD_ITEM');\n\n // if reached max capacity and we've just reached it\n if (atMaxCapacity && addAction) {\n // get interaction type\n const interactionMethod = addAction.data.interactionMethod;\n\n // hide label\n label.opacity = 0;\n\n if (isMultiItem) {\n label.translateY = -40;\n } else {\n if (interactionMethod === InteractionMethod.API) {\n label.translateX = 40;\n } else if (interactionMethod === InteractionMethod.BROWSE) {\n label.translateY = 40;\n } else {\n label.translateY = 30;\n }\n }\n } else if (!atMaxCapacity) {\n label.opacity = 1;\n label.translateX = 0;\n label.translateY = 0;\n }\n\n const listItemMargin = calculateListItemMargin(root);\n\n const listHeight = calculateListHeight(root);\n\n const labelHeight = label.rect.element.height;\n const currentLabelHeight = !isMultiItem || atMaxCapacity ? 0 : labelHeight;\n\n const listMarginTop = atMaxCapacity ? list.rect.element.marginTop : 0;\n const listMarginBottom = totalItems === 0 ? 0 : list.rect.element.marginBottom;\n\n const visualHeight = currentLabelHeight + listMarginTop + listHeight.visual + listMarginBottom;\n const boundsHeight = currentLabelHeight + listMarginTop + listHeight.bounds + listMarginBottom;\n\n // link list to label bottom position\n list.translateY =\n Math.max(0, currentLabelHeight - list.rect.element.marginTop) - listItemMargin.top;\n\n if (aspectRatio) {\n // fixed aspect ratio\n\n // calculate height based on width\n const width = root.rect.element.width;\n const height = width * aspectRatio;\n\n // clear history if aspect ratio has changed\n if (aspectRatio !== root.ref.previousAspectRatio) {\n root.ref.previousAspectRatio = aspectRatio;\n root.ref.updateHistory = [];\n }\n\n // remember this width\n const history = root.ref.updateHistory;\n history.push(width);\n\n const MAX_BOUNCES = 2;\n if (history.length > MAX_BOUNCES * 2) {\n const l = history.length;\n const bottom = l - 10;\n let bounces = 0;\n for (let i = l; i >= bottom; i--) {\n if (history[i] === history[i - 2]) {\n bounces++;\n }\n\n if (bounces >= MAX_BOUNCES) {\n // dont adjust height\n return;\n }\n }\n }\n\n // fix height of panel so it adheres to aspect ratio\n panel.scalable = false;\n panel.height = height;\n\n // available height for list\n const listAvailableHeight =\n // the height of the panel minus the label height\n height -\n currentLabelHeight -\n // the room we leave open between the end of the list and the panel bottom\n (listMarginBottom - listItemMargin.bottom) -\n // if we're full we need to leave some room between the top of the panel and the list\n (atMaxCapacity ? listMarginTop : 0);\n\n if (listHeight.visual > listAvailableHeight) {\n list.overflow = listAvailableHeight;\n } else {\n list.overflow = null;\n }\n\n // set container bounds (so pushes siblings downwards)\n root.height = height;\n } else if (bounds.fixedHeight) {\n // fixed height\n\n // fix height of panel\n panel.scalable = false;\n\n // available height for list\n const listAvailableHeight =\n // the height of the panel minus the label height\n bounds.fixedHeight -\n currentLabelHeight -\n // the room we leave open between the end of the list and the panel bottom\n (listMarginBottom - listItemMargin.bottom) -\n // if we're full we need to leave some room between the top of the panel and the list\n (atMaxCapacity ? listMarginTop : 0);\n\n // set list height\n if (listHeight.visual > listAvailableHeight) {\n list.overflow = listAvailableHeight;\n } else {\n list.overflow = null;\n }\n\n // no need to set container bounds as these are handles by CSS fixed height\n } else if (bounds.cappedHeight) {\n // max-height\n\n // not a fixed height panel\n const isCappedHeight = visualHeight >= bounds.cappedHeight;\n const panelHeight = Math.min(bounds.cappedHeight, visualHeight);\n panel.scalable = true;\n panel.height = isCappedHeight\n ? panelHeight\n : panelHeight - listItemMargin.top - listItemMargin.bottom;\n\n // available height for list\n const listAvailableHeight =\n // the height of the panel minus the label height\n panelHeight -\n currentLabelHeight -\n // the room we leave open between the end of the list and the panel bottom\n (listMarginBottom - listItemMargin.bottom) -\n // if we're full we need to leave some room between the top of the panel and the list\n (atMaxCapacity ? listMarginTop : 0);\n\n // set list height (if is overflowing)\n if (visualHeight > bounds.cappedHeight && listHeight.visual > listAvailableHeight) {\n list.overflow = listAvailableHeight;\n } else {\n list.overflow = null;\n }\n\n // set container bounds (so pushes siblings downwards)\n root.height = Math.min(\n bounds.cappedHeight,\n boundsHeight - listItemMargin.top - listItemMargin.bottom\n );\n } else {\n // flexible height\n\n // not a fixed height panel\n const itemMargin = totalItems > 0 ? listItemMargin.top + listItemMargin.bottom : 0;\n panel.scalable = true;\n panel.height = Math.max(labelHeight, visualHeight - itemMargin);\n\n // set container bounds (so pushes siblings downwards)\n root.height = Math.max(labelHeight, boundsHeight - itemMargin);\n }\n\n // move credits to bottom\n if (root.ref.credits && panel.heightCurrent)\n root.ref.credits.style.transform = `translateY(${panel.heightCurrent}px)`;\n};\n\nconst calculateListItemMargin = root => {\n const item = root.ref.list.childViews[0].childViews[0];\n return item\n ? {\n top: item.rect.element.marginTop,\n bottom: item.rect.element.marginBottom,\n }\n : {\n top: 0,\n bottom: 0,\n };\n};\n\nconst calculateListHeight = root => {\n let visual = 0;\n let bounds = 0;\n\n // get file list reference\n const scrollList = root.ref.list;\n const itemList = scrollList.childViews[0];\n const visibleChildren = itemList.childViews.filter(child => child.rect.element.height);\n const children = root\n .query('GET_ACTIVE_ITEMS')\n .map(item => visibleChildren.find(child => child.id === item.id))\n .filter(item => item);\n\n // no children, done!\n if (children.length === 0) return { visual, bounds };\n\n const horizontalSpace = itemList.rect.element.width;\n const dragIndex = getItemIndexByPosition(itemList, children, scrollList.dragCoordinates);\n\n const childRect = children[0].rect.element;\n\n const itemVerticalMargin = childRect.marginTop + childRect.marginBottom;\n const itemHorizontalMargin = childRect.marginLeft + childRect.marginRight;\n\n const itemWidth = childRect.width + itemHorizontalMargin;\n const itemHeight = childRect.height + itemVerticalMargin;\n\n const newItem = typeof dragIndex !== 'undefined' && dragIndex >= 0 ? 1 : 0;\n const removedItem = children.find(child => child.markedForRemoval && child.opacity < 0.45)\n ? -1\n : 0;\n const verticalItemCount = children.length + newItem + removedItem;\n const itemsPerRow = getItemsPerRow(horizontalSpace, itemWidth);\n\n // stack\n if (itemsPerRow === 1) {\n children.forEach(item => {\n const height = item.rect.element.height + itemVerticalMargin;\n bounds += height;\n visual += height * item.opacity;\n });\n }\n // grid\n else {\n bounds = Math.ceil(verticalItemCount / itemsPerRow) * itemHeight;\n visual = bounds;\n }\n\n return { visual, bounds };\n};\n\nconst calculateRootBoundingBoxHeight = root => {\n const height = root.ref.measureHeight || null;\n const cappedHeight = parseInt(root.style.maxHeight, 10) || null;\n const fixedHeight = height === 0 ? null : height;\n\n return {\n cappedHeight,\n fixedHeight,\n };\n};\n\nconst exceedsMaxFiles = (root, items) => {\n const allowReplace = root.query('GET_ALLOW_REPLACE');\n const allowMultiple = root.query('GET_ALLOW_MULTIPLE');\n const totalItems = root.query('GET_TOTAL_ITEMS');\n let maxItems = root.query('GET_MAX_FILES');\n\n // total amount of items being dragged\n const totalBrowseItems = items.length;\n\n // if does not allow multiple items and dragging more than one item\n if (!allowMultiple && totalBrowseItems > 1) {\n root.dispatch('DID_THROW_MAX_FILES', {\n source: items,\n error: createResponse('warning', 0, 'Max files'),\n });\n return true;\n }\n\n // limit max items to one if not allowed to drop multiple items\n maxItems = allowMultiple ? maxItems : 1;\n\n if (!allowMultiple && allowReplace) {\n // There is only one item, so there is room to replace or add an item\n return false;\n }\n\n // no more room?\n const hasMaxItems = isInt(maxItems);\n if (hasMaxItems && totalItems + totalBrowseItems > maxItems) {\n root.dispatch('DID_THROW_MAX_FILES', {\n source: items,\n error: createResponse('warning', 0, 'Max files'),\n });\n return true;\n }\n\n return false;\n};\n\nconst getDragIndex = (list, children, position) => {\n const itemList = list.childViews[0];\n return getItemIndexByPosition(itemList, children, {\n left: position.scopeLeft - itemList.rect.element.left,\n top:\n position.scopeTop -\n (list.rect.outer.top + list.rect.element.marginTop + list.rect.element.scrollTop),\n });\n};\n\n/**\n * Enable or disable file drop functionality\n */\nconst toggleDrop = root => {\n const isAllowed = root.query('GET_ALLOW_DROP');\n const isDisabled = root.query('GET_DISABLED');\n const enabled = isAllowed && !isDisabled;\n if (enabled && !root.ref.hopper) {\n const hopper = createHopper(\n root.element,\n items => {\n // allow quick validation of dropped items\n const beforeDropFile = root.query('GET_BEFORE_DROP_FILE') || (() => true);\n\n // all items should be validated by all filters as valid\n const dropValidation = root.query('GET_DROP_VALIDATION');\n return dropValidation\n ? items.every(\n item =>\n applyFilters('ALLOW_HOPPER_ITEM', item, {\n query: root.query,\n }).every(result => result === true) && beforeDropFile(item)\n )\n : true;\n },\n {\n filterItems: items => {\n const ignoredFiles = root.query('GET_IGNORED_FILES');\n return items.filter(item => {\n if (isFile(item)) {\n return !ignoredFiles.includes(item.name.toLowerCase());\n }\n return true;\n });\n },\n catchesDropsOnPage: root.query('GET_DROP_ON_PAGE'),\n requiresDropOnElement: root.query('GET_DROP_ON_ELEMENT'),\n }\n );\n\n hopper.onload = (items, position) => {\n // get item children elements and sort based on list sort\n const list = root.ref.list.childViews[0];\n const visibleChildren = list.childViews.filter(child => child.rect.element.height);\n const children = root\n .query('GET_ACTIVE_ITEMS')\n .map(item => visibleChildren.find(child => child.id === item.id))\n .filter(item => item);\n\n applyFilterChain('ADD_ITEMS', items, { dispatch: root.dispatch }).then(queue => {\n // these files don't fit so stop here\n if (exceedsMaxFiles(root, queue)) return false;\n\n // go\n root.dispatch('ADD_ITEMS', {\n items: queue,\n index: getDragIndex(root.ref.list, children, position),\n interactionMethod: InteractionMethod.DROP,\n });\n });\n\n root.dispatch('DID_DROP', { position });\n\n root.dispatch('DID_END_DRAG', { position });\n };\n\n hopper.ondragstart = position => {\n root.dispatch('DID_START_DRAG', { position });\n };\n\n hopper.ondrag = debounce(position => {\n root.dispatch('DID_DRAG', { position });\n });\n\n hopper.ondragend = position => {\n root.dispatch('DID_END_DRAG', { position });\n };\n\n root.ref.hopper = hopper;\n\n root.ref.drip = root.appendChildView(root.createChildView(drip));\n } else if (!enabled && root.ref.hopper) {\n root.ref.hopper.destroy();\n root.ref.hopper = null;\n root.removeChildView(root.ref.drip);\n }\n};\n\n/**\n * Enable or disable browse functionality\n */\nconst toggleBrowse = (root, props) => {\n const isAllowed = root.query('GET_ALLOW_BROWSE');\n const isDisabled = root.query('GET_DISABLED');\n const enabled = isAllowed && !isDisabled;\n if (enabled && !root.ref.browser) {\n root.ref.browser = root.appendChildView(\n root.createChildView(browser, {\n ...props,\n onload: items => {\n applyFilterChain('ADD_ITEMS', items, {\n dispatch: root.dispatch,\n }).then(queue => {\n // these files don't fit so stop here\n if (exceedsMaxFiles(root, queue)) return false;\n\n // add items!\n root.dispatch('ADD_ITEMS', {\n items: queue,\n index: -1,\n interactionMethod: InteractionMethod.BROWSE,\n });\n });\n },\n }),\n 0\n );\n } else if (!enabled && root.ref.browser) {\n root.removeChildView(root.ref.browser);\n root.ref.browser = null;\n }\n};\n\n/**\n * Enable or disable paste functionality\n */\nconst togglePaste = root => {\n const isAllowed = root.query('GET_ALLOW_PASTE');\n const isDisabled = root.query('GET_DISABLED');\n const enabled = isAllowed && !isDisabled;\n if (enabled && !root.ref.paster) {\n root.ref.paster = createPaster();\n root.ref.paster.onload = items => {\n applyFilterChain('ADD_ITEMS', items, { dispatch: root.dispatch }).then(queue => {\n // these files don't fit so stop here\n if (exceedsMaxFiles(root, queue)) return false;\n\n // add items!\n root.dispatch('ADD_ITEMS', {\n items: queue,\n index: -1,\n interactionMethod: InteractionMethod.PASTE,\n });\n });\n };\n } else if (!enabled && root.ref.paster) {\n root.ref.paster.destroy();\n root.ref.paster = null;\n }\n};\n\n/**\n * Route actions\n */\nconst route$5 = createRoute({\n DID_SET_ALLOW_BROWSE: ({ root, props }) => {\n toggleBrowse(root, props);\n },\n DID_SET_ALLOW_DROP: ({ root }) => {\n toggleDrop(root);\n },\n DID_SET_ALLOW_PASTE: ({ root }) => {\n togglePaste(root);\n },\n DID_SET_DISABLED: ({ root, props }) => {\n toggleDrop(root);\n togglePaste(root);\n toggleBrowse(root, props);\n const isDisabled = root.query('GET_DISABLED');\n if (isDisabled) {\n root.element.dataset.disabled = 'disabled';\n } else {\n // delete root.element.dataset.disabled; <= this does not work on iOS 10\n root.element.removeAttribute('data-disabled');\n }\n },\n});\n\nconst root = createView({\n name: 'root',\n read: ({ root }) => {\n if (root.ref.measure) {\n root.ref.measureHeight = root.ref.measure.offsetHeight;\n }\n },\n create: create$e,\n write: write$9,\n destroy: ({ root }) => {\n if (root.ref.paster) {\n root.ref.paster.destroy();\n }\n if (root.ref.hopper) {\n root.ref.hopper.destroy();\n }\n root.element.removeEventListener('touchmove', prevent);\n root.element.removeEventListener('gesturestart', prevent);\n },\n mixins: {\n styles: ['height'],\n },\n});\n\n// creates the app\nconst createApp = (initialOptions = {}) => {\n // let element\n let originalElement = null;\n\n // get default options\n const defaultOptions = getOptions();\n\n // create the data store, this will contain all our app info\n const store = createStore(\n // initial state (should be serializable)\n createInitialState(defaultOptions),\n\n // queries\n [queries, createOptionQueries(defaultOptions)],\n\n // action handlers\n [actions, createOptionActions(defaultOptions)]\n );\n\n // set initial options\n store.dispatch('SET_OPTIONS', { options: initialOptions });\n\n // kick thread if visibility changes\n const visibilityHandler = () => {\n if (document.hidden) return;\n store.dispatch('KICK');\n };\n document.addEventListener('visibilitychange', visibilityHandler);\n\n // re-render on window resize start and finish\n let resizeDoneTimer = null;\n let isResizing = false;\n let isResizingHorizontally = false;\n let initialWindowWidth = null;\n let currentWindowWidth = null;\n const resizeHandler = () => {\n if (!isResizing) {\n isResizing = true;\n }\n clearTimeout(resizeDoneTimer);\n resizeDoneTimer = setTimeout(() => {\n isResizing = false;\n initialWindowWidth = null;\n currentWindowWidth = null;\n if (isResizingHorizontally) {\n isResizingHorizontally = false;\n store.dispatch('DID_STOP_RESIZE');\n }\n }, 500);\n };\n window.addEventListener('resize', resizeHandler);\n\n // render initial view\n const view = root(store, { id: getUniqueId() });\n\n //\n // PRIVATE API -------------------------------------------------------------------------------------\n //\n let isResting = false;\n let isHidden = false;\n\n const readWriteApi = {\n // necessary for update loop\n\n /**\n * Reads from dom (never call manually)\n * @private\n */\n _read: () => {\n // test if we're resizing horizontally\n // TODO: see if we can optimize this by measuring root rect\n if (isResizing) {\n currentWindowWidth = window.innerWidth;\n if (!initialWindowWidth) {\n initialWindowWidth = currentWindowWidth;\n }\n\n if (!isResizingHorizontally && currentWindowWidth !== initialWindowWidth) {\n store.dispatch('DID_START_RESIZE');\n isResizingHorizontally = true;\n }\n }\n\n if (isHidden && isResting) {\n // test if is no longer hidden\n isResting = view.element.offsetParent === null;\n }\n\n // if resting, no need to read as numbers will still all be correct\n if (isResting) return;\n\n // read view data\n view._read();\n\n // if is hidden we need to know so we exit rest mode when revealed\n isHidden = view.rect.element.hidden;\n },\n\n /**\n * Writes to dom (never call manually)\n * @private\n */\n _write: ts => {\n // get all actions from store\n const actions = store\n .processActionQueue()\n\n // filter out set actions (these will automatically trigger DID_SET)\n .filter(action => !/^SET_/.test(action.type));\n\n // if was idling and no actions stop here\n if (isResting && !actions.length) return;\n\n // some actions might trigger events\n routeActionsToEvents(actions);\n\n // update the view\n isResting = view._write(ts, actions, isResizingHorizontally);\n\n // will clean up all archived items\n removeReleasedItems(store.query('GET_ITEMS'));\n\n // now idling\n if (isResting) {\n store.processDispatchQueue();\n }\n },\n };\n\n //\n // EXPOSE EVENTS -------------------------------------------------------------------------------------\n //\n const createEvent = name => data => {\n // create default event\n const event = {\n type: name,\n };\n\n // no data to add\n if (!data) {\n return event;\n }\n\n // copy relevant props\n if (data.hasOwnProperty('error')) {\n event.error = data.error ? { ...data.error } : null;\n }\n\n if (data.status) {\n event.status = { ...data.status };\n }\n\n if (data.file) {\n event.output = data.file;\n }\n\n // only source is available, else add item if possible\n if (data.source) {\n event.file = data.source;\n } else if (data.item || data.id) {\n const item = data.item ? data.item : store.query('GET_ITEM', data.id);\n event.file = item ? createItemAPI(item) : null;\n }\n\n // map all items in a possible items array\n if (data.items) {\n event.items = data.items.map(createItemAPI);\n }\n\n // if this is a progress event add the progress amount\n if (/progress/.test(name)) {\n event.progress = data.progress;\n }\n\n // copy relevant props\n if (data.hasOwnProperty('origin') && data.hasOwnProperty('target')) {\n event.origin = data.origin;\n event.target = data.target;\n }\n\n return event;\n };\n\n const eventRoutes = {\n DID_DESTROY: createEvent('destroy'),\n\n DID_INIT: createEvent('init'),\n\n DID_THROW_MAX_FILES: createEvent('warning'),\n\n DID_INIT_ITEM: createEvent('initfile'),\n DID_START_ITEM_LOAD: createEvent('addfilestart'),\n DID_UPDATE_ITEM_LOAD_PROGRESS: createEvent('addfileprogress'),\n DID_LOAD_ITEM: createEvent('addfile'),\n\n DID_THROW_ITEM_INVALID: [createEvent('error'), createEvent('addfile')],\n\n DID_THROW_ITEM_LOAD_ERROR: [createEvent('error'), createEvent('addfile')],\n\n DID_THROW_ITEM_REMOVE_ERROR: [createEvent('error'), createEvent('removefile')],\n\n DID_PREPARE_OUTPUT: createEvent('preparefile'),\n\n DID_START_ITEM_PROCESSING: createEvent('processfilestart'),\n DID_UPDATE_ITEM_PROCESS_PROGRESS: createEvent('processfileprogress'),\n DID_ABORT_ITEM_PROCESSING: createEvent('processfileabort'),\n DID_COMPLETE_ITEM_PROCESSING: createEvent('processfile'),\n DID_COMPLETE_ITEM_PROCESSING_ALL: createEvent('processfiles'),\n DID_REVERT_ITEM_PROCESSING: createEvent('processfilerevert'),\n\n DID_THROW_ITEM_PROCESSING_ERROR: [createEvent('error'), createEvent('processfile')],\n\n DID_REMOVE_ITEM: createEvent('removefile'),\n\n DID_UPDATE_ITEMS: createEvent('updatefiles'),\n\n DID_ACTIVATE_ITEM: createEvent('activatefile'),\n\n DID_REORDER_ITEMS: createEvent('reorderfiles'),\n };\n\n const exposeEvent = event => {\n // create event object to be dispatched\n const detail = { pond: exports, ...event };\n delete detail.type;\n view.element.dispatchEvent(\n new CustomEvent(`FilePond:${event.type}`, {\n // event info\n detail,\n\n // event behaviour\n bubbles: true,\n cancelable: true,\n composed: true, // triggers listeners outside of shadow root\n })\n );\n\n // event object to params used for `on()` event handlers and callbacks `oninit()`\n const params = [];\n\n // if is possible error event, make it the first param\n if (event.hasOwnProperty('error')) {\n params.push(event.error);\n }\n\n // file is always section\n if (event.hasOwnProperty('file')) {\n params.push(event.file);\n }\n\n // append other props\n const filtered = ['type', 'error', 'file'];\n Object.keys(event)\n .filter(key => !filtered.includes(key))\n .forEach(key => params.push(event[key]));\n\n // on(type, () => { })\n exports.fire(event.type, ...params);\n\n // oninit = () => {}\n const handler = store.query(`GET_ON${event.type.toUpperCase()}`);\n if (handler) {\n handler(...params);\n }\n };\n\n const routeActionsToEvents = actions => {\n if (!actions.length) return;\n actions\n .filter(action => eventRoutes[action.type])\n .forEach(action => {\n const routes = eventRoutes[action.type];\n (Array.isArray(routes) ? routes : [routes]).forEach(route => {\n // this isn't fantastic, but because of the stacking of settimeouts plugins can handle the did_load before the did_init\n if (action.type === 'DID_INIT_ITEM') {\n exposeEvent(route(action.data));\n } else {\n setTimeout(() => {\n exposeEvent(route(action.data));\n }, 0);\n }\n });\n });\n };\n\n //\n // PUBLIC API -------------------------------------------------------------------------------------\n //\n const setOptions = options => store.dispatch('SET_OPTIONS', { options });\n\n const getFile = query => store.query('GET_ACTIVE_ITEM', query);\n\n const prepareFile = query =>\n new Promise((resolve, reject) => {\n store.dispatch('REQUEST_ITEM_PREPARE', {\n query,\n success: item => {\n resolve(item);\n },\n failure: error => {\n reject(error);\n },\n });\n });\n\n const addFile = (source, options = {}) =>\n new Promise((resolve, reject) => {\n addFiles([{ source, options }], { index: options.index })\n .then(items => resolve(items && items[0]))\n .catch(reject);\n });\n\n const isFilePondFile = obj => obj.file && obj.id;\n\n const removeFile = (query, options) => {\n // if only passed options\n if (typeof query === 'object' && !isFilePondFile(query) && !options) {\n options = query;\n query = undefined;\n }\n\n // request item removal\n store.dispatch('REMOVE_ITEM', { ...options, query });\n\n // see if item has been removed\n return store.query('GET_ACTIVE_ITEM', query) === null;\n };\n\n const addFiles = (...args) =>\n new Promise((resolve, reject) => {\n const sources = [];\n const options = {};\n\n // user passed a sources array\n if (isArray(args[0])) {\n sources.push.apply(sources, args[0]);\n Object.assign(options, args[1] || {});\n } else {\n // user passed sources as arguments, last one might be options object\n const lastArgument = args[args.length - 1];\n if (typeof lastArgument === 'object' && !(lastArgument instanceof Blob)) {\n Object.assign(options, args.pop());\n }\n\n // add rest to sources\n sources.push(...args);\n }\n\n store.dispatch('ADD_ITEMS', {\n items: sources,\n index: options.index,\n interactionMethod: InteractionMethod.API,\n success: resolve,\n failure: reject,\n });\n });\n\n const getFiles = () => store.query('GET_ACTIVE_ITEMS');\n\n const processFile = query =>\n new Promise((resolve, reject) => {\n store.dispatch('REQUEST_ITEM_PROCESSING', {\n query,\n success: item => {\n resolve(item);\n },\n failure: error => {\n reject(error);\n },\n });\n });\n\n const prepareFiles = (...args) => {\n const queries = Array.isArray(args[0]) ? args[0] : args;\n const items = queries.length ? queries : getFiles();\n return Promise.all(items.map(prepareFile));\n };\n\n const processFiles = (...args) => {\n const queries = Array.isArray(args[0]) ? args[0] : args;\n if (!queries.length) {\n const files = getFiles().filter(\n item =>\n !(item.status === ItemStatus.IDLE && item.origin === FileOrigin.LOCAL) &&\n item.status !== ItemStatus.PROCESSING &&\n item.status !== ItemStatus.PROCESSING_COMPLETE &&\n item.status !== ItemStatus.PROCESSING_REVERT_ERROR\n );\n return Promise.all(files.map(processFile));\n }\n return Promise.all(queries.map(processFile));\n };\n\n const removeFiles = (...args) => {\n const queries = Array.isArray(args[0]) ? args[0] : args;\n\n let options;\n if (typeof queries[queries.length - 1] === 'object') {\n options = queries.pop();\n } else if (Array.isArray(args[0])) {\n options = args[1];\n }\n\n const files = getFiles();\n\n if (!queries.length) return Promise.all(files.map(file => removeFile(file, options)));\n\n // when removing by index the indexes shift after each file removal so we need to convert indexes to ids\n const mappedQueries = queries\n .map(query => (isNumber(query) ? (files[query] ? files[query].id : null) : query))\n .filter(query => query);\n\n return mappedQueries.map(q => removeFile(q, options));\n };\n\n const exports = {\n // supports events\n ...on(),\n\n // inject private api methods\n ...readWriteApi,\n\n // inject all getters and setters\n ...createOptionAPI(store, defaultOptions),\n\n /**\n * Override options defined in options object\n * @param options\n */\n setOptions,\n\n /**\n * Load the given file\n * @param source - the source of the file (either a File, base64 data uri or url)\n * @param options - object, { index: 0 }\n */\n addFile,\n\n /**\n * Load the given files\n * @param sources - the sources of the files to load\n * @param options - object, { index: 0 }\n */\n addFiles,\n\n /**\n * Returns the file objects matching the given query\n * @param query { string, number, null }\n */\n getFile,\n\n /**\n * Upload file with given name\n * @param query { string, number, null }\n */\n processFile,\n\n /**\n * Request prepare output for file with given name\n * @param query { string, number, null }\n */\n prepareFile,\n\n /**\n * Removes a file by its name\n * @param query { string, number, null }\n */\n removeFile,\n\n /**\n * Moves a file to a new location in the files list\n */\n moveFile: (query, index) => store.dispatch('MOVE_ITEM', { query, index }),\n\n /**\n * Returns all files (wrapped in public api)\n */\n getFiles,\n\n /**\n * Starts uploading all files\n */\n processFiles,\n\n /**\n * Clears all files from the files list\n */\n removeFiles,\n\n /**\n * Starts preparing output of all files\n */\n prepareFiles,\n\n /**\n * Sort list of files\n */\n sort: compare => store.dispatch('SORT', { compare }),\n\n /**\n * Browse the file system for a file\n */\n browse: () => {\n // needs to be trigger directly as user action needs to be traceable (is not traceable in requestAnimationFrame)\n var input = view.element.querySelector('input[type=file]');\n if (input) {\n input.click();\n }\n },\n\n /**\n * Destroys the app\n */\n destroy: () => {\n // request destruction\n exports.fire('destroy', view.element);\n\n // stop active processes (file uploads, fetches, stuff like that)\n // loop over items and depending on states call abort for ongoing processes\n store.dispatch('ABORT_ALL');\n\n // destroy view\n view._destroy();\n\n // stop listening to resize\n window.removeEventListener('resize', resizeHandler);\n\n // stop listening to the visiblitychange event\n document.removeEventListener('visibilitychange', visibilityHandler);\n\n // dispatch destroy\n store.dispatch('DID_DESTROY');\n },\n\n /**\n * Inserts the plugin before the target element\n */\n insertBefore: element => insertBefore(view.element, element),\n\n /**\n * Inserts the plugin after the target element\n */\n insertAfter: element => insertAfter(view.element, element),\n\n /**\n * Appends the plugin to the target element\n */\n appendTo: element => element.appendChild(view.element),\n\n /**\n * Replaces an element with the app\n */\n replaceElement: element => {\n // insert the app before the element\n insertBefore(view.element, element);\n\n // remove the original element\n element.parentNode.removeChild(element);\n\n // remember original element\n originalElement = element;\n },\n\n /**\n * Restores the original element\n */\n restoreElement: () => {\n if (!originalElement) {\n return; // no element to restore\n }\n\n // restore original element\n insertAfter(originalElement, view.element);\n\n // remove our element\n view.element.parentNode.removeChild(view.element);\n\n // remove reference\n originalElement = null;\n },\n\n /**\n * Returns true if the app root is attached to given element\n * @param element\n */\n isAttachedTo: element => view.element === element || originalElement === element,\n\n /**\n * Returns the root element\n */\n element: {\n get: () => view.element,\n },\n\n /**\n * Returns the current pond status\n */\n status: {\n get: () => store.query('GET_STATUS'),\n },\n };\n\n // Done!\n store.dispatch('DID_INIT');\n\n // create actual api object\n return createObject(exports);\n};\n\nconst createAppObject = (customOptions = {}) => {\n // default options\n const defaultOptions = {};\n forin(getOptions(), (key, value) => {\n defaultOptions[key] = value[0];\n });\n\n // set app options\n const app = createApp({\n // default options\n ...defaultOptions,\n\n // custom options\n ...customOptions,\n });\n\n // return the plugin instance\n return app;\n};\n\nconst lowerCaseFirstLetter = string => string.charAt(0).toLowerCase() + string.slice(1);\n\nconst attributeNameToPropertyName = attributeName => toCamels(attributeName.replace(/^data-/, ''));\n\nconst mapObject = (object, propertyMap) => {\n // remove unwanted\n forin(propertyMap, (selector, mapping) => {\n forin(object, (property, value) => {\n // create regexp shortcut\n const selectorRegExp = new RegExp(selector);\n\n // tests if\n const matches = selectorRegExp.test(property);\n\n // no match, skip\n if (!matches) {\n return;\n }\n\n // if there's a mapping, the original property is always removed\n delete object[property];\n\n // should only remove, we done!\n if (mapping === false) {\n return;\n }\n\n // move value to new property\n if (isString(mapping)) {\n object[mapping] = value;\n return;\n }\n\n // move to group\n const group = mapping.group;\n if (isObject(mapping) && !object[group]) {\n object[group] = {};\n }\n\n object[group][lowerCaseFirstLetter(property.replace(selectorRegExp, ''))] = value;\n });\n\n // do submapping\n if (mapping.mapping) {\n mapObject(object[mapping.group], mapping.mapping);\n }\n });\n};\n\nconst getAttributesAsObject = (node, attributeMapping = {}) => {\n // turn attributes into object\n const attributes = [];\n forin(node.attributes, index => {\n attributes.push(node.attributes[index]);\n });\n\n const output = attributes\n .filter(attribute => attribute.name)\n .reduce((obj, attribute) => {\n const value = attr(node, attribute.name);\n\n obj[attributeNameToPropertyName(attribute.name)] =\n value === attribute.name ? true : value;\n return obj;\n }, {});\n\n // do mapping of object properties\n mapObject(output, attributeMapping);\n\n return output;\n};\n\nconst createAppAtElement = (element, options = {}) => {\n // how attributes of the input element are mapped to the options for the plugin\n const attributeMapping = {\n // translate to other name\n '^class$': 'className',\n '^multiple$': 'allowMultiple',\n '^capture$': 'captureMethod',\n '^webkitdirectory$': 'allowDirectoriesOnly',\n\n // group under single property\n '^server': {\n group: 'server',\n mapping: {\n '^process': {\n group: 'process',\n },\n '^revert': {\n group: 'revert',\n },\n '^fetch': {\n group: 'fetch',\n },\n '^restore': {\n group: 'restore',\n },\n '^load': {\n group: 'load',\n },\n },\n },\n\n // don't include in object\n '^type$': false,\n '^files$': false,\n };\n\n // add additional option translators\n applyFilters('SET_ATTRIBUTE_TO_OPTION_MAP', attributeMapping);\n\n // create final options object by setting options object and then overriding options supplied on element\n const mergedOptions = {\n ...options,\n };\n\n const attributeOptions = getAttributesAsObject(\n element.nodeName === 'FIELDSET' ? element.querySelector('input[type=file]') : element,\n attributeMapping\n );\n\n // merge with options object\n Object.keys(attributeOptions).forEach(key => {\n if (isObject(attributeOptions[key])) {\n if (!isObject(mergedOptions[key])) {\n mergedOptions[key] = {};\n }\n Object.assign(mergedOptions[key], attributeOptions[key]);\n } else {\n mergedOptions[key] = attributeOptions[key];\n }\n });\n\n // if parent is a fieldset, get files from parent by selecting all input fields that are not file upload fields\n // these will then be automatically set to the initial files\n mergedOptions.files = (options.files || []).concat(\n Array.from(element.querySelectorAll('input:not([type=file])')).map(input => ({\n source: input.value,\n options: {\n type: input.dataset.type,\n },\n }))\n );\n\n // build plugin\n const app = createAppObject(mergedOptions);\n\n // add already selected files\n if (element.files) {\n Array.from(element.files).forEach(file => {\n app.addFile(file);\n });\n }\n\n // replace the target element\n app.replaceElement(element);\n\n // expose\n return app;\n};\n\n// if an element is passed, we create the instance at that element, if not, we just create an up object\nconst createApp$1 = (...args) =>\n isNode(args[0]) ? createAppAtElement(...args) : createAppObject(...args);\n\nconst PRIVATE_METHODS = ['fire', '_read', '_write'];\n\nconst createAppAPI = app => {\n const api = {};\n\n copyObjectPropertiesToObject(app, api, PRIVATE_METHODS);\n\n return api;\n};\n\n/**\n * Replaces placeholders in given string with replacements\n * @param string - \"Foo {bar}\"\"\n * @param replacements - { \"bar\": 10 }\n */\nconst replaceInString = (string, replacements) =>\n string.replace(/(?:{([a-zA-Z]+)})/g, (match, group) => replacements[group]);\n\nconst createWorker = fn => {\n const workerBlob = new Blob(['(', fn.toString(), ')()'], {\n type: 'application/javascript',\n });\n const workerURL = URL.createObjectURL(workerBlob);\n const worker = new Worker(workerURL);\n\n return {\n transfer: (message, cb) => {},\n post: (message, cb, transferList) => {\n const id = getUniqueId();\n\n worker.onmessage = e => {\n if (e.data.id === id) {\n cb(e.data.message);\n }\n };\n\n worker.postMessage(\n {\n id,\n message,\n },\n transferList\n );\n },\n terminate: () => {\n worker.terminate();\n URL.revokeObjectURL(workerURL);\n },\n };\n};\n\nconst loadImage = url =>\n new Promise((resolve, reject) => {\n const img = new Image();\n img.onload = () => {\n resolve(img);\n };\n img.onerror = e => {\n reject(e);\n };\n img.src = url;\n });\n\nconst renameFile = (file, name) => {\n const renamedFile = file.slice(0, file.size, file.type);\n renamedFile.lastModifiedDate = file.lastModifiedDate;\n renamedFile.name = name;\n return renamedFile;\n};\n\nconst copyFile = file => renameFile(file, file.name);\n\n// already registered plugins (can't register twice)\nconst registeredPlugins = [];\n\n// pass utils to plugin\nconst createAppPlugin = plugin => {\n // already registered\n if (registeredPlugins.includes(plugin)) {\n return;\n }\n\n // remember this plugin\n registeredPlugins.push(plugin);\n\n // setup!\n const pluginOutline = plugin({\n addFilter,\n utils: {\n Type,\n forin,\n isString,\n isFile,\n toNaturalFileSize,\n replaceInString,\n getExtensionFromFilename,\n getFilenameWithoutExtension,\n guesstimateMimeType,\n getFileFromBlob,\n getFilenameFromURL,\n createRoute,\n createWorker,\n createView,\n createItemAPI,\n loadImage,\n copyFile,\n renameFile,\n createBlob,\n applyFilterChain,\n text,\n getNumericAspectRatioFromString,\n },\n views: {\n fileActionButton,\n },\n });\n\n // add plugin options to default options\n extendDefaultOptions(pluginOutline.options);\n};\n\n// feature detection used by supported() method\nconst isOperaMini = () => Object.prototype.toString.call(window.operamini) === '[object OperaMini]';\nconst hasPromises = () => 'Promise' in window;\nconst hasBlobSlice = () => 'slice' in Blob.prototype;\nconst hasCreateObjectURL = () => 'URL' in window && 'createObjectURL' in window.URL;\nconst hasVisibility = () => 'visibilityState' in document;\nconst hasTiming = () => 'performance' in window; // iOS 8.x\nconst hasCSSSupports = () => 'supports' in (window.CSS || {}); // use to detect Safari 9+\nconst isIE11 = () => /MSIE|Trident/.test(window.navigator.userAgent);\n\nconst supported = (() => {\n // Runs immediately and then remembers result for subsequent calls\n const isSupported =\n // Has to be a browser\n isBrowser() &&\n // Can't run on Opera Mini due to lack of everything\n !isOperaMini() &&\n // Require these APIs to feature detect a modern browser\n hasVisibility() &&\n hasPromises() &&\n hasBlobSlice() &&\n hasCreateObjectURL() &&\n hasTiming() &&\n // doesn't need CSSSupports but is a good way to detect Safari 9+ (we do want to support IE11 though)\n (hasCSSSupports() || isIE11());\n\n return () => isSupported;\n})();\n\n/**\n * Plugin internal state (over all instances)\n */\nconst state = {\n // active app instances, used to redraw the apps and to find the later\n apps: [],\n};\n\n// plugin name\nconst name = 'filepond';\n\n/**\n * Public Plugin methods\n */\nconst fn = () => {};\nlet Status$1 = {};\nlet FileStatus = {};\nlet FileOrigin$1 = {};\nlet OptionTypes = {};\nlet create$f = fn;\nlet destroy = fn;\nlet parse = fn;\nlet find = fn;\nlet registerPlugin = fn;\nlet getOptions$1 = fn;\nlet setOptions$1 = fn;\n\n// if not supported, no API\nif (supported()) {\n // start painter and fire load event\n createPainter(\n () => {\n state.apps.forEach(app => app._read());\n },\n ts => {\n state.apps.forEach(app => app._write(ts));\n }\n );\n\n // fire loaded event so we know when FilePond is available\n const dispatch = () => {\n // let others know we have area ready\n document.dispatchEvent(\n new CustomEvent('FilePond:loaded', {\n detail: {\n supported,\n create: create$f,\n destroy,\n parse,\n find,\n registerPlugin,\n setOptions: setOptions$1,\n },\n })\n );\n\n // clean up event\n document.removeEventListener('DOMContentLoaded', dispatch);\n };\n\n if (document.readyState !== 'loading') {\n // move to back of execution queue, FilePond should have been exported by then\n setTimeout(() => dispatch(), 0);\n } else {\n document.addEventListener('DOMContentLoaded', dispatch);\n }\n\n // updates the OptionTypes object based on the current options\n const updateOptionTypes = () =>\n forin(getOptions(), (key, value) => {\n OptionTypes[key] = value[1];\n });\n\n Status$1 = { ...Status };\n FileOrigin$1 = { ...FileOrigin };\n FileStatus = { ...ItemStatus };\n\n OptionTypes = {};\n updateOptionTypes();\n\n // create method, creates apps and adds them to the app array\n create$f = (...args) => {\n const app = createApp$1(...args);\n app.on('destroy', destroy);\n state.apps.push(app);\n return createAppAPI(app);\n };\n\n // destroys apps and removes them from the app array\n destroy = hook => {\n // returns true if the app was destroyed successfully\n const indexToRemove = state.apps.findIndex(app => app.isAttachedTo(hook));\n if (indexToRemove >= 0) {\n // remove from apps\n const app = state.apps.splice(indexToRemove, 1)[0];\n\n // restore original dom element\n app.restoreElement();\n\n return true;\n }\n\n return false;\n };\n\n // parses the given context for plugins (does not include the context element itself)\n parse = context => {\n // get all possible hooks\n const matchedHooks = Array.from(context.querySelectorAll(`.${name}`));\n\n // filter out already active hooks\n const newHooks = matchedHooks.filter(\n newHook => !state.apps.find(app => app.isAttachedTo(newHook))\n );\n\n // create new instance for each hook\n return newHooks.map(hook => create$f(hook));\n };\n\n // returns an app based on the given element hook\n find = hook => {\n const app = state.apps.find(app => app.isAttachedTo(hook));\n if (!app) {\n return null;\n }\n return createAppAPI(app);\n };\n\n // adds a plugin extension\n registerPlugin = (...plugins) => {\n // register plugins\n plugins.forEach(createAppPlugin);\n\n // update OptionTypes, each plugin might have extended the default options\n updateOptionTypes();\n };\n\n getOptions$1 = () => {\n const opts = {};\n forin(getOptions(), (key, value) => {\n opts[key] = value[0];\n });\n return opts;\n };\n\n setOptions$1 = opts => {\n if (isObject(opts)) {\n // update existing plugins\n state.apps.forEach(app => {\n app.setOptions(opts);\n });\n\n // override defaults\n setOptions(opts);\n }\n\n // return new options\n return getOptions$1();\n };\n}\n\nexport {\n FileOrigin$1 as FileOrigin,\n FileStatus,\n OptionTypes,\n Status$1 as Status,\n create$f as create,\n destroy,\n find,\n getOptions$1 as getOptions,\n parse,\n registerPlugin,\n setOptions$1 as setOptions,\n supported,\n};\n","/*!\n * FilePondPluginFileValidateSize 2.2.8\n * Licensed under MIT, https://opensource.org/licenses/MIT/\n * Please visit https://pqina.nl/filepond/ for details.\n */\n\n/* eslint-disable */\n\nconst plugin = ({ addFilter, utils }) => {\n // get quick reference to Type utils\n const { Type, replaceInString, toNaturalFileSize } = utils;\n\n // filtering if an item is allowed in hopper\n addFilter('ALLOW_HOPPER_ITEM', (file, { query }) => {\n if (!query('GET_ALLOW_FILE_SIZE_VALIDATION')) {\n return true;\n }\n\n const sizeMax = query('GET_MAX_FILE_SIZE');\n if (sizeMax !== null && file.size > sizeMax) {\n return false;\n }\n\n const sizeMin = query('GET_MIN_FILE_SIZE');\n if (sizeMin !== null && file.size < sizeMin) {\n return false;\n }\n\n return true;\n });\n\n // called for each file that is loaded\n // right before it is set to the item state\n // should return a promise\n addFilter(\n 'LOAD_FILE',\n (file, { query }) =>\n new Promise((resolve, reject) => {\n // if not allowed, all fine, exit\n if (!query('GET_ALLOW_FILE_SIZE_VALIDATION')) {\n return resolve(file);\n }\n\n // check if file should be filtered\n const fileFilter = query('GET_FILE_VALIDATE_SIZE_FILTER');\n if (fileFilter && !fileFilter(file)) {\n return resolve(file);\n }\n\n // reject or resolve based on file size\n const sizeMax = query('GET_MAX_FILE_SIZE');\n if (sizeMax !== null && file.size > sizeMax) {\n reject({\n status: {\n main: query('GET_LABEL_MAX_FILE_SIZE_EXCEEDED'),\n sub: replaceInString(query('GET_LABEL_MAX_FILE_SIZE'), {\n filesize: toNaturalFileSize(\n sizeMax,\n '.',\n query('GET_FILE_SIZE_BASE'),\n query('GET_FILE_SIZE_LABELS', query)\n ),\n }),\n },\n });\n return;\n }\n\n // reject or resolve based on file size\n const sizeMin = query('GET_MIN_FILE_SIZE');\n if (sizeMin !== null && file.size < sizeMin) {\n reject({\n status: {\n main: query('GET_LABEL_MIN_FILE_SIZE_EXCEEDED'),\n sub: replaceInString(query('GET_LABEL_MIN_FILE_SIZE'), {\n filesize: toNaturalFileSize(\n sizeMin,\n '.',\n query('GET_FILE_SIZE_BASE'),\n query('GET_FILE_SIZE_LABELS', query)\n ),\n }),\n },\n });\n return;\n }\n\n // returns the current option value\n const totalSizeMax = query('GET_MAX_TOTAL_FILE_SIZE');\n if (totalSizeMax !== null) {\n // get the current total file size\n const currentTotalSize = query('GET_ACTIVE_ITEMS').reduce((total, item) => {\n return total + item.fileSize;\n }, 0);\n\n // get the size of the new file\n if (currentTotalSize > totalSizeMax) {\n reject({\n status: {\n main: query('GET_LABEL_MAX_TOTAL_FILE_SIZE_EXCEEDED'),\n sub: replaceInString(query('GET_LABEL_MAX_TOTAL_FILE_SIZE'), {\n filesize: toNaturalFileSize(\n totalSizeMax,\n '.',\n query('GET_FILE_SIZE_BASE'),\n query('GET_FILE_SIZE_LABELS', query)\n ),\n }),\n },\n });\n return;\n }\n }\n\n // file is fine, let's pass it back\n resolve(file);\n })\n );\n\n return {\n options: {\n // Enable or disable file type validation\n allowFileSizeValidation: [true, Type.BOOLEAN],\n\n // Max individual file size in bytes\n maxFileSize: [null, Type.INT],\n\n // Min individual file size in bytes\n minFileSize: [null, Type.INT],\n\n // Max total file size in bytes\n maxTotalFileSize: [null, Type.INT],\n\n // Filter the files that need to be validated for size\n fileValidateSizeFilter: [null, Type.FUNCTION],\n\n // error labels\n labelMinFileSizeExceeded: ['File is too small', Type.STRING],\n labelMinFileSize: ['Minimum file size is {filesize}', Type.STRING],\n\n labelMaxFileSizeExceeded: ['File is too large', Type.STRING],\n labelMaxFileSize: ['Maximum file size is {filesize}', Type.STRING],\n\n labelMaxTotalFileSizeExceeded: ['Maximum total size exceeded', Type.STRING],\n labelMaxTotalFileSize: ['Maximum total file size is {filesize}', Type.STRING],\n },\n };\n};\n\n// fire pluginloaded event if running in browser, this allows registering the plugin when using async script tags\nconst isBrowser = typeof window !== 'undefined' && typeof window.document !== 'undefined';\nif (isBrowser) {\n document.dispatchEvent(new CustomEvent('FilePond:pluginloaded', { detail: plugin }));\n}\n\nexport default plugin;\n","/*!\n * FilePondPluginFileValidateType 1.2.9\n * Licensed under MIT, https://opensource.org/licenses/MIT/\n * Please visit https://pqina.nl/filepond/ for details.\n */\n\n/* eslint-disable */\n\nconst plugin = ({ addFilter, utils }) => {\n // get quick reference to Type utils\n const {\n Type,\n isString,\n replaceInString,\n guesstimateMimeType,\n getExtensionFromFilename,\n getFilenameFromURL,\n } = utils;\n\n const mimeTypeMatchesWildCard = (mimeType, wildcard) => {\n const mimeTypeGroup = (/^[^/]+/.exec(mimeType) || []).pop(); // image/png -> image\n const wildcardGroup = wildcard.slice(0, -2); // image/* -> image\n return mimeTypeGroup === wildcardGroup;\n };\n\n const isValidMimeType = (acceptedTypes, userInputType) =>\n acceptedTypes.some(acceptedType => {\n // accepted is wildcard mime type\n if (/\\*$/.test(acceptedType)) {\n return mimeTypeMatchesWildCard(userInputType, acceptedType);\n }\n\n // is normal mime type\n return acceptedType === userInputType;\n });\n\n const getItemType = item => {\n // if the item is a url we guess the mime type by the extension\n let type = '';\n if (isString(item)) {\n const filename = getFilenameFromURL(item);\n const extension = getExtensionFromFilename(filename);\n if (extension) {\n type = guesstimateMimeType(extension);\n }\n } else {\n type = item.type;\n }\n\n return type;\n };\n\n const validateFile = (item, acceptedFileTypes, typeDetector) => {\n // no types defined, everything is allowed \\o/\n if (acceptedFileTypes.length === 0) {\n return true;\n }\n\n // gets the item type\n const type = getItemType(item);\n\n // no type detector, test now\n if (!typeDetector) {\n return isValidMimeType(acceptedFileTypes, type);\n }\n\n // use type detector\n return new Promise((resolve, reject) => {\n typeDetector(item, type)\n .then(detectedType => {\n if (isValidMimeType(acceptedFileTypes, detectedType)) {\n resolve();\n } else {\n reject();\n }\n })\n .catch(reject);\n });\n };\n\n const applyMimeTypeMap = map => acceptedFileType =>\n map[acceptedFileType] === null ? false : map[acceptedFileType] || acceptedFileType;\n\n // setup attribute mapping for accept\n addFilter('SET_ATTRIBUTE_TO_OPTION_MAP', map =>\n Object.assign(map, {\n accept: 'acceptedFileTypes',\n })\n );\n\n // filtering if an item is allowed in hopper\n addFilter('ALLOW_HOPPER_ITEM', (file, { query }) => {\n // if we are not doing file type validation exit\n if (!query('GET_ALLOW_FILE_TYPE_VALIDATION')) {\n return true;\n }\n\n // we validate the file against the accepted file types\n return validateFile(file, query('GET_ACCEPTED_FILE_TYPES'));\n });\n\n // called for each file that is loaded\n // right before it is set to the item state\n // should return a promise\n addFilter(\n 'LOAD_FILE',\n (file, { query }) =>\n new Promise((resolve, reject) => {\n if (!query('GET_ALLOW_FILE_TYPE_VALIDATION')) {\n resolve(file);\n return;\n }\n\n const acceptedFileTypes = query('GET_ACCEPTED_FILE_TYPES');\n\n // custom type detector method\n const typeDetector = query('GET_FILE_VALIDATE_TYPE_DETECT_TYPE');\n\n // if invalid, exit here\n const validationResult = validateFile(file, acceptedFileTypes, typeDetector);\n\n const handleRejection = () => {\n const acceptedFileTypesMapped = acceptedFileTypes\n .map(\n applyMimeTypeMap(\n query('GET_FILE_VALIDATE_TYPE_LABEL_EXPECTED_TYPES_MAP')\n )\n )\n .filter(label => label !== false);\n\n const acceptedFileTypesMappedUnique = acceptedFileTypesMapped.filter(\n (item, index) => acceptedFileTypesMapped.indexOf(item) === index\n );\n\n reject({\n status: {\n main: query('GET_LABEL_FILE_TYPE_NOT_ALLOWED'),\n sub: replaceInString(\n query('GET_FILE_VALIDATE_TYPE_LABEL_EXPECTED_TYPES'),\n {\n allTypes: acceptedFileTypesMappedUnique.join(', '),\n allButLastType: acceptedFileTypesMappedUnique\n .slice(0, -1)\n .join(', '),\n lastType:\n acceptedFileTypesMappedUnique[\n acceptedFileTypesMappedUnique.length - 1\n ],\n }\n ),\n },\n });\n };\n\n // has returned new filename immidiately\n if (typeof validationResult === 'boolean') {\n if (!validationResult) {\n return handleRejection();\n }\n return resolve(file);\n }\n\n // is promise\n validationResult\n .then(() => {\n resolve(file);\n })\n .catch(handleRejection);\n })\n );\n\n // expose plugin\n return {\n // default options\n options: {\n // Enable or disable file type validation\n allowFileTypeValidation: [true, Type.BOOLEAN],\n\n // What file types to accept\n acceptedFileTypes: [[], Type.ARRAY],\n // - must be comma separated\n // - mime types: image/png, image/jpeg, image/gif\n // - extensions: .png, .jpg, .jpeg ( not enabled yet )\n // - wildcards: image/*\n\n // label to show when a type is not allowed\n labelFileTypeNotAllowed: ['File is of invalid type', Type.STRING],\n\n // nicer label\n fileValidateTypeLabelExpectedTypes: [\n 'Expects {allButLastType} or {lastType}',\n Type.STRING,\n ],\n\n // map mime types to extensions\n fileValidateTypeLabelExpectedTypesMap: [{}, Type.OBJECT],\n\n // Custom function to detect type of file\n fileValidateTypeDetectType: [null, Type.FUNCTION],\n },\n };\n};\n\n// fire pluginloaded event if running in browser, this allows registering the plugin when using async script tags\nconst isBrowser = typeof window !== 'undefined' && typeof window.document !== 'undefined';\nif (isBrowser) {\n document.dispatchEvent(new CustomEvent('FilePond:pluginloaded', { detail: plugin }));\n}\n\nexport default plugin;\n","export interface OdaRegistrationViewModel {\n\ttransactionId: string;\n\tcourseId: string;\n\n\tcourseName: string;\n\tcourseType: string;\n\tpreambleHtml: string;\n\tdates: CourseInformation[];\n\n\tcustomFieldDefinitions: CustomFieldDefinition[];\n}\n\nexport interface CourseInformation {\n\tname: string;\n\tdateBegin: string;\n\tdateEnd: string | null;\n\tlocation: string;\n}\n\nexport interface CustomFieldDefinition {\n\tname: string;\n\ttype: CustomFieldType;\n\tlabel: string;\n\toptional: boolean;\n}\n\nexport enum CustomFieldType {\n\tCheckbox = \"checkbox\",\n\tFile = \"file\"\n}\n","\n\t\n\t\t\n\t\t\t\n\t\t\t\t

Anmeldung für «{{data.courseName}}»

\n\t\t\t
\n\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t
\n\t
\n\t\n\t\t\n\t\n\t\n\t\t\n\t\t\t\n\t\t\n\t\t\n\t\t\t\n\t\t\t\t
\n\t\t\t\t\t
\n\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\n\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t
\n\t\t\n\t\t\n\t\t\t\n\t\t\t\n\t\t\n\t\n\n","import { Component, Vue, Prop, Watch, Setup } from \"@wagich/vue-facing-decorator-metadata\";\nimport { create as createVestSuite, each, enforce, group, omitWhen, only, skip, test, warn, type SuiteResult } from \"vest\";\nimport \"vest/enforce/email\";\nimport { format, parse, parseISO, formatISO } from \"date-fns\";\nimport { de as deLocale } from \"date-fns/locale\";\nimport queryString from \"query-string\";\nimport { mdiAccount, mdiInformationVariant } from \"@mdi/js\";\n\nimport \"filepond/dist/filepond.min.css\";\nimport { create as createFilepond, registerPlugin as registerFilepondPlugin } from \"filepond\";\nimport type { FilePondOptions } from \"filepond\";\nimport FilePondPluginFileValidateSize from \"filepond-plugin-file-validate-size\";\nregisterFilepondPlugin(FilePondPluginFileValidateSize);\n\nimport FilePondPluginFileValidateType from \"filepond-plugin-file-validate-type\";\nregisterFilepondPlugin(FilePondPluginFileValidateType);\n\nimport { type OdaRegistrationViewModel, type CourseInformation, type CustomFieldDefinition, CustomFieldType } from \"../models/oda-registration-viewmodel\";\nimport type { OdaRegistrationRequest, UploadMetadata } from \"../models/oda-registration-request\";\nimport { State, Gender, idSafe } from \"../utilities\";\n\nimport { render } from \"./oda-registration.html\";\n\nexport const Event_Success = \"success\";\nexport const Event_Cancel = \"cancel\";\n\nconst staticFilePondOptions = {\n\tname: \"files\",\n\tcredits: false as false, // yeah, the typings are wrong\n\tmaxTotalFileSize: \"5MB\",\n\tallowMultiple: true,\n\tacceptedFileTypes: [\n\t\t\"text/html\",\n\t\t\"text/plain\",\n\t\t\"application/pdf\",\n\t\t\"image/png\", \"image/jpeg\", \"image/tiff\", \"image/webp\", \"image/heif\", \"image/heic\",\n\t\t\"application/msword\", \"application/vnd.openxmlformats-officedocument.wordprocessingml.document\", \"application/vnd.oasis.opendocument.text\", \"application/rtf\",\n\t\t\"application/vnd.ms-powerpoint\", \"application/vnd.openxmlformats-officedocument.presentationml.presentation\", \"application/vnd.oasis.opendocument.presentation\",\n\t\t\"application/vnd.ms-excel\", \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\", \"application/vnd.oasis.opendocument.spreadsheet\",\n\t\t\"application/zip\",\n\t],\n\tlabelIdle: `Dateien ablegen oder auswählen (Max. 5 MB)`,\n\tlabelInvalidField: \"Feld beinhaltet ungültige Dateien\",\n\tlabelFileWaitingForSize: \"Dateigrösse berechnen\",\n\tlabelFileSizeNotAvailable: \"Dateigrösse nicht verfügbar\",\n\tlabelFileLoading: \"Laden\",\n\tlabelFileLoadError: \"Fehler beim Laden\",\n\tlabelFileProcessing: \"Upload läuft\",\n\tlabelFileProcessingComplete: \"Upload abgeschlossen\",\n\tlabelFileProcessingAborted: \"Upload abgebrochen\",\n\tlabelFileProcessingError: \"Fehler beim Upload\",\n\tlabelFileProcessingRevertError: \"Fehler beim Wiederherstellen\",\n\tlabelFileRemoveError: \"Fehler beim Löschen\",\n\tlabelTapToCancel: \"abbrechen\",\n\tlabelTapToRetry: \"erneut versuchen\",\n\tlabelTapToUndo: \"rückgängig\",\n\tlabelButtonRemoveItem: \"Entfernen\",\n\tlabelButtonAbortItemLoad: \"Verwerfen\",\n\tlabelButtonRetryItemLoad: \"Erneut versuchen\",\n\tlabelButtonAbortItemProcessing: \"Abbrechen\",\n\tlabelButtonUndoItemProcessing: \"Rückgängig\",\n\tlabelButtonRetryItemProcessing: \"Erneut versuchen\",\n\tlabelButtonProcessItem: \"Upload\",\n\tlabelMaxFileSizeExceeded: \"Datei ist zu gross\",\n\tlabelMaxFileSize: \"Maximale Dateigrösse: {filesize}\",\n\tlabelMaxTotalFileSizeExceeded: \"Maximale gesamte Dateigrösse überschritten\",\n\tlabelMaxTotalFileSize: \"Maximale gesamte Dateigrösse: {filesize}\",\n\tlabelFileTypeNotAllowed: \"Dateityp ungültig\",\n\tfileValidateTypeLabelExpectedTypes: \"Erwartet {allButLastType} oder {lastType}\",\n};\n\nconst validator = createVestSuite((data: OdaRegistrationRequest, customFieldDefinitions: CustomFieldDefinition[], checkOccupation: boolean, groupName?: string, fieldName?: string) => {\n\tonly(fieldName);\n\n\tomitWhen(customFieldDefinitions.length === 0, () => {\n\t\tgroup(\"customFields\", () => {\n\t\t\tskip(groupName != null && groupName !== \"customFields\");\n\n\t\t\t// \"dummy\" test to ensure that the group is not empty\n\t\t\ttest(\"customFields\", () => {\n\t\t\t\tenforce(data.customFields).isNotNull();\n\t\t\t});\n\n\t\t\teach(customFieldDefinitions, fieldDef => {\n\t\t\t\tif (!fieldDef.optional) {\n\t\t\t\t\tswitch (fieldDef.type) {\n\t\t\t\t\t\tcase CustomFieldType.Checkbox:\n\t\t\t\t\t\t\ttest(fieldDef.name, \"Bitte markiere dieses Feld um fortzufahren\", () => {\n\t\t\t\t\t\t\t\tenforce(data.customFields[fieldDef.name]).isBoolean().isTruthy();\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase CustomFieldType.File:\n\t\t\t\t\t\t\ttest(fieldDef.name, \"Bitte lade mindestens eine Datei hoch\", () => {\n\t\t\t\t\t\t\t\tenforce(data.customFields[fieldDef.name]).isArray().isNotEmpty();\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t});\n\n\tgroup(\"data\", () => {\n\t\tskip(groupName != null && groupName !== \"data\");\n\n\t\ttest(\"selectedDateAndLocation\", \"Bitte wähle ein Datum aus\", () => {\n\t\t\tenforce(data.selectedDateAndLocation).isNotEmpty();\n\t\t});\n\n\t\ttest(\"gender\", \"Bitte wähle eine Anrede aus\", () => {\n\t\t\tenforce(data.gender).isNotEmpty().inside([Gender.Male, Gender.Female]);\n\t\t});\n\n\t\ttest(\"firstname\", \"Bitte gib deinen Vornamen ein\", () => {\n\t\t\tenforce(data.firstname).isNotEmpty();\n\t\t});\n\n\t\ttest(\"lastname\", \"Bitte gib deinen Nachnamen ein\", () => {\n\t\t\tenforce(data.lastname).isNotEmpty();\n\t\t});\n\n\t\ttest(\"address\", \"Bitte gib deine Adresse ein\", () => {\n\t\t\tenforce(data.address).isNotEmpty();\n\t\t});\n\n\t\ttest(\"postalCode\", \"Bitte gib deine Postleitzahl ein\", () => {\n\t\t\tenforce(data.postalCode).isNotEmpty();\n\t\t});\n\n\t\ttest(\"locality\", \"Bitte gib deinen Wohnort ein\", () => {\n\t\t\tenforce(data.locality).isNotEmpty();\n\t\t});\n\n\t\ttest(\"country\", \"Bitte wähle dein Land aus\", () => {\n\t\t\tenforce(data.country).isNotEmpty();\n\t\t});\n\n\t\ttest(\"phone\", \"Bitte gib deine Telefonnummer ein\", () => {\n\t\t\tenforce(data.phone).isNotEmpty();\n\t\t});\n\n\t\ttest(\"email\", () => {\n\t\t\tenforce(data.email)\n\t\t\t\t.message(\"Bitte gib deine E-Mail-Adresse ein\")\n\t\t\t\t.isNotEmpty()\n\t\t\t\t.message(\"Bitte gib eine gültige E-Mail-Adresse ein\")\n\t\t\t\t.isEmail();\n\t\t});\n\n\t\ttest(\"dateOfBirth\", () => {\n\t\t\tenforce(data.dateOfBirth)\n\t\t\t\t.message(\"Bitte gib dein Geburtsdatum ein\")\n\t\t\t\t.isNotEmpty()\n\t\t\t\t.message(\"Das Datum muss im Format dd.MM.yyyy sein\")\n\t\t\t\t.matches(/^\\d{2}\\.\\d{2}.\\d{4}$/);\n\t\t});\n\n\t\tomitWhen(!checkOccupation, () => {\n\t\t\ttest(\"occupation\", \"Bitte gib deinen Beruf ein\", () => {\n\t\t\t\tenforce(data.occupation).isNotEmpty();\n\t\t\t});\n\t\t});\n\n\t\ttest(\"acceptTos\", \"Du musst unsere AGB akzeptieren um dich anmelden zu können.\", () => {\n\t\t\tenforce(data.acceptTos).equals(true);\n\t\t});\n\t});\n});\n\n@Component({\n\trender,\n})\nexport class OdaRegistration extends Vue {\n\tvalidations: SuiteResult = validator.get();\n\tstate: State = State.Initial;\n\tactiveStepIndex: number = 0;\n\tactiveStepIsDirty: boolean = false;\n\tsteps = [\n\t\t{\n\t\t\ticon: mdiInformationVariant,\n\t\t\tname: \"customFields\",\n\t\t\tlabel: \"Voraussetzungen und Unterlagen\"\n\t\t},\n\t\t{\n\t\t\ticon: mdiAccount,\n\t\t\tname: \"data\",\n\t\t\tlabel: \"Persönliche Daten\"\n\t\t},\n\t];\n\n\t@Prop()\n\tcourseId: string;\n\t@Prop()\n\tcourseBegin: string;\n\n\tpreambleHtml: string = \"\";\n\tdates: CourseInformation[] = [];\n\tcustomFieldDefinitions: CustomFieldDefinition[] = [];\n\tshowOccupation: boolean = false;\n\n\tdata: OdaRegistrationRequest = {\n\t\ttransactionId: \"\",\n\t\tcourseId: \"\",\n\t\tcourseName: \"\",\n\t\tselectedDateAndLocation: null!,\n\t\tfirstname: \"\",\n\t\tlastname: \"\",\n\t\taddress: \"\",\n\t\tpostalCode: \"\",\n\t\tlocality: \"\",\n\t\tcountry: \"Schweiz\",\n\t\tphone: \"\",\n\t\temail: \"\",\n\t\tgender: null!,\n\t\tdateOfBirth: null!,\n\t\toccupation: null,\n\t\tcustomFields: {},\n\t\tmessage: \"\",\n\t\tsignupForNewsletter: false,\n\t\tacceptTos: false,\n\t}\n\n\tget activeStep() {\n\t\treturn this.steps[this.activeStepIndex].name;\n\t}\n\n\tget maleLabel(): string {\n\t\treturn this.data.firstname ? `Lieber ${this.data.firstname}` : `Lieber Max`;\n\t}\n\tget femaleLabel(): string {\n\t\treturn this.data.firstname ? `Liebe ${this.data.firstname}` : `Liebe Maxine`;\n\t}\n\n\tget countries(): string[] {\n\t\treturn [\"Schweiz\", \"Deutschland\", \"Österreich\", \"Italien\", \"Frankreich\", \"Liechtenstein\"]\n\t}\n\n\tasync mounted() {\n\t\tawait this.loadData();\n\t\tthis.initializeUploadFields();\n\t}\n\n\tasync validate() {\n\t\tthis.activeStepIsDirty = true;\n\n\t\tawait this.$nextTick();\n\t\tthis.validations = validator(this.data, this.customFieldDefinitions, this.showOccupation);\n\t}\n\n\tasync validateField(fieldName?: string) {\n\t\tthis.activeStepIsDirty = true;\n\n\t\tawait this.$nextTick();\n\t\tthis.validations = validator(this.data, this.customFieldDefinitions, this.showOccupation, undefined, fieldName);\n\t}\n\n\tasync validateGroup(groupName?: string) {\n\t\tthis.activeStepIsDirty = true;\n\n\t\tawait this.$nextTick();\n\t\tthis.validations = validator(this.data, this.customFieldDefinitions, this.showOccupation, groupName, undefined);\n\t}\n\n\tasync loadData() {\n\t\tthis.state = State.Loading;\n\n\t\tlet query: any = { courseId: this.courseId };\n\t\tif (this.courseBegin != null) {\n\t\t\tquery.begin = this.courseBegin;\n\t\t}\n\t\tlet response = await fetch(`/api/oda-registration?${queryString.stringify(query)}`, {\n\t\t\tmethod: \"GET\",\n\t\t\theaders: {\n\t\t\t\t\"Accept\": \"application/json\"\n\t\t\t}\n\t\t});\n\n\t\tif (!response.ok) {\n\t\t\tthis.state = State.Error;\n\t\t\treturn;\n\t\t}\n\n\t\tvar data: OdaRegistrationViewModel = await response.json();\n\t\tthis.dates = data.dates;\n\t\tthis.preambleHtml = data.preambleHtml;\n\t\tthis.customFieldDefinitions = data.customFieldDefinitions;\n\t\tthis.showOccupation = data.courseType === \"education\";\n\n\t\tthis.data.transactionId = data.transactionId;\n\t\tthis.data.courseId = data.courseId;\n\t\tthis.data.courseName = data.courseName;\n\n\t\tthis.data.customFields = Object.fromEntries(this.customFieldDefinitions.map(f => {\n\t\t\tswitch (f.type) {\n\t\t\t\tcase CustomFieldType.Checkbox:\n\t\t\t\t\treturn [f.name, false];\n\t\t\t\tcase CustomFieldType.File:\n\t\t\t\t\treturn [f.name, []];\n\t\t\t\tdefault:\n\t\t\t\t\treturn [f.name, null];\n\t\t\t}\n\t\t}));\n\n\t\tif (this.dates.length === 1) {\n\t\t\tthis.data.selectedDateAndLocation = this.dates[0];\n\t\t}\n\n\t\tif (this.customFieldDefinitions.length === 0) {\n\t\t\tthis.steps.splice(0, 1);\n\t\t}\n\n\t\tthis.state = State.Initial;\n\t}\n\n\tasync send() {\n\t\tawait this.validate();\n\t\tif (!this.validations.isValid()) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.state = State.Loading;\n\n\t\ttry {\n\t\t\tlet responseMessage = await fetch(\"/api/oda-registration\", {\n\t\t\t\tbody: JSON.stringify({\n\t\t\t\t\t...this.data,\n\t\t\t\t\tdateOfBirth: formatISO(parse(this.data.dateOfBirth, \"dd.MM.yyyy\", new Date())).substring(0, 10),\n\t\t\t\t}),\n\t\t\t\tmethod: \"POST\",\n\t\t\t\theaders: {\n\t\t\t\t\t\"Accept\": \"application/json\",\n\t\t\t\t\t\"Content-Type\": \"application/json\"\n\t\t\t\t}\n\t\t\t});\n\t\t\tif (!responseMessage.ok) {\n\t\t\t\tthis.state = State.Error;\n\t\t\t\tthis.$notify.error(\"Das Formular konnte aus technischen Gründen nicht gesendet werden. Bitte kontaktiere uns per Telefon oder schreibe uns eine Mail an mail@anisana.ch. Vielen Dank für dein Verständnis.\", { location: \"top center\", timeout: 10000 });\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.state = State.Success;\n\t\t\tthis.$notify.success(\"Herzlichen Dank für deine Anmeldung.\", { location: \"top center\", timeout: 10000 });\n\t\t\tthis.$emit(Event_Success);\n\t\t} catch (e) {\n\t\t\tthis.state = State.Error;\n\t\t\tthis.$notify.error(\"Das Formular konnte aus technischen Gründen nicht gesendet werden. Bitte kontaktiere uns per Telefon oder schreibe uns eine Mail an mail@anisana.ch. Vielen Dank für dein Verständnis.\", { location: \"top center\", timeout: 10000 });\n\t\t}\n\t}\n\n\tcancel() {\n\t\tthis.$emit(Event_Cancel);\n\t}\n\n\tprev() {\n\t\tif (this.activeStepIndex <= 0) {\n\t\t\treturn;\n\t\t}\n\t\tthis.activeStepIsDirty = false;\n\t\tthis.activeStepIndex--;\n\t}\n\n\tasync next() {\n\t\tawait this.validateGroup(this.activeStep);\n\t\tif (this.validations.isValidByGroup(this.activeStep)) {\n\t\t\tthis.activeStepIndex++;\n\t\t\tthis.activeStepIsDirty = false;\n\t\t}\n\t}\n\n\tformatStartDate(date: CourseInformation): string {\n\t\t// parseISO doesn't like ZonedDateTime format, we need to strip timezone info before parsing\n\t\treturn `${format(parseISO(date.dateBegin.substring(0, 19)), \"d. MMMM yyyy\", { locale: deLocale })}, ${date.location}`;\n\t}\n\n\tinitializeUploadFields() {\n\t\tfor (let uploadField of this.customFieldDefinitions.filter(d => d.type === CustomFieldType.File)) {\n\t\t\tlet uploadFieldElement = this.$el.querySelector(`#fileupload-${idSafe(uploadField.name)}`);\n\t\t\tif (uploadFieldElement == null) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tthis.data.customFields[uploadField.name] = [];\n\n\t\t\tlet uploadUrl = `/api/oda-registration/files/${this.data.transactionId}?field=${uploadField.name}`;\n\t\t\tlet options: FilePondOptions = {\n\t\t\t\t...staticFilePondOptions,\n\t\t\t\tserver: {\n\t\t\t\t\tprocess: {\n\t\t\t\t\t\turl: uploadUrl,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tonremovefile: (error, file) => {\n\t\t\t\t\tif (error != null) {\n\t\t\t\t\t\tthis.data.customFields[uploadField.name] = this.data.customFields[uploadField.name].filter((s: string) => s !== file.filename);\n\t\t\t\t\t\tthis.validateField(uploadField.name);\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tonprocessfile: (error, file) => {\n\t\t\t\t\tif (error == null) {\n\t\t\t\t\t\tthis.data.customFields[uploadField.name] = [...this.data.customFields[uploadField.name], file.filename];\n\t\t\t\t\t\tthis.validateField(uploadField.name);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tcreateFilepond(uploadFieldElement, options);\n\t\t}\n\t}\n}\n","import { Vue, Prop, Component, Watch } from \"@wagich/vue-facing-decorator-metadata\";\n\nimport { render } from \"./oda-registration-button.html\";\nimport { OdaRegistration } from \"./oda-registration\";\n\n@Component({\n\trender,\n\tcomponents: {\n\t\tOdaRegistration,\n\t}\n})\nexport class OdaRegistrationButton extends Vue {\n\tisOpen: boolean = false;\n\n\t@Prop()\n\tcourseId: string;\n\n\t@Prop()\n\tcourseBegin: string;\n\n\t@Prop()\n\tcourseName: string;\n\n\t@Prop({ default: false })\n\tsmall: boolean;\n\n\topen() {\n\t\tthis.isOpen = true;\n\n\t\ttry {\n\t\t\tplausible(\"Kursanmeldung begonnen\", { props: { \"Kursname\": this.courseName } });\n\t\t} catch { }\n\t}\n\n\tsuccess() {\n\t\tthis.isOpen = false;\n\t}\n\n\tcancel() {\n\t\tthis.isOpen = false;\n\t}\n}\n"],"names":["getInternalDefaultOptions","getDefaultOptions","parse","defaultLocale","_createElementBlock","_createVNode","isOpen","_withCtx","_mergeProps","small","_createTextVNode","courseId","courseBegin","success","cancel","isBrowser","plugin","CustomFieldType","_createBlock","_createElementVNode","data","$icons","state","_createCommentVNode","activeStep","_openBlock","_Fragment","_renderList","steps","preambleHtml","customFieldDefinitions","validations","validateField","$formatters","dates","formatStartDate","femaleLabel","maleLabel","countries","showOccupation","_withModifiers","next","prev","send","registerFilepondPlugin","FilePondPluginFileValidateSize","FilePondPluginFileValidateType","Event_Success","Event_Cancel","staticFilePondOptions","name","credits","maxTotalFileSize","allowMultiple","acceptedFileTypes","labelIdle","labelInvalidField","labelFileWaitingForSize","labelFileSizeNotAvailable","labelFileLoading","labelFileLoadError","labelFileProcessing","labelFileProcessingComplete","labelFileProcessingAborted","labelFileProcessingError","labelFileProcessingRevertError","labelFileRemoveError","labelTapToCancel","labelTapToRetry","labelTapToUndo","labelButtonRemoveItem","labelButtonAbortItemLoad","labelButtonRetryItemLoad","labelButtonAbortItemProcessing","labelButtonUndoItemProcessing","labelButtonRetryItemProcessing","labelButtonProcessItem","labelMaxFileSizeExceeded","labelMaxFileSize","labelMaxTotalFileSizeExceeded","labelMaxTotalFileSize","labelFileTypeNotAllowed","fileValidateTypeLabelExpectedTypes","validator","createVestSuite","checkOccupation","groupName","fieldName","only","omitWhen","length","group","skip","test","enforce","customFields","isNotNull","each","fieldDef","optional","type","Checkbox","isBoolean","isTruthy","File","isArray","isNotEmpty","selectedDateAndLocation","gender","inside","Gender","Male","Female","firstname","lastname","address","postalCode","locality","country","phone","email","message","isEmail","dateOfBirth","matches","occupation","acceptTos","equals","OdaRegistration","Vue","activeStepIndex","mounted","loadData","initializeUploadFields","validate","activeStepIsDirty","$nextTick","undefined","validateGroup","State","Loading","query","begin","response","fetch","queryString","stringify","method","headers","ok","Error","json","courseType","transactionId","courseName","Object","fromEntries","map","f","splice","Initial","isValid","responseMessage","body","JSON","formatISO","Date","substring","$notify","error","location","timeout","Success","$emit","e","isValidByGroup","date","format","parseISO","dateBegin","locale","deLocale","uploadField","filter","d","uploadFieldElement","$el","querySelector","idSafe","uploadUrl","options","server","process","url","onremovefile","file","s","filename","onprocessfile","createFilepond","get","icon","mdiInformationVariant","label","mdiAccount","signupForNewsletter","render","OdaRegistrationButton","open","plausible","props","default","components"],"mappings":"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AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,46,47,48]}