{"version":3,"mappings":"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KAAM,eACT,EACD,CACI,MAAOA,GAAiB,SACxB,KAAM,SACT,EACD,CACI,MAAOA,GAAiB,OACxB,KAAM,QACT,EACD,CACI,MAAOA,GAAiB,KACxB,KAAM,MACT,EACD,CACI,MAAOA,GAAiB,UACxB,KAAM,UACT,EACD,CACI,MAAOA,GAAiB,UACxB,KAAM,WACT,EACD,CACI,MAAOA,GAAiB,OACxB,KAAM,QACT,EACD,CACI,MAAOA,GAAiB,QACxB,KAAM,YACT,EACD,CACI,MAAOA,GAAiB,SACxB,KAAM,SACT,EACD,CACI,MAAOA,GAAiB,MACxB,KAAM,MACT,EACD,CACI,MAAOA,GAAiB,WACxB,KAAM,WACT,EACD,CACI,MAAOA,GAAiB,WACxB,KAAM,WACT,EACD,CACI,MAAOA,GAAiB,KACxB,KAAM,YACT,EACD,CACI,MAAOA,GAAiB,MACxB,KAAM,cACT,EACD,CACI,MAAOA,GAAiB,QACxB,KAAM,qBACT,EACD,CACI,MAAOA,GAAiB,YACxB,KAAM,cACT,EACD,CACI,MAAOA,GAAiB,aACxB,KAAM,iBACT,EACD,CACI,MAAOA,GAAiB,OACxB,KAAM,kBACT,EACD,CACI,MAAOA,GAAiB,MACxB,KAAM,kBACT,EACD,CACI,MAAOA,GAAiB,aACxB,KAAM,mBACT,EACD,CACI,MAAOA,GAAiB,IACxB,KAAM,iBACT,EACD,CACI,MAAOA,GAAiB,QACxB,KAAM,SACT,EACD,CACI,MAAOA,GAAiB,MACxB,KAAM,QACT,EACD,CACI,MAAOA,GAAiB,SACxB,KAAM,UACT,EACD,CACI,MAAOA,GAAiB,MACxB,KAAM,SACT,EACD,CACI,MAAOA,GAAiB,OACxB,KAAM,QACT,EACD,CACI,MAAOA,GAAiB,MACxB,KAAM,QACT,CACb,CACK,CACD,OAAO,YAAYx/B,EAAM,CACrB,OAAQA,EAAI,CACR,KAAKw/B,GAAiB,MACtB,KAAKA,GAAiB,QAClB,MAAO,QACX,KAAKA,GAAiB,MACtB,KAAKA,GAAiB,SACtB,KAAKA,GAAiB,OACtB,KAAKA,GAAiB,KACtB,KAAKA,GAAiB,UACtB,KAA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AA6B,2EACpD,KAAKA,GAAkB,sBAA8B,2IACrD,KAAKA,GAAkB,oBAA4B,yEACnD,KAAKA,GAAkB,4BAAoC,wIAC3D,KAAKA,GAAkB,uBAA+B,2EACtD,KAAKA,GAAkB,wBAAgC,0IAC3D,CACO,QACX,CACA,OAAO,gCAAgCv2C,EAAM,CACrC,GAAAA,IAASu2C,GAAkB,wBACpB,OACH,WACA,QACA,YAGJ,GAAAv2C,IAASu2C,GAAkB,2BACpB,OACH,SAGJ,GAAAv2C,IAASu2C,GAAkB,0BACpB,OACH,SAGJ,GAAAv2C,IAASu2C,GAAkB,eACpB,OACH,WACA,YACA,WACA,QACA,YAGJ,GAAAv2C,IAASu2C,GAAkB,YACpB,OACH,WACA,QACA,kBACA,mBACA,oBAGJ,GAAAv2C,IAASu2C,GAAkB,uBACpB,OACH,WACA,QACA,kBACA,oBAGJ,GAAAv2C,IAASu2C,GAAkB,gBACpB,OACH,WACA,QACA,6BACA,cACA,aACA,YACA,YAGJ,GAAAv2C,IAASu2C,GAAkB,uBACpB,OACH,WACA,QACA,6BACA,cACA,aACA,YAGJ,GAAAv2C,IAASu2C,GAAkB,qBACpB,OACH,WACA,YACA,WACA,eAGJ,GAAAv2C,IAASu2C,GAAkB,kBACpB,OACH,WACA,YACA,YAGJ,GAAAv2C,IAASu2C,GAAkB,yBACpB,OACH,WACA,YACA,WACA,kBACA,iBACA,QACA,cACA,mBACA,YACA,YACA,iBACA,gBAGJ,IACAA,GAAkB,6BAClBA,GAAkB,uBAClBA,GAAkB,sBAClBA,GAAkB,wBAClBA,GAAkB,sBACpB,SAASv2C,CAAI,EACJ,OACH,WACA,YACA,WACA,QACA,mBACA,cAGJ,GAAAA,IAASu2C,GAAkB,4BACpB,OACH,aACA,gBACA,sBACA,sBACA,uBACA,kBACA,cACA,gBACA,eACA,cACA,mBACA,YACA,iBACA,gBAGJ,IACAA,GAAkB,0BAClBA,GAAkB,2BAClBA,GAAkB,+BAClBA,GAAkB,gCAClBA,GAAkB,iCACpB,SAASv2C,CAAI,EACJ,OACH,WACA,YACA,mBACA,cACA,aACA,iBACA,WACA,kBAGR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","names":["getRandomValues","rnds8","rng","byteToHex","i","unsafeStringify","arr","offset","randomUUID","native","v4","options","buf","rnds","SimpleError","error","_a","context","data","_b","_c","code","prefix","fields","field","uuidv4","isSimpleError","e","isSimpleErrors","SimpleErrors","errors","index","_AppManager","$context","version","build","userAgent","AppManager","isCloneable","object","cloneObject","obj","encodedObj","key","value","k","hasId","val","getId","getOptionalId","isMove","isPut","isDelete","isPatch","PatchableArray","changes","cloned","other","change","patch","after","item","construct","n","newCurrentChanges","id","otherPut","isPatchable","otherPatch","array","newArray","afterIndex","encodeObject","p","PatchableArrayItemDecoder","putDecoder","patchDecoder","idDecoder","put","move","d","PatchableArrayDecoder","PatchOrPutDecoder","deepSetArray","oldArr","oldArray","newItem","isAutoEncoder","oldItem","Field","upg","oldValue","dwn","newValue","aDecoder","AutoEncoder","CreatedPatch","instance","prop","patched","patchObject","compare","a","b","latestFields","property","model","source","appliedProperties","isPatchableArray","isPatchMap","_d","_e","_f","_g","isRef","idField","f","stringOrNumber","classReferences","reference","from","to","older","patchContainsChanges","PatchMap","clone","original","isEncodeable","StringOrNumberDecoder","StringOrNumberDecoder$1","ArrayDecoder","decoder","v","elementDecoder","idFieldType","BooleanDecoder","BooleanDecoder$1","EnumDecoder","str","IntegerDecoder","parsed","IntegerDecoder$1","NullableDecoder","NumberDecoder","NumberDecoder$1","StringDecoder","StringDecoder$1","ObjectData","currentField","number","set","AnyDecoder","AnyDecoder$1","MapDecoder","keyDecoder","valueDecoder","PatchMapDecoder","map","keyDecoded","valueDecoded","container","EmailDecoderStatic","EmailDecoder","RecordDecoder","settings","target","VersionBox","VersionBoxDecoder","DateDecoder","DateDecoder$1","URLDecoder","Version","PermissionLevel","getPermissionLevelNumber","level","l","maximumPermissionlevel","levels","max","getPermissionLevelName","AccessRight","AccessRightHelper","right","__decorate","decorators","desc","c","r","Colors","hex","result","g","min","h","s","x","m","color","aRgbHex","foreground","background","L1","L2","R","G","B","rgb","blackContrast","whiteContrast","luminance","y","backgroundLuminance","foregroundLuminance","contrast","loConFactor","loConOffset","absContrast","scaledContrast","DataValidator","blockList","LuxonError","InvalidDateTimeError","reason","InvalidIntervalError","InvalidDurationError","ConflictingSpecificationError","InvalidUnitError","unit","InvalidArgumentError","ZoneIsAbstractError","DATE_SHORT","DATE_MED","DATE_MED_WITH_WEEKDAY","DATE_FULL","DATE_HUGE","TIME_SIMPLE","TIME_WITH_SECONDS","TIME_WITH_SHORT_OFFSET","TIME_WITH_LONG_OFFSET","TIME_24_SIMPLE","TIME_24_WITH_SECONDS","TIME_24_WITH_SHORT_OFFSET","TIME_24_WITH_LONG_OFFSET","DATETIME_SHORT","DATETIME_SHORT_WITH_SECONDS","DATETIME_MED","DATETIME_MED_WITH_SECONDS","DATETIME_MED_WITH_WEEKDAY","DATETIME_FULL","DATETIME_FULL_WITH_SECONDS","DATETIME_HUGE","DATETIME_HUGE_WITH_SECONDS","Zone","ts","opts","format","otherZone","singleton","SystemZone","locale","parseZoneInfo","formatOffset","dtfCache","makeDTF","zone","typeToPos","hackyOffset","dtf","date","formatted","fMonth","fDay","fYear","fadOrBc","fHour","fMinute","fSecond","partsOffset","filled","type","pos","isUndefined","ianaZoneCache","IANAZone","name","year","month","day","adOrBc","hour","minute","second","asUTC","objToLocalTS","asTS","over","intlLFCache","getCachedLF","locString","intlDTCache","getCachedDTF","intlNumCache","getCachedINF","inf","intlRelCache","getCachedRTF","base","cacheKeyOpts","sysLocaleCache","systemLocale","weekInfoCache","getCachedWeekInfo","parseLocaleString","localeStr","xIndex","uIndex","selectedStr","smaller","numberingSystem","calendar","intlConfigString","outputCalendar","mapMonths","ms","dt","DateTime","mapWeekdays","listStuff","loc","length","englishFn","intlFn","mode","supportsFastNumbers","PolyNumberFormatter","intl","forceSimple","padTo","floor","otherOpts","intlOpts","fixed","roundTo","padStart","PolyDateFormatter","z","gmtOffset","offsetZ","parts","part","offsetName","PolyRelFormatter","isEnglish","hasRelative","count","English.formatRelativeTime","fallbackWeekSettings","Locale","weekSettings","defaultToEN","specifiedLocale","Settings","localeR","numberingSystemR","outputCalendarR","weekSettingsR","validateWeekSettings","numbering","parsedLocale","parsedNumberingSystem","parsedOutputCalendar","isActuallyEn","hasNoWeirdness","alts","English.months","formatStr","English.weekdays","English.meridiems","English.eras","df","results","matching","hasLocaleWeekInfo","FixedOffsetZone","signedOffset","InvalidZone","zoneName","normalizeZone","input","defaultZone","isString","lowered","isNumber","now","defaultLocale","defaultNumberingSystem","defaultOutputCalendar","twoDigitCutoffYear","throwOnInvalid","defaultWeekSettings","cutoffYear","t","Invalid","explanation","nonLeapLadder","leapLadder","unitOutOfRange","dayOfWeek","js","computeOrdinal","isLeapYear","uncomputeOrdinal","ordinal","table","month0","isoWeekdayToLocal","isoWeekday","startOfWeek","gregorianToWeek","gregObj","minDaysInFirstWeek","weekday","weekNumber","weekYear","weeksInWeekYear","timeObject","weekToGregorian","weekData","weekdayOfJan4","yearInDays","daysInYear","gregorianToOrdinal","gregData","ordinalToGregorian","ordinalData","usesLocalWeekValues","hasInvalidWeekData","validYear","isInteger","validWeek","integerBetween","validWeekday","hasInvalidOrdinalData","validOrdinal","hasInvalidGregorianData","validMonth","validDay","daysInMonth","hasInvalidTimeData","millisecond","validHour","validMinute","validSecond","validMillisecond","o","isDate","maybeArray","thing","bestBy","by","best","next","pair","pick","keys","hasOwnProperty","bottom","top","floorMod","isNeg","padded","parseInteger","string","parseFloating","parseMillis","fraction","digits","towardZero","factor","modMonth","modYear","firstWeekOffset","weekOffset","weekOffsetNext","untruncateYear","offsetFormat","timeZone","modified","offHourStr","offMinuteStr","offHour","offMin","offMinSigned","asNumber","numericValue","normalizeObject","normalizer","normalized","u","hours","minutes","sign","monthsLong","monthsShort","monthsNarrow","months","weekdaysLong","weekdaysShort","weekdaysNarrow","weekdays","meridiems","erasLong","erasShort","erasNarrow","eras","meridiemForDateTime","weekdayForDateTime","monthForDateTime","eraForDateTime","formatRelativeTime","numeric","narrow","units","lastable","isDay","isInPast","fmtValue","singular","lilUnits","fmtUnit","stringifyTokens","splits","tokenToString","token","macroTokenToFormatOpts","Formats.DATE_SHORT","Formats.DATE_MED","Formats.DATE_FULL","Formats.DATE_HUGE","Formats.TIME_SIMPLE","Formats.TIME_WITH_SECONDS","Formats.TIME_WITH_SHORT_OFFSET","Formats.TIME_WITH_LONG_OFFSET","Formats.TIME_24_SIMPLE","Formats.TIME_24_WITH_SECONDS","Formats.TIME_24_WITH_SHORT_OFFSET","Formats.TIME_24_WITH_LONG_OFFSET","Formats.DATETIME_SHORT","Formats.DATETIME_MED","Formats.DATETIME_FULL","Formats.DATETIME_HUGE","Formats.DATETIME_SHORT_WITH_SECONDS","Formats.DATETIME_MED_WITH_SECONDS","Formats.DATETIME_FULL_WITH_SECONDS","Formats.DATETIME_HUGE_WITH_SECONDS","Formatter$1","Formatter","fmt","current","currentFull","bracketed","formatOpts","interval","knownEnglish","useDateTimeFormatter","extract","meridiem","English.meridiemForDateTime","standalone","English.monthForDateTime","English.weekdayForDateTime","maybeMacro","era","English.eraForDateTime","dur","tokenToField","lildur","mapped","tokens","realTokens","found","literal","collapsed","ianaRegex","combineRegexes","regexes","full","combineExtractors","extractors","mergedVals","mergedZone","cursor","ex","parse","patterns","regex","extractor","simpleParse","match","ret","offsetRegex","isoExtendedZone","isoTimeBaseRegex","isoTimeRegex","isoTimeExtensionRegex","isoYmdRegex","isoWeekRegex","isoOrdinalRegex","extractISOWeekData","extractISOOrdinalData","sqlYmdRegex","sqlTimeRegex","sqlTimeExtensionRegex","int","fallback","extractISOYmd","extractISOTime","extractISOOffset","local","fullOffset","extractIANAZone","isoTimeOnly","isoDuration","extractISODuration","yearStr","monthStr","weekStr","dayStr","hourStr","minuteStr","secondStr","millisecondsStr","hasNegativePrefix","negativeSeconds","maybeNegate","num","force","obsOffsets","fromStrings","weekdayStr","English.monthsShort","English.weekdaysLong","English.weekdaysShort","rfc2822","extractRFC2822","obsOffset","milOffset","preprocessRFC2822","rfc1123","rfc850","ascii","extractRFC1123Or850","extractASCII","isoYmdWithTimeExtensionRegex","isoWeekWithTimeExtensionRegex","isoOrdinalWithTimeExtensionRegex","isoTimeCombinedRegex","extractISOYmdTimeAndOffset","extractISOWeekTimeAndOffset","extractISOOrdinalDateAndTime","extractISOTimeAndOffset","parseISODate","parseRFC2822Date","parseHTTPDate","parseISODuration","extractISOTimeOnly","parseISOTimeOnly","sqlYmdWithTimeExtensionRegex","sqlTimeCombinedRegex","extractISOTimeOffsetAndIANAZone","parseSQL","INVALID","lowOrderMatrix","casualMatrix","daysInYearAccurate","daysInMonthAccurate","accurateMatrix","orderedUnits","reverseUnits","clear","conf","Duration","durationToMillis","matrix","vals","sum","normalizeValues","previous","previousVal","conv","rollUp","removeZeroes","newVals","config","accurate","durationLike","text","invalid","fmtOpts","millis","duration","fn","values","mixed","conversionAccuracy","built","accumulated","lastUnit","own","ak","negated","eq","v1","v2","validateStartEnd","start","end","Interval","builtStart","friendlyDateTime","builtEnd","validateError","startIsValid","endIsValid","dateTime","dateTimes","sorted","added","idx","numberOfParts","intervals","final","sofar","currentCount","ends","flattened","dateFormat","separator","mapFn","Info","proto","locObj","dayDiff","earlier","later","utcDayStart","highOrderDiffs","differs","days","lowestOrder","highWater","differ","diff","remainingMillis","lowerOrderUnits","numberingSystems","numberingSystemsUTF16","hanidecChars","parseDigits","digitRegex","append","MISSING_FTP","intUnit","post","NBSP","spaceOrNBSP","spaceOrNBSPRegExp","fixListRegex","stripInsensitivities","oneOf","strings","startIndex","groups","simple","escapeToken","unitForToken","one","two","three","four","six","oneOrTwo","oneToThree","oneToSix","oneToNine","twoToFour","fourToSix","partTypeStyleToTokenVal","tokenForPart","resolvedOpts","isSpace","style","actualType","buildRegex","handlers","matches","all","matchIndex","dateTimeFromMatches","toField","specificOffset","dummyDateTimeCache","getDummyDateTime","maybeExpandMacroToken","formatOptsToTokens","expandMacroTokens","explainFromTokens","disqualifyingUnit","regexString","rawMatches","parseFromTokens","invalidReason","MAX_DATE","unsupportedZone","possiblyCachedWeekData","possiblyCachedLocalWeekData","inst","fixOffset","localTS","tz","utcGuess","o2","o3","tsToObj","objToTS","adjustTime","oPre","millisToAdd","parseDataToDateTime","parsedZone","setZone","interpretationZone","toTechFormat","allowZ","toISODate","extended","longFormat","toISOTime","suppressSeconds","suppressMilliseconds","includeOffset","extendedZone","defaultUnitValues","defaultWeekUnitValues","defaultOrdinalUnitValues","orderedWeekUnits","orderedOrdinalUnits","normalizeUnit","normalizeUnitWithLocalWeeks","quickDT","tsNow","offsetProvis","diffRelative","round","lastOpts","argList","args","ot","zoneToUse","milliseconds","seconds","containsOrdinal","containsGregorYear","containsGregorMD","containsGregor","definiteWeekDef","useWeekData","defaultValues","objNow","foundFirst","higherOrderInvalid","gregorian","tsFinal","offsetFinal","localeToUse","localeOpts","tokenList","dayMs","minuteMs","oEarlier","oLater","o1","ts1","ts2","c1","c2","keepLocalTime","keepCalendarTime","newTS","offsetGuess","asObj","settingWeekStuff","useLocaleWeeks","normalizedUnit","q","ext","includePrefix","includeZone","includeOffsetSpace","otherDateTime","durOpts","otherIsLater","diffed","inputMs","adjustedToZone","padding","Formats.DATE_MED_WITH_WEEKDAY","Formats.DATETIME_MED_WITH_WEEKDAY","dateTimeish","Sorter","af","bf","enumObject","sortResults","counts","element","maxCount","mostOccuringElement","spaceLength","spaceChar","maxInt","hash","char","monthNames","datetime","withYear","currentYear","hideZero","timezone","startDate","includeDay","endDate","join","onlyUnique","self","removeZeroDecimals","bytes","unsafe","lastSeparator","last","plural","names","firstNames","lastNames","maxLength","sleep","resolve","StringCompare","haystack","needle","minimumPercentage","minimumChars","overlap","left","allowSplit","firstLeft","firstRight","compareWith","throttle","func","limit","lastFunc","lastRan","Country","CountryDecoder","CountryHelper","country","Address","currentCountry","addressLine1","postalCode","city","street","firstFour","remaining","address","ValidatedAddress","Province","City","REGEX","validate","uuid","stringify","Premise","Company","SortItemDirection","encodeSortList","sort","SortListDecoder","splitted","list","sub","direction","StamhoofdFilterJSONDecoder","filter","StamhoofdFilterDecoder","decoded","CountResponse","CountFilteredRequest","LimitedFilteredRequest","isEmptyFilter","mergeFilters","filters","filteredFilters","assertSort","assert","isEqualFilter","PropertyFilter","enabledWhen","requiredWhen","GroupType","ResolutionFit","ResolutionRequest","RecordType","RecordWarningType","RecordWarning","warning1","warning2","priority1","priority2","RecordChoice","RecordSettings","answers","requiredCategory","answer","RecordCategory","filterValue","ignoreFilter","categories","category","cat","cat2","cc","updatedRecords","filteredCategories","record","AskRequirement","FreeContributionSettings","FinancialSupportSettings","DataPermissionsSettings","OrganizationRecordsConfiguration","platformConfig","organizationConfig","defaultGroupConfig","groupConfig","defaultAgeGroupId","configs","first","parent","child","inheritedFilter","old","DefaultAgeGroup","File","Resolution","width","height","bestResolution","ratio","resolution","Image","RecordAnswer","timeoutMs","query","RecordAnswerDecoder","RecordAnswerDecoderStatic","RecordCheckboxAnswer","RecordTextAnswer","RecordMultipleChoiceAnswer","RecordChooseOneAnswer","RecordAddressAnswer","RecordDateAnswer","RecordPriceAnswer","RecordImageAnswer","RecordIntegerAnswer","verifyBelgianNationalNumber","trimmed","toCheck","checksum","realChecksum","realChecksum2","formatBelgianNationalNumber","warnings","choice","DocumentStatus","DocumentStatusHelper","status","DocumentSettings","DocumentTemplateDefinition","DocumentTemplateGroup","DocumentPrivateSettings","DocumentTemplatePrivate","DocumentData","Document","GroupGenderType","PermissionsResourceType","getPermissionResourceTypeName","ResourcePermissions","gl","resourceId","roleOrPermissions","PermissionRole","PermissionRoleDetailed","stack","resources","resource","autoInherit","rInstance","allInstance","PermissionRoleForResponsibility","PermissionsByRole","permissions","role","GroupPrivateSettings","OldGroupPrice","OldGroupPrices","reduced","alreadyRegisteredCount","price","RegistrationPeriodBase","StockReservation","amount","reservation","add","existingIndex","existing","remove","newReservations","ReduceablePrice","isReduced","member","GroupPrice","group","groupStockReservations","stock","Group","GroupOption","GroupOptionMenu","WaitingListType","CycleInformation","GroupDefaultEventTime","GroupSettings","foundPrice","includeAge","includeGender","who","waitingList","d2","Gender","GroupStatus","preRegistrationDate","recursive","parents","hisParents","pp","allCategories","permissionLevel","parentCategories","requirePlatformMembershipOn","RichText","EventLocation","NamedObject","EventMeta","events","queue","event","title","Event","GroupCategoryPermissions","GroupCategorySettings","GroupCategory","filteredAll","GroupCategoryTree","root","organizationPeriod","maxDepth","smartCombine","keep","filtered","admin","useActivities","MemberResponsibility","groupId","MemberPlatformMembership","MemberResponsibilityRecordBase","MemberResponsibilityRecord","includeOrganization","allResponsibilities","suffix","organization","responsibility","Permissions","LoadedPermissions","responsibilityData","inheritedResponsibilityRoles","allRoles","allResponsibilites","roles","EmailInformation","Replacement","Recipient","recipient","replacement","replacements","EmailAttachment","EmailRequest","OrganizationEmail","SetupStepType","SetupStepReview","SetupStep","isDone","isReviewed","userId","userName","finishedSteps","totalSteps","SetupSteps","step","total","stepType","RegistrationPeriodSettings","RegistrationPeriod","OrganizationRegistrationPeriodSettings","OrganizationRegistrationPeriod","tree","usedGroups","newPeriod","groupMap","categoryMap","newOrganizationPeriod","yearDifference","newGroup","newCategory","categoryId","RegistrationPeriodList","PlatformPrivateConfig","OrganizationTagType","getOrganizationTagTypeName","getOrganizationTagTypePluralName","OrganizationTag","allTags","childTag","PlatformPremiseType","PlatformMembershipTypeConfigPrice","tagIds","shouldApplyReducedPrice","tagId","priceForMember","basePrice","PlatformMembershipTypeConfig","priceConfig","PlatformMembershipTypeBehaviour","PlatformMembershipType","periodId","period","PlatformEventType","PlatformPolicy","PrivacySettings","PlatformConfig","Platform","UserPermissions","platform","platformRoles","platformPermissions","tags","tag","rp","specific","roleWithBaseAccessRights","organizationRoles","organizationId","clonedPatch","updated","realAdd","realOld","LoginProviderType","UserMeta","User","NewUser","ApiUser","ApiUserWithToken","STPackageType","STPackageTypeHelper","STPricingType","STPackageMeta","STPackage","allowAfter","STPackageStatus","expire","dates","OrganizationGenderType","UmbrellaOrganization","UmbrellaOrganizationHelper","umbrellaOrganization","ob","OrganizationType","OrganizationTypeHelper","umbrella","activities","PaymentMethod","PaymentMethodV150","downgradePaymentMethodV150","newerValue","PaymentMethodHelper","method","TransferDescriptionType","replaceReplacements","TransferSettings","duplicate","_","L","weights","numbers","C","weight","firstChars","paddedFirst","modulo","PayconiqAccount","PrivatePaymentConfiguration","AdministrationFeeSettings","PaymentMethodSettings","PaymentConfiguration","OrganizationPackages","deactivateDate","OrganizationModules","OrganizationMetaData","ids","DNSRecordType","DNSRecordStatus","DNSRecord","PaymentProvider","CreditItem","MollieStatus","AcquisitionType","MollieProfileMode","MollieProfileStatus","MollieProfile","MollieOnboarding","BuckarooSettings","OrganizationPrivateMetaData","stripeAccountMeta","Category","SeatingSizeConfiguration","SeatMarkings","SeatType","SeatingPlanSeat","SeatingPlanRow","seat","grow","SeatingPlanSection","row","size","rowWidth","rowGrow","rowX","rowY","w","SeatingPlanCategory","SeatingPlan","section","colorIndexes","reservedSeats","allowedSeats","isReservedCount","s2","selectedSeats","asAdmin","adjustedSeats","didChange","emptySeatStack","selectedSeatStack","leftSwapSeat","allowRightSwap","rSeat","ReservedSeat","isNumeric","webshop","product","seatingPlan","categoryName","reservedSeat","CartReservedSeat","WebshopField","WebshopFieldAnswer","ProductPrice","Option","OptionMenu","ProductType","ProductLocation","ProductDateRange","Product","stocks","priceStocks","menu","menuStocks","option","isAdmin","Policy","Sponsor","SponsorConfig","OptionSelectionRequirement","OptionSelectionRequirementHelper","requirement","ProductSelector","optionMenu","cartItem","allPrices","productPrices","footnote","excludedOptions","requiredOptions","DiscountRequirement","checkout","GeneralDiscount","ProductDiscount","potential","ProductDiscountRepeatBehaviour","ProductDiscountSettings","titles","descriptions","footnotes","discount","ProductDiscountTracker","Discount","productDiscount","subdescriptions","matchCount","multipliedOrderDiscount","trackers","tracker","WebshopLayout","DarkMode","WebshopTimeSlot","remainingOrders","remainingPersons","aa","bb","WebshopTimeSlots","CheckoutMethodType","CheckoutMethodTypeHelper","CheckoutMethod","slot","WebshopTakeoutMethod","WebshopOnSiteMethod","CheckoutMethodPrice","WebshopDeliveryMethod","AnyCheckoutMethodPatchDecoder","AnyCheckoutMethodDecoder","WebshopTicketType","WebshopStatus","WebshopNumberingType","WebshopAuthType","WebshopMetaData","WebshopPrivateMetaData","domain","define_STAMHOOFD_default","WebshopServerMetaData","WebshopPreview","margin","Webshop","plan","PrivateWebshop","Organization","allGroups","OrganizationWithWebshop","GetWebshopFromDomainResult","OrganizationPatch","OrganizationSimple","PaymentCustomer","PaymentStatus","PaymentStatusHelper","Token","_context","Payment","lowerQuery","Settlement","PrivatePayment","BalanceItemStatus","BalanceItemType","getBalanceItemTypeName","getBalanceItemTypeIcon","BalanceItemRelationType","getBalanceItemRelationTypeName","getBalanceItemRelationTypeDescription","shouldAggregateOnRelationType","allRelations","BalanceItemRelation","BalanceItem","BalanceItemPayment","BalanceItemPaymentWithPayment","BalanceItemPaymentWithPrivatePayment","BalanceItemWithPayments","payment","items","totalPending","totalPaid","totalPrice","totalOpen","BalanceItemWithPrivatePayments","EmergencyContact","ParentType","ParentTypeHelper","Parent","email","cleaned","ReviewTime","ReviewTimes","time","BooleanStatus","MemberDetails","contact","filterUsedAndInvalidEmails","emails","checkAlternative","formattedPhone","usedAddressIds","memberAddressId","parentAddressIds","unverifiedAddress","addressId","parentPhones","parentPhone","phone","unverifiedPhone","birthDay","age","changed","_parent","emergencyContact","_emergencyContact","newAnswers","userEmails","cleanedEmail","oldDate","times","TinyMember","Member","sortDirection","$andInMemoryFilterCompiler","runners","compileInMemoryFilter","runner","$orInMemoryFilterCompiler","$notInMemoryFilterCompiler","andRunner","$lessThanInMemoryFilterCompiler","normalizeValue","guardFilterCompareValue","$greaterThanInMemoryFilterCompiler","$equalsInMemoryFilterCompiler","invertFilterCompiler","compiler","$containsInMemoryFilterCompiler","$inInMemoryFilterCompiler","$lengthInMemoryFilterCompiler","objectPathValue","path","nextSearched","specialValue","wrapPlainFilter","createInMemoryFilterCompiler","baseInMemoryFilterCompilers","definitions","f2","filterCompiler","subFilter","compileToInMemoryFilter","memberWithRegistrationsBlobInMemoryFilterCompilers","registrationInMemoryFilterCompilers","registerItemInMemoryFilterCompilers","RegisterItemOption","IDRegisterItem","RegisterItem","registration","_h","prices","replacePrice","groupPrice","remainingMenus","registrationId","rr","waiting","available","allPricesSoldOut","optionMenus","allOptionsSoldOut","existingMember","reachedMaximum","idRegisterItem","replaceRegistrations","deleteRegistrations","cartIndex","itemsBefore","freed","Registration","RegistrationWithMember","EditorSmartButton","variable","buttons","CartStockHelper","cart","inCart","prev","reserved","remainingStock","more","productPrice","hasOption","remainingSeats","show","productStock","seatsStock","orderMaximum","allowMultiple","priceStock","optionStock","maximumPriceStock","maximumOptionStock","minArr","CartItemPrice","CartItemOption","CartItem","priceId","optionId","cartItemOption","chosenPrice","unitPrice","seatPrice","expectedPrice","priceCombinations","calculatedPrice","refresh","validateSeats","minimumRemaining","stockDefinition","invalidSeats","otherItems","otherSeats","adjusted","Cart","allowMerge","oldCode","newItems","Customer","EditorSmartVariable","exampleRegistrationPayment","PaymentGeneral","BalanceItemPaymentDetailed","variables","fillSmartVariables","Order","OrderData","MemberWithRegistrationsBlob","subtypes","recipients","shared","createLoginDetailsReplacement","formattedEmail","EmailRecipient","unverifiedEmail","MembersBlob","EmailTemplateType","EmailTemplate","EmailRecipientFilterType","sharedReplacements","getExampleRecipient","EmailStatus","EmailRecipientsStatus","EmailRecipientSubfilter","EmailRecipientFilter","Email","EmailPreview","DiscountCode","Checkout","acc","_filter","_record","_patch","organizationMeta","checkoutMethod","_webshop","_organizationMeta","timeSlot","availableTimeslots","i18n","user","discountOrders","discounts","bestPotential","Ticket","TicketPublic","order","isCustomer","nameField","_j","_k","TicketOrder","TicketPublicPrivate","TicketPrivate","OrderStatusV103","OrderStatusV137","OrderStatus","OrderStatusHelper","customer","_l","forcePayment","PrivateOrder","PrivateOrderWithTickets","tickets","ticket","patches","orders","mainLoop","OrderResponse","BalanceItemDetailed","balanceItemPayment","shortDescriptions","shortDescription","ReceivableBalanceType","getReceivableBalanceTypeName","$t","ReceivableBalanceObjectContact","ReceivableBalanceObject","ReceivableBalance","DetailedReceivableBalance","UserWithMembers","ChargeMembershipsTypeSummary","ChargeMembershipsSummary","CreateOrganization","ForgotPasswordRequest","GroupsWithOrganizations","OrganizationAdmins","PayableBalance","PayableBalanceCollection","DetailedPayableBalance","DetailedPayableBalanceCollection","RegisterResponse","SignupResponse","VerifyEmailRequest","PollEmailVerificationRequest","PollEmailVerificationResponse","PaginatedResponse","PaginatedResponseDecoder","resultDecoder","querydecoder","BalanceItemCartItem","maxPrice","IDRegisterCart","RegisterCart","registrations","otherItem","memberId","replaceWith","cleanedBalanceItems","balanceItem","cleanedRegistrations","singleOrganization","IDRegisterCheckout","RegisterCheckout","preferredId","PlatformFamily","blob","family","removeMissing","platformMember","PlatformMember","memberList","cloneMember","skip","occurrences","searchString","addresses","defaultGroupIds","organizationIds","organizationTags","MembershipStatus","isTemporary","def","foundPermissions","recordsConfigurations","recordsConfiguration","configurations","checkPermissions","scopedOrganizations","recordCategory","hasPermission","organizationPermissions","EmailAddressSettings","ExcelExportType","ExcelSheetFilter","ExcelWorkbookFilter","ExcelExportRequest","ExcelExportResponse","EventPermissionChecker","getOrganization","userPermissions","accessRight","TagHelper","isRootTag","otherTag","otherTagId","tagIdToSearch","tagMap","childTagId","RequestBag","bag","request","RequestResult","headers","responseVersion","Request","server","middleware","owner","reject","finished","response","timeout","body","typeCopy","queryString","retry","header","err","bodyText","json","line","Server","host","I18n","app","messages","namespace","loaded","replace","makeMap","expectsLowerCase","EMPTY_OBJ","EMPTY_ARR","NOOP","NO","isOn","isModelListener","extend","el","hasOwn","isArray","isMap","toTypeString","isSet","isFunction","isSymbol","isObject","isPromise","objectToString","toRawType","isPlainObject","isIntegerKey","isReservedProp","cacheStringFunction","cache","camelizeRE","camelize","hyphenateRE","hyphenate","capitalize","toHandlerKey","hasChanged","invokeArrayFns","fns","arg","looseToNumber","toNumber","_globalThis","getGlobalThis","normalizeStyle","res","parseStringStyle","listDelimiterRE","propertyDelimiterRE","styleCommentRE","cssText","tmp","normalizeClass","normalizeProps","props","klass","specialBooleanAttrs","isSpecialBooleanAttr","includeBooleanAttr","looseCompareArrays","equal","looseEqual","aValidType","bValidType","aKeysCount","bKeysCount","aHasKey","bHasKey","looseIndexOf","toDisplayString","replacer","_key","entries","val2","stringifySymbol","activeEffectScope","EffectScope","detached","currentEffectScope","fromParent","recordEffectScope","effect","scope","getCurrentScope","onScopeDispose","activeEffect","ReactiveEffect","trigger","scheduler","pauseTracking","dep","triggerComputed","resetTracking","lastShouldTrack","shouldTrack","lastEffect","preCleanupEffect","postCleanupEffect","computed","effect2","cleanupDepEffect","trackId","pauseScheduleStack","trackStack","pauseScheduling","resetScheduling","queueEffectSchedulers","trackEffect","debuggerEventExtraInfo","oldDep","triggerEffects","dirtyLevel","tracking","createDep","cleanup","targetMap","ITERATE_KEY","MAP_KEY_ITERATE_KEY","track","depsMap","oldTarget","deps","newLength","key2","getDepFromReactive","isNonTrackableKeys","builtInSymbols","arrayInstrumentations","createArrayInstrumentations","instrumentations","toRaw","BaseReactiveHandler","_isReadonly","_isShallow","receiver","isReadonly2","isShallow2","shallowReadonlyMap","readonlyMap","shallowReactiveMap","reactiveMap","targetIsArray","readonly","reactive","MutableReactiveHandler","isOldValueReadonly","isReadonly","isShallow","hadKey","ReadonlyReactiveHandler","mutableHandlers","readonlyHandlers","shallowReactiveHandlers","toShallow","getProto","get","rawTarget","rawKey","has2","wrap","toReadonly","toReactive","has","get2","deleteEntry","hadItems","createForEach","callback","thisArg","observed","createIterableMethod","targetIsMap","isPair","isKeyOnly","innerIterator","done","createReadonlyMethod","createInstrumentations","mutableInstrumentations2","shallowInstrumentations2","readonlyInstrumentations2","shallowReadonlyInstrumentations2","mutableInstrumentations","readonlyInstrumentations","shallowInstrumentations","shallowReadonlyInstrumentations","createInstrumentationGetter","shallow","mutableCollectionHandlers","shallowCollectionHandlers","readonlyCollectionHandlers","targetTypeMap","rawType","getTargetType","createReactiveObject","shallowReactive","baseHandlers","collectionHandlers","proxyMap","existingProxy","targetType","proxy","isReactive","isProxy","raw","markRaw","ComputedRefImpl","getter","_setter","isSSR","triggerRefValue","trackRefValue","getterOrOptions","debugOptions","setter","onlyGetter","ref2","newVal","ref","createRef","shallowRef","rawValue","RefImpl","__v_isShallow","useDirectValue","unref","shallowUnwrapHandlers","proxyRefs","objectWithRefs","CustomRefImpl","factory","customRef","ObjectRefImpl","_object","_defaultValue","GetterRefImpl","_getter","toRef","defaultValue","propertyToRef","ErrorCodes","callWithErrorHandling","handleError","callWithAsyncErrorHandling","throwInDev","contextVNode","cur","exposedInstance","errorInfo","errorCapturedHooks","appErrorHandler","logError","isFlushing","isFlushPending","flushIndex","pendingPostFlushCbs","activePostFlushCbs","postFlushIndex","resolvedPromise","currentFlushPromise","nextTick","findInsertionIndex","middle","middleJob","middleJobId","queueJob","job","queueFlush","flushJobs","invalidateJob","queuePostFlushCb","cb","flushPreFlushCbs","seen","flushPostFlushCbs","deduped","comparator","emit","rawArgs","modelArg","modifiersKey","trim","handlerName","handler","onceHandler","normalizeEmitsOptions","comp","appContext","asMixin","cached","hasExtends","extendEmits","raw2","normalizedFromExtend","isEmitListener","currentRenderingInstance","currentScopeId","setCurrentRenderingInstance","pushScopeId","popScopeId","withCtx","ctx","isNonScopedSlot","renderFnWithContext","setBlockTracking","prevInstance","renderComponentRoot","Component","vnode","withProxy","propsOptions","slots","attrs","render","renderCache","setupState","inheritAttrs","fallthroughAttrs","proxyToUse","thisProxy","normalizeVNode","render2","getFunctionalFallthrough","blockStack","createVNode","Comment","shapeFlag","filterModelListeners","cloneVNode","shouldUpdateComponent","prevVNode","nextVNode","optimized","prevProps","prevChildren","component","nextProps","nextChildren","patchFlag","emits","hasPropsChanged","dynamicProps","emitsOptions","nextKeys","updateHOCHostEl","COMPONENTS","DIRECTIVES","resolveComponent","maybeSelfReference","resolveAsset","NULL_DYNAMIC_COMPONENT","resolveDynamicComponent","resolveDirective","warnMissing","currentInstance","selfName","getComponentName","registry","isSuspense","queueEffectWithSuspense","suspense","ssrContextKey","useSSRContext","inject","watchEffect","doWatch","watchSyncEffect","INITIAL_WATCHER_VALUE","watch","immediate","deep","flush","once","onTrack","onTrigger","_cb","unwatch","reactiveGetter","source2","traverse","forceTrigger","isMultiSource","onCleanup","baseGetter","ssrCleanup","isInSSRComponentSetup","queuePostRenderEffect","instanceWatch","publicThis","createPathGetter","reset","setCurrentInstance","segments","depth","currentDepth","withDirectives","directives","getExposeProxy","bindings","dir","modifiers","invokeDirectiveHook","oldBindings","binding","hook","leaveCbKey","enterCbKey","useTransitionState","state","onMounted","onBeforeUnmount","TransitionHookValidator","BaseTransitionPropsValidators","BaseTransitionImpl","getCurrentInstance","children","getTransitionRawChildren","rawProps","emptyPlaceholder","innerChild","getKeepAliveChild","enterHooks","resolveTransitionHooks","setTransitionHooks","oldChild","oldInnerChild","isSameVNodeType","leavingHooks","earlyRemove","delayedLeave","leavingVNodesCache","getLeavingNodesForType","BaseTransition","leavingVNodes","appear","persisted","onBeforeEnter","onEnter","onAfterEnter","onEnterCancelled","onBeforeLeave","onLeave","onAfterLeave","onLeaveCancelled","onBeforeAppear","onAppear","onAfterAppear","onAppearCancelled","callHook","callAsyncHook","hook2","hooks","leavingVNode","afterHook","cancelHook","called","cancelled","vnode2","isKeepAlive","keepComment","parentKey","keyedFragmentCount","Fragment","defineComponent","extraOptions","isAsyncWrapper","onActivated","registerKeepAliveHook","onDeactivated","wrappedHook","injectHook","injectToKeepAliveRoot","keepAliveRoot","injected","onUnmounted","prepend","createHook","lifecycle","onBeforeMount","onBeforeUpdate","onUpdated","onServerPrefetch","onRenderTriggered","onRenderTracked","onErrorCaptured","renderList","renderItem","createSlots","dynamicSlots","j","renderSlot","noSlotted","openBlock","validSlotContent","ensureValidVNode","rendered","createBlock","vnodes","isVNode","toHandlers","preserveCaseIfNecessary","getPublicInstance","isStatefulComponent","publicPropertiesMap","resolveMergedOptions","hasSetupBinding","PublicInstanceProxyHandlers","accessCache","normalizedProps","shouldCacheAccess","publicGetter","cssModule","globalProperties","descriptor","useAttrs","getContext","createSetupContext","normalizePropsOrEmits","mergeModels","applyOptions","dataOptions","computedOptions","methods","watchOptions","provideOptions","injectOptions","created","beforeMount","mounted","beforeUpdate","activated","deactivated","beforeDestroy","beforeUnmount","destroyed","unmounted","renderTracked","renderTriggered","errorCaptured","serverPrefetch","expose","components","resolveInjections","methodHandler","opt","createWatcher","provides","provide","registerLifecycleHook","register","_hook","exposed","checkDuplicateProperties","normalizeInject","mixins","extendsOptions","globalMixins","optionMergeStrategies","resolved","mergeOptions","strats","strat","internalOptionMergeStrats","mergeDataFn","mergeEmitsOrPropsOptions","mergeObjectOptions","mergeAsArray","mergeWatchOptions","mergeInject","merged","createAppContext","uid$1","createAppAPI","hydrate","rootComponent","rootProps","installedPlugins","isMounted","plugin","mixin","directive","rootContainer","isHydrate","lastApp","currentApp","parentProvides","treatDefaultAsFactory","internalObjectProto","createInternalObject","isInternalObject","initProps","isStateful","setFullProps","updateProps","rawPrevProps","rawCurrentProps","hasAttrsChanged","propsToUpdate","camelizedKey","resolvePropValue","kebabKey","needCastKeys","rawCastValues","camelKey","castValues","isAbsent","hasDefault","propsDefaults","normalizePropsOptions","extendProps","normalizedKey","validatePropName","booleanIndex","getTypeIndex","stringIndex","getType","ctor","isSameType","expectedTypes","isInternalKey","normalizeSlotValue","normalizeSlot","rawSlot","normalizeObjectSlots","rawSlots","normalizeVNodeSlots","initSlots","updateSlots","needDeletionCheck","deletionComparisonTarget","setRef","rawRef","oldRawRef","parentSuspense","isUnmount","refValue","oldRef","refs","_isString","_isRef","doSet","createRenderer","baseCreateRenderer","createHydrationFns","hostInsert","hostRemove","hostPatchProp","hostCreateElement","hostCreateText","hostCreateComment","hostSetText","hostSetElementText","hostParentNode","hostNextSibling","hostSetScopeId","hostInsertStaticContent","n1","n2","anchor","parentComponent","slotScopeIds","getNextHostNode","unmount","Text","processText","processCommentNode","Static","mountStaticNode","processFragment","processElement","processComponent","internals","moveStaticNode","nextSibling","removeStaticNode","mountElement","patchElement","vnodeHook","transition","dirs","mountChildren","resolveChildrenNamespace","setScopeId","unmountChildren","invokeVNodeHook","needCallTransitionHooks","needTransition","scopeId","subTree","parentVNode","cloneIfMounted","dynamicChildren","oldProps","newProps","toggleRecurse","patchBlockChildren","patchChildren","patchProps","oldChildren","newChildren","fallbackContainer","oldVNode","newVNode","fragmentStartAnchor","fragmentEndAnchor","fragmentSlotScopeIds","traverseStaticChildren","mountComponent","updateComponent","initialVNode","createComponentInstance","setupComponent","setupRenderEffect","placeholder","updateComponentPreRender","componentUpdateFn","bu","nonHydratedAsyncRoot","locateNonHydratedAsyncRoot","originNext","nextTree","prevTree","bm","isAsyncWrapperVNode","hydrateNode","hydrateSubTree","scopedInitialVNode","update","prevShapeFlag","patchKeyedChildren","patchUnkeyedChildren","oldLength","commonLength","nextChild","parentAnchor","l2","e1","e2","nextPos","s1","keyToNewIndexMap","toBePatched","moved","maxNewIndexSoFar","newIndexToOldIndexMap","prevChild","newIndex","increasingNewIndexSequence","getSequence","nextIndex","moveType","leave","delayLeave","afterLeave","remove2","performLeave","doRemove","shouldInvokeDirs","shouldInvokeVnodeHook","unmountComponent","removeFragment","performRemove","bum","um","currentNamespace","allowed","ch1","ch2","len","arrI","subComponent","isTeleport","isTeleportDisabled","isTargetSVG","isTargetMathML","resolveTarget","select","targetSelector","TeleportImpl","insert","querySelector","createText","createComment","disabled","mainAnchor","targetAnchor","mount","container2","anchor2","wasDisabled","currentContainer","currentAnchor","moveTeleport","nextTarget","updateCssVars","shouldRemove","hydrateTeleport","isReorder","node","parentNode","hydrateChildren","targetNode","Teleport","currentBlock","disableTracking","closeBlock","isBlockTreeEnabled","setupBlock","createElementBlock","createBaseVNode","normalizeKey","normalizeRef","ref_key","ref_for","isBlockNode","needFullChildrenNormalization","normalizeChildren","_createVNode","isClassComponent","guardReactiveProps","extraProps","mergeRef","mergedProps","mergeProps","createTextVNode","flag","createStaticVNode","content","numberOfNodes","createCommentVNode","asBlock","slotFlag","toMerge","incoming","emptyAppContext","uid","internalSetCurrentInstance","setInSSRSetupState","registerGlobalSetter","setters","unsetCurrentInstance","setupResult","setupStatefulComponent","setup","setupContext","resolvedResult","handleSetupResult","finishComponentSetup","compile","skipOptions","template","isCustomElement","compilerOptions","delimiters","componentCompilerOptions","finalCompilerOptions","attrsProxyHandlers","includeInferred","computed$1","useModel","camelizedName","hyphenatedName","localValue","propValue","modifierKey","i2","propsOrChildren","svgNS","mathmlNS","doc","templateContainer","nodeOps","is","selector","before","wrapper","TRANSITION","ANIMATION","vtcKey","Transition","resolveTransitionProps","DOMTransitionPropsValidators","TransitionPropsValidators","h2","hasExplicitCallback","baseProps","enterFromClass","enterActiveClass","enterToClass","appearFromClass","appearActiveClass","appearToClass","leaveFromClass","leaveActiveClass","leaveToClass","durations","normalizeDuration","enterDuration","leaveDuration","finishEnter","isAppear","removeTransitionClass","finishLeave","makeEnterHook","nextFrame","addTransitionClass","whenTransitionEnds","forceReflow","NumberOf","cls","_vtc","endId","expectedType","explicitTimeout","resolveIfNotStale","propCount","getTransitionInfo","endEvent","ended","onEnd","styles","getStyleProperties","transitionDelays","transitionDurations","transitionTimeout","getTimeout","animationDelays","animationDurations","animationTimeout","hasTransform","delays","toMs","patchClass","isSVG","transitionClasses","vShowOriginalDisplay","vShowHidden","vShow","setDisplay","CSS_VAR_TEXT","displayRE","patchStyle","isCssString","hasControlledDisplay","prevStyle","setStyle","cssVarText","importantRE","prefixed","autoPrefix","prefixes","prefixCache","rawName","xlinkNS","patchAttr","isBoolean","patchDOMProp","needRemove","addEventListener","removeEventListener","veiKey","patchEvent","prevValue","nextValue","invokers","existingInvoker","parseName","invoker","createInvoker","optionsModifierRE","cachedNow","getNow","initialValue","patchStopImmediatePropagation","originalStop","isNativeOn","patchProp","shouldSetAsProp","positionMap","newPositionMap","moveCbKey","TransitionGroupImpl","moveClass","hasCSSTransform","callPendingCbs","recordPosition","movedChildren","applyTranslation","cssTransitionProps","removeMode","TransitionGroup","oldPos","newPos","dx","dy","getModelAssigner","onCompositionStart","onCompositionEnd","assignKey","vModelText","lazy","castToNumber","domValue","elValue","vModelCheckbox","modelValue","elementValue","getValue","checked","assign","getCheckboxValue","setChecked","vModelRadio","vModelSelect","isSetModel","selectedVal","setSelected","_binding","isMultiple","isArrayValue","optionValue","optionType","systemModifiers","modifierGuards","withModifiers","cacheKey","guard","keyNames","withKeys","eventKey","rendererOptions","renderer","ensureRenderer","createApp","containerOrSelector","normalizeContainer","resolveRootNamespace","__defProp","__defNormalProp","__publicField","_UrlHelper","url","localFixedPrefix","protocol","search","params","helper","matchPath","UrlHelper","templateParts","resultParams","templatePart","param","templateToUrl","HistoryManagerStatic","action","delta","timer","listener","ComponentWithProperties","didJustLoadPage","formattedUrl","undoAction","counter","adjustHistoryCount","onPopState","newCounter","animate","deletedStates","newState","clickHandler","HistoryManager","useCurrentComponent","extendingProxy","forAllRoots","alreadyProcessed","handled","lastItem","_ComponentWithProperties","properties","worked","promise","animated","ShapeFlags","getInnerChild","resetShapeFlag","makeProvidesParentReactive","reactiveInstance","originalProvides","ownProvides","proxyProvider","_target","_a2","ComponentWithPropertiesInstance","sharedContext","parentHistory","combinedProvide","disableUrl","inheritedUrlRaw","updateUrl","_unmount","createElement","instance2","_innerVnode","da","getChildVNode","pendingCacheKey","cacheSubtree","cachedVNode","parent2","_sfc_main$1","_export_sfc","sfc","_sfc_render$4","_ctx","_cache","$props","$setup","$data","$options","_component_ComponentWithPropertiesInstance","createElementVNode","FramedComponent","useNavigationController","NavigationController$1","extra","newComponent","run","mightBe","lastComponent","destroy","internalScrollElement","clientHeight","internalClientHeight","popped","adjustHistory","component2","canAnimate","parentPop","insertedElement","leavingElement","internal","nextInternal","scrollOuterHeight","h22","childElement","transitionDuration","scrollElement","_element","_hoisted_1$3","_sfc_render$3","_component_FramedComponent","NavigationController","usePop","rawPop","pop","useNavigate","present","usePresent","useShow","showDetail","useShowDetail","toRoute","route","componentProperties","originalProperties","realComponent","currentRoutes","getCurrentRoutes","toId","urlOrName","prop1","prop2","onCheckRoutes","addCheckRoutesMountedHandler","onNotCheckRoutes","defineRoutes","routes","urlhelpers","useUrl","navigate","provideDefaultHandler","handleRoutes","routes2","defaultHandler","getDefaultRoute","allowDetail","defaultRoute","setDefaultHandler","unreffedProvideDefaultHandler","extraRoutes","checkRouteCache","useCurrentHref","useCheckRoute","currentPath","checkMatchResult","quickCheckCache","checkRoute","checkId","normalizePushOptions","currentComponent","urlHelpers","rawShow","rawShowDetail","rawPresent","useDismiss","rawDismiss","dismiss","useCanPop","useCanDismiss","useFocused","setTitleSuffix","navigationUrl","_hoisted_1$2","_sfc_main","__props","__expose","Popup","hide","modalStackComponent","useModalStackComponent","mainContent","pushDown","popups","buildClass","vvv","isFocused","onKey","shouldNavigateAway","onClick","StackComponent$1","hadHistory","newFocused","_hoisted_1$1","_sfc_render$2","StackComponent","injectHooks","instanceProxy","ModalStackComponent$1","nav","_sfc_render$1","_component_NavigationController","_component_StackComponent","ModalStackComponent","useSplitViewController","SplitViewController$1","detail","succeeded","_hoisted_1","_hoisted_2","_hoisted_3","_sfc_render","SplitViewController","usePopup","navigationMethods","navigationOptions","NavigationMixin","countries","languages","useTranslate","I18nController","_I18nController","language","addPrefix","validLocales","__variableDynamicImportRuntimeHelper","Storage","defaultCountry","defaultLanguage","needsSave","isPrerender","storage","tld","localizedDomain","listCountries","hostProtocol","links","meta","redirected","LocalizedDomains","NetworkManagerStatic","Toast","latestVersion","NetworkManager","ContextPermissions","resourceType","webshopId","ManagedToken","onChange","shouldRetry","LocalStorage","_Storage","dec2hex","dec","generateId","SessionContext","preventComplete","usePlatformStorage","json2","oid_rt","spaState","form","spaStateInput","organizationIdInput","webshopIdInput","redirectUriInput","promptInput","clientInput","usedPlatformStorage","returnedOrganization","oldAdmins","skipIfNotOutdated","fetchedUser","fetchedOrganization","SessionManager","SessionStorage","__decorateClass","SessionManagerStatic","session","retryWithLess","allowCache","sessionStorage","sessions","LoginHelper","password","tokenResponse","firstName","lastName","registerCode","useOrganizationManager","OrganizationManager","admins","periods","periodPatch","usePlatformManager","PlatformManager","$platform","ColorHelper","backgroundFetch","requirePrivateConfig","fromStorage","manager","platformManager","href","link","useRequestOwner","GlobalEventBus","useMemberManager","MemberManager","lastUpdatedAt","groupIds","skipOrganizationIds","storedData","idCheckout","knownGroups","requestGroupIds","groupsWithOrganizations","versionBox","encoded","_ViewportHelper","modern","viewportHandler","clickedElement","paddingTop","paddingBottom","scrollPosition","viewportHeight","vh","bottomPadding","elRect","scrollRect","elBottomPadding","exponential","endPosition","easingFunction","previousTimeStamp","startPosition","previousPosition","timestamp","elapsed","ViewportHelper","ErrorBox$1","minimum","firstElement","VueComponent","$internalHooks","createDecorator","Ctor","buildComponent","OriginalClass","decoratorOptions","vm","defaultData","Mixins","injectPropertyDecorator","componentOptions","Prop","optionsOrTarget","Ref","refKey","Watch","STErrorBox","_openBlock","_createBlock","_Transition","afterEnter","_withCtx","_createElementVNode","STErrorsDefault","_resolveComponent","_createElementBlock","_Fragment","_renderList","_createTextVNode","_toDisplayString","STErrorsInput","_normalizeClass","_renderSlot","Validator","validation","valid","validationKeys","isValid","useErrors","useValidation","validator","EmailStyler","html","subject","imported","__vitePreload","__vite_default__","primaryColor","primaryColorContrast","hrCSS","buttonCSS","inlineLinkCSS","descriptionCSS","elements","blockSmartVariables","buttonElements","button","inlineButtons","blocks","ps","hrElements","inlineLinkElements","buttonDescriptionElements","emptyP","escapeSubject","EventBus","useContext","refOrReal","usePatch","createPatch","iv","newPatch","usePatchableArray","patchArray","usePatchArray","useDraggableArray","addPatch","records","recordsPatch","useDraggableArrayIds","useEmitPatch","propName","useKeyUpDown","actions","usePatchMoveUpDown","movingItemId","inList","moveTo","usePatchMoveUpDownIds","usePlatform","useUser","useOrganization","useRequiredOrganization","useIsIOS","useIsMobile","useDeviceWidth","useAuth","useCountry","useUninheritedPermissions","overrides","useInterval","running","useGlobalEventListener","eventName","useBackForward","otherProps","goBack","goForward","hasPrevious","hasNext","seek","useSetupStepTranslations","reviewTitleMap","reviewDescriptionMap","reviewCheckboxTitleMap","todoTitleMap","todoDescriptionMap","useEmitPatchArray","addArrayPatch","addPut","addDelete","extendSort","useMembersObjectFetcher","SelectableColumn","SelectableSheet","column","SelectableWorkbook","sheet","visibleSheet","exporting","groupedColumns","getAllSelected","columns","getAllSelectedindeterminate","setAllSelected","selected","savedFilter","decodedJson","saveFilter","startExport","doExport","ErrorBox","filename","ToastButton","OrderedMap","newKey","place","without","findDiffStart","childA","childB","inner","findDiffEnd","posA","posB","iA","iB","same","minSize","nodeStart","blockSeparator","leafText","nodeText","copy","otherPos","retIndex","curPos","schema","joined","nodes","compareDeep","Mark$1","Mark","placed","mark","marks","ReplaceError","Slice","openStart","openEnd","fragment","insertInto","removeRange","openIsolating","indexTo","offsetTo","dist","$from","$to","slice","replaceOuter","close","prepareSliceForReplace","replaceThreeWay","replaceTwoWay","checkJoin","main","joinable","$before","$after","addNode","addRange","$start","$end","endIndex","$along","ResolvedPos","parentOffset","dOff","pred","NodeRange","rem","resolveCache","elt","ResolveCache","resolveCacheSize","emptyAttrs","Node$1","Node","startPos","includeParents","wrapMarks","TextNode","ContentMatch","validEnd","nodeTypes","stream","TokenStream","expr","parseExpr","dfa","nfa","checkForDeadEnds","frag","toEnd","types","tp","active","scan","out","tok","exprs","parseExprSeq","parseExprSubscript","parseExprAtom","parseExprRange","parseNum","resolveName","typeName","connect","edge","term","edges","loop","cmp","nullFrom","labeled","explore","states","work","dead","defaultAttrs","defaults","attrName","attr","computeAttrs","given","checkAttrs","initAttrs","Attribute","NodeType$2","NodeType","spec","matched","markType","topType","validateType","MarkType","rank","Schema","instanceSpec","contentExprCache","contentExpr","markExpr","gatherMarks","excl","ok","isTagRule","rule","isStyleRule","DOMParser","rules","matchedStyles","dom","ParseContext","priority","blockTags","ignoreTags","listTags","OPT_PRESERVE_WS","OPT_PRESERVE_WS_FULL","OPT_OPEN_LEFT","wsOptionsFor","preserveWhitespace","NodeContext","pendingMarks","solid","fill","nextType","pending","markMayApply","parser","isOpen","topNode","topContext","topOptions","addMarks","removeMarks","nodeBefore","domNodeBefore","matchAfter","ruleID","normalizeList","sync","oldNeedsBlock","continueAfter","nodeType","startIn","contentDOM","cx","block","preserveWS","textNode","useRoot","minDepth","deflt","findSameMarkInSet","upto","stashMark","prevItem","DOMSerializer","markDOM","renderSpec","inline","toDOM","structure","xmlNS","gatherToDOM","suspiciousAttributeCache","suspiciousAttributes","suspiciousAttributesInner","blockArraysIn","tagName","suspicious","space","innerContent","lower16","factor16","makeRecover","recoverIndex","recoverOffset","DEL_BEFORE","DEL_AFTER","DEL_ACROSS","DEL_SIDE","MapResult$2","delInfo","recover","StepMap$2","StepMap","ranges","inverted","assoc","oldIndex","oldSize","newSize","side","del","MapResult","oldStart","newStart","Mapping$1","Mapping","maps","mirror","mirrors","mapping","startSize","mirr","totalSize","inverse","corr","stepsByID","Step$2","stepClass","StepResult$2","StepResult","failed","message","mapFragment","AddMarkStep","Step","oldSlice","RemoveMarkStep","AddNodeMarkStep","newSet","RemoveNodeMarkStep","ReplaceStep","contentBetween","ReplaceAroundStep","gapFrom","gapTo","gap","inserted","addMark","tr","removed","removing","adding","removeMark","toRemove","clearIncompatible","parentType","replSteps","newline","canCut","liftTarget","range","lift","gapStart","gapEnd","splitting","findWrapping","innerRange","around","findWrappingOutside","findWrappingInside","withAttrs","outer","inside","innerMatch","wrappers","setBlockType","mapFrom","canChangeType","startM","endM","$pos","setNodeMarkup","newNode","canSplit","typesAfter","innerType","rest","overrideChild","baseType","split","typeAfter","canJoin","joinPoint","insertPoint","dropPoint","pass","bias","insertPos","fits","wrapping","replaceStep","fitsTrivially","Fitter","Fitter$1","unplaced","fit","moveInline","placedSize","startDepth","sliceDepth","contentAt","frontierDepth","openAtEnd","dropFromFragment","taken","openEndCount","closeNodeStart","addToFragment","contentAfterFits","dropInner","open","invalidMarks","definesContent","replaceRange","targetDepths","coveredDepths","preferredTarget","preferredTargetIndex","leftNodes","preferredDepth","leftNode","openDepth","targetDepth","expand","closeFragment","startSteps","oldOpen","newOpen","replaceRangeWith","point","deleteRange","covered","AttrStep","DocAttrStep","TransformError","Transform$1","classesById","Selection","$anchor","$head","SelectionRange","lastNode","lastParent","selectionToInsertionEnd","textOnly","TextSelection","findSelectionIn","AllSelection","selectionClass","warnedAboutTextSelection","checkTextSelection","TextBookmark","head","dPos","NodeSelection","deleted","NodeBookmark","sel","AllBookmark","startLen","_from","_to","_newFrom","newTo","UPDATED_SEL","UPDATED_MARKS","UPDATED_SCROLL","Transaction","Transform","selection","inheritMarks","bind","FieldDesc","baseFields","_marks","_old","Configuration","plugins","EditorState","ignore","rootTr","trs","haveNew","oldState","newInstance","$config","pluginFields","bindProps","Plugin","createKey","PluginKey","MapResult$1","StepMap$1","Step$1","StepResult$1","domIndex","reusedRange","textRange","clearReusedRange","isEquivalentPosition","off","targetOff","scanFor","atomElements","nodeSize","hasBlockDesc","textNodeBefore$1","textNodeAfter$1","isOnEdge","atStart","atEnd","selectionCollapsed","domSel","keyEvent","keyCode","deepActiveElement","caretFromPoint","agent","ie_edge","ie_upto10","ie_11up","ie","ie_version","gecko","_chrome","chrome","chrome_version","safari","ios","mac","windows","android","webkit","webkit_version","windowRect","vp","getSide","clientRect","rect","scaleX","scaleY","scrollRectIntoView","view","startDOM","scrollThreshold","scrollMargin","atTop","bounding","moveX","moveY","startX","startY","dX","dY","storeScrollPos","refDOM","refTop","localRect","scrollStack","resetScrollPos","newRefTop","restoreScrollStack","dTop","preventScrollSupported","focusPreventScroll","stored","findOffsetInNode","coords","closest","dxClosest","coordsClosest","rowBot","rowTop","firstBelow","coordsBelow","childIndex","rects","findOffsetInText","singleRect","inRect","targetKludge","posFromElement","posFromCaret","outsideBlock","sawBlock","elementFromPoint","box","startI","posAtCoords","caret","nonZero","BIDI","coordsAtPos","atom","supportEmptyRange","rectBefore","rectAfter","flattenV","takeSide","flattenH","withFlushedState","viewState","endOfTextblockVertical","nearest","boxes","maybeRTL","endOfTextblockHorizontal","oldNode","oldOff","anchorNode","anchorOffset","oldBidiLevel","parentDOM","newOff","cachedState","cachedDir","cachedResult","endOfTextblock","NOT_DIRTY","CHILD_DIRTY","CONTENT_DIRTY","NODE_DIRTY","ViewDesc","widget","outerDeco","innerDeco","nodeName","domBefore","domAfter","onlyNodes","nodeDOM","TrailingHackViewDesc","WidgetViewDesc","enter","fromOffset","toOffset","childBase","anchorDOM","headDOM","brKludge","domSelExtended","mutation","startInside","endInside","dirty","stop","CompositionViewDesc","textDOM","mut","MarkViewDesc","custom","replaceNodes","NodeViewDesc","descObj","applyOuterDeco","CustomNodeViewDesc","TextViewDesc","sameOuterDeco","composition","localComposition","compositionInChild","updater","ViewTreeUpdater","iterDeco","insideNode","compIndex","renderDescs","iosHacks","textPos","findTextInFragment","needsWrap","oldDOM","patchOuterDeco","computeOuterDeco","docViewDesc","docView","descs","written","childDOM","rm","OuterDecoLevel","noDeco","outerDOM","prevComputed","curComputed","curDOM","deco","patchAttributes","prevList","curList","lock","preMatch","maxKeep","markDesc","targetDesc","domNode","nextDOM","locked","ch","lastChild","hack","parentDesc","curDesc","descI","fI","compareSide","onWidget","onNode","locals","decoIndex","restNode","parentIndex","widgets","cutAt","oldCSS","childStart","selectionFromDOM","origin","nearestDesc","inWidget","nearestDescNode","selectionBetween","editorOwnsSelection","hasSelection","selectionToDOM","syncNodeSelection","curSel","selectCursorWrapper","resetEditableFrom","resetEditableTo","brokenSelectBetweenUneditable","temporarilyEditableNear","resetEditable","removeClassOnSelectionChange","setEditable","img","clearNodeSelection","hasFocusAndSelection","anchorInRightPlace","moveSelectionBlock","$side","apply","selectHorizontally","mods","$newHead","nodePos","nodeLen","isIgnorable","skipIgnoredNodes","skipIgnoredNodesBefore","skipIgnoredNodesAfter","moveNode","moveOffset","setSelFocus","textNodeAfter","textNodeBefore","findDirection","mid","selectVertically","beyond","stopNativeHorizontalDelete","empty","nextNode","switchEditable","safariDownArrowBug","focusNode","focusOffset","getMods","captureKeyDown","serializeForClipboard","serializer","detachedDoc","firstChild","wrapMap","parseFromClipboard","plainText","inCode","asText","readHTML","restoreReplacedSpaces","contextNode","sliceData","inlineParents","addContext","closeSlice","normalizeSiblings","lastWrap","inLast","addToSibling","closeRight","wrapped","withWrappers","sibling","closeRange","_detachedDoc","metas","firstTag","editHandlers","passiveHandlers","InputState","initInput","eventBelongsToView","runCustomHandler","ensureListeners","setSelectionOrigin","destroyInput","currentHandlers","dispatchEvent","_event","inOrNearComposition","eventCoords","isNear","click","runHandlerOnContext","updateSelection","selectClickedLeaf","selectClickedNode","selectedNode","selectAt","handleSingleClick","selectNode","handleDoubleClick","handleTripleClick","defaultTripleClick","forceDOMFlush","endComposition","selectNodeModifier","flushed","MouseDown","MouseDown$1","targetPos","timeoutComposition","scheduleComposeEnd","delay","clearComposition","timestampFromCustomEvent","findCompositionNode","textBefore","textAfter","descAfter","lastChanged","descBefore","forceUpdate","captureCopy","brokenClipboardAPI","cut","sliceSingleNode","capturePaste","plain","doPaste","preferPlain","singleNode","getText","clipboardData","uris","Dragging$1","dragCopyModifier","mouseDown","draggedSlice","Dragging","dragging","eventPos","$mouse","isNode","beforeInsert","domChangeCount","$cursor","compareObjs","WidgetType$1","WidgetType","noSpec","span","oldOffset","Decoration","InlineType$1","InlineType","NodeType$1","Decoration$1","none","DecorationSet$1","DecorationSet","decorations","buildTree","predicate","childOff","newLocal","mapChildren","byPos","childNode","childOffset","baseOffset","takeSpansForNode","moveSpans","withoutNulls","localSet","DecorationGroup","removeOverlap","DecorationGroup$1","members","mappedDecos","oldEnd","newEnd","dSize","mustRebuild","fromLocal","toLocal","mapAndGatherRemainingDecorations","spans","gather","hasNulls","localStart","subtree","working","insertAhead","viewDecorations","observeOptions","useCharData","SelectionState","DOMObserver","handleDOMChange","mutations","take","ancestors","newSel","typeOver","brs","br","blockParent","readSel","checkCSS","previousSibling","cssChecked","cssCheckWarned","rangeToSelectionRange","safariShadowSelectionRange","read","parseBetween","from_","to_","find","startDoc","ruleFromNode","isInline","readDOMChange","addedNodes","compositionID","preferredPos","preferredSide","findDiff","resolveSelection","$fromA","inlineChange","nextSel","looksLikeBackspace","chFrom","chTo","storedMarks","markChange","isMarkChange","parsedSel","curMarks","prevMarks","$newStart","$newEnd","skipClosingAndOpening","$next","fromEnd","mayOpen","endA","endB","adjust","isSurrogatePair","EditorView$2","checkStateComponent","getEditable","updateCursorWrapper","buildNodeViews","computeDocDeco","redraw","updateSel","pluginsChanged","nodeViews","changedNodeViews","scroll","updateDoc","oldScrollPos","forceSelUpdate","selectionContextChanged","chromeKludge","prevState","pluginView","movedPos","dispatchTransaction","sel1","sel2","nA","nB","shift","keyName","ignoreKey","normalizeKeyName","alt","ctrl","mod","normalize","keymap","keydownHandler","baseName","direct","noShift","fromCode","clearNewlines","convertNewlines","pre","supportLinebreak","replaceLinebreaks","replaceNewlines","deleteSelection","dispatch","atBlockStart","joinBackward","$cut","findCutBefore","deleteBarrier","textblockAt","delStep","joinTextblockBackward","joinTextblocksAround","joinTextblockForward","atBlockEnd","findCutAfter","beforeText","beforePos","afterText","afterPos","only","selectNodeBackward","joinForward","selectNodeForward","joinUp","nodeSel","joinDown","newlineInCode","defaultBlockAt","exitCode","above","createParagraphNear","liftEmptyBlock","selectParentNode","joinMaybeClear","conn","canDelAfter","joinAt","selAfter","at","afterDepth","selectTextblockSide","selectTextblockStart","selectTextblockEnd","wrapIn","applicable","wrapInList","listType","doJoin","outerRange","$insert","doWrapInList","joinBefore","splitDepth","splitPos","liftListItem","itemType","liftToOuterList","liftOutOfList","endOfList","indexBefore","sinkListItem","nestedBefore","createChainableState","transaction","CommandManager","rawCommands","editor","command","startTr","shouldDispatch","callbacks","hasStartTransaction","chain","EventEmitter","getExtensionField","extension","splitExtensions","extensions","baseExtensions","nodeExtensions","markExtensions","getAttributesFromExtensions","extensionAttributes","nodeAndMarkExtensions","defaultAttribute","addGlobalAttributes","globalAttribute","attribute","addAttributes","attributes","mergedAttr","getNodeType","nameOrType","mergeAttributes","objects","mergedAttributes","valueClasses","existingClasses","insertClasses","valueClass","getRenderedAttributes","nodeOrMark","callOrReturn","isEmptyObject","fromString","injectExtensionAttributesToParseRule","parseRule","oldAttributes","newAttributes","cleanUpSchemaItem","getSchemaByResolvedExtensions","allAttributes","extraNodeFields","extendNodeSchema","extensionAttribute","parseHTML","renderHTML","renderText","extraMarkFields","extendMarkSchema","getSchemaTypeByName","isExtensionRulesEnabled","enabled","enabledExtension","getTextContentFromNodes","maxMatch","sliceEndPos","chunk","isRegExp","InputRule","inputRuleMatcherHandler","inputRuleMatch","run$1","commands","can","inputRulesPlugin","simulatedInputMeta","PasteRule","pasteRuleMatcherHandler","pasteRuleMatch","pasteEvent","dropEvent","resolvedFrom","resolvedTo","textToMatch","createClipboardPasteEvent","pasteRulesPlugin","dragSourceElement","isPastedFromProseMirror","isDroppedFromProseMirror","processEvent","pasteEvt","chainableState","handleDragstart","_view","transactions","isPaste","isDrop","simulatedPasteMeta","isSimulatedPaste","findDuplicates","ExtensionManager","resolvedExtensions","duplicatedNames","addExtensions","priorityA","priorityB","addCommands","inputRules","pasteRules","allPlugins","addKeyboardShortcuts","defaultBindings","shortcut","keyMapPlugin","addInputRules","addPasteRules","addProseMirrorPlugins","proseMirrorPlugins","addNodeView","nodeview","getPos","HTMLAttributes","onBeforeCreate","onCreate","onUpdate","onSelectionUpdate","onTransaction","onFocus","onBlur","onDestroy","mergeDeep","output","Extension","extendedConfig","getTextBetween","startNode","textSerializers","textSerializer","getTextSerializersFromSchema","ClipboardTextSerializer","blur","clearContent","emitUpdate","clearNodes","$mappedFrom","$mappedTo","nodeRange","targetLiftDepth","defaultType","createParagraphNear$1","originRange","contentSlice","deleteCurrentNode","currentNode","deleteNode","typeOrName","deleteSelection$1","exitCode$1","objectIncludes","object1","object2","findMarkInSet","isMarkInSet","getMarkRange","endPos","getMarkType","extendMarkRange","newSelection","isTextSelection","minMax","resolveFocusPosition","position","selectionAtStart","selectionAtEnd","minPos","maxPos","isiOS","focus","delayedFocus","isSameSelection","forEach","insertContent","removeWhitespaces","elementFromString","wrappedValue","createNodeFromContent","isJSONContent","isTextContent","schemaToUse","hasInvalidContent","invalidContent","isFragment","nodeOrFragment","insertContentAt","isOnlyTextContent","isOnlyBlockContent","newContent","joinUp$1","joinDown$1","joinBackward$1","joinForward$1","joinItemBackward","joinItemForward","joinTextblockBackward$1","joinTextblockForward$1","isMacOS","keyboardShortcut","capturedTransaction","newStep","isNodeActive","nodeRanges","relativeFrom","relativeTo","selectionRange","matchedNodeRanges","lift$1","liftEmptyBlock$1","liftListItem$1","newlineInCode$1","getSchemaTypeNameByName","deleteProps","propOrProps","newObj","resetAttributes","schemaType","scrollIntoView","selectAll","selectNodeBackward$1","selectNodeForward$1","selectParentNode$1","selectTextblockEnd$1","selectTextblockStart$1","createDocument","parseOptions","setContent","document","getMarkAttributes","markItem","combineTransactionSteps","oldDoc","transform","findChildrenInRange","nodesWithPos","findParentNodeClosestToPos","findParentNode","getHTMLFromFragment","documentFragment","getNodeAttributes","nodeItem","getAttributes","removeDuplicates","simplifyChangedRanges","uniqueChanges","otherChange","getChangedRanges","steps","stepMap","getMarksBetween","getSplittedAttributes","isMarkActive","markRanges","matchedRange","markRange","excludedRange","isActive","isList","isNodeEmpty","defaultContent","isNodeSelection","canSetMark","newMarkType","currentMarks","someNodeSupportsMark","_pos","parentAllowsMarkType","currentMarksAllowMarkType","otherMark","setMark","trimmedFrom","trimmedTo","setMeta","setNode","updatedState","setNodeSelection","setTextSelection","resolvedEnd","sinkListItem$1","ensureMarks","splittableMarks","filteredMarks","splitBlock","keepMarks","$first","splitListItem","grandParent","depthBefore","depthAfter","newNextTypeAttributes","newTypeAttributes","joinListBackwards","joinListForwards","nodeAfter","toggleList","listTypeOrName","itemTypeOrName","parentList","canWrapInList","toggleMark","extendEmptyMarkRange","toggleNode","toggleTypeOrName","toggleType","toggleWrap","undoInputRule","undoable","toUndo","unsetAllMarks","unsetMark","updateAttributes","wrapIn$1","wrapInList$1","Commands","Editable","FocusEvents","Keymap","handleBackspace","$parentPos","parentIsIsolating","parentPos","isAtStart","handleDelete","baseKeymap","pcKeymap","macKeymap","allFrom","allEnd","Tabindex","NodePos","isBlock","childNodePos","nodeAttributes","attrKeys","firstItemOnly","childPos","oldSelection","createStyleTag","nonce","tiptapStyleTag","styleNode","editable","handlePlugins","nameOrPluginKey","allExtensions","EditorView","selectionHasChanged","nameOrAttributes","attributesOrUndefined","markInputRule","captureGroup","fullMatch","startSpaces","textStart","textEnd","markEnd","nodeInputRule","matchStart","lastChar","insertionStart","textblockTypeInputRule","textInputRule","cutOff","wrappingInputRule","blockRange","currentPos","markPasteRule","inputRegex","src","encodedTlds","encodedUtlds","alpha","asciinumeric","alphanumeric","emoji","scheme","slashscheme","whitespace","registerGroup","addToGroups","flags","flagsForToken","State","nextState","exactOnly","inputs","regexp","templateState","allFlags","ta","tt","WORD","UWORD","LOCALHOST","TLD","UTLD","SCHEME","SLASH_SCHEME","NUM","WS","NL$1","OPENBRACE","CLOSEBRACE","OPENBRACKET","CLOSEBRACKET","OPENPAREN","CLOSEPAREN","OPENANGLEBRACKET","CLOSEANGLEBRACKET","FULLWIDTHLEFTPAREN","FULLWIDTHRIGHTPAREN","LEFTCORNERBRACKET","RIGHTCORNERBRACKET","LEFTWHITECORNERBRACKET","RIGHTWHITECORNERBRACKET","FULLWIDTHLESSTHAN","FULLWIDTHGREATERTHAN","AMPERSAND","APOSTROPHE","ASTERISK","AT","BACKSLASH","BACKTICK","CARET","COLON","COMMA","DOLLAR","DOT","EQUALS","EXCLAMATION","HYPHEN","PERCENT","PIPE","PLUS","POUND","QUERY","QUOTE","SEMI","SLASH","TILDE","UNDERSCORE","EMOJI$1","SYM","tk","ASCII_LETTER","LETTER","EMOJI","DIGIT","SPACE","NL","EMOJI_VARIATION","EMOJI_JOINER","tlds","utlds","init$2","customSchemes","Start","decodeTlds","Num","Word","UWord","Ws","Emoji","EmojiJoiner","wordjr","uwordjr","fastts","sch","iterable","stringToArray","charCount","charCursor","tokenLength","latestAccepting","sinceAccepts","charsSinceAccepts","defaultt","jr","words","popDigitCount","popCount","noop","Options","defaultRender","ignoredTags","uppercaseIgnoredTags","ir","operator","isCallable","MultiToken","truncate","formattedHref","className","rel","eventListeners","createTokenClass","Nl","Url","makeState","init$1","_ref","qsAccepting","qsNonAccepting","localpartAccepting","Localpart","Domain","Scheme","SlashScheme","LocalpartAt","LocalpartDot","EmailDomain","EmailDomainDot","Email$1","EmailDomainHyphen","EmailColon","DomainHyphen","DomainDot","DomainDotTld","DomainDotTldColon","DomainDotTldColonPort","Url$1","UrlNonaccept","SchemeColon","SlashSchemeColon","SlashSchemeColonSlash","UriPrefix","bracketPairs","OPEN","CLOSE","UrlOpen","UrlOpenQ","UrlOpenSyms","multis","textTokens","secondState","multiLength","initMultiToken","Multi","subtokens","startIdx","endIdx","warn","warnAdvice","INIT","registerCustomProtocol","optionalSlashSlash","init","tokenize","isValidLinkStructure","autolink","docChanges","preventAutolink","newRange","nodesInChangedRanges","textBlock","textBeforeWhitespace","wordsBeforeWhitespace","lastWordBeforeSpace","lastWordAndBlockOffset","linksBeforeSpace","els","pasteHandler","textContent","ATTR_WHITESPACE","IS_ALLOWED_URI","isAllowedUri","uri","Link","foundLinks","emDash","override","ellipsis","openDoubleQuote","closeDoubleQuote","openSingleQuote","closeSingleQuote","leftArrow","rightArrow","copyright","trademark","servicemark","registeredTrademark","oneHalf","plusMinus","notEqual","laquo","raquo","multiplication","superscriptTwo","superscriptThree","oneQuarter","threeQuarters","Typography","Underline","Blockquote","starInputRegex","starPasteRegex","underscoreInputRegex","underscorePasteRegex","Bold","ListItem","TextStyle","BulletList","inputRule","pasteRegex","Code","backtickInputRegex","tildeInputRegex","CodeBlock","languageClassPrefix","isAtEnd","endsWithDoubleNewline","vscode","vscodeData","dropCursor","editorView","DropCursorView","nodeRect","parentLeft","parentTop","disableDropCursor","Dropcursor","GapCursor","GapBookmark","closedBefore","closedAfter","mustMove","$cur","gapCursor","drawGapCursor","handleClick","handleKeyDown","beforeinput","arrow","axis","dirStr","$found","clickPos","Gapcursor","HardBreak","Heading","GOOD_LEAF_SIZE","RopeSequence","Append","Leaf","prototypeAccessors","leftLen","max_empty_items","Branch","eventCount","preserveItems","remap","addAfter","addBefore","Item","histOptions","oldItems","overflow","DEPTH_OVERFLOW","cutOffEvents","mirrorPos","rebasedTransform","rebasedCount","rebasedItems","newUntil","iRebased","newMaps","branch","cutPoint","mirrorOffset","HistoryState","undone","prevRanges","prevTime","prevComposition","applyTransaction","history","historyTr","historyKey","rebased","closeHistoryKey","appended","mustPreserveItems","rangesFor","isAdjacentTo","mapRanges","adjacent","histTransaction","redo","newHist","cachedPreserveItems","cachedPreserveItemsPlugins","hist","inputType","undo","buildCommand","History","HorizontalRule","$originFrom","$originTo","currentChain","posAfter","Italic","OrderedList","attributesWithoutStart","Paragraph","Strike","StarterKit","_m","_o","_p","_q","_r","_s","_t","useDebouncedRef","Editor","Editor$1","EditorContent","rootEl","newElement","vueRenderers","vueRenderer","Tooltip","viewPadding","win","docElem","clientWidth","usedX","usedY","objLeft","xTransform","objTop","yTransform","usedXPlacement","usedYPlacement","transformOrigin","_normalizeStyle","icon","_createCommentVNode","TooltipDirective","isMouseHover","displayedComponent","ModalStackEventBus","TooltipDirective$1","LoadingButton","Spinner","_component_Spinner","download","_Toast","simpleErrors","progress","toast","STInputBox","_component_STErrorsInput","UploadButton","file","resolutions","formData","_component_LoadingButton","elementName","uploading","ownKeys","enumerableOnly","symbols","sym","_objectSpread2","_defineProperty","_typeof","_extends","_objectWithoutPropertiesLoose","excluded","sourceKeys","_objectWithoutProperties","sourceSymbolKeys","pattern","IE11OrLess","Edge","FireFox","Safari","IOS","ChromeForAndroid","captureMode","on","getParentOrHost","includeCTX","R_SPACE","toggleClass","css","selfOnly","appliedTransforms","matrixFn","iterator","getWindowScrollingElement","scrollingElement","getRect","relativeToContainingBlock","relativeToNonStaticParent","undoScale","containerRect","elMatrix","isScrolledPast","elSide","parentSide","getParentAutoScrollElement","elSideVal","parentSideVal","visible","getChild","childNum","includeDragEl","currentChild","Sortable","getRelativeScrollOffset","offsetLeft","offsetTop","winScroller","indexOfObject","includeSelf","elem","gotSelf","elemCSS","dst","isRectEqual","rect1","rect2","_throttleTimeout","_this","cancelThrottle","scrollBy","Polymer","$","getChildContainingRectFromElement","ghostEl","_rect$left","_rect$top","_rect$right","_rect$bottom","childRect","expando","AnimationStateManager","animationStates","animationCallbackId","fromRect","childMatrix","animating","animationTime","toRect","prevFromRect","prevToRect","animatingRect","targetMatrix","calculateRealTime","currentRect","translateX","translateY","repaint","PluginManager","sortable","evt","eventNameGlobal","pluginName","initialized","eventProperties","modifiedValue","targetEl","cloneEl","toEl","fromEl","oldDraggableIndex","newDraggableIndex","originalEvent","putSortable","extraEventProperties","onName","allEventProperties","_excluded","pluginEvent","dragEl","parentEl","nextEl","lastDownEl","cloneHidden","_hideGhostForTarget","_unhideGhostForTarget","_dispatchEvent","info","activeGroup","awaitingDragStarted","ignoreNextClick","sortables","tapEvt","touchEvt","lastDx","lastDy","tapDistanceLeft","tapDistanceTop","lastTarget","lastDirection","pastFirstInvertThresh","isCircumstantialInvert","targetMoveDistance","ghostRelativeParent","ghostRelativeParentInitialScroll","_silent","savedInputChecked","documentExists","PositionGhostAbsolutely","CSSFloatProperty","supportDraggable","supportCssPointerEvents","_detectDirection","elCSS","elWidth","child1","child2","firstChildCSS","secondChildCSS","firstChildWidth","secondChildWidth","touchingSideChild2","_dragElInRowColumn","dragRect","targetRect","vertical","dragElS1Opp","dragElS2Opp","dragElOppLength","targetS1Opp","targetS2Opp","targetOppLength","_detectNearestEmptySortable","threshold","insideHorizontally","insideVertically","_prepareGroup","toFn","pull","sameGroup","otherGroup","originalGroup","nearestEmptyInsertDetectEvent","_checkOutsideTargetEl","dataTransfer","preventOnFilter","touch","originalTarget","_saveInputCheckedState","criteria","ownerDocument","dragStartFn","_disableDraggable","_nextTick","fallbackTolerance","fallbackOffset","ghostMatrix","relativeScrollOffset","cssMatrix","revert","activeSortable","isOwner","canSort","fromSortable","completedFired","dragOverEvent","completed","_onMove","capture","insertion","elLastChild","_ghostIsLast","_ghostIsFirst","targetBeforeFirstSwap","differentLevel","differentRowCol","side1","scrolledPastTop","scrollBefore","_getSwapDirection","dragIndex","moveVector","_unsilent","_cancelNextTick","_globalDragOver","_generateId","useAnimation","store","willInsertAfter","onMoveFn","retVal","firstElRect","childContainingRect","spacer","lastElRect","swapThreshold","invertedSwapThreshold","invertSwap","isLastTarget","mouseOnAxis","targetLength","targetS1","targetS2","invert","_getInsertDirection","_len","autoScrolls","scrollEl","scrollRootEl","scrolling","lastAutoScrollX","lastAutoScrollY","touchEvt$1","pointerElemChangedInterval","AutoScrollPlugin","AutoScroll","_ref2","clearPointerElemChangedInterval","clearAutoScrolls","autoScroll","ogElemScroller","newElem","isFallback","sens","speed","scrollThisInstance","scrollCustomFn","layersOut","currentParent","canScrollX","canScrollY","scrollWidth","scrollHeight","scrollPosX","scrollPosY","vx","vy","scrollOffsetY","scrollOffsetX","drop","dispatchSortableEvent","hideGhostForTarget","unhideGhostForTarget","toSortable","Revert","_ref3","Remove","_ref4","parentSortable","__emit","isDragging","containerRef","getKey","newDraggable","listModel","_useModel","isDrag","onStart","moveItemInArray","STListItem","selectable","_resolveDynamicComponent","_mergeProps","hoverable","dynamicElementName","$attrs","$event","injectedComponents","unreffed","TabBarItem","selectedItem","TabBarItemGroup","flatTabs","popup","$navigate","tab","selectTab","useHideTabBar","injector","unwrapped","unregister","tabs","showTopBar","TabBarDropdownView","selectItem","deviceWidth","showBottomBar","hieBottomBarRequesters","shouldHideBottomBar","mainElement","getInternalScrollElements","saveCurrentItemState","scrollElements","appendHistory","tabUrl","positions","newScrollElements","bounds","selectTabByName","foundItem","STNavigationBar","BackButton","InheritComponent","_component_BackButton","_component_InheritComponent","hasLeft","hasRight","canPop","canDismiss","disableDismiss","$isAndroid","$isIOS","Checkbox","onlyLine","_withDirectives","checkboxValue","_vModelCheckbox","ContextMenuItemView","_withModifiers","onMouseLeave","ContextMenuLine","triangleContains","ax","ay","bx","cy","det","ContextMenuView","viewPaddingBottom","viewPaddingTop","wasHovered","mouseX","mouseY","contextX","contextY","contextY2","contextX2","triangle","isStillHovered","p1","p2","p3","selectedElement","popParents","ignoreHoverTriangle","GeneralContextMenuView","_resolveDirective","_component_ContextMenuView","groupIndex","_component_ContextMenuItemView","handleAction","_createSlots","_component_Checkbox","ReplaceRootEventBus","ContextMenuItem","ContextMenu","menuComponent","DescriptiveText","SmartButtonNode","smartButton","SmartButtonInlineNode","SmartVariableNode","smartVariable","SmartVariableNodeBlock","TextStyleButtonsView","$isMobile","_directive_tooltip","CustomImage","ImageExtension","cleanedUrl","image","newSmartVariables","oldSmartVariables","initialSelection","STList","STToolbar","STButtonToolbar","_hoisted_4","_hoisted_5","_hoisted_6","_hoisted_7","_hoisted_11","_hoisted_12","_hoisted_13","_hoisted_14","_component_STNavigationBar","_component_STList","_component_editor_content","_component_TextStyleButtonsView","showTextStyles","showLinkEditor","getSmartVariable","_component_STListItem","_hoisted_8","_hoisted_9","editLink","_component_STToolbar","_hoisted_10","smartVariables","openLinkEditor","_component_UploadButton","insertImage","saveIcon","_component_STButtonToolbar","CenteredMessageButton","CenteredMessage$1","description","confirmText","cancelText","destructive","hasChanges","exampleRecipient","smartButtons","getHTML","save","CenteredMessage","viewTitle","templates","loading","saving","loadTemplates","tabItems","editableList","orgId","defaultTemplate","getTemplatePrefix","emailTemplate","editEmail","EditEmailTemplateView","toCreate","saveWithoutDismiss","addTemplate","addCreateOption","deleteEmail","doSelectItem","webshops","originalArray","patchedArray","addAPatch","organizationManager","emailAddress","isDefault","originalValue","SelectableGroup","SelectableWebshop","enableMemberModule","enableWebshopModule","deleteMe","organizationPatch","shouldSavePeriod","organizationPeriodPatch","hasChangesFull","otherChanges","EditEmailView","addEmail","creatingEmail","files","auth","selectedRecipientOptions","groupByEmail","savingPatch","sending","patchedEmail","recipientFilter","selectedIds","selectedOption","buildFilter","toDescription","fromAddress","fromName","selectedEmailAddress","doThrottledPatch","createEmail","updateEmail","patchEmail","_savingPatch","manageEmails","EmailSettingsView","send","recipientCount","getContextMenuForOption","showToMenu","getFileIcon","deleteAttachment","attachment","toBase64","reader","changedFile","canOpenTemplates","openTemplates","hasExistingContent","EditEmailTemplatesView","Column","isPrefix","TableAction","MenuTableAction","AsyncTableAction","InMemoryTableAction","initialRequest","objectFetcher","fetchAll","totalFilteredCount","useTableObjectFetcher","fetcher","TableObjectFetcher","maxLimit","waitTime","shorterWaitTime","filteredCount","currentClearIndex","hasFilter","fetchUntil","useInfiniteObjectFetcher","InfiniteObjectFetcher","hasReachedEnd","deleteText","confirmationCodeInput","isConfirm","se","doDelete","usePlatformFamilyManager","useAppContext","PlatformFamilyManager","removeRegistrations","updatedMember","clearAfter","createdMembers","mm","savedMember","oldId","userMemberId","newUserMemberId","cm","updateOrganizationFromMembers","processedGroups","getResponsibilityMergedRole","platformResponsibilities","selectedOrganization","org","organizationResponsibilities","groupedResponsibilites","groupedPlatformResponsibilities","groupedOrganizationResponsibilities","organizationGroups","labels","isResponsibilityEnabled","getResponsibilityEnabledDescription","setResponsibilityEnabled","originalEnabled","getResponsibilityMergedRoleDescription","useRegistrationActionBuilder","platformFamilyManager","RegistrationActionBuilder","chooseOrganizationMembersForGroup","checkoutRegisterItem","groupOrganization","getSelectableWorkbook","recordCategories","financialSupportTitle","flattenedCategories","parentNumber","useDirectMemberActions","useMemberActions","MemberActionBuilder","EmailView","MemberSegmentedView","MemberStepView","EditMemberAllBox","EditMemberResponsibilitiesBox","DeleteView","ExcelExportView","checkoutDefaultItem","useEditMember","getAppName","getAppTitle","getAppDescription","hasWrite","deletingUsers","sortedUsers","deleteUser","isDeletingUser","amounts","useNavigationActions","amountOption","goNext","needsPay","selectedPaymentMethod","paymentMethods","paymentConfiguration","memberManager","waitingListNames","defaultDisplayOptions","runDisplayOptions","pushOptions","displayOptions","glueNavigationActions","didShowView","currentNavigate","inCartRegisterItem","inCartRegisterWaitingListItem","validateRegisterItem","registerItem","validationError","canRegister","validationWarning","useCheckoutRegisterItem","editRegisterItem","setOrganization","canEdit","editMe","searchQuery","contextOrganization","presentPositionableSheet","usePositionableSheet","filterBuilders","useAdvancedMemberWithRegistrationsBlobUIFilterBuilders","selectedUIFilter","editFilter","UIFilterEditor","blurFocus","canSelectAll","canUnselectAll","deselectAllResults","selectAllResults","item2","cartLength","$addMember","useAddMember","useCheckoutDefaultItem","chooseGroupForMember","useChooseGroupForMember","addMember","searchMembers","SearchOrganizationMembersForGroupView","goToCheckout","startCheckout","MemberStepManager","finishHandler","currentStep","nextStep","gluedNavigate","firstInputElement","constrain","useDataPermissionSettings","dataPermissionSettings","useExternalOrganization","loadedOrganization","errorBox","loadingOrganizationId","loadingCount","externalOrganization","check","loadOrganization","canSelect","SearchOrganizationView","$user","isNative","letters","showContextMenu","_imports_2$3","logo","logoDark","OrganizationLogo","horizontalLogo","MetaLogo","_component_MetaLogo","Radio","hasDefaultSlot","_vModelRadio","canDelete","live","filterComponent","ColumnSelectorContextMenu","sortedColumns","setColumnEnabled","ColumnSortingContextMenu","getSortByColumn","TableActionsContextMenu","groupedActions","_component_ContextMenuLine","getChildContextMenu","VisibleRow","EnabledColumnConfiguration","ColumnConfiguration","reactiveColumns","showPrefix","wrapColumns","isMobile","showSelection","isIOS","titleSuffix","hasClickListener","canLeaveSelectionMode","sortBy","visibleRows","markedRows","isRightClicking","customFocusedRows","markedRowsAreSelected","isAllSelected","visibleRow","setShowSelection","sortedActions","filteredActions","maximum","getColumnContextMenu","getSortingContextMenu","buildSelectionObject","customMarkedRows","customMarkedRowsSelected","idFilter","showActions","isOnTop","onTableHeadRightClick","errorMessage","lastRefresh","lastFilteredCount","cachedProvisionalTotalItems","updateVisibleRows","totalItemsCount","resetFilter","isColumnDragActive","isDraggingColumn","draggingStartX","draggingInitialWidth","draggingInitialColumns","dragType","toggleSort","saveColumnConfiguration","getEventX","touches","onClickRow","setSelectionValue","getSelectionValue","onRightClickRow","columnDragStart","attachDragHandlers","handleDragStart","horizontalPadding","tableElement","tableBody","canCollapse","selectionColumnWidth","totalWidth","leftPadding","rightPadding","col","updatePaddingIfNeeded","updatePadding","updateRecommendedWidths","mouseMove","mouseUp","detachDragHandlers","difference","currentWidth","newWidth","updateColumnWidth","columnMoveIndex","remainingDifference","shouldMove","neededMove","loadColumnConfiguration","getScrollElement","onScroll","onResize","useVisibilityChange","doRefresh","ticking","updateCanCollapse","_sort","fixColumnWidths","configuration","measureDiv","distributeWidth","afterColumn","strategy","forceWidth","availableWidth","affectedColumns","shrinking","columnPriorities","columnLimits","columnPriorityIndex","updateColumns","limits","absorbed","shrinkAmount","collapse","totalRenderWidth","gridTemplateColumns","canFilter","isValueSelected","isRowFocused","getExpectedSelectionLength","cachedScrollElement","cachedTableYPosition","topOffset","totalItems","extraItems","firstVisibleItemIndex","rowHeight","unBoundedLastVisibleItemIndex","lastVisibleItemIndex","totalHeight","getPrevious","getNext","observer","calculateModalPosition","innerPadding","positionOptions","PromiseView","LoadingBox","_component_LoadingBox","LoadComponent","AsyncComponent","speedRun","PromiseComponent","appToUri","uriToApp","useContextOptions","$organization","getRegistrationOption","getDefaultOptions","getOptionForOrganization","buildRootForOption","exports$2","exports$1","exports","oldPrefix","newPrefix","selectOption","isCurrent","currentOptions","otherOptions","searchOrganizations","OrganizationAppSelector","useFinancialSupportSettings","financialSupportSettings","useRegistrationPeriods","useRegistrationPeriod","deleting","ownErrors","$showReducedPrice","reducedPrice","defaultReducedPrice","getDefaultPrice","defaultPrice","minPriceDifference","defaultMembershipTypeId","defaultMembership","mt","formatPriceForPlatform","hidden","usedStock","useStock","useMaximum","allowAmount","reducedPriceName","up","canMoveUp","canMoveDown","down","patchOptionsArray","addOptionPatch","addOptionPut","addOptionDelete","draggableOptions","multipleChoice","addOption","editOption","GroupOptionView","editOptionMenu","GroupOptionMenuView","isSingle","forceShowRequireGroupIds","addRequireGroupIds","chooseOrganizer","loadingOrganizer","loadingExternalOrganizerErrorBox","patchPricesArray","addRecordCategoriesPatch","addPricePatch","addPricePut","addPriceDelete","draggablePrices","addOptionMenuPatch","addOptionMenuPut","addOptionMenuDelete","patchRecordsConfiguration","inheritedRecordsConfiguration","didSetAutomaticGroup","availableWaitingLists","usedByGroups","defaultAgeGroups","defaultAgeGroup","nn","virtualOpenStatus","useRegistrationStartDate","registrationStartDate","minAge","maxAge","genderType","requireGroupIds","allowRegistrationsByOrganization","waitingListType","preRegistrationsDate","maxMembers","enableMaxMembers","registrationEndDate","priorityForFamily","waitingListIfFull","useRegistrationEndDate","addGroupPrice","editGroupPrice","GroupPriceView","addGroupOptionMenu","addWaitingList","EditGroupView","isPropertyEnabled","editWaitingList","genderTypes","getAgeGroupAgeString","ageGroup","getAgeGroupSelectionText","ageGroupAgeString","recordEditorSettings","RecordEditorSettings","registrationUIFilterBuilders","checkboxWarning","dataPermissions","dataPermissionsChangeDate","checkboxLabel","maxOutdatedTime","MemberDataPermissionStep","details","EditMemberDataPermissionsBox","useIsPropertyRequired","isAllOptional","useIsAllOptional","useIsPropertyEnabled","write","PhoneInput","silent","libphonenumber","phoneNumber","_component_STInputBox","phoneRaw","saveText","contactTitle","minorMembers","isPropertyRequired","emergencyContacts","initialContacts","visibleContacts","isContactSelected","setContactSelected","editContact","EditEmergencyContactView","addContact","MemberEmergencyContactsStep","EditEmergencyContactsBox","tryCreateRequiresFinancialSupportPatch","requiresFinancialSupportCheckboxValue","expectedValue","requiresFinancialSupport","getPreventSelfAssignment","hasKansenTarief","uitpasNumber","MemberFinancialSupportStep","EditMemberFinancialSupportBox","MemberGeneralStep","EditMemberGeneralBox","Dropdown","autocomplete","mappedValue","EmailInput","emailRaw","AddressInput","isFinal","_vModelText","_component_Dropdown","SelectionAddressInput","_address","selectedAddress","_component_Radio","hasModifyListener","editingAddress","editAddress","_component_AddressInput","internalValidator","parentTypes","alternativeEmails","availableAddresses","newEmails","getEmail","setEmail","formatParentType","modifyAddress","initialParents","visibleParents","isParentSelected","setParentSelected","editParent","EditParentView","addParent","reviewDate","MemberParentsStep","EditMemberParentsBox","distance","LongPressDirective","firstTouch","lastTouch","scrollListener","touchMoveListener","cancelLongPress","customEvent","onmove","LongPressDirective$1","DateSelectionView","weeks","selectedDay","ny","week","DateSelection","currentDateValue","iso1","iso2","shorter","firstSpecialCharacter","cutIndex","currentConfig","moveText","focusedInput","autoDismiss","unlessFocused","activeElement","dateText","onTyping","dayText","monthText","hasFocus","yearText","ImageInput","required","placeholderShownResolution","shownResolution","NumberInput","_oldValue","float","decimals","abs","StepperInput","floatingPoint","_withKeys","internalValue","stepper","valueString","stepperValue","_component_StepperInput","PriceInput","currentValue","_value","currency","patchAnswer","patchMap","casted","label","inputPlaceholder","comments","selectedChoice","integerValue","textValue","addressValue","dateValue","imageValue","getChoiceSelected","setChoiceSelected","choices","readValue","markReviewed","doMarkReviewed","lastReviewed","calculateLastReviewed","isLastReviewIncomplete","calculateLastReviewIncomplete","canMarkReviewed","filteredRecords","deepFilteredRecords","isOptional","childCategories","allOptional","owningOrganization","MemberRecordCategoryStep","EditMemberRecordCategoryBox","uitpasNumberRaw","clearErrorBox","preventInvalidUitpasNumberChars","MemberUitpasStep","_manager","EditMemberUitpasBox","defaultOutdatedTime","getAllMemberSteps","navigationActions","isInCart","addRecordAnswersPatch","addToCart","getOptionSelected","setOptionSelected","setOptionAmount","getOptionAmount","filteredOptions","clonedCart","RegisterItemStep","RegisterItemView","PayconiqBannerView","paymentId","STFloatingFooter","PayconiqButtonView","paymentUrl","bindingValue","myText","CopyableDirective","CopyableDirective$1","TransferPaymentView","iban","creditor","QRCode","LoadingView","_imports_0$6","_imports_1$6","_imports_1$5","_imports_2$2","_imports_3$2","_imports_4$1","_imports_6$2","_imports_5$2","_hoisted_15","_hoisted_16","_hoisted_17","_hoisted_18","_hoisted_19","_hoisted_20","_hoisted_21","_hoisted_22","_hoisted_23","_hoisted_25","_hoisted_26","_hoisted_28","_hoisted_29","_hoisted_30","_hoisted_31","_hoisted_55","_hoisted_56","_hoisted_57","_hoisted_58","_hoisted_60","_hoisted_61","_hoisted_59","_hoisted_63","_hoisted_64","_hoisted_62","_directive_copyable","isStructured","formattedTransferDescription","_hoisted_24","_hoisted_27","QRCodeUrl","getOS","isBelgium","$domains","isPopup","PaymentHandler","successHandler","failedHandler","transferHandler","transferSettings","buttonComponent","bannerComponent","ViewStepsManager","FreeContributionStep","FreeContributionView","companies","selectedCompanyId","buildCustomer","editInvoiceSettings","GeneralSettingsView","PaymentCustomerStep","PaymentCustomerView","PaymentSelectionStep","PaymentSelectionView","passedFamilies","clearAndEmit","_payment","RegistrationSuccessView","loadGroupOrganization","originalItem","showGroupInformation","startCheckoutFlow","customNavigate","chooseFamilyMembersForGroup","ChooseFamilyMembersForGroupView","useChooseFamilyMembersForGroup","openOrganizationCart","ChooseOrganizationMembersForGroupView","useOrganizationCart","useChooseOrganizationMembersForGroup","ChooseGroupForMemberView","clonedFamily","realMember","familyMembers","maxFamilyAge","ages","gotoMember","editMember","memberDetails","notes","editThisMember","recordsWithAnswers","isEditable","registrationOrganization","ag","editRegistration","visibleRegistrationsTitle","defaultPeriod","showDeleted","hasDeleted","filteredRegistrations","visibleRegistrations","addRegistration","openCart","buildActions","switchCycle","isRenewingSecurityCode","shouldShowResetSecurityCode","securityCode","renewSecurityCode","isLoading","showLoader","onDelete","unverifiedAddresses","unverifiedPhones","unverifiedEmails","shouldShow","formatWithIndex","addressToLines","lines","deletePhone","deleteFromMemberDetails","deleteAddress","valueToDelete","confirmMessage","confirmButtonText","membersPatch","detailsPatch","arrayPatch","autoCompletedAnswers","allRecords","answerClone","hasWarnings","sortedWarnings","responsibilityOrganization","resp","hasRegistration","hasResponsibilities","responsibilities","getResponsibilityIndex","platformIndex","organizationIndex","sortedResponsibilities","editResponsibilities","VATPercentage","isManualMethod","canWrite","markingPaid","sortedItems","markPaid","markPending","markFailed","loadedPayment","load","_imports_0$5","_imports_1$4","openPayment","AsyncPaymentView","patchedBalanceItem","loadMember","createdAt","outstanding","paid","hasPayments","familyBlob","IBANInput","ibantools","ibanRaw","SaveView","preferLargeButton","$slots","saveIconRight","saveBadge","EditPaymentView","paidAt","transferDescription","isNew","_component_STErrorsDefault","isItemSelected","getItemPrice","_component_PriceInput","formatPrice","_component_DateSelection","_component_IBANInput","loadingPayments","balanceItems","reload","paymentIds","reloadFamily","priceBreakown","balance","outstandingBalance","filteredBalanceItems","financialSupportWarningText","payments","pendingPayments","succeededPayments","foundPayment","createPayment","editBalanceItem","EditBalanceItemView","createBalanceItem","today","tomorrow","customStartDate","customEndDate","availableOrganizations","availableMembershipTypes","selectedMembershipType","periodConfig","platformMembershipsPatch","getTypeAvailable","getTypeDateDescription","getTypePriceDescription","getPriceForDate","getTypePriceNormalPrice","deletingMemberships","hasFull","memberships","getOrganizationName","membership","addMembership","SelectPlatformMembershipView","deleteMembership","getMembershipType","MemberDetailsTab","MemberPlatformMembershipTab","MemberPaymentsTab","tabComponents","tabLabels","tabIndex","estimatedRows","modernTableView","defaultFilter","tableObjectFetcher","configurationId","financialRead","getRequiredFilter","allColumns","accounts","organizations","memberGroups","getIndex","showMember","actionBuilder","_imports_0$4","_imports_16","CodeInput","letter","codeLength","selectNext","clearInput","willMarkReviewed","isDuplicate","patchMemberWithReviewed","saveClone","willChangeToWaitingList","loadingResults","lastQuery","throttleUpdateResults","cachedCount","searchOrganizationTitle","differentOrganization","checkOrganization","allowChangingOrganization","treeFactory","alreadyRegisteredGroups","alreadyRegisteredMessage","groupsString","filterGroups","noGroupsMessage","organizationName","addOrganization","openGroup","searchOrganization","BirthDayInput","RadioGroup","lidSuffix","gender","useSetupStepReviewDescription","getDescription","review","short","textIfNotReviewed","reviewedAtString","onVisibilityChange","useOrganizationsObjectFetcher","useEventsObjectFetcher","unwrapFilterForBuilder","builder","unwrapFilter","invertedFilter","UIFilter","invertedResult","UIFilterWrapperMarker","wrapFilter","pendingMarkerValue","leftOver","wrapValue","leftOverKeys","unwrapFilterByPath","keyPath","filterToString","uiFilter","propertyFilterToString","enabledDescription","UIDateFilterMode","getBeginningOfDay","getEndOfDay","DateUIFilter","DateUIFilterView","DateFilterBuilder","isInverted","equals","notEquals","lessThan","greaterThan","draggableFilters","getSelectedChoiceText","showChoices","ff","deleteFilter","setFilter","oldFilter","newFilter","isGroup","GroupUIFilter","setFilterMode","item1","newChildGroup","flatten","builders","GroupUIFilterBuilder","addFilter","copyFromChanged","encodedJson","UnknownUIFilter","UnknownUIFilterView","UnknownFilterBuilder","GroupUIFilterMode","buildFilters","GroupUIFilterView","plast","allowSelf","subfilters","unwrappedF","groupFilter","isSelectAll","isOptionSelected","MultipleChoiceUIFilterOption","MultipleChoiceUIFilterMode","MultipleChoiceUIFilter","multipleChoiceConfiguration","MultipleChoiceUIFilterView","isSubjectPlural","lastJoinWord","MultipleChoiceFilterBuilder","showOptionSelectAll","TimeMinutesInput","timeRaw","inputComponent","NumberFilterFormat","UINumberFilterMode","NumberUIFilter","NumberUIFilterView","dateZero","NumberFilterFormat2","NumberFilterBuilder","StringUIFilterView","StringFilterMode","StringUIFilter","StringFilterBuilder","contains","notContains","paymentsUIFilterBuilders","memberWithRegistrationsBlobUIFilterBuilders","useAdvancedRegistrationsUIFilterBuilders","registrationFilters","activeOrExpiringFilter","getFilter","responsibilitiesFilters","checkoutUIFilterBuilders","cachedOutstandingBalanceUIFilterBuilders","organizationMemberUIFilterBuilders","useGetOrganizationUIFilterBuilders","setupStepFilterNameMap","setupStep","elemMatch","enumValues","stringifiedValueToMatch","getEventUIFilterBuilders","tagsFilter","defaultAgeGroupFilter","gg","getWebshopOrderUIFilterBuilders","preview","paymentMethod","distinctCheckoutMethods","timeCount","dateCount","hasDelivery","nonDeliveryCount","useResizeObserver","elementRef","observing","observe","unobserveAll","rootElement","widths","seekerXOffset","seekerWidth","updateWidths","levelPrefix","tagNames","ageGroupId","useEventPermissions","canWriteSome","canWriteAllGroupEvents","canWriteAllTagEvents","groupsToFilterEventsOn","filterEventsOn","tagsToFilterEventsOn","isGroupEnabledOperatorFactory","isTagEnabledPredicateFactory","canAdminEventForExternalOrganization","ressourceMap","ressources","lastCachedValue","getGroupValue","setGroupValue","visiblePeriodIds","missingGroups","isEnabledOperator","groupsToChoose","firstEnabled","enabledOptions","eventPermissions","isLocationRequired","multipleDays","md","wasMultipleDays","typeId","organizationTagIds","defaultAgeGroupIds","location","coverPhoto","locationName","locationAddress","canSetNationalActivity","isNationalActivity","canSelectOrganization","hasGroupRestrictions","hasTagRestrictions","addGroupsRestriction","addTagRestriction","deleteTagRestriction","isGroupEnabledOperator","isTagEnabledPredicate","addLocation","deleteLocation","addDefaultAgeGroupRestriction","deleteDefaultAgeGroupRestriction","deleteGroupsRestriction","addRegistrations","navigation","confirmationCode","_imports_5$1","_imports_1$3","_imports_6$1","ImageComponent","maxHeight","autoHeight","imgWidthDark","imgHeightDark","imgWidth","imgHeight","googleMapsUrl","ageGroups","canWriteEvent","MembersTableView","EditEventView","addMembers","dayOfWeekSuggestion","selectedYear","years","createDefaultUIFilter","yearLabels","canWriteSomeEvent","EventOverview","addSuggestions","suggestedGroups","suggestionsGroup","fillEventsUntil","fetcherLastDate","fillUntil","eventSuggestions","pointer","suggestions","filledEvents","groupedEvents","addEvent","onClickEvent","getDefaultStamhoofdFilter","AuthenticatedView","noPermissionsRoot","hasToken","_component_LoadingView","loginRoot","ContextProvider","PropertyFilterInput","useCache","isAlwaysEnabled","isAlwaysRequired","isNeverRequired","hasFilters","setRequiredWhen","isDevelopment","PropertyFilterView","editingConfiguration","_component_PropertyFilterInput","$review","setupStepTranslations","checkboxTitle","hasVATNumber","companyNumber","VATNumber","companyName","companyAddress","hasCompanyNumber","doesNotHaveCompanyNumber","administrationEmail","$overrideIsDone","$hasReviewChanges","saveReview","$reviewCheckboxData","useReview","hasSomeChanges","draggableCompanies","website","addCompany","company","EditCompanyView","editCompany","_imports_0$3","emailWarningSvg","missingDataSvg","_imports_3$1","useRegistrationQuickActions","fillInMemberMissingData","checkAllMemberData","activeMembers","membersWithMissingData","activeSteps","membersWithoutMissingData","membersWithMissingEmail","updateBalance","cartSvg","organizationStatus","outstandingAmountSvg","getReviewDescription","isSelectable","$isDone","reviewDescription","$progress","$secondaryIcon","icons","$steps","$stepsByPriority","LegalFooter","Logo","STNavigationTitle","CenteredMessageView","closeButton","focusedButton","defaultButton","_imports_1$2","_imports_8","_imports_2$1","centeredMessage","InputSheet","ToastView","ToastBox","_TransitionGroup","GroupAvatar","StepsHeader","Steps","$step","originalCheckboxValue","$checkboxValue","isSaving","$hasChanges","updateReviewedAt","updatedPeriod","isSuccess","setValue","normalizedRadius","circumference","strokeDashoffset","AgeInput","descriptionText","ColorInput","CompanyNumberInput","companyNumberRaw","FileInput","MultiSelectInput","rootCategories","subChoices","PasswordStrength","saved","calculator","strength","warning","PermyriadInput","PrefixInput","focusPrefix","SegmentedControl","Slider","handleWidth","percentage","relativeWidth","percentageOffset","TimeInput","UploadFileButton","UrlInput","autoCorrected","urlRaw","VATNumberInput","jsvat","VATNumberRaw","Placeholder","isEmptyDoc","hasAnchor","isEmpty","classes","decoration","contrastColor","colorDark","newL","newRGB","darkMode","WarningBox","escapeHtml","WYSIWYGTextInput","getTagValue","setTagValue","AddDiscountCodeBox","CartItemRow","FieldBox","withTitle","OptionMenuBox","canSelectOption","getOptionStockText","SeatSelectionBox","updatedSeats","addedSeat","seats","currentPosition","furthestSeat","ss","cartReservedSeat","isSelected","isDisabledPersonSeat","isHighlighted","highlightSeats","isOccupied","getSeatColor","ChooseSeatsView","planId","seatingPlanSection","_component_SeatSelectionBox","highlighedSeats","setSeats","CartItemView","clonedCheckout","pricedItem","maximumRemaining","dateRange","PriceBreakdownBox","_hoisted_32","_hoisted_34","_hoisted_35","_hoisted_33","_hoisted_36","_hoisted_37","_hoisted_39","_hoisted_40","formattedPriceWithDiscount","imageSrc","areSeatsSoldOut","canOrder","remainingReduced","getPriceStockText","_component_OptionMenuBox","_component_FieldBox","canSelectAmount","_component_NumberInput","suffixSingular","stockText","pricedCheckout","_component_PriceBreakdownBox","cartEnabled","_hoisted_38","ProductBox","priceRanges","remainingWithoutCart","maxOrder","ProductGrid","products","_component_ProductBox","CategoryBox","ChangePasswordView","DetailedTicketView","ShowSeatsView","TicketBuilder","patchedValue","LogoEditor","enable","updatedProduct","seatDescription","PaymentPendingView","_imports_0$2","sortedPaymentMethods","hasNonPayconiq","hasTransfer","hasPOS","getName","getWarning","ColorDirective","hue","focusNextElement","focussableElements","focussable","nextElement","VueGlobalHelper","msg","trace","isNullOrUndef","isNumberFinite","finiteOrDefault","valueOrDefault","toPercentage","dimension","toDimension","each","loopable","reverse","_elementsEqual","a0","a1","ilen","v0","clone$1","klen","isValidKey","_merger","tval","sval","merge","sources","merger","mergeIf","_mergerIf","keyResolvers","resolveObjectKey","_getKeyResolver","_splitKey","_capitalize","defined","setsEqual","_isClickEvent","PI","TAU","PITAU","INFINITY","RAD_PER_DEG","HALF_PI","QUARTER_PI","TWO_THIRDS_PI","log10","niceNum","roundedRange","almostEquals","niceRange","_factorize","sqrt","epsilon","almostWhole","rounded","_setMinAndMaxByKey","toRadians","degrees","toDegrees","radians","_decimalPlaces","getAngleFromPoint","centrePoint","anglePoint","distanceFromXCenter","distanceFromYCenter","radialDistanceFromCenter","angle","distanceBetweenPoints","pt1","pt2","_angleDiff","_normalizeAngle","_angleBetween","sameAngleIsFullCircle","angleToStart","angleToEnd","startToAngle","endToAngle","_limitValue","_int16Range","_isBetween","_lookup","hi","lo","_lookupByKey","_rlookupByKey","_filterBetween","arrayEvents","listenArrayEvents","unlistenArrayEvents","stub","listeners","_arrayUnique","requestAnimFrame","throttled","updateFn","updateArgs","debounce","_toLeftRightCenter","align","_alignStartEnd","_getStartAndCountOfVisiblePoints","points","animationsDisabled","pointCount","iScale","_parsed","minDefined","maxDefined","_scaleRangesChanged","xScale","yScale","_scaleRanges","newRanges","atEdge","elasticIn","elasticOut","effects","lim","p2b","n2b","b2n","n2p","map$1","h1","isShort","hexParse","hexString","HUE_RE","hsl2rgbn","hsv2rgbn","hwb2rgbn","hueValue","rgb2hsl","calln","hsl2rgb","hwb2rgb","hsv2rgb","hueParse","rotate","deg","hslString","names$1","unpack","unpacked","tkeys","nk","nameParse","RGB_RE","rgbParse","rgbString","interpolate","rgb1","rgb2","modHSL","fromObject","functionParse","Color","w2","w1","index_esm","isPatternOrGradient","getHoverColor","descriptors","getScope$1","Defaults","_descriptors","targetScope","targetName","scopeObject","targetScopeObject","privateName","toFontString","font","_measureText","gc","longest","textWidth","_longestText","arrayOfThings","jlen","nestedThing","gcLen","_alignPixel","chart","pixel","devicePixelRatio","halfWidth","clearCanvas","canvas","drawPoint","drawPointLegend","xOffset","yOffset","cornerRadius","rotation","radius","rad","_isPointInArea","area","clipArea","unclipArea","_steppedLineTo","flip","midpoint","_bezierCurveTo","stroke","setRenderOpts","decorateText","metrics","yDecoration","addRoundedRectPath","LINE_HEIGHT","FONT_STYLE","toLineHeight","numberOrZero","_readValueToProps","objProps","toTRBL","toTRBLCorners","toPadding","toFont","cacheable","_addGrace","minmax","grace","beginAtZero","keepZero","createContext","parentContext","_createResolver","scopes","rootScopes","getTarget","_resolve","_cached","_resolveWithPrefixes","getKeysFromAllScopes","_attachContext","subProxy","descriptorDefaults","_resolveWithContext","_scriptable","_indexable","_allKeys","readKey","needsSubResolver","_proxy","_subProxy","_resolveScriptable","_resolveArray","_stack","createSubResolver","isIndexable","resolver","resolveFallback","getScope","addScopes","parentScopes","parentFallback","allScopes","addScopesFromKey","subGetTarget","resolveKeysFromAllScopes","_parseObjectDataRadialScale","EPSILON","getPoint","getValueAxis","indexAxis","splineCurve","firstPoint","middlePoint","afterPoint","d01","d12","s01","s12","fa","fb","monotoneAdjust","deltaK","mK","pointsLen","alphaK","betaK","tauK","squaredMagnitude","pointCurrent","pointAfter","monotoneCompute","valueAxis","pointBefore","iPixel","vPixel","splineCurveMonotone","slopeDelta","capControlPoint","pt","capBezierPoints","inArea","inAreaPrev","inAreaNext","_updateBezierControlPoints","controlPoints","_isDomSupported","_getParentNode","parseMaxStyle","styleValue","parentProperty","valueInPixels","getComputedStyle","getStyle","getPositionedStyle","useOffsetPos","getCanvasPosition","offsetX","offsetY","getRelativePosition","currentDevicePixelRatio","borderBox","paddings","borders","getContainerSize","maxWidth","containerStyle","containerBorder","containerPadding","round1","getMaximumSize","bbWidth","bbHeight","aspectRatio","margins","containerSize","retinaScale","forceRatio","forceStyle","pixelRatio","deviceHeight","supportsEventListenerOptions","passiveSupported","readUsedSize","_pointInLine","_steppedInterpolation","_bezierInterpolation","cp1","cp2","intlCache","getNumberFormat","formatter","formatNumber","getRightToLeftAdapter","rectX","itemWidth","getLeftToRightAdapter","_itemWidth","getRtlAdapter","rtl","overrideTextDirection","restoreTextDirection","propertyFn","normalizeSegment","getSegment","segment","startBound","endBound","between","_boundSegment","subStart","startIsBefore","endIsBefore","shouldStart","shouldStop","_boundSegments","findStartAndEnd","spanGaps","solidSegments","_computeSegments","segmentOptions","splitByStyles","completeLoop","doSplitByStyles","chartContext","baseStyle","readStyle","datasetIndex","addStyle","st","styleChanged","Animator","anims","numSteps","draw","charts","animator","transparent","interpolators","c0","Animation","cfg","remain","promises","rej","colors","animationOptions","Animations","animatedProps","newOptions","resolveTargetOptions","animations","awaitAll","animation","anim","scaleClip","scale","allowedOverflow","defaultClip","toClip","getSortedDatasetIndices","filterVisible","metasets","applyStack","dsIndex","singleMode","otherValue","convertObjectDataToArray","adata","isStacked","stacked","getStackKey","indexScale","valueScale","getUserBounds","getOrCreateStack","stacks","stackKey","indexValue","subStack","getLastIndexInStack","vScale","positive","updateStacks","controller","iAxis","vAxis","itemStacks","getFirstScaleId","scales","createDatasetContext","createDataContext","clearStacks","isDirectUpdateMode","cloneIfNotShared","createStack","canStack","DatasetController","dataset","chooseId","xid","yid","rid","iid","vid","scaleID","_data","resetNewElements","stackChanged","oldStacked","scopeKeys","_stacked","isNotInOrderComparedToPrev","singleScale","xAxisKey","yAxisKey","parsedValue","otherScale","otherMin","otherMax","_skip","drawActiveElementsOnTop","elementType","sharing","sharedOptions","firstOpts","previouslySharedOptions","includeOptions","arg1","arg2","numMeta","numData","newCount","getAllScaleValues","visibleMetas","computeMinSampleSize","curr","updateMinAndPrev","computeFitCategoryTraits","ruler","stackCount","thickness","computeFlexCategoryTraits","pixels","percent","parseFloatBar","entry","startValue","endValue","barStart","barEnd","parseValue","parseArrayOrPrimitive","isFloatBar","barSign","actualBase","borderProps","setBorderSkipped","parseEdge","swap","startEnd","orig","setInflateAmount","inflateAmount","BarController","iAxisKey","vAxisKey","bars","horizontal","vpixels","ipixels","dataIndex","skipNull","barThickness","baseValue","minBarLength","floating","startPixel","endPixel","halfGrid","maxBarThickness","center","stackIndex","BubbleController","getRatioAndOffset","cutout","ratioX","ratioY","startAngle","endAngle","endX","endY","calcMax","calcMin","maxX","maxY","minX","minY","DoughnutController","chartArea","arcs","spacing","maxSize","chartWeight","maxRadius","outerRadius","innerRadius","radiusLength","animationOpts","centerX","centerY","animateScale","arc","metaData","ringWeightOffset","pointStyle","legendItem","legend","tooltipItem","dataLabel","LineController","_dataset","maxGapLength","directUpdate","prevParsed","nullData","border","lastPoint","PolarAreaController","datasetStartAngle","defaultAngle","PieController","RadarController","pointPosition","Element$1","useFinalPosition","Element","formatters","tickValue","ticks","notation","maxTick","calculateDelta","logDelta","numDecimal","Ticks","autoSkip","tickOpts","ticksLimit","determineMaxTicks","majorIndices","getMajorIndices","numMajorIndices","newTicks","skipMajors","calculateSpacing","avgMajorSpacing","tickLength","maxScale","maxChart","evenMajorSpacing","getEvenSpacing","factors","majorStart","majorEnd","reverseAlign","offsetFromEdge","sample","numItems","increment","getPixelForGridLine","offsetGridLines","validIndex","lineValue","garbageCollect","caches","getTickMarkLength","getTitleHeight","createScaleContext","createTickContext","tick","titleAlign","titleArgs","titleX","titleY","positionAxisID","Scale","_userMin","_userMax","_suggestedMin","_suggestedMax","sampleSize","samplingEnabled","reversePixels","numTicks","minRotation","maxRotation","labelRotation","tickWidth","maxLabelDiagonal","labelSizes","maxLabelWidth","maxLabelHeight","titleOpts","gridOpts","display","isHorizontal","titleHeight","widest","highest","tickPadding","angleRadians","cos","sin","labelHeight","labelWidth","isRotated","labelsBelowTicks","offsetRight","paddingLeft","paddingRight","heights","widestLabelSize","highestLabelSize","tickFont","fontString","lineHeight","nestedLabel","valueAt","decimal","optionTicks","rot","grid","ticksLength","tl","borderOpts","axisWidth","axisHalfWidth","alignBorderValue","borderValue","alignedLineValue","tx1","ty1","tx2","ty2","x1","y1","x2","y2","optsAtIndex","lineWidth","lineColor","borderDash","borderDashOffset","tickColor","tickBorderDash","tickBorderDashOffset","crossAlign","tickAndPadding","hTickAndPadding","textAlign","lineCount","textOffset","textBaseline","halfCount","strokeColor","strokeWidth","tickTextAlign","backdrop","labelPadding","backgroundColor","drawLine","lastLineWidth","gz","axisID","fontSize","TypedRegistry","parentScope","isIChartComponent","registerDefaults","itemDefaults","routeDefaults","propertyParts","sourceName","sourceScope","Registry","typedRegistry","reg","itemReg","camelMethod","ScatterController","showLine","abstract","DateAdapter","chartOptions","adapters","binarySearch","metaset","intersect","_sorted","lookupMethod","evaluateInteractionItems","getDistanceMetricForAxis","useX","useY","deltaX","deltaY","getIntersectItems","includeInvisible","getNearestRadialItems","evaluationFunc","getNearestCartesianItems","distanceMetric","minDistance","inRange","getNearestItems","getAxisItems","rangeMethod","intersectsItem","Interaction","STATIC_POSITIONS","filterByPosition","filterDynamicPositionByAxis","sortByWeight","wrapBoxes","layoutBoxes","stackWeight","buildStacks","layouts","setLayoutDims","vBoxMaxWidth","hBoxMaxHeight","layout","fullSize","buildLayoutBoxes","centerHorizontal","centerVertical","getCombinedMax","maxPadding","updateMaxPadding","boxPadding","updateDims","newHeight","widthChanged","heightChanged","handleMaxPadding","updatePos","getMargins","marginForPositions","fitBoxes","refitBoxes","refit","setBoxDims","placeBoxes","userPadding","layoutItem","minPadding","availableHeight","verticalBoxes","horizontalBoxes","visibleVerticalBoxCount","BasePlatform","BasicPlatform","EXPANDO_KEY","EVENT_TYPES","isNullOrEmpty","initCanvas","renderHeight","renderWidth","displayWidth","displayHeight","eventListenerOptions","addListener","removeListener","fromNativeEvent","nodeListContains","nodeList","createAttachObserver","createDetachObserver","drpListeningCharts","oldDevicePixelRatio","onWindowResize","dpr","resize","listenDevicePixelRatioChanges","unlistenDevicePixelRatioChanges","createResizeObserver","releaseObserver","createProxyAndListen","DomPlatform","initial","proxies","_detectPlatform","PluginService","createDescriptors","previousDescriptors","localIds","getOpts","pluginOpts","getIndexAxis","datasetDefaults","getAxisFromDefaultScaleID","getDefaultScaleIDFromAxis","axisFromPosition","determineAxis","scaleOptions","mergeScaleConfig","chartDefaults","configScales","chartIndexAxis","firstIDs","scaleConf","defaultId","defaultScaleOptions","defaultID","initOptions","initData","initConfig","keyCache","keysCached","cachedKeys","generate","addIfFound","Config","datasetType","mainScope","resetCache","_scopeCache","keyLists","subPrefixes","getResolver","needContext","subResolver","resolverCache","hasFunction","isScriptable","scriptable","indexable","KNOWN_POSITIONS","positionIsHorizontal","compare2Level","l1","onAnimationsComplete","onAnimationProgress","getCanvas","instances","getChart","moveNumericKeys","intKey","determineLastEvent","lastEvent","inChartArea","isClick","Chart","userConfig","initialCanvas","existingChart","maintainAspectRatio","_aspectRatio","newRatio","scalesOptions","axisOptions","scaleOpts","isRadial","scaleType","scaleClass","hasUpdated","datasets","newControllers","ControllerClass","datasetElementType","dataElementType","animsDisabled","_active","_lastEvent","existingEvents","newEvents","_hiddenIndices","_dataChanges","datasetCount","makeSet","changeSet","noArea","layers","clip","useClip","_add","_remove","attached","activeElements","lastActive","replay","hoverOptions","eventFilter","invalidatePlugins","enumerable","clipArc","pixelMargin","angleMargin","toRadiusCorners","parseBorderRadius$1","angleDelta","halfThickness","innerLimit","computeOuterLimit","outerArcLimit","rThetaToXY","theta","pathArc","circular","innerR","spacingOffset","noSpacingInnerRadius","noSpacingOuterRadius","avNogSpacingRadius","adjustedAngle","beta","angleOffset","outerStart","outerEnd","innerStart","innerEnd","outerStartAdjustedRadius","outerEndAdjustedRadius","outerStartAdjustedAngle","outerEndAdjustedAngle","innerStartAdjustedRadius","innerEndAdjustedRadius","innerStartAdjustedAngle","innerEndAdjustedAngle","pCenter","p4","p8","outerStartX","outerStartY","outerEndX","outerEndY","drawArc","fullCircles","drawFullCircleBorders","drawBorder","borderWidth","borderJoinStyle","ArcElement","chartX","chartY","rAdjust","betweenAngles","withinRadius","halfAngle","halfRadius","radiusOffset","lineTo","getLineMethod","pathVars","paramsStart","paramsEnd","segmentStart","segmentEnd","outside","pathSegment","lineMethod","fastPathSegment","avgX","countX","prevX","lastY","pointIndex","drawX","truncX","_getSegmentMethod","_getInterpolationMethod","strokePathWithCache","strokePathDirect","segmentMethod","usePath2D","LineElement","_interpolate","interpolated","inRange$1","PointElement","getBarBounds","bar","half","skipOrLimit","parseBorderWidth","maxW","maxH","parseBorderRadius","enableBorderRadius","maxR","enableBorder","boundingRects","skipX","skipY","hasRadius","addNormalRectPath","inflateRect","refRect","BarElement","borderColor","addRectPath","_segments","tpoints","_findSegmentEnd","_getBounds","targetSegments","tgt","subBounds","fillSources","fillSource","_getEdge","_pointsFromSegments","boundary","linePoints","_createBoundaryLine","_loop","_shouldApplyFill","_resolveTarget","propagate","visited","_decodeFill","parseFillOption","decodeTargetIndex","firstCh","_getTargetPixel","_getTargetValue","fillOption","_buildStackLine","sourcePoints","linesBelow","getLinesBelow","addPointsBelow","below","sourcePoint","postponed","findPoint","pointValue","firstValue","lastValue","simpleArc","_getTarget","getLineByIndex","computeBoundary","computeCircularBoundary","computeLinearBoundary","_drawfill","lineOpts","doFill","clipVertical","clipY","lineLoop","notShape","clipBounds","interpolatedLineTo","targetLoop","interpolatedPoint","_args","positioners","eventPosition","nearestElement","pushOrConcat","toPush","splitNewlines","createTooltipItem","getTooltipSize","tooltip","footer","boxWidth","boxHeight","bodyFont","titleFont","footerFont","titleLineCount","footerLineCount","bodyLineItemCount","combinedBodyLength","bodyItem","bodyLineHeight","widthPadding","maxLineWidth","determineYAlign","doesNotFitWithAlign","xAlign","determineXAlign","yAlign","chartWidth","determineAlignment","alignX","alignY","paddingAndSize","getBackgroundPoint","alignment","caretSize","caretPadding","topLeft","topRight","bottomLeft","bottomRight","getAlignedX","getBeforeAfterBodyLines","createTooltipContext","tooltipItems","overrideCallbacks","beforeTitle","afterTitle","bodyItems","scoped","beforeFooter","afterFooter","labelColors","labelPointStyles","labelTextColors","positionAndSize","backgroundPoint","tooltipPoint","caretPosition","ptX","ptY","x3","y3","titleSpacing","rtlHelper","labelPointStyle","colorX","rtlColorX","yOffSet","colorY","drawOptions","outerX","innerX","borderRadius","bodySpacing","bodyAlign","displayColors","xLinePadding","fillLineOfText","bodyAlignForCalculation","textColor","tooltipSize","animX","animY","opacity","hasTooltipContent","positionChanged","caretX","caretY","plugin_tooltip","labelCount","addIfString","addedLabels","findOrAddLabel","CategoryScale","generateTicks$1","generationOptions","dataRange","precision","maxTicks","maxDigits","includeBounds","maxSpaces","rmin","rmax","countDefined","minSpacing","niceMin","niceMax","numSpaces","decimalPlaces","relativeLabelSize","LinearScaleBase","setMin","setMax","minSign","maxSign","maxTicksLimit","stepSize","numericGeneratorOptions","LinearScale","isMajor","tickVal","generateTicks","endExp","endSignificand","exp","significand","lastTick","LogarithmicScale","getTickBackdropHeight","measureLabelSize","determineLimits","fitWithPointLabels","valueCount","pointLabelOpts","additionalAngle","plFont","textSize","hLimits","vLimits","updateLimits","buildPointLabelItems","outerDistance","pointLabelPosition","yForAngle","getTextAlignForAngle","leftForTextAlign","drawPointLabels","pointLabels","backdropColor","backdropLeft","backdropTop","backdropWidth","backdropHeight","pathRadiusLine","drawRadiusLine","gridLineOpts","createPointLabelContext","RadialLinearScale","leftMovement","rightMovement","topMovement","bottomMovement","angleMultiplier","scalingFactor","scaledDistance","pointLabel","distanceFromCenter","angleLines","INTERVALS","UNITS","sorter","adapter","determineUnitForAutoTicks","minUnit","capacity","determineUnitForFormatting","determineMajorUnit","addTick","timestamps","setMajorTicks","majorUnit","major","ticksFromTimestamps","TimeScale","_applyBounds","timeOpts","minor","hasWeekday","formats","minorFormat","majorFormat","offsets","ticksOpts","tickLabelWidth","cosRotation","sinRotation","tickFontSize","exampleTime","displayFormats","exampleLabel","prevSource","nextSource","prevTarget","TimeSeriesScale","GraphDateRangeSelector","GraphView","graph","Filler","gradient","getBorderGradient","chartHeight","width2","height2","gradient2","getBackgroundGradient","fontFamily","ConfirmEmailView","_imports_0","_component_CodeInput","submit","acceptPrivacy","policies","requiredPolicies","isAccepted","policy","setAccepted","ForgotPasswordResetView","minChars","verificationToken","SignupPoliciesBox","_component_EmailInput","_component_PasswordStrength","_component_SignupPoliciesBox","ForgotPasswordView","VersionFooter","nativeVersion","STAMHOOFD","emailInput","showVersionFooter","gotoPasswordForgot","openSignup","baseOrg","filterBuilder","buildPropertyRefs","financialSupport","getFilterConfiguration","editPropertyFilterConfiguration","setEnableProperty","cachedInheritedCategories","getRefForInheritedCategory","buildRefForInheritedCategory","requiresDataPermissions","editInheritedFilterConfiguration","previewCategory","FillRecordCategoryView","filterDescription","filterBuilderForCategory","editCategory","rootIndex","draggableCategories","EditRecordCategoryView","addCategory","EditRecordChoiceView","_component_SaveView","warningInverted","warningText","warningType","PreviewRecordView","RecordAnswerInput","recordAnswers","ChoiceRow","EditRecordView","askComments","commentsDescription","sensitive","RecordChoiceRow","_hoisted_41","_hoisted_42","_hoisted_43","_hoisted_44","_hoisted_46","_hoisted_47","_hoisted_45","_type","patchedRecord","_component_RecordChoiceRow","addChoicesPatch","descriptionTitle","shouldAskInputPlaceholder","shouldAskCommentsDescription","canAddWarning","_imports_0$1","_imports_1$1","_imports_2","_imports_3","_imports_4","_imports_5","_imports_6","_imports_7","editRecord","addRootPatch","rootCategory","categoryPatch","childCategoryPatch","me","deleteArray","putArray","parentRootCategory","childCategory","patchedRootCategories","addRootCategoriesPatch","patchedCategory","defaultEnabled","cachedComputers","getDraggableRecords","getPatchParentCategories","rootPatch","addRecord","Self","temporaryRootPatch","showExample","reactiveValue","WhatsNewCount","didCheckGlobalRoutes","useGlobalRoutes","cancel","loadingDefault","defaultOptions","resultElements","visibleOptions","focusResult","setResults","wrapWithModalStack","initialPresents","wrapContext","$memberManager","OrganizationSwitcher","AccountSwitcher","ContextNavigationBar","CustomHooksContainer","loadSessionFromUrl","ignoreUris","getLoginRoot","CoverImageContainer","LoginView","getNonAutoLoginRoot","reactiveSession","getScopedAutoRoot","getOrganizationSelectionRoot","optionalSession","baseRoot","OrganizationSelectionView","getNoPermissionsView","TabBarController","NoPermissionsView","getScopedDashboardRootFromUrl","getScopedDashboardRoot","getScopedAutoRootFromUrl","startView","startTab","membersTab","calendarTab","ManageEventsView","webshopsTab","whatsNewBadge","settingsTab","financesTab","documentsTab","sharedMoreItems","moreTab","summary","charging","membershipOrganization","$chooseMembershipOrganization","loadingOrganization","loadingOrganizationErrorBox","membershipOrganizationId","chooseMembershipOrganization","charge","getSummaryForType","useCollapsed","globalIdentifier","collapsedSections","checkingAvailability","isAvailable","lastCheckedUri","checkCount","checkAvailable","doThrottledCheck","doCheckAvailable","initialCheckCount","platformTags","rootTags","selectedTagIds","selectedTags","tagIdsToTags","allTagsWithChildren","selectedTagsWithChildren","tagsToDelete","rootTag","tagWithChildren","setTagIds","_imports_11","isPlatform","tagStringList","setupSteps","editOrganization","EditOrganizationView","selectOrganization","useCountOrganizations","organizationCount","priceBreakdown","defaultOrganizationId","defaultOrganization","limitedFilteredRequest","useChargeOrganizationsSheet","ChargeOrganizationsView","_platform","getOrganizationUIFilterBuilders","chargeOrganizationsSheet","showOrganization","OrganizationView","openMail","exportToExcel","OrganizationsTableView","OrganizationTagView","childTags","isShowTable","openChildTag","openThisTag","childTagCount","childType","filteredTags","contextMenuForTag","ft","ttt","parentTags","parentTag","moveToTag","allPatchedTags","getPatchedTag","draggableChildTags","patchedTag","addDeleteRecursive","editTag","EditOrganizationTagView","addTag","originalTags","draggableTags","hasFullAccess","EditOrganizationTagsView","rootTagsWithChildren","otherRootTags","tagsToShow","getTagById","navigateToTag","getScopedAdminRootFromUrl","getScopedAdminRoot","settingsView","membersTableView","organizationsTableView","OrganizationsMenu","groupsTab","ChargeMembershipsView","recommendedFilter","updateRecommendedFilter","oldRecommendedFilter","currentFilter","EventView","_imports_1","_imports_9","quickActions","isAcceptingNewMembers","registerMembers","checkData","getRegistrationsForMember","addNewMember","getScopedRegistrationRootFromUrl","getRootView","ownDomain","StartView","cartRoot","CartView","EventsOverview","modalStack","checkGlobalRoutes","unsubscribe","dashboardContext","fieldName","App","script"],"ignoreList":[0,1,2,3,4,5,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,33,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,68,69,70,71,72,190,191,192,194,195,196,197,198,215,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,300,301,578,604,605],"sources":["../../../../../node_modules/uuid/dist/esm-browser/rng.js","../../../../../node_modules/uuid/dist/esm-browser/stringify.js","../../../../../node_modules/uuid/dist/esm-browser/native.js","../../../../../node_modules/uuid/dist/esm-browser/v4.js","../../../../../node_modules/@simonbackx/simple-errors/esm/dist/src/SimpleError.js","../../../../../node_modules/@simonbackx/simple-errors/esm/dist/src/SimpleErrors.js","../../../../shared/networking/src/AppManager.ts","../../../../../node_modules/@simonbackx/simple-encoding/esm/dist/src/classes/Cloneable.js","../../../../../node_modules/@simonbackx/simple-encoding/esm/dist/src/classes/Identifiable.js","../../../../../node_modules/@simonbackx/simple-encoding/esm/dist/src/structs/PatchableArray.js","../../../../../node_modules/@simonbackx/simple-encoding/esm/dist/src/classes/AutoEncoder.js","../../../../../node_modules/@simonbackx/simple-encoding/esm/dist/src/classes/Patchable.js","../../../../../node_modules/@simonbackx/simple-encoding/esm/dist/src/classes/Encodeable.js","../../../../../node_modules/@simonbackx/simple-encoding/esm/dist/src/structs/StringOrNumberDecoder.js","../../../../../node_modules/@simonbackx/simple-encoding/esm/dist/src/structs/ArrayDecoder.js","../../../../../node_modules/@simonbackx/simple-encoding/esm/dist/src/structs/BooleanDecoder.js","../../../../../node_modules/@simonbackx/simple-encoding/esm/dist/src/structs/EnumDecoder.js","../../../../../node_modules/@simonbackx/simple-encoding/esm/dist/src/structs/IntegerDecoder.js","../../../../../node_modules/@simonbackx/simple-encoding/esm/dist/src/structs/NullableDecoder.js","../../../../../node_modules/@simonbackx/simple-encoding/esm/dist/src/structs/NumberDecoder.js","../../../../../node_modules/@simonbackx/simple-encoding/esm/dist/src/structs/StringDecoder.js","../../../../../node_modules/@simonbackx/simple-encoding/esm/dist/src/classes/ObjectData.js","../../../../../node_modules/@simonbackx/simple-encoding/esm/dist/src/structs/AnyDecoder.js","../../../../../node_modules/@simonbackx/simple-encoding/esm/dist/src/structs/MapDecoder.js","../../../../../node_modules/@simonbackx/simple-encoding/esm/dist/src/structs/EmailDecoder.js","../../../../../node_modules/@simonbackx/simple-encoding/esm/dist/src/structs/RecordDecoder.js","../../../../../node_modules/@simonbackx/simple-encoding/esm/dist/src/decorators/Field.js","../../../../../node_modules/@simonbackx/simple-encoding/esm/dist/src/structs/VersionBox.js","../../../../../node_modules/@simonbackx/simple-encoding/esm/dist/src/structs/DateDecoder.js","../../../../../node_modules/@simonbackx/simple-encoding/esm/dist/src/structs/URLDecoder.js","../../../../../shared/structures/esm/dist/src/Version.js","../../../../../shared/structures/esm/dist/src/PermissionLevel.js","../../../../../shared/structures/esm/dist/src/AccessRight.js","../../../../../node_modules/tslib/tslib.es6.mjs","../../../../../shared/utility/esm/dist/src/Colors.js","../../../../../shared/utility/esm/dist/src/DataValidator.js","../../../../../node_modules/luxon/src/errors.js","../../../../../node_modules/luxon/src/impl/formats.js","../../../../../node_modules/luxon/src/zone.js","../../../../../node_modules/luxon/src/zones/systemZone.js","../../../../../node_modules/luxon/src/zones/IANAZone.js","../../../../../node_modules/luxon/src/impl/locale.js","../../../../../node_modules/luxon/src/zones/fixedOffsetZone.js","../../../../../node_modules/luxon/src/zones/invalidZone.js","../../../../../node_modules/luxon/src/impl/zoneUtil.js","../../../../../node_modules/luxon/src/settings.js","../../../../../node_modules/luxon/src/impl/invalid.js","../../../../../node_modules/luxon/src/impl/conversions.js","../../../../../node_modules/luxon/src/impl/util.js","../../../../../node_modules/luxon/src/impl/english.js","../../../../../node_modules/luxon/src/impl/formatter.js","../../../../../node_modules/luxon/src/impl/regexParser.js","../../../../../node_modules/luxon/src/duration.js","../../../../../node_modules/luxon/src/interval.js","../../../../../node_modules/luxon/src/info.js","../../../../../node_modules/luxon/src/impl/diff.js","../../../../../node_modules/luxon/src/impl/digits.js","../../../../../node_modules/luxon/src/impl/tokenParser.js","../../../../../node_modules/luxon/src/datetime.js","../../../../../shared/utility/esm/dist/src/Sorter.js","../../../../../shared/utility/esm/dist/src/Formatter.js","../../../../../shared/utility/esm/dist/src/Sleep.js","../../../../../shared/utility/esm/dist/src/StringCompare.js","../../../../../shared/utility/esm/dist/src/Throttle.js","../../../../../shared/structures/esm/dist/src/addresses/CountryDecoder.js","../../../../../shared/structures/esm/dist/src/addresses/Address.js","../../../../../shared/structures/esm/dist/src/addresses/Province.js","../../../../../shared/structures/esm/dist/src/addresses/City.js","../../../../../shared/structures/node_modules/uuid/dist/esm-browser/rng.js","../../../../../shared/structures/node_modules/uuid/dist/esm-browser/regex.js","../../../../../shared/structures/node_modules/uuid/dist/esm-browser/validate.js","../../../../../shared/structures/node_modules/uuid/dist/esm-browser/stringify.js","../../../../../shared/structures/node_modules/uuid/dist/esm-browser/v4.js","../../../../../shared/structures/esm/dist/src/addresses/Premise.js","../../../../../shared/structures/esm/dist/src/Company.js","../../../../../shared/structures/esm/dist/src/filters/SortList.js","../../../../../shared/structures/esm/dist/src/filters/FilteredRequest.js","../../../../../shared/structures/esm/dist/src/filters/StamhoofdFilter.js","../../../../../shared/structures/esm/dist/src/filters/PropertyFilter.js","../../../../../shared/structures/esm/dist/src/GroupType.js","../../../../../shared/structures/esm/dist/src/files/ResolutionRequest.js","../../../../../shared/structures/esm/dist/src/members/records/RecordSettings.js","../../../../../shared/structures/esm/dist/src/members/records/RecordCategory.js","../../../../../shared/structures/esm/dist/src/members/OrganizationRecordsConfiguration.js","../../../../../shared/structures/esm/dist/src/DefaultAgeGroup.js","../../../../../shared/structures/esm/dist/src/files/File.js","../../../../../shared/structures/esm/dist/src/files/Resolution.js","../../../../../shared/structures/esm/dist/src/files/Image.js","../../../../../shared/structures/esm/dist/src/members/records/RecordAnswer.js","../../../../../shared/structures/esm/dist/src/Document.js","../../../../../shared/structures/esm/dist/src/GroupGenderType.js","../../../../../shared/structures/esm/dist/src/PermissionsResourceType.js","../../../../../shared/structures/esm/dist/src/ResourcePermissions.js","../../../../../shared/structures/esm/dist/src/PermissionRole.js","../../../../../shared/structures/esm/dist/src/PermissionsByRole.js","../../../../../shared/structures/esm/dist/src/GroupPrivateSettings.js","../../../../../shared/structures/esm/dist/src/OldGroupPrices.js","../../../../../shared/structures/esm/dist/src/RegistrationPeriodBase.js","../../../../../shared/structures/esm/dist/src/StockReservation.js","../../../../../shared/structures/esm/dist/src/GroupSettings.js","../../../../../shared/structures/esm/dist/src/members/Gender.js","../../../../../shared/structures/esm/dist/src/Group.js","../../../../../shared/structures/esm/dist/src/RichText.js","../../../../../shared/structures/esm/dist/src/Event.js","../../../../../shared/structures/esm/dist/src/GroupCategory.js","../../../../../shared/structures/esm/dist/src/MemberResponsibility.js","../../../../../shared/structures/esm/dist/src/members/MemberPlatformMembership.js","../../../../../shared/structures/esm/dist/src/members/MemberResponsibilityRecord.js","../../../../../shared/structures/esm/dist/src/Permissions.js","../../../../../shared/structures/esm/dist/src/LoadedPermissions.js","../../../../../shared/structures/esm/dist/src/endpoints/EmailRequest.js","../../../../../shared/structures/esm/dist/src/OrganizationEmail.js","../../../../../shared/structures/esm/dist/src/SetupSteps.js","../../../../../shared/structures/esm/dist/src/RegistrationPeriod.js","../../../../../shared/structures/esm/dist/src/Platform.js","../../../../../shared/structures/esm/dist/src/UserPermissions.js","../../../../../shared/structures/esm/dist/src/User.js","../../../../../shared/structures/esm/dist/src/billing/STPackage.js","../../../../../shared/structures/esm/dist/src/OrganizationGenderType.js","../../../../../shared/structures/esm/dist/src/UmbrellaOrganization.js","../../../../../shared/structures/esm/dist/src/OrganizationType.js","../../../../../shared/structures/esm/dist/src/PaymentMethod.js","../../../../../shared/structures/esm/dist/src/webshops/TransferSettings.js","../../../../../shared/structures/esm/dist/src/PaymentConfiguration.js","../../../../../shared/structures/esm/dist/src/OrganizationMetaData.js","../../../../../shared/structures/esm/dist/src/DNSRecord.js","../../../../../shared/structures/esm/dist/src/PaymentProvider.js","../../../../../shared/structures/esm/dist/src/OrganizationPrivateMetaData.js","../../../../../shared/structures/esm/dist/src/webshops/Category.js","../../../../../shared/structures/esm/dist/src/SeatingPlan.js","../../../../../shared/structures/esm/dist/src/webshops/WebshopField.js","../../../../../shared/structures/esm/dist/src/webshops/Product.js","../../../../../shared/structures/esm/dist/src/Policy.js","../../../../../shared/structures/esm/dist/src/SponsorConfig.js","../../../../../shared/structures/esm/dist/src/webshops/Discount.js","../../../../../shared/structures/esm/dist/src/webshops/WebshopMetaData.js","../../../../../shared/structures/esm/dist/src/webshops/Webshop.js","../../../../../shared/structures/esm/dist/src/Organization.js","../../../../../shared/structures/esm/dist/src/OrganizationSimple.js","../../../../../shared/structures/esm/dist/src/PaymentCustomer.js","../../../../../shared/structures/esm/dist/src/PaymentStatus.js","../../../../../shared/structures/esm/dist/src/Token.js","../../../../../shared/structures/esm/dist/src/members/Payment.js","../../../../../shared/structures/esm/dist/src/BalanceItem.js","../../../../../shared/structures/esm/dist/src/members/EmergencyContact.js","../../../../../shared/structures/esm/dist/src/members/ParentType.js","../../../../../shared/structures/esm/dist/src/members/Parent.js","../../../../../shared/structures/esm/dist/src/members/ReviewTime.js","../../../../../shared/structures/esm/dist/src/members/MemberDetails.js","../../../../../shared/structures/esm/dist/src/members/Member.js","../../../../../shared/structures/esm/dist/src/filters/InMemoryFilter.js","../../../../../shared/structures/esm/dist/src/filters/inMemoryFilterDefinitions.js","../../../../../shared/structures/esm/dist/src/members/checkout/RegisterItem.js","../../../../../shared/structures/esm/dist/src/members/Registration.js","../../../../../shared/structures/esm/dist/src/members/RegistrationWithMember.js","../../../../../shared/structures/esm/dist/src/email/EditorSmartButton.js","../../../../../shared/structures/esm/dist/src/webshops/CartStockHelper.js","../../../../../shared/structures/esm/dist/src/webshops/CartItem.js","../../../../../shared/structures/esm/dist/src/webshops/Cart.js","../../../../../shared/structures/esm/dist/src/webshops/Customer.js","../../../../../shared/structures/esm/dist/src/email/EditorSmartVariable.js","../../../../../shared/structures/esm/dist/src/members/MemberWithRegistrationsBlob.js","../../../../../shared/structures/esm/dist/src/email/EmailTemplate.js","../../../../../shared/structures/esm/dist/src/email/Email.js","../../../../../shared/structures/esm/dist/src/webshops/DiscountCode.js","../../../../../shared/structures/esm/dist/src/webshops/Checkout.js","../../../../../shared/structures/esm/dist/src/webshops/Ticket.js","../../../../../shared/structures/esm/dist/src/webshops/Order.js","../../../../../shared/structures/esm/dist/src/BalanceItemDetailed.js","../../../../../shared/structures/esm/dist/src/members/PaymentGeneral.js","../../../../../shared/structures/esm/dist/src/ReceivableBalance.js","../../../../../shared/structures/esm/dist/src/UserWithMembers.js","../../../../../shared/structures/esm/dist/src/endpoints/ChargeMembershipsSummary.js","../../../../../shared/structures/esm/dist/src/endpoints/CreateOrganization.js","../../../../../shared/structures/esm/dist/src/endpoints/ForgotPasswordRequest.js","../../../../../shared/structures/esm/dist/src/endpoints/GroupsWithOrganizations.js","../../../../../shared/structures/esm/dist/src/endpoints/OrganizationAdmins.js","../../../../../shared/structures/esm/dist/src/endpoints/PayableBalanceCollection.js","../../../../../shared/structures/esm/dist/src/endpoints/RegisterResponse.js","../../../../../shared/structures/esm/dist/src/endpoints/SignupResponse.js","../../../../../shared/structures/esm/dist/src/endpoints/VerifyEmailRequest.js","../../../../../shared/structures/esm/dist/src/grouping/PaginatedResponse.js","../../../../../shared/structures/esm/dist/src/members/checkout/BalanceItemCartItem.js","../../../../../shared/structures/esm/dist/src/members/checkout/RegisterCart.js","../../../../../shared/structures/esm/dist/src/members/checkout/RegisterCheckout.js","../../../../../shared/structures/esm/dist/src/members/PlatformMember.js","../../../../../shared/structures/esm/dist/src/email/EmailAddressSettings.js","../../../../../shared/structures/esm/dist/src/filters/ExcelExportRequest.js","../../../../../shared/structures/esm/dist/src/helpers/EventPermissionChecker.js","../../../../../shared/structures/esm/dist/src/helpers/TagHelper.js","../../../../../node_modules/@simonbackx/simple-networking/dist/src/RequestBag.js","../../../../../node_modules/@simonbackx/simple-networking/dist/src/Request.js","../../../../../node_modules/@simonbackx/simple-networking/dist/src/Server.js","../../../../shared/i18n/I18n.ts","../../../../../node_modules/@vue/shared/dist/shared.esm-bundler.js","../../../../../node_modules/@vue/reactivity/dist/reactivity.esm-bundler.js","../../../../../node_modules/@vue/runtime-core/dist/runtime-core.esm-bundler.js","../../../../../node_modules/@vue/runtime-dom/dist/runtime-dom.esm-bundler.js","../../../../../node_modules/@simonbackx/vue-app-navigation/dist/index.js","../../../../../shared/locales/esm/dist/index.js","../../../../shared/i18n/I18nController.ts","../../../../shared/i18n/LocalizedDomains.ts","../../../../shared/networking/src/NetworkManager.ts","../../../../shared/networking/src/ContextPermissions.ts","../../../../shared/networking/src/ManagedToken.ts","../../../../shared/networking/src/Storage.ts","../../../../shared/networking/src/SessionContext.ts","../../../../shared/networking/src/SessionManager.ts","../../../../shared/networking/src/LoginHelper.ts","../../../../shared/networking/src/OrganizationManager.ts","../../../../shared/networking/src/PlatformManager.ts","../../../../shared/networking/src/hooks/useRequestOwner.ts","../../../../shared/networking/src/MemberManager.ts","../../../../shared/components/src/ViewportHelper.ts","../../../../shared/components/src/errors/ErrorBox.ts","../../../../../node_modules/@simonbackx/vue-app-navigation/dist/classes.js","../../../../shared/components/src/errors/STErrorBox.vue","../../../../shared/components/src/errors/STErrorsDefault.vue","../../../../shared/components/src/errors/STErrorsInput.vue","../../../../shared/components/src/errors/Validator.ts","../../../../shared/components/src/errors/useErrors.ts","../../../../shared/components/src/errors/useValidation.ts","../../../../shared/components/src/editor/EmailStyler.ts","../../../../shared/components/src/EventBus.ts","../../../../shared/components/src/hooks/useContext.ts","../../../../shared/components/src/hooks/usePatch.ts","../../../../shared/components/src/hooks/usePatchableArray.ts","../../../../shared/components/src/hooks/usePatchArray.ts","../../../../shared/components/src/hooks/useDraggableArray.ts","../../../../shared/components/src/hooks/useEmitPatch.ts","../../../../shared/components/src/hooks/useKeyUpDown.ts","../../../../shared/components/src/hooks/usePatchMoveUpDown.ts","../../../../shared/components/src/hooks/usePlatform.ts","../../../../shared/components/src/hooks/useUser.ts","../../../../shared/components/src/hooks/useOrganization.ts","../../../../shared/components/src/hooks/useIsIOS.ts","../../../../shared/components/src/hooks/useIsMobile.ts","../../../../shared/components/src/hooks/useDeviceWidth.ts","../../../../shared/components/src/hooks/useAuth.ts","../../../../shared/components/src/hooks/useCountry.ts","../../../../shared/components/src/hooks/useUninheritedPermissions.ts","../../../../shared/components/src/hooks/useInterval.ts","../../../../shared/components/src/hooks/useGlobalEventListener.ts","../../../../shared/components/src/hooks/useBackForward.ts","../../../../shared/components/src/hooks/useSetupStepTranslations.ts","../../../../shared/components/src/hooks/useEmitPatchArray.ts","../../../../shared/components/src/fetchers/useMembersObjectFetcher.ts","../../../../shared/excel-export/src/SelectableColumn.ts","../../../../shared/excel-export/src/SelectableSheet.ts","../../../../shared/excel-export/src/SelectableWorkbook.ts","../../../../shared/excel-export/src/ExcelExportView.vue","../../../../../node_modules/orderedmap/dist/index.js","../../../../../node_modules/prosemirror-model/dist/index.js","../../../../../node_modules/prosemirror-transform/dist/index.js","../../../../../node_modules/prosemirror-state/dist/index.js","../../../../../node_modules/@tiptap/pm/node_modules/prosemirror-view/node_modules/prosemirror-transform/dist/index.js","../../../../../node_modules/@tiptap/pm/node_modules/prosemirror-view/dist/index.js","../../../../../node_modules/w3c-keyname/index.js","../../../../../node_modules/prosemirror-keymap/dist/index.js","../../../../../node_modules/@tiptap/pm/node_modules/prosemirror-transform/dist/index.js","../../../../../node_modules/prosemirror-commands/dist/index.js","../../../../../node_modules/prosemirror-schema-list/dist/index.js","../../../../../node_modules/@tiptap/core/dist/index.js","../../../../../node_modules/@tiptap/extension-image/dist/index.js","../../../../../node_modules/linkifyjs/dist/linkify.es.js","../../../../../node_modules/@tiptap/extension-link/dist/index.js","../../../../../node_modules/@tiptap/extension-typography/dist/index.js","../../../../../node_modules/@tiptap/extension-underline/dist/index.js","../../../../../node_modules/@tiptap/extension-blockquote/dist/index.js","../../../../../node_modules/@tiptap/extension-bold/dist/index.js","../../../../../node_modules/@tiptap/extension-bullet-list/dist/index.js","../../../../../node_modules/@tiptap/extension-code/dist/index.js","../../../../../node_modules/@tiptap/extension-code-block/dist/index.js","../../../../../node_modules/@tiptap/extension-document/dist/index.js","../../../../../node_modules/prosemirror-dropcursor/dist/index.js","../../../../../node_modules/@tiptap/extension-dropcursor/dist/index.js","../../../../../node_modules/prosemirror-view/dist/index.js","../../../../../node_modules/prosemirror-gapcursor/dist/index.js","../../../../../node_modules/@tiptap/extension-gapcursor/dist/index.js","../../../../../node_modules/@tiptap/extension-hard-break/dist/index.js","../../../../../node_modules/@tiptap/extension-heading/dist/index.js","../../../../../node_modules/rope-sequence/dist/index.js","../../../../../node_modules/prosemirror-history/dist/index.js","../../../../../node_modules/@tiptap/extension-history/dist/index.js","../../../../../node_modules/@tiptap/extension-horizontal-rule/dist/index.js","../../../../../node_modules/@tiptap/extension-italic/dist/index.js","../../../../../node_modules/@tiptap/extension-list-item/dist/index.js","../../../../../node_modules/@tiptap/extension-ordered-list/dist/index.js","../../../../../node_modules/@tiptap/extension-paragraph/dist/index.js","../../../../../node_modules/@tiptap/extension-strike/dist/index.js","../../../../../node_modules/@tiptap/extension-text/dist/index.js","../../../../../node_modules/@tiptap/starter-kit/dist/index.js","../../../../../node_modules/@tiptap/vue-3/dist/index.js","../../../../shared/components/src/overlays/Tooltip.vue","../../../../shared/components/src/directives/Tooltip.ts","../../../../shared/components/src/Spinner.vue","../../../../shared/components/src/navigation/LoadingButton.vue","../../../../shared/components/src/overlays/Toast.ts","../../../../shared/components/src/inputs/STInputBox.vue","../../../../shared/components/src/inputs/UploadButton.vue","../../../../../node_modules/sortablejs/modular/sortable.esm.js","../../../../../node_modules/sortablejs-vue3/dist/sortablejs-vue3.es.js","../../../../shared/components/src/layout/STList.vue","../../../../shared/components/src/layout/STListItem.vue","../../../../shared/components/src/navigation/BackButton.vue","../../../../shared/components/src/containers/InheritComponent.vue","../../../../shared/components/src/containers/TabBarItem.ts","../../../../shared/components/src/containers/TabBarDropdownView.vue","../../../../shared/components/src/containers/TabBarController.vue","../../../../shared/components/src/navigation/STButtonToolbar.vue","../../../../shared/components/src/navigation/STNavigationBar.vue","../../../../shared/components/src/navigation/STToolbar.vue","../../../../shared/components/src/inputs/Checkbox.vue","../../../../shared/components/src/overlays/ContextMenuItemView.vue","../../../../shared/components/src/overlays/ContextMenuLine.vue","../../../../shared/components/src/overlays/ContextMenuView.vue","../../../../shared/components/src/overlays/GeneralContextMenuView.vue","../../../../shared/components/src/overlays/ModalStackEventBus.ts","../../../../shared/components/src/overlays/ContextMenu.ts","../../../../shared/components/src/editor/EditorDescriptiveText.ts","../../../../shared/components/src/editor/EditorSmartButton.ts","../../../../shared/components/src/editor/EditorSmartVariable.ts","../../../../shared/components/src/editor/TextStyleButtonsView.vue","../../../../shared/components/src/editor/EditorView.vue","../../../../shared/components/src/overlays/CenteredMessage.ts","../../../../shared/components/src/email/EditEmailTemplateView.vue","../../../../shared/components/src/email/EditEmailTemplatesView.vue","../../../../shared/components/src/email/EditEmailView.vue","../../../../shared/components/src/email/EmailSettingsView.vue","../../../../shared/components/src/email/EmailView.vue","../../../../shared/components/src/tables/classes/Column.ts","../../../../shared/components/src/tables/classes/TableAction.ts","../../../../shared/components/src/tables/classes/ObjectFetcher.ts","../../../../shared/components/src/tables/classes/TableObjectFetcher.ts","../../../../shared/components/src/tables/classes/InfiniteObjectFetcher.ts","../../../../shared/components/src/views/DeleteView.vue","../../../../shared/components/src/members/PlatformFamilyManager.ts","../../../../shared/components/src/members/components/ResponsibilityIcon.vue","../../../../shared/components/src/members/components/edit/EditMemberResponsibilitiesBox.vue","../../../../shared/components/src/members/classes/RegistrationActionBuilder.ts","../../../../shared/components/src/members/classes/getSelectableWorkbook.ts","../../../../shared/components/src/members/classes/MemberActionBuilder.ts","../../../../shared/components/src/members/composables/useEditMember.ts","../../../../shared/components/src/context/appContext.ts","../../../../shared/components/src/members/components/view/ViewMemberAccountsBox.vue","../../../../shared/components/src/members/checkout/FreeContributionView.vue","../../../../shared/components/src/members/checkout/PaymentSelectionView.vue","../../../../shared/components/src/members/checkout/RegistrationSuccessView.vue","../../../../shared/components/src/types/NavigationActions.ts","../../../../shared/components/src/members/components/group/RegisterItemCheckboxRow.vue","../../../../shared/components/src/members/ChooseFamilyMembersForGroupView.vue","../../../../shared/components/src/members/components/group/BalanceItemCartItemRow.vue","../../../../shared/components/src/members/components/group/GroupIcon.vue","../../../../shared/components/src/members/components/group/GroupIconWithWaitingList.vue","../../../../shared/components/src/members/components/group/DeleteRegistrationRow.vue","../../../../shared/components/src/members/components/MemberIcon.vue","../../../../shared/components/src/members/components/group/RegisterItemRow.vue","../../../../shared/components/src/members/SearchOrganizationMembersForGroupView.vue","../../../../shared/components/src/members/ChooseOrganizationMembersForGroupView.vue","../../../../shared/components/src/members/classes/MemberStepManager.ts","../../../../shared/components/src/containers/JumpToContainer.vue","../../../../shared/components/src/inputs/StepperInput.vue","../../../../shared/components/src/groups/hooks/useDataPermissionSettings.ts","../../../../shared/components/src/groups/hooks/useExternalOrganization.ts","../../../../shared/components/src/context/AccountSwitcher.vue","../../../../shared/assets/images/illustrations/laptop-key.svg","../../../../shared/components/src/context/OrganizationAvatar.vue","../../../../shared/components/src/context/PlatformAvatar.vue","../../../../shared/components/src/MetaLogo.vue","../../../../shared/components/src/context/OrganizationLogo.vue","../../../../shared/components/src/context/PlatformLogo.vue","../../../../shared/components/src/inputs/Radio.vue","../../../../shared/components/src/filters/UIFilterEditor.vue","../../../../shared/components/src/tables/ColumnSelectorContextMenu.vue","../../../../shared/components/src/tables/ColumnSortingContextMenu.vue","../../../../shared/components/src/tables/TableActionsContextMenu.vue","../../../../shared/components/src/tables/ModernTableView.vue","../../../../shared/components/src/tables/InfiniteObjectFetcherEnd.vue","../../../../shared/components/src/tables/usePositionableSheet.ts","../../../../shared/components/src/containers/LoadingBox.vue","../../../../shared/components/src/containers/PromiseView.vue","../../../../shared/components/src/containers/AsyncComponent.ts","../../../../shared/components/src/context/hooks/useContextOptions.ts","../../../../shared/components/src/context/OrganizationAppSelector.vue","../../../../shared/components/src/context/OrganizationSwitcher.vue","../../../../shared/components/src/groups/hooks/useFinancialSupportSettings.ts","../../../../shared/components/src/groups/hooks/useRegistrationPeriods.ts","../../../../shared/components/src/groups/components/GroupOptionMenuView.vue","../../../../shared/components/src/groups/components/ReduceablePriceInput.vue","../../../../shared/components/src/groups/components/GroupOptionView.vue","../../../../shared/components/src/groups/components/GroupOptionMenuBox.vue","../../../../shared/components/src/groups/components/GroupPriceBox.vue","../../../../shared/components/src/groups/components/GroupPriceView.vue","../../../../shared/components/src/groups/EditGroupView.vue","../../../../shared/components/src/members/components/edit/EditMemberDataPermissionsBox.vue","../../../../shared/components/src/members/classes/steps/MemberDataPermissionStep.ts","../../../../shared/components/src/members/hooks/useIsPropertyRequired.ts","../../../../shared/components/src/inputs/PhoneInput.vue","../../../../shared/components/src/members/components/edit/EditEmergencyContactView.vue","../../../../shared/components/src/members/components/edit/EditEmergencyContactsBox.vue","../../../../shared/components/src/members/classes/steps/MemberEmergencyContactsStep.ts","../../../../shared/components/src/members/components/edit/EditMemberFinancialSupportBox.vue","../../../../shared/components/src/members/classes/steps/MemberFinancialSupportStep.ts","../../../../shared/components/src/members/classes/steps/MemberGeneralStep.ts","../../../../shared/components/src/inputs/Dropdown.vue","../../../../shared/components/src/inputs/EmailInput.vue","../../../../shared/components/src/inputs/AddressInput.vue","../../../../shared/components/src/inputs/SelectionAddressInput.vue","../../../../shared/components/src/members/components/edit/EditParentView.vue","../../../../shared/components/src/members/components/edit/EditMemberParentsBox.vue","../../../../shared/components/src/members/classes/steps/MemberParentsStep.ts","../../../../shared/components/src/directives/LongPress.ts","../../../../shared/components/src/overlays/DateSelectionView.vue","../../../../shared/components/src/inputs/DateSelection.vue","../../../../shared/components/src/inputs/ImageInput.vue","../../../../shared/components/src/inputs/NumberInput.vue","../../../../shared/components/src/inputs/PriceInput.vue","../../../../shared/components/src/inputs/RecordAnswerInput.vue","../../../../shared/components/src/records/components/FillRecordCategoryBox.vue","../../../../shared/components/src/members/components/edit/EditMemberRecordCategoryBox.vue","../../../../shared/components/src/members/classes/steps/MemberRecordCategoryStep.ts","../../../../shared/components/src/inputs/UitpasNumberInput.vue","../../../../shared/components/src/members/components/edit/EditMemberUitpasBox.vue","../../../../shared/components/src/members/classes/steps/MemberUitpasStep.ts","../../../../shared/components/src/members/classes/steps/index.ts","../../../../shared/components/src/members/RegisterItemView.vue","../../../../shared/components/src/members/classes/steps/RegisterItemStep.ts","../../../../shared/components/src/navigation/STFloatingFooter.vue","../../../../shared/components/src/views/PayconiqBannerView.vue","../../../../shared/components/src/views/PayconiqButtonView.vue","../../../../shared/components/src/directives/Copyable.ts","../../../../shared/components/src/views/TransferPaymentView.vue","../../../../shared/assets/images/partners/scan-apps-belgium.svg","../../../../shared/assets/images/partners/scan-apps-nl.svg","../../../../shared/assets/images/partners/kbc/app.svg","../../../../shared/assets/images/partners/ing/app.svg","../../../../shared/assets/images/partners/belfius/app.svg","../../../../shared/assets/images/partners/bnp/app.png","../../../../shared/assets/images/partners/argenta/app.png","../../../../shared/assets/images/partners/hello-bank/app.png","../../../../shared/components/src/views/PaymentHandler.ts","../../../../shared/components/src/members/classes/ViewStepsManager.ts","../../../../shared/components/src/members/checkout/steps/FreeContributionStep.ts","../../../../shared/components/src/members/checkout/PaymentCustomerView.vue","../../../../shared/components/src/members/checkout/steps/PaymentCustomerStep.ts","../../../../shared/components/src/members/checkout/steps/PaymentSelectionStep.ts","../../../../shared/components/src/members/checkout/startCheckout.ts","../../../../shared/components/src/members/checkout/useCheckoutRegisterItem.ts","../../../../shared/components/src/members/hooks/useEditMember.ts","../../../../shared/components/src/members/hooks/useAddMember.ts","../../../../shared/components/src/members/components/view/ViewMemberFamilyBox.vue","../../../../shared/components/src/members/components/view/ViewMemberGeneralBox.vue","../../../../shared/components/src/members/components/view/ViewMemberNotesBox.vue","../../../../shared/components/src/members/components/view/ViewMemberParentBox.vue","../../../../shared/components/src/records/components/ViewRecordCategoryAnswersBox.vue","../../../../shared/components/src/members/components/view/ViewMemberRecordCategoryBox.vue","../../../../shared/components/src/members/components/view/ViewMemberRecordCategoriesBox.vue","../../../../shared/components/src/members/components/view/ViewMemberRegistrationRow.vue","../../../../shared/components/src/members/components/view/ViewMemberRegistrationsBox.vue","../../../../shared/components/src/members/components/view/ViewMemberSecurityCodeBox.vue","../../../../shared/components/src/members/components/detail/MemberDetailWithButton.vue","../../../../shared/components/src/members/components/view/ViewMemberUnverifiedBox.vue","../../../../shared/components/src/members/components/view/ViewMemberWarningsBox.vue","../../../../shared/components/src/members/components/view/ViewMemberResponsibilityRow.vue","../../../../shared/components/src/members/components/view/ViewMemberResponsibilitiesBox.vue","../../../../shared/components/src/members/tabs/MemberDetailsTab.vue","../../../../shared/components/src/payments/PaymentView.vue","../../../../shared/components/src/payments/AsyncPaymentView.vue","../../../../shared/assets/images/partners/icons/bancontact.svg","../../../../shared/assets/images/partners/icons/ideal.svg","../../../../shared/components/src/payments/components/PaymentRow.vue","../../../../shared/components/src/payments/EditBalanceItemView.vue","../../../../shared/components/src/inputs/IBANInput.vue","../../../../shared/components/src/navigation/SaveView.vue","../../../../shared/components/src/payments/EditPaymentView.vue","../../../../shared/components/src/members/tabs/MemberPaymentsTab.vue","../../../../shared/components/src/members/components/platform-membership/SelectPlatformMembershipView.vue","../../../../shared/components/src/members/tabs/MemberPlatformMembershipTab.vue","../../../../shared/components/src/members/MemberSegmentedView.vue","../../../../shared/components/src/members/MembersTableView.vue","../../../../shared/assets/images/illustrations/communication.svg","../../../../shared/assets/images/illustrations/email.svg","../../../../shared/components/src/inputs/CodeInput.vue","../../../../shared/components/src/members/MemberStepView.vue","../../../../shared/components/src/members/components/group/RegisterMemberGroupRow.vue","../../../../shared/components/src/members/SearchOrganizationView.vue","../../../../shared/components/src/members/ChooseGroupForMemberView.vue","../../../../shared/components/src/inputs/BirthDayInput.vue","../../../../shared/components/src/inputs/RadioGroup.vue","../../../../shared/components/src/members/components/edit/EditMemberGeneralBox.vue","../../../../shared/components/src/members/components/edit/EditMemberNotesBox.vue","../../../../shared/components/src/members/components/edit/EditMemberAllBox.vue","../../../../shared/components/src/members/components/MemberCountSpan.vue","../../../../shared/components/src/composables/useSetupStepReviewDescription.ts","../../../../shared/components/src/composables/useVisibilityChange.ts","../../../../shared/components/src/fetchers/useOrganizationsObjectFetcher.ts","../../../../shared/components/src/fetchers/useEventsObjectFetcher.ts","../../../../shared/components/src/filters/DateUIFilterView.vue","../../../../shared/components/src/filters/UIFilter.ts","../../../../shared/components/src/filters/DateUIFilter.ts","../../../../shared/components/src/filters/components/GroupUIFilterList.vue","../../../../shared/components/src/filters/GroupUIFilterView.vue","../../../../shared/components/src/filters/UnknownUIFilterView.vue","../../../../shared/components/src/filters/UnknownUIFilter.ts","../../../../shared/components/src/filters/GroupUIFilter.ts","../../../../shared/components/src/filters/MultipleChoiceUIFilterView.vue","../../../../shared/components/src/filters/MultipleChoiceUIFilter.ts","../../../../shared/components/src/inputs/TimeMinutesInput.vue","../../../../shared/components/src/filters/NumberUIFilterView.vue","../../../../shared/components/src/filters/NumberUIFilter.ts","../../../../shared/components/src/filters/StringUIFilterView.vue","../../../../shared/components/src/filters/StringUIFilter.ts","../../../../shared/components/src/filters/filterBuilders.ts","../../../../shared/components/src/inputs/hooks/useResizeObserver.ts","../../../../shared/components/src/inputs/ScrollableSegmentedControl.vue","../../../../shared/components/src/events/components/EventRow.vue","../../../../shared/components/src/events/composables/useEventPermissions.ts","../../../../shared/components/src/inputs/DefaultAgeGroupIdsInput.vue","../../../../shared/components/src/inputs/GroupsInput.vue","../../../../shared/components/src/events/EditEventView.vue","../../../../shared/assets/images/illustrations/flag.svg","../../../../shared/assets/images/illustrations/list.svg","../../../../shared/assets/images/illustrations/email-template.svg","../../../../shared/components/src/containers/ExternalOrganizationContainer.vue","../../../../shared/components/src/views/ImageComponent.vue","../../../../shared/components/src/events/components/EventInfoTable.vue","../../../../shared/components/src/events/EventOverview.vue","../../../../shared/components/src/events/ManageEventsView.vue","../../../../shared/components/src/containers/AuthenticatedView.vue","../../../../shared/components/src/containers/ContextProvider.vue","../../../../shared/components/src/containers/CoverImageContainer.vue","../../../../shared/components/src/containers/CustomHooksContainer.vue","../../../../shared/components/src/transitions/TransitionFade.vue","../../../../shared/components/src/filters/PropertyFilterInput.vue","../../../../shared/components/src/filters/PropertyFilterView.vue","../../../../shared/components/src/ReviewCheckbox.vue","../../../../shared/components/src/organizations/components/CompanyInputBox.vue","../../../../shared/components/src/organizations/components/EditCompanyView.vue","../../../../shared/components/src/organizations/GeneralSettingsView.vue","../../../../shared/components/src/quick-actions/QuickActionsBox.vue","../../../../shared/assets/images/illustrations/cart.svg","../../../../shared/assets/images/illustrations/email-warning.svg","../../../../shared/assets/images/illustrations/missing-data.svg","../../../../shared/assets/images/illustrations/outstanding-amount.svg","../../../../shared/components/src/quick-actions/hooks/useRegistrationQuickActions.ts","../../../../shared/components/src/setupSteps/SetupStepRow.vue","../../../../shared/components/src/setupSteps/SetupStepRows.vue","../../../../shared/components/src/icons/Logo.vue","../../../../shared/components/src/navigation/LegalFooter.vue","../../../../shared/components/src/navigation/STNavigationTitle.vue","../../../../shared/components/src/overlays/CenteredMessageView.vue","../../../../shared/assets/images/illustrations/clock.svg","../../../../shared/assets/images/illustrations/health-data.svg","../../../../shared/assets/images/illustrations/sync.svg","../../../../shared/components/src/overlays/InputSheet.vue","../../../../shared/components/src/overlays/ToastView.vue","../../../../shared/components/src/overlays/ToastBox.vue","../../../../shared/components/src/GroupAvatar.vue","../../../../shared/components/src/steps/StepsHeader.vue","../../../../shared/components/src/steps/Steps.vue","../../../../shared/components/src/useReview.ts","../../../../shared/components/src/icons/STGradientBackground.vue","../../../../shared/components/src/icons/ProgressRing.vue","../../../../shared/components/src/inputs/AgeInput.vue","../../../../shared/components/src/inputs/CheckboxListItem.vue","../../../../shared/components/src/inputs/ColorInput.vue","../../../../shared/components/src/inputs/CompanyNumberInput.vue","../../../../shared/components/src/inputs/FileInput.vue","../../../../shared/components/src/inputs/MultiSelectInput.vue","../../../../shared/components/src/inputs/PasswordStrength.vue","../../../../shared/components/src/inputs/PermyriadInput.vue","../../../../shared/components/src/inputs/PrefixInput.vue","../../../../shared/components/src/inputs/SegmentedControl.vue","../../../../shared/components/src/inputs/Slider.vue","../../../../shared/components/src/inputs/TimeInput.vue","../../../../shared/components/src/inputs/UploadFileButton.vue","../../../../shared/components/src/inputs/UrlInput.vue","../../../../shared/components/src/inputs/VATNumberInput.vue","../../../../../node_modules/@tiptap/extension-placeholder/dist/index.js","../../../../shared/components/src/ColorHelper.ts","../../../../shared/components/src/editor/EditorWarningBox.ts","../../../../shared/components/src/inputs/WYSIWYGTextInput.vue","../../../../shared/components/src/inputs/TagIdsInput.vue","../../../../shared/components/src/inputs/GroupIdsInput.vue","../../../../shared/components/src/views/AddDiscountCodeBox.vue","../../../../shared/components/src/views/CartItemRow.vue","../../../../shared/components/src/views/FieldBox.vue","../../../../shared/components/src/views/OptionMenuBox.vue","../../../../shared/components/src/views/SeatSelectionBox.vue","../../../../shared/components/src/views/ChooseSeatsView.vue","../../../../shared/components/src/views/CartItemView.vue","../../../../shared/components/src/views/ProductBox.vue","../../../../shared/components/src/views/ProductGrid.vue","../../../../shared/components/src/views/CategoryBox.vue","../../../../shared/components/src/views/ChangePasswordView.vue","../../../../shared/components/src/views/DetailedTicketView.vue","../../../../shared/components/src/records/FillRecordCategoryView.vue","../../../../shared/components/src/views/LogoEditor.vue","../../../../shared/components/src/views/ShowSeatsView.vue","../../../../shared/components/src/views/PaymentPendingView.vue","../../../../shared/assets/images/partners/payconiq/app.svg","../../../../shared/components/src/views/PaymentSelectionList.vue","../../../../shared/components/src/directives/ColorDirective.ts","../../../../shared/components/src/VueGlobalHelper.ts","../../../../../node_modules/chart.js/dist/chunks/helpers.segment.mjs","../../../../../node_modules/chart.js/dist/chart.mjs","../../../../shared/components/src/views/GraphDateRangeSelector.vue","../../../../shared/components/src/views/GraphView.vue","../../../../shared/components/src/auth/ConfirmEmailView.vue","../../../../shared/components/src/auth/components/SignupPoliciesBox.vue","../../../../shared/components/src/auth/ForgotPasswordResetView.vue","../../../../shared/components/src/auth/ForgotPasswordView.vue","../../../../shared/components/src/context/VersionFooter.vue","../../../../shared/components/src/auth/PlatformFooter.vue","../../../../shared/components/src/auth/LoginView.vue","../../../../shared/components/src/auth/NoPermissionsView.vue","../../../../shared/components/src/records/RecordEditorSettings.ts","../../../../shared/components/src/records/components/InheritedRecordsConfigurationBox.vue","../../../../shared/components/src/records/components/RecordCategoryRow.vue","../../../../shared/components/src/records/components/EditRecordCategoriesBox.vue","../../../../shared/components/src/records/EditRecordChoiceView.vue","../../../../shared/components/src/records/components/PreviewRecordView.vue","../../../../shared/components/src/records/components/RecordChoiceRow.vue","../../../../shared/components/src/records/EditRecordView.vue","../../../../shared/assets/images/illustrations/text-input.svg","../../../../shared/assets/images/illustrations/textarea.svg","../../../../shared/assets/images/illustrations/checkbox.svg","../../../../shared/assets/images/illustrations/radio-input.svg","../../../../shared/assets/images/illustrations/multiple-choice-input.svg","../../../../shared/assets/images/illustrations/email-input.svg","../../../../shared/assets/images/illustrations/address-input.svg","../../../../shared/assets/images/illustrations/date-input.svg","../../../../shared/components/src/records/components/RecordRow.vue","../../../../shared/components/src/records/EditRecordCategoryView.vue","../../src/classes/WhatsNewCount.ts","../../src/useGlobalRoutes.ts","../../src/views/login/OrganizationSelectionView.vue","../../src/getRootViews.ts","../../../admin/src/views/finances/ChargeMembershipsView.vue","../../src/hooks/useCollapsed.ts","../../../admin/src/views/organizations/components/OrganizationUriInput.vue","../../../admin/src/views/organizations/tags/components/SelectOrganizationTagRow.vue","../../../admin/src/views/organizations/EditOrganizationView.vue","../../../../shared/assets/images/illustrations/edit-data.svg","../../../../shared/assets/images/illustrations/group.svg","../../../admin/src/views/organizations/OrganizationView.vue","../../../admin/src/views/organizations/components/OrganizationSelect.vue","../../../admin/src/views/organizations/composables/useCountOrganizations.ts","../../../admin/src/views/organizations/ChargeOrganizationsView.vue","../../../admin/src/views/organizations/composables/useChargeOrganizationsSheet.ts","../../../admin/src/views/organizations/getSelectableWorkbook.ts","../../../admin/src/views/organizations/OrganizationsTableView.vue","../../../admin/src/views/organizations/OrganizationTagView.vue","../../../admin/src/views/organizations/tags/components/TagRow.vue","../../../admin/src/views/organizations/tags/EditOrganizationTagView.vue","../../../admin/src/views/organizations/tags/EditOrganizationTagsView.vue","../../../admin/src/views/organizations/OrganizationsMenu.vue","../../../admin/src/getRootViews.ts","../../../registration/src/views/cart/CartView.vue","../../../registration/src/views/events/EventView.vue","../../../registration/src/views/events/EventsOverview.vue","../../../../shared/assets/images/illustrations/magnifier.svg","../../../../shared/assets/images/illustrations/creditcards.svg","../../../registration/src/views/start/StartView.vue","../../../registration/src/getRootView.ts","../../src/App.vue","../../main.ts"],"sourcesContent":["// Unique ID creation requires a high quality random # generator. In the browser we therefore\n// require the crypto API and do not support built-in fallback to lower quality random number\n// generators (like Math.random()).\nlet getRandomValues;\nconst rnds8 = new Uint8Array(16);\nexport default function rng() {\n // lazy load so that environments that need to polyfill have a chance to do so\n if (!getRandomValues) {\n // getRandomValues needs to be invoked in a context where \"this\" is a Crypto implementation.\n getRandomValues = typeof crypto !== 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto);\n\n if (!getRandomValues) {\n throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n }\n }\n\n return getRandomValues(rnds8);\n}","import validate from './validate.js';\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\n\nconst byteToHex = [];\n\nfor (let i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).slice(1));\n}\n\nexport function unsafeStringify(arr, offset = 0) {\n // Note: Be careful editing this code! It's been tuned for performance\n // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434\n return byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]];\n}\n\nfunction stringify(arr, offset = 0) {\n const uuid = unsafeStringify(arr, offset); // Consistency check for valid UUID. If this throws, it's likely due to one\n // of the following:\n // - One or more input array values don't map to a hex octet (leading to\n // \"undefined\" in the uuid)\n // - Invalid input values for the RFC `version` or `variant` fields\n\n if (!validate(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n\n return uuid;\n}\n\nexport default stringify;","const randomUUID = typeof crypto !== 'undefined' && crypto.randomUUID && crypto.randomUUID.bind(crypto);\nexport default {\n randomUUID\n};","import native from './native.js';\nimport rng from './rng.js';\nimport { unsafeStringify } from './stringify.js';\n\nfunction v4(options, buf, offset) {\n if (native.randomUUID && !buf && !options) {\n return native.randomUUID();\n }\n\n options = options || {};\n const rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n\n rnds[6] = rnds[6] & 0x0f | 0x40;\n rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided\n\n if (buf) {\n offset = offset || 0;\n\n for (let i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n\n return buf;\n }\n\n return unsafeStringify(rnds);\n}\n\nexport default v4;","import { v4 as uuidv4 } from \"uuid\";\n// Error that is caused by a client and should be reported to the client\nexport class SimpleError extends Error {\n constructor(error) {\n var _a;\n super(error.message);\n this.code = error.code;\n this.message = error.message;\n this.human = error.human;\n this.field = error.field;\n this.statusCode = error.statusCode;\n this.id = (_a = error.id) !== null && _a !== void 0 ? _a : this.generateID();\n this.meta = error.meta;\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, SimpleError);\n }\n }\n toString() {\n return this.code + \": \" + this.message + (this.field ? \" at \" + this.field : \"\") + \" (\" + this.id + \")\";\n }\n /**\n * Required to override the default toJSON behaviour of Error\n */\n toJSON() {\n return this.encode({ version: 0 });\n }\n encode(context) {\n return {\n id: this.id,\n code: this.code,\n message: this.message,\n human: this.human,\n field: this.field,\n meta: this.meta\n };\n }\n static decode(data) {\n var _a, _b, _c;\n return new SimpleError({\n id: data.field(\"id\").string,\n code: data.field(\"code\").string,\n message: data.field(\"message\").string,\n human: (_a = data.optionalField(\"human\")) === null || _a === void 0 ? void 0 : _a.string,\n field: (_b = data.optionalField(\"field\")) === null || _b === void 0 ? void 0 : _b.string,\n meta: (_c = data.optionalField(\"meta\")) === null || _c === void 0 ? void 0 : _c.value\n });\n }\n hasCode(code) {\n return this.code === code;\n }\n getCode(code) {\n if (this.hasCode(code)) {\n return this;\n }\n }\n hasFieldThatStartsWith(prefix) {\n return !!this.field && this.field.startsWith(prefix);\n }\n doesMatchFields(fields) {\n for (const field of fields) {\n if (this.doesMatchField(field)) {\n return true;\n }\n }\n return false;\n }\n doesMatchField(field) {\n if (!this.field) {\n return false;\n }\n return this.field.startsWith(field);\n }\n generateID() {\n return uuidv4() + \"@\" + new Date().getTime();\n }\n addNamespace(field) {\n this.field = this.field ? field + \".\" + this.field : field;\n }\n /// Returns a human description of all the errors\n getHuman() {\n var _a;\n return (_a = this.human) !== null && _a !== void 0 ? _a : this.message;\n }\n}\nexport function isSimpleError(e) {\n return typeof e.id == \"string\" && typeof e.code == \"string\" && typeof e.message == \"string\" && e.encode && e.doesMatchFields && e.doesMatchField;\n}\n//# sourceMappingURL=SimpleError.js.map","import { isSimpleError, SimpleError } from './SimpleError';\nexport function isSimpleErrors(e) {\n return e.errors && Array.isArray(e.errors) && e.errors.length > 0 && isSimpleError(e.errors[0]);\n}\n// Error that is caused by a client and should be reported to the client\nexport class SimpleErrors extends Error {\n constructor(...errors) {\n super(errors.map((e) => e.message).join(\"\\n\"));\n this.errors = errors;\n }\n addError(error) {\n if (isSimpleError(error)) {\n this.errors.push(error);\n this.message += \"\\n\" + error.toString();\n }\n else if (isSimpleErrors(error)) {\n this.errors.push(...error.errors);\n this.message += \"\\n\" + error.toString();\n }\n else {\n throw new Error(\"Unsupported addError\");\n }\n }\n unshiftError(error) {\n if (isSimpleError(error)) {\n this.errors.unshift(error);\n this.message += \"\\n\" + error.toString();\n }\n else if (isSimpleErrors(error)) {\n this.errors.unshift(...error.errors);\n this.message += \"\\n\" + error.toString();\n }\n else {\n throw new Error(\"Unsupported addError\");\n }\n }\n get statusCode() {\n var _a;\n return (_a = this.errors.find((e) => e.statusCode !== undefined)) === null || _a === void 0 ? void 0 : _a.statusCode;\n }\n removeErrorAt(index) {\n this.errors.splice(index, 1);\n }\n addNamespace(field) {\n this.errors.forEach((e) => {\n e.addNamespace(field);\n });\n }\n /**\n * @deprecated Renamed to hasCode\n */\n containsCode(code) {\n return this.hasCode(code);\n }\n hasCode(code) {\n return this.errors.findIndex((e) => e.hasCode(code)) !== -1;\n }\n getCode(code) {\n return this.errors.find((e) => e.hasCode(code));\n }\n /**\n * @deprecated Renamed to hasFieldThatStartsWith\n */\n containsFieldThatStartsWith(prefix) {\n return this.hasFieldThatStartsWith(prefix);\n }\n hasFieldThatStartsWith(prefix) {\n return this.errors.findIndex((e) => e.hasFieldThatStartsWith(prefix)) !== -1;\n }\n /**\n * Required to override the default toJSON behaviour of Error\n */\n toJSON() {\n return this.encode({ version: 0 });\n }\n encode(context) {\n return {\n errors: this.errors.map((e) => e.encode(context)),\n };\n }\n static decode(data) {\n return new SimpleErrors(...data.field(\"errors\").array(SimpleError));\n }\n throwIfNotEmpty() {\n if (this.errors.length > 0) {\n if (this.errors.length == 1) {\n throw this.errors[0];\n }\n throw this;\n }\n }\n get human() {\n return this.getHuman();\n }\n /// Returns a human description of all the errors\n getHuman() {\n return this.errors\n .filter((e) => !!e.getHuman())\n .map((e) => e.getHuman())\n .join(\"\\n\");\n }\n}\n//# sourceMappingURL=SimpleErrors.js.map","import { SessionContext } from \"./SessionContext\";\n\n// TODO: remove duplicate type definitions, but need to check if capacitor won't get loaded on the web...\ntype PermissionState = 'prompt' | 'prompt-with-rationale' | 'granted' | 'denied';\nexport interface PermissionStatus {\n receive: PermissionState;\n}\n\ninterface PluginListenerHandle {\n remove: () => Promise;\n}\n\ntype QRScannerPlugin = {\n startScanning(): Promise;\n getTorch(): Promise<{ status: boolean }>;\n toggleTorch(): Promise<{ status: boolean }>;\n stopScanning(): Promise;\n checkPermissions(): Promise;\n requestPermissions(): Promise;\n addListener(\n eventName: 'scannedQRCode',\n listenerFunc: (result: { value: string }) => void,\n ): Promise\n}\n\nexport type UpdateOptions = {\n customText?: string,\n visibleCheck?: 'spinner' | 'text',\n visibleDownload?: boolean,\n installAutomatically?: boolean,\n checkTimeout?: number,\n /**\n * Download and install latest version again\n */\n force?: boolean,\n channel?: string\n};\n\n\nexport class AppManager {\n static shared = new AppManager()\n\n platform: \"android\" | \"ios\" | \"web\" = \"web\"\n\n /// If needed: in the app we need to override XMLHttpRequest with native http requests to prevent CORS in some API's\n overrideXMLHttpRequest?: any\n\n nativeVersion?: string\n nativeBuild?: string\n\n get isNative(): boolean {\n return this.platform !== \"web\"\n }\n\n setVersion({version, build}: {version: string, build:string}) {\n this.nativeVersion = version\n this.nativeBuild = build\n }\n\n hapticWarning = () => {\n if (window.navigator.vibrate) {\n window.navigator.vibrate([100, 100, 100]);\n }\n }\n\n hapticError = () => {\n if (window.navigator.vibrate) {\n window.navigator.vibrate([100, 100, 100]);\n }\n }\n\n hapticTap = () => {\n if (window.navigator.vibrate) {\n window.navigator.vibrate(50);\n }\n }\n\n hapticSuccess = () => {\n if (window.navigator.vibrate) {\n window.navigator.vibrate(100);\n }\n }\n\n /**\n * Mark a place in the app where an app review is appropriate.\n */\n markReviewMoment = ($context: SessionContext) => {\n // No default implementation\n }\n\n checkUpdates: (options?: UpdateOptions) => Promise = async () => {\n // No default implementation\n }\n\n downloadFile: ((data: any, filename: string) => Promise) | null = null\n\n // Optional: if the current platform ahs a native scanner (see QRScannerPlugin in mobile frontend), this pluging will get instered here\n QRScanner?: QRScannerPlugin\n\n getOS(): \"android\" | \"iOS\" | \"web\" | \"macOS\" | \"windows\" | \"unknown\" {\n if (this.platform === \"ios\") {\n return \"iOS\"\n }\n\n if (this.platform === \"android\") {\n return \"android\"\n }\n\n const userAgent = navigator.userAgent || navigator.vendor;\n\n if (/android/i.test(userAgent)) {\n return \"android\";\n }\n\n if (/Mac OS X 10_14|Mac OS X 10_13|Mac OS X 10_12|Mac OS X 10_11|Mac OS X 10_10|Mac OS X 10_9/.test(userAgent)) {\n // Different sms protocol\n return \"macOS\";\n }\n\n // iOS detection from: http://stackoverflow.com/a/9039885/177710\n if (/iPad|iPhone|iPod/.test(userAgent) && !(window as any).MSStream) {\n return \"iOS\";\n }\n\n // iPad on iOS 13 detection\n if (navigator.userAgent.includes(\"Mac\") && \"ontouchend\" in document) {\n return \"iOS\";\n }\n\n if (navigator.platform.toUpperCase().indexOf('MAC')>=0 ) {\n return \"macOS\";\n }\n\n if (navigator.platform.toUpperCase().indexOf('WIN')>=0 ) {\n return \"windows\";\n }\n\n if (navigator.platform.toUpperCase().indexOf('IPHONE')>=0 ) {\n return \"iOS\";\n }\n\n if (navigator.platform.toUpperCase().indexOf('ANDROID')>=0 ) {\n return \"android\";\n }\n\n return \"unknown\"\n \n }\n \n}","export function isCloneable(object) {\n if (typeof object !== \"object\" || object === null) {\n return false;\n }\n return !!object.clone;\n}\n/**\n * Use this method to encode an object (might be an encodeable implementation) into a decodable structure\n */\nexport function cloneObject(obj) {\n if (isCloneable(obj)) {\n return (obj).clone(); // paranthesis fix type checking for some reason?\n }\n if (Array.isArray(obj)) {\n return (obj).map((e) => {\n return cloneObject(e);\n });\n }\n if (obj instanceof Map) {\n // Transform into a normal object to conform to MapDecoders expected format\n const encodedObj = new Map();\n for (const [key, value] of obj) {\n const k = cloneObject(key);\n encodedObj.set(k, cloneObject(value));\n }\n return encodedObj;\n }\n if (obj instanceof Date) {\n return new Date(obj);\n }\n if (typeof obj === \"object\" && obj !== null) {\n return Object.assign(Object.create(obj.constructor.prototype), obj);\n }\n // Singular value\n return obj;\n}\n//# sourceMappingURL=Cloneable.js.map","export function hasId(val) {\n return val.id !== undefined;\n}\nexport function getId(val) {\n if (hasId(val)) {\n return val.id;\n }\n return val;\n}\nexport function getOptionalId(val) {\n if (hasId(val)) {\n return val.id;\n }\n return val;\n}\n//# sourceMappingURL=Identifiable.js.map","import { SimpleError } from \"@simonbackx/simple-errors\";\nimport { cloneObject } from \"../classes/Cloneable\";\nimport { encodeObject } from \"../classes/Encodeable\";\nimport { getId } from \"../classes/Identifiable\";\nimport { isPatchable } from \"../classes/Patchable\";\nfunction isMove(val) {\n return val.move !== undefined;\n}\nfunction isPut(val) {\n return val.put !== undefined;\n}\nfunction isDelete(val) {\n return val.delete !== undefined;\n}\nfunction isPatch(val) {\n return val.patch !== undefined;\n}\n/**\n * Helps with synchronizing changes to an array. As long as every element in the array has a unique identifier.\n */\nexport class PatchableArray {\n constructor(changes) {\n this._isPatchableArray = true;\n this.changes = changes !== null && changes !== void 0 ? changes : [];\n }\n clone() {\n // Deep clone self\n const cloned = new PatchableArray();\n cloned.merge(this);\n return cloned;\n }\n merge(other) {\n // We need to clone the incoming changes, because otherwise we would keep the same reference\n // to individual changes we might still change\n for (const change of other.changes) {\n this.changes.push(cloneObject(change));\n }\n }\n patch(patch) {\n if (Array.isArray(patch)) {\n // Transform itself into a normal array. Override all existing patches\n return patch.slice();\n }\n // Deep clone self\n const cloned = this.clone();\n for (const change of patch.changes) {\n // Apply this change\n if (isMove(change)) {\n cloned.addMove(change.move, change.afterId);\n }\n else if (isPut(change)) {\n cloned.addPut(change.put, change.afterId);\n }\n else if (isDelete(change)) {\n cloned.addDelete(change.delete);\n }\n else if (isPatch(change)) {\n cloned.addPatch(change.patch);\n }\n else {\n throw new Error(\"Invalid change: \" + JSON.stringify(change));\n }\n }\n return cloned;\n }\n addPut(value, after) {\n this.changes.push({ afterId: after, put: value });\n }\n addMove(item, after) {\n this.changes.push({ afterId: after, move: item });\n }\n hasChanges(item) {\n for (const change of this.changes) {\n if (isMove(change)) {\n // ok\n }\n else if (isPut(change)) {\n if (getId(change.put) == item) {\n return true;\n }\n }\n else if (isDelete(change)) {\n if (change.delete == item) {\n return true;\n }\n }\n else if (isPatch(change)) {\n if (getId(change.patch) == item) {\n return true;\n }\n }\n else {\n throw new Error(\"Invalid change: \" + JSON.stringify(change));\n }\n }\n return false;\n }\n filter(item) {\n const construct = this.constructor;\n const n = new construct();\n const newCurrentChanges = [];\n for (const change of this.changes) {\n if (isMove(change)) {\n newCurrentChanges.push(change);\n }\n else if (isPut(change)) {\n if (getId(change.put) == item) {\n n.changes.push(change);\n }\n else {\n newCurrentChanges.push(change);\n }\n }\n else if (isDelete(change)) {\n if (change.delete == item) {\n n.changes.push(change);\n }\n else {\n newCurrentChanges.push(change);\n }\n }\n else if (isPatch(change)) {\n if (getId(change.patch) == item) {\n n.changes.push(change);\n }\n else {\n newCurrentChanges.push(change);\n }\n }\n else {\n throw new Error(\"Invalid change: \" + JSON.stringify(change));\n }\n }\n this.changes = newCurrentChanges;\n return n;\n }\n addPatch(value) {\n const id = getId(value);\n const otherPut = this.changes.findIndex((e) => isPut(e) && getId(e.put) == id);\n if (otherPut !== -1) {\n const other = this.changes[otherPut];\n if (isPatchable(other.put)) {\n this.changes.splice(otherPut, 1, {\n put: other.put.patch(value),\n afterId: other.afterId,\n });\n }\n else {\n this.changes.splice(otherPut, 1, {\n put: value,\n afterId: other.afterId,\n });\n }\n return;\n }\n const otherPatch = this.changes.findIndex((e) => isPatch(e) && getId(e.patch) == id);\n if (otherPatch !== -1) {\n const other = this.changes[otherPatch];\n if (isPatchable(other.patch)) {\n this.changes.splice(otherPatch, 1, {\n patch: other.patch.patch(value),\n });\n }\n else {\n this.changes.splice(otherPatch, 1, {\n patch: value,\n });\n }\n return;\n }\n this.changes.push({ patch: value });\n }\n addDelete(id) {\n // Remove all puts, patches and moves\n const otherPut = this.changes.findIndex((e) => isPut(e) && getId(e.put) == id);\n if (otherPut !== -1) {\n // if it had a put, remove the put but don't add a delete\n this.changes.splice(otherPut, 1);\n return;\n }\n else {\n const otherPatch = this.changes.findIndex((e) => isPatch(e) && getId(e.patch) == id);\n if (otherPatch !== -1) {\n this.changes.splice(otherPatch, 1);\n }\n }\n this.changes.push({ delete: id });\n }\n /// Apply patch changes to a given array\n applyTo(array) {\n const newArray = array.slice(0);\n for (const change of this.changes) {\n // Apply this change\n if (isMove(change)) {\n // First do a delete of this value\n const index = newArray.findIndex((e) => getId(e) == change.move);\n if (index != -1) {\n const value = newArray[index];\n newArray.splice(index, 1);\n // Insert it again\n // null = inserting at the beginning\n // not found = inserting at the end\n let afterIndex = -1;\n if (change.afterId !== null) {\n afterIndex = newArray.findIndex((e) => getId(e) == change.afterId);\n if (afterIndex == -1) {\n afterIndex = newArray.length - 1;\n }\n }\n newArray.splice(afterIndex + 1, 0, value);\n }\n else {\n // maybe throw here?\n console.warn(\"Could not find element with id \" + change.move);\n }\n }\n else if (isPut(change)) {\n // null = inserting at the beginning\n // not found = inserting at the end\n let afterIndex = -1;\n if (change.afterId !== null) {\n afterIndex = newArray.findIndex((e) => getId(e) == change.afterId);\n if (afterIndex == -1) {\n afterIndex = newArray.length - 1;\n }\n }\n if (change.afterId === undefined) {\n afterIndex = newArray.length - 1;\n }\n newArray.splice(afterIndex + 1, 0, change.put);\n }\n else if (isDelete(change)) {\n // First do a delete of this value\n const index = newArray.findIndex((e) => getId(e) == change.delete);\n if (index != -1) {\n newArray.splice(index, 1);\n }\n else {\n console.warn(\"Could not find element with id \" + change.delete);\n }\n }\n else if (isPatch(change)) {\n // First do a delete of this value\n const index = newArray.findIndex((e) => getId(e) == getId(change.patch));\n if (index != -1) {\n // Patch!\n const value = newArray[index];\n if (isPatchable(value)) {\n newArray.splice(index, 1, value.patch(change.patch));\n }\n else {\n newArray.splice(index, 1, change.patch);\n }\n }\n }\n else {\n throw new Error(\"Invalid change: \" + JSON.stringify(change));\n }\n }\n return newArray;\n }\n encode(context) {\n return {\n _isPatch: true,\n changes: this.changes.map((change) => {\n if (isMove(change)) {\n // First do a delete of this value\n return {\n afterId: change.afterId,\n move: encodeObject(change.move, context),\n };\n }\n else if (isPut(change)) {\n // First do a delete of this value\n return {\n afterId: change.afterId,\n put: encodeObject(change.put, context),\n };\n }\n else if (isDelete(change)) {\n return {\n delete: change.delete,\n };\n }\n else if (isPatch(change)) {\n // First do a delete of this value\n return {\n patch: encodeObject(change.patch, context),\n };\n }\n })\n };\n }\n getPuts() {\n return this.changes.filter((change) => isPut(change));\n }\n getPatches() {\n return this.changes.filter((change) => isPatch(change)).map((p) => p.patch);\n }\n getDeletes() {\n return this.changes.filter((change) => isDelete(change)).map((p) => p.delete);\n }\n getMoves() {\n return this.changes.filter((change) => isMove(change));\n }\n}\nexport class PatchableArrayItemDecoder {\n constructor(putDecoder, patchDecoder, idDecoder) {\n this.putDecoder = putDecoder;\n this.patchDecoder = patchDecoder;\n this.idDecoder = idDecoder;\n }\n decode(data) {\n var _a;\n const put = data.optionalField(\"put\");\n if (put !== undefined) {\n // throw decoding errors from putDecoder and idDecoder\n return {\n put: put.decode(this.putDecoder),\n afterId: (_a = data.undefinedField(\"afterId\")) === null || _a === void 0 ? void 0 : _a.nullable(this.idDecoder),\n };\n }\n const move = data.optionalField(\"move\");\n if (move !== undefined) {\n return {\n move: move.decode(this.idDecoder),\n afterId: data.field(\"afterId\").nullable(this.idDecoder),\n };\n }\n const d = data.optionalField(\"delete\");\n if (d !== undefined) {\n return {\n delete: d.decode(this.idDecoder),\n };\n }\n const patch = data.optionalField(\"patch\");\n if (patch !== undefined) {\n return {\n patch: patch.decode(this.patchDecoder),\n };\n }\n throw new SimpleError({\n code: \"invalid_field\",\n message: \"Expected put, move, patch or delete\",\n field: data.currentField,\n });\n }\n}\nexport class PatchableArrayDecoder {\n constructor(putDecoder, patchDecoder, idDecoder) {\n this.putDecoder = putDecoder;\n this.patchDecoder = patchDecoder;\n this.idDecoder = idDecoder;\n }\n decode(data) {\n if (Array.isArray(data.value)) {\n console.warn(\"Found legacy patchable array. Make sure to use the new patchable array encoding, as this will get removed and replaced with a PUT in future versions.\");\n // Legacy encode version\n // This will remain supported for a period\n // but is deprecated\n return new PatchableArray(data.array(new PatchableArrayItemDecoder(this.putDecoder, this.patchDecoder, this.idDecoder)));\n }\n const changes = data.field(\"changes\").array(new PatchableArrayItemDecoder(this.putDecoder, this.patchDecoder, this.idDecoder));\n return new PatchableArray(changes);\n }\n}\n//# sourceMappingURL=PatchableArray.js.map","import { SimpleError } from \"@simonbackx/simple-errors\";\nimport { cloneObject } from \"./Cloneable\";\nimport { encodeObject } from \"./Encodeable\";\nimport { getId, getOptionalId, hasId } from \"./Identifiable\";\nimport { isPatchableArray, isPatchMap, patchObject } from \"./Patchable\";\n/**\n * Uses the meta data of AutoEncoder to check if something is a patch or a put\n */\nexport class PatchOrPutDecoder {\n constructor(put, patch) {\n this.putDecoder = put;\n this.patchDecoder = patch;\n }\n decode(data) {\n var _a;\n const isPatch = data.optionalField(\"_isPatch\");\n if ((_a = isPatch === null || isPatch === void 0 ? void 0 : isPatch.boolean) !== null && _a !== void 0 ? _a : false) {\n return this.patchDecoder.decode(data);\n }\n return this.putDecoder.decode(data);\n }\n}\nexport function deepSetArray(oldArr, newArray, options) {\n if (oldArr === newArray) {\n // Same reference: nothing to do\n return;\n }\n const oldArray = oldArr.slice();\n // Loop old array\n // Keep array reference\n // Delete deleted items\n // Add new items\n // Copy over changes from updated items\n // Maintain new order\n // Clear out old array\n oldArr.splice(0, oldArr.length);\n for (const newItem of newArray) {\n if (isAutoEncoder(newItem)) {\n const oldItem = oldArray.find(i => getOptionalId(i) === getOptionalId(newItem));\n if (oldItem && isAutoEncoder(oldItem)) {\n oldItem.deepSet(newItem);\n oldArr.push(oldItem);\n }\n else {\n oldArr.push(newItem);\n }\n }\n else {\n oldArr.push(newItem);\n }\n }\n if (options === null || options === void 0 ? void 0 : options.keepMissing) {\n // Readd old missing items\n for (const oldItem of oldArray) {\n const found = oldArr.find(i => getOptionalId(i) === getOptionalId(oldItem));\n if (!found) {\n oldArr.push(oldItem);\n }\n }\n }\n}\nexport class Field {\n getOptionalClone() {\n const field = new Field();\n field.optional = true;\n field.nullable = this.nullable;\n field.decoder = this.decoder;\n field.version = this.version;\n field.property = this.property;\n field.field = this.field;\n if (this.upgrade) {\n const upg = this.upgrade;\n field.upgrade = (oldValue) => {\n if (oldValue !== undefined) {\n // Value is set, we need an upgrade \n return upg(oldValue);\n }\n else {\n // No value is set, we don't need an upgrade\n return undefined;\n }\n };\n }\n if (this.downgrade) {\n const dwn = this.downgrade;\n field.downgrade = (newValue) => {\n if (newValue !== undefined) {\n // Value is set, we need an upgrade \n return dwn(newValue);\n }\n else {\n // No value is set, we don't need an upgrade\n return undefined;\n }\n };\n }\n if (this.upgradePatch) {\n field.upgrade = this.upgradePatch;\n }\n if (this.downgradePatch) {\n field.downgrade = this.downgradePatch;\n }\n field.upgradePatch = this.upgradePatch;\n field.downgradePatch = this.downgradePatch;\n field.patchDefaultValue = this.patchDefaultValue;\n field.defaultValue = undefined; // do not copy default values. Patches never have default values, unless for patchable arrays\n const aDecoder = this.decoder;\n // Do we have a custom patch decoder? (this can be configured in the decoder)\n if (aDecoder.patchType) {\n field.upgrade = this.upgradePatch;\n field.downgrade = this.downgradePatch;\n const patchDecoder = aDecoder.patchType();\n field.decoder = new PatchOrPutDecoder(aDecoder, patchDecoder);\n }\n if (aDecoder.patchDefaultValue) {\n // e.g. for patchable arrays we always set a default value\n field.defaultValue = () => {\n return aDecoder.patchDefaultValue();\n };\n }\n if (this.patchDefaultValue) {\n field.defaultValue = this.patchDefaultValue;\n }\n return field;\n }\n}\n/**\n * Create patchable auto encoder.\n * We are not able to add types here, gets too complex. But we'll add a convenience method with typings\n */\n/*export function createPatchableAutoEncoder(constructor: typeof AutoEncoder): typeof AutoEncoder {\n return constructor as any;\n}*/\n/*\nclass Dog extends AutoEncoder {\n id: string;\n name: string;\n}\n\nconst DogPatch = createPatchableAutoEncoder(Dog);\n\nconst p = DogPatch.create({id: \"test\"})\n\n*/\nexport function isAutoEncoder(obj) {\n return obj instanceof AutoEncoder || (typeof obj === \"object\" && obj !== null && obj._isAutoEncoder);\n}\nexport class AutoEncoder {\n /// Create a patch for this instance (of reuse if already created)\n static patchType() {\n var _a;\n if (this.cachedPatchType) {\n return this.cachedPatchType;\n }\n // create a new class\n class CreatedPatch extends AutoEncoder {\n }\n CreatedPatch.fields = [];\n // A patchtype of a patchtype is always the same\n // -> avoids infinite loop and allows recursive encoding\n CreatedPatch.cachedPatchType = CreatedPatch;\n this.cachedPatchType = CreatedPatch;\n // Move over all fields\n for (const field of ((_a = this.fields) !== null && _a !== void 0 ? _a : [])) {\n CreatedPatch.fields.push(field.getOptionalClone());\n }\n CreatedPatch.isPatch = true;\n return CreatedPatch;\n }\n constructor() {\n this._isAutoEncoder = true;\n if (!this.static.fields) {\n this.static.fields = [];\n }\n for (const field of this.static.latestFields) {\n if (field.defaultValue) {\n this[field.property] = field.defaultValue();\n }\n }\n }\n isPatch() {\n return this.static.isPatch;\n }\n isPut() {\n return !this.static.isPatch;\n }\n static patch(object) {\n return this.patchType().create(object);\n }\n patchOrPut(patch) {\n if (patch.static.isPatch) {\n this.set(this.patch(patch));\n return;\n }\n this.set(patch);\n }\n /**\n * Make a deep clone of this object\n */\n clone() {\n const instance = new this.static();\n for (const field of this.static.latestFields) {\n const prop = field.property;\n instance[prop] = cloneObject(this[prop]);\n }\n return instance;\n }\n patch(patch) {\n const instance = new this.static();\n for (const field of this.static.latestFields) {\n const prop = field.property;\n const patched = patchObject(this[prop], patch[prop]);\n if (patched !== undefined) {\n instance[prop] = patched;\n }\n }\n return instance;\n }\n static sortFields() {\n function compare(a, b) {\n if (a.version < b.version) {\n return -1;\n }\n if (a.version > b.version) {\n return 1;\n }\n // a must be equal to b\n return 0;\n }\n this.fields.sort(compare);\n }\n static get latestFields() {\n const latestFields = {};\n for (let i = this.fields.length - 1; i >= 0; i--) {\n const field = this.fields[i];\n if (!latestFields[field.property]) {\n latestFields[field.property] = field;\n }\n }\n return Object.values(latestFields);\n }\n static doesPropertyExist(property) {\n for (const field of this.fields) {\n if (field.property === property) {\n return true;\n }\n }\n return false;\n }\n /**\n * Create a new one by providing the properties of the object\n */\n static create(object) {\n const model = new this();\n for (const key in object) {\n // eslint-disable-next-line no-prototype-builtins\n if (object.hasOwnProperty(key) && object[key] !== undefined && typeof object[key] !== \"function\") {\n // Also check this is an allowed field, else skip in favor of allowing downcasts without errors\n if (this.doesPropertyExist(key)) {\n model[key] = object[key];\n }\n }\n }\n for (const field of this.latestFields) {\n if (!field.optional) {\n if (model[field.property] === undefined) {\n throw new Error(\"Expected required property \" + field.property + \" when creating \" + this.name);\n }\n }\n if (!field.nullable) {\n if (model[field.property] === null) {\n throw new Error(\"Expected non null property \" + field.property + \" when creating \" + this.name);\n }\n }\n }\n return model;\n }\n /**\n * Create a new one by providing the properties of the object\n */\n set(object) {\n for (const key in object) {\n if (object.hasOwnProperty(key) && typeof object[key] !== \"function\") {\n if (this.static.doesPropertyExist(key)) {\n this[key] = object[key];\n }\n }\n }\n }\n /**\n * Create a new one by providing the properties of the object.\n * Maintaining references to objects\n */\n deepSet(object) {\n if (object === this) {\n // Nothing to do (waste of resources)\n return;\n }\n for (const key in object) {\n if (object.hasOwnProperty(key) && typeof object[key] !== \"function\") {\n if (this.static.doesPropertyExist(key)) {\n if (object[key] === undefined) {\n // ignore\n continue;\n }\n if (isAutoEncoder(this[key]) && object[key] !== null && typeof object[key] === \"object\") {\n this[key].deepSet(object[key]);\n }\n else if (Array.isArray(this[key]) && Array.isArray(object[key])) {\n deepSetArray(this[key], object[key]);\n }\n else {\n this[key] = object[key];\n }\n }\n }\n }\n }\n get static() {\n return this.constructor;\n }\n encode(context) {\n if (hasId(this) && !this.static.isPatch && false) {\n if (context.references === undefined) {\n context.references = new Map();\n }\n let classReferences = context.references.get(this.static);\n if (classReferences) {\n // Dramatically reduce size of encoding when lots of relations are returned with the same id\n const id = getId(this);\n const existing = classReferences.get(id);\n // We already returned this same object\n if (existing) {\n // For optimizations we could skip this step, but for now we keep it\n if (existing === this) {\n return {\n _ref: id,\n };\n }\n else {\n const a = existing.encode({ version: context.version });\n const b = this.encode({ version: context.version });\n if (JSON.stringify(a) === JSON.stringify(b)) {\n return {\n _ref: id,\n };\n }\n console.warn('Same id, but different objects in the encode result. This should not happen and reduces the ability to use references in encoded data.', id);\n }\n }\n }\n // Add self\n if (!classReferences) {\n classReferences = new Map();\n context.references.set(this.static, classReferences);\n }\n const idField = this.static.latestFields.find(f => f.property === \"id\");\n if (idField) {\n classReferences.set(getId(this), this);\n }\n }\n const object = {};\n const source = this.static.downgrade(context.version, this);\n const appliedProperties = {};\n for (let i = this.static.fields.length - 1; i >= 0; i--) {\n const field = this.static.fields[i];\n if (field.version <= context.version && !appliedProperties[field.property]) {\n if (source[field.property] === undefined) {\n if (!field.optional) {\n throw new Error(\"Value for property \" + field.property + \" is not set, but is required!\");\n }\n continue;\n }\n appliedProperties[field.property] = true;\n if (this.static.isPatch) {\n // Don't send certain values to minimize data\n if (isPatchableArray(source[field.property]) && source[field.property].changes.length === 0) {\n continue;\n }\n if (isPatchMap(source[field.property]) && source[field.property].size === 0) {\n continue;\n }\n }\n object[field.field] = encodeObject(source[field.property], context);\n }\n }\n // Add meta data\n if (this.static.isPatch) {\n object[\"_isPatch\"] = this.static.isPatch;\n }\n return object;\n }\n static decode(data) {\n var _a, _b, _c, _d, _e, _f, _g;\n const isRef = data.optionalField('_ref');\n if (isRef) {\n const idField = this.latestFields.find(f => f.property === \"id\");\n if (!idField) {\n throw new SimpleError({\n code: 'invalid_data',\n message: 'No id field found in class ' + this.name,\n field: data.addToCurrentField('_ref')\n });\n }\n const stringOrNumber = isRef.decode(idField.decoder);\n const classReferences = (_a = data.context.references) === null || _a === void 0 ? void 0 : _a.get(this);\n if (!classReferences) {\n throw new SimpleError({\n code: 'invalid_reference',\n message: 'Invalid usage of references: the _ref field can only be used when the same object is encoded earlier, but no reference found for ' + stringOrNumber,\n field: data.addToCurrentField('_ref')\n });\n }\n const reference = classReferences.get(stringOrNumber);\n if (!reference) {\n throw new SimpleError({\n code: 'invalid_reference',\n message: 'Reference not found with ID ' + stringOrNumber,\n field: data.addToCurrentField('_ref')\n });\n }\n return reference;\n }\n const model = new this();\n const appliedProperties = {};\n // Loop from newest version to older version\n for (let i = this.fields.length - 1; i >= 0; i--) {\n const field = this.fields[i];\n if (field.version <= data.context.version && !appliedProperties[field.property]) {\n if (field.optional) {\n if (field.nullable) {\n model[field.property] = (_b = data.undefinedField(field.field)) === null || _b === void 0 ? void 0 : _b.nullable(field.decoder);\n }\n else {\n model[field.property] = (_e = (_d = (_c = data.optionalField(field.field)) === null || _c === void 0 ? void 0 : _c.decode(field.decoder)) !== null && _d !== void 0 ? _d : model[field.property]) !== null && _e !== void 0 ? _e : undefined;\n }\n }\n else {\n if (field.nullable) {\n model[field.property] = (_f = data.field(field.field)) === null || _f === void 0 ? void 0 : _f.nullable(field.decoder);\n }\n else {\n model[field.property] = (_g = data.field(field.field)) === null || _g === void 0 ? void 0 : _g.decode(field.decoder);\n }\n }\n appliedProperties[field.property] = true;\n }\n }\n // We now have model with values equal to version data.context.version\n // Run upgrade / downgrade migrations to convert changes in fields\n this.upgrade(data.context.version, model);\n if (!this.isPatch) {\n if (data.context.references === undefined) {\n data.context.references = new Map();\n }\n let classReferences = data.context.references.get(this);\n if (!classReferences) {\n classReferences = new Map();\n data.context.references.set(this, classReferences);\n }\n if (classReferences && hasId(model)) {\n classReferences.set(getId(model), model);\n }\n }\n return model;\n }\n /**\n * Upgrade property values coming from an older version\n * @param from\n * @param object\n */\n static upgrade(from, object) {\n for (const field of this.fields) {\n if (field.version > from) {\n if (field.upgrade) {\n object[field.property] = field.upgrade.call(object, object[field.property]);\n }\n }\n }\n }\n /**\n * Downgrade property values to a new object\n */\n static downgrade(to, object) {\n const older = Object.assign({}, object);\n for (let i = this.fields.length - 1; i >= 0; i--) {\n const field = this.fields[i];\n if (field.version > to) {\n if (field.downgrade) {\n older[field.property] = field.downgrade.call(object, older[field.property]);\n }\n }\n }\n return older;\n }\n}\nAutoEncoder.isPatch = false;\n//# sourceMappingURL=AutoEncoder.js.map","import { PatchableArray } from \"../structs/PatchableArray\";\nimport { isAutoEncoder } from \"./AutoEncoder\";\nimport { cloneObject } from \"./Cloneable\";\nexport function isPatchable(object) {\n if (!object) {\n return false;\n }\n return !!object.patch;\n}\nexport function patchContainsChanges(patch, model, context) {\n const patched = model.patch(patch);\n return JSON.stringify(patched.encode(context)) != JSON.stringify(model.encode(context));\n}\nexport class PatchMap extends Map {\n constructor() {\n super(...arguments);\n this._isPatch = true;\n this._isPatchMap = true;\n }\n applyTo(obj) {\n if (isPatchMap(obj)) {\n // Combine instead of normal logic\n const clone = new PatchMap(obj);\n for (const [key, value] of this.entries()) {\n if (value === null) {\n clone.set(key, null);\n continue;\n }\n if (value === undefined) {\n continue;\n }\n const original = obj.get(key);\n if (original === null) {\n // Has been deleted higher up\n if (isPatch(value)) {\n continue;\n }\n clone.set(key, value);\n continue;\n }\n if (original === undefined) {\n clone.set(key, value);\n continue;\n }\n clone.set(key, patchObject(original, value));\n }\n return clone;\n }\n const clone = new Map(obj);\n for (const [key, value] of this.entries()) {\n if (value === null) {\n clone.delete(key);\n continue;\n }\n if (value === undefined) {\n continue;\n }\n const original = obj.get(key);\n const patched = patchObject(original, value);\n if (original === undefined && patched === undefined) {\n // Don't copy it: this is an empty patch to an item that does not exist\n continue;\n }\n clone.set(key, patched);\n }\n return clone;\n }\n clone() {\n // Deep clone self\n const clone = new PatchMap();\n for (const [key, value] of this.entries()) {\n clone.set(key, cloneObject(value));\n }\n return clone;\n }\n}\nexport function isPatchMap(obj) {\n return (obj instanceof PatchMap);\n}\nexport function isPatchableArray(obj) {\n return (obj instanceof PatchableArray);\n}\nexport function isPatch(obj) {\n if (isAutoEncoder(obj)) {\n // Instance type could be different\n return obj.isPatch();\n }\n if (isPatchMap(obj)) {\n return true;\n }\n if (isPatchableArray(obj)) {\n return true;\n }\n return false;\n}\n/**\n * Use this method to encode an object (might be an encodeable implementation) into a decodable structure\n */\nexport function patchObject(obj, patch) {\n if (patch === undefined) {\n // When a property is set to undefined, we always ignore it, always. You can never set something to undefined.\n // Use null instead.\n return obj;\n }\n if (isPatchable(obj)) {\n if (patch == null) {\n return null;\n }\n else {\n if (isAutoEncoder(patch) && patch.isPut()) {\n // Instance type could be different\n return patch;\n }\n else {\n return obj.patch(patch);\n }\n }\n }\n else {\n if (obj instanceof Map && isPatchMap(patch)) {\n return patch.applyTo(obj);\n }\n else if (Array.isArray(obj)) {\n // Check if patch is a patchable array\n if (isPatchableArray(patch)) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return patch.applyTo(obj);\n }\n else {\n // What happens when an array field is set?\n // This can only happen when the autocoder is not identifieable, but\n // technically also in other cases if typescript doesn't check types\n // we just take over the new values and 'remove' all old elements\n return patch;\n }\n }\n else {\n if ((obj === undefined || obj === null) && isPatchableArray(patch)) {\n // Patch on optional array: ignore if empty patch, else fake empty array patch\n if (patch.changes.length === 0) {\n return obj;\n }\n const patched = patch.applyTo([]);\n if (patched.length === 0) {\n // Nothing changed, keep it undefined or null\n return obj;\n }\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return patched;\n }\n else if ((obj === undefined || obj === null) && isPatchMap(patch)) {\n // Patch on optional array: ignore if empty patch, else fake empty array patch\n if (patch.size === 0) {\n return obj;\n }\n const patched = patch.applyTo(new Map());\n if (patched.size === 0) {\n // Nothing changed, keep it undefined or null\n return obj;\n }\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return patched;\n }\n else {\n return patch;\n }\n }\n }\n}\n//# sourceMappingURL=Patchable.js.map","import { isPatchMap } from \"./Patchable\";\nexport function isEncodeable(object) {\n if (typeof object !== \"object\" || object === null) {\n return false;\n }\n return !!object.encode;\n}\n/**\n * Use this method to encode an object (might be an encodeable implementation) into a decodable structure\n */\nexport function encodeObject(obj, context) {\n if (isEncodeable(obj)) {\n return obj.encode(context);\n }\n if (Array.isArray(obj)) {\n return obj.map((e) => {\n return encodeObject(e, context);\n });\n }\n if (isPatchMap(obj)) {\n // Transform into a normal object to conform to MapDecoders expected format\n const encodedObj = {};\n for (const [key, value] of obj) {\n const k = encodeObject(key, context);\n encodedObj[k] = encodeObject(value, context);\n }\n return {\n _isPatch: true,\n changes: encodedObj\n };\n }\n if (obj instanceof Map) {\n // Transform into a normal object to conform to MapDecoders expected format\n const encodedObj = {};\n for (const [key, value] of obj) {\n const k = encodeObject(key, context);\n encodedObj[k] = encodeObject(value, context);\n }\n if (obj._isPatch) {\n return {\n _isPatch: true,\n changes: encodedObj\n };\n }\n return encodedObj;\n }\n // Failed to decode\n return obj;\n}\n//# sourceMappingURL=Encodeable.js.map","import { SimpleError } from \"@simonbackx/simple-errors\";\nclass StringOrNumberDecoder {\n decode(data) {\n if (typeof data.value == \"string\") {\n return data.value;\n }\n if (typeof data.value == \"number\" && !Number.isNaN(data.value) && Number.isFinite(data.value)) {\n return data.value;\n }\n throw new SimpleError({\n code: \"invalid_field\",\n message: `Expected a string or number at ${data.currentField}`,\n field: data.currentField\n });\n }\n}\n// We export an instance to prevent creating a new instance every time we need to decode a number\nexport default new StringOrNumberDecoder();\n//# sourceMappingURL=StringOrNumberDecoder.js.map","import { SimpleError } from \"@simonbackx/simple-errors\";\nimport { PatchableArray, PatchableArrayDecoder } from \"./PatchableArray\";\nimport StringOrNumberDecoder from \"./StringOrNumberDecoder\";\nexport class ArrayDecoder {\n constructor(decoder) {\n this.decoder = decoder;\n }\n decode(data) {\n if (Array.isArray(data.value)) {\n return data.value\n .map((v, index) => {\n return data.clone({\n data: v,\n context: data.context,\n field: data.addToCurrentField(index)\n }).decode(this.decoder);\n });\n }\n throw new SimpleError({\n code: \"invalid_field\",\n message: `Expected an array at ${data.currentField}`,\n field: data.currentField,\n });\n }\n patchType() {\n const elementDecoder = this.decoder;\n if (elementDecoder.patchType) {\n const patchDecoder = elementDecoder.patchType();\n // Check if we have a method called \"getIdentifier\"\n let idFieldType;\n if (elementDecoder.patchIdentifier) {\n // Custom identifier (in case no automatic detection is possible)\n idFieldType = elementDecoder.patchIdentifier();\n }\n else {\n if (patchDecoder.prototype.getIdentifier) {\n // This autoencoder uses the getIdentifier method to define the id\n idFieldType = StringOrNumberDecoder;\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n const field = elementDecoder.fields.find((field) => field.property == \"id\");\n if (field) {\n idFieldType = field.decoder;\n }\n }\n }\n if (idFieldType) {\n return new PatchableArrayDecoder(elementDecoder, patchDecoder, idFieldType);\n }\n else {\n // A non identifiable array -> we expect an optional array instead = default behaviour\n // upgrade / downgrade kan stay the same as default\n // We expect a normal array, of same type\n return this;\n }\n }\n // Upgrade / downgrades cannot work when pathcing, should be placed on instances\n //field.upgrade = this.upgradePatch\n //field.downgrade = this.downgradePatch\n return new PatchableArrayDecoder(elementDecoder, elementDecoder, elementDecoder);\n }\n /**\n * Patchable values of an array always create a default empty patchable array for convenience\n */\n patchDefaultValue() {\n const elementDecoder = this.decoder;\n if (elementDecoder.patchType) {\n const patchDecoder = elementDecoder.patchType();\n // Check if we have a method called \"getIdentifier\"\n let idFieldType;\n if (elementDecoder.patchIdentifier) {\n // Custom identifier (in case no automatic detection is possible)\n idFieldType = elementDecoder.patchIdentifier();\n }\n else {\n if (patchDecoder.prototype.getIdentifier) {\n // This autoencoder uses the getIdentifier method to define the id\n idFieldType = StringOrNumberDecoder;\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n const field = elementDecoder.fields.find((field) => field.property == \"id\");\n if (field) {\n idFieldType = field.decoder;\n }\n }\n }\n if (idFieldType) {\n return new PatchableArray();\n }\n else {\n // A non identifiable array -> we expect an optional array instead = default behaviour\n // upgrade / downgrade kan stay the same as default\n // We expect a normal array, of same type\n return undefined;\n }\n }\n return new PatchableArray();\n }\n}\n//# sourceMappingURL=ArrayDecoder.js.map","import { SimpleError } from \"@simonbackx/simple-errors\";\nclass BooleanDecoder {\n decode(data) {\n if (data.value === true || data.value === false) {\n return data.value;\n }\n if (data.value === \"true\") {\n return true;\n }\n if (data.value === \"false\") {\n return false;\n }\n if (data.value === 1) {\n return true;\n }\n if (data.value === 0) {\n return false;\n }\n throw new SimpleError({\n code: \"invalid_field\",\n message: `Expected a boolean at ${data.currentField}`,\n field: data.currentField,\n });\n }\n}\n// We export an instance to prevent creating a new instance every time we need to decode a number\nexport default new BooleanDecoder();\n//# sourceMappingURL=BooleanDecoder.js.map","import { SimpleError } from \"@simonbackx/simple-errors\";\nexport class EnumDecoder {\n constructor(e) {\n this.enum = e;\n }\n decode(data) {\n let str;\n try {\n str = data.string;\n if (Object.values(this.enum).includes(str)) {\n return str;\n }\n }\n catch (e) {\n try {\n str = data.number;\n if (Object.values(this.enum).includes(str)) {\n return str;\n }\n }\n catch (e2) {\n throw new SimpleError({\n code: \"invalid_field\",\n message: `Expected a number or string for enum: ` + Object.values(this.enum).join(\", \"),\n field: data.currentField,\n });\n }\n }\n throw new SimpleError({\n code: \"invalid_field\",\n message: \"Unknown enum value \" + str + \" expected \" + Object.values(this.enum).join(\", \"),\n field: data.currentField,\n });\n }\n}\n//# sourceMappingURL=EnumDecoder.js.map","import { SimpleError } from \"@simonbackx/simple-errors\";\nclass IntegerDecoder {\n decode(data) {\n if (typeof data.value == \"number\" && Number.isSafeInteger(data.value)) {\n return data.value;\n }\n if (typeof data.value == \"string\") {\n const parsed = Number.parseInt(data.value);\n if (!isNaN(parsed)) {\n return parsed;\n }\n }\n throw new SimpleError({\n code: \"invalid_field\",\n message: `Expected an integer at ${data.currentField}`,\n field: data.currentField,\n });\n }\n}\n// We export an instance to prevent creating a new instance every time we need to decode a number\nexport default new IntegerDecoder();\n//# sourceMappingURL=IntegerDecoder.js.map","export class NullableDecoder {\n constructor(decoder) {\n this.decoder = decoder;\n }\n decode(data) {\n if (data.value === null) {\n return null;\n }\n return data.decode(this.decoder);\n }\n}\n//# sourceMappingURL=NullableDecoder.js.map","import { SimpleError } from \"@simonbackx/simple-errors\";\nclass NumberDecoder {\n decode(data) {\n if (typeof data.value == \"number\" && !Number.isNaN(data.value) && Number.isFinite(data.value)) {\n return data.value;\n }\n throw new SimpleError({\n code: \"invalid_field\",\n message: `Expected a number at ${data.currentField}`,\n field: data.currentField\n });\n }\n}\n// We export an instance to prevent creating a new instance every time we need to decode a number\nexport default new NumberDecoder();\n//# sourceMappingURL=NumberDecoder.js.map","import { SimpleError } from \"@simonbackx/simple-errors\";\nclass StringDecoder {\n decode(data) {\n if (typeof data.value == \"string\") {\n return data.value;\n }\n throw new SimpleError({\n code: \"invalid_field\",\n message: `Expected a string at ${data.currentField}`,\n field: data.currentField\n });\n }\n}\n// We export an instance to prevent creating a new instance every time we need to decode a number\nexport default new StringDecoder();\n//# sourceMappingURL=StringDecoder.js.map","import { SimpleError } from \"@simonbackx/simple-errors\";\nimport { ArrayDecoder } from \"../structs/ArrayDecoder\";\nimport BooleanDecoder from \"../structs/BooleanDecoder\";\nimport { EnumDecoder } from \"../structs/EnumDecoder\";\nimport IntegerDecoder from \"../structs/IntegerDecoder\";\nimport { NullableDecoder } from \"../structs/NullableDecoder\";\nimport NumberDecoder from \"../structs/NumberDecoder\";\nimport StringDecoder from \"../structs/StringDecoder\";\n/// Implementation of Data that reads an already existing tree of data.\nexport class ObjectData {\n constructor(data, context, currentField = \"\") {\n this.data = data;\n this.currentField = currentField;\n this.context = context;\n }\n addToCurrentField(field) {\n if (this.currentField == \"\") {\n return field + \"\";\n }\n return this.currentField + \".\" + field;\n }\n get value() {\n return this.data;\n }\n get string() {\n return this.decode(StringDecoder);\n }\n get number() {\n return this.decode(NumberDecoder);\n }\n get integer() {\n return this.decode(IntegerDecoder);\n }\n get boolean() {\n return this.decode(BooleanDecoder);\n }\n equals(value) {\n if (this.data !== value) {\n throw new SimpleError({\n code: \"invalid_field\",\n message: \"Expected \" + value,\n field: this.currentField,\n });\n }\n return value;\n }\n /**\n * Request an item at a given index. Expects a defined, non null value\n * @param number index\n */\n index(number) {\n if (Array.isArray(this.value)) {\n if (!Number.isSafeInteger(number)) {\n throw new SimpleError({\n code: \"invalid_index\",\n message: `Invalid index`,\n field: this.currentField,\n });\n }\n if (this.data[number] !== undefined) {\n throw new SimpleError({\n code: \"invalid_field\",\n message: `Expected value at ${this.addToCurrentField(number)}`,\n field: this.addToCurrentField(number),\n });\n }\n return new ObjectData(this.data[number], this.context, this.addToCurrentField(number));\n }\n throw new SimpleError({\n code: \"invalid_field\",\n message: `Expected an array at ${this.currentField}`,\n field: this.currentField,\n });\n }\n /**\n * Expects an optional field that could be null. Always returns undefined if the field is null or undefined.\n */\n optionalField(field) {\n if (this.data && this.data[field] !== undefined && this.data[field] !== null) {\n return new ObjectData(this.data[field], this.context, this.addToCurrentField(field));\n }\n }\n /**\n * Expects an optional field that could be undefined. Returns Data if the field value is null or not undefined\n */\n undefinedField(field) {\n if (this.data && this.data[field] !== undefined) {\n return new ObjectData(this.data[field], this.context, this.addToCurrentField(field));\n }\n }\n /**\n * Expects an existing field that is defined and not null\n */\n field(field) {\n if (this.data && this.data[field] !== undefined) {\n return new ObjectData(this.data[field], this.context, this.addToCurrentField(field));\n }\n throw new SimpleError({\n code: \"missing_field\",\n message: `Field ${field} is expected at ${this.currentField}`,\n field: this.currentField,\n });\n }\n array(decoder) {\n return new ArrayDecoder(decoder).decode(this);\n }\n decode(decoder) {\n return decoder.decode(this);\n }\n nullable(decoder) {\n return new NullableDecoder(decoder).decode(this);\n }\n enum(e) {\n return new EnumDecoder(e).decode(this);\n }\n clone(set) {\n return new ObjectData(set.data, set.context, set.field);\n }\n}\n//# sourceMappingURL=ObjectData.js.map","class AnyDecoder {\n decode(data) {\n return data.value;\n }\n}\nexport default new AnyDecoder();\n//# sourceMappingURL=AnyDecoder.js.map","import { SimpleError } from \"@simonbackx/simple-errors\";\nimport { NullableDecoder } from \"./NullableDecoder\";\nimport { PatchMap } from \"../classes/Patchable\";\nimport { PatchOrPutDecoder } from \"../classes/AutoEncoder\";\nexport class MapDecoder {\n constructor(keyDecoder, valueDecoder) {\n this.keyDecoder = keyDecoder;\n this.valueDecoder = valueDecoder;\n }\n patchType() {\n const elementDecoder = this.valueDecoder;\n if (elementDecoder.patchType) {\n const patchDecoder = elementDecoder.patchType();\n return new PatchMapDecoder(this.keyDecoder, new NullableDecoder(new PatchOrPutDecoder(this.valueDecoder, patchDecoder)));\n }\n return new PatchMapDecoder(this.keyDecoder, new NullableDecoder(this.valueDecoder));\n }\n patchDefaultValue() {\n return new PatchMap();\n }\n decode(data) {\n if (typeof data.value === 'object' && data.value !== null) {\n const map = new Map();\n for (const key in data.value) {\n const keyDecoded = data.clone({\n data: key,\n context: data.context,\n field: data.addToCurrentField(key)\n }).decode(this.keyDecoder);\n const valueDecoded = data.field(key).decode(this.valueDecoder);\n map.set(keyDecoded, valueDecoded);\n }\n return map;\n }\n throw new SimpleError({\n code: \"invalid_field\",\n message: `Expected an object at ${data.currentField}`,\n field: data.currentField,\n });\n }\n}\nexport class PatchMapDecoder {\n constructor(keyDecoder, valueDecoder) {\n this.keyDecoder = keyDecoder;\n this.valueDecoder = valueDecoder;\n }\n decode(container) {\n const data = container.field('changes');\n if (typeof data.value === 'object' && data.value !== null) {\n const map = new PatchMap();\n for (const key in data.value) {\n const keyDecoded = data.clone({\n data: key,\n context: data.context,\n field: data.addToCurrentField(key)\n }).decode(this.keyDecoder);\n const valueDecoded = data.field(key).decode(this.valueDecoder);\n map.set(keyDecoded, valueDecoded);\n }\n return map;\n }\n throw new SimpleError({\n code: \"invalid_field\",\n message: `Expected an object at ${data.currentField}`,\n field: data.currentField,\n });\n }\n}\n//# sourceMappingURL=MapDecoder.js.map","import { SimpleError } from \"@simonbackx/simple-errors\";\nclass EmailDecoderStatic {\n decode(data) {\n const str = data.string;\n const regex = /^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;\n if (!regex.test(str)) {\n throw new SimpleError({\n code: \"invalid_field\",\n message: \"Received an invalid email address\",\n human: \"Dit e-mailadres is ongeldig, kijk je het na?\",\n field: data.currentField,\n });\n }\n return str;\n }\n}\n// We export an instance to prevent creating a new instance every time we need to decode a number\nexport const EmailDecoder = new EmailDecoderStatic();\n//# sourceMappingURL=EmailDecoder.js.map","import { SimpleError } from \"@simonbackx/simple-errors\";\nexport class RecordDecoder {\n constructor(keyDecoder, valueDecoder) {\n this.keyDecoder = keyDecoder;\n this.valueDecoder = valueDecoder;\n }\n decode(data) {\n if (typeof data.value === 'object' && data.value !== null) {\n const map = {};\n for (const key in data.value) {\n const keyDecoded = data.clone({\n data: key,\n context: data.context,\n field: data.addToCurrentField(key)\n }).decode(this.keyDecoder);\n const valueDecoded = data.field(key).decode(this.valueDecoder);\n map[keyDecoded] = valueDecoded;\n }\n return map;\n }\n throw new SimpleError({\n code: \"invalid_field\",\n message: `Expected an object at ${data.currentField}`,\n field: data.currentField,\n });\n }\n}\n//# sourceMappingURL=RecordDecoder.js.map","import { Field } from \"../classes/AutoEncoder\";\nexport function field(settings) {\n return (target /* future typeof Model */, key) => {\n var _a, _b, _c, _d, _e, _f;\n if (!target.constructor.fields) {\n target.constructor.fields = [];\n target.constructor.fields.createdFor = target.constructor;\n }\n else {\n if (target.constructor.fields.createdFor && target.constructor.fields.createdFor !== target.constructor) {\n // need to clone instead of creating a new reference\n target.constructor.fields = target.constructor.fields.slice(0);\n target.constructor.fields.createdFor = target.constructor;\n target.constructor.cachedPatchType = undefined;\n }\n }\n const field = new Field();\n field.optional = (_a = settings.optional) !== null && _a !== void 0 ? _a : false;\n field.nullable = (_b = settings.nullable) !== null && _b !== void 0 ? _b : false;\n field.decoder = settings.decoder;\n field.version = (_c = settings.version) !== null && _c !== void 0 ? _c : 0;\n field.field = (_d = settings.field) !== null && _d !== void 0 ? _d : key;\n field.upgrade = settings.upgrade;\n field.downgrade = settings.downgrade;\n field.upgradePatch = settings.upgradePatch;\n field.downgradePatch = settings.downgradePatch;\n field.defaultValue = settings.defaultValue;\n field.patchDefaultValue = settings.patchDefaultValue;\n field.property = key;\n target.constructor.fields.push(field);\n target.constructor.latestVersion = Math.max((_e = target.constructor.latestVersion) !== null && _e !== void 0 ? _e : 0, (_f = settings.version) !== null && _f !== void 0 ? _f : 0);\n target.constructor.sortFields();\n };\n}\n//# sourceMappingURL=Field.js.map","import { encodeObject } from '../classes/Encodeable';\n/**\n * When you need to store data for a long period, a VersionBox can be very usefull. It saves the version of the data in it's encoding.\n * During decoding, it reads the version and continues decoding the data using the provided version instead of the version in the context.\n */\nexport class VersionBox {\n constructor(data) {\n this.data = data;\n }\n encode(context) {\n return {\n data: encodeObject(this.data, context),\n version: context.version\n };\n }\n}\nexport class VersionBoxDecoder {\n constructor(decoder) {\n this.decoder = decoder;\n }\n decode(data) {\n // Set the version of the decoding context of \"data\"\n const context = data.field(\"data\");\n context.context.version = data.field(\"version\").integer;\n return new VersionBox(context.decode(this.decoder));\n }\n}\n//# sourceMappingURL=VersionBox.js.map","class DateDecoder {\n decode(data) {\n return new Date(data.integer);\n }\n}\nDate.prototype.encode = function (context) {\n return this.getTime();\n};\n// We export an instance to prevent creating a new instance every time we need to decode a number\nexport default new DateDecoder();\n//# sourceMappingURL=DateDecoder.js.map","import { isSimpleError, isSimpleErrors, SimpleError } from \"@simonbackx/simple-errors\";\nexport class URLDecoder {\n constructor(options) {\n var _a, _b;\n this.allowedProtocols = ['https:'];\n this.allowPorts = false;\n this.allowedProtocols = (_a = options === null || options === void 0 ? void 0 : options.allowedProtocols) !== null && _a !== void 0 ? _a : this.allowedProtocols;\n this.allowPorts = (_b = options === null || options === void 0 ? void 0 : options.allowPorts) !== null && _b !== void 0 ? _b : this.allowPorts;\n }\n decode(data) {\n const str = data.string;\n try {\n const parsed = new URL(str);\n if (!this.allowedProtocols.includes(parsed.protocol)) {\n throw new SimpleError({\n code: \"invalid_field\",\n message: `Expected a valid URL at ${data.currentField} with protocol ${this.allowedProtocols.join(', ')}`,\n field: data.currentField,\n });\n }\n if (!this.allowPorts && parsed.port !== '') {\n throw new SimpleError({\n code: \"invalid_field\",\n message: `Expected a valid URL without custom port at ${data.currentField}`,\n field: data.currentField,\n });\n }\n if (parsed.username || parsed.password) {\n throw new SimpleError({\n code: \"invalid_field\",\n message: `Expected a valid URL without username:password at ${data.currentField}`,\n field: data.currentField,\n });\n }\n return parsed;\n }\n catch (e) {\n if (!isSimpleError(e) && !isSimpleErrors(e)) {\n throw new SimpleError({\n code: \"invalid_field\",\n message: `Expected a valid URL at ${data.currentField}`,\n field: data.currentField,\n });\n }\n throw e;\n }\n }\n}\nURL.prototype.encode = function (context) {\n return this.href;\n};\n//# sourceMappingURL=URLDecoder.js.map","// -------------------------------------------------------------\n//\n// WARNING: DO NOT EDIT THIS MANUALLY.\n// Use @field({decoder: any, ...NextVersion)} in your code.\n//\n// -------------------------------------------------------------\nexport const Version = 341;\n/**\n * Use this in development when making changes to fields.\n * On release, the version will get bumped and the usages of NextVersion will be replaced by that version.\n * Note: during developent all the saved fields with NextVersion will get cleared on the next release.\n */\nglobalThis.NextVersion = {\n optional: true,\n version: Version,\n defaultValue() {\n var _a;\n return (_a = this.upgrade) !== null && _a !== void 0 ? _a : undefined;\n },\n};\n//# sourceMappingURL=Version.js.map","/**\n * PermissionLevels are used to grant permissions to specific resources or system wide\n */\nexport var PermissionLevel;\n(function (PermissionLevel) {\n /** No access */\n PermissionLevel[\"None\"] = \"None\";\n /** Read all data, but not allowed to write */\n PermissionLevel[\"Read\"] = \"Read\";\n /** Read, write, add, delete child data, but not allowed to modify settings */\n PermissionLevel[\"Write\"] = \"Write\";\n /** Full access */\n PermissionLevel[\"Full\"] = \"Full\";\n})(PermissionLevel || (PermissionLevel = {}));\nexport function getPermissionLevelNumber(level) {\n switch (level) {\n case PermissionLevel.None: return 0;\n case PermissionLevel.Read: return 1;\n case PermissionLevel.Write: return 2;\n case PermissionLevel.Full: return 3;\n default: {\n const l = level; // will throw compile error if new levels are added without editing this method\n throw new Error('Unknown permission level ' + l);\n }\n }\n}\nexport function maximumPermissionlevel(...levels) {\n let max = PermissionLevel.None;\n for (const level of levels) {\n if (getPermissionLevelNumber(level) > getPermissionLevelNumber(max)) {\n max = level;\n }\n }\n return max;\n}\nexport function minimumPermissionLevel(...levels) {\n let min = levels[0];\n for (const level of levels) {\n if (getPermissionLevelNumber(level) < getPermissionLevelNumber(min)) {\n min = level;\n }\n }\n return min;\n}\nexport function getPermissionLevelName(level) {\n switch (level) {\n case PermissionLevel.None: return 'Geen basistoegang';\n case PermissionLevel.Read: return 'Lezen';\n case PermissionLevel.Write: return 'Bewerken';\n case PermissionLevel.Full: return 'Volledige toegang';\n default: {\n const l = level; // will throw compile error if new levels are added without editing this method\n throw new Error('Unknown permission level ' + l);\n }\n }\n}\n//# sourceMappingURL=PermissionLevel.js.map","import { PermissionLevel } from './PermissionLevel';\n/**\n * More granular access rights to specific things in the system\n */\nexport var AccessRight;\n(function (AccessRight) {\n // Platform level permissions\n /**\n * Allows the user to log in as a full-access admin to a specific organization\n */\n AccessRight[\"PlatformLoginAs\"] = \"PlatformLoginAs\";\n // Organization level permissions\n AccessRight[\"OrganizationCreateWebshops\"] = \"OrganizationCreateWebshops\";\n AccessRight[\"OrganizationManagePayments\"] = \"OrganizationManagePayments\";\n AccessRight[\"OrganizationFinanceDirector\"] = \"OrganizationFinanceDirector\";\n AccessRight[\"OrganizationCreateGroups\"] = \"OrganizationCreateGroups\";\n // Member data access rights\n // Note: in order to read or write any data at all, a user first needs to have normal resource access to a group, category or organization\n // So general data (name, birthday, gender, address, email, parents, emergency contacts) access can be controlled in that way (this doesn't have a separate access right).\n AccessRight[\"MemberReadFinancialData\"] = \"MemberReadFinancialData\";\n AccessRight[\"MemberWriteFinancialData\"] = \"MemberWriteFinancialData\";\n // Webshop level permissions\n AccessRight[\"WebshopScanTickets\"] = \"WebshopScanTickets\";\n AccessRight[\"EventWrite\"] = \"EventWrite\";\n})(AccessRight || (AccessRight = {}));\nexport class AccessRightHelper {\n static getName(right) {\n switch (right) {\n case AccessRight.PlatformLoginAs: return 'Inloggen als hoofdbeheerder';\n case AccessRight.OrganizationFinanceDirector: return 'Toegang tot volledige boekhouding';\n case AccessRight.OrganizationManagePayments: return 'Overschrijvingen beheren';\n case AccessRight.OrganizationCreateWebshops: return 'Webshops maken';\n case AccessRight.OrganizationCreateGroups: return 'Groepen maken';\n case AccessRight.WebshopScanTickets: return 'Tickets scannen';\n case AccessRight.EventWrite: return 'Activiteiten beheren';\n // Member data\n case AccessRight.MemberReadFinancialData: return 'Bekijk rekening leden';\n case AccessRight.MemberWriteFinancialData: return 'Bewerk rekening leden';\n }\n }\n static getNameShort(right) {\n switch (right) {\n case AccessRight.PlatformLoginAs: return 'Inloggen';\n case AccessRight.OrganizationFinanceDirector: return 'Boekhouding';\n case AccessRight.OrganizationManagePayments: return 'Overschrijvingen';\n case AccessRight.OrganizationCreateWebshops: return 'Maken';\n case AccessRight.OrganizationCreateGroups: return 'Maken';\n case AccessRight.WebshopScanTickets: return 'Scannen';\n case AccessRight.EventWrite: return 'Activiteiten';\n // Member data\n case AccessRight.MemberReadFinancialData: return 'Lidgeld bekijken';\n case AccessRight.MemberWriteFinancialData: return 'Lidgeld bewerken';\n }\n }\n static getDescription(right) {\n switch (right) {\n case AccessRight.PlatformLoginAs: return 'inloggen als hoofdbeheerder';\n case AccessRight.OrganizationFinanceDirector: return 'volledige boekhouding';\n case AccessRight.OrganizationManagePayments: return 'overschrijvingen';\n case AccessRight.OrganizationCreateWebshops: return 'webshops maken';\n case AccessRight.OrganizationCreateGroups: return 'groepen maken';\n case AccessRight.WebshopScanTickets: return 'scannen van tickets';\n case AccessRight.EventWrite: return 'activiteiten beheren';\n // Member data\n case AccessRight.MemberReadFinancialData: return 'Openstaande bedragen bekijken';\n case AccessRight.MemberWriteFinancialData: return 'Openstaande bedragen bewerken';\n }\n }\n static getLongDescription(right) {\n switch (right) {\n case AccessRight.OrganizationFinanceDirector: return 'Beheerders met deze toegang krijgen toegang tot alle financiële gegevens van de organisatie, en kunnen overschrijvingen als betaald markeren.';\n case AccessRight.OrganizationManagePayments: return 'Beheerders met deze toegang kunnen openstaande overschrijvingen bekijken en markeren als betaald.';\n // Member data\n case AccessRight.MemberReadFinancialData: return 'Bekijk hoeveel een lid precies heeft betaald of nog moet betalen, en bekijk of het lid recht heeft op een verlaagd tarief.';\n case AccessRight.MemberWriteFinancialData: return 'Voeg openstaande bedragen toe of verwijder ze, en pas de betaalstatus van een lid aan.';\n case AccessRight.EventWrite: return 'Maak nieuwe activiteiten aan, verwijder ze en wijzig ze.';\n }\n return null;\n }\n /**\n * If a user has a certain permission level, automatically grant the specific access right\n * By default only full permissions gives all access rights, but you can tweak it:\n * E.g., give webshop scan rights if you also have write access to that webshop\n */\n static autoGrantRightForLevel(right) {\n switch (right) {\n case AccessRight.WebshopScanTickets: return PermissionLevel.Write;\n }\n return PermissionLevel.Full;\n }\n /**\n * Automatically grant a user access rights if they have a certain right\n */\n static autoInheritFrom(right) {\n switch (right) {\n // Finance director also has manage payments permissions automatically\n case AccessRight.OrganizationManagePayments: return [AccessRight.OrganizationFinanceDirector];\n // Finance director also can view and edit member financial data\n case AccessRight.MemberReadFinancialData: return [AccessRight.OrganizationFinanceDirector, AccessRight.MemberWriteFinancialData];\n case AccessRight.MemberWriteFinancialData: return [AccessRight.OrganizationFinanceDirector];\n }\n return [];\n }\n}\n//# sourceMappingURL=AccessRight.js.map","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n function next() {\n while (env.stack.length) {\n var rec = env.stack.pop();\n try {\n var result = rec.dispose && rec.dispose.call(rec.value);\n if (rec.async) return Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n catch (e) {\n fail(e);\n }\n }\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n};\n","export class Colors {\n static hexToHSL(hex) {\n const result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n if (!result) {\n if (STAMHOOFD.environment === 'development') {\n console.error(`Invalid hex color: ${hex}`);\n }\n return {\n h: 0,\n s: 0,\n l: 0,\n };\n }\n let r = parseInt(result[1], 16);\n let g = parseInt(result[2], 16);\n let b = parseInt(result[3], 16);\n r /= 255;\n g /= 255;\n b /= 255;\n const max = Math.max(r, g, b), min = Math.min(r, g, b);\n let h, s, l = (max + min) / 2;\n if (max === min) {\n h = s = 0; // achromatic\n }\n else {\n const d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n switch (max) {\n case r:\n h = (g - b) / d + (g < b ? 6 : 0);\n break;\n case g:\n h = (b - r) / d + 2;\n break;\n case b:\n h = (r - g) / d + 4;\n break;\n }\n h /= 6;\n }\n return {\n h: h * 360,\n s: s * 100,\n l: l * 100,\n };\n }\n /**\n *\n * @param h degree\n * @param s percentage\n * @param l percentage\n */\n static HSLToRGB(h, s, l) {\n // Must be fractions of 1\n s /= 100;\n l /= 100;\n const c = (1 - Math.abs(2 * l - 1)) * s, x = c * (1 - Math.abs((h / 60) % 2 - 1)), m = l - c / 2;\n let r = 0, g = 0, b = 0;\n if (0 <= h && h < 60) {\n r = c;\n g = x;\n b = 0;\n }\n else if (60 <= h && h < 120) {\n r = x;\n g = c;\n b = 0;\n }\n else if (120 <= h && h < 180) {\n r = 0;\n g = c;\n b = x;\n }\n else if (180 <= h && h < 240) {\n r = 0;\n g = x;\n b = c;\n }\n else if (240 <= h && h < 300) {\n r = x;\n g = 0;\n b = c;\n }\n else if (300 <= h && h < 360) {\n r = c;\n g = 0;\n b = x;\n }\n r = Math.round((r + m) * 255);\n g = Math.round((g + m) * 255);\n b = Math.round((b + m) * 255);\n return {\n r, g, b,\n };\n }\n static hslToHex(color) {\n let { h, s, l } = color;\n l /= 100;\n const a = s * Math.min(l, 1 - l) / 100;\n const f = (n) => {\n const k = (n + h / 30) % 12;\n const color = l - a * Math.max(Math.min(k - 3, 9 - k, 1), -1);\n return Math.round(255 * color).toString(16).padStart(2, '0'); // convert to Hex and prefix \"0\" if needed\n };\n return `#${f(0)}${f(8)}${f(4)}`;\n }\n static hexToRGB(hex) {\n if (hex.startsWith('#')) {\n hex = hex.substring(1);\n }\n if (hex.length !== 6) {\n throw new Error('Only six-digit hex colors are allowed.');\n }\n const aRgbHex = hex.match(/.{1,2}/g);\n if (!aRgbHex || aRgbHex.length !== 3) {\n throw new Error('Invalid hex color');\n }\n return {\n r: parseInt(aRgbHex[0], 16),\n g: parseInt(aRgbHex[1], 16),\n b: parseInt(aRgbHex[2], 16),\n };\n }\n static getContrastRatio(foreground, background) {\n const L1 = this.getRelativeLuminance(background);\n const L2 = this.getRelativeLuminance(foreground);\n // https://www.w3.org/TR/2008/REC-WCAG20-20081211/#contrast-ratiodef\n return (Math.max(L1, L2) + 0.05) / (Math.min(L1, L2) + 0.05);\n }\n static getRelativeLuminance(c) {\n const color = {\n r: c.r / 255,\n g: c.g / 255,\n b: c.b / 255,\n };\n // https://www.w3.org/TR/2008/REC-WCAG20-20081211/#relativeluminancedef\n const R = color.r <= 0.03928\n ? color.r / 12.92\n : Math.pow((color.r + 0.055) / 1.055, 2.4);\n const G = color.g <= 0.03928\n ? color.g / 12.92\n : Math.pow((color.g + 0.055) / 1.055, 2.4);\n const B = color.b <= 0.03928\n ? color.b / 12.92\n : Math.pow((color.b + 0.055) / 1.055, 2.4);\n const L = 0.2126 * R + 0.7152 * G + 0.0722 * B;\n return L;\n }\n static anyColorToRGB(color) {\n if (typeof color === 'string') {\n return this.hexToRGB(color);\n }\n if ('r' in color) {\n return color;\n }\n return this.HSLToRGB(color.h, color.s, color.l);\n }\n static getContrastColor(color) {\n try {\n const rgb = this.anyColorToRGB(color);\n const blackContrast = this.getAPCAContrast(rgb, { r: 0, g: 0, b: 0 });\n const whiteContrast = this.getAPCAContrast(rgb, { r: 255, g: 255, b: 255 });\n return blackContrast > whiteContrast ? '#000' : '#fff';\n }\n catch (e) {\n console.error(e);\n return '#fff';\n }\n }\n // https://github.com/Myndex/SAPC-APCA#the-plain-english-steps-are\n // Example:\n // const contrast = getAPCAContrast(\"rgb(255, 255, 255)\", \"rgb(136, 136, 136)\");\n // This returns `66.89346308821438` (66.893%)\n // SAPC-APCA README says:\n // > #888 vs #fff • 66.89346308821438\n // 80% means 7:1 in WCAG 2.0\n // 60% means 4.5:1 in WCAG 2.0\n // Web UI: https://hail2u.net/pub/test/702.html\n static linearize(val) {\n return (val / 255.0) ** 2.4;\n }\n static clampLuminance(luminance) {\n const blkThrs = 0.022;\n const blkClmp = 1.414;\n if (luminance > blkThrs) {\n return luminance;\n }\n return Math.abs(blkThrs - luminance) ** blkClmp + luminance;\n }\n static getLuminance(color) {\n const y = 0.2126729 * this.linearize(color.r)\n + 0.7151522 * this.linearize(color.g)\n + 0.072175 * this.linearize(color.b);\n return this.clampLuminance(y);\n }\n static getContrast(background, foreground) {\n const deltaYmin = 0.0005;\n const scale = 1.14;\n const backgroundLuminance = this.getLuminance(background);\n const foregroundLuminance = this.getLuminance(foreground);\n if (Math.abs(backgroundLuminance - foregroundLuminance) < deltaYmin) {\n return 0.0;\n }\n if (backgroundLuminance > foregroundLuminance) {\n return (backgroundLuminance ** 0.56 - foregroundLuminance ** 0.57) * scale;\n }\n if (backgroundLuminance < foregroundLuminance) {\n return (backgroundLuminance ** 0.65 - foregroundLuminance ** 0.62) * scale;\n }\n return 0.0;\n }\n static scaleContrast(contrast) {\n const loClip = 0.001;\n const loConThresh = 0.035991;\n const loConFactor = 27.7847239587675;\n const loConOffset = 0.027;\n const absContrast = Math.abs(contrast);\n if (absContrast < loClip) {\n return 0.0;\n }\n if (absContrast <= loConThresh) {\n return contrast - contrast * loConFactor * loConOffset;\n }\n if (contrast > loConThresh) {\n return contrast - loConOffset;\n }\n if (contrast < -loConThresh) {\n return contrast + loConOffset;\n }\n return 0.0;\n }\n static getAPCAContrast(background, foreground) {\n const contrast = this.getContrast(background, foreground);\n const scaledContrast = this.scaleContrast(contrast);\n return Math.abs(scaledContrast * 100);\n }\n}\n//# sourceMappingURL=Colors.js.map","export class DataValidator {\n static isEmailValid(str) {\n const blockList = ['gmail.be', 'gmail.nl', 'hotmail.c', 'hotmail.co', 'gmail.co', 'gmail.c', 'gmail.co', 'gmal.com', 'glail.com', 'gmail.col', 'gamil.com', 'gmail.con', 'icloud.be'];\n const regex = /^[a-zA-Z0-9.!#$%&*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+$/;\n if (!regex.test(str)) {\n return false;\n }\n for (const l of blockList) {\n if (str.endsWith('@' + l)) {\n return false;\n }\n }\n return true;\n }\n static isUitpasNumberValid(str) {\n return this.UITPAS_NUMBER_REGEX.test(str);\n }\n static isUitpasNumberKansenTarief(str) {\n const isValid = this.isUitpasNumberValid(str);\n if (!isValid) {\n return false;\n }\n const char = str[str.length - 2];\n return char === '1';\n }\n}\nDataValidator.UITPAS_NUMBER_REGEX = /^\\d{10,13}$/;\n//# sourceMappingURL=DataValidator.js.map","// these aren't really private, but nor are they really useful to document\n\n/**\n * @private\n */\nclass LuxonError extends Error {}\n\n/**\n * @private\n */\nexport class InvalidDateTimeError extends LuxonError {\n constructor(reason) {\n super(`Invalid DateTime: ${reason.toMessage()}`);\n }\n}\n\n/**\n * @private\n */\nexport class InvalidIntervalError extends LuxonError {\n constructor(reason) {\n super(`Invalid Interval: ${reason.toMessage()}`);\n }\n}\n\n/**\n * @private\n */\nexport class InvalidDurationError extends LuxonError {\n constructor(reason) {\n super(`Invalid Duration: ${reason.toMessage()}`);\n }\n}\n\n/**\n * @private\n */\nexport class ConflictingSpecificationError extends LuxonError {}\n\n/**\n * @private\n */\nexport class InvalidUnitError extends LuxonError {\n constructor(unit) {\n super(`Invalid unit ${unit}`);\n }\n}\n\n/**\n * @private\n */\nexport class InvalidArgumentError extends LuxonError {}\n\n/**\n * @private\n */\nexport class ZoneIsAbstractError extends LuxonError {\n constructor() {\n super(\"Zone is an abstract class\");\n }\n}\n","/**\n * @private\n */\n\nconst n = \"numeric\",\n s = \"short\",\n l = \"long\";\n\nexport const DATE_SHORT = {\n year: n,\n month: n,\n day: n,\n};\n\nexport const DATE_MED = {\n year: n,\n month: s,\n day: n,\n};\n\nexport const DATE_MED_WITH_WEEKDAY = {\n year: n,\n month: s,\n day: n,\n weekday: s,\n};\n\nexport const DATE_FULL = {\n year: n,\n month: l,\n day: n,\n};\n\nexport const DATE_HUGE = {\n year: n,\n month: l,\n day: n,\n weekday: l,\n};\n\nexport const TIME_SIMPLE = {\n hour: n,\n minute: n,\n};\n\nexport const TIME_WITH_SECONDS = {\n hour: n,\n minute: n,\n second: n,\n};\n\nexport const TIME_WITH_SHORT_OFFSET = {\n hour: n,\n minute: n,\n second: n,\n timeZoneName: s,\n};\n\nexport const TIME_WITH_LONG_OFFSET = {\n hour: n,\n minute: n,\n second: n,\n timeZoneName: l,\n};\n\nexport const TIME_24_SIMPLE = {\n hour: n,\n minute: n,\n hourCycle: \"h23\",\n};\n\nexport const TIME_24_WITH_SECONDS = {\n hour: n,\n minute: n,\n second: n,\n hourCycle: \"h23\",\n};\n\nexport const TIME_24_WITH_SHORT_OFFSET = {\n hour: n,\n minute: n,\n second: n,\n hourCycle: \"h23\",\n timeZoneName: s,\n};\n\nexport const TIME_24_WITH_LONG_OFFSET = {\n hour: n,\n minute: n,\n second: n,\n hourCycle: \"h23\",\n timeZoneName: l,\n};\n\nexport const DATETIME_SHORT = {\n year: n,\n month: n,\n day: n,\n hour: n,\n minute: n,\n};\n\nexport const DATETIME_SHORT_WITH_SECONDS = {\n year: n,\n month: n,\n day: n,\n hour: n,\n minute: n,\n second: n,\n};\n\nexport const DATETIME_MED = {\n year: n,\n month: s,\n day: n,\n hour: n,\n minute: n,\n};\n\nexport const DATETIME_MED_WITH_SECONDS = {\n year: n,\n month: s,\n day: n,\n hour: n,\n minute: n,\n second: n,\n};\n\nexport const DATETIME_MED_WITH_WEEKDAY = {\n year: n,\n month: s,\n day: n,\n weekday: s,\n hour: n,\n minute: n,\n};\n\nexport const DATETIME_FULL = {\n year: n,\n month: l,\n day: n,\n hour: n,\n minute: n,\n timeZoneName: s,\n};\n\nexport const DATETIME_FULL_WITH_SECONDS = {\n year: n,\n month: l,\n day: n,\n hour: n,\n minute: n,\n second: n,\n timeZoneName: s,\n};\n\nexport const DATETIME_HUGE = {\n year: n,\n month: l,\n day: n,\n weekday: l,\n hour: n,\n minute: n,\n timeZoneName: l,\n};\n\nexport const DATETIME_HUGE_WITH_SECONDS = {\n year: n,\n month: l,\n day: n,\n weekday: l,\n hour: n,\n minute: n,\n second: n,\n timeZoneName: l,\n};\n","import { ZoneIsAbstractError } from \"./errors.js\";\n\n/**\n * @interface\n */\nexport default class Zone {\n /**\n * The type of zone\n * @abstract\n * @type {string}\n */\n get type() {\n throw new ZoneIsAbstractError();\n }\n\n /**\n * The name of this zone.\n * @abstract\n * @type {string}\n */\n get name() {\n throw new ZoneIsAbstractError();\n }\n\n get ianaName() {\n return this.name;\n }\n\n /**\n * Returns whether the offset is known to be fixed for the whole year.\n * @abstract\n * @type {boolean}\n */\n get isUniversal() {\n throw new ZoneIsAbstractError();\n }\n\n /**\n * Returns the offset's common name (such as EST) at the specified timestamp\n * @abstract\n * @param {number} ts - Epoch milliseconds for which to get the name\n * @param {Object} opts - Options to affect the format\n * @param {string} opts.format - What style of offset to return. Accepts 'long' or 'short'.\n * @param {string} opts.locale - What locale to return the offset name in.\n * @return {string}\n */\n offsetName(ts, opts) {\n throw new ZoneIsAbstractError();\n }\n\n /**\n * Returns the offset's value as a string\n * @abstract\n * @param {number} ts - Epoch milliseconds for which to get the offset\n * @param {string} format - What style of offset to return.\n * Accepts 'narrow', 'short', or 'techie'. Returning '+6', '+06:00', or '+0600' respectively\n * @return {string}\n */\n formatOffset(ts, format) {\n throw new ZoneIsAbstractError();\n }\n\n /**\n * Return the offset in minutes for this zone at the specified timestamp.\n * @abstract\n * @param {number} ts - Epoch milliseconds for which to compute the offset\n * @return {number}\n */\n offset(ts) {\n throw new ZoneIsAbstractError();\n }\n\n /**\n * Return whether this Zone is equal to another zone\n * @abstract\n * @param {Zone} otherZone - the zone to compare\n * @return {boolean}\n */\n equals(otherZone) {\n throw new ZoneIsAbstractError();\n }\n\n /**\n * Return whether this Zone is valid.\n * @abstract\n * @type {boolean}\n */\n get isValid() {\n throw new ZoneIsAbstractError();\n }\n}\n","import { formatOffset, parseZoneInfo } from \"../impl/util.js\";\nimport Zone from \"../zone.js\";\n\nlet singleton = null;\n\n/**\n * Represents the local zone for this JavaScript environment.\n * @implements {Zone}\n */\nexport default class SystemZone extends Zone {\n /**\n * Get a singleton instance of the local zone\n * @return {SystemZone}\n */\n static get instance() {\n if (singleton === null) {\n singleton = new SystemZone();\n }\n return singleton;\n }\n\n /** @override **/\n get type() {\n return \"system\";\n }\n\n /** @override **/\n get name() {\n return new Intl.DateTimeFormat().resolvedOptions().timeZone;\n }\n\n /** @override **/\n get isUniversal() {\n return false;\n }\n\n /** @override **/\n offsetName(ts, { format, locale }) {\n return parseZoneInfo(ts, format, locale);\n }\n\n /** @override **/\n formatOffset(ts, format) {\n return formatOffset(this.offset(ts), format);\n }\n\n /** @override **/\n offset(ts) {\n return -new Date(ts).getTimezoneOffset();\n }\n\n /** @override **/\n equals(otherZone) {\n return otherZone.type === \"system\";\n }\n\n /** @override **/\n get isValid() {\n return true;\n }\n}\n","import { formatOffset, parseZoneInfo, isUndefined, objToLocalTS } from \"../impl/util.js\";\nimport Zone from \"../zone.js\";\n\nlet dtfCache = {};\nfunction makeDTF(zone) {\n if (!dtfCache[zone]) {\n dtfCache[zone] = new Intl.DateTimeFormat(\"en-US\", {\n hour12: false,\n timeZone: zone,\n year: \"numeric\",\n month: \"2-digit\",\n day: \"2-digit\",\n hour: \"2-digit\",\n minute: \"2-digit\",\n second: \"2-digit\",\n era: \"short\",\n });\n }\n return dtfCache[zone];\n}\n\nconst typeToPos = {\n year: 0,\n month: 1,\n day: 2,\n era: 3,\n hour: 4,\n minute: 5,\n second: 6,\n};\n\nfunction hackyOffset(dtf, date) {\n const formatted = dtf.format(date).replace(/\\u200E/g, \"\"),\n parsed = /(\\d+)\\/(\\d+)\\/(\\d+) (AD|BC),? (\\d+):(\\d+):(\\d+)/.exec(formatted),\n [, fMonth, fDay, fYear, fadOrBc, fHour, fMinute, fSecond] = parsed;\n return [fYear, fMonth, fDay, fadOrBc, fHour, fMinute, fSecond];\n}\n\nfunction partsOffset(dtf, date) {\n const formatted = dtf.formatToParts(date);\n const filled = [];\n for (let i = 0; i < formatted.length; i++) {\n const { type, value } = formatted[i];\n const pos = typeToPos[type];\n\n if (type === \"era\") {\n filled[pos] = value;\n } else if (!isUndefined(pos)) {\n filled[pos] = parseInt(value, 10);\n }\n }\n return filled;\n}\n\nlet ianaZoneCache = {};\n/**\n * A zone identified by an IANA identifier, like America/New_York\n * @implements {Zone}\n */\nexport default class IANAZone extends Zone {\n /**\n * @param {string} name - Zone name\n * @return {IANAZone}\n */\n static create(name) {\n if (!ianaZoneCache[name]) {\n ianaZoneCache[name] = new IANAZone(name);\n }\n return ianaZoneCache[name];\n }\n\n /**\n * Reset local caches. Should only be necessary in testing scenarios.\n * @return {void}\n */\n static resetCache() {\n ianaZoneCache = {};\n dtfCache = {};\n }\n\n /**\n * Returns whether the provided string is a valid specifier. This only checks the string's format, not that the specifier identifies a known zone; see isValidZone for that.\n * @param {string} s - The string to check validity on\n * @example IANAZone.isValidSpecifier(\"America/New_York\") //=> true\n * @example IANAZone.isValidSpecifier(\"Sport~~blorp\") //=> false\n * @deprecated This method returns false for some valid IANA names. Use isValidZone instead.\n * @return {boolean}\n */\n static isValidSpecifier(s) {\n return this.isValidZone(s);\n }\n\n /**\n * Returns whether the provided string identifies a real zone\n * @param {string} zone - The string to check\n * @example IANAZone.isValidZone(\"America/New_York\") //=> true\n * @example IANAZone.isValidZone(\"Fantasia/Castle\") //=> false\n * @example IANAZone.isValidZone(\"Sport~~blorp\") //=> false\n * @return {boolean}\n */\n static isValidZone(zone) {\n if (!zone) {\n return false;\n }\n try {\n new Intl.DateTimeFormat(\"en-US\", { timeZone: zone }).format();\n return true;\n } catch (e) {\n return false;\n }\n }\n\n constructor(name) {\n super();\n /** @private **/\n this.zoneName = name;\n /** @private **/\n this.valid = IANAZone.isValidZone(name);\n }\n\n /** @override **/\n get type() {\n return \"iana\";\n }\n\n /** @override **/\n get name() {\n return this.zoneName;\n }\n\n /** @override **/\n get isUniversal() {\n return false;\n }\n\n /** @override **/\n offsetName(ts, { format, locale }) {\n return parseZoneInfo(ts, format, locale, this.name);\n }\n\n /** @override **/\n formatOffset(ts, format) {\n return formatOffset(this.offset(ts), format);\n }\n\n /** @override **/\n offset(ts) {\n const date = new Date(ts);\n\n if (isNaN(date)) return NaN;\n\n const dtf = makeDTF(this.name);\n let [year, month, day, adOrBc, hour, minute, second] = dtf.formatToParts\n ? partsOffset(dtf, date)\n : hackyOffset(dtf, date);\n\n if (adOrBc === \"BC\") {\n year = -Math.abs(year) + 1;\n }\n\n // because we're using hour12 and https://bugs.chromium.org/p/chromium/issues/detail?id=1025564&can=2&q=%2224%3A00%22%20datetimeformat\n const adjustedHour = hour === 24 ? 0 : hour;\n\n const asUTC = objToLocalTS({\n year,\n month,\n day,\n hour: adjustedHour,\n minute,\n second,\n millisecond: 0,\n });\n\n let asTS = +date;\n const over = asTS % 1000;\n asTS -= over >= 0 ? over : 1000 + over;\n return (asUTC - asTS) / (60 * 1000);\n }\n\n /** @override **/\n equals(otherZone) {\n return otherZone.type === \"iana\" && otherZone.name === this.name;\n }\n\n /** @override **/\n get isValid() {\n return this.valid;\n }\n}\n","import { hasLocaleWeekInfo, hasRelative, padStart, roundTo, validateWeekSettings } from \"./util.js\";\nimport * as English from \"./english.js\";\nimport Settings from \"../settings.js\";\nimport DateTime from \"../datetime.js\";\nimport IANAZone from \"../zones/IANAZone.js\";\n\n// todo - remap caching\n\nlet intlLFCache = {};\nfunction getCachedLF(locString, opts = {}) {\n const key = JSON.stringify([locString, opts]);\n let dtf = intlLFCache[key];\n if (!dtf) {\n dtf = new Intl.ListFormat(locString, opts);\n intlLFCache[key] = dtf;\n }\n return dtf;\n}\n\nlet intlDTCache = {};\nfunction getCachedDTF(locString, opts = {}) {\n const key = JSON.stringify([locString, opts]);\n let dtf = intlDTCache[key];\n if (!dtf) {\n dtf = new Intl.DateTimeFormat(locString, opts);\n intlDTCache[key] = dtf;\n }\n return dtf;\n}\n\nlet intlNumCache = {};\nfunction getCachedINF(locString, opts = {}) {\n const key = JSON.stringify([locString, opts]);\n let inf = intlNumCache[key];\n if (!inf) {\n inf = new Intl.NumberFormat(locString, opts);\n intlNumCache[key] = inf;\n }\n return inf;\n}\n\nlet intlRelCache = {};\nfunction getCachedRTF(locString, opts = {}) {\n const { base, ...cacheKeyOpts } = opts; // exclude `base` from the options\n const key = JSON.stringify([locString, cacheKeyOpts]);\n let inf = intlRelCache[key];\n if (!inf) {\n inf = new Intl.RelativeTimeFormat(locString, opts);\n intlRelCache[key] = inf;\n }\n return inf;\n}\n\nlet sysLocaleCache = null;\nfunction systemLocale() {\n if (sysLocaleCache) {\n return sysLocaleCache;\n } else {\n sysLocaleCache = new Intl.DateTimeFormat().resolvedOptions().locale;\n return sysLocaleCache;\n }\n}\n\nlet weekInfoCache = {};\nfunction getCachedWeekInfo(locString) {\n let data = weekInfoCache[locString];\n if (!data) {\n const locale = new Intl.Locale(locString);\n // browsers currently implement this as a property, but spec says it should be a getter function\n data = \"getWeekInfo\" in locale ? locale.getWeekInfo() : locale.weekInfo;\n weekInfoCache[locString] = data;\n }\n return data;\n}\n\nfunction parseLocaleString(localeStr) {\n // I really want to avoid writing a BCP 47 parser\n // see, e.g. https://github.com/wooorm/bcp-47\n // Instead, we'll do this:\n\n // a) if the string has no -u extensions, just leave it alone\n // b) if it does, use Intl to resolve everything\n // c) if Intl fails, try again without the -u\n\n // private subtags and unicode subtags have ordering requirements,\n // and we're not properly parsing this, so just strip out the\n // private ones if they exist.\n const xIndex = localeStr.indexOf(\"-x-\");\n if (xIndex !== -1) {\n localeStr = localeStr.substring(0, xIndex);\n }\n\n const uIndex = localeStr.indexOf(\"-u-\");\n if (uIndex === -1) {\n return [localeStr];\n } else {\n let options;\n let selectedStr;\n try {\n options = getCachedDTF(localeStr).resolvedOptions();\n selectedStr = localeStr;\n } catch (e) {\n const smaller = localeStr.substring(0, uIndex);\n options = getCachedDTF(smaller).resolvedOptions();\n selectedStr = smaller;\n }\n\n const { numberingSystem, calendar } = options;\n return [selectedStr, numberingSystem, calendar];\n }\n}\n\nfunction intlConfigString(localeStr, numberingSystem, outputCalendar) {\n if (outputCalendar || numberingSystem) {\n if (!localeStr.includes(\"-u-\")) {\n localeStr += \"-u\";\n }\n\n if (outputCalendar) {\n localeStr += `-ca-${outputCalendar}`;\n }\n\n if (numberingSystem) {\n localeStr += `-nu-${numberingSystem}`;\n }\n return localeStr;\n } else {\n return localeStr;\n }\n}\n\nfunction mapMonths(f) {\n const ms = [];\n for (let i = 1; i <= 12; i++) {\n const dt = DateTime.utc(2009, i, 1);\n ms.push(f(dt));\n }\n return ms;\n}\n\nfunction mapWeekdays(f) {\n const ms = [];\n for (let i = 1; i <= 7; i++) {\n const dt = DateTime.utc(2016, 11, 13 + i);\n ms.push(f(dt));\n }\n return ms;\n}\n\nfunction listStuff(loc, length, englishFn, intlFn) {\n const mode = loc.listingMode();\n\n if (mode === \"error\") {\n return null;\n } else if (mode === \"en\") {\n return englishFn(length);\n } else {\n return intlFn(length);\n }\n}\n\nfunction supportsFastNumbers(loc) {\n if (loc.numberingSystem && loc.numberingSystem !== \"latn\") {\n return false;\n } else {\n return (\n loc.numberingSystem === \"latn\" ||\n !loc.locale ||\n loc.locale.startsWith(\"en\") ||\n new Intl.DateTimeFormat(loc.intl).resolvedOptions().numberingSystem === \"latn\"\n );\n }\n}\n\n/**\n * @private\n */\n\nclass PolyNumberFormatter {\n constructor(intl, forceSimple, opts) {\n this.padTo = opts.padTo || 0;\n this.floor = opts.floor || false;\n\n const { padTo, floor, ...otherOpts } = opts;\n\n if (!forceSimple || Object.keys(otherOpts).length > 0) {\n const intlOpts = { useGrouping: false, ...opts };\n if (opts.padTo > 0) intlOpts.minimumIntegerDigits = opts.padTo;\n this.inf = getCachedINF(intl, intlOpts);\n }\n }\n\n format(i) {\n if (this.inf) {\n const fixed = this.floor ? Math.floor(i) : i;\n return this.inf.format(fixed);\n } else {\n // to match the browser's numberformatter defaults\n const fixed = this.floor ? Math.floor(i) : roundTo(i, 3);\n return padStart(fixed, this.padTo);\n }\n }\n}\n\n/**\n * @private\n */\n\nclass PolyDateFormatter {\n constructor(dt, intl, opts) {\n this.opts = opts;\n this.originalZone = undefined;\n\n let z = undefined;\n if (this.opts.timeZone) {\n // Don't apply any workarounds if a timeZone is explicitly provided in opts\n this.dt = dt;\n } else if (dt.zone.type === \"fixed\") {\n // UTC-8 or Etc/UTC-8 are not part of tzdata, only Etc/GMT+8 and the like.\n // That is why fixed-offset TZ is set to that unless it is:\n // 1. Representing offset 0 when UTC is used to maintain previous behavior and does not become GMT.\n // 2. Unsupported by the browser:\n // - some do not support Etc/\n // - < Etc/GMT-14, > Etc/GMT+12, and 30-minute or 45-minute offsets are not part of tzdata\n const gmtOffset = -1 * (dt.offset / 60);\n const offsetZ = gmtOffset >= 0 ? `Etc/GMT+${gmtOffset}` : `Etc/GMT${gmtOffset}`;\n if (dt.offset !== 0 && IANAZone.create(offsetZ).valid) {\n z = offsetZ;\n this.dt = dt;\n } else {\n // Not all fixed-offset zones like Etc/+4:30 are present in tzdata so\n // we manually apply the offset and substitute the zone as needed.\n z = \"UTC\";\n this.dt = dt.offset === 0 ? dt : dt.setZone(\"UTC\").plus({ minutes: dt.offset });\n this.originalZone = dt.zone;\n }\n } else if (dt.zone.type === \"system\") {\n this.dt = dt;\n } else if (dt.zone.type === \"iana\") {\n this.dt = dt;\n z = dt.zone.name;\n } else {\n // Custom zones can have any offset / offsetName so we just manually\n // apply the offset and substitute the zone as needed.\n z = \"UTC\";\n this.dt = dt.setZone(\"UTC\").plus({ minutes: dt.offset });\n this.originalZone = dt.zone;\n }\n\n const intlOpts = { ...this.opts };\n intlOpts.timeZone = intlOpts.timeZone || z;\n this.dtf = getCachedDTF(intl, intlOpts);\n }\n\n format() {\n if (this.originalZone) {\n // If we have to substitute in the actual zone name, we have to use\n // formatToParts so that the timezone can be replaced.\n return this.formatToParts()\n .map(({ value }) => value)\n .join(\"\");\n }\n return this.dtf.format(this.dt.toJSDate());\n }\n\n formatToParts() {\n const parts = this.dtf.formatToParts(this.dt.toJSDate());\n if (this.originalZone) {\n return parts.map((part) => {\n if (part.type === \"timeZoneName\") {\n const offsetName = this.originalZone.offsetName(this.dt.ts, {\n locale: this.dt.locale,\n format: this.opts.timeZoneName,\n });\n return {\n ...part,\n value: offsetName,\n };\n } else {\n return part;\n }\n });\n }\n return parts;\n }\n\n resolvedOptions() {\n return this.dtf.resolvedOptions();\n }\n}\n\n/**\n * @private\n */\nclass PolyRelFormatter {\n constructor(intl, isEnglish, opts) {\n this.opts = { style: \"long\", ...opts };\n if (!isEnglish && hasRelative()) {\n this.rtf = getCachedRTF(intl, opts);\n }\n }\n\n format(count, unit) {\n if (this.rtf) {\n return this.rtf.format(count, unit);\n } else {\n return English.formatRelativeTime(unit, count, this.opts.numeric, this.opts.style !== \"long\");\n }\n }\n\n formatToParts(count, unit) {\n if (this.rtf) {\n return this.rtf.formatToParts(count, unit);\n } else {\n return [];\n }\n }\n}\n\nconst fallbackWeekSettings = {\n firstDay: 1,\n minimalDays: 4,\n weekend: [6, 7],\n};\n\n/**\n * @private\n */\n\nexport default class Locale {\n static fromOpts(opts) {\n return Locale.create(\n opts.locale,\n opts.numberingSystem,\n opts.outputCalendar,\n opts.weekSettings,\n opts.defaultToEN\n );\n }\n\n static create(locale, numberingSystem, outputCalendar, weekSettings, defaultToEN = false) {\n const specifiedLocale = locale || Settings.defaultLocale;\n // the system locale is useful for human readable strings but annoying for parsing/formatting known formats\n const localeR = specifiedLocale || (defaultToEN ? \"en-US\" : systemLocale());\n const numberingSystemR = numberingSystem || Settings.defaultNumberingSystem;\n const outputCalendarR = outputCalendar || Settings.defaultOutputCalendar;\n const weekSettingsR = validateWeekSettings(weekSettings) || Settings.defaultWeekSettings;\n return new Locale(localeR, numberingSystemR, outputCalendarR, weekSettingsR, specifiedLocale);\n }\n\n static resetCache() {\n sysLocaleCache = null;\n intlDTCache = {};\n intlNumCache = {};\n intlRelCache = {};\n }\n\n static fromObject({ locale, numberingSystem, outputCalendar, weekSettings } = {}) {\n return Locale.create(locale, numberingSystem, outputCalendar, weekSettings);\n }\n\n constructor(locale, numbering, outputCalendar, weekSettings, specifiedLocale) {\n const [parsedLocale, parsedNumberingSystem, parsedOutputCalendar] = parseLocaleString(locale);\n\n this.locale = parsedLocale;\n this.numberingSystem = numbering || parsedNumberingSystem || null;\n this.outputCalendar = outputCalendar || parsedOutputCalendar || null;\n this.weekSettings = weekSettings;\n this.intl = intlConfigString(this.locale, this.numberingSystem, this.outputCalendar);\n\n this.weekdaysCache = { format: {}, standalone: {} };\n this.monthsCache = { format: {}, standalone: {} };\n this.meridiemCache = null;\n this.eraCache = {};\n\n this.specifiedLocale = specifiedLocale;\n this.fastNumbersCached = null;\n }\n\n get fastNumbers() {\n if (this.fastNumbersCached == null) {\n this.fastNumbersCached = supportsFastNumbers(this);\n }\n\n return this.fastNumbersCached;\n }\n\n listingMode() {\n const isActuallyEn = this.isEnglish();\n const hasNoWeirdness =\n (this.numberingSystem === null || this.numberingSystem === \"latn\") &&\n (this.outputCalendar === null || this.outputCalendar === \"gregory\");\n return isActuallyEn && hasNoWeirdness ? \"en\" : \"intl\";\n }\n\n clone(alts) {\n if (!alts || Object.getOwnPropertyNames(alts).length === 0) {\n return this;\n } else {\n return Locale.create(\n alts.locale || this.specifiedLocale,\n alts.numberingSystem || this.numberingSystem,\n alts.outputCalendar || this.outputCalendar,\n validateWeekSettings(alts.weekSettings) || this.weekSettings,\n alts.defaultToEN || false\n );\n }\n }\n\n redefaultToEN(alts = {}) {\n return this.clone({ ...alts, defaultToEN: true });\n }\n\n redefaultToSystem(alts = {}) {\n return this.clone({ ...alts, defaultToEN: false });\n }\n\n months(length, format = false) {\n return listStuff(this, length, English.months, () => {\n const intl = format ? { month: length, day: \"numeric\" } : { month: length },\n formatStr = format ? \"format\" : \"standalone\";\n if (!this.monthsCache[formatStr][length]) {\n this.monthsCache[formatStr][length] = mapMonths((dt) => this.extract(dt, intl, \"month\"));\n }\n return this.monthsCache[formatStr][length];\n });\n }\n\n weekdays(length, format = false) {\n return listStuff(this, length, English.weekdays, () => {\n const intl = format\n ? { weekday: length, year: \"numeric\", month: \"long\", day: \"numeric\" }\n : { weekday: length },\n formatStr = format ? \"format\" : \"standalone\";\n if (!this.weekdaysCache[formatStr][length]) {\n this.weekdaysCache[formatStr][length] = mapWeekdays((dt) =>\n this.extract(dt, intl, \"weekday\")\n );\n }\n return this.weekdaysCache[formatStr][length];\n });\n }\n\n meridiems() {\n return listStuff(\n this,\n undefined,\n () => English.meridiems,\n () => {\n // In theory there could be aribitrary day periods. We're gonna assume there are exactly two\n // for AM and PM. This is probably wrong, but it's makes parsing way easier.\n if (!this.meridiemCache) {\n const intl = { hour: \"numeric\", hourCycle: \"h12\" };\n this.meridiemCache = [DateTime.utc(2016, 11, 13, 9), DateTime.utc(2016, 11, 13, 19)].map(\n (dt) => this.extract(dt, intl, \"dayperiod\")\n );\n }\n\n return this.meridiemCache;\n }\n );\n }\n\n eras(length) {\n return listStuff(this, length, English.eras, () => {\n const intl = { era: length };\n\n // This is problematic. Different calendars are going to define eras totally differently. What I need is the minimum set of dates\n // to definitely enumerate them.\n if (!this.eraCache[length]) {\n this.eraCache[length] = [DateTime.utc(-40, 1, 1), DateTime.utc(2017, 1, 1)].map((dt) =>\n this.extract(dt, intl, \"era\")\n );\n }\n\n return this.eraCache[length];\n });\n }\n\n extract(dt, intlOpts, field) {\n const df = this.dtFormatter(dt, intlOpts),\n results = df.formatToParts(),\n matching = results.find((m) => m.type.toLowerCase() === field);\n return matching ? matching.value : null;\n }\n\n numberFormatter(opts = {}) {\n // this forcesimple option is never used (the only caller short-circuits on it, but it seems safer to leave)\n // (in contrast, the rest of the condition is used heavily)\n return new PolyNumberFormatter(this.intl, opts.forceSimple || this.fastNumbers, opts);\n }\n\n dtFormatter(dt, intlOpts = {}) {\n return new PolyDateFormatter(dt, this.intl, intlOpts);\n }\n\n relFormatter(opts = {}) {\n return new PolyRelFormatter(this.intl, this.isEnglish(), opts);\n }\n\n listFormatter(opts = {}) {\n return getCachedLF(this.intl, opts);\n }\n\n isEnglish() {\n return (\n this.locale === \"en\" ||\n this.locale.toLowerCase() === \"en-us\" ||\n new Intl.DateTimeFormat(this.intl).resolvedOptions().locale.startsWith(\"en-us\")\n );\n }\n\n getWeekSettings() {\n if (this.weekSettings) {\n return this.weekSettings;\n } else if (!hasLocaleWeekInfo()) {\n return fallbackWeekSettings;\n } else {\n return getCachedWeekInfo(this.locale);\n }\n }\n\n getStartOfWeek() {\n return this.getWeekSettings().firstDay;\n }\n\n getMinDaysInFirstWeek() {\n return this.getWeekSettings().minimalDays;\n }\n\n getWeekendDays() {\n return this.getWeekSettings().weekend;\n }\n\n equals(other) {\n return (\n this.locale === other.locale &&\n this.numberingSystem === other.numberingSystem &&\n this.outputCalendar === other.outputCalendar\n );\n }\n}\n","import { formatOffset, signedOffset } from \"../impl/util.js\";\nimport Zone from \"../zone.js\";\n\nlet singleton = null;\n\n/**\n * A zone with a fixed offset (meaning no DST)\n * @implements {Zone}\n */\nexport default class FixedOffsetZone extends Zone {\n /**\n * Get a singleton instance of UTC\n * @return {FixedOffsetZone}\n */\n static get utcInstance() {\n if (singleton === null) {\n singleton = new FixedOffsetZone(0);\n }\n return singleton;\n }\n\n /**\n * Get an instance with a specified offset\n * @param {number} offset - The offset in minutes\n * @return {FixedOffsetZone}\n */\n static instance(offset) {\n return offset === 0 ? FixedOffsetZone.utcInstance : new FixedOffsetZone(offset);\n }\n\n /**\n * Get an instance of FixedOffsetZone from a UTC offset string, like \"UTC+6\"\n * @param {string} s - The offset string to parse\n * @example FixedOffsetZone.parseSpecifier(\"UTC+6\")\n * @example FixedOffsetZone.parseSpecifier(\"UTC+06\")\n * @example FixedOffsetZone.parseSpecifier(\"UTC-6:00\")\n * @return {FixedOffsetZone}\n */\n static parseSpecifier(s) {\n if (s) {\n const r = s.match(/^utc(?:([+-]\\d{1,2})(?::(\\d{2}))?)?$/i);\n if (r) {\n return new FixedOffsetZone(signedOffset(r[1], r[2]));\n }\n }\n return null;\n }\n\n constructor(offset) {\n super();\n /** @private **/\n this.fixed = offset;\n }\n\n /** @override **/\n get type() {\n return \"fixed\";\n }\n\n /** @override **/\n get name() {\n return this.fixed === 0 ? \"UTC\" : `UTC${formatOffset(this.fixed, \"narrow\")}`;\n }\n\n get ianaName() {\n if (this.fixed === 0) {\n return \"Etc/UTC\";\n } else {\n return `Etc/GMT${formatOffset(-this.fixed, \"narrow\")}`;\n }\n }\n\n /** @override **/\n offsetName() {\n return this.name;\n }\n\n /** @override **/\n formatOffset(ts, format) {\n return formatOffset(this.fixed, format);\n }\n\n /** @override **/\n get isUniversal() {\n return true;\n }\n\n /** @override **/\n offset() {\n return this.fixed;\n }\n\n /** @override **/\n equals(otherZone) {\n return otherZone.type === \"fixed\" && otherZone.fixed === this.fixed;\n }\n\n /** @override **/\n get isValid() {\n return true;\n }\n}\n","import Zone from \"../zone.js\";\n\n/**\n * A zone that failed to parse. You should never need to instantiate this.\n * @implements {Zone}\n */\nexport default class InvalidZone extends Zone {\n constructor(zoneName) {\n super();\n /** @private */\n this.zoneName = zoneName;\n }\n\n /** @override **/\n get type() {\n return \"invalid\";\n }\n\n /** @override **/\n get name() {\n return this.zoneName;\n }\n\n /** @override **/\n get isUniversal() {\n return false;\n }\n\n /** @override **/\n offsetName() {\n return null;\n }\n\n /** @override **/\n formatOffset() {\n return \"\";\n }\n\n /** @override **/\n offset() {\n return NaN;\n }\n\n /** @override **/\n equals() {\n return false;\n }\n\n /** @override **/\n get isValid() {\n return false;\n }\n}\n","/**\n * @private\n */\n\nimport Zone from \"../zone.js\";\nimport IANAZone from \"../zones/IANAZone.js\";\nimport FixedOffsetZone from \"../zones/fixedOffsetZone.js\";\nimport InvalidZone from \"../zones/invalidZone.js\";\n\nimport { isUndefined, isString, isNumber } from \"./util.js\";\nimport SystemZone from \"../zones/systemZone.js\";\n\nexport function normalizeZone(input, defaultZone) {\n let offset;\n if (isUndefined(input) || input === null) {\n return defaultZone;\n } else if (input instanceof Zone) {\n return input;\n } else if (isString(input)) {\n const lowered = input.toLowerCase();\n if (lowered === \"default\") return defaultZone;\n else if (lowered === \"local\" || lowered === \"system\") return SystemZone.instance;\n else if (lowered === \"utc\" || lowered === \"gmt\") return FixedOffsetZone.utcInstance;\n else return FixedOffsetZone.parseSpecifier(lowered) || IANAZone.create(input);\n } else if (isNumber(input)) {\n return FixedOffsetZone.instance(input);\n } else if (typeof input === \"object\" && \"offset\" in input && typeof input.offset === \"function\") {\n // This is dumb, but the instanceof check above doesn't seem to really work\n // so we're duck checking it\n return input;\n } else {\n return new InvalidZone(input);\n }\n}\n","import SystemZone from \"./zones/systemZone.js\";\nimport IANAZone from \"./zones/IANAZone.js\";\nimport Locale from \"./impl/locale.js\";\n\nimport { normalizeZone } from \"./impl/zoneUtil.js\";\nimport { validateWeekSettings } from \"./impl/util.js\";\n\nlet now = () => Date.now(),\n defaultZone = \"system\",\n defaultLocale = null,\n defaultNumberingSystem = null,\n defaultOutputCalendar = null,\n twoDigitCutoffYear = 60,\n throwOnInvalid,\n defaultWeekSettings = null;\n\n/**\n * Settings contains static getters and setters that control Luxon's overall behavior. Luxon is a simple library with few options, but the ones it does have live here.\n */\nexport default class Settings {\n /**\n * Get the callback for returning the current timestamp.\n * @type {function}\n */\n static get now() {\n return now;\n }\n\n /**\n * Set the callback for returning the current timestamp.\n * The function should return a number, which will be interpreted as an Epoch millisecond count\n * @type {function}\n * @example Settings.now = () => Date.now() + 3000 // pretend it is 3 seconds in the future\n * @example Settings.now = () => 0 // always pretend it's Jan 1, 1970 at midnight in UTC time\n */\n static set now(n) {\n now = n;\n }\n\n /**\n * Set the default time zone to create DateTimes in. Does not affect existing instances.\n * Use the value \"system\" to reset this value to the system's time zone.\n * @type {string}\n */\n static set defaultZone(zone) {\n defaultZone = zone;\n }\n\n /**\n * Get the default time zone object currently used to create DateTimes. Does not affect existing instances.\n * The default value is the system's time zone (the one set on the machine that runs this code).\n * @type {Zone}\n */\n static get defaultZone() {\n return normalizeZone(defaultZone, SystemZone.instance);\n }\n\n /**\n * Get the default locale to create DateTimes with. Does not affect existing instances.\n * @type {string}\n */\n static get defaultLocale() {\n return defaultLocale;\n }\n\n /**\n * Set the default locale to create DateTimes with. Does not affect existing instances.\n * @type {string}\n */\n static set defaultLocale(locale) {\n defaultLocale = locale;\n }\n\n /**\n * Get the default numbering system to create DateTimes with. Does not affect existing instances.\n * @type {string}\n */\n static get defaultNumberingSystem() {\n return defaultNumberingSystem;\n }\n\n /**\n * Set the default numbering system to create DateTimes with. Does not affect existing instances.\n * @type {string}\n */\n static set defaultNumberingSystem(numberingSystem) {\n defaultNumberingSystem = numberingSystem;\n }\n\n /**\n * Get the default output calendar to create DateTimes with. Does not affect existing instances.\n * @type {string}\n */\n static get defaultOutputCalendar() {\n return defaultOutputCalendar;\n }\n\n /**\n * Set the default output calendar to create DateTimes with. Does not affect existing instances.\n * @type {string}\n */\n static set defaultOutputCalendar(outputCalendar) {\n defaultOutputCalendar = outputCalendar;\n }\n\n /**\n * @typedef {Object} WeekSettings\n * @property {number} firstDay\n * @property {number} minimalDays\n * @property {number[]} weekend\n */\n\n /**\n * @return {WeekSettings|null}\n */\n static get defaultWeekSettings() {\n return defaultWeekSettings;\n }\n\n /**\n * Allows overriding the default locale week settings, i.e. the start of the week, the weekend and\n * how many days are required in the first week of a year.\n * Does not affect existing instances.\n *\n * @param {WeekSettings|null} weekSettings\n */\n static set defaultWeekSettings(weekSettings) {\n defaultWeekSettings = validateWeekSettings(weekSettings);\n }\n\n /**\n * Get the cutoff year after which a string encoding a year as two digits is interpreted to occur in the current century.\n * @type {number}\n */\n static get twoDigitCutoffYear() {\n return twoDigitCutoffYear;\n }\n\n /**\n * Set the cutoff year after which a string encoding a year as two digits is interpreted to occur in the current century.\n * @type {number}\n * @example Settings.twoDigitCutoffYear = 0 // cut-off year is 0, so all 'yy' are interpreted as current century\n * @example Settings.twoDigitCutoffYear = 50 // '49' -> 1949; '50' -> 2050\n * @example Settings.twoDigitCutoffYear = 1950 // interpreted as 50\n * @example Settings.twoDigitCutoffYear = 2050 // ALSO interpreted as 50\n */\n static set twoDigitCutoffYear(cutoffYear) {\n twoDigitCutoffYear = cutoffYear % 100;\n }\n\n /**\n * Get whether Luxon will throw when it encounters invalid DateTimes, Durations, or Intervals\n * @type {boolean}\n */\n static get throwOnInvalid() {\n return throwOnInvalid;\n }\n\n /**\n * Set whether Luxon will throw when it encounters invalid DateTimes, Durations, or Intervals\n * @type {boolean}\n */\n static set throwOnInvalid(t) {\n throwOnInvalid = t;\n }\n\n /**\n * Reset Luxon's global caches. Should only be necessary in testing scenarios.\n * @return {void}\n */\n static resetCaches() {\n Locale.resetCache();\n IANAZone.resetCache();\n }\n}\n","export default class Invalid {\n constructor(reason, explanation) {\n this.reason = reason;\n this.explanation = explanation;\n }\n\n toMessage() {\n if (this.explanation) {\n return `${this.reason}: ${this.explanation}`;\n } else {\n return this.reason;\n }\n }\n}\n","import {\n integerBetween,\n isLeapYear,\n timeObject,\n daysInYear,\n daysInMonth,\n weeksInWeekYear,\n isInteger,\n isUndefined,\n} from \"./util.js\";\nimport Invalid from \"./invalid.js\";\nimport { ConflictingSpecificationError } from \"../errors.js\";\n\nconst nonLeapLadder = [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334],\n leapLadder = [0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335];\n\nfunction unitOutOfRange(unit, value) {\n return new Invalid(\n \"unit out of range\",\n `you specified ${value} (of type ${typeof value}) as a ${unit}, which is invalid`\n );\n}\n\nexport function dayOfWeek(year, month, day) {\n const d = new Date(Date.UTC(year, month - 1, day));\n\n if (year < 100 && year >= 0) {\n d.setUTCFullYear(d.getUTCFullYear() - 1900);\n }\n\n const js = d.getUTCDay();\n\n return js === 0 ? 7 : js;\n}\n\nfunction computeOrdinal(year, month, day) {\n return day + (isLeapYear(year) ? leapLadder : nonLeapLadder)[month - 1];\n}\n\nfunction uncomputeOrdinal(year, ordinal) {\n const table = isLeapYear(year) ? leapLadder : nonLeapLadder,\n month0 = table.findIndex((i) => i < ordinal),\n day = ordinal - table[month0];\n return { month: month0 + 1, day };\n}\n\nexport function isoWeekdayToLocal(isoWeekday, startOfWeek) {\n return ((isoWeekday - startOfWeek + 7) % 7) + 1;\n}\n\n/**\n * @private\n */\n\nexport function gregorianToWeek(gregObj, minDaysInFirstWeek = 4, startOfWeek = 1) {\n const { year, month, day } = gregObj,\n ordinal = computeOrdinal(year, month, day),\n weekday = isoWeekdayToLocal(dayOfWeek(year, month, day), startOfWeek);\n\n let weekNumber = Math.floor((ordinal - weekday + 14 - minDaysInFirstWeek) / 7),\n weekYear;\n\n if (weekNumber < 1) {\n weekYear = year - 1;\n weekNumber = weeksInWeekYear(weekYear, minDaysInFirstWeek, startOfWeek);\n } else if (weekNumber > weeksInWeekYear(year, minDaysInFirstWeek, startOfWeek)) {\n weekYear = year + 1;\n weekNumber = 1;\n } else {\n weekYear = year;\n }\n\n return { weekYear, weekNumber, weekday, ...timeObject(gregObj) };\n}\n\nexport function weekToGregorian(weekData, minDaysInFirstWeek = 4, startOfWeek = 1) {\n const { weekYear, weekNumber, weekday } = weekData,\n weekdayOfJan4 = isoWeekdayToLocal(dayOfWeek(weekYear, 1, minDaysInFirstWeek), startOfWeek),\n yearInDays = daysInYear(weekYear);\n\n let ordinal = weekNumber * 7 + weekday - weekdayOfJan4 - 7 + minDaysInFirstWeek,\n year;\n\n if (ordinal < 1) {\n year = weekYear - 1;\n ordinal += daysInYear(year);\n } else if (ordinal > yearInDays) {\n year = weekYear + 1;\n ordinal -= daysInYear(weekYear);\n } else {\n year = weekYear;\n }\n\n const { month, day } = uncomputeOrdinal(year, ordinal);\n return { year, month, day, ...timeObject(weekData) };\n}\n\nexport function gregorianToOrdinal(gregData) {\n const { year, month, day } = gregData;\n const ordinal = computeOrdinal(year, month, day);\n return { year, ordinal, ...timeObject(gregData) };\n}\n\nexport function ordinalToGregorian(ordinalData) {\n const { year, ordinal } = ordinalData;\n const { month, day } = uncomputeOrdinal(year, ordinal);\n return { year, month, day, ...timeObject(ordinalData) };\n}\n\n/**\n * Check if local week units like localWeekday are used in obj.\n * If so, validates that they are not mixed with ISO week units and then copies them to the normal week unit properties.\n * Modifies obj in-place!\n * @param obj the object values\n */\nexport function usesLocalWeekValues(obj, loc) {\n const hasLocaleWeekData =\n !isUndefined(obj.localWeekday) ||\n !isUndefined(obj.localWeekNumber) ||\n !isUndefined(obj.localWeekYear);\n if (hasLocaleWeekData) {\n const hasIsoWeekData =\n !isUndefined(obj.weekday) || !isUndefined(obj.weekNumber) || !isUndefined(obj.weekYear);\n\n if (hasIsoWeekData) {\n throw new ConflictingSpecificationError(\n \"Cannot mix locale-based week fields with ISO-based week fields\"\n );\n }\n if (!isUndefined(obj.localWeekday)) obj.weekday = obj.localWeekday;\n if (!isUndefined(obj.localWeekNumber)) obj.weekNumber = obj.localWeekNumber;\n if (!isUndefined(obj.localWeekYear)) obj.weekYear = obj.localWeekYear;\n delete obj.localWeekday;\n delete obj.localWeekNumber;\n delete obj.localWeekYear;\n return {\n minDaysInFirstWeek: loc.getMinDaysInFirstWeek(),\n startOfWeek: loc.getStartOfWeek(),\n };\n } else {\n return { minDaysInFirstWeek: 4, startOfWeek: 1 };\n }\n}\n\nexport function hasInvalidWeekData(obj, minDaysInFirstWeek = 4, startOfWeek = 1) {\n const validYear = isInteger(obj.weekYear),\n validWeek = integerBetween(\n obj.weekNumber,\n 1,\n weeksInWeekYear(obj.weekYear, minDaysInFirstWeek, startOfWeek)\n ),\n validWeekday = integerBetween(obj.weekday, 1, 7);\n\n if (!validYear) {\n return unitOutOfRange(\"weekYear\", obj.weekYear);\n } else if (!validWeek) {\n return unitOutOfRange(\"week\", obj.weekNumber);\n } else if (!validWeekday) {\n return unitOutOfRange(\"weekday\", obj.weekday);\n } else return false;\n}\n\nexport function hasInvalidOrdinalData(obj) {\n const validYear = isInteger(obj.year),\n validOrdinal = integerBetween(obj.ordinal, 1, daysInYear(obj.year));\n\n if (!validYear) {\n return unitOutOfRange(\"year\", obj.year);\n } else if (!validOrdinal) {\n return unitOutOfRange(\"ordinal\", obj.ordinal);\n } else return false;\n}\n\nexport function hasInvalidGregorianData(obj) {\n const validYear = isInteger(obj.year),\n validMonth = integerBetween(obj.month, 1, 12),\n validDay = integerBetween(obj.day, 1, daysInMonth(obj.year, obj.month));\n\n if (!validYear) {\n return unitOutOfRange(\"year\", obj.year);\n } else if (!validMonth) {\n return unitOutOfRange(\"month\", obj.month);\n } else if (!validDay) {\n return unitOutOfRange(\"day\", obj.day);\n } else return false;\n}\n\nexport function hasInvalidTimeData(obj) {\n const { hour, minute, second, millisecond } = obj;\n const validHour =\n integerBetween(hour, 0, 23) ||\n (hour === 24 && minute === 0 && second === 0 && millisecond === 0),\n validMinute = integerBetween(minute, 0, 59),\n validSecond = integerBetween(second, 0, 59),\n validMillisecond = integerBetween(millisecond, 0, 999);\n\n if (!validHour) {\n return unitOutOfRange(\"hour\", hour);\n } else if (!validMinute) {\n return unitOutOfRange(\"minute\", minute);\n } else if (!validSecond) {\n return unitOutOfRange(\"second\", second);\n } else if (!validMillisecond) {\n return unitOutOfRange(\"millisecond\", millisecond);\n } else return false;\n}\n","/*\n This is just a junk drawer, containing anything used across multiple classes.\n Because Luxon is small(ish), this should stay small and we won't worry about splitting\n it up into, say, parsingUtil.js and basicUtil.js and so on. But they are divided up by feature area.\n*/\n\nimport { InvalidArgumentError } from \"../errors.js\";\nimport Settings from \"../settings.js\";\nimport { dayOfWeek, isoWeekdayToLocal } from \"./conversions.js\";\n\n/**\n * @private\n */\n\n// TYPES\n\nexport function isUndefined(o) {\n return typeof o === \"undefined\";\n}\n\nexport function isNumber(o) {\n return typeof o === \"number\";\n}\n\nexport function isInteger(o) {\n return typeof o === \"number\" && o % 1 === 0;\n}\n\nexport function isString(o) {\n return typeof o === \"string\";\n}\n\nexport function isDate(o) {\n return Object.prototype.toString.call(o) === \"[object Date]\";\n}\n\n// CAPABILITIES\n\nexport function hasRelative() {\n try {\n return typeof Intl !== \"undefined\" && !!Intl.RelativeTimeFormat;\n } catch (e) {\n return false;\n }\n}\n\nexport function hasLocaleWeekInfo() {\n try {\n return (\n typeof Intl !== \"undefined\" &&\n !!Intl.Locale &&\n (\"weekInfo\" in Intl.Locale.prototype || \"getWeekInfo\" in Intl.Locale.prototype)\n );\n } catch (e) {\n return false;\n }\n}\n\n// OBJECTS AND ARRAYS\n\nexport function maybeArray(thing) {\n return Array.isArray(thing) ? thing : [thing];\n}\n\nexport function bestBy(arr, by, compare) {\n if (arr.length === 0) {\n return undefined;\n }\n return arr.reduce((best, next) => {\n const pair = [by(next), next];\n if (!best) {\n return pair;\n } else if (compare(best[0], pair[0]) === best[0]) {\n return best;\n } else {\n return pair;\n }\n }, null)[1];\n}\n\nexport function pick(obj, keys) {\n return keys.reduce((a, k) => {\n a[k] = obj[k];\n return a;\n }, {});\n}\n\nexport function hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\nexport function validateWeekSettings(settings) {\n if (settings == null) {\n return null;\n } else if (typeof settings !== \"object\") {\n throw new InvalidArgumentError(\"Week settings must be an object\");\n } else {\n if (\n !integerBetween(settings.firstDay, 1, 7) ||\n !integerBetween(settings.minimalDays, 1, 7) ||\n !Array.isArray(settings.weekend) ||\n settings.weekend.some((v) => !integerBetween(v, 1, 7))\n ) {\n throw new InvalidArgumentError(\"Invalid week settings\");\n }\n return {\n firstDay: settings.firstDay,\n minimalDays: settings.minimalDays,\n weekend: Array.from(settings.weekend),\n };\n }\n}\n\n// NUMBERS AND STRINGS\n\nexport function integerBetween(thing, bottom, top) {\n return isInteger(thing) && thing >= bottom && thing <= top;\n}\n\n// x % n but takes the sign of n instead of x\nexport function floorMod(x, n) {\n return x - n * Math.floor(x / n);\n}\n\nexport function padStart(input, n = 2) {\n const isNeg = input < 0;\n let padded;\n if (isNeg) {\n padded = \"-\" + (\"\" + -input).padStart(n, \"0\");\n } else {\n padded = (\"\" + input).padStart(n, \"0\");\n }\n return padded;\n}\n\nexport function parseInteger(string) {\n if (isUndefined(string) || string === null || string === \"\") {\n return undefined;\n } else {\n return parseInt(string, 10);\n }\n}\n\nexport function parseFloating(string) {\n if (isUndefined(string) || string === null || string === \"\") {\n return undefined;\n } else {\n return parseFloat(string);\n }\n}\n\nexport function parseMillis(fraction) {\n // Return undefined (instead of 0) in these cases, where fraction is not set\n if (isUndefined(fraction) || fraction === null || fraction === \"\") {\n return undefined;\n } else {\n const f = parseFloat(\"0.\" + fraction) * 1000;\n return Math.floor(f);\n }\n}\n\nexport function roundTo(number, digits, towardZero = false) {\n const factor = 10 ** digits,\n rounder = towardZero ? Math.trunc : Math.round;\n return rounder(number * factor) / factor;\n}\n\n// DATE BASICS\n\nexport function isLeapYear(year) {\n return year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0);\n}\n\nexport function daysInYear(year) {\n return isLeapYear(year) ? 366 : 365;\n}\n\nexport function daysInMonth(year, month) {\n const modMonth = floorMod(month - 1, 12) + 1,\n modYear = year + (month - modMonth) / 12;\n\n if (modMonth === 2) {\n return isLeapYear(modYear) ? 29 : 28;\n } else {\n return [31, null, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31][modMonth - 1];\n }\n}\n\n// convert a calendar object to a local timestamp (epoch, but with the offset baked in)\nexport function objToLocalTS(obj) {\n let d = Date.UTC(\n obj.year,\n obj.month - 1,\n obj.day,\n obj.hour,\n obj.minute,\n obj.second,\n obj.millisecond\n );\n\n // for legacy reasons, years between 0 and 99 are interpreted as 19XX; revert that\n if (obj.year < 100 && obj.year >= 0) {\n d = new Date(d);\n // set the month and day again, this is necessary because year 2000 is a leap year, but year 100 is not\n // so if obj.year is in 99, but obj.day makes it roll over into year 100,\n // the calculations done by Date.UTC are using year 2000 - which is incorrect\n d.setUTCFullYear(obj.year, obj.month - 1, obj.day);\n }\n return +d;\n}\n\n// adapted from moment.js: https://github.com/moment/moment/blob/000ac1800e620f770f4eb31b5ae908f6167b0ab2/src/lib/units/week-calendar-utils.js\nfunction firstWeekOffset(year, minDaysInFirstWeek, startOfWeek) {\n const fwdlw = isoWeekdayToLocal(dayOfWeek(year, 1, minDaysInFirstWeek), startOfWeek);\n return -fwdlw + minDaysInFirstWeek - 1;\n}\n\nexport function weeksInWeekYear(weekYear, minDaysInFirstWeek = 4, startOfWeek = 1) {\n const weekOffset = firstWeekOffset(weekYear, minDaysInFirstWeek, startOfWeek);\n const weekOffsetNext = firstWeekOffset(weekYear + 1, minDaysInFirstWeek, startOfWeek);\n return (daysInYear(weekYear) - weekOffset + weekOffsetNext) / 7;\n}\n\nexport function untruncateYear(year) {\n if (year > 99) {\n return year;\n } else return year > Settings.twoDigitCutoffYear ? 1900 + year : 2000 + year;\n}\n\n// PARSING\n\nexport function parseZoneInfo(ts, offsetFormat, locale, timeZone = null) {\n const date = new Date(ts),\n intlOpts = {\n hourCycle: \"h23\",\n year: \"numeric\",\n month: \"2-digit\",\n day: \"2-digit\",\n hour: \"2-digit\",\n minute: \"2-digit\",\n };\n\n if (timeZone) {\n intlOpts.timeZone = timeZone;\n }\n\n const modified = { timeZoneName: offsetFormat, ...intlOpts };\n\n const parsed = new Intl.DateTimeFormat(locale, modified)\n .formatToParts(date)\n .find((m) => m.type.toLowerCase() === \"timezonename\");\n return parsed ? parsed.value : null;\n}\n\n// signedOffset('-5', '30') -> -330\nexport function signedOffset(offHourStr, offMinuteStr) {\n let offHour = parseInt(offHourStr, 10);\n\n // don't || this because we want to preserve -0\n if (Number.isNaN(offHour)) {\n offHour = 0;\n }\n\n const offMin = parseInt(offMinuteStr, 10) || 0,\n offMinSigned = offHour < 0 || Object.is(offHour, -0) ? -offMin : offMin;\n return offHour * 60 + offMinSigned;\n}\n\n// COERCION\n\nexport function asNumber(value) {\n const numericValue = Number(value);\n if (typeof value === \"boolean\" || value === \"\" || Number.isNaN(numericValue))\n throw new InvalidArgumentError(`Invalid unit value ${value}`);\n return numericValue;\n}\n\nexport function normalizeObject(obj, normalizer) {\n const normalized = {};\n for (const u in obj) {\n if (hasOwnProperty(obj, u)) {\n const v = obj[u];\n if (v === undefined || v === null) continue;\n normalized[normalizer(u)] = asNumber(v);\n }\n }\n return normalized;\n}\n\nexport function formatOffset(offset, format) {\n const hours = Math.trunc(Math.abs(offset / 60)),\n minutes = Math.trunc(Math.abs(offset % 60)),\n sign = offset >= 0 ? \"+\" : \"-\";\n\n switch (format) {\n case \"short\":\n return `${sign}${padStart(hours, 2)}:${padStart(minutes, 2)}`;\n case \"narrow\":\n return `${sign}${hours}${minutes > 0 ? `:${minutes}` : \"\"}`;\n case \"techie\":\n return `${sign}${padStart(hours, 2)}${padStart(minutes, 2)}`;\n default:\n throw new RangeError(`Value format ${format} is out of range for property format`);\n }\n}\n\nexport function timeObject(obj) {\n return pick(obj, [\"hour\", \"minute\", \"second\", \"millisecond\"]);\n}\n","import * as Formats from \"./formats.js\";\nimport { pick } from \"./util.js\";\n\nfunction stringify(obj) {\n return JSON.stringify(obj, Object.keys(obj).sort());\n}\n\n/**\n * @private\n */\n\nexport const monthsLong = [\n \"January\",\n \"February\",\n \"March\",\n \"April\",\n \"May\",\n \"June\",\n \"July\",\n \"August\",\n \"September\",\n \"October\",\n \"November\",\n \"December\",\n];\n\nexport const monthsShort = [\n \"Jan\",\n \"Feb\",\n \"Mar\",\n \"Apr\",\n \"May\",\n \"Jun\",\n \"Jul\",\n \"Aug\",\n \"Sep\",\n \"Oct\",\n \"Nov\",\n \"Dec\",\n];\n\nexport const monthsNarrow = [\"J\", \"F\", \"M\", \"A\", \"M\", \"J\", \"J\", \"A\", \"S\", \"O\", \"N\", \"D\"];\n\nexport function months(length) {\n switch (length) {\n case \"narrow\":\n return [...monthsNarrow];\n case \"short\":\n return [...monthsShort];\n case \"long\":\n return [...monthsLong];\n case \"numeric\":\n return [\"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\", \"10\", \"11\", \"12\"];\n case \"2-digit\":\n return [\"01\", \"02\", \"03\", \"04\", \"05\", \"06\", \"07\", \"08\", \"09\", \"10\", \"11\", \"12\"];\n default:\n return null;\n }\n}\n\nexport const weekdaysLong = [\n \"Monday\",\n \"Tuesday\",\n \"Wednesday\",\n \"Thursday\",\n \"Friday\",\n \"Saturday\",\n \"Sunday\",\n];\n\nexport const weekdaysShort = [\"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\", \"Sun\"];\n\nexport const weekdaysNarrow = [\"M\", \"T\", \"W\", \"T\", \"F\", \"S\", \"S\"];\n\nexport function weekdays(length) {\n switch (length) {\n case \"narrow\":\n return [...weekdaysNarrow];\n case \"short\":\n return [...weekdaysShort];\n case \"long\":\n return [...weekdaysLong];\n case \"numeric\":\n return [\"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\"];\n default:\n return null;\n }\n}\n\nexport const meridiems = [\"AM\", \"PM\"];\n\nexport const erasLong = [\"Before Christ\", \"Anno Domini\"];\n\nexport const erasShort = [\"BC\", \"AD\"];\n\nexport const erasNarrow = [\"B\", \"A\"];\n\nexport function eras(length) {\n switch (length) {\n case \"narrow\":\n return [...erasNarrow];\n case \"short\":\n return [...erasShort];\n case \"long\":\n return [...erasLong];\n default:\n return null;\n }\n}\n\nexport function meridiemForDateTime(dt) {\n return meridiems[dt.hour < 12 ? 0 : 1];\n}\n\nexport function weekdayForDateTime(dt, length) {\n return weekdays(length)[dt.weekday - 1];\n}\n\nexport function monthForDateTime(dt, length) {\n return months(length)[dt.month - 1];\n}\n\nexport function eraForDateTime(dt, length) {\n return eras(length)[dt.year < 0 ? 0 : 1];\n}\n\nexport function formatRelativeTime(unit, count, numeric = \"always\", narrow = false) {\n const units = {\n years: [\"year\", \"yr.\"],\n quarters: [\"quarter\", \"qtr.\"],\n months: [\"month\", \"mo.\"],\n weeks: [\"week\", \"wk.\"],\n days: [\"day\", \"day\", \"days\"],\n hours: [\"hour\", \"hr.\"],\n minutes: [\"minute\", \"min.\"],\n seconds: [\"second\", \"sec.\"],\n };\n\n const lastable = [\"hours\", \"minutes\", \"seconds\"].indexOf(unit) === -1;\n\n if (numeric === \"auto\" && lastable) {\n const isDay = unit === \"days\";\n switch (count) {\n case 1:\n return isDay ? \"tomorrow\" : `next ${units[unit][0]}`;\n case -1:\n return isDay ? \"yesterday\" : `last ${units[unit][0]}`;\n case 0:\n return isDay ? \"today\" : `this ${units[unit][0]}`;\n default: // fall through\n }\n }\n\n const isInPast = Object.is(count, -0) || count < 0,\n fmtValue = Math.abs(count),\n singular = fmtValue === 1,\n lilUnits = units[unit],\n fmtUnit = narrow\n ? singular\n ? lilUnits[1]\n : lilUnits[2] || lilUnits[1]\n : singular\n ? units[unit][0]\n : unit;\n return isInPast ? `${fmtValue} ${fmtUnit} ago` : `in ${fmtValue} ${fmtUnit}`;\n}\n\nexport function formatString(knownFormat) {\n // these all have the offsets removed because we don't have access to them\n // without all the intl stuff this is backfilling\n const filtered = pick(knownFormat, [\n \"weekday\",\n \"era\",\n \"year\",\n \"month\",\n \"day\",\n \"hour\",\n \"minute\",\n \"second\",\n \"timeZoneName\",\n \"hourCycle\",\n ]),\n key = stringify(filtered),\n dateTimeHuge = \"EEEE, LLLL d, yyyy, h:mm a\";\n switch (key) {\n case stringify(Formats.DATE_SHORT):\n return \"M/d/yyyy\";\n case stringify(Formats.DATE_MED):\n return \"LLL d, yyyy\";\n case stringify(Formats.DATE_MED_WITH_WEEKDAY):\n return \"EEE, LLL d, yyyy\";\n case stringify(Formats.DATE_FULL):\n return \"LLLL d, yyyy\";\n case stringify(Formats.DATE_HUGE):\n return \"EEEE, LLLL d, yyyy\";\n case stringify(Formats.TIME_SIMPLE):\n return \"h:mm a\";\n case stringify(Formats.TIME_WITH_SECONDS):\n return \"h:mm:ss a\";\n case stringify(Formats.TIME_WITH_SHORT_OFFSET):\n return \"h:mm a\";\n case stringify(Formats.TIME_WITH_LONG_OFFSET):\n return \"h:mm a\";\n case stringify(Formats.TIME_24_SIMPLE):\n return \"HH:mm\";\n case stringify(Formats.TIME_24_WITH_SECONDS):\n return \"HH:mm:ss\";\n case stringify(Formats.TIME_24_WITH_SHORT_OFFSET):\n return \"HH:mm\";\n case stringify(Formats.TIME_24_WITH_LONG_OFFSET):\n return \"HH:mm\";\n case stringify(Formats.DATETIME_SHORT):\n return \"M/d/yyyy, h:mm a\";\n case stringify(Formats.DATETIME_MED):\n return \"LLL d, yyyy, h:mm a\";\n case stringify(Formats.DATETIME_FULL):\n return \"LLLL d, yyyy, h:mm a\";\n case stringify(Formats.DATETIME_HUGE):\n return dateTimeHuge;\n case stringify(Formats.DATETIME_SHORT_WITH_SECONDS):\n return \"M/d/yyyy, h:mm:ss a\";\n case stringify(Formats.DATETIME_MED_WITH_SECONDS):\n return \"LLL d, yyyy, h:mm:ss a\";\n case stringify(Formats.DATETIME_MED_WITH_WEEKDAY):\n return \"EEE, d LLL yyyy, h:mm a\";\n case stringify(Formats.DATETIME_FULL_WITH_SECONDS):\n return \"LLLL d, yyyy, h:mm:ss a\";\n case stringify(Formats.DATETIME_HUGE_WITH_SECONDS):\n return \"EEEE, LLLL d, yyyy, h:mm:ss a\";\n default:\n return dateTimeHuge;\n }\n}\n","import * as English from \"./english.js\";\nimport * as Formats from \"./formats.js\";\nimport { padStart } from \"./util.js\";\n\nfunction stringifyTokens(splits, tokenToString) {\n let s = \"\";\n for (const token of splits) {\n if (token.literal) {\n s += token.val;\n } else {\n s += tokenToString(token.val);\n }\n }\n return s;\n}\n\nconst macroTokenToFormatOpts = {\n D: Formats.DATE_SHORT,\n DD: Formats.DATE_MED,\n DDD: Formats.DATE_FULL,\n DDDD: Formats.DATE_HUGE,\n t: Formats.TIME_SIMPLE,\n tt: Formats.TIME_WITH_SECONDS,\n ttt: Formats.TIME_WITH_SHORT_OFFSET,\n tttt: Formats.TIME_WITH_LONG_OFFSET,\n T: Formats.TIME_24_SIMPLE,\n TT: Formats.TIME_24_WITH_SECONDS,\n TTT: Formats.TIME_24_WITH_SHORT_OFFSET,\n TTTT: Formats.TIME_24_WITH_LONG_OFFSET,\n f: Formats.DATETIME_SHORT,\n ff: Formats.DATETIME_MED,\n fff: Formats.DATETIME_FULL,\n ffff: Formats.DATETIME_HUGE,\n F: Formats.DATETIME_SHORT_WITH_SECONDS,\n FF: Formats.DATETIME_MED_WITH_SECONDS,\n FFF: Formats.DATETIME_FULL_WITH_SECONDS,\n FFFF: Formats.DATETIME_HUGE_WITH_SECONDS,\n};\n\n/**\n * @private\n */\n\nexport default class Formatter {\n static create(locale, opts = {}) {\n return new Formatter(locale, opts);\n }\n\n static parseFormat(fmt) {\n // white-space is always considered a literal in user-provided formats\n // the \" \" token has a special meaning (see unitForToken)\n\n let current = null,\n currentFull = \"\",\n bracketed = false;\n const splits = [];\n for (let i = 0; i < fmt.length; i++) {\n const c = fmt.charAt(i);\n if (c === \"'\") {\n if (currentFull.length > 0) {\n splits.push({ literal: bracketed || /^\\s+$/.test(currentFull), val: currentFull });\n }\n current = null;\n currentFull = \"\";\n bracketed = !bracketed;\n } else if (bracketed) {\n currentFull += c;\n } else if (c === current) {\n currentFull += c;\n } else {\n if (currentFull.length > 0) {\n splits.push({ literal: /^\\s+$/.test(currentFull), val: currentFull });\n }\n currentFull = c;\n current = c;\n }\n }\n\n if (currentFull.length > 0) {\n splits.push({ literal: bracketed || /^\\s+$/.test(currentFull), val: currentFull });\n }\n\n return splits;\n }\n\n static macroTokenToFormatOpts(token) {\n return macroTokenToFormatOpts[token];\n }\n\n constructor(locale, formatOpts) {\n this.opts = formatOpts;\n this.loc = locale;\n this.systemLoc = null;\n }\n\n formatWithSystemDefault(dt, opts) {\n if (this.systemLoc === null) {\n this.systemLoc = this.loc.redefaultToSystem();\n }\n const df = this.systemLoc.dtFormatter(dt, { ...this.opts, ...opts });\n return df.format();\n }\n\n dtFormatter(dt, opts = {}) {\n return this.loc.dtFormatter(dt, { ...this.opts, ...opts });\n }\n\n formatDateTime(dt, opts) {\n return this.dtFormatter(dt, opts).format();\n }\n\n formatDateTimeParts(dt, opts) {\n return this.dtFormatter(dt, opts).formatToParts();\n }\n\n formatInterval(interval, opts) {\n const df = this.dtFormatter(interval.start, opts);\n return df.dtf.formatRange(interval.start.toJSDate(), interval.end.toJSDate());\n }\n\n resolvedOptions(dt, opts) {\n return this.dtFormatter(dt, opts).resolvedOptions();\n }\n\n num(n, p = 0) {\n // we get some perf out of doing this here, annoyingly\n if (this.opts.forceSimple) {\n return padStart(n, p);\n }\n\n const opts = { ...this.opts };\n\n if (p > 0) {\n opts.padTo = p;\n }\n\n return this.loc.numberFormatter(opts).format(n);\n }\n\n formatDateTimeFromString(dt, fmt) {\n const knownEnglish = this.loc.listingMode() === \"en\",\n useDateTimeFormatter = this.loc.outputCalendar && this.loc.outputCalendar !== \"gregory\",\n string = (opts, extract) => this.loc.extract(dt, opts, extract),\n formatOffset = (opts) => {\n if (dt.isOffsetFixed && dt.offset === 0 && opts.allowZ) {\n return \"Z\";\n }\n\n return dt.isValid ? dt.zone.formatOffset(dt.ts, opts.format) : \"\";\n },\n meridiem = () =>\n knownEnglish\n ? English.meridiemForDateTime(dt)\n : string({ hour: \"numeric\", hourCycle: \"h12\" }, \"dayperiod\"),\n month = (length, standalone) =>\n knownEnglish\n ? English.monthForDateTime(dt, length)\n : string(standalone ? { month: length } : { month: length, day: \"numeric\" }, \"month\"),\n weekday = (length, standalone) =>\n knownEnglish\n ? English.weekdayForDateTime(dt, length)\n : string(\n standalone ? { weekday: length } : { weekday: length, month: \"long\", day: \"numeric\" },\n \"weekday\"\n ),\n maybeMacro = (token) => {\n const formatOpts = Formatter.macroTokenToFormatOpts(token);\n if (formatOpts) {\n return this.formatWithSystemDefault(dt, formatOpts);\n } else {\n return token;\n }\n },\n era = (length) =>\n knownEnglish ? English.eraForDateTime(dt, length) : string({ era: length }, \"era\"),\n tokenToString = (token) => {\n // Where possible: https://cldr.unicode.org/translation/date-time/date-time-symbols\n switch (token) {\n // ms\n case \"S\":\n return this.num(dt.millisecond);\n case \"u\":\n // falls through\n case \"SSS\":\n return this.num(dt.millisecond, 3);\n // seconds\n case \"s\":\n return this.num(dt.second);\n case \"ss\":\n return this.num(dt.second, 2);\n // fractional seconds\n case \"uu\":\n return this.num(Math.floor(dt.millisecond / 10), 2);\n case \"uuu\":\n return this.num(Math.floor(dt.millisecond / 100));\n // minutes\n case \"m\":\n return this.num(dt.minute);\n case \"mm\":\n return this.num(dt.minute, 2);\n // hours\n case \"h\":\n return this.num(dt.hour % 12 === 0 ? 12 : dt.hour % 12);\n case \"hh\":\n return this.num(dt.hour % 12 === 0 ? 12 : dt.hour % 12, 2);\n case \"H\":\n return this.num(dt.hour);\n case \"HH\":\n return this.num(dt.hour, 2);\n // offset\n case \"Z\":\n // like +6\n return formatOffset({ format: \"narrow\", allowZ: this.opts.allowZ });\n case \"ZZ\":\n // like +06:00\n return formatOffset({ format: \"short\", allowZ: this.opts.allowZ });\n case \"ZZZ\":\n // like +0600\n return formatOffset({ format: \"techie\", allowZ: this.opts.allowZ });\n case \"ZZZZ\":\n // like EST\n return dt.zone.offsetName(dt.ts, { format: \"short\", locale: this.loc.locale });\n case \"ZZZZZ\":\n // like Eastern Standard Time\n return dt.zone.offsetName(dt.ts, { format: \"long\", locale: this.loc.locale });\n // zone\n case \"z\":\n // like America/New_York\n return dt.zoneName;\n // meridiems\n case \"a\":\n return meridiem();\n // dates\n case \"d\":\n return useDateTimeFormatter ? string({ day: \"numeric\" }, \"day\") : this.num(dt.day);\n case \"dd\":\n return useDateTimeFormatter ? string({ day: \"2-digit\" }, \"day\") : this.num(dt.day, 2);\n // weekdays - standalone\n case \"c\":\n // like 1\n return this.num(dt.weekday);\n case \"ccc\":\n // like 'Tues'\n return weekday(\"short\", true);\n case \"cccc\":\n // like 'Tuesday'\n return weekday(\"long\", true);\n case \"ccccc\":\n // like 'T'\n return weekday(\"narrow\", true);\n // weekdays - format\n case \"E\":\n // like 1\n return this.num(dt.weekday);\n case \"EEE\":\n // like 'Tues'\n return weekday(\"short\", false);\n case \"EEEE\":\n // like 'Tuesday'\n return weekday(\"long\", false);\n case \"EEEEE\":\n // like 'T'\n return weekday(\"narrow\", false);\n // months - standalone\n case \"L\":\n // like 1\n return useDateTimeFormatter\n ? string({ month: \"numeric\", day: \"numeric\" }, \"month\")\n : this.num(dt.month);\n case \"LL\":\n // like 01, doesn't seem to work\n return useDateTimeFormatter\n ? string({ month: \"2-digit\", day: \"numeric\" }, \"month\")\n : this.num(dt.month, 2);\n case \"LLL\":\n // like Jan\n return month(\"short\", true);\n case \"LLLL\":\n // like January\n return month(\"long\", true);\n case \"LLLLL\":\n // like J\n return month(\"narrow\", true);\n // months - format\n case \"M\":\n // like 1\n return useDateTimeFormatter\n ? string({ month: \"numeric\" }, \"month\")\n : this.num(dt.month);\n case \"MM\":\n // like 01\n return useDateTimeFormatter\n ? string({ month: \"2-digit\" }, \"month\")\n : this.num(dt.month, 2);\n case \"MMM\":\n // like Jan\n return month(\"short\", false);\n case \"MMMM\":\n // like January\n return month(\"long\", false);\n case \"MMMMM\":\n // like J\n return month(\"narrow\", false);\n // years\n case \"y\":\n // like 2014\n return useDateTimeFormatter ? string({ year: \"numeric\" }, \"year\") : this.num(dt.year);\n case \"yy\":\n // like 14\n return useDateTimeFormatter\n ? string({ year: \"2-digit\" }, \"year\")\n : this.num(dt.year.toString().slice(-2), 2);\n case \"yyyy\":\n // like 0012\n return useDateTimeFormatter\n ? string({ year: \"numeric\" }, \"year\")\n : this.num(dt.year, 4);\n case \"yyyyyy\":\n // like 000012\n return useDateTimeFormatter\n ? string({ year: \"numeric\" }, \"year\")\n : this.num(dt.year, 6);\n // eras\n case \"G\":\n // like AD\n return era(\"short\");\n case \"GG\":\n // like Anno Domini\n return era(\"long\");\n case \"GGGGG\":\n return era(\"narrow\");\n case \"kk\":\n return this.num(dt.weekYear.toString().slice(-2), 2);\n case \"kkkk\":\n return this.num(dt.weekYear, 4);\n case \"W\":\n return this.num(dt.weekNumber);\n case \"WW\":\n return this.num(dt.weekNumber, 2);\n case \"n\":\n return this.num(dt.localWeekNumber);\n case \"nn\":\n return this.num(dt.localWeekNumber, 2);\n case \"ii\":\n return this.num(dt.localWeekYear.toString().slice(-2), 2);\n case \"iiii\":\n return this.num(dt.localWeekYear, 4);\n case \"o\":\n return this.num(dt.ordinal);\n case \"ooo\":\n return this.num(dt.ordinal, 3);\n case \"q\":\n // like 1\n return this.num(dt.quarter);\n case \"qq\":\n // like 01\n return this.num(dt.quarter, 2);\n case \"X\":\n return this.num(Math.floor(dt.ts / 1000));\n case \"x\":\n return this.num(dt.ts);\n default:\n return maybeMacro(token);\n }\n };\n\n return stringifyTokens(Formatter.parseFormat(fmt), tokenToString);\n }\n\n formatDurationFromString(dur, fmt) {\n const tokenToField = (token) => {\n switch (token[0]) {\n case \"S\":\n return \"millisecond\";\n case \"s\":\n return \"second\";\n case \"m\":\n return \"minute\";\n case \"h\":\n return \"hour\";\n case \"d\":\n return \"day\";\n case \"w\":\n return \"week\";\n case \"M\":\n return \"month\";\n case \"y\":\n return \"year\";\n default:\n return null;\n }\n },\n tokenToString = (lildur) => (token) => {\n const mapped = tokenToField(token);\n if (mapped) {\n return this.num(lildur.get(mapped), token.length);\n } else {\n return token;\n }\n },\n tokens = Formatter.parseFormat(fmt),\n realTokens = tokens.reduce(\n (found, { literal, val }) => (literal ? found : found.concat(val)),\n []\n ),\n collapsed = dur.shiftTo(...realTokens.map(tokenToField).filter((t) => t));\n return stringifyTokens(tokens, tokenToString(collapsed));\n }\n}\n","import {\n untruncateYear,\n signedOffset,\n parseInteger,\n parseMillis,\n isUndefined,\n parseFloating,\n} from \"./util.js\";\nimport * as English from \"./english.js\";\nimport FixedOffsetZone from \"../zones/fixedOffsetZone.js\";\nimport IANAZone from \"../zones/IANAZone.js\";\n\n/*\n * This file handles parsing for well-specified formats. Here's how it works:\n * Two things go into parsing: a regex to match with and an extractor to take apart the groups in the match.\n * An extractor is just a function that takes a regex match array and returns a { year: ..., month: ... } object\n * parse() does the work of executing the regex and applying the extractor. It takes multiple regex/extractor pairs to try in sequence.\n * Extractors can take a \"cursor\" representing the offset in the match to look at. This makes it easy to combine extractors.\n * combineExtractors() does the work of combining them, keeping track of the cursor through multiple extractions.\n * Some extractions are super dumb and simpleParse and fromStrings help DRY them.\n */\n\nconst ianaRegex = /[A-Za-z_+-]{1,256}(?::?\\/[A-Za-z0-9_+-]{1,256}(?:\\/[A-Za-z0-9_+-]{1,256})?)?/;\n\nfunction combineRegexes(...regexes) {\n const full = regexes.reduce((f, r) => f + r.source, \"\");\n return RegExp(`^${full}$`);\n}\n\nfunction combineExtractors(...extractors) {\n return (m) =>\n extractors\n .reduce(\n ([mergedVals, mergedZone, cursor], ex) => {\n const [val, zone, next] = ex(m, cursor);\n return [{ ...mergedVals, ...val }, zone || mergedZone, next];\n },\n [{}, null, 1]\n )\n .slice(0, 2);\n}\n\nfunction parse(s, ...patterns) {\n if (s == null) {\n return [null, null];\n }\n\n for (const [regex, extractor] of patterns) {\n const m = regex.exec(s);\n if (m) {\n return extractor(m);\n }\n }\n return [null, null];\n}\n\nfunction simpleParse(...keys) {\n return (match, cursor) => {\n const ret = {};\n let i;\n\n for (i = 0; i < keys.length; i++) {\n ret[keys[i]] = parseInteger(match[cursor + i]);\n }\n return [ret, null, cursor + i];\n };\n}\n\n// ISO and SQL parsing\nconst offsetRegex = /(?:(Z)|([+-]\\d\\d)(?::?(\\d\\d))?)/;\nconst isoExtendedZone = `(?:${offsetRegex.source}?(?:\\\\[(${ianaRegex.source})\\\\])?)?`;\nconst isoTimeBaseRegex = /(\\d\\d)(?::?(\\d\\d)(?::?(\\d\\d)(?:[.,](\\d{1,30}))?)?)?/;\nconst isoTimeRegex = RegExp(`${isoTimeBaseRegex.source}${isoExtendedZone}`);\nconst isoTimeExtensionRegex = RegExp(`(?:T${isoTimeRegex.source})?`);\nconst isoYmdRegex = /([+-]\\d{6}|\\d{4})(?:-?(\\d\\d)(?:-?(\\d\\d))?)?/;\nconst isoWeekRegex = /(\\d{4})-?W(\\d\\d)(?:-?(\\d))?/;\nconst isoOrdinalRegex = /(\\d{4})-?(\\d{3})/;\nconst extractISOWeekData = simpleParse(\"weekYear\", \"weekNumber\", \"weekDay\");\nconst extractISOOrdinalData = simpleParse(\"year\", \"ordinal\");\nconst sqlYmdRegex = /(\\d{4})-(\\d\\d)-(\\d\\d)/; // dumbed-down version of the ISO one\nconst sqlTimeRegex = RegExp(\n `${isoTimeBaseRegex.source} ?(?:${offsetRegex.source}|(${ianaRegex.source}))?`\n);\nconst sqlTimeExtensionRegex = RegExp(`(?: ${sqlTimeRegex.source})?`);\n\nfunction int(match, pos, fallback) {\n const m = match[pos];\n return isUndefined(m) ? fallback : parseInteger(m);\n}\n\nfunction extractISOYmd(match, cursor) {\n const item = {\n year: int(match, cursor),\n month: int(match, cursor + 1, 1),\n day: int(match, cursor + 2, 1),\n };\n\n return [item, null, cursor + 3];\n}\n\nfunction extractISOTime(match, cursor) {\n const item = {\n hours: int(match, cursor, 0),\n minutes: int(match, cursor + 1, 0),\n seconds: int(match, cursor + 2, 0),\n milliseconds: parseMillis(match[cursor + 3]),\n };\n\n return [item, null, cursor + 4];\n}\n\nfunction extractISOOffset(match, cursor) {\n const local = !match[cursor] && !match[cursor + 1],\n fullOffset = signedOffset(match[cursor + 1], match[cursor + 2]),\n zone = local ? null : FixedOffsetZone.instance(fullOffset);\n return [{}, zone, cursor + 3];\n}\n\nfunction extractIANAZone(match, cursor) {\n const zone = match[cursor] ? IANAZone.create(match[cursor]) : null;\n return [{}, zone, cursor + 1];\n}\n\n// ISO time parsing\n\nconst isoTimeOnly = RegExp(`^T?${isoTimeBaseRegex.source}$`);\n\n// ISO duration parsing\n\nconst isoDuration =\n /^-?P(?:(?:(-?\\d{1,20}(?:\\.\\d{1,20})?)Y)?(?:(-?\\d{1,20}(?:\\.\\d{1,20})?)M)?(?:(-?\\d{1,20}(?:\\.\\d{1,20})?)W)?(?:(-?\\d{1,20}(?:\\.\\d{1,20})?)D)?(?:T(?:(-?\\d{1,20}(?:\\.\\d{1,20})?)H)?(?:(-?\\d{1,20}(?:\\.\\d{1,20})?)M)?(?:(-?\\d{1,20})(?:[.,](-?\\d{1,20}))?S)?)?)$/;\n\nfunction extractISODuration(match) {\n const [s, yearStr, monthStr, weekStr, dayStr, hourStr, minuteStr, secondStr, millisecondsStr] =\n match;\n\n const hasNegativePrefix = s[0] === \"-\";\n const negativeSeconds = secondStr && secondStr[0] === \"-\";\n\n const maybeNegate = (num, force = false) =>\n num !== undefined && (force || (num && hasNegativePrefix)) ? -num : num;\n\n return [\n {\n years: maybeNegate(parseFloating(yearStr)),\n months: maybeNegate(parseFloating(monthStr)),\n weeks: maybeNegate(parseFloating(weekStr)),\n days: maybeNegate(parseFloating(dayStr)),\n hours: maybeNegate(parseFloating(hourStr)),\n minutes: maybeNegate(parseFloating(minuteStr)),\n seconds: maybeNegate(parseFloating(secondStr), secondStr === \"-0\"),\n milliseconds: maybeNegate(parseMillis(millisecondsStr), negativeSeconds),\n },\n ];\n}\n\n// These are a little braindead. EDT *should* tell us that we're in, say, America/New_York\n// and not just that we're in -240 *right now*. But since I don't think these are used that often\n// I'm just going to ignore that\nconst obsOffsets = {\n GMT: 0,\n EDT: -4 * 60,\n EST: -5 * 60,\n CDT: -5 * 60,\n CST: -6 * 60,\n MDT: -6 * 60,\n MST: -7 * 60,\n PDT: -7 * 60,\n PST: -8 * 60,\n};\n\nfunction fromStrings(weekdayStr, yearStr, monthStr, dayStr, hourStr, minuteStr, secondStr) {\n const result = {\n year: yearStr.length === 2 ? untruncateYear(parseInteger(yearStr)) : parseInteger(yearStr),\n month: English.monthsShort.indexOf(monthStr) + 1,\n day: parseInteger(dayStr),\n hour: parseInteger(hourStr),\n minute: parseInteger(minuteStr),\n };\n\n if (secondStr) result.second = parseInteger(secondStr);\n if (weekdayStr) {\n result.weekday =\n weekdayStr.length > 3\n ? English.weekdaysLong.indexOf(weekdayStr) + 1\n : English.weekdaysShort.indexOf(weekdayStr) + 1;\n }\n\n return result;\n}\n\n// RFC 2822/5322\nconst rfc2822 =\n /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),\\s)?(\\d{1,2})\\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\\s(\\d{2,4})\\s(\\d\\d):(\\d\\d)(?::(\\d\\d))?\\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|(?:([+-]\\d\\d)(\\d\\d)))$/;\n\nfunction extractRFC2822(match) {\n const [\n ,\n weekdayStr,\n dayStr,\n monthStr,\n yearStr,\n hourStr,\n minuteStr,\n secondStr,\n obsOffset,\n milOffset,\n offHourStr,\n offMinuteStr,\n ] = match,\n result = fromStrings(weekdayStr, yearStr, monthStr, dayStr, hourStr, minuteStr, secondStr);\n\n let offset;\n if (obsOffset) {\n offset = obsOffsets[obsOffset];\n } else if (milOffset) {\n offset = 0;\n } else {\n offset = signedOffset(offHourStr, offMinuteStr);\n }\n\n return [result, new FixedOffsetZone(offset)];\n}\n\nfunction preprocessRFC2822(s) {\n // Remove comments and folding whitespace and replace multiple-spaces with a single space\n return s\n .replace(/\\([^()]*\\)|[\\n\\t]/g, \" \")\n .replace(/(\\s\\s+)/g, \" \")\n .trim();\n}\n\n// http date\n\nconst rfc1123 =\n /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (\\d\\d) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) (\\d{4}) (\\d\\d):(\\d\\d):(\\d\\d) GMT$/,\n rfc850 =\n /^(Monday|Tuesday|Wednesday|Thursday|Friday|Saturday|Sunday), (\\d\\d)-(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)-(\\d\\d) (\\d\\d):(\\d\\d):(\\d\\d) GMT$/,\n ascii =\n /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) ( \\d|\\d\\d) (\\d\\d):(\\d\\d):(\\d\\d) (\\d{4})$/;\n\nfunction extractRFC1123Or850(match) {\n const [, weekdayStr, dayStr, monthStr, yearStr, hourStr, minuteStr, secondStr] = match,\n result = fromStrings(weekdayStr, yearStr, monthStr, dayStr, hourStr, minuteStr, secondStr);\n return [result, FixedOffsetZone.utcInstance];\n}\n\nfunction extractASCII(match) {\n const [, weekdayStr, monthStr, dayStr, hourStr, minuteStr, secondStr, yearStr] = match,\n result = fromStrings(weekdayStr, yearStr, monthStr, dayStr, hourStr, minuteStr, secondStr);\n return [result, FixedOffsetZone.utcInstance];\n}\n\nconst isoYmdWithTimeExtensionRegex = combineRegexes(isoYmdRegex, isoTimeExtensionRegex);\nconst isoWeekWithTimeExtensionRegex = combineRegexes(isoWeekRegex, isoTimeExtensionRegex);\nconst isoOrdinalWithTimeExtensionRegex = combineRegexes(isoOrdinalRegex, isoTimeExtensionRegex);\nconst isoTimeCombinedRegex = combineRegexes(isoTimeRegex);\n\nconst extractISOYmdTimeAndOffset = combineExtractors(\n extractISOYmd,\n extractISOTime,\n extractISOOffset,\n extractIANAZone\n);\nconst extractISOWeekTimeAndOffset = combineExtractors(\n extractISOWeekData,\n extractISOTime,\n extractISOOffset,\n extractIANAZone\n);\nconst extractISOOrdinalDateAndTime = combineExtractors(\n extractISOOrdinalData,\n extractISOTime,\n extractISOOffset,\n extractIANAZone\n);\nconst extractISOTimeAndOffset = combineExtractors(\n extractISOTime,\n extractISOOffset,\n extractIANAZone\n);\n\n/*\n * @private\n */\n\nexport function parseISODate(s) {\n return parse(\n s,\n [isoYmdWithTimeExtensionRegex, extractISOYmdTimeAndOffset],\n [isoWeekWithTimeExtensionRegex, extractISOWeekTimeAndOffset],\n [isoOrdinalWithTimeExtensionRegex, extractISOOrdinalDateAndTime],\n [isoTimeCombinedRegex, extractISOTimeAndOffset]\n );\n}\n\nexport function parseRFC2822Date(s) {\n return parse(preprocessRFC2822(s), [rfc2822, extractRFC2822]);\n}\n\nexport function parseHTTPDate(s) {\n return parse(\n s,\n [rfc1123, extractRFC1123Or850],\n [rfc850, extractRFC1123Or850],\n [ascii, extractASCII]\n );\n}\n\nexport function parseISODuration(s) {\n return parse(s, [isoDuration, extractISODuration]);\n}\n\nconst extractISOTimeOnly = combineExtractors(extractISOTime);\n\nexport function parseISOTimeOnly(s) {\n return parse(s, [isoTimeOnly, extractISOTimeOnly]);\n}\n\nconst sqlYmdWithTimeExtensionRegex = combineRegexes(sqlYmdRegex, sqlTimeExtensionRegex);\nconst sqlTimeCombinedRegex = combineRegexes(sqlTimeRegex);\n\nconst extractISOTimeOffsetAndIANAZone = combineExtractors(\n extractISOTime,\n extractISOOffset,\n extractIANAZone\n);\n\nexport function parseSQL(s) {\n return parse(\n s,\n [sqlYmdWithTimeExtensionRegex, extractISOYmdTimeAndOffset],\n [sqlTimeCombinedRegex, extractISOTimeOffsetAndIANAZone]\n );\n}\n","import { InvalidArgumentError, InvalidDurationError, InvalidUnitError } from \"./errors.js\";\nimport Formatter from \"./impl/formatter.js\";\nimport Invalid from \"./impl/invalid.js\";\nimport Locale from \"./impl/locale.js\";\nimport { parseISODuration, parseISOTimeOnly } from \"./impl/regexParser.js\";\nimport {\n asNumber,\n hasOwnProperty,\n isNumber,\n isUndefined,\n normalizeObject,\n roundTo,\n} from \"./impl/util.js\";\nimport Settings from \"./settings.js\";\nimport DateTime from \"./datetime.js\";\n\nconst INVALID = \"Invalid Duration\";\n\n// unit conversion constants\nexport const lowOrderMatrix = {\n weeks: {\n days: 7,\n hours: 7 * 24,\n minutes: 7 * 24 * 60,\n seconds: 7 * 24 * 60 * 60,\n milliseconds: 7 * 24 * 60 * 60 * 1000,\n },\n days: {\n hours: 24,\n minutes: 24 * 60,\n seconds: 24 * 60 * 60,\n milliseconds: 24 * 60 * 60 * 1000,\n },\n hours: { minutes: 60, seconds: 60 * 60, milliseconds: 60 * 60 * 1000 },\n minutes: { seconds: 60, milliseconds: 60 * 1000 },\n seconds: { milliseconds: 1000 },\n },\n casualMatrix = {\n years: {\n quarters: 4,\n months: 12,\n weeks: 52,\n days: 365,\n hours: 365 * 24,\n minutes: 365 * 24 * 60,\n seconds: 365 * 24 * 60 * 60,\n milliseconds: 365 * 24 * 60 * 60 * 1000,\n },\n quarters: {\n months: 3,\n weeks: 13,\n days: 91,\n hours: 91 * 24,\n minutes: 91 * 24 * 60,\n seconds: 91 * 24 * 60 * 60,\n milliseconds: 91 * 24 * 60 * 60 * 1000,\n },\n months: {\n weeks: 4,\n days: 30,\n hours: 30 * 24,\n minutes: 30 * 24 * 60,\n seconds: 30 * 24 * 60 * 60,\n milliseconds: 30 * 24 * 60 * 60 * 1000,\n },\n\n ...lowOrderMatrix,\n },\n daysInYearAccurate = 146097.0 / 400,\n daysInMonthAccurate = 146097.0 / 4800,\n accurateMatrix = {\n years: {\n quarters: 4,\n months: 12,\n weeks: daysInYearAccurate / 7,\n days: daysInYearAccurate,\n hours: daysInYearAccurate * 24,\n minutes: daysInYearAccurate * 24 * 60,\n seconds: daysInYearAccurate * 24 * 60 * 60,\n milliseconds: daysInYearAccurate * 24 * 60 * 60 * 1000,\n },\n quarters: {\n months: 3,\n weeks: daysInYearAccurate / 28,\n days: daysInYearAccurate / 4,\n hours: (daysInYearAccurate * 24) / 4,\n minutes: (daysInYearAccurate * 24 * 60) / 4,\n seconds: (daysInYearAccurate * 24 * 60 * 60) / 4,\n milliseconds: (daysInYearAccurate * 24 * 60 * 60 * 1000) / 4,\n },\n months: {\n weeks: daysInMonthAccurate / 7,\n days: daysInMonthAccurate,\n hours: daysInMonthAccurate * 24,\n minutes: daysInMonthAccurate * 24 * 60,\n seconds: daysInMonthAccurate * 24 * 60 * 60,\n milliseconds: daysInMonthAccurate * 24 * 60 * 60 * 1000,\n },\n ...lowOrderMatrix,\n };\n\n// units ordered by size\nconst orderedUnits = [\n \"years\",\n \"quarters\",\n \"months\",\n \"weeks\",\n \"days\",\n \"hours\",\n \"minutes\",\n \"seconds\",\n \"milliseconds\",\n];\n\nconst reverseUnits = orderedUnits.slice(0).reverse();\n\n// clone really means \"create another instance just like this one, but with these changes\"\nfunction clone(dur, alts, clear = false) {\n // deep merge for vals\n const conf = {\n values: clear ? alts.values : { ...dur.values, ...(alts.values || {}) },\n loc: dur.loc.clone(alts.loc),\n conversionAccuracy: alts.conversionAccuracy || dur.conversionAccuracy,\n matrix: alts.matrix || dur.matrix,\n };\n return new Duration(conf);\n}\n\nfunction durationToMillis(matrix, vals) {\n let sum = vals.milliseconds ?? 0;\n for (const unit of reverseUnits.slice(1)) {\n if (vals[unit]) {\n sum += vals[unit] * matrix[unit][\"milliseconds\"];\n }\n }\n return sum;\n}\n\n// NB: mutates parameters\nfunction normalizeValues(matrix, vals) {\n // the logic below assumes the overall value of the duration is positive\n // if this is not the case, factor is used to make it so\n const factor = durationToMillis(matrix, vals) < 0 ? -1 : 1;\n\n orderedUnits.reduceRight((previous, current) => {\n if (!isUndefined(vals[current])) {\n if (previous) {\n const previousVal = vals[previous] * factor;\n const conv = matrix[current][previous];\n\n // if (previousVal < 0):\n // lower order unit is negative (e.g. { years: 2, days: -2 })\n // normalize this by reducing the higher order unit by the appropriate amount\n // and increasing the lower order unit\n // this can never make the higher order unit negative, because this function only operates\n // on positive durations, so the amount of time represented by the lower order unit cannot\n // be larger than the higher order unit\n // else:\n // lower order unit is positive (e.g. { years: 2, days: 450 } or { years: -2, days: 450 })\n // in this case we attempt to convert as much as possible from the lower order unit into\n // the higher order one\n //\n // Math.floor takes care of both of these cases, rounding away from 0\n // if previousVal < 0 it makes the absolute value larger\n // if previousVal >= it makes the absolute value smaller\n const rollUp = Math.floor(previousVal / conv);\n vals[current] += rollUp * factor;\n vals[previous] -= rollUp * conv * factor;\n }\n return current;\n } else {\n return previous;\n }\n }, null);\n\n // try to convert any decimals into smaller units if possible\n // for example for { years: 2.5, days: 0, seconds: 0 } we want to get { years: 2, days: 182, hours: 12 }\n orderedUnits.reduce((previous, current) => {\n if (!isUndefined(vals[current])) {\n if (previous) {\n const fraction = vals[previous] % 1;\n vals[previous] -= fraction;\n vals[current] += fraction * matrix[previous][current];\n }\n return current;\n } else {\n return previous;\n }\n }, null);\n}\n\n// Remove all properties with a value of 0 from an object\nfunction removeZeroes(vals) {\n const newVals = {};\n for (const [key, value] of Object.entries(vals)) {\n if (value !== 0) {\n newVals[key] = value;\n }\n }\n return newVals;\n}\n\n/**\n * A Duration object represents a period of time, like \"2 months\" or \"1 day, 1 hour\". Conceptually, it's just a map of units to their quantities, accompanied by some additional configuration and methods for creating, parsing, interrogating, transforming, and formatting them. They can be used on their own or in conjunction with other Luxon types; for example, you can use {@link DateTime#plus} to add a Duration object to a DateTime, producing another DateTime.\n *\n * Here is a brief overview of commonly used methods and getters in Duration:\n *\n * * **Creation** To create a Duration, use {@link Duration.fromMillis}, {@link Duration.fromObject}, or {@link Duration.fromISO}.\n * * **Unit values** See the {@link Duration#years}, {@link Duration#months}, {@link Duration#weeks}, {@link Duration#days}, {@link Duration#hours}, {@link Duration#minutes}, {@link Duration#seconds}, {@link Duration#milliseconds} accessors.\n * * **Configuration** See {@link Duration#locale} and {@link Duration#numberingSystem} accessors.\n * * **Transformation** To create new Durations out of old ones use {@link Duration#plus}, {@link Duration#minus}, {@link Duration#normalize}, {@link Duration#set}, {@link Duration#reconfigure}, {@link Duration#shiftTo}, and {@link Duration#negate}.\n * * **Output** To convert the Duration into other representations, see {@link Duration#as}, {@link Duration#toISO}, {@link Duration#toFormat}, and {@link Duration#toJSON}\n *\n * There's are more methods documented below. In addition, for more information on subtler topics like internationalization and validity, see the external documentation.\n */\nexport default class Duration {\n /**\n * @private\n */\n constructor(config) {\n const accurate = config.conversionAccuracy === \"longterm\" || false;\n let matrix = accurate ? accurateMatrix : casualMatrix;\n\n if (config.matrix) {\n matrix = config.matrix;\n }\n\n /**\n * @access private\n */\n this.values = config.values;\n /**\n * @access private\n */\n this.loc = config.loc || Locale.create();\n /**\n * @access private\n */\n this.conversionAccuracy = accurate ? \"longterm\" : \"casual\";\n /**\n * @access private\n */\n this.invalid = config.invalid || null;\n /**\n * @access private\n */\n this.matrix = matrix;\n /**\n * @access private\n */\n this.isLuxonDuration = true;\n }\n\n /**\n * Create Duration from a number of milliseconds.\n * @param {number} count of milliseconds\n * @param {Object} opts - options for parsing\n * @param {string} [opts.locale='en-US'] - the locale to use\n * @param {string} opts.numberingSystem - the numbering system to use\n * @param {string} [opts.conversionAccuracy='casual'] - the conversion system to use\n * @return {Duration}\n */\n static fromMillis(count, opts) {\n return Duration.fromObject({ milliseconds: count }, opts);\n }\n\n /**\n * Create a Duration from a JavaScript object with keys like 'years' and 'hours'.\n * If this object is empty then a zero milliseconds duration is returned.\n * @param {Object} obj - the object to create the DateTime from\n * @param {number} obj.years\n * @param {number} obj.quarters\n * @param {number} obj.months\n * @param {number} obj.weeks\n * @param {number} obj.days\n * @param {number} obj.hours\n * @param {number} obj.minutes\n * @param {number} obj.seconds\n * @param {number} obj.milliseconds\n * @param {Object} [opts=[]] - options for creating this Duration\n * @param {string} [opts.locale='en-US'] - the locale to use\n * @param {string} opts.numberingSystem - the numbering system to use\n * @param {string} [opts.conversionAccuracy='casual'] - the preset conversion system to use\n * @param {string} [opts.matrix=Object] - the custom conversion system to use\n * @return {Duration}\n */\n static fromObject(obj, opts = {}) {\n if (obj == null || typeof obj !== \"object\") {\n throw new InvalidArgumentError(\n `Duration.fromObject: argument expected to be an object, got ${\n obj === null ? \"null\" : typeof obj\n }`\n );\n }\n\n return new Duration({\n values: normalizeObject(obj, Duration.normalizeUnit),\n loc: Locale.fromObject(opts),\n conversionAccuracy: opts.conversionAccuracy,\n matrix: opts.matrix,\n });\n }\n\n /**\n * Create a Duration from DurationLike.\n *\n * @param {Object | number | Duration} durationLike\n * One of:\n * - object with keys like 'years' and 'hours'.\n * - number representing milliseconds\n * - Duration instance\n * @return {Duration}\n */\n static fromDurationLike(durationLike) {\n if (isNumber(durationLike)) {\n return Duration.fromMillis(durationLike);\n } else if (Duration.isDuration(durationLike)) {\n return durationLike;\n } else if (typeof durationLike === \"object\") {\n return Duration.fromObject(durationLike);\n } else {\n throw new InvalidArgumentError(\n `Unknown duration argument ${durationLike} of type ${typeof durationLike}`\n );\n }\n }\n\n /**\n * Create a Duration from an ISO 8601 duration string.\n * @param {string} text - text to parse\n * @param {Object} opts - options for parsing\n * @param {string} [opts.locale='en-US'] - the locale to use\n * @param {string} opts.numberingSystem - the numbering system to use\n * @param {string} [opts.conversionAccuracy='casual'] - the preset conversion system to use\n * @param {string} [opts.matrix=Object] - the preset conversion system to use\n * @see https://en.wikipedia.org/wiki/ISO_8601#Durations\n * @example Duration.fromISO('P3Y6M1W4DT12H30M5S').toObject() //=> { years: 3, months: 6, weeks: 1, days: 4, hours: 12, minutes: 30, seconds: 5 }\n * @example Duration.fromISO('PT23H').toObject() //=> { hours: 23 }\n * @example Duration.fromISO('P5Y3M').toObject() //=> { years: 5, months: 3 }\n * @return {Duration}\n */\n static fromISO(text, opts) {\n const [parsed] = parseISODuration(text);\n if (parsed) {\n return Duration.fromObject(parsed, opts);\n } else {\n return Duration.invalid(\"unparsable\", `the input \"${text}\" can't be parsed as ISO 8601`);\n }\n }\n\n /**\n * Create a Duration from an ISO 8601 time string.\n * @param {string} text - text to parse\n * @param {Object} opts - options for parsing\n * @param {string} [opts.locale='en-US'] - the locale to use\n * @param {string} opts.numberingSystem - the numbering system to use\n * @param {string} [opts.conversionAccuracy='casual'] - the preset conversion system to use\n * @param {string} [opts.matrix=Object] - the conversion system to use\n * @see https://en.wikipedia.org/wiki/ISO_8601#Times\n * @example Duration.fromISOTime('11:22:33.444').toObject() //=> { hours: 11, minutes: 22, seconds: 33, milliseconds: 444 }\n * @example Duration.fromISOTime('11:00').toObject() //=> { hours: 11, minutes: 0, seconds: 0 }\n * @example Duration.fromISOTime('T11:00').toObject() //=> { hours: 11, minutes: 0, seconds: 0 }\n * @example Duration.fromISOTime('1100').toObject() //=> { hours: 11, minutes: 0, seconds: 0 }\n * @example Duration.fromISOTime('T1100').toObject() //=> { hours: 11, minutes: 0, seconds: 0 }\n * @return {Duration}\n */\n static fromISOTime(text, opts) {\n const [parsed] = parseISOTimeOnly(text);\n if (parsed) {\n return Duration.fromObject(parsed, opts);\n } else {\n return Duration.invalid(\"unparsable\", `the input \"${text}\" can't be parsed as ISO 8601`);\n }\n }\n\n /**\n * Create an invalid Duration.\n * @param {string} reason - simple string of why this datetime is invalid. Should not contain parameters or anything else data-dependent\n * @param {string} [explanation=null] - longer explanation, may include parameters and other useful debugging information\n * @return {Duration}\n */\n static invalid(reason, explanation = null) {\n if (!reason) {\n throw new InvalidArgumentError(\"need to specify a reason the Duration is invalid\");\n }\n\n const invalid = reason instanceof Invalid ? reason : new Invalid(reason, explanation);\n\n if (Settings.throwOnInvalid) {\n throw new InvalidDurationError(invalid);\n } else {\n return new Duration({ invalid });\n }\n }\n\n /**\n * @private\n */\n static normalizeUnit(unit) {\n const normalized = {\n year: \"years\",\n years: \"years\",\n quarter: \"quarters\",\n quarters: \"quarters\",\n month: \"months\",\n months: \"months\",\n week: \"weeks\",\n weeks: \"weeks\",\n day: \"days\",\n days: \"days\",\n hour: \"hours\",\n hours: \"hours\",\n minute: \"minutes\",\n minutes: \"minutes\",\n second: \"seconds\",\n seconds: \"seconds\",\n millisecond: \"milliseconds\",\n milliseconds: \"milliseconds\",\n }[unit ? unit.toLowerCase() : unit];\n\n if (!normalized) throw new InvalidUnitError(unit);\n\n return normalized;\n }\n\n /**\n * Check if an object is a Duration. Works across context boundaries\n * @param {object} o\n * @return {boolean}\n */\n static isDuration(o) {\n return (o && o.isLuxonDuration) || false;\n }\n\n /**\n * Get the locale of a Duration, such 'en-GB'\n * @type {string}\n */\n get locale() {\n return this.isValid ? this.loc.locale : null;\n }\n\n /**\n * Get the numbering system of a Duration, such 'beng'. The numbering system is used when formatting the Duration\n *\n * @type {string}\n */\n get numberingSystem() {\n return this.isValid ? this.loc.numberingSystem : null;\n }\n\n /**\n * Returns a string representation of this Duration formatted according to the specified format string. You may use these tokens:\n * * `S` for milliseconds\n * * `s` for seconds\n * * `m` for minutes\n * * `h` for hours\n * * `d` for days\n * * `w` for weeks\n * * `M` for months\n * * `y` for years\n * Notes:\n * * Add padding by repeating the token, e.g. \"yy\" pads the years to two digits, \"hhhh\" pads the hours out to four digits\n * * Tokens can be escaped by wrapping with single quotes.\n * * The duration will be converted to the set of units in the format string using {@link Duration#shiftTo} and the Durations's conversion accuracy setting.\n * @param {string} fmt - the format string\n * @param {Object} opts - options\n * @param {boolean} [opts.floor=true] - floor numerical values\n * @example Duration.fromObject({ years: 1, days: 6, seconds: 2 }).toFormat(\"y d s\") //=> \"1 6 2\"\n * @example Duration.fromObject({ years: 1, days: 6, seconds: 2 }).toFormat(\"yy dd sss\") //=> \"01 06 002\"\n * @example Duration.fromObject({ years: 1, days: 6, seconds: 2 }).toFormat(\"M S\") //=> \"12 518402000\"\n * @return {string}\n */\n toFormat(fmt, opts = {}) {\n // reverse-compat since 1.2; we always round down now, never up, and we do it by default\n const fmtOpts = {\n ...opts,\n floor: opts.round !== false && opts.floor !== false,\n };\n return this.isValid\n ? Formatter.create(this.loc, fmtOpts).formatDurationFromString(this, fmt)\n : INVALID;\n }\n\n /**\n * Returns a string representation of a Duration with all units included.\n * To modify its behavior, use `listStyle` and any Intl.NumberFormat option, though `unitDisplay` is especially relevant.\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat/NumberFormat#options\n * @param {Object} opts - Formatting options. Accepts the same keys as the options parameter of the native `Intl.NumberFormat` constructor, as well as `listStyle`.\n * @param {string} [opts.listStyle='narrow'] - How to format the merged list. Corresponds to the `style` property of the options parameter of the native `Intl.ListFormat` constructor.\n * @example\n * ```js\n * var dur = Duration.fromObject({ days: 1, hours: 5, minutes: 6 })\n * dur.toHuman() //=> '1 day, 5 hours, 6 minutes'\n * dur.toHuman({ listStyle: \"long\" }) //=> '1 day, 5 hours, and 6 minutes'\n * dur.toHuman({ unitDisplay: \"short\" }) //=> '1 day, 5 hr, 6 min'\n * ```\n */\n toHuman(opts = {}) {\n if (!this.isValid) return INVALID;\n\n const l = orderedUnits\n .map((unit) => {\n const val = this.values[unit];\n if (isUndefined(val)) {\n return null;\n }\n return this.loc\n .numberFormatter({ style: \"unit\", unitDisplay: \"long\", ...opts, unit: unit.slice(0, -1) })\n .format(val);\n })\n .filter((n) => n);\n\n return this.loc\n .listFormatter({ type: \"conjunction\", style: opts.listStyle || \"narrow\", ...opts })\n .format(l);\n }\n\n /**\n * Returns a JavaScript object with this Duration's values.\n * @example Duration.fromObject({ years: 1, days: 6, seconds: 2 }).toObject() //=> { years: 1, days: 6, seconds: 2 }\n * @return {Object}\n */\n toObject() {\n if (!this.isValid) return {};\n return { ...this.values };\n }\n\n /**\n * Returns an ISO 8601-compliant string representation of this Duration.\n * @see https://en.wikipedia.org/wiki/ISO_8601#Durations\n * @example Duration.fromObject({ years: 3, seconds: 45 }).toISO() //=> 'P3YT45S'\n * @example Duration.fromObject({ months: 4, seconds: 45 }).toISO() //=> 'P4MT45S'\n * @example Duration.fromObject({ months: 5 }).toISO() //=> 'P5M'\n * @example Duration.fromObject({ minutes: 5 }).toISO() //=> 'PT5M'\n * @example Duration.fromObject({ milliseconds: 6 }).toISO() //=> 'PT0.006S'\n * @return {string}\n */\n toISO() {\n // we could use the formatter, but this is an easier way to get the minimum string\n if (!this.isValid) return null;\n\n let s = \"P\";\n if (this.years !== 0) s += this.years + \"Y\";\n if (this.months !== 0 || this.quarters !== 0) s += this.months + this.quarters * 3 + \"M\";\n if (this.weeks !== 0) s += this.weeks + \"W\";\n if (this.days !== 0) s += this.days + \"D\";\n if (this.hours !== 0 || this.minutes !== 0 || this.seconds !== 0 || this.milliseconds !== 0)\n s += \"T\";\n if (this.hours !== 0) s += this.hours + \"H\";\n if (this.minutes !== 0) s += this.minutes + \"M\";\n if (this.seconds !== 0 || this.milliseconds !== 0)\n // this will handle \"floating point madness\" by removing extra decimal places\n // https://stackoverflow.com/questions/588004/is-floating-point-math-broken\n s += roundTo(this.seconds + this.milliseconds / 1000, 3) + \"S\";\n if (s === \"P\") s += \"T0S\";\n return s;\n }\n\n /**\n * Returns an ISO 8601-compliant string representation of this Duration, formatted as a time of day.\n * Note that this will return null if the duration is invalid, negative, or equal to or greater than 24 hours.\n * @see https://en.wikipedia.org/wiki/ISO_8601#Times\n * @param {Object} opts - options\n * @param {boolean} [opts.suppressMilliseconds=false] - exclude milliseconds from the format if they're 0\n * @param {boolean} [opts.suppressSeconds=false] - exclude seconds from the format if they're 0\n * @param {boolean} [opts.includePrefix=false] - include the `T` prefix\n * @param {string} [opts.format='extended'] - choose between the basic and extended format\n * @example Duration.fromObject({ hours: 11 }).toISOTime() //=> '11:00:00.000'\n * @example Duration.fromObject({ hours: 11 }).toISOTime({ suppressMilliseconds: true }) //=> '11:00:00'\n * @example Duration.fromObject({ hours: 11 }).toISOTime({ suppressSeconds: true }) //=> '11:00'\n * @example Duration.fromObject({ hours: 11 }).toISOTime({ includePrefix: true }) //=> 'T11:00:00.000'\n * @example Duration.fromObject({ hours: 11 }).toISOTime({ format: 'basic' }) //=> '110000.000'\n * @return {string}\n */\n toISOTime(opts = {}) {\n if (!this.isValid) return null;\n\n const millis = this.toMillis();\n if (millis < 0 || millis >= 86400000) return null;\n\n opts = {\n suppressMilliseconds: false,\n suppressSeconds: false,\n includePrefix: false,\n format: \"extended\",\n ...opts,\n includeOffset: false,\n };\n\n const dateTime = DateTime.fromMillis(millis, { zone: \"UTC\" });\n return dateTime.toISOTime(opts);\n }\n\n /**\n * Returns an ISO 8601 representation of this Duration appropriate for use in JSON.\n * @return {string}\n */\n toJSON() {\n return this.toISO();\n }\n\n /**\n * Returns an ISO 8601 representation of this Duration appropriate for use in debugging.\n * @return {string}\n */\n toString() {\n return this.toISO();\n }\n\n /**\n * Returns a string representation of this Duration appropriate for the REPL.\n * @return {string}\n */\n [Symbol.for(\"nodejs.util.inspect.custom\")]() {\n if (this.isValid) {\n return `Duration { values: ${JSON.stringify(this.values)} }`;\n } else {\n return `Duration { Invalid, reason: ${this.invalidReason} }`;\n }\n }\n\n /**\n * Returns an milliseconds value of this Duration.\n * @return {number}\n */\n toMillis() {\n if (!this.isValid) return NaN;\n\n return durationToMillis(this.matrix, this.values);\n }\n\n /**\n * Returns an milliseconds value of this Duration. Alias of {@link toMillis}\n * @return {number}\n */\n valueOf() {\n return this.toMillis();\n }\n\n /**\n * Make this Duration longer by the specified amount. Return a newly-constructed Duration.\n * @param {Duration|Object|number} duration - The amount to add. Either a Luxon Duration, a number of milliseconds, the object argument to Duration.fromObject()\n * @return {Duration}\n */\n plus(duration) {\n if (!this.isValid) return this;\n\n const dur = Duration.fromDurationLike(duration),\n result = {};\n\n for (const k of orderedUnits) {\n if (hasOwnProperty(dur.values, k) || hasOwnProperty(this.values, k)) {\n result[k] = dur.get(k) + this.get(k);\n }\n }\n\n return clone(this, { values: result }, true);\n }\n\n /**\n * Make this Duration shorter by the specified amount. Return a newly-constructed Duration.\n * @param {Duration|Object|number} duration - The amount to subtract. Either a Luxon Duration, a number of milliseconds, the object argument to Duration.fromObject()\n * @return {Duration}\n */\n minus(duration) {\n if (!this.isValid) return this;\n\n const dur = Duration.fromDurationLike(duration);\n return this.plus(dur.negate());\n }\n\n /**\n * Scale this Duration by the specified amount. Return a newly-constructed Duration.\n * @param {function} fn - The function to apply to each unit. Arity is 1 or 2: the value of the unit and, optionally, the unit name. Must return a number.\n * @example Duration.fromObject({ hours: 1, minutes: 30 }).mapUnits(x => x * 2) //=> { hours: 2, minutes: 60 }\n * @example Duration.fromObject({ hours: 1, minutes: 30 }).mapUnits((x, u) => u === \"hours\" ? x * 2 : x) //=> { hours: 2, minutes: 30 }\n * @return {Duration}\n */\n mapUnits(fn) {\n if (!this.isValid) return this;\n const result = {};\n for (const k of Object.keys(this.values)) {\n result[k] = asNumber(fn(this.values[k], k));\n }\n return clone(this, { values: result }, true);\n }\n\n /**\n * Get the value of unit.\n * @param {string} unit - a unit such as 'minute' or 'day'\n * @example Duration.fromObject({years: 2, days: 3}).get('years') //=> 2\n * @example Duration.fromObject({years: 2, days: 3}).get('months') //=> 0\n * @example Duration.fromObject({years: 2, days: 3}).get('days') //=> 3\n * @return {number}\n */\n get(unit) {\n return this[Duration.normalizeUnit(unit)];\n }\n\n /**\n * \"Set\" the values of specified units. Return a newly-constructed Duration.\n * @param {Object} values - a mapping of units to numbers\n * @example dur.set({ years: 2017 })\n * @example dur.set({ hours: 8, minutes: 30 })\n * @return {Duration}\n */\n set(values) {\n if (!this.isValid) return this;\n\n const mixed = { ...this.values, ...normalizeObject(values, Duration.normalizeUnit) };\n return clone(this, { values: mixed });\n }\n\n /**\n * \"Set\" the locale and/or numberingSystem. Returns a newly-constructed Duration.\n * @example dur.reconfigure({ locale: 'en-GB' })\n * @return {Duration}\n */\n reconfigure({ locale, numberingSystem, conversionAccuracy, matrix } = {}) {\n const loc = this.loc.clone({ locale, numberingSystem });\n const opts = { loc, matrix, conversionAccuracy };\n return clone(this, opts);\n }\n\n /**\n * Return the length of the duration in the specified unit.\n * @param {string} unit - a unit such as 'minutes' or 'days'\n * @example Duration.fromObject({years: 1}).as('days') //=> 365\n * @example Duration.fromObject({years: 1}).as('months') //=> 12\n * @example Duration.fromObject({hours: 60}).as('days') //=> 2.5\n * @return {number}\n */\n as(unit) {\n return this.isValid ? this.shiftTo(unit).get(unit) : NaN;\n }\n\n /**\n * Reduce this Duration to its canonical representation in its current units.\n * Assuming the overall value of the Duration is positive, this means:\n * - excessive values for lower-order units are converted to higher-order units (if possible, see first and second example)\n * - negative lower-order units are converted to higher order units (there must be such a higher order unit, otherwise\n * the overall value would be negative, see third example)\n * - fractional values for higher-order units are converted to lower-order units (if possible, see fourth example)\n *\n * If the overall value is negative, the result of this method is equivalent to `this.negate().normalize().negate()`.\n * @example Duration.fromObject({ years: 2, days: 5000 }).normalize().toObject() //=> { years: 15, days: 255 }\n * @example Duration.fromObject({ days: 5000 }).normalize().toObject() //=> { days: 5000 }\n * @example Duration.fromObject({ hours: 12, minutes: -45 }).normalize().toObject() //=> { hours: 11, minutes: 15 }\n * @example Duration.fromObject({ years: 2.5, days: 0, hours: 0 }).normalize().toObject() //=> { years: 2, days: 182, hours: 12 }\n * @return {Duration}\n */\n normalize() {\n if (!this.isValid) return this;\n const vals = this.toObject();\n normalizeValues(this.matrix, vals);\n return clone(this, { values: vals }, true);\n }\n\n /**\n * Rescale units to its largest representation\n * @example Duration.fromObject({ milliseconds: 90000 }).rescale().toObject() //=> { minutes: 1, seconds: 30 }\n * @return {Duration}\n */\n rescale() {\n if (!this.isValid) return this;\n const vals = removeZeroes(this.normalize().shiftToAll().toObject());\n return clone(this, { values: vals }, true);\n }\n\n /**\n * Convert this Duration into its representation in a different set of units.\n * @example Duration.fromObject({ hours: 1, seconds: 30 }).shiftTo('minutes', 'milliseconds').toObject() //=> { minutes: 60, milliseconds: 30000 }\n * @return {Duration}\n */\n shiftTo(...units) {\n if (!this.isValid) return this;\n\n if (units.length === 0) {\n return this;\n }\n\n units = units.map((u) => Duration.normalizeUnit(u));\n\n const built = {},\n accumulated = {},\n vals = this.toObject();\n let lastUnit;\n\n for (const k of orderedUnits) {\n if (units.indexOf(k) >= 0) {\n lastUnit = k;\n\n let own = 0;\n\n // anything we haven't boiled down yet should get boiled to this unit\n for (const ak in accumulated) {\n own += this.matrix[ak][k] * accumulated[ak];\n accumulated[ak] = 0;\n }\n\n // plus anything that's already in this unit\n if (isNumber(vals[k])) {\n own += vals[k];\n }\n\n // only keep the integer part for now in the hopes of putting any decimal part\n // into a smaller unit later\n const i = Math.trunc(own);\n built[k] = i;\n accumulated[k] = (own * 1000 - i * 1000) / 1000;\n\n // otherwise, keep it in the wings to boil it later\n } else if (isNumber(vals[k])) {\n accumulated[k] = vals[k];\n }\n }\n\n // anything leftover becomes the decimal for the last unit\n // lastUnit must be defined since units is not empty\n for (const key in accumulated) {\n if (accumulated[key] !== 0) {\n built[lastUnit] +=\n key === lastUnit ? accumulated[key] : accumulated[key] / this.matrix[lastUnit][key];\n }\n }\n\n normalizeValues(this.matrix, built);\n return clone(this, { values: built }, true);\n }\n\n /**\n * Shift this Duration to all available units.\n * Same as shiftTo(\"years\", \"months\", \"weeks\", \"days\", \"hours\", \"minutes\", \"seconds\", \"milliseconds\")\n * @return {Duration}\n */\n shiftToAll() {\n if (!this.isValid) return this;\n return this.shiftTo(\n \"years\",\n \"months\",\n \"weeks\",\n \"days\",\n \"hours\",\n \"minutes\",\n \"seconds\",\n \"milliseconds\"\n );\n }\n\n /**\n * Return the negative of this Duration.\n * @example Duration.fromObject({ hours: 1, seconds: 30 }).negate().toObject() //=> { hours: -1, seconds: -30 }\n * @return {Duration}\n */\n negate() {\n if (!this.isValid) return this;\n const negated = {};\n for (const k of Object.keys(this.values)) {\n negated[k] = this.values[k] === 0 ? 0 : -this.values[k];\n }\n return clone(this, { values: negated }, true);\n }\n\n /**\n * Get the years.\n * @type {number}\n */\n get years() {\n return this.isValid ? this.values.years || 0 : NaN;\n }\n\n /**\n * Get the quarters.\n * @type {number}\n */\n get quarters() {\n return this.isValid ? this.values.quarters || 0 : NaN;\n }\n\n /**\n * Get the months.\n * @type {number}\n */\n get months() {\n return this.isValid ? this.values.months || 0 : NaN;\n }\n\n /**\n * Get the weeks\n * @type {number}\n */\n get weeks() {\n return this.isValid ? this.values.weeks || 0 : NaN;\n }\n\n /**\n * Get the days.\n * @type {number}\n */\n get days() {\n return this.isValid ? this.values.days || 0 : NaN;\n }\n\n /**\n * Get the hours.\n * @type {number}\n */\n get hours() {\n return this.isValid ? this.values.hours || 0 : NaN;\n }\n\n /**\n * Get the minutes.\n * @type {number}\n */\n get minutes() {\n return this.isValid ? this.values.minutes || 0 : NaN;\n }\n\n /**\n * Get the seconds.\n * @return {number}\n */\n get seconds() {\n return this.isValid ? this.values.seconds || 0 : NaN;\n }\n\n /**\n * Get the milliseconds.\n * @return {number}\n */\n get milliseconds() {\n return this.isValid ? this.values.milliseconds || 0 : NaN;\n }\n\n /**\n * Returns whether the Duration is invalid. Invalid durations are returned by diff operations\n * on invalid DateTimes or Intervals.\n * @return {boolean}\n */\n get isValid() {\n return this.invalid === null;\n }\n\n /**\n * Returns an error code if this Duration became invalid, or null if the Duration is valid\n * @return {string}\n */\n get invalidReason() {\n return this.invalid ? this.invalid.reason : null;\n }\n\n /**\n * Returns an explanation of why this Duration became invalid, or null if the Duration is valid\n * @type {string}\n */\n get invalidExplanation() {\n return this.invalid ? this.invalid.explanation : null;\n }\n\n /**\n * Equality check\n * Two Durations are equal iff they have the same units and the same values for each unit.\n * @param {Duration} other\n * @return {boolean}\n */\n equals(other) {\n if (!this.isValid || !other.isValid) {\n return false;\n }\n\n if (!this.loc.equals(other.loc)) {\n return false;\n }\n\n function eq(v1, v2) {\n // Consider 0 and undefined as equal\n if (v1 === undefined || v1 === 0) return v2 === undefined || v2 === 0;\n return v1 === v2;\n }\n\n for (const u of orderedUnits) {\n if (!eq(this.values[u], other.values[u])) {\n return false;\n }\n }\n return true;\n }\n}\n","import DateTime, { friendlyDateTime } from \"./datetime.js\";\nimport Duration from \"./duration.js\";\nimport Settings from \"./settings.js\";\nimport { InvalidArgumentError, InvalidIntervalError } from \"./errors.js\";\nimport Invalid from \"./impl/invalid.js\";\nimport Formatter from \"./impl/formatter.js\";\nimport * as Formats from \"./impl/formats.js\";\n\nconst INVALID = \"Invalid Interval\";\n\n// checks if the start is equal to or before the end\nfunction validateStartEnd(start, end) {\n if (!start || !start.isValid) {\n return Interval.invalid(\"missing or invalid start\");\n } else if (!end || !end.isValid) {\n return Interval.invalid(\"missing or invalid end\");\n } else if (end < start) {\n return Interval.invalid(\n \"end before start\",\n `The end of an interval must be after its start, but you had start=${start.toISO()} and end=${end.toISO()}`\n );\n } else {\n return null;\n }\n}\n\n/**\n * An Interval object represents a half-open interval of time, where each endpoint is a {@link DateTime}. Conceptually, it's a container for those two endpoints, accompanied by methods for creating, parsing, interrogating, comparing, transforming, and formatting them.\n *\n * Here is a brief overview of the most commonly used methods and getters in Interval:\n *\n * * **Creation** To create an Interval, use {@link Interval.fromDateTimes}, {@link Interval.after}, {@link Interval.before}, or {@link Interval.fromISO}.\n * * **Accessors** Use {@link Interval#start} and {@link Interval#end} to get the start and end.\n * * **Interrogation** To analyze the Interval, use {@link Interval#count}, {@link Interval#length}, {@link Interval#hasSame}, {@link Interval#contains}, {@link Interval#isAfter}, or {@link Interval#isBefore}.\n * * **Transformation** To create other Intervals out of this one, use {@link Interval#set}, {@link Interval#splitAt}, {@link Interval#splitBy}, {@link Interval#divideEqually}, {@link Interval.merge}, {@link Interval.xor}, {@link Interval#union}, {@link Interval#intersection}, or {@link Interval#difference}.\n * * **Comparison** To compare this Interval to another one, use {@link Interval#equals}, {@link Interval#overlaps}, {@link Interval#abutsStart}, {@link Interval#abutsEnd}, {@link Interval#engulfs}\n * * **Output** To convert the Interval into other representations, see {@link Interval#toString}, {@link Interval#toLocaleString}, {@link Interval#toISO}, {@link Interval#toISODate}, {@link Interval#toISOTime}, {@link Interval#toFormat}, and {@link Interval#toDuration}.\n */\nexport default class Interval {\n /**\n * @private\n */\n constructor(config) {\n /**\n * @access private\n */\n this.s = config.start;\n /**\n * @access private\n */\n this.e = config.end;\n /**\n * @access private\n */\n this.invalid = config.invalid || null;\n /**\n * @access private\n */\n this.isLuxonInterval = true;\n }\n\n /**\n * Create an invalid Interval.\n * @param {string} reason - simple string of why this Interval is invalid. Should not contain parameters or anything else data-dependent\n * @param {string} [explanation=null] - longer explanation, may include parameters and other useful debugging information\n * @return {Interval}\n */\n static invalid(reason, explanation = null) {\n if (!reason) {\n throw new InvalidArgumentError(\"need to specify a reason the Interval is invalid\");\n }\n\n const invalid = reason instanceof Invalid ? reason : new Invalid(reason, explanation);\n\n if (Settings.throwOnInvalid) {\n throw new InvalidIntervalError(invalid);\n } else {\n return new Interval({ invalid });\n }\n }\n\n /**\n * Create an Interval from a start DateTime and an end DateTime. Inclusive of the start but not the end.\n * @param {DateTime|Date|Object} start\n * @param {DateTime|Date|Object} end\n * @return {Interval}\n */\n static fromDateTimes(start, end) {\n const builtStart = friendlyDateTime(start),\n builtEnd = friendlyDateTime(end);\n\n const validateError = validateStartEnd(builtStart, builtEnd);\n\n if (validateError == null) {\n return new Interval({\n start: builtStart,\n end: builtEnd,\n });\n } else {\n return validateError;\n }\n }\n\n /**\n * Create an Interval from a start DateTime and a Duration to extend to.\n * @param {DateTime|Date|Object} start\n * @param {Duration|Object|number} duration - the length of the Interval.\n * @return {Interval}\n */\n static after(start, duration) {\n const dur = Duration.fromDurationLike(duration),\n dt = friendlyDateTime(start);\n return Interval.fromDateTimes(dt, dt.plus(dur));\n }\n\n /**\n * Create an Interval from an end DateTime and a Duration to extend backwards to.\n * @param {DateTime|Date|Object} end\n * @param {Duration|Object|number} duration - the length of the Interval.\n * @return {Interval}\n */\n static before(end, duration) {\n const dur = Duration.fromDurationLike(duration),\n dt = friendlyDateTime(end);\n return Interval.fromDateTimes(dt.minus(dur), dt);\n }\n\n /**\n * Create an Interval from an ISO 8601 string.\n * Accepts `/`, `/`, and `/` formats.\n * @param {string} text - the ISO string to parse\n * @param {Object} [opts] - options to pass {@link DateTime#fromISO} and optionally {@link Duration#fromISO}\n * @see https://en.wikipedia.org/wiki/ISO_8601#Time_intervals\n * @return {Interval}\n */\n static fromISO(text, opts) {\n const [s, e] = (text || \"\").split(\"/\", 2);\n if (s && e) {\n let start, startIsValid;\n try {\n start = DateTime.fromISO(s, opts);\n startIsValid = start.isValid;\n } catch (e) {\n startIsValid = false;\n }\n\n let end, endIsValid;\n try {\n end = DateTime.fromISO(e, opts);\n endIsValid = end.isValid;\n } catch (e) {\n endIsValid = false;\n }\n\n if (startIsValid && endIsValid) {\n return Interval.fromDateTimes(start, end);\n }\n\n if (startIsValid) {\n const dur = Duration.fromISO(e, opts);\n if (dur.isValid) {\n return Interval.after(start, dur);\n }\n } else if (endIsValid) {\n const dur = Duration.fromISO(s, opts);\n if (dur.isValid) {\n return Interval.before(end, dur);\n }\n }\n }\n return Interval.invalid(\"unparsable\", `the input \"${text}\" can't be parsed as ISO 8601`);\n }\n\n /**\n * Check if an object is an Interval. Works across context boundaries\n * @param {object} o\n * @return {boolean}\n */\n static isInterval(o) {\n return (o && o.isLuxonInterval) || false;\n }\n\n /**\n * Returns the start of the Interval\n * @type {DateTime}\n */\n get start() {\n return this.isValid ? this.s : null;\n }\n\n /**\n * Returns the end of the Interval\n * @type {DateTime}\n */\n get end() {\n return this.isValid ? this.e : null;\n }\n\n /**\n * Returns whether this Interval's end is at least its start, meaning that the Interval isn't 'backwards'.\n * @type {boolean}\n */\n get isValid() {\n return this.invalidReason === null;\n }\n\n /**\n * Returns an error code if this Interval is invalid, or null if the Interval is valid\n * @type {string}\n */\n get invalidReason() {\n return this.invalid ? this.invalid.reason : null;\n }\n\n /**\n * Returns an explanation of why this Interval became invalid, or null if the Interval is valid\n * @type {string}\n */\n get invalidExplanation() {\n return this.invalid ? this.invalid.explanation : null;\n }\n\n /**\n * Returns the length of the Interval in the specified unit.\n * @param {string} unit - the unit (such as 'hours' or 'days') to return the length in.\n * @return {number}\n */\n length(unit = \"milliseconds\") {\n return this.isValid ? this.toDuration(...[unit]).get(unit) : NaN;\n }\n\n /**\n * Returns the count of minutes, hours, days, months, or years included in the Interval, even in part.\n * Unlike {@link Interval#length} this counts sections of the calendar, not periods of time, e.g. specifying 'day'\n * asks 'what dates are included in this interval?', not 'how many days long is this interval?'\n * @param {string} [unit='milliseconds'] - the unit of time to count.\n * @param {Object} opts - options\n * @param {boolean} [opts.useLocaleWeeks=false] - If true, use weeks based on the locale, i.e. use the locale-dependent start of the week; this operation will always use the locale of the start DateTime\n * @return {number}\n */\n count(unit = \"milliseconds\", opts) {\n if (!this.isValid) return NaN;\n const start = this.start.startOf(unit, opts);\n let end;\n if (opts?.useLocaleWeeks) {\n end = this.end.reconfigure({ locale: start.locale });\n } else {\n end = this.end;\n }\n end = end.startOf(unit, opts);\n return Math.floor(end.diff(start, unit).get(unit)) + (end.valueOf() !== this.end.valueOf());\n }\n\n /**\n * Returns whether this Interval's start and end are both in the same unit of time\n * @param {string} unit - the unit of time to check sameness on\n * @return {boolean}\n */\n hasSame(unit) {\n return this.isValid ? this.isEmpty() || this.e.minus(1).hasSame(this.s, unit) : false;\n }\n\n /**\n * Return whether this Interval has the same start and end DateTimes.\n * @return {boolean}\n */\n isEmpty() {\n return this.s.valueOf() === this.e.valueOf();\n }\n\n /**\n * Return whether this Interval's start is after the specified DateTime.\n * @param {DateTime} dateTime\n * @return {boolean}\n */\n isAfter(dateTime) {\n if (!this.isValid) return false;\n return this.s > dateTime;\n }\n\n /**\n * Return whether this Interval's end is before the specified DateTime.\n * @param {DateTime} dateTime\n * @return {boolean}\n */\n isBefore(dateTime) {\n if (!this.isValid) return false;\n return this.e <= dateTime;\n }\n\n /**\n * Return whether this Interval contains the specified DateTime.\n * @param {DateTime} dateTime\n * @return {boolean}\n */\n contains(dateTime) {\n if (!this.isValid) return false;\n return this.s <= dateTime && this.e > dateTime;\n }\n\n /**\n * \"Sets\" the start and/or end dates. Returns a newly-constructed Interval.\n * @param {Object} values - the values to set\n * @param {DateTime} values.start - the starting DateTime\n * @param {DateTime} values.end - the ending DateTime\n * @return {Interval}\n */\n set({ start, end } = {}) {\n if (!this.isValid) return this;\n return Interval.fromDateTimes(start || this.s, end || this.e);\n }\n\n /**\n * Split this Interval at each of the specified DateTimes\n * @param {...DateTime} dateTimes - the unit of time to count.\n * @return {Array}\n */\n splitAt(...dateTimes) {\n if (!this.isValid) return [];\n const sorted = dateTimes\n .map(friendlyDateTime)\n .filter((d) => this.contains(d))\n .sort((a, b) => a.toMillis() - b.toMillis()),\n results = [];\n let { s } = this,\n i = 0;\n\n while (s < this.e) {\n const added = sorted[i] || this.e,\n next = +added > +this.e ? this.e : added;\n results.push(Interval.fromDateTimes(s, next));\n s = next;\n i += 1;\n }\n\n return results;\n }\n\n /**\n * Split this Interval into smaller Intervals, each of the specified length.\n * Left over time is grouped into a smaller interval\n * @param {Duration|Object|number} duration - The length of each resulting interval.\n * @return {Array}\n */\n splitBy(duration) {\n const dur = Duration.fromDurationLike(duration);\n\n if (!this.isValid || !dur.isValid || dur.as(\"milliseconds\") === 0) {\n return [];\n }\n\n let { s } = this,\n idx = 1,\n next;\n\n const results = [];\n while (s < this.e) {\n const added = this.start.plus(dur.mapUnits((x) => x * idx));\n next = +added > +this.e ? this.e : added;\n results.push(Interval.fromDateTimes(s, next));\n s = next;\n idx += 1;\n }\n\n return results;\n }\n\n /**\n * Split this Interval into the specified number of smaller intervals.\n * @param {number} numberOfParts - The number of Intervals to divide the Interval into.\n * @return {Array}\n */\n divideEqually(numberOfParts) {\n if (!this.isValid) return [];\n return this.splitBy(this.length() / numberOfParts).slice(0, numberOfParts);\n }\n\n /**\n * Return whether this Interval overlaps with the specified Interval\n * @param {Interval} other\n * @return {boolean}\n */\n overlaps(other) {\n return this.e > other.s && this.s < other.e;\n }\n\n /**\n * Return whether this Interval's end is adjacent to the specified Interval's start.\n * @param {Interval} other\n * @return {boolean}\n */\n abutsStart(other) {\n if (!this.isValid) return false;\n return +this.e === +other.s;\n }\n\n /**\n * Return whether this Interval's start is adjacent to the specified Interval's end.\n * @param {Interval} other\n * @return {boolean}\n */\n abutsEnd(other) {\n if (!this.isValid) return false;\n return +other.e === +this.s;\n }\n\n /**\n * Return whether this Interval engulfs the start and end of the specified Interval.\n * @param {Interval} other\n * @return {boolean}\n */\n engulfs(other) {\n if (!this.isValid) return false;\n return this.s <= other.s && this.e >= other.e;\n }\n\n /**\n * Return whether this Interval has the same start and end as the specified Interval.\n * @param {Interval} other\n * @return {boolean}\n */\n equals(other) {\n if (!this.isValid || !other.isValid) {\n return false;\n }\n\n return this.s.equals(other.s) && this.e.equals(other.e);\n }\n\n /**\n * Return an Interval representing the intersection of this Interval and the specified Interval.\n * Specifically, the resulting Interval has the maximum start time and the minimum end time of the two Intervals.\n * Returns null if the intersection is empty, meaning, the intervals don't intersect.\n * @param {Interval} other\n * @return {Interval}\n */\n intersection(other) {\n if (!this.isValid) return this;\n const s = this.s > other.s ? this.s : other.s,\n e = this.e < other.e ? this.e : other.e;\n\n if (s >= e) {\n return null;\n } else {\n return Interval.fromDateTimes(s, e);\n }\n }\n\n /**\n * Return an Interval representing the union of this Interval and the specified Interval.\n * Specifically, the resulting Interval has the minimum start time and the maximum end time of the two Intervals.\n * @param {Interval} other\n * @return {Interval}\n */\n union(other) {\n if (!this.isValid) return this;\n const s = this.s < other.s ? this.s : other.s,\n e = this.e > other.e ? this.e : other.e;\n return Interval.fromDateTimes(s, e);\n }\n\n /**\n * Merge an array of Intervals into a equivalent minimal set of Intervals.\n * Combines overlapping and adjacent Intervals.\n * @param {Array} intervals\n * @return {Array}\n */\n static merge(intervals) {\n const [found, final] = intervals\n .sort((a, b) => a.s - b.s)\n .reduce(\n ([sofar, current], item) => {\n if (!current) {\n return [sofar, item];\n } else if (current.overlaps(item) || current.abutsStart(item)) {\n return [sofar, current.union(item)];\n } else {\n return [sofar.concat([current]), item];\n }\n },\n [[], null]\n );\n if (final) {\n found.push(final);\n }\n return found;\n }\n\n /**\n * Return an array of Intervals representing the spans of time that only appear in one of the specified Intervals.\n * @param {Array} intervals\n * @return {Array}\n */\n static xor(intervals) {\n let start = null,\n currentCount = 0;\n const results = [],\n ends = intervals.map((i) => [\n { time: i.s, type: \"s\" },\n { time: i.e, type: \"e\" },\n ]),\n flattened = Array.prototype.concat(...ends),\n arr = flattened.sort((a, b) => a.time - b.time);\n\n for (const i of arr) {\n currentCount += i.type === \"s\" ? 1 : -1;\n\n if (currentCount === 1) {\n start = i.time;\n } else {\n if (start && +start !== +i.time) {\n results.push(Interval.fromDateTimes(start, i.time));\n }\n\n start = null;\n }\n }\n\n return Interval.merge(results);\n }\n\n /**\n * Return an Interval representing the span of time in this Interval that doesn't overlap with any of the specified Intervals.\n * @param {...Interval} intervals\n * @return {Array}\n */\n difference(...intervals) {\n return Interval.xor([this].concat(intervals))\n .map((i) => this.intersection(i))\n .filter((i) => i && !i.isEmpty());\n }\n\n /**\n * Returns a string representation of this Interval appropriate for debugging.\n * @return {string}\n */\n toString() {\n if (!this.isValid) return INVALID;\n return `[${this.s.toISO()} – ${this.e.toISO()})`;\n }\n\n /**\n * Returns a string representation of this Interval appropriate for the REPL.\n * @return {string}\n */\n [Symbol.for(\"nodejs.util.inspect.custom\")]() {\n if (this.isValid) {\n return `Interval { start: ${this.s.toISO()}, end: ${this.e.toISO()} }`;\n } else {\n return `Interval { Invalid, reason: ${this.invalidReason} }`;\n }\n }\n\n /**\n * Returns a localized string representing this Interval. Accepts the same options as the\n * Intl.DateTimeFormat constructor and any presets defined by Luxon, such as\n * {@link DateTime.DATE_FULL} or {@link DateTime.TIME_SIMPLE}. The exact behavior of this method\n * is browser-specific, but in general it will return an appropriate representation of the\n * Interval in the assigned locale. Defaults to the system's locale if no locale has been\n * specified.\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat\n * @param {Object} [formatOpts=DateTime.DATE_SHORT] - Either a DateTime preset or\n * Intl.DateTimeFormat constructor options.\n * @param {Object} opts - Options to override the configuration of the start DateTime.\n * @example Interval.fromISO('2022-11-07T09:00Z/2022-11-08T09:00Z').toLocaleString(); //=> 11/7/2022 – 11/8/2022\n * @example Interval.fromISO('2022-11-07T09:00Z/2022-11-08T09:00Z').toLocaleString(DateTime.DATE_FULL); //=> November 7 – 8, 2022\n * @example Interval.fromISO('2022-11-07T09:00Z/2022-11-08T09:00Z').toLocaleString(DateTime.DATE_FULL, { locale: 'fr-FR' }); //=> 7–8 novembre 2022\n * @example Interval.fromISO('2022-11-07T17:00Z/2022-11-07T19:00Z').toLocaleString(DateTime.TIME_SIMPLE); //=> 6:00 – 8:00 PM\n * @example Interval.fromISO('2022-11-07T17:00Z/2022-11-07T19:00Z').toLocaleString({ weekday: 'short', month: 'short', day: '2-digit', hour: '2-digit', minute: '2-digit' }); //=> Mon, Nov 07, 6:00 – 8:00 p\n * @return {string}\n */\n toLocaleString(formatOpts = Formats.DATE_SHORT, opts = {}) {\n return this.isValid\n ? Formatter.create(this.s.loc.clone(opts), formatOpts).formatInterval(this)\n : INVALID;\n }\n\n /**\n * Returns an ISO 8601-compliant string representation of this Interval.\n * @see https://en.wikipedia.org/wiki/ISO_8601#Time_intervals\n * @param {Object} opts - The same options as {@link DateTime#toISO}\n * @return {string}\n */\n toISO(opts) {\n if (!this.isValid) return INVALID;\n return `${this.s.toISO(opts)}/${this.e.toISO(opts)}`;\n }\n\n /**\n * Returns an ISO 8601-compliant string representation of date of this Interval.\n * The time components are ignored.\n * @see https://en.wikipedia.org/wiki/ISO_8601#Time_intervals\n * @return {string}\n */\n toISODate() {\n if (!this.isValid) return INVALID;\n return `${this.s.toISODate()}/${this.e.toISODate()}`;\n }\n\n /**\n * Returns an ISO 8601-compliant string representation of time of this Interval.\n * The date components are ignored.\n * @see https://en.wikipedia.org/wiki/ISO_8601#Time_intervals\n * @param {Object} opts - The same options as {@link DateTime#toISO}\n * @return {string}\n */\n toISOTime(opts) {\n if (!this.isValid) return INVALID;\n return `${this.s.toISOTime(opts)}/${this.e.toISOTime(opts)}`;\n }\n\n /**\n * Returns a string representation of this Interval formatted according to the specified format\n * string. **You may not want this.** See {@link Interval#toLocaleString} for a more flexible\n * formatting tool.\n * @param {string} dateFormat - The format string. This string formats the start and end time.\n * See {@link DateTime#toFormat} for details.\n * @param {Object} opts - Options.\n * @param {string} [opts.separator = ' – '] - A separator to place between the start and end\n * representations.\n * @return {string}\n */\n toFormat(dateFormat, { separator = \" – \" } = {}) {\n if (!this.isValid) return INVALID;\n return `${this.s.toFormat(dateFormat)}${separator}${this.e.toFormat(dateFormat)}`;\n }\n\n /**\n * Return a Duration representing the time spanned by this interval.\n * @param {string|string[]} [unit=['milliseconds']] - the unit or units (such as 'hours' or 'days') to include in the duration.\n * @param {Object} opts - options that affect the creation of the Duration\n * @param {string} [opts.conversionAccuracy='casual'] - the conversion system to use\n * @example Interval.fromDateTimes(dt1, dt2).toDuration().toObject() //=> { milliseconds: 88489257 }\n * @example Interval.fromDateTimes(dt1, dt2).toDuration('days').toObject() //=> { days: 1.0241812152777778 }\n * @example Interval.fromDateTimes(dt1, dt2).toDuration(['hours', 'minutes']).toObject() //=> { hours: 24, minutes: 34.82095 }\n * @example Interval.fromDateTimes(dt1, dt2).toDuration(['hours', 'minutes', 'seconds']).toObject() //=> { hours: 24, minutes: 34, seconds: 49.257 }\n * @example Interval.fromDateTimes(dt1, dt2).toDuration('seconds').toObject() //=> { seconds: 88489.257 }\n * @return {Duration}\n */\n toDuration(unit, opts) {\n if (!this.isValid) {\n return Duration.invalid(this.invalidReason);\n }\n return this.e.diff(this.s, unit, opts);\n }\n\n /**\n * Run mapFn on the interval start and end, returning a new Interval from the resulting DateTimes\n * @param {function} mapFn\n * @return {Interval}\n * @example Interval.fromDateTimes(dt1, dt2).mapEndpoints(endpoint => endpoint.toUTC())\n * @example Interval.fromDateTimes(dt1, dt2).mapEndpoints(endpoint => endpoint.plus({ hours: 2 }))\n */\n mapEndpoints(mapFn) {\n return Interval.fromDateTimes(mapFn(this.s), mapFn(this.e));\n }\n}\n","import DateTime from \"./datetime.js\";\nimport Settings from \"./settings.js\";\nimport Locale from \"./impl/locale.js\";\nimport IANAZone from \"./zones/IANAZone.js\";\nimport { normalizeZone } from \"./impl/zoneUtil.js\";\n\nimport { hasLocaleWeekInfo, hasRelative } from \"./impl/util.js\";\n\n/**\n * The Info class contains static methods for retrieving general time and date related data. For example, it has methods for finding out if a time zone has a DST, for listing the months in any supported locale, and for discovering which of Luxon features are available in the current environment.\n */\nexport default class Info {\n /**\n * Return whether the specified zone contains a DST.\n * @param {string|Zone} [zone='local'] - Zone to check. Defaults to the environment's local zone.\n * @return {boolean}\n */\n static hasDST(zone = Settings.defaultZone) {\n const proto = DateTime.now().setZone(zone).set({ month: 12 });\n\n return !zone.isUniversal && proto.offset !== proto.set({ month: 6 }).offset;\n }\n\n /**\n * Return whether the specified zone is a valid IANA specifier.\n * @param {string} zone - Zone to check\n * @return {boolean}\n */\n static isValidIANAZone(zone) {\n return IANAZone.isValidZone(zone);\n }\n\n /**\n * Converts the input into a {@link Zone} instance.\n *\n * * If `input` is already a Zone instance, it is returned unchanged.\n * * If `input` is a string containing a valid time zone name, a Zone instance\n * with that name is returned.\n * * If `input` is a string that doesn't refer to a known time zone, a Zone\n * instance with {@link Zone#isValid} == false is returned.\n * * If `input is a number, a Zone instance with the specified fixed offset\n * in minutes is returned.\n * * If `input` is `null` or `undefined`, the default zone is returned.\n * @param {string|Zone|number} [input] - the value to be converted\n * @return {Zone}\n */\n static normalizeZone(input) {\n return normalizeZone(input, Settings.defaultZone);\n }\n\n /**\n * Get the weekday on which the week starts according to the given locale.\n * @param {Object} opts - options\n * @param {string} [opts.locale] - the locale code\n * @param {string} [opts.locObj=null] - an existing locale object to use\n * @returns {number} the start of the week, 1 for Monday through 7 for Sunday\n */\n static getStartOfWeek({ locale = null, locObj = null } = {}) {\n return (locObj || Locale.create(locale)).getStartOfWeek();\n }\n\n /**\n * Get the minimum number of days necessary in a week before it is considered part of the next year according\n * to the given locale.\n * @param {Object} opts - options\n * @param {string} [opts.locale] - the locale code\n * @param {string} [opts.locObj=null] - an existing locale object to use\n * @returns {number}\n */\n static getMinimumDaysInFirstWeek({ locale = null, locObj = null } = {}) {\n return (locObj || Locale.create(locale)).getMinDaysInFirstWeek();\n }\n\n /**\n * Get the weekdays, which are considered the weekend according to the given locale\n * @param {Object} opts - options\n * @param {string} [opts.locale] - the locale code\n * @param {string} [opts.locObj=null] - an existing locale object to use\n * @returns {number[]} an array of weekdays, 1 for Monday through 7 for Sunday\n */\n static getWeekendWeekdays({ locale = null, locObj = null } = {}) {\n // copy the array, because we cache it internally\n return (locObj || Locale.create(locale)).getWeekendDays().slice();\n }\n\n /**\n * Return an array of standalone month names.\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat\n * @param {string} [length='long'] - the length of the month representation, such as \"numeric\", \"2-digit\", \"narrow\", \"short\", \"long\"\n * @param {Object} opts - options\n * @param {string} [opts.locale] - the locale code\n * @param {string} [opts.numberingSystem=null] - the numbering system\n * @param {string} [opts.locObj=null] - an existing locale object to use\n * @param {string} [opts.outputCalendar='gregory'] - the calendar\n * @example Info.months()[0] //=> 'January'\n * @example Info.months('short')[0] //=> 'Jan'\n * @example Info.months('numeric')[0] //=> '1'\n * @example Info.months('short', { locale: 'fr-CA' } )[0] //=> 'janv.'\n * @example Info.months('numeric', { locale: 'ar' })[0] //=> '١'\n * @example Info.months('long', { outputCalendar: 'islamic' })[0] //=> 'Rabiʻ I'\n * @return {Array}\n */\n static months(\n length = \"long\",\n { locale = null, numberingSystem = null, locObj = null, outputCalendar = \"gregory\" } = {}\n ) {\n return (locObj || Locale.create(locale, numberingSystem, outputCalendar)).months(length);\n }\n\n /**\n * Return an array of format month names.\n * Format months differ from standalone months in that they're meant to appear next to the day of the month. In some languages, that\n * changes the string.\n * See {@link Info#months}\n * @param {string} [length='long'] - the length of the month representation, such as \"numeric\", \"2-digit\", \"narrow\", \"short\", \"long\"\n * @param {Object} opts - options\n * @param {string} [opts.locale] - the locale code\n * @param {string} [opts.numberingSystem=null] - the numbering system\n * @param {string} [opts.locObj=null] - an existing locale object to use\n * @param {string} [opts.outputCalendar='gregory'] - the calendar\n * @return {Array}\n */\n static monthsFormat(\n length = \"long\",\n { locale = null, numberingSystem = null, locObj = null, outputCalendar = \"gregory\" } = {}\n ) {\n return (locObj || Locale.create(locale, numberingSystem, outputCalendar)).months(length, true);\n }\n\n /**\n * Return an array of standalone week names.\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat\n * @param {string} [length='long'] - the length of the weekday representation, such as \"narrow\", \"short\", \"long\".\n * @param {Object} opts - options\n * @param {string} [opts.locale] - the locale code\n * @param {string} [opts.numberingSystem=null] - the numbering system\n * @param {string} [opts.locObj=null] - an existing locale object to use\n * @example Info.weekdays()[0] //=> 'Monday'\n * @example Info.weekdays('short')[0] //=> 'Mon'\n * @example Info.weekdays('short', { locale: 'fr-CA' })[0] //=> 'lun.'\n * @example Info.weekdays('short', { locale: 'ar' })[0] //=> 'الاثنين'\n * @return {Array}\n */\n static weekdays(length = \"long\", { locale = null, numberingSystem = null, locObj = null } = {}) {\n return (locObj || Locale.create(locale, numberingSystem, null)).weekdays(length);\n }\n\n /**\n * Return an array of format week names.\n * Format weekdays differ from standalone weekdays in that they're meant to appear next to more date information. In some languages, that\n * changes the string.\n * See {@link Info#weekdays}\n * @param {string} [length='long'] - the length of the month representation, such as \"narrow\", \"short\", \"long\".\n * @param {Object} opts - options\n * @param {string} [opts.locale=null] - the locale code\n * @param {string} [opts.numberingSystem=null] - the numbering system\n * @param {string} [opts.locObj=null] - an existing locale object to use\n * @return {Array}\n */\n static weekdaysFormat(\n length = \"long\",\n { locale = null, numberingSystem = null, locObj = null } = {}\n ) {\n return (locObj || Locale.create(locale, numberingSystem, null)).weekdays(length, true);\n }\n\n /**\n * Return an array of meridiems.\n * @param {Object} opts - options\n * @param {string} [opts.locale] - the locale code\n * @example Info.meridiems() //=> [ 'AM', 'PM' ]\n * @example Info.meridiems({ locale: 'my' }) //=> [ 'နံနက်', 'ညနေ' ]\n * @return {Array}\n */\n static meridiems({ locale = null } = {}) {\n return Locale.create(locale).meridiems();\n }\n\n /**\n * Return an array of eras, such as ['BC', 'AD']. The locale can be specified, but the calendar system is always Gregorian.\n * @param {string} [length='short'] - the length of the era representation, such as \"short\" or \"long\".\n * @param {Object} opts - options\n * @param {string} [opts.locale] - the locale code\n * @example Info.eras() //=> [ 'BC', 'AD' ]\n * @example Info.eras('long') //=> [ 'Before Christ', 'Anno Domini' ]\n * @example Info.eras('long', { locale: 'fr' }) //=> [ 'avant Jésus-Christ', 'après Jésus-Christ' ]\n * @return {Array}\n */\n static eras(length = \"short\", { locale = null } = {}) {\n return Locale.create(locale, null, \"gregory\").eras(length);\n }\n\n /**\n * Return the set of available features in this environment.\n * Some features of Luxon are not available in all environments. For example, on older browsers, relative time formatting support is not available. Use this function to figure out if that's the case.\n * Keys:\n * * `relative`: whether this environment supports relative time formatting\n * * `localeWeek`: whether this environment supports different weekdays for the start of the week based on the locale\n * @example Info.features() //=> { relative: false, localeWeek: true }\n * @return {Object}\n */\n static features() {\n return { relative: hasRelative(), localeWeek: hasLocaleWeekInfo() };\n }\n}\n","import Duration from \"../duration.js\";\n\nfunction dayDiff(earlier, later) {\n const utcDayStart = (dt) => dt.toUTC(0, { keepLocalTime: true }).startOf(\"day\").valueOf(),\n ms = utcDayStart(later) - utcDayStart(earlier);\n return Math.floor(Duration.fromMillis(ms).as(\"days\"));\n}\n\nfunction highOrderDiffs(cursor, later, units) {\n const differs = [\n [\"years\", (a, b) => b.year - a.year],\n [\"quarters\", (a, b) => b.quarter - a.quarter + (b.year - a.year) * 4],\n [\"months\", (a, b) => b.month - a.month + (b.year - a.year) * 12],\n [\n \"weeks\",\n (a, b) => {\n const days = dayDiff(a, b);\n return (days - (days % 7)) / 7;\n },\n ],\n [\"days\", dayDiff],\n ];\n\n const results = {};\n const earlier = cursor;\n let lowestOrder, highWater;\n\n /* This loop tries to diff using larger units first.\n If we overshoot, we backtrack and try the next smaller unit.\n \"cursor\" starts out at the earlier timestamp and moves closer and closer to \"later\"\n as we use smaller and smaller units.\n highWater keeps track of where we would be if we added one more of the smallest unit,\n this is used later to potentially convert any difference smaller than the smallest higher order unit\n into a fraction of that smallest higher order unit\n */\n for (const [unit, differ] of differs) {\n if (units.indexOf(unit) >= 0) {\n lowestOrder = unit;\n\n results[unit] = differ(cursor, later);\n highWater = earlier.plus(results);\n\n if (highWater > later) {\n // we overshot the end point, backtrack cursor by 1\n results[unit]--;\n cursor = earlier.plus(results);\n\n // if we are still overshooting now, we need to backtrack again\n // this happens in certain situations when diffing times in different zones,\n // because this calculation ignores time zones\n if (cursor > later) {\n // keep the \"overshot by 1\" around as highWater\n highWater = cursor;\n // backtrack cursor by 1\n results[unit]--;\n cursor = earlier.plus(results);\n }\n } else {\n cursor = highWater;\n }\n }\n }\n\n return [cursor, results, highWater, lowestOrder];\n}\n\nexport default function (earlier, later, units, opts) {\n let [cursor, results, highWater, lowestOrder] = highOrderDiffs(earlier, later, units);\n\n const remainingMillis = later - cursor;\n\n const lowerOrderUnits = units.filter(\n (u) => [\"hours\", \"minutes\", \"seconds\", \"milliseconds\"].indexOf(u) >= 0\n );\n\n if (lowerOrderUnits.length === 0) {\n if (highWater < later) {\n highWater = cursor.plus({ [lowestOrder]: 1 });\n }\n\n if (highWater !== cursor) {\n results[lowestOrder] = (results[lowestOrder] || 0) + remainingMillis / (highWater - cursor);\n }\n }\n\n const duration = Duration.fromObject(results, opts);\n\n if (lowerOrderUnits.length > 0) {\n return Duration.fromMillis(remainingMillis, opts)\n .shiftTo(...lowerOrderUnits)\n .plus(duration);\n } else {\n return duration;\n }\n}\n","const numberingSystems = {\n arab: \"[\\u0660-\\u0669]\",\n arabext: \"[\\u06F0-\\u06F9]\",\n bali: \"[\\u1B50-\\u1B59]\",\n beng: \"[\\u09E6-\\u09EF]\",\n deva: \"[\\u0966-\\u096F]\",\n fullwide: \"[\\uFF10-\\uFF19]\",\n gujr: \"[\\u0AE6-\\u0AEF]\",\n hanidec: \"[〇|一|二|三|四|五|六|七|八|九]\",\n khmr: \"[\\u17E0-\\u17E9]\",\n knda: \"[\\u0CE6-\\u0CEF]\",\n laoo: \"[\\u0ED0-\\u0ED9]\",\n limb: \"[\\u1946-\\u194F]\",\n mlym: \"[\\u0D66-\\u0D6F]\",\n mong: \"[\\u1810-\\u1819]\",\n mymr: \"[\\u1040-\\u1049]\",\n orya: \"[\\u0B66-\\u0B6F]\",\n tamldec: \"[\\u0BE6-\\u0BEF]\",\n telu: \"[\\u0C66-\\u0C6F]\",\n thai: \"[\\u0E50-\\u0E59]\",\n tibt: \"[\\u0F20-\\u0F29]\",\n latn: \"\\\\d\",\n};\n\nconst numberingSystemsUTF16 = {\n arab: [1632, 1641],\n arabext: [1776, 1785],\n bali: [6992, 7001],\n beng: [2534, 2543],\n deva: [2406, 2415],\n fullwide: [65296, 65303],\n gujr: [2790, 2799],\n khmr: [6112, 6121],\n knda: [3302, 3311],\n laoo: [3792, 3801],\n limb: [6470, 6479],\n mlym: [3430, 3439],\n mong: [6160, 6169],\n mymr: [4160, 4169],\n orya: [2918, 2927],\n tamldec: [3046, 3055],\n telu: [3174, 3183],\n thai: [3664, 3673],\n tibt: [3872, 3881],\n};\n\nconst hanidecChars = numberingSystems.hanidec.replace(/[\\[|\\]]/g, \"\").split(\"\");\n\nexport function parseDigits(str) {\n let value = parseInt(str, 10);\n if (isNaN(value)) {\n value = \"\";\n for (let i = 0; i < str.length; i++) {\n const code = str.charCodeAt(i);\n\n if (str[i].search(numberingSystems.hanidec) !== -1) {\n value += hanidecChars.indexOf(str[i]);\n } else {\n for (const key in numberingSystemsUTF16) {\n const [min, max] = numberingSystemsUTF16[key];\n if (code >= min && code <= max) {\n value += code - min;\n }\n }\n }\n }\n return parseInt(value, 10);\n } else {\n return value;\n }\n}\n\nexport function digitRegex({ numberingSystem }, append = \"\") {\n return new RegExp(`${numberingSystems[numberingSystem || \"latn\"]}${append}`);\n}\n","import { parseMillis, isUndefined, untruncateYear, signedOffset, hasOwnProperty } from \"./util.js\";\nimport Formatter from \"./formatter.js\";\nimport FixedOffsetZone from \"../zones/fixedOffsetZone.js\";\nimport IANAZone from \"../zones/IANAZone.js\";\nimport DateTime from \"../datetime.js\";\nimport { digitRegex, parseDigits } from \"./digits.js\";\nimport { ConflictingSpecificationError } from \"../errors.js\";\n\nconst MISSING_FTP = \"missing Intl.DateTimeFormat.formatToParts support\";\n\nfunction intUnit(regex, post = (i) => i) {\n return { regex, deser: ([s]) => post(parseDigits(s)) };\n}\n\nconst NBSP = String.fromCharCode(160);\nconst spaceOrNBSP = `[ ${NBSP}]`;\nconst spaceOrNBSPRegExp = new RegExp(spaceOrNBSP, \"g\");\n\nfunction fixListRegex(s) {\n // make dots optional and also make them literal\n // make space and non breakable space characters interchangeable\n return s.replace(/\\./g, \"\\\\.?\").replace(spaceOrNBSPRegExp, spaceOrNBSP);\n}\n\nfunction stripInsensitivities(s) {\n return s\n .replace(/\\./g, \"\") // ignore dots that were made optional\n .replace(spaceOrNBSPRegExp, \" \") // interchange space and nbsp\n .toLowerCase();\n}\n\nfunction oneOf(strings, startIndex) {\n if (strings === null) {\n return null;\n } else {\n return {\n regex: RegExp(strings.map(fixListRegex).join(\"|\")),\n deser: ([s]) =>\n strings.findIndex((i) => stripInsensitivities(s) === stripInsensitivities(i)) + startIndex,\n };\n }\n}\n\nfunction offset(regex, groups) {\n return { regex, deser: ([, h, m]) => signedOffset(h, m), groups };\n}\n\nfunction simple(regex) {\n return { regex, deser: ([s]) => s };\n}\n\nfunction escapeToken(value) {\n return value.replace(/[\\-\\[\\]{}()*+?.,\\\\\\^$|#\\s]/g, \"\\\\$&\");\n}\n\n/**\n * @param token\n * @param {Locale} loc\n */\nfunction unitForToken(token, loc) {\n const one = digitRegex(loc),\n two = digitRegex(loc, \"{2}\"),\n three = digitRegex(loc, \"{3}\"),\n four = digitRegex(loc, \"{4}\"),\n six = digitRegex(loc, \"{6}\"),\n oneOrTwo = digitRegex(loc, \"{1,2}\"),\n oneToThree = digitRegex(loc, \"{1,3}\"),\n oneToSix = digitRegex(loc, \"{1,6}\"),\n oneToNine = digitRegex(loc, \"{1,9}\"),\n twoToFour = digitRegex(loc, \"{2,4}\"),\n fourToSix = digitRegex(loc, \"{4,6}\"),\n literal = (t) => ({ regex: RegExp(escapeToken(t.val)), deser: ([s]) => s, literal: true }),\n unitate = (t) => {\n if (token.literal) {\n return literal(t);\n }\n switch (t.val) {\n // era\n case \"G\":\n return oneOf(loc.eras(\"short\"), 0);\n case \"GG\":\n return oneOf(loc.eras(\"long\"), 0);\n // years\n case \"y\":\n return intUnit(oneToSix);\n case \"yy\":\n return intUnit(twoToFour, untruncateYear);\n case \"yyyy\":\n return intUnit(four);\n case \"yyyyy\":\n return intUnit(fourToSix);\n case \"yyyyyy\":\n return intUnit(six);\n // months\n case \"M\":\n return intUnit(oneOrTwo);\n case \"MM\":\n return intUnit(two);\n case \"MMM\":\n return oneOf(loc.months(\"short\", true), 1);\n case \"MMMM\":\n return oneOf(loc.months(\"long\", true), 1);\n case \"L\":\n return intUnit(oneOrTwo);\n case \"LL\":\n return intUnit(two);\n case \"LLL\":\n return oneOf(loc.months(\"short\", false), 1);\n case \"LLLL\":\n return oneOf(loc.months(\"long\", false), 1);\n // dates\n case \"d\":\n return intUnit(oneOrTwo);\n case \"dd\":\n return intUnit(two);\n // ordinals\n case \"o\":\n return intUnit(oneToThree);\n case \"ooo\":\n return intUnit(three);\n // time\n case \"HH\":\n return intUnit(two);\n case \"H\":\n return intUnit(oneOrTwo);\n case \"hh\":\n return intUnit(two);\n case \"h\":\n return intUnit(oneOrTwo);\n case \"mm\":\n return intUnit(two);\n case \"m\":\n return intUnit(oneOrTwo);\n case \"q\":\n return intUnit(oneOrTwo);\n case \"qq\":\n return intUnit(two);\n case \"s\":\n return intUnit(oneOrTwo);\n case \"ss\":\n return intUnit(two);\n case \"S\":\n return intUnit(oneToThree);\n case \"SSS\":\n return intUnit(three);\n case \"u\":\n return simple(oneToNine);\n case \"uu\":\n return simple(oneOrTwo);\n case \"uuu\":\n return intUnit(one);\n // meridiem\n case \"a\":\n return oneOf(loc.meridiems(), 0);\n // weekYear (k)\n case \"kkkk\":\n return intUnit(four);\n case \"kk\":\n return intUnit(twoToFour, untruncateYear);\n // weekNumber (W)\n case \"W\":\n return intUnit(oneOrTwo);\n case \"WW\":\n return intUnit(two);\n // weekdays\n case \"E\":\n case \"c\":\n return intUnit(one);\n case \"EEE\":\n return oneOf(loc.weekdays(\"short\", false), 1);\n case \"EEEE\":\n return oneOf(loc.weekdays(\"long\", false), 1);\n case \"ccc\":\n return oneOf(loc.weekdays(\"short\", true), 1);\n case \"cccc\":\n return oneOf(loc.weekdays(\"long\", true), 1);\n // offset/zone\n case \"Z\":\n case \"ZZ\":\n return offset(new RegExp(`([+-]${oneOrTwo.source})(?::(${two.source}))?`), 2);\n case \"ZZZ\":\n return offset(new RegExp(`([+-]${oneOrTwo.source})(${two.source})?`), 2);\n // we don't support ZZZZ (PST) or ZZZZZ (Pacific Standard Time) in parsing\n // because we don't have any way to figure out what they are\n case \"z\":\n return simple(/[a-z_+-/]{1,256}?/i);\n // this special-case \"token\" represents a place where a macro-token expanded into a white-space literal\n // in this case we accept any non-newline white-space\n case \" \":\n return simple(/[^\\S\\n\\r]/);\n default:\n return literal(t);\n }\n };\n\n const unit = unitate(token) || {\n invalidReason: MISSING_FTP,\n };\n\n unit.token = token;\n\n return unit;\n}\n\nconst partTypeStyleToTokenVal = {\n year: {\n \"2-digit\": \"yy\",\n numeric: \"yyyyy\",\n },\n month: {\n numeric: \"M\",\n \"2-digit\": \"MM\",\n short: \"MMM\",\n long: \"MMMM\",\n },\n day: {\n numeric: \"d\",\n \"2-digit\": \"dd\",\n },\n weekday: {\n short: \"EEE\",\n long: \"EEEE\",\n },\n dayperiod: \"a\",\n dayPeriod: \"a\",\n hour12: {\n numeric: \"h\",\n \"2-digit\": \"hh\",\n },\n hour24: {\n numeric: \"H\",\n \"2-digit\": \"HH\",\n },\n minute: {\n numeric: \"m\",\n \"2-digit\": \"mm\",\n },\n second: {\n numeric: \"s\",\n \"2-digit\": \"ss\",\n },\n timeZoneName: {\n long: \"ZZZZZ\",\n short: \"ZZZ\",\n },\n};\n\nfunction tokenForPart(part, formatOpts, resolvedOpts) {\n const { type, value } = part;\n\n if (type === \"literal\") {\n const isSpace = /^\\s+$/.test(value);\n return {\n literal: !isSpace,\n val: isSpace ? \" \" : value,\n };\n }\n\n const style = formatOpts[type];\n\n // The user might have explicitly specified hour12 or hourCycle\n // if so, respect their decision\n // if not, refer back to the resolvedOpts, which are based on the locale\n let actualType = type;\n if (type === \"hour\") {\n if (formatOpts.hour12 != null) {\n actualType = formatOpts.hour12 ? \"hour12\" : \"hour24\";\n } else if (formatOpts.hourCycle != null) {\n if (formatOpts.hourCycle === \"h11\" || formatOpts.hourCycle === \"h12\") {\n actualType = \"hour12\";\n } else {\n actualType = \"hour24\";\n }\n } else {\n // tokens only differentiate between 24 hours or not,\n // so we do not need to check hourCycle here, which is less supported anyways\n actualType = resolvedOpts.hour12 ? \"hour12\" : \"hour24\";\n }\n }\n let val = partTypeStyleToTokenVal[actualType];\n if (typeof val === \"object\") {\n val = val[style];\n }\n\n if (val) {\n return {\n literal: false,\n val,\n };\n }\n\n return undefined;\n}\n\nfunction buildRegex(units) {\n const re = units.map((u) => u.regex).reduce((f, r) => `${f}(${r.source})`, \"\");\n return [`^${re}$`, units];\n}\n\nfunction match(input, regex, handlers) {\n const matches = input.match(regex);\n\n if (matches) {\n const all = {};\n let matchIndex = 1;\n for (const i in handlers) {\n if (hasOwnProperty(handlers, i)) {\n const h = handlers[i],\n groups = h.groups ? h.groups + 1 : 1;\n if (!h.literal && h.token) {\n all[h.token.val[0]] = h.deser(matches.slice(matchIndex, matchIndex + groups));\n }\n matchIndex += groups;\n }\n }\n return [matches, all];\n } else {\n return [matches, {}];\n }\n}\n\nfunction dateTimeFromMatches(matches) {\n const toField = (token) => {\n switch (token) {\n case \"S\":\n return \"millisecond\";\n case \"s\":\n return \"second\";\n case \"m\":\n return \"minute\";\n case \"h\":\n case \"H\":\n return \"hour\";\n case \"d\":\n return \"day\";\n case \"o\":\n return \"ordinal\";\n case \"L\":\n case \"M\":\n return \"month\";\n case \"y\":\n return \"year\";\n case \"E\":\n case \"c\":\n return \"weekday\";\n case \"W\":\n return \"weekNumber\";\n case \"k\":\n return \"weekYear\";\n case \"q\":\n return \"quarter\";\n default:\n return null;\n }\n };\n\n let zone = null;\n let specificOffset;\n if (!isUndefined(matches.z)) {\n zone = IANAZone.create(matches.z);\n }\n\n if (!isUndefined(matches.Z)) {\n if (!zone) {\n zone = new FixedOffsetZone(matches.Z);\n }\n specificOffset = matches.Z;\n }\n\n if (!isUndefined(matches.q)) {\n matches.M = (matches.q - 1) * 3 + 1;\n }\n\n if (!isUndefined(matches.h)) {\n if (matches.h < 12 && matches.a === 1) {\n matches.h += 12;\n } else if (matches.h === 12 && matches.a === 0) {\n matches.h = 0;\n }\n }\n\n if (matches.G === 0 && matches.y) {\n matches.y = -matches.y;\n }\n\n if (!isUndefined(matches.u)) {\n matches.S = parseMillis(matches.u);\n }\n\n const vals = Object.keys(matches).reduce((r, k) => {\n const f = toField(k);\n if (f) {\n r[f] = matches[k];\n }\n\n return r;\n }, {});\n\n return [vals, zone, specificOffset];\n}\n\nlet dummyDateTimeCache = null;\n\nfunction getDummyDateTime() {\n if (!dummyDateTimeCache) {\n dummyDateTimeCache = DateTime.fromMillis(1555555555555);\n }\n\n return dummyDateTimeCache;\n}\n\nfunction maybeExpandMacroToken(token, locale) {\n if (token.literal) {\n return token;\n }\n\n const formatOpts = Formatter.macroTokenToFormatOpts(token.val);\n const tokens = formatOptsToTokens(formatOpts, locale);\n\n if (tokens == null || tokens.includes(undefined)) {\n return token;\n }\n\n return tokens;\n}\n\nexport function expandMacroTokens(tokens, locale) {\n return Array.prototype.concat(...tokens.map((t) => maybeExpandMacroToken(t, locale)));\n}\n\n/**\n * @private\n */\n\nexport function explainFromTokens(locale, input, format) {\n const tokens = expandMacroTokens(Formatter.parseFormat(format), locale),\n units = tokens.map((t) => unitForToken(t, locale)),\n disqualifyingUnit = units.find((t) => t.invalidReason);\n\n if (disqualifyingUnit) {\n return { input, tokens, invalidReason: disqualifyingUnit.invalidReason };\n } else {\n const [regexString, handlers] = buildRegex(units),\n regex = RegExp(regexString, \"i\"),\n [rawMatches, matches] = match(input, regex, handlers),\n [result, zone, specificOffset] = matches\n ? dateTimeFromMatches(matches)\n : [null, null, undefined];\n if (hasOwnProperty(matches, \"a\") && hasOwnProperty(matches, \"H\")) {\n throw new ConflictingSpecificationError(\n \"Can't include meridiem when specifying 24-hour format\"\n );\n }\n return { input, tokens, regex, rawMatches, matches, result, zone, specificOffset };\n }\n}\n\nexport function parseFromTokens(locale, input, format) {\n const { result, zone, specificOffset, invalidReason } = explainFromTokens(locale, input, format);\n return [result, zone, specificOffset, invalidReason];\n}\n\nexport function formatOptsToTokens(formatOpts, locale) {\n if (!formatOpts) {\n return null;\n }\n\n const formatter = Formatter.create(locale, formatOpts);\n const df = formatter.dtFormatter(getDummyDateTime());\n const parts = df.formatToParts();\n const resolvedOpts = df.resolvedOptions();\n return parts.map((p) => tokenForPart(p, formatOpts, resolvedOpts));\n}\n","import Duration from \"./duration.js\";\nimport Interval from \"./interval.js\";\nimport Settings from \"./settings.js\";\nimport Info from \"./info.js\";\nimport Formatter from \"./impl/formatter.js\";\nimport FixedOffsetZone from \"./zones/fixedOffsetZone.js\";\nimport Locale from \"./impl/locale.js\";\nimport {\n isUndefined,\n maybeArray,\n isDate,\n isNumber,\n bestBy,\n daysInMonth,\n daysInYear,\n isLeapYear,\n weeksInWeekYear,\n normalizeObject,\n roundTo,\n objToLocalTS,\n padStart,\n} from \"./impl/util.js\";\nimport { normalizeZone } from \"./impl/zoneUtil.js\";\nimport diff from \"./impl/diff.js\";\nimport { parseRFC2822Date, parseISODate, parseHTTPDate, parseSQL } from \"./impl/regexParser.js\";\nimport {\n parseFromTokens,\n explainFromTokens,\n formatOptsToTokens,\n expandMacroTokens,\n} from \"./impl/tokenParser.js\";\nimport {\n gregorianToWeek,\n weekToGregorian,\n gregorianToOrdinal,\n ordinalToGregorian,\n hasInvalidGregorianData,\n hasInvalidWeekData,\n hasInvalidOrdinalData,\n hasInvalidTimeData,\n usesLocalWeekValues,\n isoWeekdayToLocal,\n} from \"./impl/conversions.js\";\nimport * as Formats from \"./impl/formats.js\";\nimport {\n InvalidArgumentError,\n ConflictingSpecificationError,\n InvalidUnitError,\n InvalidDateTimeError,\n} from \"./errors.js\";\nimport Invalid from \"./impl/invalid.js\";\n\nconst INVALID = \"Invalid DateTime\";\nconst MAX_DATE = 8.64e15;\n\nfunction unsupportedZone(zone) {\n return new Invalid(\"unsupported zone\", `the zone \"${zone.name}\" is not supported`);\n}\n\n// we cache week data on the DT object and this intermediates the cache\n/**\n * @param {DateTime} dt\n */\nfunction possiblyCachedWeekData(dt) {\n if (dt.weekData === null) {\n dt.weekData = gregorianToWeek(dt.c);\n }\n return dt.weekData;\n}\n\n/**\n * @param {DateTime} dt\n */\nfunction possiblyCachedLocalWeekData(dt) {\n if (dt.localWeekData === null) {\n dt.localWeekData = gregorianToWeek(\n dt.c,\n dt.loc.getMinDaysInFirstWeek(),\n dt.loc.getStartOfWeek()\n );\n }\n return dt.localWeekData;\n}\n\n// clone really means, \"make a new object with these modifications\". all \"setters\" really use this\n// to create a new object while only changing some of the properties\nfunction clone(inst, alts) {\n const current = {\n ts: inst.ts,\n zone: inst.zone,\n c: inst.c,\n o: inst.o,\n loc: inst.loc,\n invalid: inst.invalid,\n };\n return new DateTime({ ...current, ...alts, old: current });\n}\n\n// find the right offset a given local time. The o input is our guess, which determines which\n// offset we'll pick in ambiguous cases (e.g. there are two 3 AMs b/c Fallback DST)\nfunction fixOffset(localTS, o, tz) {\n // Our UTC time is just a guess because our offset is just a guess\n let utcGuess = localTS - o * 60 * 1000;\n\n // Test whether the zone matches the offset for this ts\n const o2 = tz.offset(utcGuess);\n\n // If so, offset didn't change and we're done\n if (o === o2) {\n return [utcGuess, o];\n }\n\n // If not, change the ts by the difference in the offset\n utcGuess -= (o2 - o) * 60 * 1000;\n\n // If that gives us the local time we want, we're done\n const o3 = tz.offset(utcGuess);\n if (o2 === o3) {\n return [utcGuess, o2];\n }\n\n // If it's different, we're in a hole time. The offset has changed, but the we don't adjust the time\n return [localTS - Math.min(o2, o3) * 60 * 1000, Math.max(o2, o3)];\n}\n\n// convert an epoch timestamp into a calendar object with the given offset\nfunction tsToObj(ts, offset) {\n ts += offset * 60 * 1000;\n\n const d = new Date(ts);\n\n return {\n year: d.getUTCFullYear(),\n month: d.getUTCMonth() + 1,\n day: d.getUTCDate(),\n hour: d.getUTCHours(),\n minute: d.getUTCMinutes(),\n second: d.getUTCSeconds(),\n millisecond: d.getUTCMilliseconds(),\n };\n}\n\n// convert a calendar object to a epoch timestamp\nfunction objToTS(obj, offset, zone) {\n return fixOffset(objToLocalTS(obj), offset, zone);\n}\n\n// create a new DT instance by adding a duration, adjusting for DSTs\nfunction adjustTime(inst, dur) {\n const oPre = inst.o,\n year = inst.c.year + Math.trunc(dur.years),\n month = inst.c.month + Math.trunc(dur.months) + Math.trunc(dur.quarters) * 3,\n c = {\n ...inst.c,\n year,\n month,\n day:\n Math.min(inst.c.day, daysInMonth(year, month)) +\n Math.trunc(dur.days) +\n Math.trunc(dur.weeks) * 7,\n },\n millisToAdd = Duration.fromObject({\n years: dur.years - Math.trunc(dur.years),\n quarters: dur.quarters - Math.trunc(dur.quarters),\n months: dur.months - Math.trunc(dur.months),\n weeks: dur.weeks - Math.trunc(dur.weeks),\n days: dur.days - Math.trunc(dur.days),\n hours: dur.hours,\n minutes: dur.minutes,\n seconds: dur.seconds,\n milliseconds: dur.milliseconds,\n }).as(\"milliseconds\"),\n localTS = objToLocalTS(c);\n\n let [ts, o] = fixOffset(localTS, oPre, inst.zone);\n\n if (millisToAdd !== 0) {\n ts += millisToAdd;\n // that could have changed the offset by going over a DST, but we want to keep the ts the same\n o = inst.zone.offset(ts);\n }\n\n return { ts, o };\n}\n\n// helper useful in turning the results of parsing into real dates\n// by handling the zone options\nfunction parseDataToDateTime(parsed, parsedZone, opts, format, text, specificOffset) {\n const { setZone, zone } = opts;\n if ((parsed && Object.keys(parsed).length !== 0) || parsedZone) {\n const interpretationZone = parsedZone || zone,\n inst = DateTime.fromObject(parsed, {\n ...opts,\n zone: interpretationZone,\n specificOffset,\n });\n return setZone ? inst : inst.setZone(zone);\n } else {\n return DateTime.invalid(\n new Invalid(\"unparsable\", `the input \"${text}\" can't be parsed as ${format}`)\n );\n }\n}\n\n// if you want to output a technical format (e.g. RFC 2822), this helper\n// helps handle the details\nfunction toTechFormat(dt, format, allowZ = true) {\n return dt.isValid\n ? Formatter.create(Locale.create(\"en-US\"), {\n allowZ,\n forceSimple: true,\n }).formatDateTimeFromString(dt, format)\n : null;\n}\n\nfunction toISODate(o, extended) {\n const longFormat = o.c.year > 9999 || o.c.year < 0;\n let c = \"\";\n if (longFormat && o.c.year >= 0) c += \"+\";\n c += padStart(o.c.year, longFormat ? 6 : 4);\n\n if (extended) {\n c += \"-\";\n c += padStart(o.c.month);\n c += \"-\";\n c += padStart(o.c.day);\n } else {\n c += padStart(o.c.month);\n c += padStart(o.c.day);\n }\n return c;\n}\n\nfunction toISOTime(\n o,\n extended,\n suppressSeconds,\n suppressMilliseconds,\n includeOffset,\n extendedZone\n) {\n let c = padStart(o.c.hour);\n if (extended) {\n c += \":\";\n c += padStart(o.c.minute);\n if (o.c.millisecond !== 0 || o.c.second !== 0 || !suppressSeconds) {\n c += \":\";\n }\n } else {\n c += padStart(o.c.minute);\n }\n\n if (o.c.millisecond !== 0 || o.c.second !== 0 || !suppressSeconds) {\n c += padStart(o.c.second);\n\n if (o.c.millisecond !== 0 || !suppressMilliseconds) {\n c += \".\";\n c += padStart(o.c.millisecond, 3);\n }\n }\n\n if (includeOffset) {\n if (o.isOffsetFixed && o.offset === 0 && !extendedZone) {\n c += \"Z\";\n } else if (o.o < 0) {\n c += \"-\";\n c += padStart(Math.trunc(-o.o / 60));\n c += \":\";\n c += padStart(Math.trunc(-o.o % 60));\n } else {\n c += \"+\";\n c += padStart(Math.trunc(o.o / 60));\n c += \":\";\n c += padStart(Math.trunc(o.o % 60));\n }\n }\n\n if (extendedZone) {\n c += \"[\" + o.zone.ianaName + \"]\";\n }\n return c;\n}\n\n// defaults for unspecified units in the supported calendars\nconst defaultUnitValues = {\n month: 1,\n day: 1,\n hour: 0,\n minute: 0,\n second: 0,\n millisecond: 0,\n },\n defaultWeekUnitValues = {\n weekNumber: 1,\n weekday: 1,\n hour: 0,\n minute: 0,\n second: 0,\n millisecond: 0,\n },\n defaultOrdinalUnitValues = {\n ordinal: 1,\n hour: 0,\n minute: 0,\n second: 0,\n millisecond: 0,\n };\n\n// Units in the supported calendars, sorted by bigness\nconst orderedUnits = [\"year\", \"month\", \"day\", \"hour\", \"minute\", \"second\", \"millisecond\"],\n orderedWeekUnits = [\n \"weekYear\",\n \"weekNumber\",\n \"weekday\",\n \"hour\",\n \"minute\",\n \"second\",\n \"millisecond\",\n ],\n orderedOrdinalUnits = [\"year\", \"ordinal\", \"hour\", \"minute\", \"second\", \"millisecond\"];\n\n// standardize case and plurality in units\nfunction normalizeUnit(unit) {\n const normalized = {\n year: \"year\",\n years: \"year\",\n month: \"month\",\n months: \"month\",\n day: \"day\",\n days: \"day\",\n hour: \"hour\",\n hours: \"hour\",\n minute: \"minute\",\n minutes: \"minute\",\n quarter: \"quarter\",\n quarters: \"quarter\",\n second: \"second\",\n seconds: \"second\",\n millisecond: \"millisecond\",\n milliseconds: \"millisecond\",\n weekday: \"weekday\",\n weekdays: \"weekday\",\n weeknumber: \"weekNumber\",\n weeksnumber: \"weekNumber\",\n weeknumbers: \"weekNumber\",\n weekyear: \"weekYear\",\n weekyears: \"weekYear\",\n ordinal: \"ordinal\",\n }[unit.toLowerCase()];\n\n if (!normalized) throw new InvalidUnitError(unit);\n\n return normalized;\n}\n\nfunction normalizeUnitWithLocalWeeks(unit) {\n switch (unit.toLowerCase()) {\n case \"localweekday\":\n case \"localweekdays\":\n return \"localWeekday\";\n case \"localweeknumber\":\n case \"localweeknumbers\":\n return \"localWeekNumber\";\n case \"localweekyear\":\n case \"localweekyears\":\n return \"localWeekYear\";\n default:\n return normalizeUnit(unit);\n }\n}\n\n// this is a dumbed down version of fromObject() that runs about 60% faster\n// but doesn't do any validation, makes a bunch of assumptions about what units\n// are present, and so on.\nfunction quickDT(obj, opts) {\n const zone = normalizeZone(opts.zone, Settings.defaultZone),\n loc = Locale.fromObject(opts),\n tsNow = Settings.now();\n\n let ts, o;\n\n // assume we have the higher-order units\n if (!isUndefined(obj.year)) {\n for (const u of orderedUnits) {\n if (isUndefined(obj[u])) {\n obj[u] = defaultUnitValues[u];\n }\n }\n\n const invalid = hasInvalidGregorianData(obj) || hasInvalidTimeData(obj);\n if (invalid) {\n return DateTime.invalid(invalid);\n }\n\n const offsetProvis = zone.offset(tsNow);\n [ts, o] = objToTS(obj, offsetProvis, zone);\n } else {\n ts = tsNow;\n }\n\n return new DateTime({ ts, zone, loc, o });\n}\n\nfunction diffRelative(start, end, opts) {\n const round = isUndefined(opts.round) ? true : opts.round,\n format = (c, unit) => {\n c = roundTo(c, round || opts.calendary ? 0 : 2, true);\n const formatter = end.loc.clone(opts).relFormatter(opts);\n return formatter.format(c, unit);\n },\n differ = (unit) => {\n if (opts.calendary) {\n if (!end.hasSame(start, unit)) {\n return end.startOf(unit).diff(start.startOf(unit), unit).get(unit);\n } else return 0;\n } else {\n return end.diff(start, unit).get(unit);\n }\n };\n\n if (opts.unit) {\n return format(differ(opts.unit), opts.unit);\n }\n\n for (const unit of opts.units) {\n const count = differ(unit);\n if (Math.abs(count) >= 1) {\n return format(count, unit);\n }\n }\n return format(start > end ? -0 : 0, opts.units[opts.units.length - 1]);\n}\n\nfunction lastOpts(argList) {\n let opts = {},\n args;\n if (argList.length > 0 && typeof argList[argList.length - 1] === \"object\") {\n opts = argList[argList.length - 1];\n args = Array.from(argList).slice(0, argList.length - 1);\n } else {\n args = Array.from(argList);\n }\n return [opts, args];\n}\n\n/**\n * A DateTime is an immutable data structure representing a specific date and time and accompanying methods. It contains class and instance methods for creating, parsing, interrogating, transforming, and formatting them.\n *\n * A DateTime comprises of:\n * * A timestamp. Each DateTime instance refers to a specific millisecond of the Unix epoch.\n * * A time zone. Each instance is considered in the context of a specific zone (by default the local system's zone).\n * * Configuration properties that effect how output strings are formatted, such as `locale`, `numberingSystem`, and `outputCalendar`.\n *\n * Here is a brief overview of the most commonly used functionality it provides:\n *\n * * **Creation**: To create a DateTime from its components, use one of its factory class methods: {@link DateTime.local}, {@link DateTime.utc}, and (most flexibly) {@link DateTime.fromObject}. To create one from a standard string format, use {@link DateTime.fromISO}, {@link DateTime.fromHTTP}, and {@link DateTime.fromRFC2822}. To create one from a custom string format, use {@link DateTime.fromFormat}. To create one from a native JS date, use {@link DateTime.fromJSDate}.\n * * **Gregorian calendar and time**: To examine the Gregorian properties of a DateTime individually (i.e as opposed to collectively through {@link DateTime#toObject}), use the {@link DateTime#year}, {@link DateTime#month},\n * {@link DateTime#day}, {@link DateTime#hour}, {@link DateTime#minute}, {@link DateTime#second}, {@link DateTime#millisecond} accessors.\n * * **Week calendar**: For ISO week calendar attributes, see the {@link DateTime#weekYear}, {@link DateTime#weekNumber}, and {@link DateTime#weekday} accessors.\n * * **Configuration** See the {@link DateTime#locale} and {@link DateTime#numberingSystem} accessors.\n * * **Transformation**: To transform the DateTime into other DateTimes, use {@link DateTime#set}, {@link DateTime#reconfigure}, {@link DateTime#setZone}, {@link DateTime#setLocale}, {@link DateTime.plus}, {@link DateTime#minus}, {@link DateTime#endOf}, {@link DateTime#startOf}, {@link DateTime#toUTC}, and {@link DateTime#toLocal}.\n * * **Output**: To convert the DateTime to other representations, use the {@link DateTime#toRelative}, {@link DateTime#toRelativeCalendar}, {@link DateTime#toJSON}, {@link DateTime#toISO}, {@link DateTime#toHTTP}, {@link DateTime#toObject}, {@link DateTime#toRFC2822}, {@link DateTime#toString}, {@link DateTime#toLocaleString}, {@link DateTime#toFormat}, {@link DateTime#toMillis} and {@link DateTime#toJSDate}.\n *\n * There's plenty others documented below. In addition, for more information on subtler topics like internationalization, time zones, alternative calendars, validity, and so on, see the external documentation.\n */\nexport default class DateTime {\n /**\n * @access private\n */\n constructor(config) {\n const zone = config.zone || Settings.defaultZone;\n\n let invalid =\n config.invalid ||\n (Number.isNaN(config.ts) ? new Invalid(\"invalid input\") : null) ||\n (!zone.isValid ? unsupportedZone(zone) : null);\n /**\n * @access private\n */\n this.ts = isUndefined(config.ts) ? Settings.now() : config.ts;\n\n let c = null,\n o = null;\n if (!invalid) {\n const unchanged = config.old && config.old.ts === this.ts && config.old.zone.equals(zone);\n\n if (unchanged) {\n [c, o] = [config.old.c, config.old.o];\n } else {\n const ot = zone.offset(this.ts);\n c = tsToObj(this.ts, ot);\n invalid = Number.isNaN(c.year) ? new Invalid(\"invalid input\") : null;\n c = invalid ? null : c;\n o = invalid ? null : ot;\n }\n }\n\n /**\n * @access private\n */\n this._zone = zone;\n /**\n * @access private\n */\n this.loc = config.loc || Locale.create();\n /**\n * @access private\n */\n this.invalid = invalid;\n /**\n * @access private\n */\n this.weekData = null;\n /**\n * @access private\n */\n this.localWeekData = null;\n /**\n * @access private\n */\n this.c = c;\n /**\n * @access private\n */\n this.o = o;\n /**\n * @access private\n */\n this.isLuxonDateTime = true;\n }\n\n // CONSTRUCT\n\n /**\n * Create a DateTime for the current instant, in the system's time zone.\n *\n * Use Settings to override these default values if needed.\n * @example DateTime.now().toISO() //~> now in the ISO format\n * @return {DateTime}\n */\n static now() {\n return new DateTime({});\n }\n\n /**\n * Create a local DateTime\n * @param {number} [year] - The calendar year. If omitted (as in, call `local()` with no arguments), the current time will be used\n * @param {number} [month=1] - The month, 1-indexed\n * @param {number} [day=1] - The day of the month, 1-indexed\n * @param {number} [hour=0] - The hour of the day, in 24-hour time\n * @param {number} [minute=0] - The minute of the hour, meaning a number between 0 and 59\n * @param {number} [second=0] - The second of the minute, meaning a number between 0 and 59\n * @param {number} [millisecond=0] - The millisecond of the second, meaning a number between 0 and 999\n * @example DateTime.local() //~> now\n * @example DateTime.local({ zone: \"America/New_York\" }) //~> now, in US east coast time\n * @example DateTime.local(2017) //~> 2017-01-01T00:00:00\n * @example DateTime.local(2017, 3) //~> 2017-03-01T00:00:00\n * @example DateTime.local(2017, 3, 12, { locale: \"fr\" }) //~> 2017-03-12T00:00:00, with a French locale\n * @example DateTime.local(2017, 3, 12, 5) //~> 2017-03-12T05:00:00\n * @example DateTime.local(2017, 3, 12, 5, { zone: \"utc\" }) //~> 2017-03-12T05:00:00, in UTC\n * @example DateTime.local(2017, 3, 12, 5, 45) //~> 2017-03-12T05:45:00\n * @example DateTime.local(2017, 3, 12, 5, 45, 10) //~> 2017-03-12T05:45:10\n * @example DateTime.local(2017, 3, 12, 5, 45, 10, 765) //~> 2017-03-12T05:45:10.765\n * @return {DateTime}\n */\n static local() {\n const [opts, args] = lastOpts(arguments),\n [year, month, day, hour, minute, second, millisecond] = args;\n return quickDT({ year, month, day, hour, minute, second, millisecond }, opts);\n }\n\n /**\n * Create a DateTime in UTC\n * @param {number} [year] - The calendar year. If omitted (as in, call `utc()` with no arguments), the current time will be used\n * @param {number} [month=1] - The month, 1-indexed\n * @param {number} [day=1] - The day of the month\n * @param {number} [hour=0] - The hour of the day, in 24-hour time\n * @param {number} [minute=0] - The minute of the hour, meaning a number between 0 and 59\n * @param {number} [second=0] - The second of the minute, meaning a number between 0 and 59\n * @param {number} [millisecond=0] - The millisecond of the second, meaning a number between 0 and 999\n * @param {Object} options - configuration options for the DateTime\n * @param {string} [options.locale] - a locale to set on the resulting DateTime instance\n * @param {string} [options.outputCalendar] - the output calendar to set on the resulting DateTime instance\n * @param {string} [options.numberingSystem] - the numbering system to set on the resulting DateTime instance\n * @example DateTime.utc() //~> now\n * @example DateTime.utc(2017) //~> 2017-01-01T00:00:00Z\n * @example DateTime.utc(2017, 3) //~> 2017-03-01T00:00:00Z\n * @example DateTime.utc(2017, 3, 12) //~> 2017-03-12T00:00:00Z\n * @example DateTime.utc(2017, 3, 12, 5) //~> 2017-03-12T05:00:00Z\n * @example DateTime.utc(2017, 3, 12, 5, 45) //~> 2017-03-12T05:45:00Z\n * @example DateTime.utc(2017, 3, 12, 5, 45, { locale: \"fr\" }) //~> 2017-03-12T05:45:00Z with a French locale\n * @example DateTime.utc(2017, 3, 12, 5, 45, 10) //~> 2017-03-12T05:45:10Z\n * @example DateTime.utc(2017, 3, 12, 5, 45, 10, 765, { locale: \"fr\" }) //~> 2017-03-12T05:45:10.765Z with a French locale\n * @return {DateTime}\n */\n static utc() {\n const [opts, args] = lastOpts(arguments),\n [year, month, day, hour, minute, second, millisecond] = args;\n\n opts.zone = FixedOffsetZone.utcInstance;\n return quickDT({ year, month, day, hour, minute, second, millisecond }, opts);\n }\n\n /**\n * Create a DateTime from a JavaScript Date object. Uses the default zone.\n * @param {Date} date - a JavaScript Date object\n * @param {Object} options - configuration options for the DateTime\n * @param {string|Zone} [options.zone='local'] - the zone to place the DateTime into\n * @return {DateTime}\n */\n static fromJSDate(date, options = {}) {\n const ts = isDate(date) ? date.valueOf() : NaN;\n if (Number.isNaN(ts)) {\n return DateTime.invalid(\"invalid input\");\n }\n\n const zoneToUse = normalizeZone(options.zone, Settings.defaultZone);\n if (!zoneToUse.isValid) {\n return DateTime.invalid(unsupportedZone(zoneToUse));\n }\n\n return new DateTime({\n ts: ts,\n zone: zoneToUse,\n loc: Locale.fromObject(options),\n });\n }\n\n /**\n * Create a DateTime from a number of milliseconds since the epoch (meaning since 1 January 1970 00:00:00 UTC). Uses the default zone.\n * @param {number} milliseconds - a number of milliseconds since 1970 UTC\n * @param {Object} options - configuration options for the DateTime\n * @param {string|Zone} [options.zone='local'] - the zone to place the DateTime into\n * @param {string} [options.locale] - a locale to set on the resulting DateTime instance\n * @param {string} options.outputCalendar - the output calendar to set on the resulting DateTime instance\n * @param {string} options.numberingSystem - the numbering system to set on the resulting DateTime instance\n * @return {DateTime}\n */\n static fromMillis(milliseconds, options = {}) {\n if (!isNumber(milliseconds)) {\n throw new InvalidArgumentError(\n `fromMillis requires a numerical input, but received a ${typeof milliseconds} with value ${milliseconds}`\n );\n } else if (milliseconds < -MAX_DATE || milliseconds > MAX_DATE) {\n // this isn't perfect because because we can still end up out of range because of additional shifting, but it's a start\n return DateTime.invalid(\"Timestamp out of range\");\n } else {\n return new DateTime({\n ts: milliseconds,\n zone: normalizeZone(options.zone, Settings.defaultZone),\n loc: Locale.fromObject(options),\n });\n }\n }\n\n /**\n * Create a DateTime from a number of seconds since the epoch (meaning since 1 January 1970 00:00:00 UTC). Uses the default zone.\n * @param {number} seconds - a number of seconds since 1970 UTC\n * @param {Object} options - configuration options for the DateTime\n * @param {string|Zone} [options.zone='local'] - the zone to place the DateTime into\n * @param {string} [options.locale] - a locale to set on the resulting DateTime instance\n * @param {string} options.outputCalendar - the output calendar to set on the resulting DateTime instance\n * @param {string} options.numberingSystem - the numbering system to set on the resulting DateTime instance\n * @return {DateTime}\n */\n static fromSeconds(seconds, options = {}) {\n if (!isNumber(seconds)) {\n throw new InvalidArgumentError(\"fromSeconds requires a numerical input\");\n } else {\n return new DateTime({\n ts: seconds * 1000,\n zone: normalizeZone(options.zone, Settings.defaultZone),\n loc: Locale.fromObject(options),\n });\n }\n }\n\n /**\n * Create a DateTime from a JavaScript object with keys like 'year' and 'hour' with reasonable defaults.\n * @param {Object} obj - the object to create the DateTime from\n * @param {number} obj.year - a year, such as 1987\n * @param {number} obj.month - a month, 1-12\n * @param {number} obj.day - a day of the month, 1-31, depending on the month\n * @param {number} obj.ordinal - day of the year, 1-365 or 366\n * @param {number} obj.weekYear - an ISO week year\n * @param {number} obj.weekNumber - an ISO week number, between 1 and 52 or 53, depending on the year\n * @param {number} obj.weekday - an ISO weekday, 1-7, where 1 is Monday and 7 is Sunday\n * @param {number} obj.localWeekYear - a week year, according to the locale\n * @param {number} obj.localWeekNumber - a week number, between 1 and 52 or 53, depending on the year, according to the locale\n * @param {number} obj.localWeekday - a weekday, 1-7, where 1 is the first and 7 is the last day of the week, according to the locale\n * @param {number} obj.hour - hour of the day, 0-23\n * @param {number} obj.minute - minute of the hour, 0-59\n * @param {number} obj.second - second of the minute, 0-59\n * @param {number} obj.millisecond - millisecond of the second, 0-999\n * @param {Object} opts - options for creating this DateTime\n * @param {string|Zone} [opts.zone='local'] - interpret the numbers in the context of a particular zone. Can take any value taken as the first argument to setZone()\n * @param {string} [opts.locale='system\\'s locale'] - a locale to set on the resulting DateTime instance\n * @param {string} opts.outputCalendar - the output calendar to set on the resulting DateTime instance\n * @param {string} opts.numberingSystem - the numbering system to set on the resulting DateTime instance\n * @example DateTime.fromObject({ year: 1982, month: 5, day: 25}).toISODate() //=> '1982-05-25'\n * @example DateTime.fromObject({ year: 1982 }).toISODate() //=> '1982-01-01'\n * @example DateTime.fromObject({ hour: 10, minute: 26, second: 6 }) //~> today at 10:26:06\n * @example DateTime.fromObject({ hour: 10, minute: 26, second: 6 }, { zone: 'utc' }),\n * @example DateTime.fromObject({ hour: 10, minute: 26, second: 6 }, { zone: 'local' })\n * @example DateTime.fromObject({ hour: 10, minute: 26, second: 6 }, { zone: 'America/New_York' })\n * @example DateTime.fromObject({ weekYear: 2016, weekNumber: 2, weekday: 3 }).toISODate() //=> '2016-01-13'\n * @example DateTime.fromObject({ localWeekYear: 2022, localWeekNumber: 1, localWeekday: 1 }, { locale: \"en-US\" }).toISODate() //=> '2021-12-26'\n * @return {DateTime}\n */\n static fromObject(obj, opts = {}) {\n obj = obj || {};\n const zoneToUse = normalizeZone(opts.zone, Settings.defaultZone);\n if (!zoneToUse.isValid) {\n return DateTime.invalid(unsupportedZone(zoneToUse));\n }\n\n const loc = Locale.fromObject(opts);\n const normalized = normalizeObject(obj, normalizeUnitWithLocalWeeks);\n const { minDaysInFirstWeek, startOfWeek } = usesLocalWeekValues(normalized, loc);\n\n const tsNow = Settings.now(),\n offsetProvis = !isUndefined(opts.specificOffset)\n ? opts.specificOffset\n : zoneToUse.offset(tsNow),\n containsOrdinal = !isUndefined(normalized.ordinal),\n containsGregorYear = !isUndefined(normalized.year),\n containsGregorMD = !isUndefined(normalized.month) || !isUndefined(normalized.day),\n containsGregor = containsGregorYear || containsGregorMD,\n definiteWeekDef = normalized.weekYear || normalized.weekNumber;\n\n // cases:\n // just a weekday -> this week's instance of that weekday, no worries\n // (gregorian data or ordinal) + (weekYear or weekNumber) -> error\n // (gregorian month or day) + ordinal -> error\n // otherwise just use weeks or ordinals or gregorian, depending on what's specified\n\n if ((containsGregor || containsOrdinal) && definiteWeekDef) {\n throw new ConflictingSpecificationError(\n \"Can't mix weekYear/weekNumber units with year/month/day or ordinals\"\n );\n }\n\n if (containsGregorMD && containsOrdinal) {\n throw new ConflictingSpecificationError(\"Can't mix ordinal dates with month/day\");\n }\n\n const useWeekData = definiteWeekDef || (normalized.weekday && !containsGregor);\n\n // configure ourselves to deal with gregorian dates or week stuff\n let units,\n defaultValues,\n objNow = tsToObj(tsNow, offsetProvis);\n if (useWeekData) {\n units = orderedWeekUnits;\n defaultValues = defaultWeekUnitValues;\n objNow = gregorianToWeek(objNow, minDaysInFirstWeek, startOfWeek);\n } else if (containsOrdinal) {\n units = orderedOrdinalUnits;\n defaultValues = defaultOrdinalUnitValues;\n objNow = gregorianToOrdinal(objNow);\n } else {\n units = orderedUnits;\n defaultValues = defaultUnitValues;\n }\n\n // set default values for missing stuff\n let foundFirst = false;\n for (const u of units) {\n const v = normalized[u];\n if (!isUndefined(v)) {\n foundFirst = true;\n } else if (foundFirst) {\n normalized[u] = defaultValues[u];\n } else {\n normalized[u] = objNow[u];\n }\n }\n\n // make sure the values we have are in range\n const higherOrderInvalid = useWeekData\n ? hasInvalidWeekData(normalized, minDaysInFirstWeek, startOfWeek)\n : containsOrdinal\n ? hasInvalidOrdinalData(normalized)\n : hasInvalidGregorianData(normalized),\n invalid = higherOrderInvalid || hasInvalidTimeData(normalized);\n\n if (invalid) {\n return DateTime.invalid(invalid);\n }\n\n // compute the actual time\n const gregorian = useWeekData\n ? weekToGregorian(normalized, minDaysInFirstWeek, startOfWeek)\n : containsOrdinal\n ? ordinalToGregorian(normalized)\n : normalized,\n [tsFinal, offsetFinal] = objToTS(gregorian, offsetProvis, zoneToUse),\n inst = new DateTime({\n ts: tsFinal,\n zone: zoneToUse,\n o: offsetFinal,\n loc,\n });\n\n // gregorian data + weekday serves only to validate\n if (normalized.weekday && containsGregor && obj.weekday !== inst.weekday) {\n return DateTime.invalid(\n \"mismatched weekday\",\n `you can't specify both a weekday of ${normalized.weekday} and a date of ${inst.toISO()}`\n );\n }\n\n return inst;\n }\n\n /**\n * Create a DateTime from an ISO 8601 string\n * @param {string} text - the ISO string\n * @param {Object} opts - options to affect the creation\n * @param {string|Zone} [opts.zone='local'] - use this zone if no offset is specified in the input string itself. Will also convert the time to this zone\n * @param {boolean} [opts.setZone=false] - override the zone with a fixed-offset zone specified in the string itself, if it specifies one\n * @param {string} [opts.locale='system's locale'] - a locale to set on the resulting DateTime instance\n * @param {string} [opts.outputCalendar] - the output calendar to set on the resulting DateTime instance\n * @param {string} [opts.numberingSystem] - the numbering system to set on the resulting DateTime instance\n * @example DateTime.fromISO('2016-05-25T09:08:34.123')\n * @example DateTime.fromISO('2016-05-25T09:08:34.123+06:00')\n * @example DateTime.fromISO('2016-05-25T09:08:34.123+06:00', {setZone: true})\n * @example DateTime.fromISO('2016-05-25T09:08:34.123', {zone: 'utc'})\n * @example DateTime.fromISO('2016-W05-4')\n * @return {DateTime}\n */\n static fromISO(text, opts = {}) {\n const [vals, parsedZone] = parseISODate(text);\n return parseDataToDateTime(vals, parsedZone, opts, \"ISO 8601\", text);\n }\n\n /**\n * Create a DateTime from an RFC 2822 string\n * @param {string} text - the RFC 2822 string\n * @param {Object} opts - options to affect the creation\n * @param {string|Zone} [opts.zone='local'] - convert the time to this zone. Since the offset is always specified in the string itself, this has no effect on the interpretation of string, merely the zone the resulting DateTime is expressed in.\n * @param {boolean} [opts.setZone=false] - override the zone with a fixed-offset zone specified in the string itself, if it specifies one\n * @param {string} [opts.locale='system's locale'] - a locale to set on the resulting DateTime instance\n * @param {string} opts.outputCalendar - the output calendar to set on the resulting DateTime instance\n * @param {string} opts.numberingSystem - the numbering system to set on the resulting DateTime instance\n * @example DateTime.fromRFC2822('25 Nov 2016 13:23:12 GMT')\n * @example DateTime.fromRFC2822('Fri, 25 Nov 2016 13:23:12 +0600')\n * @example DateTime.fromRFC2822('25 Nov 2016 13:23 Z')\n * @return {DateTime}\n */\n static fromRFC2822(text, opts = {}) {\n const [vals, parsedZone] = parseRFC2822Date(text);\n return parseDataToDateTime(vals, parsedZone, opts, \"RFC 2822\", text);\n }\n\n /**\n * Create a DateTime from an HTTP header date\n * @see https://www.w3.org/Protocols/rfc2616/rfc2616-sec3.html#sec3.3.1\n * @param {string} text - the HTTP header date\n * @param {Object} opts - options to affect the creation\n * @param {string|Zone} [opts.zone='local'] - convert the time to this zone. Since HTTP dates are always in UTC, this has no effect on the interpretation of string, merely the zone the resulting DateTime is expressed in.\n * @param {boolean} [opts.setZone=false] - override the zone with the fixed-offset zone specified in the string. For HTTP dates, this is always UTC, so this option is equivalent to setting the `zone` option to 'utc', but this option is included for consistency with similar methods.\n * @param {string} [opts.locale='system's locale'] - a locale to set on the resulting DateTime instance\n * @param {string} opts.outputCalendar - the output calendar to set on the resulting DateTime instance\n * @param {string} opts.numberingSystem - the numbering system to set on the resulting DateTime instance\n * @example DateTime.fromHTTP('Sun, 06 Nov 1994 08:49:37 GMT')\n * @example DateTime.fromHTTP('Sunday, 06-Nov-94 08:49:37 GMT')\n * @example DateTime.fromHTTP('Sun Nov 6 08:49:37 1994')\n * @return {DateTime}\n */\n static fromHTTP(text, opts = {}) {\n const [vals, parsedZone] = parseHTTPDate(text);\n return parseDataToDateTime(vals, parsedZone, opts, \"HTTP\", opts);\n }\n\n /**\n * Create a DateTime from an input string and format string.\n * Defaults to en-US if no locale has been specified, regardless of the system's locale. For a table of tokens and their interpretations, see [here](https://moment.github.io/luxon/#/parsing?id=table-of-tokens).\n * @param {string} text - the string to parse\n * @param {string} fmt - the format the string is expected to be in (see the link below for the formats)\n * @param {Object} opts - options to affect the creation\n * @param {string|Zone} [opts.zone='local'] - use this zone if no offset is specified in the input string itself. Will also convert the DateTime to this zone\n * @param {boolean} [opts.setZone=false] - override the zone with a zone specified in the string itself, if it specifies one\n * @param {string} [opts.locale='en-US'] - a locale string to use when parsing. Will also set the DateTime to this locale\n * @param {string} opts.numberingSystem - the numbering system to use when parsing. Will also set the resulting DateTime to this numbering system\n * @param {string} opts.outputCalendar - the output calendar to set on the resulting DateTime instance\n * @return {DateTime}\n */\n static fromFormat(text, fmt, opts = {}) {\n if (isUndefined(text) || isUndefined(fmt)) {\n throw new InvalidArgumentError(\"fromFormat requires an input string and a format\");\n }\n\n const { locale = null, numberingSystem = null } = opts,\n localeToUse = Locale.fromOpts({\n locale,\n numberingSystem,\n defaultToEN: true,\n }),\n [vals, parsedZone, specificOffset, invalid] = parseFromTokens(localeToUse, text, fmt);\n if (invalid) {\n return DateTime.invalid(invalid);\n } else {\n return parseDataToDateTime(vals, parsedZone, opts, `format ${fmt}`, text, specificOffset);\n }\n }\n\n /**\n * @deprecated use fromFormat instead\n */\n static fromString(text, fmt, opts = {}) {\n return DateTime.fromFormat(text, fmt, opts);\n }\n\n /**\n * Create a DateTime from a SQL date, time, or datetime\n * Defaults to en-US if no locale has been specified, regardless of the system's locale\n * @param {string} text - the string to parse\n * @param {Object} opts - options to affect the creation\n * @param {string|Zone} [opts.zone='local'] - use this zone if no offset is specified in the input string itself. Will also convert the DateTime to this zone\n * @param {boolean} [opts.setZone=false] - override the zone with a zone specified in the string itself, if it specifies one\n * @param {string} [opts.locale='en-US'] - a locale string to use when parsing. Will also set the DateTime to this locale\n * @param {string} opts.numberingSystem - the numbering system to use when parsing. Will also set the resulting DateTime to this numbering system\n * @param {string} opts.outputCalendar - the output calendar to set on the resulting DateTime instance\n * @example DateTime.fromSQL('2017-05-15')\n * @example DateTime.fromSQL('2017-05-15 09:12:34')\n * @example DateTime.fromSQL('2017-05-15 09:12:34.342')\n * @example DateTime.fromSQL('2017-05-15 09:12:34.342+06:00')\n * @example DateTime.fromSQL('2017-05-15 09:12:34.342 America/Los_Angeles')\n * @example DateTime.fromSQL('2017-05-15 09:12:34.342 America/Los_Angeles', { setZone: true })\n * @example DateTime.fromSQL('2017-05-15 09:12:34.342', { zone: 'America/Los_Angeles' })\n * @example DateTime.fromSQL('09:12:34.342')\n * @return {DateTime}\n */\n static fromSQL(text, opts = {}) {\n const [vals, parsedZone] = parseSQL(text);\n return parseDataToDateTime(vals, parsedZone, opts, \"SQL\", text);\n }\n\n /**\n * Create an invalid DateTime.\n * @param {string} reason - simple string of why this DateTime is invalid. Should not contain parameters or anything else data-dependent.\n * @param {string} [explanation=null] - longer explanation, may include parameters and other useful debugging information\n * @return {DateTime}\n */\n static invalid(reason, explanation = null) {\n if (!reason) {\n throw new InvalidArgumentError(\"need to specify a reason the DateTime is invalid\");\n }\n\n const invalid = reason instanceof Invalid ? reason : new Invalid(reason, explanation);\n\n if (Settings.throwOnInvalid) {\n throw new InvalidDateTimeError(invalid);\n } else {\n return new DateTime({ invalid });\n }\n }\n\n /**\n * Check if an object is an instance of DateTime. Works across context boundaries\n * @param {object} o\n * @return {boolean}\n */\n static isDateTime(o) {\n return (o && o.isLuxonDateTime) || false;\n }\n\n /**\n * Produce the format string for a set of options\n * @param formatOpts\n * @param localeOpts\n * @returns {string}\n */\n static parseFormatForOpts(formatOpts, localeOpts = {}) {\n const tokenList = formatOptsToTokens(formatOpts, Locale.fromObject(localeOpts));\n return !tokenList ? null : tokenList.map((t) => (t ? t.val : null)).join(\"\");\n }\n\n /**\n * Produce the the fully expanded format token for the locale\n * Does NOT quote characters, so quoted tokens will not round trip correctly\n * @param fmt\n * @param localeOpts\n * @returns {string}\n */\n static expandFormat(fmt, localeOpts = {}) {\n const expanded = expandMacroTokens(Formatter.parseFormat(fmt), Locale.fromObject(localeOpts));\n return expanded.map((t) => t.val).join(\"\");\n }\n\n // INFO\n\n /**\n * Get the value of unit.\n * @param {string} unit - a unit such as 'minute' or 'day'\n * @example DateTime.local(2017, 7, 4).get('month'); //=> 7\n * @example DateTime.local(2017, 7, 4).get('day'); //=> 4\n * @return {number}\n */\n get(unit) {\n return this[unit];\n }\n\n /**\n * Returns whether the DateTime is valid. Invalid DateTimes occur when:\n * * The DateTime was created from invalid calendar information, such as the 13th month or February 30\n * * The DateTime was created by an operation on another invalid date\n * @type {boolean}\n */\n get isValid() {\n return this.invalid === null;\n }\n\n /**\n * Returns an error code if this DateTime is invalid, or null if the DateTime is valid\n * @type {string}\n */\n get invalidReason() {\n return this.invalid ? this.invalid.reason : null;\n }\n\n /**\n * Returns an explanation of why this DateTime became invalid, or null if the DateTime is valid\n * @type {string}\n */\n get invalidExplanation() {\n return this.invalid ? this.invalid.explanation : null;\n }\n\n /**\n * Get the locale of a DateTime, such 'en-GB'. The locale is used when formatting the DateTime\n *\n * @type {string}\n */\n get locale() {\n return this.isValid ? this.loc.locale : null;\n }\n\n /**\n * Get the numbering system of a DateTime, such 'beng'. The numbering system is used when formatting the DateTime\n *\n * @type {string}\n */\n get numberingSystem() {\n return this.isValid ? this.loc.numberingSystem : null;\n }\n\n /**\n * Get the output calendar of a DateTime, such 'islamic'. The output calendar is used when formatting the DateTime\n *\n * @type {string}\n */\n get outputCalendar() {\n return this.isValid ? this.loc.outputCalendar : null;\n }\n\n /**\n * Get the time zone associated with this DateTime.\n * @type {Zone}\n */\n get zone() {\n return this._zone;\n }\n\n /**\n * Get the name of the time zone.\n * @type {string}\n */\n get zoneName() {\n return this.isValid ? this.zone.name : null;\n }\n\n /**\n * Get the year\n * @example DateTime.local(2017, 5, 25).year //=> 2017\n * @type {number}\n */\n get year() {\n return this.isValid ? this.c.year : NaN;\n }\n\n /**\n * Get the quarter\n * @example DateTime.local(2017, 5, 25).quarter //=> 2\n * @type {number}\n */\n get quarter() {\n return this.isValid ? Math.ceil(this.c.month / 3) : NaN;\n }\n\n /**\n * Get the month (1-12).\n * @example DateTime.local(2017, 5, 25).month //=> 5\n * @type {number}\n */\n get month() {\n return this.isValid ? this.c.month : NaN;\n }\n\n /**\n * Get the day of the month (1-30ish).\n * @example DateTime.local(2017, 5, 25).day //=> 25\n * @type {number}\n */\n get day() {\n return this.isValid ? this.c.day : NaN;\n }\n\n /**\n * Get the hour of the day (0-23).\n * @example DateTime.local(2017, 5, 25, 9).hour //=> 9\n * @type {number}\n */\n get hour() {\n return this.isValid ? this.c.hour : NaN;\n }\n\n /**\n * Get the minute of the hour (0-59).\n * @example DateTime.local(2017, 5, 25, 9, 30).minute //=> 30\n * @type {number}\n */\n get minute() {\n return this.isValid ? this.c.minute : NaN;\n }\n\n /**\n * Get the second of the minute (0-59).\n * @example DateTime.local(2017, 5, 25, 9, 30, 52).second //=> 52\n * @type {number}\n */\n get second() {\n return this.isValid ? this.c.second : NaN;\n }\n\n /**\n * Get the millisecond of the second (0-999).\n * @example DateTime.local(2017, 5, 25, 9, 30, 52, 654).millisecond //=> 654\n * @type {number}\n */\n get millisecond() {\n return this.isValid ? this.c.millisecond : NaN;\n }\n\n /**\n * Get the week year\n * @see https://en.wikipedia.org/wiki/ISO_week_date\n * @example DateTime.local(2014, 12, 31).weekYear //=> 2015\n * @type {number}\n */\n get weekYear() {\n return this.isValid ? possiblyCachedWeekData(this).weekYear : NaN;\n }\n\n /**\n * Get the week number of the week year (1-52ish).\n * @see https://en.wikipedia.org/wiki/ISO_week_date\n * @example DateTime.local(2017, 5, 25).weekNumber //=> 21\n * @type {number}\n */\n get weekNumber() {\n return this.isValid ? possiblyCachedWeekData(this).weekNumber : NaN;\n }\n\n /**\n * Get the day of the week.\n * 1 is Monday and 7 is Sunday\n * @see https://en.wikipedia.org/wiki/ISO_week_date\n * @example DateTime.local(2014, 11, 31).weekday //=> 4\n * @type {number}\n */\n get weekday() {\n return this.isValid ? possiblyCachedWeekData(this).weekday : NaN;\n }\n\n /**\n * Returns true if this date is on a weekend according to the locale, false otherwise\n * @returns {boolean}\n */\n get isWeekend() {\n return this.isValid && this.loc.getWeekendDays().includes(this.weekday);\n }\n\n /**\n * Get the day of the week according to the locale.\n * 1 is the first day of the week and 7 is the last day of the week.\n * If the locale assigns Sunday as the first day of the week, then a date which is a Sunday will return 1,\n * @returns {number}\n */\n get localWeekday() {\n return this.isValid ? possiblyCachedLocalWeekData(this).weekday : NaN;\n }\n\n /**\n * Get the week number of the week year according to the locale. Different locales assign week numbers differently,\n * because the week can start on different days of the week (see localWeekday) and because a different number of days\n * is required for a week to count as the first week of a year.\n * @returns {number}\n */\n get localWeekNumber() {\n return this.isValid ? possiblyCachedLocalWeekData(this).weekNumber : NaN;\n }\n\n /**\n * Get the week year according to the locale. Different locales assign week numbers (and therefor week years)\n * differently, see localWeekNumber.\n * @returns {number}\n */\n get localWeekYear() {\n return this.isValid ? possiblyCachedLocalWeekData(this).weekYear : NaN;\n }\n\n /**\n * Get the ordinal (meaning the day of the year)\n * @example DateTime.local(2017, 5, 25).ordinal //=> 145\n * @type {number|DateTime}\n */\n get ordinal() {\n return this.isValid ? gregorianToOrdinal(this.c).ordinal : NaN;\n }\n\n /**\n * Get the human readable short month name, such as 'Oct'.\n * Defaults to the system's locale if no locale has been specified\n * @example DateTime.local(2017, 10, 30).monthShort //=> Oct\n * @type {string}\n */\n get monthShort() {\n return this.isValid ? Info.months(\"short\", { locObj: this.loc })[this.month - 1] : null;\n }\n\n /**\n * Get the human readable long month name, such as 'October'.\n * Defaults to the system's locale if no locale has been specified\n * @example DateTime.local(2017, 10, 30).monthLong //=> October\n * @type {string}\n */\n get monthLong() {\n return this.isValid ? Info.months(\"long\", { locObj: this.loc })[this.month - 1] : null;\n }\n\n /**\n * Get the human readable short weekday, such as 'Mon'.\n * Defaults to the system's locale if no locale has been specified\n * @example DateTime.local(2017, 10, 30).weekdayShort //=> Mon\n * @type {string}\n */\n get weekdayShort() {\n return this.isValid ? Info.weekdays(\"short\", { locObj: this.loc })[this.weekday - 1] : null;\n }\n\n /**\n * Get the human readable long weekday, such as 'Monday'.\n * Defaults to the system's locale if no locale has been specified\n * @example DateTime.local(2017, 10, 30).weekdayLong //=> Monday\n * @type {string}\n */\n get weekdayLong() {\n return this.isValid ? Info.weekdays(\"long\", { locObj: this.loc })[this.weekday - 1] : null;\n }\n\n /**\n * Get the UTC offset of this DateTime in minutes\n * @example DateTime.now().offset //=> -240\n * @example DateTime.utc().offset //=> 0\n * @type {number}\n */\n get offset() {\n return this.isValid ? +this.o : NaN;\n }\n\n /**\n * Get the short human name for the zone's current offset, for example \"EST\" or \"EDT\".\n * Defaults to the system's locale if no locale has been specified\n * @type {string}\n */\n get offsetNameShort() {\n if (this.isValid) {\n return this.zone.offsetName(this.ts, {\n format: \"short\",\n locale: this.locale,\n });\n } else {\n return null;\n }\n }\n\n /**\n * Get the long human name for the zone's current offset, for example \"Eastern Standard Time\" or \"Eastern Daylight Time\".\n * Defaults to the system's locale if no locale has been specified\n * @type {string}\n */\n get offsetNameLong() {\n if (this.isValid) {\n return this.zone.offsetName(this.ts, {\n format: \"long\",\n locale: this.locale,\n });\n } else {\n return null;\n }\n }\n\n /**\n * Get whether this zone's offset ever changes, as in a DST.\n * @type {boolean}\n */\n get isOffsetFixed() {\n return this.isValid ? this.zone.isUniversal : null;\n }\n\n /**\n * Get whether the DateTime is in a DST.\n * @type {boolean}\n */\n get isInDST() {\n if (this.isOffsetFixed) {\n return false;\n } else {\n return (\n this.offset > this.set({ month: 1, day: 1 }).offset ||\n this.offset > this.set({ month: 5 }).offset\n );\n }\n }\n\n /**\n * Get those DateTimes which have the same local time as this DateTime, but a different offset from UTC\n * in this DateTime's zone. During DST changes local time can be ambiguous, for example\n * `2023-10-29T02:30:00` in `Europe/Berlin` can have offset `+01:00` or `+02:00`.\n * This method will return both possible DateTimes if this DateTime's local time is ambiguous.\n * @returns {DateTime[]}\n */\n getPossibleOffsets() {\n if (!this.isValid || this.isOffsetFixed) {\n return [this];\n }\n const dayMs = 86400000;\n const minuteMs = 60000;\n const localTS = objToLocalTS(this.c);\n const oEarlier = this.zone.offset(localTS - dayMs);\n const oLater = this.zone.offset(localTS + dayMs);\n\n const o1 = this.zone.offset(localTS - oEarlier * minuteMs);\n const o2 = this.zone.offset(localTS - oLater * minuteMs);\n if (o1 === o2) {\n return [this];\n }\n const ts1 = localTS - o1 * minuteMs;\n const ts2 = localTS - o2 * minuteMs;\n const c1 = tsToObj(ts1, o1);\n const c2 = tsToObj(ts2, o2);\n if (\n c1.hour === c2.hour &&\n c1.minute === c2.minute &&\n c1.second === c2.second &&\n c1.millisecond === c2.millisecond\n ) {\n return [clone(this, { ts: ts1 }), clone(this, { ts: ts2 })];\n }\n return [this];\n }\n\n /**\n * Returns true if this DateTime is in a leap year, false otherwise\n * @example DateTime.local(2016).isInLeapYear //=> true\n * @example DateTime.local(2013).isInLeapYear //=> false\n * @type {boolean}\n */\n get isInLeapYear() {\n return isLeapYear(this.year);\n }\n\n /**\n * Returns the number of days in this DateTime's month\n * @example DateTime.local(2016, 2).daysInMonth //=> 29\n * @example DateTime.local(2016, 3).daysInMonth //=> 31\n * @type {number}\n */\n get daysInMonth() {\n return daysInMonth(this.year, this.month);\n }\n\n /**\n * Returns the number of days in this DateTime's year\n * @example DateTime.local(2016).daysInYear //=> 366\n * @example DateTime.local(2013).daysInYear //=> 365\n * @type {number}\n */\n get daysInYear() {\n return this.isValid ? daysInYear(this.year) : NaN;\n }\n\n /**\n * Returns the number of weeks in this DateTime's year\n * @see https://en.wikipedia.org/wiki/ISO_week_date\n * @example DateTime.local(2004).weeksInWeekYear //=> 53\n * @example DateTime.local(2013).weeksInWeekYear //=> 52\n * @type {number}\n */\n get weeksInWeekYear() {\n return this.isValid ? weeksInWeekYear(this.weekYear) : NaN;\n }\n\n /**\n * Returns the number of weeks in this DateTime's local week year\n * @example DateTime.local(2020, 6, {locale: 'en-US'}).weeksInLocalWeekYear //=> 52\n * @example DateTime.local(2020, 6, {locale: 'de-DE'}).weeksInLocalWeekYear //=> 53\n * @type {number}\n */\n get weeksInLocalWeekYear() {\n return this.isValid\n ? weeksInWeekYear(\n this.localWeekYear,\n this.loc.getMinDaysInFirstWeek(),\n this.loc.getStartOfWeek()\n )\n : NaN;\n }\n\n /**\n * Returns the resolved Intl options for this DateTime.\n * This is useful in understanding the behavior of formatting methods\n * @param {Object} opts - the same options as toLocaleString\n * @return {Object}\n */\n resolvedLocaleOptions(opts = {}) {\n const { locale, numberingSystem, calendar } = Formatter.create(\n this.loc.clone(opts),\n opts\n ).resolvedOptions(this);\n return { locale, numberingSystem, outputCalendar: calendar };\n }\n\n // TRANSFORM\n\n /**\n * \"Set\" the DateTime's zone to UTC. Returns a newly-constructed DateTime.\n *\n * Equivalent to {@link DateTime#setZone}('utc')\n * @param {number} [offset=0] - optionally, an offset from UTC in minutes\n * @param {Object} [opts={}] - options to pass to `setZone()`\n * @return {DateTime}\n */\n toUTC(offset = 0, opts = {}) {\n return this.setZone(FixedOffsetZone.instance(offset), opts);\n }\n\n /**\n * \"Set\" the DateTime's zone to the host's local zone. Returns a newly-constructed DateTime.\n *\n * Equivalent to `setZone('local')`\n * @return {DateTime}\n */\n toLocal() {\n return this.setZone(Settings.defaultZone);\n }\n\n /**\n * \"Set\" the DateTime's zone to specified zone. Returns a newly-constructed DateTime.\n *\n * By default, the setter keeps the underlying time the same (as in, the same timestamp), but the new instance will report different local times and consider DSTs when making computations, as with {@link DateTime#plus}. You may wish to use {@link DateTime#toLocal} and {@link DateTime#toUTC} which provide simple convenience wrappers for commonly used zones.\n * @param {string|Zone} [zone='local'] - a zone identifier. As a string, that can be any IANA zone supported by the host environment, or a fixed-offset name of the form 'UTC+3', or the strings 'local' or 'utc'. You may also supply an instance of a {@link DateTime#Zone} class.\n * @param {Object} opts - options\n * @param {boolean} [opts.keepLocalTime=false] - If true, adjust the underlying time so that the local time stays the same, but in the target zone. You should rarely need this.\n * @return {DateTime}\n */\n setZone(zone, { keepLocalTime = false, keepCalendarTime = false } = {}) {\n zone = normalizeZone(zone, Settings.defaultZone);\n if (zone.equals(this.zone)) {\n return this;\n } else if (!zone.isValid) {\n return DateTime.invalid(unsupportedZone(zone));\n } else {\n let newTS = this.ts;\n if (keepLocalTime || keepCalendarTime) {\n const offsetGuess = zone.offset(this.ts);\n const asObj = this.toObject();\n [newTS] = objToTS(asObj, offsetGuess, zone);\n }\n return clone(this, { ts: newTS, zone });\n }\n }\n\n /**\n * \"Set\" the locale, numberingSystem, or outputCalendar. Returns a newly-constructed DateTime.\n * @param {Object} properties - the properties to set\n * @example DateTime.local(2017, 5, 25).reconfigure({ locale: 'en-GB' })\n * @return {DateTime}\n */\n reconfigure({ locale, numberingSystem, outputCalendar } = {}) {\n const loc = this.loc.clone({ locale, numberingSystem, outputCalendar });\n return clone(this, { loc });\n }\n\n /**\n * \"Set\" the locale. Returns a newly-constructed DateTime.\n * Just a convenient alias for reconfigure({ locale })\n * @example DateTime.local(2017, 5, 25).setLocale('en-GB')\n * @return {DateTime}\n */\n setLocale(locale) {\n return this.reconfigure({ locale });\n }\n\n /**\n * \"Set\" the values of specified units. Returns a newly-constructed DateTime.\n * You can only set units with this method; for \"setting\" metadata, see {@link DateTime#reconfigure} and {@link DateTime#setZone}.\n *\n * This method also supports setting locale-based week units, i.e. `localWeekday`, `localWeekNumber` and `localWeekYear`.\n * They cannot be mixed with ISO-week units like `weekday`.\n * @param {Object} values - a mapping of units to numbers\n * @example dt.set({ year: 2017 })\n * @example dt.set({ hour: 8, minute: 30 })\n * @example dt.set({ weekday: 5 })\n * @example dt.set({ year: 2005, ordinal: 234 })\n * @return {DateTime}\n */\n set(values) {\n if (!this.isValid) return this;\n\n const normalized = normalizeObject(values, normalizeUnitWithLocalWeeks);\n const { minDaysInFirstWeek, startOfWeek } = usesLocalWeekValues(normalized, this.loc);\n\n const settingWeekStuff =\n !isUndefined(normalized.weekYear) ||\n !isUndefined(normalized.weekNumber) ||\n !isUndefined(normalized.weekday),\n containsOrdinal = !isUndefined(normalized.ordinal),\n containsGregorYear = !isUndefined(normalized.year),\n containsGregorMD = !isUndefined(normalized.month) || !isUndefined(normalized.day),\n containsGregor = containsGregorYear || containsGregorMD,\n definiteWeekDef = normalized.weekYear || normalized.weekNumber;\n\n if ((containsGregor || containsOrdinal) && definiteWeekDef) {\n throw new ConflictingSpecificationError(\n \"Can't mix weekYear/weekNumber units with year/month/day or ordinals\"\n );\n }\n\n if (containsGregorMD && containsOrdinal) {\n throw new ConflictingSpecificationError(\"Can't mix ordinal dates with month/day\");\n }\n\n let mixed;\n if (settingWeekStuff) {\n mixed = weekToGregorian(\n { ...gregorianToWeek(this.c, minDaysInFirstWeek, startOfWeek), ...normalized },\n minDaysInFirstWeek,\n startOfWeek\n );\n } else if (!isUndefined(normalized.ordinal)) {\n mixed = ordinalToGregorian({ ...gregorianToOrdinal(this.c), ...normalized });\n } else {\n mixed = { ...this.toObject(), ...normalized };\n\n // if we didn't set the day but we ended up on an overflow date,\n // use the last day of the right month\n if (isUndefined(normalized.day)) {\n mixed.day = Math.min(daysInMonth(mixed.year, mixed.month), mixed.day);\n }\n }\n\n const [ts, o] = objToTS(mixed, this.o, this.zone);\n return clone(this, { ts, o });\n }\n\n /**\n * Add a period of time to this DateTime and return the resulting DateTime\n *\n * Adding hours, minutes, seconds, or milliseconds increases the timestamp by the right number of milliseconds. Adding days, months, or years shifts the calendar, accounting for DSTs and leap years along the way. Thus, `dt.plus({ hours: 24 })` may result in a different time than `dt.plus({ days: 1 })` if there's a DST shift in between.\n * @param {Duration|Object|number} duration - The amount to add. Either a Luxon Duration, a number of milliseconds, the object argument to Duration.fromObject()\n * @example DateTime.now().plus(123) //~> in 123 milliseconds\n * @example DateTime.now().plus({ minutes: 15 }) //~> in 15 minutes\n * @example DateTime.now().plus({ days: 1 }) //~> this time tomorrow\n * @example DateTime.now().plus({ days: -1 }) //~> this time yesterday\n * @example DateTime.now().plus({ hours: 3, minutes: 13 }) //~> in 3 hr, 13 min\n * @example DateTime.now().plus(Duration.fromObject({ hours: 3, minutes: 13 })) //~> in 3 hr, 13 min\n * @return {DateTime}\n */\n plus(duration) {\n if (!this.isValid) return this;\n const dur = Duration.fromDurationLike(duration);\n return clone(this, adjustTime(this, dur));\n }\n\n /**\n * Subtract a period of time to this DateTime and return the resulting DateTime\n * See {@link DateTime#plus}\n * @param {Duration|Object|number} duration - The amount to subtract. Either a Luxon Duration, a number of milliseconds, the object argument to Duration.fromObject()\n @return {DateTime}\n */\n minus(duration) {\n if (!this.isValid) return this;\n const dur = Duration.fromDurationLike(duration).negate();\n return clone(this, adjustTime(this, dur));\n }\n\n /**\n * \"Set\" this DateTime to the beginning of a unit of time.\n * @param {string} unit - The unit to go to the beginning of. Can be 'year', 'quarter', 'month', 'week', 'day', 'hour', 'minute', 'second', or 'millisecond'.\n * @param {Object} opts - options\n * @param {boolean} [opts.useLocaleWeeks=false] - If true, use weeks based on the locale, i.e. use the locale-dependent start of the week\n * @example DateTime.local(2014, 3, 3).startOf('month').toISODate(); //=> '2014-03-01'\n * @example DateTime.local(2014, 3, 3).startOf('year').toISODate(); //=> '2014-01-01'\n * @example DateTime.local(2014, 3, 3).startOf('week').toISODate(); //=> '2014-03-03', weeks always start on Mondays\n * @example DateTime.local(2014, 3, 3, 5, 30).startOf('day').toISOTime(); //=> '00:00.000-05:00'\n * @example DateTime.local(2014, 3, 3, 5, 30).startOf('hour').toISOTime(); //=> '05:00:00.000-05:00'\n * @return {DateTime}\n */\n startOf(unit, { useLocaleWeeks = false } = {}) {\n if (!this.isValid) return this;\n\n const o = {},\n normalizedUnit = Duration.normalizeUnit(unit);\n switch (normalizedUnit) {\n case \"years\":\n o.month = 1;\n // falls through\n case \"quarters\":\n case \"months\":\n o.day = 1;\n // falls through\n case \"weeks\":\n case \"days\":\n o.hour = 0;\n // falls through\n case \"hours\":\n o.minute = 0;\n // falls through\n case \"minutes\":\n o.second = 0;\n // falls through\n case \"seconds\":\n o.millisecond = 0;\n break;\n case \"milliseconds\":\n break;\n // no default, invalid units throw in normalizeUnit()\n }\n\n if (normalizedUnit === \"weeks\") {\n if (useLocaleWeeks) {\n const startOfWeek = this.loc.getStartOfWeek();\n const { weekday } = this;\n if (weekday < startOfWeek) {\n o.weekNumber = this.weekNumber - 1;\n }\n o.weekday = startOfWeek;\n } else {\n o.weekday = 1;\n }\n }\n\n if (normalizedUnit === \"quarters\") {\n const q = Math.ceil(this.month / 3);\n o.month = (q - 1) * 3 + 1;\n }\n\n return this.set(o);\n }\n\n /**\n * \"Set\" this DateTime to the end (meaning the last millisecond) of a unit of time\n * @param {string} unit - The unit to go to the end of. Can be 'year', 'quarter', 'month', 'week', 'day', 'hour', 'minute', 'second', or 'millisecond'.\n * @param {Object} opts - options\n * @param {boolean} [opts.useLocaleWeeks=false] - If true, use weeks based on the locale, i.e. use the locale-dependent start of the week\n * @example DateTime.local(2014, 3, 3).endOf('month').toISO(); //=> '2014-03-31T23:59:59.999-05:00'\n * @example DateTime.local(2014, 3, 3).endOf('year').toISO(); //=> '2014-12-31T23:59:59.999-05:00'\n * @example DateTime.local(2014, 3, 3).endOf('week').toISO(); // => '2014-03-09T23:59:59.999-05:00', weeks start on Mondays\n * @example DateTime.local(2014, 3, 3, 5, 30).endOf('day').toISO(); //=> '2014-03-03T23:59:59.999-05:00'\n * @example DateTime.local(2014, 3, 3, 5, 30).endOf('hour').toISO(); //=> '2014-03-03T05:59:59.999-05:00'\n * @return {DateTime}\n */\n endOf(unit, opts) {\n return this.isValid\n ? this.plus({ [unit]: 1 })\n .startOf(unit, opts)\n .minus(1)\n : this;\n }\n\n // OUTPUT\n\n /**\n * Returns a string representation of this DateTime formatted according to the specified format string.\n * **You may not want this.** See {@link DateTime#toLocaleString} for a more flexible formatting tool. For a table of tokens and their interpretations, see [here](https://moment.github.io/luxon/#/formatting?id=table-of-tokens).\n * Defaults to en-US if no locale has been specified, regardless of the system's locale.\n * @param {string} fmt - the format string\n * @param {Object} opts - opts to override the configuration options on this DateTime\n * @example DateTime.now().toFormat('yyyy LLL dd') //=> '2017 Apr 22'\n * @example DateTime.now().setLocale('fr').toFormat('yyyy LLL dd') //=> '2017 avr. 22'\n * @example DateTime.now().toFormat('yyyy LLL dd', { locale: \"fr\" }) //=> '2017 avr. 22'\n * @example DateTime.now().toFormat(\"HH 'hours and' mm 'minutes'\") //=> '20 hours and 55 minutes'\n * @return {string}\n */\n toFormat(fmt, opts = {}) {\n return this.isValid\n ? Formatter.create(this.loc.redefaultToEN(opts)).formatDateTimeFromString(this, fmt)\n : INVALID;\n }\n\n /**\n * Returns a localized string representing this date. Accepts the same options as the Intl.DateTimeFormat constructor and any presets defined by Luxon, such as `DateTime.DATE_FULL` or `DateTime.TIME_SIMPLE`.\n * The exact behavior of this method is browser-specific, but in general it will return an appropriate representation\n * of the DateTime in the assigned locale.\n * Defaults to the system's locale if no locale has been specified\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat\n * @param formatOpts {Object} - Intl.DateTimeFormat constructor options and configuration options\n * @param {Object} opts - opts to override the configuration options on this DateTime\n * @example DateTime.now().toLocaleString(); //=> 4/20/2017\n * @example DateTime.now().setLocale('en-gb').toLocaleString(); //=> '20/04/2017'\n * @example DateTime.now().toLocaleString(DateTime.DATE_FULL); //=> 'April 20, 2017'\n * @example DateTime.now().toLocaleString(DateTime.DATE_FULL, { locale: 'fr' }); //=> '28 août 2022'\n * @example DateTime.now().toLocaleString(DateTime.TIME_SIMPLE); //=> '11:32 AM'\n * @example DateTime.now().toLocaleString(DateTime.DATETIME_SHORT); //=> '4/20/2017, 11:32 AM'\n * @example DateTime.now().toLocaleString({ weekday: 'long', month: 'long', day: '2-digit' }); //=> 'Thursday, April 20'\n * @example DateTime.now().toLocaleString({ weekday: 'short', month: 'short', day: '2-digit', hour: '2-digit', minute: '2-digit' }); //=> 'Thu, Apr 20, 11:27 AM'\n * @example DateTime.now().toLocaleString({ hour: '2-digit', minute: '2-digit', hourCycle: 'h23' }); //=> '11:32'\n * @return {string}\n */\n toLocaleString(formatOpts = Formats.DATE_SHORT, opts = {}) {\n return this.isValid\n ? Formatter.create(this.loc.clone(opts), formatOpts).formatDateTime(this)\n : INVALID;\n }\n\n /**\n * Returns an array of format \"parts\", meaning individual tokens along with metadata. This is allows callers to post-process individual sections of the formatted output.\n * Defaults to the system's locale if no locale has been specified\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat/formatToParts\n * @param opts {Object} - Intl.DateTimeFormat constructor options, same as `toLocaleString`.\n * @example DateTime.now().toLocaleParts(); //=> [\n * //=> { type: 'day', value: '25' },\n * //=> { type: 'literal', value: '/' },\n * //=> { type: 'month', value: '05' },\n * //=> { type: 'literal', value: '/' },\n * //=> { type: 'year', value: '1982' }\n * //=> ]\n */\n toLocaleParts(opts = {}) {\n return this.isValid\n ? Formatter.create(this.loc.clone(opts), opts).formatDateTimeParts(this)\n : [];\n }\n\n /**\n * Returns an ISO 8601-compliant string representation of this DateTime\n * @param {Object} opts - options\n * @param {boolean} [opts.suppressMilliseconds=false] - exclude milliseconds from the format if they're 0\n * @param {boolean} [opts.suppressSeconds=false] - exclude seconds from the format if they're 0\n * @param {boolean} [opts.includeOffset=true] - include the offset, such as 'Z' or '-04:00'\n * @param {boolean} [opts.extendedZone=false] - add the time zone format extension\n * @param {string} [opts.format='extended'] - choose between the basic and extended format\n * @example DateTime.utc(1983, 5, 25).toISO() //=> '1982-05-25T00:00:00.000Z'\n * @example DateTime.now().toISO() //=> '2017-04-22T20:47:05.335-04:00'\n * @example DateTime.now().toISO({ includeOffset: false }) //=> '2017-04-22T20:47:05.335'\n * @example DateTime.now().toISO({ format: 'basic' }) //=> '20170422T204705.335-0400'\n * @return {string}\n */\n toISO({\n format = \"extended\",\n suppressSeconds = false,\n suppressMilliseconds = false,\n includeOffset = true,\n extendedZone = false,\n } = {}) {\n if (!this.isValid) {\n return null;\n }\n\n const ext = format === \"extended\";\n\n let c = toISODate(this, ext);\n c += \"T\";\n c += toISOTime(this, ext, suppressSeconds, suppressMilliseconds, includeOffset, extendedZone);\n return c;\n }\n\n /**\n * Returns an ISO 8601-compliant string representation of this DateTime's date component\n * @param {Object} opts - options\n * @param {string} [opts.format='extended'] - choose between the basic and extended format\n * @example DateTime.utc(1982, 5, 25).toISODate() //=> '1982-05-25'\n * @example DateTime.utc(1982, 5, 25).toISODate({ format: 'basic' }) //=> '19820525'\n * @return {string}\n */\n toISODate({ format = \"extended\" } = {}) {\n if (!this.isValid) {\n return null;\n }\n\n return toISODate(this, format === \"extended\");\n }\n\n /**\n * Returns an ISO 8601-compliant string representation of this DateTime's week date\n * @example DateTime.utc(1982, 5, 25).toISOWeekDate() //=> '1982-W21-2'\n * @return {string}\n */\n toISOWeekDate() {\n return toTechFormat(this, \"kkkk-'W'WW-c\");\n }\n\n /**\n * Returns an ISO 8601-compliant string representation of this DateTime's time component\n * @param {Object} opts - options\n * @param {boolean} [opts.suppressMilliseconds=false] - exclude milliseconds from the format if they're 0\n * @param {boolean} [opts.suppressSeconds=false] - exclude seconds from the format if they're 0\n * @param {boolean} [opts.includeOffset=true] - include the offset, such as 'Z' or '-04:00'\n * @param {boolean} [opts.extendedZone=true] - add the time zone format extension\n * @param {boolean} [opts.includePrefix=false] - include the `T` prefix\n * @param {string} [opts.format='extended'] - choose between the basic and extended format\n * @example DateTime.utc().set({ hour: 7, minute: 34 }).toISOTime() //=> '07:34:19.361Z'\n * @example DateTime.utc().set({ hour: 7, minute: 34, seconds: 0, milliseconds: 0 }).toISOTime({ suppressSeconds: true }) //=> '07:34Z'\n * @example DateTime.utc().set({ hour: 7, minute: 34 }).toISOTime({ format: 'basic' }) //=> '073419.361Z'\n * @example DateTime.utc().set({ hour: 7, minute: 34 }).toISOTime({ includePrefix: true }) //=> 'T07:34:19.361Z'\n * @return {string}\n */\n toISOTime({\n suppressMilliseconds = false,\n suppressSeconds = false,\n includeOffset = true,\n includePrefix = false,\n extendedZone = false,\n format = \"extended\",\n } = {}) {\n if (!this.isValid) {\n return null;\n }\n\n let c = includePrefix ? \"T\" : \"\";\n return (\n c +\n toISOTime(\n this,\n format === \"extended\",\n suppressSeconds,\n suppressMilliseconds,\n includeOffset,\n extendedZone\n )\n );\n }\n\n /**\n * Returns an RFC 2822-compatible string representation of this DateTime\n * @example DateTime.utc(2014, 7, 13).toRFC2822() //=> 'Sun, 13 Jul 2014 00:00:00 +0000'\n * @example DateTime.local(2014, 7, 13).toRFC2822() //=> 'Sun, 13 Jul 2014 00:00:00 -0400'\n * @return {string}\n */\n toRFC2822() {\n return toTechFormat(this, \"EEE, dd LLL yyyy HH:mm:ss ZZZ\", false);\n }\n\n /**\n * Returns a string representation of this DateTime appropriate for use in HTTP headers. The output is always expressed in GMT.\n * Specifically, the string conforms to RFC 1123.\n * @see https://www.w3.org/Protocols/rfc2616/rfc2616-sec3.html#sec3.3.1\n * @example DateTime.utc(2014, 7, 13).toHTTP() //=> 'Sun, 13 Jul 2014 00:00:00 GMT'\n * @example DateTime.utc(2014, 7, 13, 19).toHTTP() //=> 'Sun, 13 Jul 2014 19:00:00 GMT'\n * @return {string}\n */\n toHTTP() {\n return toTechFormat(this.toUTC(), \"EEE, dd LLL yyyy HH:mm:ss 'GMT'\");\n }\n\n /**\n * Returns a string representation of this DateTime appropriate for use in SQL Date\n * @example DateTime.utc(2014, 7, 13).toSQLDate() //=> '2014-07-13'\n * @return {string}\n */\n toSQLDate() {\n if (!this.isValid) {\n return null;\n }\n return toISODate(this, true);\n }\n\n /**\n * Returns a string representation of this DateTime appropriate for use in SQL Time\n * @param {Object} opts - options\n * @param {boolean} [opts.includeZone=false] - include the zone, such as 'America/New_York'. Overrides includeOffset.\n * @param {boolean} [opts.includeOffset=true] - include the offset, such as 'Z' or '-04:00'\n * @param {boolean} [opts.includeOffsetSpace=true] - include the space between the time and the offset, such as '05:15:16.345 -04:00'\n * @example DateTime.utc().toSQL() //=> '05:15:16.345'\n * @example DateTime.now().toSQL() //=> '05:15:16.345 -04:00'\n * @example DateTime.now().toSQL({ includeOffset: false }) //=> '05:15:16.345'\n * @example DateTime.now().toSQL({ includeZone: false }) //=> '05:15:16.345 America/New_York'\n * @return {string}\n */\n toSQLTime({ includeOffset = true, includeZone = false, includeOffsetSpace = true } = {}) {\n let fmt = \"HH:mm:ss.SSS\";\n\n if (includeZone || includeOffset) {\n if (includeOffsetSpace) {\n fmt += \" \";\n }\n if (includeZone) {\n fmt += \"z\";\n } else if (includeOffset) {\n fmt += \"ZZ\";\n }\n }\n\n return toTechFormat(this, fmt, true);\n }\n\n /**\n * Returns a string representation of this DateTime appropriate for use in SQL DateTime\n * @param {Object} opts - options\n * @param {boolean} [opts.includeZone=false] - include the zone, such as 'America/New_York'. Overrides includeOffset.\n * @param {boolean} [opts.includeOffset=true] - include the offset, such as 'Z' or '-04:00'\n * @param {boolean} [opts.includeOffsetSpace=true] - include the space between the time and the offset, such as '05:15:16.345 -04:00'\n * @example DateTime.utc(2014, 7, 13).toSQL() //=> '2014-07-13 00:00:00.000 Z'\n * @example DateTime.local(2014, 7, 13).toSQL() //=> '2014-07-13 00:00:00.000 -04:00'\n * @example DateTime.local(2014, 7, 13).toSQL({ includeOffset: false }) //=> '2014-07-13 00:00:00.000'\n * @example DateTime.local(2014, 7, 13).toSQL({ includeZone: true }) //=> '2014-07-13 00:00:00.000 America/New_York'\n * @return {string}\n */\n toSQL(opts = {}) {\n if (!this.isValid) {\n return null;\n }\n\n return `${this.toSQLDate()} ${this.toSQLTime(opts)}`;\n }\n\n /**\n * Returns a string representation of this DateTime appropriate for debugging\n * @return {string}\n */\n toString() {\n return this.isValid ? this.toISO() : INVALID;\n }\n\n /**\n * Returns a string representation of this DateTime appropriate for the REPL.\n * @return {string}\n */\n [Symbol.for(\"nodejs.util.inspect.custom\")]() {\n if (this.isValid) {\n return `DateTime { ts: ${this.toISO()}, zone: ${this.zone.name}, locale: ${this.locale} }`;\n } else {\n return `DateTime { Invalid, reason: ${this.invalidReason} }`;\n }\n }\n\n /**\n * Returns the epoch milliseconds of this DateTime. Alias of {@link DateTime#toMillis}\n * @return {number}\n */\n valueOf() {\n return this.toMillis();\n }\n\n /**\n * Returns the epoch milliseconds of this DateTime.\n * @return {number}\n */\n toMillis() {\n return this.isValid ? this.ts : NaN;\n }\n\n /**\n * Returns the epoch seconds of this DateTime.\n * @return {number}\n */\n toSeconds() {\n return this.isValid ? this.ts / 1000 : NaN;\n }\n\n /**\n * Returns the epoch seconds (as a whole number) of this DateTime.\n * @return {number}\n */\n toUnixInteger() {\n return this.isValid ? Math.floor(this.ts / 1000) : NaN;\n }\n\n /**\n * Returns an ISO 8601 representation of this DateTime appropriate for use in JSON.\n * @return {string}\n */\n toJSON() {\n return this.toISO();\n }\n\n /**\n * Returns a BSON serializable equivalent to this DateTime.\n * @return {Date}\n */\n toBSON() {\n return this.toJSDate();\n }\n\n /**\n * Returns a JavaScript object with this DateTime's year, month, day, and so on.\n * @param opts - options for generating the object\n * @param {boolean} [opts.includeConfig=false] - include configuration attributes in the output\n * @example DateTime.now().toObject() //=> { year: 2017, month: 4, day: 22, hour: 20, minute: 49, second: 42, millisecond: 268 }\n * @return {Object}\n */\n toObject(opts = {}) {\n if (!this.isValid) return {};\n\n const base = { ...this.c };\n\n if (opts.includeConfig) {\n base.outputCalendar = this.outputCalendar;\n base.numberingSystem = this.loc.numberingSystem;\n base.locale = this.loc.locale;\n }\n return base;\n }\n\n /**\n * Returns a JavaScript Date equivalent to this DateTime.\n * @return {Date}\n */\n toJSDate() {\n return new Date(this.isValid ? this.ts : NaN);\n }\n\n // COMPARE\n\n /**\n * Return the difference between two DateTimes as a Duration.\n * @param {DateTime} otherDateTime - the DateTime to compare this one to\n * @param {string|string[]} [unit=['milliseconds']] - the unit or array of units (such as 'hours' or 'days') to include in the duration.\n * @param {Object} opts - options that affect the creation of the Duration\n * @param {string} [opts.conversionAccuracy='casual'] - the conversion system to use\n * @example\n * var i1 = DateTime.fromISO('1982-05-25T09:45'),\n * i2 = DateTime.fromISO('1983-10-14T10:30');\n * i2.diff(i1).toObject() //=> { milliseconds: 43807500000 }\n * i2.diff(i1, 'hours').toObject() //=> { hours: 12168.75 }\n * i2.diff(i1, ['months', 'days']).toObject() //=> { months: 16, days: 19.03125 }\n * i2.diff(i1, ['months', 'days', 'hours']).toObject() //=> { months: 16, days: 19, hours: 0.75 }\n * @return {Duration}\n */\n diff(otherDateTime, unit = \"milliseconds\", opts = {}) {\n if (!this.isValid || !otherDateTime.isValid) {\n return Duration.invalid(\"created by diffing an invalid DateTime\");\n }\n\n const durOpts = { locale: this.locale, numberingSystem: this.numberingSystem, ...opts };\n\n const units = maybeArray(unit).map(Duration.normalizeUnit),\n otherIsLater = otherDateTime.valueOf() > this.valueOf(),\n earlier = otherIsLater ? this : otherDateTime,\n later = otherIsLater ? otherDateTime : this,\n diffed = diff(earlier, later, units, durOpts);\n\n return otherIsLater ? diffed.negate() : diffed;\n }\n\n /**\n * Return the difference between this DateTime and right now.\n * See {@link DateTime#diff}\n * @param {string|string[]} [unit=['milliseconds']] - the unit or units units (such as 'hours' or 'days') to include in the duration\n * @param {Object} opts - options that affect the creation of the Duration\n * @param {string} [opts.conversionAccuracy='casual'] - the conversion system to use\n * @return {Duration}\n */\n diffNow(unit = \"milliseconds\", opts = {}) {\n return this.diff(DateTime.now(), unit, opts);\n }\n\n /**\n * Return an Interval spanning between this DateTime and another DateTime\n * @param {DateTime} otherDateTime - the other end point of the Interval\n * @return {Interval}\n */\n until(otherDateTime) {\n return this.isValid ? Interval.fromDateTimes(this, otherDateTime) : this;\n }\n\n /**\n * Return whether this DateTime is in the same unit of time as another DateTime.\n * Higher-order units must also be identical for this function to return `true`.\n * Note that time zones are **ignored** in this comparison, which compares the **local** calendar time. Use {@link DateTime#setZone} to convert one of the dates if needed.\n * @param {DateTime} otherDateTime - the other DateTime\n * @param {string} unit - the unit of time to check sameness on\n * @param {Object} opts - options\n * @param {boolean} [opts.useLocaleWeeks=false] - If true, use weeks based on the locale, i.e. use the locale-dependent start of the week; only the locale of this DateTime is used\n * @example DateTime.now().hasSame(otherDT, 'day'); //~> true if otherDT is in the same current calendar day\n * @return {boolean}\n */\n hasSame(otherDateTime, unit, opts) {\n if (!this.isValid) return false;\n\n const inputMs = otherDateTime.valueOf();\n const adjustedToZone = this.setZone(otherDateTime.zone, { keepLocalTime: true });\n return (\n adjustedToZone.startOf(unit, opts) <= inputMs && inputMs <= adjustedToZone.endOf(unit, opts)\n );\n }\n\n /**\n * Equality check\n * Two DateTimes are equal if and only if they represent the same millisecond, have the same zone and location, and are both valid.\n * To compare just the millisecond values, use `+dt1 === +dt2`.\n * @param {DateTime} other - the other DateTime\n * @return {boolean}\n */\n equals(other) {\n return (\n this.isValid &&\n other.isValid &&\n this.valueOf() === other.valueOf() &&\n this.zone.equals(other.zone) &&\n this.loc.equals(other.loc)\n );\n }\n\n /**\n * Returns a string representation of a this time relative to now, such as \"in two days\". Can only internationalize if your\n * platform supports Intl.RelativeTimeFormat. Rounds down by default.\n * @param {Object} options - options that affect the output\n * @param {DateTime} [options.base=DateTime.now()] - the DateTime to use as the basis to which this time is compared. Defaults to now.\n * @param {string} [options.style=\"long\"] - the style of units, must be \"long\", \"short\", or \"narrow\"\n * @param {string|string[]} options.unit - use a specific unit or array of units; if omitted, or an array, the method will pick the best unit. Use an array or one of \"years\", \"quarters\", \"months\", \"weeks\", \"days\", \"hours\", \"minutes\", or \"seconds\"\n * @param {boolean} [options.round=true] - whether to round the numbers in the output.\n * @param {number} [options.padding=0] - padding in milliseconds. This allows you to round up the result if it fits inside the threshold. Don't use in combination with {round: false} because the decimal output will include the padding.\n * @param {string} options.locale - override the locale of this DateTime\n * @param {string} options.numberingSystem - override the numberingSystem of this DateTime. The Intl system may choose not to honor this\n * @example DateTime.now().plus({ days: 1 }).toRelative() //=> \"in 1 day\"\n * @example DateTime.now().setLocale(\"es\").toRelative({ days: 1 }) //=> \"dentro de 1 día\"\n * @example DateTime.now().plus({ days: 1 }).toRelative({ locale: \"fr\" }) //=> \"dans 23 heures\"\n * @example DateTime.now().minus({ days: 2 }).toRelative() //=> \"2 days ago\"\n * @example DateTime.now().minus({ days: 2 }).toRelative({ unit: \"hours\" }) //=> \"48 hours ago\"\n * @example DateTime.now().minus({ hours: 36 }).toRelative({ round: false }) //=> \"1.5 days ago\"\n */\n toRelative(options = {}) {\n if (!this.isValid) return null;\n const base = options.base || DateTime.fromObject({}, { zone: this.zone }),\n padding = options.padding ? (this < base ? -options.padding : options.padding) : 0;\n let units = [\"years\", \"months\", \"days\", \"hours\", \"minutes\", \"seconds\"];\n let unit = options.unit;\n if (Array.isArray(options.unit)) {\n units = options.unit;\n unit = undefined;\n }\n return diffRelative(base, this.plus(padding), {\n ...options,\n numeric: \"always\",\n units,\n unit,\n });\n }\n\n /**\n * Returns a string representation of this date relative to today, such as \"yesterday\" or \"next month\".\n * Only internationalizes on platforms that supports Intl.RelativeTimeFormat.\n * @param {Object} options - options that affect the output\n * @param {DateTime} [options.base=DateTime.now()] - the DateTime to use as the basis to which this time is compared. Defaults to now.\n * @param {string} options.locale - override the locale of this DateTime\n * @param {string} options.unit - use a specific unit; if omitted, the method will pick the unit. Use one of \"years\", \"quarters\", \"months\", \"weeks\", or \"days\"\n * @param {string} options.numberingSystem - override the numberingSystem of this DateTime. The Intl system may choose not to honor this\n * @example DateTime.now().plus({ days: 1 }).toRelativeCalendar() //=> \"tomorrow\"\n * @example DateTime.now().setLocale(\"es\").plus({ days: 1 }).toRelative() //=> \"\"mañana\"\n * @example DateTime.now().plus({ days: 1 }).toRelativeCalendar({ locale: \"fr\" }) //=> \"demain\"\n * @example DateTime.now().minus({ days: 2 }).toRelativeCalendar() //=> \"2 days ago\"\n */\n toRelativeCalendar(options = {}) {\n if (!this.isValid) return null;\n\n return diffRelative(options.base || DateTime.fromObject({}, { zone: this.zone }), this, {\n ...options,\n numeric: \"auto\",\n units: [\"years\", \"months\", \"days\"],\n calendary: true,\n });\n }\n\n /**\n * Return the min of several date times\n * @param {...DateTime} dateTimes - the DateTimes from which to choose the minimum\n * @return {DateTime} the min DateTime, or undefined if called with no argument\n */\n static min(...dateTimes) {\n if (!dateTimes.every(DateTime.isDateTime)) {\n throw new InvalidArgumentError(\"min requires all arguments be DateTimes\");\n }\n return bestBy(dateTimes, (i) => i.valueOf(), Math.min);\n }\n\n /**\n * Return the max of several date times\n * @param {...DateTime} dateTimes - the DateTimes from which to choose the maximum\n * @return {DateTime} the max DateTime, or undefined if called with no argument\n */\n static max(...dateTimes) {\n if (!dateTimes.every(DateTime.isDateTime)) {\n throw new InvalidArgumentError(\"max requires all arguments be DateTimes\");\n }\n return bestBy(dateTimes, (i) => i.valueOf(), Math.max);\n }\n\n // MISC\n\n /**\n * Explain how a string would be parsed by fromFormat()\n * @param {string} text - the string to parse\n * @param {string} fmt - the format the string is expected to be in (see description)\n * @param {Object} options - options taken by fromFormat()\n * @return {Object}\n */\n static fromFormatExplain(text, fmt, options = {}) {\n const { locale = null, numberingSystem = null } = options,\n localeToUse = Locale.fromOpts({\n locale,\n numberingSystem,\n defaultToEN: true,\n });\n return explainFromTokens(localeToUse, text, fmt);\n }\n\n /**\n * @deprecated use fromFormatExplain instead\n */\n static fromStringExplain(text, fmt, options = {}) {\n return DateTime.fromFormatExplain(text, fmt, options);\n }\n\n // FORMAT PRESETS\n\n /**\n * {@link DateTime#toLocaleString} format like 10/14/1983\n * @type {Object}\n */\n static get DATE_SHORT() {\n return Formats.DATE_SHORT;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like 'Oct 14, 1983'\n * @type {Object}\n */\n static get DATE_MED() {\n return Formats.DATE_MED;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like 'Fri, Oct 14, 1983'\n * @type {Object}\n */\n static get DATE_MED_WITH_WEEKDAY() {\n return Formats.DATE_MED_WITH_WEEKDAY;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like 'October 14, 1983'\n * @type {Object}\n */\n static get DATE_FULL() {\n return Formats.DATE_FULL;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like 'Tuesday, October 14, 1983'\n * @type {Object}\n */\n static get DATE_HUGE() {\n return Formats.DATE_HUGE;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like '09:30 AM'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get TIME_SIMPLE() {\n return Formats.TIME_SIMPLE;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like '09:30:23 AM'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get TIME_WITH_SECONDS() {\n return Formats.TIME_WITH_SECONDS;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like '09:30:23 AM EDT'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get TIME_WITH_SHORT_OFFSET() {\n return Formats.TIME_WITH_SHORT_OFFSET;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like '09:30:23 AM Eastern Daylight Time'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get TIME_WITH_LONG_OFFSET() {\n return Formats.TIME_WITH_LONG_OFFSET;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like '09:30', always 24-hour.\n * @type {Object}\n */\n static get TIME_24_SIMPLE() {\n return Formats.TIME_24_SIMPLE;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like '09:30:23', always 24-hour.\n * @type {Object}\n */\n static get TIME_24_WITH_SECONDS() {\n return Formats.TIME_24_WITH_SECONDS;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like '09:30:23 EDT', always 24-hour.\n * @type {Object}\n */\n static get TIME_24_WITH_SHORT_OFFSET() {\n return Formats.TIME_24_WITH_SHORT_OFFSET;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like '09:30:23 Eastern Daylight Time', always 24-hour.\n * @type {Object}\n */\n static get TIME_24_WITH_LONG_OFFSET() {\n return Formats.TIME_24_WITH_LONG_OFFSET;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like '10/14/1983, 9:30 AM'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get DATETIME_SHORT() {\n return Formats.DATETIME_SHORT;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like '10/14/1983, 9:30:33 AM'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get DATETIME_SHORT_WITH_SECONDS() {\n return Formats.DATETIME_SHORT_WITH_SECONDS;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like 'Oct 14, 1983, 9:30 AM'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get DATETIME_MED() {\n return Formats.DATETIME_MED;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like 'Oct 14, 1983, 9:30:33 AM'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get DATETIME_MED_WITH_SECONDS() {\n return Formats.DATETIME_MED_WITH_SECONDS;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like 'Fri, 14 Oct 1983, 9:30 AM'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get DATETIME_MED_WITH_WEEKDAY() {\n return Formats.DATETIME_MED_WITH_WEEKDAY;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like 'October 14, 1983, 9:30 AM EDT'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get DATETIME_FULL() {\n return Formats.DATETIME_FULL;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like 'October 14, 1983, 9:30:33 AM EDT'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get DATETIME_FULL_WITH_SECONDS() {\n return Formats.DATETIME_FULL_WITH_SECONDS;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like 'Friday, October 14, 1983, 9:30 AM Eastern Daylight Time'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get DATETIME_HUGE() {\n return Formats.DATETIME_HUGE;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like 'Friday, October 14, 1983, 9:30:33 AM Eastern Daylight Time'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get DATETIME_HUGE_WITH_SECONDS() {\n return Formats.DATETIME_HUGE_WITH_SECONDS;\n }\n}\n\n/**\n * @private\n */\nexport function friendlyDateTime(dateTimeish) {\n if (DateTime.isDateTime(dateTimeish)) {\n return dateTimeish;\n } else if (dateTimeish && dateTimeish.valueOf && isNumber(dateTimeish.valueOf())) {\n return DateTime.fromJSDate(dateTimeish);\n } else if (dateTimeish && typeof dateTimeish === \"object\") {\n return DateTime.fromObject(dateTimeish);\n } else {\n throw new InvalidArgumentError(\n `Unknown datetime argument: ${dateTimeish}, of type ${typeof dateTimeish}`\n );\n }\n}\n","export class Sorter {\n static byID(a, b) {\n if (a.id < b.id) {\n return -1;\n }\n if (a.id > b.id) {\n return 1;\n }\n return 0;\n }\n static byStringProperty(a, b, field) {\n return this.byStringValue(a[field], b[field]);\n }\n static byNumberProperty(a, b, field) {\n return this.byNumberValue(a[field], b[field]);\n }\n /**\n * Sort strings ASC order\n */\n static byStringValue(a, b) {\n const af = a.toLowerCase();\n const bf = b.toLowerCase();\n if (af > bf) {\n return 1;\n }\n if (af < bf) {\n return -1;\n }\n return 0;\n }\n static byBooleanValue(a, b) {\n if (a === b) {\n return 0;\n }\n if (a && !b) {\n return -1;\n }\n return 1;\n }\n static byEnumValue(a, b, enumObject) {\n return Object.values(enumObject).indexOf(a) - Object.values(enumObject).indexOf(b);\n }\n /**\n * Sort from large to small - DESC\n */\n static byNumberValue(a, b) {\n if (a === b) {\n return 0;\n }\n if (a > b) {\n return -1;\n }\n return 1;\n }\n /**\n * Sort from new to old - DESC\n */\n static byDateValue(a, b) {\n if (a.getTime() === b.getTime()) {\n return 0;\n }\n if (a > b) {\n return -1;\n }\n return 1;\n }\n /**\n * Return the first non zero value from a list, or zero if all values are zero\n */\n static stack(...sortResults) {\n while (sortResults.length > 0) {\n const f = sortResults.shift();\n if (f !== 0) {\n return f;\n }\n }\n return 0;\n }\n static getMostOccuringElement(array) {\n const counts = new Map();\n for (const element of array) {\n const count = counts.get(element);\n if (count) {\n counts.set(element, count + 1);\n }\n else {\n counts.set(element, 1);\n }\n }\n let maxCount = 0;\n let mostOccuringElement;\n for (const [element, count] of counts) {\n if (count > maxCount) {\n maxCount = count;\n mostOccuringElement = element;\n }\n }\n return mostOccuringElement;\n }\n}\n//# sourceMappingURL=Sorter.js.map","import { DateTime } from 'luxon';\nimport { Sorter } from './Sorter';\nexport class Formatter {\n static removeAccents(name) {\n name = name.normalize('NFD').replace(/[\\u0300-\\u036f]/g, '');\n return name;\n }\n static emailSenderName(name) {\n return this.removeAccents(name).replace(/[^A-Za-z]+/g, ' ').trim();\n }\n static slug(name) {\n return this.removeAccents(name).toLowerCase().replace(/[^a-z0-9]+/g, '-').replace(/^-+/, '').replace(/-+$/, '');\n }\n static slugEmail(name) {\n return this.removeAccents(name).toLowerCase().replace(/[^a-z0-9_]+/g, '-').replace(/^-+/, '').replace(/-+$/, '');\n }\n static fileSlug(name) {\n return this.removeAccents(name).replace(/[^A-Za-z0-9-]+/g, ' ').trim();\n }\n static removeDuplicateSpaces(name) {\n return name.replace(/\\s+/, ' ');\n }\n static spaceString(str, spaceLength = 4, spaceChar = '\\u00A0') {\n // Insert a non breaking space every 4 characters without a regex\n let result = '';\n for (let i = 0; i < str.length; i++) {\n if (i % spaceLength === 0 && i > 0) {\n result += spaceChar;\n }\n result += str[i];\n }\n return result;\n }\n static stringToNumber(str, maxInt = 256) {\n let hash = 0;\n for (let i = 0; i < str.length; i++) {\n const char = str.charCodeAt(i);\n hash = (hash << 5) - hash + char;\n }\n return Math.abs(hash) % maxInt;\n }\n /**\n * 1 = january\n */\n static month(index) {\n if (typeof index === 'object') {\n const datetime = DateTime.fromJSDate(index).setZone(this.timezone);\n index = datetime.month;\n }\n const monthNames = ['januari', 'februari', 'maart', 'april', 'mei', 'juni',\n 'juli', 'augustus', 'september', 'oktober', 'november', 'december',\n ];\n return monthNames[index - 1];\n }\n /**\n * 1-31\n */\n static day(date) {\n const datetime = DateTime.fromJSDate(date).setZone(this.timezone);\n return datetime.day.toFixed(0);\n }\n static weekDay(date) {\n if (!date) {\n // Crash protection in case undefined get passed\n return '?';\n }\n const monthNames = ['maandag', 'dinsdag', 'woensdag', 'donderdag', 'vrijdag', 'zaterdag', 'zondag'];\n const datetime = DateTime.fromJSDate(date).setZone(this.timezone);\n return monthNames[datetime.weekday - 1];\n }\n /**\n * 1 januari (2020). Year only in different year if withYear is null (default)\n */\n static date(date, withYear = null) {\n if (!date) {\n // Crash protection in case undefined get passed\n return '?';\n }\n const currentYear = DateTime.now().setZone(this.timezone).year;\n const datetime = DateTime.fromJSDate(date).setZone(this.timezone);\n const year = datetime.year;\n return datetime.day + ' ' + this.month(datetime.month) + (currentYear !== year || withYear === true ? (' ' + year) : '');\n }\n /**\n * januari 2020\n */\n static dateWithoutDay(date, options) {\n var _a;\n if (!date) {\n // Crash protection in case undefined get passed\n return '?';\n }\n const datetime = DateTime.fromJSDate(date).setZone((_a = options === null || options === void 0 ? void 0 : options.timezone) !== null && _a !== void 0 ? _a : this.timezone);\n const year = datetime.year;\n return this.month(datetime.month) + ' ' + year;\n }\n /**\n * 2020\n */\n static year(date) {\n if (!date) {\n // Crash protection in case undefined get passed\n return 0;\n }\n const datetime = DateTime.fromJSDate(date).setZone(this.timezone);\n return datetime.year;\n }\n /**\n * maandag, 1 januari (2020). Year only in different year\n */\n static dateWithDay(date, withYear = false) {\n if (!date) {\n // Crash protection in case undefined get passed\n return '?';\n }\n return this.weekDay(date) + ', ' + this.date(date, withYear);\n }\n /**\n * maandag, 1 januari (2020) om XX:XX. Year only in different year\n */\n static dateTimeWithDay(date, hideZero = false, withYear = false) {\n if (!date) {\n // Crash protection in case undefined get passed\n return '?';\n }\n return this.weekDay(date) + ', ' + this.dateTime(date, hideZero, withYear);\n }\n /**\n * 01/01/2020\n */\n static dateNumber(date, withYear = true) {\n if (!date) {\n // Crash protection in case undefined get passed\n return '?';\n }\n const datetime = DateTime.fromJSDate(date).setZone(this.timezone);\n return (datetime.day + '').padStart(2, '0') + '/' + (datetime.month + '').padStart(2, '0') + (withYear ? '/' + datetime.year : '');\n }\n /**\n * 2020-01-31\n */\n static dateIso(date) {\n if (!date) {\n // Crash protection in case undefined get passed\n return '?';\n }\n const datetime = DateTime.fromJSDate(date).setZone(this.timezone);\n const year = datetime.year;\n return year + '-' + (datetime.month + '').padStart(2, '0') + '-' + (datetime.day + '').padStart(2, '0');\n }\n /**\n * 2020-01-31 00:00:00\n */\n static dateTimeIso(date, timezone) {\n if (!date) {\n // Crash protection in case undefined get passed\n return '?';\n }\n const datetime = DateTime.fromJSDate(date).setZone(timezone !== null && timezone !== void 0 ? timezone : this.timezone);\n const year = datetime.year;\n return year + '-' + (datetime.month + '').padStart(2, '0') + '-' + (datetime.day + '').padStart(2, '0') + ' ' + (datetime.hour + '').padStart(2, '0') + ':' + (datetime.minute + '').padStart(2, '0') + ':' + (datetime.second + '').padStart(2, '0');\n }\n static startDate(startDate, includeDay = false, withYear = false) {\n if (Formatter.time(startDate) === '0:00') {\n if (includeDay) {\n return Formatter.dateWithDay(startDate, withYear);\n }\n return Formatter.date(startDate, withYear);\n }\n if (includeDay) {\n return Formatter.dateTimeWithDay(startDate, withYear);\n }\n return Formatter.dateTime(startDate, withYear);\n }\n static endDate(endDate, includeDay = false, withYear = false) {\n if (Formatter.time(endDate) === '23:59') {\n if (includeDay) {\n return Formatter.dateWithDay(endDate, withYear);\n }\n return Formatter.date(endDate, withYear);\n }\n if (includeDay) {\n return Formatter.dateTimeWithDay(endDate, withYear);\n }\n return Formatter.dateTime(endDate, false, withYear);\n }\n static dateRange(startDate, endDate, join = ' - ') {\n if (Formatter.dateIso(startDate) === Formatter.dateIso(endDate)) {\n if (Formatter.time(startDate) === Formatter.time(endDate)) {\n return Formatter.dateWithDay(startDate) + ', ' + Formatter.time(startDate);\n }\n if (Formatter.time(startDate) === '0:00' && Formatter.time(endDate) === '23:59') {\n return Formatter.dateWithDay(startDate);\n }\n return Formatter.dateWithDay(startDate) + ', ' + Formatter.time(startDate) + join + Formatter.time(endDate);\n }\n // If start in evening and end on the next morning: only mention date once\n if (Formatter.dateIso(startDate) === Formatter.dateIso(new Date(endDate.getTime() - 24 * 60 * 60 * 1000)) && Formatter.timeIso(endDate) <= '07:00' && Formatter.timeIso(startDate) >= '12:00') {\n return Formatter.dateWithDay(startDate) + ', ' + Formatter.time(startDate) + join + Formatter.time(endDate);\n }\n return Formatter.startDate(startDate) + join + Formatter.endDate(endDate);\n }\n /**\n * 12:00\n */\n static time(date, timeZone = this.timezone) {\n if (!date) {\n // Crash protection in case undefined get passed\n return '?';\n }\n const datetime = DateTime.fromJSDate(date).setZone(timeZone);\n return datetime.hour + ':' + (datetime.minute + '').padStart(2, '0');\n }\n static luxon(date = new Date()) {\n return DateTime.fromJSDate(date).setZone(this.timezone);\n }\n /**\n * 12:00\n */\n static timeIso(date) {\n if (!date) {\n // Crash protection in case undefined get passed\n return '?';\n }\n const datetime = DateTime.fromJSDate(date).setZone(this.timezone);\n return (datetime.hour + '').padStart(2, '0') + ':' + (datetime.minute + '').padStart(2, '0');\n }\n static uniqueArray(array) {\n function onlyUnique(value, index, self) {\n return self.indexOf(value) === index;\n }\n return array.filter(onlyUnique);\n }\n /**\n * 1 januari (2020) om 12:00. Year only in different year\n */\n static dateTime(date, hideZero = false, withYear = false) {\n if (!date) {\n // Crash protection in case undefined get passed\n return '?';\n }\n if (hideZero && this.time(date) === '0:00') {\n return this.date(date, withYear);\n }\n return this.date(date, withYear) + ' om ' + this.time(date);\n }\n static integer(value) {\n const formatted = new Intl.NumberFormat('nl-BE').format(Math.abs(value));\n const v = (value < 0 ? '- ' : '') + formatted;\n return v;\n }\n static float(value) {\n const formatted = new Intl.NumberFormat('nl-BE', { maximumFractionDigits: 2 }).format(Math.abs(value));\n const v = (value < 0 ? '- ' : '') + formatted;\n return v;\n }\n static percentage(value) {\n const formatted = new Intl.NumberFormat('nl-BE').format(Math.abs(value / 100));\n const v = (value < 0 ? '- ' : '') + formatted;\n return v + '%';\n }\n static price(value, removeZeroDecimals = true) {\n const formatted = new Intl.NumberFormat('nl-BE', {\n style: 'currency',\n currency: 'EUR',\n }).format(Math.abs(value) / 100);\n const v = (value < 0 ? '- ' : '') + formatted.replace(new RegExp('EUR', 'ig'), '€');\n if (removeZeroDecimals && (v.endsWith(',00') || v.endsWith('.00'))) {\n return v.substring(0, v.length - 3);\n }\n return v;\n }\n static priceChange(value) {\n if (value >= 0) {\n return '+ ' + this.price(value);\n }\n return this.price(value);\n }\n static capitalizeFirstLetter(string) {\n return string.charAt(0).toUpperCase() + string.slice(1);\n }\n static capitalizeWords(string) {\n return string.split(' ').map(s => this.capitalizeFirstLetter(s)).join(' ');\n }\n static fileSize(bytes) {\n if (bytes < 1000) {\n return bytes + ' bytes';\n }\n if (bytes < 1000 * 1000) {\n return Math.round(bytes / 1000) + ' kB';\n }\n if (bytes < 1000 * 1000 * 1000) {\n return Math.round(bytes / 1000 / 100) / 10 + ' MB';\n }\n return Math.round(bytes / 1000 / 1000 / 10) / 100 + ' GB';\n }\n static minutesPadded(minutes) {\n const h = Math.floor(minutes / 60);\n const m = minutes - h * 60;\n return (h + '').padStart(2, '0') + ':' + (m + '').padStart(2, '0');\n }\n static timeIndex(minutes) {\n const h = Math.floor(minutes / 60);\n const m = minutes - h * 60;\n return (h + '').padStart(2, '0') + (m + '').padStart(2, '0');\n }\n static minutes(minutes) {\n const h = Math.floor(minutes / 60);\n const m = minutes - h * 60;\n return h + ':' + (m + '').padStart(2, '0');\n }\n static escapeHtml(unsafe) {\n return unsafe\n .replace(/&/g, '&')\n .replace(//g, '>')\n .replace(/\"/g, '"')\n .replace(/'/g, ''');\n }\n static joinLast(array, separator, lastSeparator) {\n array = array.slice();\n const last = array.pop();\n if (last === undefined) {\n return '';\n }\n if (array.length === 0) {\n return last + '';\n }\n return array.join(separator) + lastSeparator + last;\n }\n static ordinalNumber(number) {\n if (number === 1) {\n return 'eerste';\n }\n if (number === 2) {\n return 'tweede';\n }\n if (number === 3) {\n return 'derde';\n }\n return number + 'e';\n }\n static pluralText(num, singular, plural) {\n if (num === 1) {\n return 'één ' + singular;\n }\n return num + ' ' + plural;\n }\n static groupNamesByFamily(names) {\n const n = names.slice().sort((a, b) => Sorter.stack(a.lastName.localeCompare(b.lastName), a.firstName.localeCompare(b.firstName)));\n const firstNames = this.uniqueArray(n.map(n => n.firstName));\n const lastNames = this.uniqueArray(n.map(n => n.lastName));\n return this.joinLast(firstNames, ', ', ' en ') + (lastNames.length > 0 ? (' ' + lastNames.join('-')) : '');\n }\n static firstLetters(str, maxLength) {\n if (!str) {\n return '';\n }\n if (maxLength === 1) {\n return str.substr(0, 1).toLocaleUpperCase();\n }\n const splitted = Formatter.slug(str).split('-');\n return splitted.slice(0, maxLength).map(s => s.substr(0, 1).toLocaleUpperCase()).join('');\n }\n}\nFormatter.timezone = 'Europe/Brussels';\n//# sourceMappingURL=Formatter.js.map","export function sleep(ms) {\n return new Promise(resolve => setTimeout(() => resolve(undefined), ms));\n}\n//# sourceMappingURL=Sleep.js.map","import { Formatter } from './Formatter';\nexport class StringCompare {\n /**\n * Return the search score = percentage (floating point) that matches.\n * Returns zero if no match is found or if minimum percentage is not met\n */\n static contains(haystack, needle) {\n haystack = haystack.normalize('NFD').replace(/[\\u0300-\\u036f]/g, '').toLowerCase().replace(/\\s+/, ' ').trim();\n needle = needle.normalize('NFD').replace(/[\\u0300-\\u036f]/g, '').toLowerCase().replace(/\\s+/, ' ').trim();\n return haystack.includes(needle);\n }\n /**\n * Return the search score = percentage (floating point) that matches.\n * Returns zero if no match is found or if minimum percentage is not met\n */\n static searchScore(haystack, needle, minimumPercentage = 10, minimumChars = 2) {\n if (haystack.length === 0) {\n return 0;\n }\n haystack = haystack.normalize('NFD').replace(/[\\u0300-\\u036f]/g, '').toLowerCase().replace(/\\s+/, ' ').trim();\n needle = needle.normalize('NFD').replace(/[\\u0300-\\u036f]/g, '').toLowerCase().replace(/\\s+/, ' ').trim();\n const overlap = this.compare(needle, haystack);\n if ((minimumChars === null || overlap > minimumChars) && (minimumPercentage === null || overlap >= haystack.length * minimumPercentage / 100)) {\n return overlap;\n }\n return 0;\n }\n /**\n * Return the amount of characters that are equal (allowing to detect typo's)\n */\n static compare(left, right, allowSplit = true) {\n if (left.length === 0 || right.length === 0) {\n return 0;\n }\n const firstLeft = left[0];\n const firstRight = right[0];\n if (firstLeft === firstRight) {\n return 1 + this.compare(left.substr(1), right.substr(1), true);\n }\n if (allowSplit) {\n return Math.max(this.compare(left, right.substr(1), false), this.compare(right, left.substr(1), false), this.compare(left.substr(1), right.substr(1), false), this.compare(right.substr(1), left.substr(1), false));\n }\n // no split allowed -> continue to remove right side\n return this.compare(left, right.substr(1), false);\n }\n static matchCount(original, compareWith) {\n // remove special chars + lowercase\n original = original.normalize('NFD').replace(/[\\u0300-\\u036f]/g, '').toLowerCase().replace(/\\s+/, ' ').trim();\n compareWith = compareWith.normalize('NFD').replace(/[\\u0300-\\u036f]/g, '').toLowerCase().replace(/\\s+/, ' ').trim();\n return this.compare(original, compareWith);\n }\n static typoCount(original, compareWith) {\n // remove special chars + lowercase\n original = original.normalize('NFD').replace(/[\\u0300-\\u036f]/g, '').toLowerCase().replace(/\\s+/, ' ').trim();\n compareWith = compareWith.normalize('NFD').replace(/[\\u0300-\\u036f]/g, '').toLowerCase().replace(/\\s+/, ' ').trim();\n return Math.max(original.length, compareWith.length) - this.compare(original, compareWith);\n }\n /**\n * Return true if the user typed in full caps (sigh)\n */\n static isFullCaps(str) {\n const fn = Formatter.removeAccents(str);\n if (fn.toUpperCase() === fn) {\n return true;\n }\n return false;\n }\n}\n//# sourceMappingURL=StringCompare.js.map","export const throttle = (func, limit) => {\n let lastFunc;\n let lastRan;\n return function () {\n const context = this;\n // eslint-disable-next-line prefer-rest-params\n const args = arguments;\n if (lastRan) {\n clearTimeout(lastFunc);\n }\n lastRan = Date.now();\n lastFunc = setTimeout(function () {\n if (Date.now() - lastRan >= limit) {\n func.apply(context, args);\n lastRan = Date.now();\n }\n }, limit - (Date.now() - lastRan));\n };\n};\n//# sourceMappingURL=Throttle.js.map","import { EnumDecoder } from '@simonbackx/simple-encoding';\nexport var Country;\n(function (Country) {\n Country[\"Belgium\"] = \"BE\";\n Country[\"Netherlands\"] = \"NL\";\n Country[\"Luxembourg\"] = \"LU\";\n Country[\"France\"] = \"FR\";\n Country[\"Germany\"] = \"DE\";\n Country[\"Sweden\"] = \"SE\";\n Country[\"UnitedKingdom\"] = \"GB\";\n Country[\"Switzerland\"] = \"CH\";\n Country[\"Afghanistan\"] = \"AF\";\n Country[\"CzechRepublic\"] = \"CZ\";\n Country[\"UnitedStates\"] = \"US\";\n Country[\"Austria\"] = \"AT\";\n Country[\"Portugal\"] = \"PT\";\n})(Country || (Country = {}));\n// We export an instance to prevent creating a new instance every time we need to decode a number\nexport const CountryDecoder = new EnumDecoder(Country);\nexport class CountryHelper {\n static getName(country) {\n switch (country) {\n case Country.Belgium: return 'België';\n case Country.Netherlands: return 'Nederland';\n case Country.Luxembourg: return 'Luxemburg';\n case Country.France: return 'Frankrijk';\n case Country.Germany: return 'Duitsland';\n case Country.Sweden: return 'Zweden';\n case Country.UnitedKingdom: return 'Verenigd Koninkrijk';\n case Country.Switzerland: return 'Zwitserland';\n case Country.Afghanistan: return 'Afghanistan';\n case Country.CzechRepublic: return 'Tsjechië';\n case Country.UnitedStates: return 'Verenigde Staten';\n case Country.Austria: return 'Oostenrijk';\n case Country.Portugal: return 'Portugal';\n }\n }\n static getList() {\n return Object.values(Country).map((country) => {\n return {\n text: this.getName(country),\n value: country,\n };\n });\n }\n}\n//# sourceMappingURL=CountryDecoder.js.map","import { __decorate } from \"tslib\";\nimport { AutoEncoder, field, ObjectData, StringDecoder } from '@simonbackx/simple-encoding';\nimport { SimpleError } from '@simonbackx/simple-errors';\nimport { Formatter, StringCompare } from '@stamhoofd/utility';\nimport { Country, CountryDecoder, CountryHelper } from './CountryDecoder';\nexport class Address extends AutoEncoder {\n get id() {\n return this.toString();\n }\n static patchIdentifier() {\n return StringDecoder;\n }\n toString() {\n return this.street + ' ' + this.number + ', ' + this.postalCode + ' ' + this.city + ', ' + CountryHelper.getName(this.country);\n }\n shortString() {\n return this.street + ' ' + this.number + ', ' + this.city;\n }\n anonymousString(currentCountry) {\n if (this.country == currentCountry) {\n return this.street + ', ' + this.city;\n }\n return this.street + ', ' + this.city + ' (' + CountryHelper.getName(this.country) + ')';\n }\n static createDefault(country = Country.Belgium) {\n return Address.create({\n street: '',\n number: '',\n postalCode: '',\n city: '',\n country,\n });\n }\n /**\n * Call this to clean up capitals in all the available data\n */\n cleanData() {\n if (StringCompare.isFullCaps(this.street)) {\n this.street = Formatter.capitalizeWords(this.street.toLowerCase());\n }\n if (StringCompare.isFullCaps(this.city)) {\n this.city = Formatter.capitalizeWords(this.city.toLowerCase());\n }\n this.number = this.number.trim();\n this.street = Formatter.capitalizeFirstLetter(this.street.trim());\n this.city = Formatter.capitalizeFirstLetter(this.city.trim());\n this.postalCode = this.postalCode.trim().toLocaleUpperCase();\n }\n static createFromFields(addressLine1, postalCode, city, country) {\n const { street, number } = Address.splitAddressLine(addressLine1);\n if (postalCode.length == 0) {\n throw new SimpleError({\n code: 'invalid_field',\n message: 'Empty postalcode',\n human: 'Vul de postcode in',\n });\n }\n if (city.length == 0) {\n throw new SimpleError({\n code: 'invalid_field',\n message: 'Empty city',\n human: 'Vul de gemeente in',\n });\n }\n let c;\n try {\n c = CountryDecoder.decode(new ObjectData(country, { version: 0 }));\n }\n catch (e) {\n throw new SimpleError({\n code: 'invalid_field',\n message: 'Invalid country',\n human: 'Selecteer een land',\n field: 'country',\n });\n }\n city = city.trim();\n if (city.match(/[0-9]/)) {\n throw new SimpleError({\n code: 'invalid_field',\n message: 'Invalid city',\n human: 'De gemeente mag geen cijfers bevatten.',\n field: 'city',\n });\n }\n if (c === Country.Belgium) {\n postalCode = postalCode.trim();\n if (postalCode.length !== 4 || !postalCode.match(/^[0-9]+$/)) {\n throw new SimpleError({\n code: 'invalid_field',\n message: 'Invalid postalCode',\n human: 'Ongeldige postcode. Een postcode moet uit 4 cijfers bestaan.',\n field: 'postalCode',\n });\n }\n }\n if (c === Country.Netherlands) {\n postalCode = postalCode.trim();\n const firstFour = postalCode.substring(0, 4);\n const remaining = postalCode.substring(4).trim().toLocaleUpperCase();\n if (firstFour.length !== 4 || !firstFour.match(/^[0-9]+$/) || remaining.length !== 2 || !remaining.match(/^[A-Z]+$/)) {\n throw new SimpleError({\n code: 'invalid_field',\n message: 'Invalid postalCode',\n human: 'Ongeldige postcode. Een postcode moet beginnen met 4 cijfers en eindigen op 2 letters, bv. 9000 AB',\n field: 'postalCode',\n });\n }\n postalCode = firstFour + ' ' + remaining;\n }\n const address = Address.create({\n street,\n number,\n postalCode: postalCode,\n city: city,\n country: c,\n });\n address.cleanData();\n return address;\n }\n static splitAddressLine(addressLine1) {\n if (addressLine1.length == 0) {\n throw new SimpleError({\n code: 'invalid_field',\n message: 'Empty address line 1',\n human: 'Vul de straat en huisnummer in',\n });\n }\n if (addressLine1.includes(',')) {\n throw new SimpleError({\n code: 'invalid_field',\n message: 'Empty address line 1',\n human: 'De straat bevat een komma. Verwijder die uit het adres en kijk na of het wel correct werd ingevuld.',\n });\n }\n if (addressLine1.length > 500) {\n // Helps with DoS attacks on the Regex\n throw new SimpleError({\n code: 'invalid_field',\n message: 'Empty address line 1',\n human: 'Het adres is te lang. Controleer of het correct werd ingevuld.',\n });\n }\n // Get position of last letter\n const match = /^\\s*([^0-9\\s][^0-9]+?)[\\s,]+([0-9].*?)\\s*$/.exec(addressLine1);\n if (!match) {\n throw new SimpleError({\n code: 'invalid_field',\n message: 'Missing number in address line 1',\n human: 'Het huisnummer ontbreekt in het opgegeven adres',\n });\n }\n const number = match[2];\n const street = match[1];\n return {\n number,\n street,\n };\n }\n throwIfIncomplete() {\n if (this.street.trim().length == 0) {\n throw new SimpleError({\n code: 'invalid_field',\n message: 'Empty street',\n human: 'De straat is verplicht',\n });\n }\n if (this.number.trim().length == 0) {\n throw new SimpleError({\n code: 'invalid_field',\n message: 'Empty number',\n human: 'Het huisnummer is verplicht',\n });\n }\n if (this.postalCode.trim().length == 0) {\n throw new SimpleError({\n code: 'invalid_field',\n message: 'Empty postal code',\n human: 'De postcode is verplicht',\n });\n }\n if (this.city.trim().length == 0) {\n throw new SimpleError({\n code: 'invalid_field',\n message: 'Empty city',\n human: 'De gemeente is verplicht',\n });\n }\n if (this.country == null) {\n throw new SimpleError({\n code: 'invalid_field',\n message: 'Empty country',\n human: 'Het land is verplicht',\n });\n }\n }\n}\n__decorate([\n field({ decoder: StringDecoder })\n], Address.prototype, \"street\", void 0);\n__decorate([\n field({ decoder: StringDecoder })\n], Address.prototype, \"number\", void 0);\n__decorate([\n field({ decoder: StringDecoder })\n], Address.prototype, \"postalCode\", void 0);\n__decorate([\n field({ decoder: StringDecoder })\n], Address.prototype, \"city\", void 0);\n__decorate([\n field({ decoder: CountryDecoder })\n], Address.prototype, \"country\", void 0);\nexport class ValidatedAddress extends Address {\n}\n__decorate([\n field({ decoder: StringDecoder })\n], ValidatedAddress.prototype, \"cityId\", void 0);\n__decorate([\n field({ decoder: StringDecoder, nullable: true })\n], ValidatedAddress.prototype, \"parentCityId\", void 0);\n__decorate([\n field({ decoder: StringDecoder })\n], ValidatedAddress.prototype, \"provinceId\", void 0);\n//# sourceMappingURL=Address.js.map","import { __decorate } from \"tslib\";\nimport { AutoEncoder, field, StringDecoder } from '@simonbackx/simple-encoding';\nimport { CountryDecoder } from './CountryDecoder';\nexport class Province extends AutoEncoder {\n}\n__decorate([\n field({ decoder: StringDecoder })\n], Province.prototype, \"id\", void 0);\n__decorate([\n field({ decoder: StringDecoder })\n], Province.prototype, \"name\", void 0);\n__decorate([\n field({ decoder: CountryDecoder })\n], Province.prototype, \"country\", void 0);\n//# sourceMappingURL=Province.js.map","import { __decorate } from \"tslib\";\nimport { AutoEncoder, field, StringDecoder } from '@simonbackx/simple-encoding';\nimport { CountryDecoder } from './CountryDecoder';\nimport { Province } from './Province';\nexport class City extends AutoEncoder {\n constructor() {\n super(...arguments);\n this.parentCityId = null;\n }\n}\n__decorate([\n field({ decoder: StringDecoder })\n], City.prototype, \"id\", void 0);\n__decorate([\n field({ decoder: StringDecoder })\n], City.prototype, \"name\", void 0);\n__decorate([\n field({ decoder: Province })\n], City.prototype, \"province\", void 0);\n__decorate([\n field({ decoder: StringDecoder, nullable: true })\n], City.prototype, \"parentCityId\", void 0);\n__decorate([\n field({ decoder: CountryDecoder })\n], City.prototype, \"country\", void 0);\n//# sourceMappingURL=City.js.map","// Unique ID creation requires a high quality random # generator. In the browser we therefore\n// require the crypto API and do not support built-in fallback to lower quality random number\n// generators (like Math.random()).\nvar getRandomValues;\nvar rnds8 = new Uint8Array(16);\nexport default function rng() {\n // lazy load so that environments that need to polyfill have a chance to do so\n if (!getRandomValues) {\n // getRandomValues needs to be invoked in a context where \"this\" is a Crypto implementation. Also,\n // find the complete implementation of crypto (msCrypto) on IE11.\n getRandomValues = typeof crypto !== 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto) || typeof msCrypto !== 'undefined' && typeof msCrypto.getRandomValues === 'function' && msCrypto.getRandomValues.bind(msCrypto);\n\n if (!getRandomValues) {\n throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n }\n }\n\n return getRandomValues(rnds8);\n}","export default /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;","import REGEX from './regex.js';\n\nfunction validate(uuid) {\n return typeof uuid === 'string' && REGEX.test(uuid);\n}\n\nexport default validate;","import validate from './validate.js';\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\n\nvar byteToHex = [];\n\nfor (var i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).substr(1));\n}\n\nfunction stringify(arr) {\n var offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n // Note: Be careful editing this code! It's been tuned for performance\n // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434\n var uuid = (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase(); // Consistency check for valid UUID. If this throws, it's likely due to one\n // of the following:\n // - One or more input array values don't map to a hex octet (leading to\n // \"undefined\" in the uuid)\n // - Invalid input values for the RFC `version` or `variant` fields\n\n if (!validate(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n\n return uuid;\n}\n\nexport default stringify;","import rng from './rng.js';\nimport stringify from './stringify.js';\n\nfunction v4(options, buf, offset) {\n options = options || {};\n var rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n\n rnds[6] = rnds[6] & 0x0f | 0x40;\n rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided\n\n if (buf) {\n offset = offset || 0;\n\n for (var i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n\n return buf;\n }\n\n return stringify(rnds);\n}\n\nexport default v4;","import { __decorate } from \"tslib\";\nimport { ArrayDecoder, AutoEncoder, field, StringDecoder } from '@simonbackx/simple-encoding';\nimport { v4 as uuidv4 } from 'uuid';\nimport { Address } from './Address';\nexport class Premise extends AutoEncoder {\n constructor() {\n super(...arguments);\n this.name = '';\n this.description = '';\n this.premiseTypeIds = [];\n this.address = Address.createDefault();\n }\n static createDefault(country) {\n return Premise.create({ address: Address.createDefault(country) });\n }\n}\n__decorate([\n field({ decoder: StringDecoder, defaultValue: () => uuidv4() })\n], Premise.prototype, \"id\", void 0);\n__decorate([\n field({ decoder: StringDecoder, version: 323 })\n], Premise.prototype, \"name\", void 0);\n__decorate([\n field({ decoder: StringDecoder, version: 323 })\n], Premise.prototype, \"description\", void 0);\n__decorate([\n field({ decoder: new ArrayDecoder(StringDecoder) })\n], Premise.prototype, \"premiseTypeIds\", void 0);\n__decorate([\n field({ decoder: Address })\n], Premise.prototype, \"address\", void 0);\n//# sourceMappingURL=Premise.js.map","import { __decorate } from \"tslib\";\nimport { AutoEncoder, field, StringDecoder } from '@simonbackx/simple-encoding';\nimport { v4 as uuidv4 } from 'uuid';\nimport { Address } from './addresses/Address';\nexport class Company extends AutoEncoder {\n constructor() {\n super(...arguments);\n /**\n * Legal name of the organization (optional)\n */\n this.name = '';\n this.VATNumber = null;\n this.companyNumber = null;\n this.address = null;\n this.administrationEmail = null;\n }\n}\n__decorate([\n field({ decoder: StringDecoder, optional: true, defaultValue: () => uuidv4() })\n], Company.prototype, \"id\", void 0);\n__decorate([\n field({ decoder: StringDecoder })\n], Company.prototype, \"name\", void 0);\n__decorate([\n field({ decoder: StringDecoder, nullable: true })\n], Company.prototype, \"VATNumber\", void 0);\n__decorate([\n field({ decoder: StringDecoder, nullable: true })\n], Company.prototype, \"companyNumber\", void 0);\n__decorate([\n field({ decoder: Address, nullable: true })\n], Company.prototype, \"address\", void 0);\n__decorate([\n field({ decoder: StringDecoder, nullable: true, optional: true })\n], Company.prototype, \"administrationEmail\", void 0);\n//# sourceMappingURL=Company.js.map","import { SimpleError } from '@simonbackx/simple-errors';\nexport var SortItemDirection;\n(function (SortItemDirection) {\n SortItemDirection[\"ASC\"] = \"ASC\";\n SortItemDirection[\"DESC\"] = \"DESC\";\n})(SortItemDirection || (SortItemDirection = {}));\nexport function encodeSortList(sort) {\n return sort.map(s => `${s.key} ${s.order}`).join(',');\n}\nexport class SortListDecoder {\n static decode(data) {\n const str = data.string.trim();\n if (str === '') {\n return [];\n }\n const splitted = str.split(',');\n const list = [];\n for (const [index, part] of splitted.entries()) {\n const sub = part.trim().split(' ');\n if (sub.length > 2 || sub.length === 0) {\n throw new SimpleError({\n code: 'invalid_field',\n message: `Invalid sort list at ${data.currentField}`,\n field: data.currentField,\n });\n }\n const direction = sub.length === 1\n ? SortItemDirection.ASC\n : data.clone({\n data: sub[1],\n context: data.context,\n field: data.addToCurrentField(index),\n }).enum(SortItemDirection);\n const key = sub[0].trim();\n list.push({\n key,\n order: direction,\n });\n }\n return list;\n }\n}\n//# sourceMappingURL=SortList.js.map","import { __decorate } from \"tslib\";\nimport { AutoEncoder, DateDecoder, field, IntegerDecoder, StringDecoder } from '@simonbackx/simple-encoding';\nimport { SimpleError } from '@simonbackx/simple-errors';\nimport { encodeSortList, SortListDecoder } from './SortList';\nexport class StamhoofdFilterJSONDecoder {\n static encode(context, filter) {\n return JSON.stringify(StamhoofdFilterDecoder.encode(context, filter));\n }\n static decode(data) {\n const str = data.string;\n try {\n const decoded = JSON.parse(str);\n return StamhoofdFilterDecoder.decode(data.clone({ data: decoded, field: data.currentField, context: data.context }));\n }\n catch (e) {\n throw new SimpleError({\n code: 'invalid_field',\n message: `Expected JSON at ${data.currentField}`,\n field: data.currentField,\n });\n }\n }\n}\nexport class StamhoofdFilterDecoder {\n static encode(context, filter) {\n // We need to convert all Date objects to something recornizable so we can decode them as Dates too\n // We'll use magic objects for this: { $: '$date', value: unixtimeinms }\n if (filter instanceof Date) {\n return { $: '$date', value: filter.encode(context) };\n }\n if (filter === null) {\n return null;\n }\n if (Array.isArray(filter)) {\n return filter.map(f => this.encode(context, f));\n }\n if (typeof filter === 'object') {\n // Loop and replace all keys\n const c = {};\n for (const [key, value] of Object.entries(filter)) {\n c[key] = this.encode(context, value);\n }\n return c;\n }\n return filter;\n }\n static decode(data) {\n const value = data.value;\n if (value === null) {\n return null;\n }\n if (Array.isArray(value)) {\n return value.map((v, index) => this.decode(data.clone({\n data: v,\n field: data.addToCurrentField(index),\n context: data.context,\n })));\n }\n if (typeof value === 'object') {\n // Check if it's a date\n if ('$' in value && value.$ === '$date' && 'value' in value) {\n return DateDecoder.decode(data.clone({\n data: value.value,\n field: data.addToCurrentField('value'),\n context: data.context,\n }));\n }\n // Loop and replace all keys\n const c = {};\n for (const [key, v] of Object.entries(value)) {\n c[key] = this.decode(data.clone({\n data: v,\n field: data.addToCurrentField(key),\n context: data.context,\n }));\n }\n return c;\n }\n if (typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean') {\n return value;\n }\n throw new SimpleError({\n code: 'invalid_field',\n message: `Invalid filter at ${data.currentField}`,\n field: data.currentField,\n });\n }\n}\nexport class CountResponse extends AutoEncoder {\n}\n__decorate([\n field({ decoder: IntegerDecoder })\n], CountResponse.prototype, \"count\", void 0);\nexport class CountFilteredRequest {\n constructor(data) {\n var _a, _b;\n this.filter = (_a = data.filter) !== null && _a !== void 0 ? _a : null;\n this.search = (_b = data.search) !== null && _b !== void 0 ? _b : null;\n }\n static decode(data) {\n var _a, _b;\n return new CountFilteredRequest({\n filter: (_a = data.optionalField('filter')) === null || _a === void 0 ? void 0 : _a.nullable(StamhoofdFilterJSONDecoder),\n search: (_b = data.optionalField('search')) === null || _b === void 0 ? void 0 : _b.nullable(StringDecoder),\n });\n }\n encode(context) {\n var _a;\n return {\n filter: this.filter ? JSON.stringify(this.filter) : undefined,\n search: (_a = this.search) !== null && _a !== void 0 ? _a : undefined,\n };\n }\n}\nexport class LimitedFilteredRequest {\n constructor(data) {\n var _a, _b, _c, _d;\n this.filter = (_a = data.filter) !== null && _a !== void 0 ? _a : null;\n this.pageFilter = (_b = data.pageFilter) !== null && _b !== void 0 ? _b : null;\n this.sort = (_c = data.sort) !== null && _c !== void 0 ? _c : [];\n this.limit = data.limit;\n this.search = (_d = data.search) !== null && _d !== void 0 ? _d : null;\n }\n static decode(data) {\n var _a, _b, _c;\n return new LimitedFilteredRequest({\n filter: (_a = data.optionalField('filter')) === null || _a === void 0 ? void 0 : _a.nullable(StamhoofdFilterJSONDecoder),\n pageFilter: (_b = data.optionalField('pageFilter')) === null || _b === void 0 ? void 0 : _b.nullable(StamhoofdFilterJSONDecoder),\n sort: data.field('sort').decode(SortListDecoder),\n limit: data.field('limit').integer,\n search: (_c = data.optionalField('search')) === null || _c === void 0 ? void 0 : _c.nullable(StringDecoder),\n });\n }\n encode(context) {\n var _a;\n return {\n filter: this.filter ? StamhoofdFilterJSONDecoder.encode(context, this.filter) : undefined,\n pageFilter: this.pageFilter ? StamhoofdFilterJSONDecoder.encode(context, this.pageFilter) : undefined,\n sort: encodeSortList(this.sort),\n limit: this.limit,\n search: (_a = this.search) !== null && _a !== void 0 ? _a : undefined,\n };\n }\n}\n//# sourceMappingURL=FilteredRequest.js.map","import { SortItemDirection } from './SortList';\nexport function isEmptyFilter(filter) {\n if (filter === null) {\n return true;\n }\n if (typeof filter === 'object' && filter !== null) {\n return Object.keys(filter).length === 0;\n }\n if (Array.isArray(filter)) {\n return filter.length === 0;\n }\n return false;\n}\nexport function mergeFilters(filters, type = '$and') {\n const filteredFilters = filters.filter(f => !isEmptyFilter(f));\n if (filteredFilters.length === 0) {\n return null;\n }\n if (filteredFilters.length === 1) {\n return filteredFilters[0];\n }\n return {\n [type]: filteredFilters,\n };\n}\nexport function assertSort(list, assert) {\n var _a, _b, _c;\n for (const a of assert) {\n if (list.find(l => l.key === a.key)) {\n continue;\n }\n // Always add id as an extra sort key for sorters that are not unique\n list = [...list, { key: a.key, order: (_c = (_a = a.order) !== null && _a !== void 0 ? _a : (_b = list[0]) === null || _b === void 0 ? void 0 : _b.order) !== null && _c !== void 0 ? _c : SortItemDirection.ASC }];\n }\n return list;\n}\nexport function isEqualFilter(a, b) {\n if (a === null) {\n return b === null;\n }\n if (b === null) {\n return false;\n }\n return JSON.stringify(a) === JSON.stringify(b);\n}\n//# sourceMappingURL=StamhoofdFilter.js.map","import { StamhoofdFilterDecoder } from './FilteredRequest';\nimport { isEmptyFilter } from './StamhoofdFilter';\nexport class PropertyFilter {\n constructor(enabledWhen, requiredWhen) {\n /**\n * Enabled when...\n * null = always enabled\n */\n this.enabledWhen = null;\n /**\n * If enabled, whether it is required\n * null = always skippable\n * empty filter = always required\n */\n this.requiredWhen = null;\n this.enabledWhen = enabledWhen;\n this.requiredWhen = requiredWhen;\n }\n static createDefault() {\n return new PropertyFilter(null, {});\n }\n isEnabled(object) {\n if (this.enabledWhen === null) {\n return true;\n }\n return object.doesMatchFilter(this.enabledWhen);\n }\n get isAlwaysEnabledAndRequired() {\n return this.enabledWhen === null && isEmptyFilter(this.requiredWhen);\n }\n isRequired(object) {\n if (this.requiredWhen === null) {\n return false;\n }\n return object.doesMatchFilter(this.requiredWhen);\n }\n encode(context) {\n return {\n enabledWhen: this.enabledWhen,\n requiredWhen: this.requiredWhen,\n };\n }\n static decode(data) {\n if (data.context.version < 251) {\n console.error('PropertyFilter: legacy filter detected - this is not implemented yet. Possible data loss.');\n return PropertyFilter.createDefault();\n }\n return new PropertyFilter(data.field('enabledWhen').nullable(StamhoofdFilterDecoder), data.field('requiredWhen').nullable(StamhoofdFilterDecoder));\n }\n}\n//# sourceMappingURL=PropertyFilter.js.map","export var GroupType;\n(function (GroupType) {\n /**\n * registration as a member at an organization - for a specific age group (most of the time)\n */\n GroupType[\"Membership\"] = \"Membership\";\n /**\n * Waiting list of any other group\n */\n GroupType[\"WaitingList\"] = \"WaitingList\";\n /**\n * Activity\n */\n GroupType[\"EventRegistration\"] = \"EventRegistration\";\n // idea: EventPreRegistration = \"EventPreRegistration\", // let know in advance that you want to join\n // idea: EventAttendance = \"EventAttendance\", // attendance list for an event, by admins only\n})(GroupType || (GroupType = {}));\n//# sourceMappingURL=GroupType.js.map","import { __decorate } from \"tslib\";\nimport { AutoEncoder, EnumDecoder, field, IntegerDecoder } from '@simonbackx/simple-encoding';\nexport var ResolutionFit;\n(function (ResolutionFit) {\n ResolutionFit[\"Contain\"] = \"contain\";\n ResolutionFit[\"Cover\"] = \"cover\";\n ResolutionFit[\"Fill\"] = \"fill\";\n ResolutionFit[\"Inside\"] = \"inside\";\n ResolutionFit[\"Outside\"] = \"outside\";\n})(ResolutionFit || (ResolutionFit = {}));\nexport class ResolutionRequest extends AutoEncoder {\n constructor() {\n super(...arguments);\n this.width = null;\n this.height = null;\n this.fit = ResolutionFit.Inside;\n }\n}\n__decorate([\n field({ decoder: IntegerDecoder, nullable: true })\n], ResolutionRequest.prototype, \"width\", void 0);\n__decorate([\n field({ decoder: IntegerDecoder, nullable: true })\n], ResolutionRequest.prototype, \"height\", void 0);\n__decorate([\n field({ decoder: new EnumDecoder(ResolutionFit) })\n], ResolutionRequest.prototype, \"fit\", void 0);\n//# sourceMappingURL=ResolutionRequest.js.map","import { __decorate } from \"tslib\";\nimport { ArrayDecoder, AutoEncoder, BooleanDecoder, EnumDecoder, field, StringDecoder } from '@simonbackx/simple-encoding';\nimport { SimpleError } from '@simonbackx/simple-errors';\nimport { v4 as uuidv4 } from 'uuid';\nimport { ResolutionRequest } from '../../files/ResolutionRequest';\nexport var RecordType;\n(function (RecordType) {\n /**\n * Show a checkbox to the user so they can check the value on/off\n * It is possible to add a textarea as soon as the checkbox is selected if the extra property is set.\n */\n RecordType[\"Checkbox\"] = \"Checkbox\";\n /**\n * Select one (or none if not required)\n */\n RecordType[\"ChooseOne\"] = \"ChooseOne\";\n /**\n * Select one, zero or more from a menu\n * The way this is shown will differ depending on the minimum or maximum setting. e.g. when exactly one\n * item should be selected, we could show it with a dropdown menu\n */\n RecordType[\"MultipleChoice\"] = \"MultipleChoice\";\n /**\n * Small text input\n */\n RecordType[\"Text\"] = \"Text\";\n /**\n * Big text input\n */\n RecordType[\"Textarea\"] = \"Textarea\";\n /**\n * Address input\n */\n RecordType[\"Address\"] = \"Address\";\n RecordType[\"Phone\"] = \"Phone\";\n RecordType[\"Email\"] = \"Email\";\n RecordType[\"Date\"] = \"Date\";\n RecordType[\"Price\"] = \"Price\";\n RecordType[\"Image\"] = \"Image\";\n RecordType[\"Integer\"] = \"Integer\";\n})(RecordType || (RecordType = {}));\nexport var RecordWarningType;\n(function (RecordWarningType) {\n RecordWarningType[\"Info\"] = \"Info\";\n RecordWarningType[\"Warning\"] = \"Warning\";\n RecordWarningType[\"Error\"] = \"Error\";\n})(RecordWarningType || (RecordWarningType = {}));\nexport class RecordWarning extends AutoEncoder {\n constructor() {\n super(...arguments);\n this.text = '';\n this.type = RecordWarningType.Info;\n /**\n * Show a warning if the associated value is falsy\n */\n this.inverted = false;\n }\n static get sort() {\n return (warning1, warning2) => {\n const priority1 = warning1.type;\n const priority2 = warning2.type;\n if ((priority1 === RecordWarningType.Error && priority2 === RecordWarningType.Warning)\n || (priority1 === RecordWarningType.Warning && priority2 === RecordWarningType.Info)\n || (priority1 === RecordWarningType.Error && priority2 === RecordWarningType.Info)) {\n return -1;\n }\n else if ((priority1 === RecordWarningType.Info && priority2 === RecordWarningType.Warning)\n || (priority1 === RecordWarningType.Warning && priority2 === RecordWarningType.Error)\n || (priority1 === RecordWarningType.Info && priority2 === RecordWarningType.Error)) {\n return 1;\n }\n else {\n return 0;\n }\n };\n }\n get icon() {\n switch (this.type) {\n case RecordWarningType.Error: return ' exclamation-two red';\n case RecordWarningType.Warning: return ' exclamation yellow';\n case RecordWarningType.Info: return ' info-text';\n }\n }\n}\n__decorate([\n field({ decoder: StringDecoder, defaultValue: () => uuidv4() })\n], RecordWarning.prototype, \"id\", void 0);\n__decorate([\n field({ decoder: StringDecoder })\n], RecordWarning.prototype, \"text\", void 0);\n__decorate([\n field({ decoder: new EnumDecoder(RecordWarningType) })\n], RecordWarning.prototype, \"type\", void 0);\n__decorate([\n field({ decoder: BooleanDecoder })\n], RecordWarning.prototype, \"inverted\", void 0);\nexport class RecordChoice extends AutoEncoder {\n constructor() {\n super(...arguments);\n this.name = '';\n this.description = '';\n /**\n * Show a warning if selected (or not selected if inverted)\n */\n this.warning = null;\n }\n}\n__decorate([\n field({ decoder: StringDecoder, defaultValue: () => uuidv4() })\n], RecordChoice.prototype, \"id\", void 0);\n__decorate([\n field({ decoder: StringDecoder })\n], RecordChoice.prototype, \"name\", void 0);\n__decorate([\n field({ decoder: StringDecoder, version: 118 })\n], RecordChoice.prototype, \"description\", void 0);\n__decorate([\n field({ decoder: RecordWarning, version: 122, nullable: true })\n], RecordChoice.prototype, \"warning\", void 0);\nexport class RecordSettings extends AutoEncoder {\n constructor() {\n super(...arguments);\n /**\n * Short name (used mainly for displaying the information)\n */\n this.name = '';\n /**\n * When used with checkbox: checkbox needs to get checked (e.g accept terms, confirm age...)\n * Multiple choice: minimum one selection required\n * Text: required input\n */\n this.required = true;\n /**\n * Whether you need permission to collect this information\n */\n this.sensitive = false;\n /**\n * Only used for checkboxes\n */\n this.askComments = false;\n /**\n * Future idea:\n * Is this information visible for the member?\n * -> needs some major changes in saving the encryption blobs (needs to get split in two)\n */\n // @field({ decoder: BooleanDecoder })\n // visibleForMembers = true\n this.type = RecordType.Text;\n /**\n * In case of multiple choice: the values you can choose from with optional additional information\n */\n this.choices = [];\n /**\n * Label used for input (depending on the type)\n * Checkbox: text next to checkbox\n * Text inputs: label field above the input\n * If empty: name is used\n */\n this.label = '';\n /**\n * Text underneath the label in case of a checkbox.\n * For other types: below the input\n */\n this.description = '';\n /// In case of textboxes or comments for checked checkboxes\n this.inputPlaceholder = '';\n /// Text below the input field for comments (if any)\n this.commentsDescription = '';\n /**\n * Show a warning if selected / entered (or not selected/entered if inverted)\n */\n this.warning = null;\n }\n validate(answers, requiredCategory = true) {\n const answer = answers.get(this.id);\n if (!requiredCategory && (!answer || answer.isEmpty)) {\n // Okay to skip\n return;\n }\n if (this.required && !answer) {\n throw new SimpleError({\n code: 'invalid_field',\n message: 'Dit veld is verplicht',\n field: this.id,\n });\n }\n if (answer) {\n answer.validate();\n }\n }\n get excelColumns() {\n if (this.type === RecordType.Address) {\n return [\n this.name + ' - Straat en nummer',\n this.name + ' - Postcode',\n this.name + ' - Gemeente',\n this.name + ' - Land',\n ];\n }\n return [this.name];\n }\n}\n__decorate([\n field({ decoder: StringDecoder, defaultValue: () => uuidv4() })\n], RecordSettings.prototype, \"id\", void 0);\n__decorate([\n field({ decoder: StringDecoder })\n], RecordSettings.prototype, \"name\", void 0);\n__decorate([\n field({ decoder: BooleanDecoder })\n], RecordSettings.prototype, \"required\", void 0);\n__decorate([\n field({ decoder: BooleanDecoder, version: 123 })\n], RecordSettings.prototype, \"sensitive\", void 0);\n__decorate([\n field({ decoder: BooleanDecoder, version: 119 })\n], RecordSettings.prototype, \"askComments\", void 0);\n__decorate([\n field({ decoder: new EnumDecoder(RecordType) })\n], RecordSettings.prototype, \"type\", void 0);\n__decorate([\n field({ decoder: new ArrayDecoder(RecordChoice) })\n], RecordSettings.prototype, \"choices\", void 0);\n__decorate([\n field({ decoder: StringDecoder })\n], RecordSettings.prototype, \"label\", void 0);\n__decorate([\n field({ decoder: StringDecoder })\n], RecordSettings.prototype, \"description\", void 0);\n__decorate([\n field({ decoder: StringDecoder })\n], RecordSettings.prototype, \"inputPlaceholder\", void 0);\n__decorate([\n field({ decoder: StringDecoder, version: 120 })\n], RecordSettings.prototype, \"commentsDescription\", void 0);\n__decorate([\n field({ decoder: RecordWarning, version: 122, nullable: true })\n], RecordSettings.prototype, \"warning\", void 0);\n__decorate([\n field({ decoder: new ArrayDecoder(ResolutionRequest), optional: true })\n], RecordSettings.prototype, \"resolutions\", void 0);\n//# sourceMappingURL=RecordSettings.js.map","import { __decorate } from \"tslib\";\nimport { ArrayDecoder, AutoEncoder, BooleanDecoder, field, StringDecoder } from '@simonbackx/simple-encoding';\nimport { isSimpleError, isSimpleErrors, SimpleErrors } from '@simonbackx/simple-errors';\nimport { v4 as uuidv4 } from 'uuid';\nimport { PropertyFilter } from '../../filters/PropertyFilter';\nimport { RecordSettings } from './RecordSettings';\nexport class RecordCategory extends AutoEncoder {\n constructor() {\n super(...arguments);\n this.name = '';\n this.description = '';\n /**\n * Sometimes a category needs to be in the list but not enabled.\n * E.g. when decendants can enable it optionally and share the data\n */\n this.defaultEnabled = true;\n /**\n * A category can either have childCategories or records, but never both. Records are ignored as soon as the category has at least one child category.\n * Currently we only support 2 categories deep\n */\n this.childCategories = [];\n this.records = [];\n this.filter = null;\n }\n get containsSensitiveData() {\n return !!this.getAllRecords().find(r => r.sensitive);\n }\n getAllRecords() {\n if (this.childCategories.length > 0) {\n return [...this.childCategories.flatMap(c => c.getAllRecords()), ...this.records];\n }\n return this.records;\n }\n getAllFilteredRecords(filterValue) {\n if (this.childCategories.length > 0) {\n return [\n ...this.filterChildCategories(filterValue).flatMap(c => c.getAllFilteredRecords(filterValue)),\n ...this.filterRecords(filterValue),\n ];\n }\n return this.filterRecords(filterValue);\n }\n filterRecords(filterValue) {\n return this.records.filter(r => filterValue.isRecordEnabled(r));\n }\n isEnabled(filterValue, ignoreFilter = false) {\n if (!ignoreFilter) {\n if (!this.defaultEnabled) {\n return false;\n }\n if (this.filter && !this.filter.isEnabled(filterValue)) {\n return false;\n }\n }\n if (this.childCategories.length > 0) {\n if (this.filterChildCategories(filterValue).length > 0) {\n return true;\n }\n }\n if (this.filterRecords(filterValue).length > 0) {\n return true;\n }\n return false;\n }\n isRequired(filterValue) {\n if (!this.filter || this.filter.isRequired(filterValue)) {\n return true;\n }\n return false;\n }\n static filterCategories(categories, filterValue) {\n return categories.filter((category) => {\n return category.isEnabled(filterValue);\n });\n }\n filterChildCategories(filterValue) {\n return RecordCategory.filterCategories(this.childCategories, filterValue);\n }\n /**\n * Flatten all categories and child categories into a single array\n */\n static flattenCategories(categories, filterValue) {\n return RecordCategory.filterCategories(categories, filterValue).flatMap((cat) => {\n // Make a (not deep!) clone\n const cat2 = RecordCategory.create(cat);\n cat2.childCategories = [];\n cat2.records = cat2.filterRecords(filterValue);\n if (cat.childCategories.length > 0) {\n // Make a (not deep!) clone\n return [\n ...(cat2.records.length > 0 ? [cat2] : []),\n ...this.flattenCategories(cat.childCategories, filterValue).map((c) => {\n // Make a (not deep!) clone\n const cc = RecordCategory.create(c);\n cc.name = cat.name + ' → ' + c.name;\n return cc;\n }),\n ];\n }\n return (cat2.records.length > 0 ? [cat2] : []);\n });\n }\n /**\n * Get a flat array with record categories whose records match the filter\n */\n static flattenCategoriesWith(categories, filter) {\n return categories.flatMap((cat) => {\n // Make a (not deep!) clone\n const cat2 = RecordCategory.create(cat);\n const updatedRecords = cat.records.filter((r) => {\n return filter(r);\n });\n cat2.records = updatedRecords;\n if (cat.childCategories.length > 0) {\n // Make a (not deep!) clone\n cat2.childCategories = [];\n return [\n ...(cat2.records.length > 0 ? [cat2] : []),\n ...this.flattenCategoriesWith(cat.childCategories, filter).map((c) => {\n // Make a (not deep!) clone\n const cc = RecordCategory.create(c);\n cc.name = cat.name + ' → ' + c.name;\n return cc;\n }),\n ];\n }\n return cat2.records.length > 0 ? [cat2] : [];\n });\n }\n /**\n * Remove (child) categories that don't have a record that matches the filter\n */\n static filterRecordsWith(categories, filter) {\n return categories.flatMap((cat) => {\n // Make a (not deep!) clone\n const cat2 = RecordCategory.create(cat);\n const updatedRecords = cat.records.filter((r) => {\n return filter(r);\n });\n cat2.records = updatedRecords;\n cat2.childCategories = this.filterRecordsWith(cat.childCategories, filter);\n return cat2.records.length > 0 || cat2.childCategories.length > 0 ? [cat2] : [];\n });\n }\n /**\n * Get all categories for the given answers\n */\n static flattenCategoriesForAnswers(categories, answers) {\n return this.flattenCategoriesWith(categories, (r) => {\n return !!answers.find(a => a.settings.id == r.id);\n });\n }\n static validate(categories, filterValue) {\n const filteredCategories = RecordCategory.filterCategories(categories, filterValue);\n const errors = new SimpleErrors();\n // Delete all records that are not in the list\n for (const category of filteredCategories) {\n const requiredCategory = category.isRequired(filterValue);\n for (const record of category.getAllFilteredRecords(filterValue)) {\n try {\n record.validate(filterValue.getRecordAnswers(), requiredCategory);\n }\n catch (e) {\n if (isSimpleErrors(e) || isSimpleError(e)) {\n errors.addError(e);\n }\n else {\n throw e;\n }\n }\n }\n }\n errors.throwIfNotEmpty();\n }\n}\n__decorate([\n field({ decoder: StringDecoder, defaultValue: () => uuidv4() })\n], RecordCategory.prototype, \"id\", void 0);\n__decorate([\n field({ decoder: StringDecoder })\n], RecordCategory.prototype, \"name\", void 0);\n__decorate([\n field({ decoder: StringDecoder })\n], RecordCategory.prototype, \"description\", void 0);\n__decorate([\n field({ decoder: BooleanDecoder, version: 255 })\n], RecordCategory.prototype, \"defaultEnabled\", void 0);\n__decorate([\n field({ decoder: new ArrayDecoder(RecordCategory) })\n], RecordCategory.prototype, \"childCategories\", void 0);\n__decorate([\n field({ decoder: new ArrayDecoder(RecordSettings) })\n], RecordCategory.prototype, \"records\", void 0);\n__decorate([\n field({ decoder: PropertyFilter, version: 126, nullable: true, optional: true })\n], RecordCategory.prototype, \"filter\", void 0);\n//# sourceMappingURL=RecordCategory.js.map","import { __decorate } from \"tslib\";\nimport { ArrayDecoder, AutoEncoder, BooleanDecoder, field, IntegerDecoder, MapDecoder, StringDecoder } from '@simonbackx/simple-encoding';\nimport { PropertyFilter } from '../filters/PropertyFilter';\nimport { GroupType } from '../GroupType';\nimport { RecordCategory } from './records/RecordCategory';\nexport var AskRequirement;\n(function (AskRequirement) {\n AskRequirement[\"NotAsked\"] = \"NotAsked\";\n AskRequirement[\"Optional\"] = \"Optional\";\n AskRequirement[\"Required\"] = \"Required\";\n})(AskRequirement || (AskRequirement = {}));\nexport class FreeContributionSettings extends AutoEncoder {\n constructor() {\n super(...arguments);\n this.description = '';\n this.amounts = [500, 1500, 3000];\n }\n}\n__decorate([\n field({ decoder: StringDecoder })\n], FreeContributionSettings.prototype, \"description\", void 0);\n__decorate([\n field({ decoder: new ArrayDecoder(IntegerDecoder) })\n], FreeContributionSettings.prototype, \"amounts\", void 0);\nexport class FinancialSupportSettings extends AutoEncoder {\n constructor() {\n super(...arguments);\n /**\n * E.g. 'financial support'\n */\n this.title = FinancialSupportSettings.defaultTitle;\n /**\n * E.g. 'We provide financial support for families in financial difficulties. You can ask for this by checking this checkbox'\n */\n this.description = FinancialSupportSettings.defaultDescription;\n /**\n * E.g. 'My family is in need of financial support'\n */\n this.checkboxLabel = FinancialSupportSettings.defaultCheckboxLabel;\n /**\n * E.g. 'SOMkort'\n */\n this.priceName = FinancialSupportSettings.defaultPriceName;\n /**\n * E.g. 'Uses financial support'\n */\n this.warningText = FinancialSupportSettings.defaultWarningText;\n /**\n * Whether a member can self assign financial support.\n * If false a member who chooses financial support cannot self subscribe.\n */\n this.preventSelfAssignment = false;\n /**\n * The text that a member sees if he cannot inscribe with financial support.\n */\n this.preventSelfAssignmentText = null;\n }\n static get defaultDescription() {\n return 'We doen ons best om de kostprijs van onze activiteiten zo laag mogelijk te houden. Daarnaast voorzien we middelen om gezinnen die dat nodig hebben te ondersteunen. Om de drempel zo laag mogelijk te houden, voorzien we een discrete checkbox waarmee je kan aangeven dat je ondersteuning nodig hebt. We gaan hier uiterst discreet mee om.';\n }\n static get defaultTitle() {\n return 'Financiële ondersteuning';\n }\n static get defaultPriceName() {\n return 'Verlaagd tarief';\n }\n static get defaultCheckboxLabel() {\n return 'Mijn gezin heeft nood aan financiële ondersteuning en ik wil dit discreet kenbaar maken';\n }\n static get defaultWarningText() {\n return 'Gebruikt financiële ondersteuning';\n }\n static get defaultPreventSelfAssignmentText() {\n return 'Er is goedkeuring nodig om in te schrijven met financiële ondersteuning. Gelieve de groep te contacteren.';\n }\n}\n__decorate([\n field({ decoder: StringDecoder })\n], FinancialSupportSettings.prototype, \"title\", void 0);\n__decorate([\n field({ decoder: StringDecoder })\n], FinancialSupportSettings.prototype, \"description\", void 0);\n__decorate([\n field({ decoder: StringDecoder })\n], FinancialSupportSettings.prototype, \"checkboxLabel\", void 0);\n__decorate([\n field({ decoder: StringDecoder, version: 289 })\n], FinancialSupportSettings.prototype, \"priceName\", void 0);\n__decorate([\n field({ decoder: StringDecoder, optional: true })\n], FinancialSupportSettings.prototype, \"warningText\", void 0);\n__decorate([\n field({ decoder: BooleanDecoder, optional: true, version: 319 })\n], FinancialSupportSettings.prototype, \"preventSelfAssignment\", void 0);\n__decorate([\n field({ decoder: StringDecoder, nullable: true, version: 319 })\n], FinancialSupportSettings.prototype, \"preventSelfAssignmentText\", void 0);\nexport class DataPermissionsSettings extends AutoEncoder {\n constructor() {\n super(...arguments);\n /**\n * E.g. 'financial support'\n */\n this.title = DataPermissionsSettings.defaultTitle;\n /**\n * E.g. 'We provide financial support for families in financial difficulties. You can ask for this by checking this checkbox'\n */\n this.description = DataPermissionsSettings.defaultDescription;\n /**\n * E.g. 'My family is in need of financial support'\n */\n this.checkboxLabel = DataPermissionsSettings.defaultCheckboxLabel;\n /**\n * Warning that is shown if the checkbox is not checked\n * E.g. 'Without this information the group will not be able to offer a reduced price if you are eligible for financial support.'\n */\n this.checkboxWarning = null;\n /**\n * Warning for administrators\n * E.g. 'Uses financial support'\n */\n this.warningText = DataPermissionsSettings.defaultWarningText;\n }\n static get defaultDescription() {\n return '';\n }\n static get defaultTitle() {\n return 'Toestemming verzamelen gevoelige gegevens';\n }\n static get defaultCheckboxLabel() {\n return 'Ik geef toestemming om gevoelige gegevens te verzamelen en te verwerken. Hoe we met deze gegevens omgaan staat vermeld in ons privacybeleid.';\n }\n static get defaultWarningText() {\n return 'Geen toestemming om gevoelige gegevens te verzamelen';\n }\n static get defaultCheckboxWarning() {\n return '';\n }\n}\n__decorate([\n field({ decoder: StringDecoder })\n], DataPermissionsSettings.prototype, \"title\", void 0);\n__decorate([\n field({ decoder: StringDecoder })\n], DataPermissionsSettings.prototype, \"description\", void 0);\n__decorate([\n field({ decoder: StringDecoder })\n], DataPermissionsSettings.prototype, \"checkboxLabel\", void 0);\n__decorate([\n field({ decoder: StringDecoder, nullable: true, version: 333 })\n], DataPermissionsSettings.prototype, \"checkboxWarning\", void 0);\n__decorate([\n field({ decoder: StringDecoder, optional: true })\n], DataPermissionsSettings.prototype, \"warningText\", void 0);\nexport class OrganizationRecordsConfiguration extends AutoEncoder {\n constructor() {\n // New record configurations\n super(...arguments);\n /**\n * If the organizations provides support for families in financial difficulties\n */\n this.financialSupport = false;\n /**\n * Ask permissions to collect data\n */\n this.dataPermission = false;\n this.emailAddress = null;\n this.phone = null;\n this.gender = null;\n this.birthDay = null;\n this.address = null;\n this.parents = null;\n this.emergencyContacts = null;\n this.uitpasNumber = null;\n this.recordCategories = [];\n /**\n * Defines if optional record categories in the parent are enabled, and when they are enabled (using a filter)\n */\n this.inheritedRecordCategories = new Map();\n // General configurations\n this.freeContribution = null;\n }\n static build(options) {\n var _a, _b, _c;\n // If not a default-age-group: disable enabled record categories in platform\n const platformConfig = options.platform.config.recordsConfiguration.clone();\n if (!options.group || !options.group.defaultAgeGroupId) {\n for (const c of platformConfig.recordCategories) {\n c.defaultEnabled = false;\n }\n }\n let organizationConfig = null;\n let defaultGroupConfig = null;\n let groupConfig = null;\n if (options.organization) {\n organizationConfig = options.organization.meta.recordsConfiguration.clone();\n if (options.group && options.group.type !== GroupType.Membership) {\n // Specifically delete all the record categories, as those are only enabled for normal memberships\n for (const c of organizationConfig.recordCategories) {\n c.defaultEnabled = false;\n }\n }\n if (options.group && options.group.type === GroupType.WaitingList) {\n // Disable default organization - BUT still keep the record categories (to know which ones are available)\n organizationConfig = OrganizationRecordsConfiguration.create({\n recordCategories: organizationConfig.recordCategories,\n });\n }\n }\n // Group config\n if (options.group && options.includeGroup) {\n groupConfig = options.group.settings.recordsConfiguration.clone();\n }\n if (options.group && ((_a = options.group) === null || _a === void 0 ? void 0 : _a.defaultAgeGroupId)) {\n const defaultAgeGroupId = options.group.defaultAgeGroupId;\n defaultGroupConfig = (_c = (_b = options.platform.config.defaultAgeGroups.find(g => g.id === defaultAgeGroupId)) === null || _b === void 0 ? void 0 : _b.recordsConfiguration.clone()) !== null && _c !== void 0 ? _c : null;\n }\n return this.mergeChildren(...([platformConfig, defaultGroupConfig, organizationConfig, groupConfig].filter(f => f !== null)));\n }\n static mergeChildren(...configs) {\n if (configs.length === 0) {\n throw new Error('At least one configuration is required');\n }\n if (configs.length === 1) {\n return configs[0];\n }\n const first = configs[0].clone();\n const second = configs[1].clone();\n return this.mergeChildren(this.mergeChild(first, second), ...configs.slice(2));\n }\n /**\n * Note: best to not use this visually\n */\n static mergeChild(parent, child) {\n const clone = child.clone();\n if (parent.financialSupport !== false) {\n clone.financialSupport = parent.financialSupport;\n }\n if (parent.dataPermission !== false) {\n clone.dataPermission = parent.dataPermission;\n }\n if (parent.uitpasNumber !== null) {\n clone.uitpasNumber = parent.uitpasNumber;\n }\n if (parent.emailAddress !== null) {\n clone.emailAddress = parent.emailAddress;\n }\n if (parent.phone !== null) {\n clone.phone = parent.phone;\n }\n if (parent.gender !== null) {\n clone.gender = parent.gender;\n }\n if (parent.birthDay !== null) {\n clone.birthDay = parent.birthDay;\n }\n if (parent.address !== null) {\n clone.address = parent.address;\n }\n if (parent.parents !== null) {\n clone.parents = parent.parents;\n }\n if (parent.emergencyContacts !== null) {\n clone.emergencyContacts = parent.emergencyContacts;\n }\n if (parent.freeContribution !== null) {\n clone.freeContribution = parent.freeContribution;\n }\n clone.recordCategories = [...parent.recordCategories.map((r) => {\n const c = r.clone();\n if (r.defaultEnabled) {\n return c;\n }\n const inheritedFilter = child.inheritedRecordCategories.get(r.id);\n if (inheritedFilter !== undefined) {\n c.filter = inheritedFilter;\n c.defaultEnabled = true;\n }\n return c;\n }), ...clone.recordCategories];\n // Nothing inherited yet\n clone.inheritedRecordCategories = new Map();\n return clone;\n }\n}\n__decorate([\n field({ decoder: FinancialSupportSettings, nullable: true, version: 117 }),\n field({\n decoder: BooleanDecoder,\n version: 320,\n upgrade: (old) => {\n return !!old;\n },\n })\n], OrganizationRecordsConfiguration.prototype, \"financialSupport\", void 0);\n__decorate([\n field({ decoder: DataPermissionsSettings, nullable: true, version: 117 }),\n field({\n decoder: BooleanDecoder,\n version: 320,\n upgrade: (old) => {\n return !!old;\n },\n })\n], OrganizationRecordsConfiguration.prototype, \"dataPermission\", void 0);\n__decorate([\n field({ decoder: PropertyFilter, nullable: true, version: 124 })\n], OrganizationRecordsConfiguration.prototype, \"emailAddress\", void 0);\n__decorate([\n field({ decoder: PropertyFilter, nullable: true, version: 125 })\n], OrganizationRecordsConfiguration.prototype, \"phone\", void 0);\n__decorate([\n field({ decoder: PropertyFilter, nullable: true, version: 125 })\n], OrganizationRecordsConfiguration.prototype, \"gender\", void 0);\n__decorate([\n field({ decoder: PropertyFilter, nullable: true, version: 125 })\n], OrganizationRecordsConfiguration.prototype, \"birthDay\", void 0);\n__decorate([\n field({ decoder: PropertyFilter, nullable: true, version: 125 })\n], OrganizationRecordsConfiguration.prototype, \"address\", void 0);\n__decorate([\n field({ decoder: PropertyFilter, nullable: true, version: 125 })\n], OrganizationRecordsConfiguration.prototype, \"parents\", void 0);\n__decorate([\n field({ decoder: PropertyFilter, nullable: true, version: 125 })\n], OrganizationRecordsConfiguration.prototype, \"emergencyContacts\", void 0);\n__decorate([\n field({ decoder: PropertyFilter, nullable: true, version: 306 })\n], OrganizationRecordsConfiguration.prototype, \"uitpasNumber\", void 0);\n__decorate([\n field({ decoder: new ArrayDecoder(RecordCategory), version: 117 })\n], OrganizationRecordsConfiguration.prototype, \"recordCategories\", void 0);\n__decorate([\n field({ decoder: new MapDecoder(StringDecoder, PropertyFilter), version: 254 })\n], OrganizationRecordsConfiguration.prototype, \"inheritedRecordCategories\", void 0);\n__decorate([\n field({ decoder: FreeContributionSettings, nullable: true, version: 92 })\n], OrganizationRecordsConfiguration.prototype, \"freeContribution\", void 0);\n//# sourceMappingURL=OrganizationRecordsConfiguration.js.map","import { __decorate } from \"tslib\";\nimport { ArrayDecoder, AutoEncoder, IntegerDecoder, StringDecoder, field } from '@simonbackx/simple-encoding';\nimport { Formatter } from '@stamhoofd/utility';\nimport { v4 as uuidv4 } from 'uuid';\nimport { OrganizationRecordsConfiguration } from './members/OrganizationRecordsConfiguration';\nexport class DefaultAgeGroup extends AutoEncoder {\n constructor() {\n super(...arguments);\n this.names = [''];\n this.description = '';\n this.minAge = null;\n this.maxAge = null;\n /**\n * Members registered in this age group, will be assigned to this membership type by default\n */\n this.defaultMembershipTypeId = null;\n this.minimumRequiredMembers = 0;\n }\n get name() {\n return Formatter.joinLast(this.names, ', ', ' of ');\n }\n}\n__decorate([\n field({ decoder: StringDecoder, defaultValue: () => uuidv4() })\n], DefaultAgeGroup.prototype, \"id\", void 0);\n__decorate([\n field({ decoder: new ArrayDecoder(StringDecoder) })\n], DefaultAgeGroup.prototype, \"names\", void 0);\n__decorate([\n field({ decoder: StringDecoder, optional: true })\n], DefaultAgeGroup.prototype, \"description\", void 0);\n__decorate([\n field({ decoder: IntegerDecoder, nullable: true })\n], DefaultAgeGroup.prototype, \"minAge\", void 0);\n__decorate([\n field({ decoder: IntegerDecoder, nullable: true })\n], DefaultAgeGroup.prototype, \"maxAge\", void 0);\n__decorate([\n field({ decoder: StringDecoder, nullable: true, version: 269 })\n], DefaultAgeGroup.prototype, \"defaultMembershipTypeId\", void 0);\n__decorate([\n field({ decoder: IntegerDecoder, version: 337 })\n], DefaultAgeGroup.prototype, \"minimumRequiredMembers\", void 0);\n__decorate([\n field({\n decoder: OrganizationRecordsConfiguration,\n version: 293,\n defaultValue: () => OrganizationRecordsConfiguration.create({}),\n })\n], DefaultAgeGroup.prototype, \"recordsConfiguration\", void 0);\n//# sourceMappingURL=DefaultAgeGroup.js.map","export class File {\n constructor(data) {\n var _a;\n this.id = data.id;\n this.server = data.server;\n this.path = data.path;\n this.size = data.size;\n this.name = (_a = data.name) !== null && _a !== void 0 ? _a : null;\n }\n static decode(data) {\n var _a, _b;\n return new File({\n id: data.field('id').string,\n server: data.field('server').string,\n path: data.field('path').string,\n size: data.field('size').integer,\n name: (_b = (_a = data.optionalField('name')) === null || _a === void 0 ? void 0 : _a.string) !== null && _b !== void 0 ? _b : null,\n });\n }\n encode(context) {\n return {\n id: this.id,\n server: this.server,\n path: this.path,\n size: this.size,\n name: this.name,\n };\n }\n getPublicPath() {\n return this.server + '/' + this.path;\n }\n}\n//# sourceMappingURL=File.js.map","import { File } from './File';\nexport class Resolution {\n constructor(data) {\n this.file = data.file;\n this.width = data.width;\n this.height = data.height;\n }\n static decode(data) {\n return new Resolution({\n file: data.field('file').decode(File),\n width: data.field('width').integer,\n height: data.field('height').integer,\n });\n }\n encode(context) {\n return {\n file: this.file.encode(context),\n width: this.width,\n height: this.height,\n };\n }\n}\n//# sourceMappingURL=Resolution.js.map","import { __decorate } from \"tslib\";\nimport { ArrayDecoder, AutoEncoder, field, StringDecoder } from '@simonbackx/simple-encoding';\nimport { v4 as uuidv4 } from 'uuid';\nimport { File } from './File';\nimport { Resolution } from './Resolution';\nexport class Image extends AutoEncoder {\n constructor() {\n super(...arguments);\n this.resolutions = [];\n }\n getPublicPath() {\n if (this.resolutions.length > 0) {\n return this.resolutions[0].file.getPublicPath();\n }\n return this.source.getPublicPath();\n }\n getPathForSize(width, height) {\n if (this.resolutions.length == 0) {\n return this.getPublicPath();\n }\n const resolution = this.getResolutionForSize(width, height);\n return resolution.file.getPublicPath();\n }\n getResolutionForSize(width, height) {\n var _a;\n let bestResolution;\n const ratio = (_a = ((typeof window !== 'undefined') ? (window.devicePixelRatio ? window.devicePixelRatio : 1) : 1)) !== null && _a !== void 0 ? _a : 1;\n if (ratio >= 2 && width) {\n width = ratio * width;\n }\n if (ratio >= 2 && height) {\n height = ratio * height;\n }\n // Search resolution bigger than width x height, but smaller than any other resolution that is bigger\n for (const resolution of this.resolutions) {\n if ((bestResolution === undefined || ((!width || resolution.width <= bestResolution.width) && (!height || resolution.height <= bestResolution.height)))\n && (!width || resolution.width >= width)\n && (!height || resolution.height >= height)) {\n bestResolution = resolution;\n }\n }\n if (bestResolution) {\n return bestResolution;\n }\n // Get biggest resolution possible of we don't find anything bigger\n for (const resolution of this.resolutions) {\n if (bestResolution === undefined || (resolution.width >= bestResolution.width && resolution.height >= bestResolution.height)) {\n bestResolution = resolution;\n }\n }\n if (bestResolution) {\n return bestResolution;\n }\n throw new Error('No resolution found. Please first check if the image has resolutions');\n }\n}\n__decorate([\n field({ decoder: StringDecoder, defaultValue: () => uuidv4() })\n], Image.prototype, \"id\", void 0);\n__decorate([\n field({ decoder: File })\n], Image.prototype, \"source\", void 0);\n__decorate([\n field({ decoder: new ArrayDecoder(Resolution) })\n], Image.prototype, \"resolutions\", void 0);\n//# sourceMappingURL=Image.js.map","import { __decorate } from \"tslib\";\nimport { ArrayDecoder, AutoEncoder, BooleanDecoder, DateDecoder, field, IntegerDecoder, StringDecoder } from '@simonbackx/simple-encoding';\nimport { isSimpleError, SimpleError } from '@simonbackx/simple-errors';\nimport { Formatter, StringCompare } from '@stamhoofd/utility';\nimport { v4 as uuidv4 } from 'uuid';\nimport { Address } from '../../addresses/Address';\nimport { Image } from '../../files/Image';\nimport { RecordChoice, RecordSettings, RecordType, RecordWarning, RecordWarningType } from './RecordSettings';\nimport { CountryHelper } from '../../addresses/CountryDecoder';\nexport class RecordAnswer extends AutoEncoder {\n constructor() {\n super(...arguments);\n /**\n * Date that this was changed. To determine merge order\n */\n this.date = new Date();\n /**\n * Date that this answer was last reviewed by the author\n * -> when editing by the organization, don't set this date\n */\n this.reviewedAt = null;\n }\n isOutdated(timeoutMs) {\n if (!this.reviewedAt) {\n return true;\n }\n if (this.reviewedAt.getTime() < new Date().getTime() - timeoutMs) {\n return true;\n }\n return false;\n }\n markReviewed() {\n this.reviewedAt = new Date();\n }\n get stringValue() {\n return 'Onbekend';\n }\n get objectValue() {\n return this.stringValue;\n }\n /**\n * Include both the setting and the value\n */\n get descriptionValue() {\n return this.settings.name + ': ' + this.stringValue;\n }\n get excelColumns() {\n return this.settings.excelColumns;\n }\n get excelValues() {\n return [{\n value: this.stringValue,\n format: null,\n }];\n }\n getWarnings() {\n if (!this.isEmpty) {\n try {\n this.validate();\n }\n catch (e) {\n if (isSimpleError(e)) {\n return [\n RecordWarning.create({\n id: 'validation-warning-' + this.id,\n text: e.getHuman(),\n type: RecordWarningType.Error,\n }),\n ];\n }\n // ignore\n }\n }\n return [];\n }\n validate() {\n // valid by default\n }\n /**\n * Return true when it is not the default value as a general rule\n * E.g. checkbox by default not checked -> empty if not checked\n */\n get isEmpty() {\n return false;\n }\n matchQuery(query) {\n return StringCompare.contains(this.stringValue, query);\n }\n isReviewedAfter(answer) {\n if (this.reviewedAt && answer.reviewedAt) {\n return this.reviewedAt > answer.reviewedAt;\n }\n if (this.reviewedAt && !answer.reviewedAt) {\n return true;\n }\n if (!this.reviewedAt && answer.reviewedAt) {\n return false;\n }\n // Both null\n return false;\n }\n static createDefaultAnswer(settings) {\n const type = RecordAnswerDecoder.getClassForType(settings.type);\n return type.create({\n settings,\n });\n }\n}\n__decorate([\n field({ decoder: StringDecoder, defaultValue: () => uuidv4() })\n], RecordAnswer.prototype, \"id\", void 0);\n__decorate([\n field({ decoder: RecordSettings })\n], RecordAnswer.prototype, \"settings\", void 0);\n__decorate([\n field({ decoder: DateDecoder, version: 128 })\n], RecordAnswer.prototype, \"date\", void 0);\n__decorate([\n field({ decoder: DateDecoder, nullable: true })\n], RecordAnswer.prototype, \"reviewedAt\", void 0);\nexport class RecordAnswerDecoderStatic {\n decode(data) {\n const settings = data.field('settings').decode(RecordSettings);\n const type = settings.type;\n return data.decode(this.getClassForType(type));\n }\n getClassForType(type) {\n switch (type) {\n case RecordType.Checkbox: return RecordCheckboxAnswer;\n case RecordType.Text:\n case RecordType.Phone:\n case RecordType.Email:\n case RecordType.Textarea:\n return RecordTextAnswer;\n case RecordType.MultipleChoice: return RecordMultipleChoiceAnswer;\n case RecordType.ChooseOne: return RecordChooseOneAnswer;\n case RecordType.Address: return RecordAddressAnswer;\n case RecordType.Date: return RecordDateAnswer;\n case RecordType.Price: return RecordPriceAnswer;\n case RecordType.Image: return RecordImageAnswer;\n case RecordType.Integer: return RecordIntegerAnswer;\n }\n throw new SimpleError({\n code: 'not_supported',\n message: 'A property type is not supported',\n human: 'Een bepaald kenmerk wordt niet ondersteund. Kijk na of je wel de laatste versie gebruikt en update indien nodig.',\n });\n }\n}\nexport const RecordAnswerDecoder = new RecordAnswerDecoderStatic();\nfunction verifyBelgianNationalNumber(text) {\n const trimmed = text.replace(/[^A-Za-z0-9]+/g, ''); // keep A-Z for validation\n if (trimmed.length !== 11) {\n return false;\n }\n const toCheck = parseInt(trimmed.substring(0, trimmed.length - 2));\n const checksum = parseInt(trimmed.substring(trimmed.length - 2));\n // we calculate the expected checksum. again\n const realChecksum = 97 - (toCheck % 97); // Dates before 2000\n const realChecksum2 = 97 - ((2000000000 + toCheck) % 97); // Dates after 2000\n return checksum === realChecksum || checksum === realChecksum2;\n}\nfunction formatBelgianNationalNumber(text) {\n const trimmed = text.replace(/[^A-Za-z0-9]+/g, ''); // keep A-Z for validation\n if (trimmed.length !== 11) {\n return text;\n }\n // JJ.MM.DD-XXX.XX\n return trimmed.substring(0, 2) + '.' + trimmed.substring(2, 4) + '.' + trimmed.substring(4, 6) + '-' + trimmed.substring(6, 9) + '.' + trimmed.substring(9, 11);\n}\nexport class RecordTextAnswer extends RecordAnswer {\n constructor() {\n super(...arguments);\n this.value = null;\n }\n get stringValue() {\n var _a;\n return (_a = this.value) !== null && _a !== void 0 ? _a : '/';\n }\n get objectValue() {\n return this.value;\n }\n getWarnings() {\n const base = super.getWarnings();\n if (!this.settings.warning) {\n return base;\n }\n if (this.settings.warning.inverted) {\n return this.value === null || this.value.length === 0 ? [this.settings.warning, ...base] : base;\n }\n return this.value !== null && this.value.length > 0 ? [this.settings.warning, ...base] : base;\n }\n validate() {\n if (this.settings.required && (this.value === null || this.value.length === 0)) {\n throw new SimpleError({\n code: 'invalid_field',\n message: 'Dit veld is verplicht',\n field: 'input',\n });\n }\n if (this.value && this.settings.name.toLocaleLowerCase().includes('rijksregisternummer')) {\n if (!verifyBelgianNationalNumber(this.value)) {\n throw new SimpleError({\n code: 'invalid_field',\n message: \"'\" + (this.value) + \"' is geen geldig rijksregisternummer. Je kan dit nummer vinden op de achterkant van de identiteitskaart, in de vorm van JJ.MM.DD-XXX.XX. Kijk na op typefouten.\",\n field: 'input',\n });\n }\n // Auto format the number\n this.value = formatBelgianNationalNumber(this.value);\n }\n }\n get isEmpty() {\n return (this.value === null || this.value.length === 0);\n }\n}\n__decorate([\n field({ decoder: StringDecoder, nullable: true })\n], RecordTextAnswer.prototype, \"value\", void 0);\nexport class RecordCheckboxAnswer extends RecordAnswer {\n constructor() {\n super(...arguments);\n this.selected = false;\n }\n getWarnings() {\n const base = super.getWarnings();\n if (!this.settings.warning) {\n return base;\n }\n if (this.settings.warning.inverted) {\n return !this.selected ? [this.settings.warning, ...base] : base;\n }\n return this.selected ? [this.settings.warning, ...base] : base;\n }\n get stringValue() {\n return this.selected ? 'Aangevinkt' : 'Niet aangevinkt';\n }\n get objectValue() {\n return this.selected;\n }\n get excelValues() {\n return [{\n value: this.selected ? (this.comments ? this.comments : 'Ja') : 'Nee',\n format: null,\n }];\n }\n validate() {\n if (this.settings.required && !this.selected) {\n throw new SimpleError({\n code: 'invalid_field',\n message: 'Dit is verplicht',\n field: 'input',\n });\n }\n }\n get isEmpty() {\n return !this.selected;\n }\n}\n__decorate([\n field({ decoder: BooleanDecoder })\n], RecordCheckboxAnswer.prototype, \"selected\", void 0);\n__decorate([\n field({ decoder: StringDecoder, optional: true })\n], RecordCheckboxAnswer.prototype, \"comments\", void 0);\nexport class RecordMultipleChoiceAnswer extends RecordAnswer {\n constructor() {\n super(...arguments);\n this.selectedChoices = [];\n }\n get stringValue() {\n return this.selectedChoices.map(c => c.name).join(', ');\n }\n get objectValue() {\n return this.selectedChoices.map(c => c.id);\n }\n getWarnings() {\n const base = super.getWarnings();\n if (this.selectedChoices.length === 0) {\n return base;\n }\n const warnings = base;\n for (const choice of this.selectedChoices) {\n if (choice.warning && !choice.warning.inverted) {\n warnings.push(choice.warning);\n }\n }\n for (const choice of this.settings.choices) {\n if (choice.warning && choice.warning.inverted) {\n if (!this.selectedChoices.find(s => s.id === choice.id)) {\n warnings.push(choice.warning);\n }\n }\n }\n return warnings;\n }\n validate() {\n if (this.settings.required && this.selectedChoices.length === 0) {\n throw new SimpleError({\n code: 'invalid_field',\n message: 'Duid minstens één keuze aan',\n field: 'input',\n });\n }\n }\n get isEmpty() {\n return this.selectedChoices.length === 0;\n }\n}\n__decorate([\n field({ decoder: new ArrayDecoder(RecordChoice) })\n], RecordMultipleChoiceAnswer.prototype, \"selectedChoices\", void 0);\nexport class RecordChooseOneAnswer extends RecordAnswer {\n constructor() {\n super(...arguments);\n this.selectedChoice = null;\n }\n get stringValue() {\n var _a, _b;\n return (_b = (_a = this.selectedChoice) === null || _a === void 0 ? void 0 : _a.name) !== null && _b !== void 0 ? _b : '/';\n }\n get objectValue() {\n var _a, _b;\n return (_b = (_a = this.selectedChoice) === null || _a === void 0 ? void 0 : _a.id) !== null && _b !== void 0 ? _b : null;\n }\n getWarnings() {\n const base = super.getWarnings();\n if (this.selectedChoice === null) {\n // TODO: show warning if inverted\n return base;\n }\n const warnings = base;\n if (this.selectedChoice.warning && !this.selectedChoice.warning.inverted) {\n warnings.push(this.selectedChoice.warning);\n }\n for (const choice of this.settings.choices) {\n if (choice.warning && choice.warning.inverted) {\n if (this.selectedChoice.id !== choice.id) {\n warnings.push(choice.warning);\n }\n }\n }\n return warnings;\n }\n validate() {\n if (this.settings.required && this.selectedChoice === null) {\n throw new SimpleError({\n code: 'invalid_field',\n message: 'Duid een keuze aan',\n field: 'input',\n });\n }\n }\n get isEmpty() {\n return this.selectedChoice === null;\n }\n}\n__decorate([\n field({ decoder: RecordChoice, nullable: true })\n], RecordChooseOneAnswer.prototype, \"selectedChoice\", void 0);\nexport class RecordAddressAnswer extends RecordAnswer {\n constructor() {\n super(...arguments);\n this.address = null;\n }\n get stringValue() {\n var _a, _b;\n return (_b = (_a = this.address) === null || _a === void 0 ? void 0 : _a.toString()) !== null && _b !== void 0 ? _b : '/';\n }\n get objectValue() {\n var _a, _b;\n return (_b = (_a = this.address) === null || _a === void 0 ? void 0 : _a.encode({ version: 0 })) !== null && _b !== void 0 ? _b : null;\n }\n validate() {\n if (this.settings.required && this.address === null) {\n throw new SimpleError({\n code: 'invalid_field',\n message: 'Verplicht in te vullen',\n field: 'input',\n });\n }\n }\n get excelValues() {\n var _a, _b, _c, _d;\n return [\n {\n value: this.address ? `${this.address.street} ${this.address.number}` : '/',\n format: null,\n },\n {\n value: (_b = (_a = this.address) === null || _a === void 0 ? void 0 : _a.postalCode) !== null && _b !== void 0 ? _b : '/',\n format: null,\n },\n {\n value: (_d = (_c = this.address) === null || _c === void 0 ? void 0 : _c.city) !== null && _d !== void 0 ? _d : '/',\n format: null,\n },\n {\n value: this.address ? CountryHelper.getName(this.address.country) : '/',\n format: null,\n },\n ];\n }\n get isEmpty() {\n return this.address === null;\n }\n}\n__decorate([\n field({ decoder: Address, nullable: true })\n], RecordAddressAnswer.prototype, \"address\", void 0);\nexport class RecordDateAnswer extends RecordAnswer {\n constructor() {\n super(...arguments);\n this.dateValue = null;\n }\n get stringValue() {\n return this.dateValue ? Formatter.dateNumber(this.dateValue, true) : '/';\n }\n get objectValue() {\n return this.dateValue;\n }\n validate() {\n if (this.settings.required && this.dateValue === null) {\n throw new SimpleError({\n code: 'invalid_field',\n message: 'Verplicht in te vullen',\n field: 'input',\n });\n }\n }\n get isEmpty() {\n return this.dateValue === null;\n }\n}\n__decorate([\n field({ decoder: DateDecoder, nullable: true })\n], RecordDateAnswer.prototype, \"dateValue\", void 0);\nexport class RecordIntegerAnswer extends RecordAnswer {\n constructor() {\n super(...arguments);\n this.value = null;\n }\n get stringValue() {\n return this.value !== null ? this.value.toString() : '/';\n }\n get objectValue() {\n return this.value;\n }\n getWarnings() {\n const base = super.getWarnings();\n if (!this.settings.warning) {\n return base;\n }\n if (this.settings.warning.inverted) {\n return this.value === null || this.value === 0 ? [this.settings.warning, ...base] : base;\n }\n return this.value !== null && this.value !== 0 ? [this.settings.warning, ...base] : base;\n }\n validate() {\n if (this.settings.required && (this.value === null)) {\n throw new SimpleError({\n code: 'invalid_field',\n message: 'Dit veld is verplicht',\n field: 'input',\n });\n }\n }\n get isEmpty() {\n return (this.value === null);\n }\n}\n__decorate([\n field({ decoder: IntegerDecoder, nullable: true })\n], RecordIntegerAnswer.prototype, \"value\", void 0);\nexport class RecordPriceAnswer extends RecordIntegerAnswer {\n get stringValue() {\n return this.value !== null ? Formatter.price(this.value) : '/';\n }\n}\nexport class RecordImageAnswer extends RecordAnswer {\n constructor() {\n super(...arguments);\n this.image = null;\n }\n get stringValue() {\n var _a, _b;\n return (_b = (_a = this.image) === null || _a === void 0 ? void 0 : _a.getPublicPath()) !== null && _b !== void 0 ? _b : '/';\n }\n get objectValue() {\n var _a, _b;\n return (_b = (_a = this.image) === null || _a === void 0 ? void 0 : _a.encode({ version: 0 })) !== null && _b !== void 0 ? _b : null;\n }\n validate() {\n if (this.settings.required && this.image === null) {\n throw new SimpleError({\n code: 'invalid_field',\n message: 'Verplicht in te vullen',\n field: 'input',\n });\n }\n }\n get isEmpty() {\n return this.image === null;\n }\n}\n__decorate([\n field({ decoder: Image, nullable: true })\n], RecordImageAnswer.prototype, \"image\", void 0);\n//# sourceMappingURL=RecordAnswer.js.map","import { __decorate } from \"tslib\";\nimport { ArrayDecoder, AutoEncoder, BooleanDecoder, DateDecoder, EnumDecoder, field, IntegerDecoder, MapDecoder, NumberDecoder, StringDecoder } from '@simonbackx/simple-encoding';\nimport { v4 as uuidv4 } from 'uuid';\nimport { RecordAnswerDecoder } from './members/records/RecordAnswer';\nimport { RecordCategory } from './members/records/RecordCategory';\nexport var DocumentStatus;\n(function (DocumentStatus) {\n DocumentStatus[\"Draft\"] = \"Draft\";\n DocumentStatus[\"MissingData\"] = \"MissingData\";\n DocumentStatus[\"Published\"] = \"Published\";\n DocumentStatus[\"Deleted\"] = \"Deleted\";\n})(DocumentStatus || (DocumentStatus = {}));\nexport class DocumentStatusHelper {\n static getName(status) {\n switch (status) {\n case DocumentStatus.Draft: return 'Klad';\n case DocumentStatus.MissingData: return 'Onvolledig';\n case DocumentStatus.Published: return 'Gepubliceerd';\n case DocumentStatus.Deleted: return 'Verwijderd';\n }\n }\n static getColor(status) {\n switch (status) {\n case DocumentStatus.Draft: return 'info';\n case DocumentStatus.MissingData: return 'tertiary';\n case DocumentStatus.Published: return 'secundary';\n case DocumentStatus.Deleted: return 'error';\n }\n }\n}\nexport class DocumentSettings extends AutoEncoder {\n constructor() {\n super(...arguments);\n this.name = '';\n this.maxAge = null;\n this.minPrice = null;\n /**\n * Fields defined by the template that can be set.\n */\n this.fieldAnswers = new Map();\n /**\n * Defines where to automatically find the answer for a given question\n */\n this.linkedFields = new Map();\n }\n}\n__decorate([\n field({ decoder: StringDecoder, version: 178 })\n], DocumentSettings.prototype, \"name\", void 0);\n__decorate([\n field({ decoder: IntegerDecoder, nullable: true })\n], DocumentSettings.prototype, \"maxAge\", void 0);\n__decorate([\n field({ decoder: IntegerDecoder, nullable: true })\n], DocumentSettings.prototype, \"minPrice\", void 0);\n__decorate([\n field({ decoder: new ArrayDecoder(RecordAnswerDecoder) }),\n field({\n decoder: new MapDecoder(StringDecoder, RecordAnswerDecoder),\n version: 252,\n upgrade: (old) => {\n const map = new Map();\n for (const answer of old) {\n map.set(answer.settings.id, answer);\n }\n return map;\n },\n })\n], DocumentSettings.prototype, \"fieldAnswers\", void 0);\n__decorate([\n field({ decoder: new MapDecoder(StringDecoder, new ArrayDecoder(StringDecoder)) })\n], DocumentSettings.prototype, \"linkedFields\", void 0);\nexport class DocumentTemplateDefinition extends AutoEncoder {\n constructor() {\n super(...arguments);\n this.type = null;\n this.name = '';\n this.fieldCategories = [];\n /**\n * Questions filled out for each selected group / cycle combination\n */\n this.groupFieldCategories = [];\n /**\n * Questions that are different for each document. They can be linked to specific fields of members later on for automatic linking.\n */\n this.documentFieldCategories = [];\n this.defaultMaxAge = null;\n this.defaultMinPrice = null;\n this.exportFieldCategories = [];\n this.xmlExport = null;\n this.xmlExportDescription = null;\n }\n}\n__decorate([\n field({ decoder: StringDecoder, nullable: true, version: 194, upgrade: () => 'fiscal' })\n], DocumentTemplateDefinition.prototype, \"type\", void 0);\n__decorate([\n field({ decoder: StringDecoder })\n], DocumentTemplateDefinition.prototype, \"name\", void 0);\n__decorate([\n field({ decoder: new ArrayDecoder(RecordCategory) })\n], DocumentTemplateDefinition.prototype, \"fieldCategories\", void 0);\n__decorate([\n field({ decoder: new ArrayDecoder(RecordCategory) })\n], DocumentTemplateDefinition.prototype, \"groupFieldCategories\", void 0);\n__decorate([\n field({ decoder: new ArrayDecoder(RecordCategory) })\n], DocumentTemplateDefinition.prototype, \"documentFieldCategories\", void 0);\n__decorate([\n field({ decoder: IntegerDecoder, nullable: true })\n], DocumentTemplateDefinition.prototype, \"defaultMaxAge\", void 0);\n__decorate([\n field({ decoder: IntegerDecoder, nullable: true })\n], DocumentTemplateDefinition.prototype, \"defaultMinPrice\", void 0);\n__decorate([\n field({ decoder: new ArrayDecoder(RecordCategory), version: 179 })\n], DocumentTemplateDefinition.prototype, \"exportFieldCategories\", void 0);\n__decorate([\n field({ decoder: StringDecoder, nullable: true, version: 179 })\n], DocumentTemplateDefinition.prototype, \"xmlExport\", void 0);\n__decorate([\n field({ decoder: StringDecoder, nullable: true, version: 179 })\n], DocumentTemplateDefinition.prototype, \"xmlExportDescription\", void 0);\nexport class DocumentTemplateGroup extends AutoEncoder {\n constructor() {\n super(...arguments);\n this.groupId = '';\n this.cycle = 0;\n /**\n * Answers for groupFieldCategories for this group\n */\n this.fieldAnswers = new Map();\n }\n}\n__decorate([\n field({ decoder: StringDecoder })\n], DocumentTemplateGroup.prototype, \"groupId\", void 0);\n__decorate([\n field({ decoder: NumberDecoder })\n], DocumentTemplateGroup.prototype, \"cycle\", void 0);\n__decorate([\n field({ decoder: new ArrayDecoder(RecordAnswerDecoder) }),\n field({\n decoder: new MapDecoder(StringDecoder, RecordAnswerDecoder),\n version: 252,\n upgrade: (old) => {\n const map = new Map();\n for (const answer of old) {\n map.set(answer.settings.id, answer);\n }\n return map;\n },\n })\n], DocumentTemplateGroup.prototype, \"fieldAnswers\", void 0);\nexport class DocumentPrivateSettings extends AutoEncoder {\n constructor() {\n super(...arguments);\n this.templateDefinition = DocumentTemplateDefinition.create({});\n /**\n * Groups for which the members will receive the document\n */\n this.groups = [];\n }\n}\n__decorate([\n field({ decoder: DocumentTemplateDefinition })\n], DocumentPrivateSettings.prototype, \"templateDefinition\", void 0);\n__decorate([\n field({ decoder: new ArrayDecoder(DocumentTemplateGroup) })\n], DocumentPrivateSettings.prototype, \"groups\", void 0);\nexport class DocumentTemplatePrivate extends AutoEncoder {\n constructor() {\n super(...arguments);\n this.status = DocumentStatus.Draft;\n this.updatesEnabled = true;\n this.html = '';\n this.settings = DocumentSettings.create({});\n this.privateSettings = DocumentPrivateSettings.create({});\n this.createdAt = new Date();\n this.updatedAt = new Date();\n }\n isRecordEnabled(record) {\n throw new Error('Method not implemented.');\n }\n getRecordAnswers() {\n throw new Error('Method not implemented.');\n }\n doesMatchFilter(filter) {\n throw new Error('Method not implemented.');\n }\n patchRecordAnswers(patch) {\n throw new Error('Method not implemented.');\n }\n}\n__decorate([\n field({ decoder: StringDecoder, defaultValue: () => uuidv4() })\n], DocumentTemplatePrivate.prototype, \"id\", void 0);\n__decorate([\n field({ decoder: new EnumDecoder(DocumentStatus) })\n], DocumentTemplatePrivate.prototype, \"status\", void 0);\n__decorate([\n field({ decoder: BooleanDecoder })\n], DocumentTemplatePrivate.prototype, \"updatesEnabled\", void 0);\n__decorate([\n field({ decoder: StringDecoder })\n], DocumentTemplatePrivate.prototype, \"html\", void 0);\n__decorate([\n field({ decoder: DocumentSettings })\n], DocumentTemplatePrivate.prototype, \"settings\", void 0);\n__decorate([\n field({ decoder: DocumentPrivateSettings })\n], DocumentTemplatePrivate.prototype, \"privateSettings\", void 0);\n__decorate([\n field({ decoder: DateDecoder })\n], DocumentTemplatePrivate.prototype, \"createdAt\", void 0);\n__decorate([\n field({ decoder: DateDecoder })\n], DocumentTemplatePrivate.prototype, \"updatedAt\", void 0);\n/**\n * Data stored with a document\n */\nexport class DocumentData extends AutoEncoder {\n constructor() {\n super(...arguments);\n this.name = '';\n this.description = '';\n /**\n * Contains a snapshot of all the answers\n */\n this.fieldAnswers = new Map();\n }\n matchQuery(query) {\n for (const answer of this.fieldAnswers.values()) {\n if (answer.matchQuery(query)) {\n return true;\n }\n }\n return false;\n }\n}\n__decorate([\n field({ decoder: StringDecoder })\n], DocumentData.prototype, \"name\", void 0);\n__decorate([\n field({ decoder: StringDecoder })\n], DocumentData.prototype, \"description\", void 0);\n__decorate([\n field({ decoder: new ArrayDecoder(RecordAnswerDecoder) }),\n field({\n decoder: new MapDecoder(StringDecoder, RecordAnswerDecoder),\n version: 252,\n upgrade: (old) => {\n const map = new Map();\n for (const answer of old) {\n map.set(answer.settings.id, answer);\n }\n return map;\n },\n })\n], DocumentData.prototype, \"fieldAnswers\", void 0);\nexport class Document extends AutoEncoder {\n constructor() {\n super(...arguments);\n this.number = null;\n this.status = DocumentStatus.Draft;\n this.data = DocumentData.create({});\n this.createdAt = new Date();\n this.updatedAt = new Date();\n this.memberId = null;\n this.registrationId = null;\n }\n matchQuery(query) {\n return this.data.matchQuery(query);\n }\n}\n__decorate([\n field({ decoder: StringDecoder, defaultValue: () => uuidv4() })\n], Document.prototype, \"id\", void 0);\n__decorate([\n field({ decoder: NumberDecoder, nullable: true, version: 179 })\n], Document.prototype, \"number\", void 0);\n__decorate([\n field({ decoder: new EnumDecoder(DocumentStatus) })\n], Document.prototype, \"status\", void 0);\n__decorate([\n field({ decoder: DocumentData })\n], Document.prototype, \"data\", void 0);\n__decorate([\n field({ decoder: DateDecoder })\n], Document.prototype, \"createdAt\", void 0);\n__decorate([\n field({ decoder: DateDecoder })\n], Document.prototype, \"updatedAt\", void 0);\n__decorate([\n field({ decoder: StringDecoder, nullable: true })\n], Document.prototype, \"memberId\", void 0);\n__decorate([\n field({ decoder: StringDecoder, nullable: true })\n], Document.prototype, \"registrationId\", void 0);\n__decorate([\n field({ decoder: StringDecoder })\n], Document.prototype, \"templateId\", void 0);\n//# sourceMappingURL=Document.js.map","export var GroupGenderType;\n(function (GroupGenderType) {\n GroupGenderType[\"Mixed\"] = \"Mixed\";\n GroupGenderType[\"OnlyMale\"] = \"OnlyMale\";\n GroupGenderType[\"OnlyFemale\"] = \"OnlyFemale\";\n})(GroupGenderType || (GroupGenderType = {}));\n//# sourceMappingURL=GroupGenderType.js.map","/**\n * More granular access rights to specific things in the system\n */\nexport var PermissionsResourceType;\n(function (PermissionsResourceType) {\n PermissionsResourceType[\"Webshops\"] = \"Webshops\";\n PermissionsResourceType[\"Groups\"] = \"Groups\";\n PermissionsResourceType[\"GroupCategories\"] = \"GroupCategories\";\n PermissionsResourceType[\"OrganizationTags\"] = \"OrganizationTags\";\n PermissionsResourceType[\"RecordCategories\"] = \"RecordCategory\";\n})(PermissionsResourceType || (PermissionsResourceType = {}));\nexport function getPermissionResourceTypeName(type, plural = true) {\n switch (type) {\n case PermissionsResourceType.Webshops: return plural ? 'webshops' : 'webshop';\n case PermissionsResourceType.Groups: return plural ? 'inschrijvingsgroepen' : 'inschrijvingsgroep';\n case PermissionsResourceType.GroupCategories: return plural ? 'categorieën' : 'categorie';\n case PermissionsResourceType.OrganizationTags: return plural ? 'tags' : 'tag';\n case PermissionsResourceType.RecordCategories: return plural ? 'vragenlijsten' : 'vragenlijst';\n }\n}\n//# sourceMappingURL=PermissionsResourceType.js.map","import { __decorate } from \"tslib\";\nimport { AutoEncoder, field, StringDecoder, EnumDecoder, ArrayDecoder, PatchMap } from '@simonbackx/simple-encoding';\nimport { AccessRight, AccessRightHelper } from './AccessRight';\nimport { PermissionLevel, getPermissionLevelNumber } from './PermissionLevel';\n/**\n * More granular access rights to specific things in the system\n */\nexport class ResourcePermissions extends AutoEncoder {\n constructor() {\n super(...arguments);\n /**\n * This is a cache so we can display the role description without fetching all resources\n */\n this.resourceName = '';\n /**\n * Setting it to full gives all possible permissions for the resource\n * Read/Write depends on resource\n */\n this.level = PermissionLevel.None;\n /**\n * More granular permissions related to this resource\n */\n this.accessRights = [];\n }\n hasAccess(level) {\n return getPermissionLevelNumber(this.level) >= getPermissionLevelNumber(level);\n }\n hasAccessRight(right) {\n const gl = AccessRightHelper.autoGrantRightForLevel(right);\n return (gl && this.hasAccess(gl)) || this.accessRights.includes(right);\n }\n createInsertPatch(type, resourceId, roleOrPermissions) {\n const patch = roleOrPermissions.static.patch({});\n // First check if we need to insert the type\n if (roleOrPermissions.resources.get(type)) {\n // We need to patch\n const p = new PatchMap();\n p.set(resourceId, this);\n patch.resources.set(type, p);\n }\n else {\n // No resources with this type yet\n const p = new Map();\n p.set(resourceId, this);\n patch.resources.set(type, p);\n }\n return patch;\n }\n merge(other) {\n const p = new ResourcePermissions();\n p.level = this.level;\n p.accessRights = this.accessRights.slice();\n if (getPermissionLevelNumber(other.level) > getPermissionLevelNumber(p.level)) {\n p.level = other.level;\n }\n for (const right of other.accessRights) {\n if (!p.accessRights.includes(right)) {\n p.accessRights.push(right);\n }\n }\n return p;\n }\n}\n__decorate([\n field({ decoder: StringDecoder, field: 'n' })\n], ResourcePermissions.prototype, \"resourceName\", void 0);\n__decorate([\n field({ decoder: new EnumDecoder(PermissionLevel), field: 'l' })\n], ResourcePermissions.prototype, \"level\", void 0);\n__decorate([\n field({ decoder: new ArrayDecoder(new EnumDecoder(AccessRight)), field: 'r' })\n], ResourcePermissions.prototype, \"accessRights\", void 0);\n//# sourceMappingURL=ResourcePermissions.js.map","import { __decorate } from \"tslib\";\nimport { ArrayDecoder, AutoEncoder, BooleanDecoder, EnumDecoder, MapDecoder, StringDecoder, field } from '@simonbackx/simple-encoding';\nimport { Formatter } from '@stamhoofd/utility';\nimport { v4 as uuidv4 } from 'uuid';\nimport { AccessRight, AccessRightHelper } from './AccessRight';\nimport { PermissionLevel, getPermissionLevelNumber } from './PermissionLevel';\nimport { PermissionsResourceType, getPermissionResourceTypeName } from './PermissionsResourceType';\nimport { ResourcePermissions } from './ResourcePermissions';\nexport class PermissionRole extends AutoEncoder {\n constructor() {\n super(...arguments);\n this.name = '';\n }\n}\n__decorate([\n field({ decoder: StringDecoder, defaultValue: () => uuidv4() })\n], PermissionRole.prototype, \"id\", void 0);\n__decorate([\n field({ decoder: StringDecoder })\n], PermissionRole.prototype, \"name\", void 0);\nexport class PermissionRoleDetailed extends PermissionRole {\n constructor() {\n super(...arguments);\n /**\n * Generic access to all resources\n */\n this.level = PermissionLevel.None;\n this.accessRights = [];\n this.resources = new Map();\n this.legacyManagePayments = false;\n this.legacyFinanceDirector = false;\n this.legacyCreateWebshops = false;\n }\n getDescription() {\n const stack = [];\n if (this.level === PermissionLevel.Read) {\n stack.push('alles lezen');\n }\n if (this.level === PermissionLevel.Write) {\n stack.push('alles bewerken');\n }\n if (this.level === PermissionLevel.Full) {\n stack.push('volledige toegang');\n }\n for (const right of this.accessRights) {\n stack.push(AccessRightHelper.getDescription(right));\n }\n for (const [type, resources] of this.resources) {\n let count = 0;\n if (resources.has('')) {\n stack.push('alle ' + getPermissionResourceTypeName(type, true));\n continue;\n }\n for (const resource of resources.values()) {\n if (resource.hasAccess(PermissionLevel.Read) || resource.accessRights.length > 0) {\n count += 1;\n }\n }\n if (count > 0) {\n stack.push(count + ' ' + getPermissionResourceTypeName(type, count > 1));\n }\n }\n if (stack.length === 0) {\n return 'geen rechten';\n }\n return Formatter.capitalizeFirstLetter(Formatter.joinLast(stack, ', ', ' en '));\n }\n hasAccess(level) {\n return getPermissionLevelNumber(this.level) >= getPermissionLevelNumber(level);\n }\n hasAccessRight(right) {\n const gl = AccessRightHelper.autoGrantRightForLevel(right);\n if ((gl && this.hasAccess(gl)) || this.accessRights.includes(right)) {\n return true;\n }\n const autoInherit = AccessRightHelper.autoInheritFrom(right);\n for (const r of autoInherit) {\n if (this.hasAccessRight(r)) {\n return true;\n }\n }\n return false;\n }\n getResourcePermissions(type, id) {\n const resource = this.resources.get(type);\n if (!resource) {\n return null;\n }\n const rInstance = resource.get(id);\n const allInstance = resource.get('');\n if (!rInstance) {\n if (allInstance) {\n return allInstance;\n }\n return null;\n }\n if (allInstance) {\n return rInstance.merge(allInstance);\n }\n return rInstance;\n }\n getMergedResourcePermissions(type, id) {\n var _a;\n let base = this.getResourcePermissions(type, id);\n if (getPermissionLevelNumber(this.level) > getPermissionLevelNumber((_a = base === null || base === void 0 ? void 0 : base.level) !== null && _a !== void 0 ? _a : PermissionLevel.None)) {\n if (!base) {\n base = ResourcePermissions.create({ level: this.level });\n }\n base.level = this.level;\n }\n return base;\n }\n hasResourceAccess(type, id, level) {\n var _a, _b;\n if (this.hasAccess(level)) {\n return true;\n }\n return (_b = (_a = this.getResourcePermissions(type, id)) === null || _a === void 0 ? void 0 : _a.hasAccess(level)) !== null && _b !== void 0 ? _b : false;\n }\n hasResourceAccessRight(type, id, right) {\n var _a, _b;\n if (this.hasAccessRight(right)) {\n return true;\n }\n return (_b = (_a = this.getResourcePermissions(type, id)) === null || _a === void 0 ? void 0 : _a.hasAccessRight(right)) !== null && _b !== void 0 ? _b : false;\n }\n hasAccessRightForSomeResource(type, right) {\n if (this.hasAccessRight(right)) {\n return true;\n }\n const resource = this.resources.get(type);\n if (!resource) {\n return false;\n }\n for (const r of resource.values()) {\n if (r.hasAccessRight(right)) {\n return true;\n }\n }\n return false;\n }\n add(other) {\n if (getPermissionLevelNumber(this.level) < getPermissionLevelNumber(other.level)) {\n this.level = other.level;\n }\n for (const right of other.accessRights) {\n if (!this.accessRights.includes(right)) {\n this.accessRights.push(right);\n }\n }\n for (const [type, r] of other.resources) {\n for (const [id, resource] of r) {\n if (!this.resources.has(type)) {\n this.resources.set(type, new Map());\n }\n const current = this.resources.get(type).get(id);\n if (!current) {\n this.resources.get(type).set(id, resource);\n }\n else {\n this.resources.get(type).set(id, current.merge(resource));\n }\n }\n }\n }\n get isEmpty() {\n return this.level === PermissionLevel.None && this.accessRights.length === 0 && this.resources.size === 0;\n }\n}\n__decorate([\n field({ decoder: new EnumDecoder(PermissionLevel), version: 201 })\n], PermissionRoleDetailed.prototype, \"level\", void 0);\n__decorate([\n field({\n decoder: new ArrayDecoder(new EnumDecoder(AccessRight)),\n version: 246,\n upgrade: function () {\n const base = [];\n if (this.legacyManagePayments) {\n base.push(AccessRight.OrganizationManagePayments);\n }\n if (this.legacyFinanceDirector) {\n base.push(AccessRight.OrganizationFinanceDirector);\n }\n if (this.legacyCreateWebshops) {\n base.push(AccessRight.OrganizationCreateWebshops);\n }\n return base;\n },\n })\n], PermissionRoleDetailed.prototype, \"accessRights\", void 0);\n__decorate([\n field({\n decoder: new MapDecoder(new EnumDecoder(PermissionsResourceType), new MapDecoder(\n // ID\n StringDecoder, ResourcePermissions)),\n version: 248,\n })\n], PermissionRoleDetailed.prototype, \"resources\", void 0);\n__decorate([\n field({ decoder: BooleanDecoder, field: 'managePayments', optional: true })\n], PermissionRoleDetailed.prototype, \"legacyManagePayments\", void 0);\n__decorate([\n field({ decoder: BooleanDecoder, version: 199, field: 'financeDirector', optional: true })\n], PermissionRoleDetailed.prototype, \"legacyFinanceDirector\", void 0);\n__decorate([\n field({ decoder: BooleanDecoder, field: 'createWebshops', optional: true })\n], PermissionRoleDetailed.prototype, \"legacyCreateWebshops\", void 0);\nexport class PermissionRoleForResponsibility extends PermissionRoleDetailed {\n constructor() {\n super(...arguments);\n this.responsibilityGroupId = null;\n }\n}\n__decorate([\n field({ decoder: StringDecoder })\n], PermissionRoleForResponsibility.prototype, \"responsibilityId\", void 0);\n__decorate([\n field({ decoder: StringDecoder, nullable: true })\n], PermissionRoleForResponsibility.prototype, \"responsibilityGroupId\", void 0);\n//# sourceMappingURL=PermissionRole.js.map","import { __decorate } from \"tslib\";\nimport { AutoEncoder, field, ArrayDecoder } from '@simonbackx/simple-encoding';\nimport { PermissionLevel, getPermissionLevelNumber } from './PermissionLevel';\nimport { PermissionRole } from './PermissionRole';\n/**\n * @deprecated\n * Use resource types\n * Give access to a given resouce based by the roles of a user\n */\nexport class PermissionsByRole extends AutoEncoder {\n constructor() {\n super(...arguments);\n this.read = [];\n this.write = [];\n this.full = [];\n }\n getPermissionLevel(permissions) {\n if (permissions.hasFullAccess()) {\n return PermissionLevel.Full;\n }\n for (const role of this.full) {\n if (permissions.roles.find(r => r.id === role.id)) {\n return PermissionLevel.Full;\n }\n }\n if (permissions.hasWriteAccess()) {\n return PermissionLevel.Write;\n }\n for (const role of this.write) {\n if (permissions.roles.find(r => r.id === role.id)) {\n return PermissionLevel.Write;\n }\n }\n if (permissions.hasReadAccess()) {\n return PermissionLevel.Read;\n }\n for (const role of this.read) {\n if (permissions.roles.find(r => r.id === role.id)) {\n return PermissionLevel.Read;\n }\n }\n return PermissionLevel.None;\n }\n /**\n * Whetever a given user has access to the members in this group.\n */\n getRolePermissionLevel(role) {\n for (const r of this.full) {\n if (r.id === role.id) {\n return PermissionLevel.Full;\n }\n }\n for (const r of this.write) {\n if (r.id === role.id) {\n return PermissionLevel.Write;\n }\n }\n for (const r of this.read) {\n if (r.id === role.id) {\n return PermissionLevel.Read;\n }\n }\n return PermissionLevel.None;\n }\n hasAccess(permissions, level) {\n if (!permissions) {\n return false;\n }\n return getPermissionLevelNumber(this.getPermissionLevel(permissions)) >= getPermissionLevelNumber(level);\n }\n roleHasAccess(role, level = PermissionLevel.Read) {\n return getPermissionLevelNumber(this.getRolePermissionLevel(role)) >= getPermissionLevelNumber(level);\n }\n hasFullAccess(permissions) {\n return this.hasAccess(permissions, PermissionLevel.Full);\n }\n hasWriteAccess(permissions) {\n return this.hasAccess(permissions, PermissionLevel.Write);\n }\n hasReadAccess(permissions) {\n return this.hasAccess(permissions, PermissionLevel.Read);\n }\n}\n__decorate([\n field({ decoder: new ArrayDecoder(PermissionRole) })\n], PermissionsByRole.prototype, \"read\", void 0);\n__decorate([\n field({ decoder: new ArrayDecoder(PermissionRole) })\n], PermissionsByRole.prototype, \"write\", void 0);\n__decorate([\n field({ decoder: new ArrayDecoder(PermissionRole) })\n], PermissionsByRole.prototype, \"full\", void 0);\n//# sourceMappingURL=PermissionsByRole.js.map","import { __decorate } from \"tslib\";\nimport { AutoEncoder, field, StringDecoder } from '@simonbackx/simple-encoding';\nimport { PermissionsByRole } from './PermissionsByRole';\nexport class GroupPrivateSettings extends AutoEncoder {\n constructor() {\n super(...arguments);\n this.defaultEmailId = null;\n this.permissions = PermissionsByRole.create({});\n }\n}\n__decorate([\n field({ decoder: StringDecoder, nullable: true, version: 10 })\n], GroupPrivateSettings.prototype, \"defaultEmailId\", void 0);\n__decorate([\n field({ decoder: PermissionsByRole, version: 60, optional: true })\n], GroupPrivateSettings.prototype, \"permissions\", void 0);\nexport const GroupPrivateSettingsPatch = GroupPrivateSettings.patchType();\n//# sourceMappingURL=GroupPrivateSettings.js.map","import { __decorate } from \"tslib\";\nimport { ArrayDecoder, AutoEncoder, BooleanDecoder, DateDecoder, field, IntegerDecoder, StringDecoder } from '@simonbackx/simple-encoding';\nimport { v4 as uuidv4 } from 'uuid';\nexport class OldGroupPrice extends AutoEncoder {\n constructor() {\n super(...arguments);\n this.price = 0;\n this.reducedPrice = null;\n }\n}\n__decorate([\n field({ decoder: IntegerDecoder })\n], OldGroupPrice.prototype, \"price\", void 0);\n__decorate([\n field({ decoder: IntegerDecoder, nullable: true })\n], OldGroupPrice.prototype, \"reducedPrice\", void 0);\n/**\n * A group can have multiple prices, stored in an array. The pricing with the highest date or index is applied.\n */\nexport class OldGroupPrices extends AutoEncoder {\n constructor() {\n super(...arguments);\n this.startDate = null;\n /**\n * Whether the array count is per member of the same family (true) or only the same member (false)\n */\n this.sameMemberOnlyDiscount = false;\n /**\n * Count members in same category or only for the same group?\n */\n this.onlySameGroup = false;\n /**\n * The array contains prices: for first member, second member... If more members are present in a family (or member itself), the last price is used\n */\n this.prices = [OldGroupPrice.create({})];\n /**\n * @deprecated\n */\n this.price = 0;\n /**\n * @deprecated\n */\n this.reducedPrice = null;\n /**\n * @deprecated\n * Second member in the family\n */\n this.familyPrice = null;\n /**\n * @deprecated\n * Third or later member\n */\n this.extraFamilyPrice = null;\n }\n getPriceFor(reduced, alreadyRegisteredCount = 0) {\n var _a;\n if (this.prices.length == 0 || alreadyRegisteredCount < 0) {\n return 0;\n }\n const price = this.prices[Math.min(this.prices.length - 1, alreadyRegisteredCount)];\n if (reduced) {\n return (_a = price.reducedPrice) !== null && _a !== void 0 ? _a : price.price;\n }\n return price.price;\n }\n}\n__decorate([\n field({ decoder: StringDecoder, version: 2, defaultValue: () => uuidv4() })\n], OldGroupPrices.prototype, \"id\", void 0);\n__decorate([\n field({ decoder: DateDecoder, nullable: true })\n], OldGroupPrices.prototype, \"startDate\", void 0);\n__decorate([\n field({ decoder: BooleanDecoder, upgrade: () => false, version: 99 })\n], OldGroupPrices.prototype, \"sameMemberOnlyDiscount\", void 0);\n__decorate([\n field({ decoder: BooleanDecoder, upgrade: () => false, version: 99 })\n], OldGroupPrices.prototype, \"onlySameGroup\", void 0);\n__decorate([\n field({ decoder: new ArrayDecoder(OldGroupPrice), version: 98, upgrade: function () {\n const arr = [\n OldGroupPrice.create({\n price: this.price,\n reducedPrice: this.reducedPrice,\n }),\n ];\n if (this.familyPrice !== null) {\n arr.push(OldGroupPrice.create({\n price: this.familyPrice,\n reducedPrice: (this.reducedPrice !== null && this.familyPrice < this.reducedPrice) ? null : this.reducedPrice,\n }));\n if (this.extraFamilyPrice !== null) {\n arr.push(OldGroupPrice.create({\n price: this.extraFamilyPrice,\n reducedPrice: (this.reducedPrice !== null && this.extraFamilyPrice < this.reducedPrice) ? null : this.reducedPrice,\n }));\n }\n }\n return arr;\n } })\n], OldGroupPrices.prototype, \"prices\", void 0);\n__decorate([\n field({ decoder: IntegerDecoder })\n], OldGroupPrices.prototype, \"price\", void 0);\n__decorate([\n field({ decoder: IntegerDecoder, nullable: true })\n], OldGroupPrices.prototype, \"reducedPrice\", void 0);\n__decorate([\n field({ decoder: IntegerDecoder, nullable: true, version: 22 })\n], OldGroupPrices.prototype, \"familyPrice\", void 0);\n__decorate([\n field({ decoder: IntegerDecoder, nullable: true, version: 22 })\n], OldGroupPrices.prototype, \"extraFamilyPrice\", void 0);\n//# sourceMappingURL=OldGroupPrices.js.map","import { __decorate } from \"tslib\";\nimport { AutoEncoder, BooleanDecoder, DateDecoder, StringDecoder, field } from '@simonbackx/simple-encoding';\nimport { Formatter } from '@stamhoofd/utility';\nimport { v4 as uuidv4 } from 'uuid';\nexport class RegistrationPeriodBase extends AutoEncoder {\n constructor() {\n super(...arguments);\n this.startDate = new Date();\n this.endDate = new Date();\n this.locked = false;\n }\n get name() {\n return 'Werkjaar ' + Formatter.year(this.startDate) + ' - ' + Formatter.year(this.endDate);\n }\n get nameShort() {\n return Formatter.year(this.startDate) + ' - ' + Formatter.year(this.endDate);\n }\n}\n__decorate([\n field({ decoder: StringDecoder, defaultValue: () => uuidv4() })\n], RegistrationPeriodBase.prototype, \"id\", void 0);\n__decorate([\n field({ decoder: DateDecoder })\n], RegistrationPeriodBase.prototype, \"startDate\", void 0);\n__decorate([\n field({ decoder: DateDecoder })\n], RegistrationPeriodBase.prototype, \"endDate\", void 0);\n__decorate([\n field({ decoder: BooleanDecoder, optional: true })\n], RegistrationPeriodBase.prototype, \"locked\", void 0);\n//# sourceMappingURL=RegistrationPeriodBase.js.map","import { __decorate } from \"tslib\";\nimport { ArrayDecoder, AutoEncoder, field, IntegerDecoder, StringDecoder } from '@simonbackx/simple-encoding';\nexport class StockReservation extends AutoEncoder {\n constructor() {\n super(...arguments);\n this.amount = 0;\n this.children = [];\n }\n static getAmount(type, id, list) {\n let amount = 0;\n for (const reservation of list) {\n if (reservation.objectType === type && (id === null || reservation.objectId === id)) {\n amount += reservation.amount;\n }\n }\n return amount;\n }\n static filter(type, id, list) {\n return list.filter(r => r.objectType === type && r.objectId === id).flatMap(r => r.children);\n }\n static add(base, add) {\n const existingIndex = base.findIndex(r => r.objectType === add.objectType && r.objectId === add.objectId);\n if (existingIndex !== -1) {\n const existing = base[existingIndex];\n existing.amount += add.amount;\n existing.children = StockReservation.added(existing.children, add.children);\n if (existing.amount == 0 && existing.children.length === 0) {\n // NOTE: the amount should be zero.\n // if it is negative, we still have to keep it, because it can be needed during a calculation\n base.splice(existingIndex, 1);\n return;\n }\n }\n else {\n base.push(add.clone());\n }\n }\n invert() {\n this.amount = -this.amount;\n for (const child of this.children) {\n child.invert();\n }\n }\n static remove(base, remove) {\n const c = remove.clone();\n c.invert();\n return this.add(base, c);\n }\n static added(base, add) {\n const newReservations = [];\n for (const r of base) {\n // We do this because it is possible that base contains errors or duplicates\n this.add(newReservations, r);\n }\n for (const r of add) {\n this.add(newReservations, r);\n }\n return newReservations;\n }\n static removed(base, remove) {\n const newReservations = [];\n for (const r of base) {\n // We do this because it is possible that base contains errors or duplicates\n this.add(newReservations, r);\n }\n for (const r of remove) {\n this.remove(newReservations, r);\n }\n return newReservations;\n }\n}\n__decorate([\n field({ decoder: StringDecoder, field: 'id' })\n], StockReservation.prototype, \"objectId\", void 0);\n__decorate([\n field({ decoder: StringDecoder, field: 't' })\n], StockReservation.prototype, \"objectType\", void 0);\n__decorate([\n field({ decoder: IntegerDecoder, field: 'a' })\n], StockReservation.prototype, \"amount\", void 0);\n__decorate([\n field({ decoder: new ArrayDecoder(StockReservation), field: 'c' })\n], StockReservation.prototype, \"children\", void 0);\n//# sourceMappingURL=StockReservation.js.map","import { __decorate } from \"tslib\";\nimport { ArrayDecoder, AutoEncoder, BooleanDecoder, DateDecoder, EnumDecoder, field, IntegerDecoder, MapDecoder, StringDecoder } from '@simonbackx/simple-encoding';\nimport { Formatter } from '@stamhoofd/utility';\nimport { v4 as uuidv4 } from 'uuid';\nimport { Group } from './Group';\nimport { GroupGenderType } from './GroupGenderType';\nimport { OldGroupPrices } from './OldGroupPrices';\nimport { RegistrationPeriodBase } from './RegistrationPeriodBase';\nimport { StockReservation } from './StockReservation';\nimport { Image } from './files/Image';\nimport { OrganizationRecordsConfiguration } from './members/OrganizationRecordsConfiguration';\nimport { RecordCategory } from './members/records/RecordCategory';\nexport class ReduceablePrice extends AutoEncoder {\n constructor() {\n super(...arguments);\n this.price = 0;\n this.reducedPrice = null;\n }\n getPrice(isReduced) {\n if (this.reducedPrice === null) {\n return this.price;\n }\n return isReduced ? this.reducedPrice : this.price;\n }\n forMember(member) {\n return this.getPrice(member.patchedMember.details.shouldApplyReducedPrice);\n }\n}\n__decorate([\n field({ decoder: IntegerDecoder })\n], ReduceablePrice.prototype, \"price\", void 0);\n__decorate([\n field({ decoder: IntegerDecoder, nullable: true })\n], ReduceablePrice.prototype, \"reducedPrice\", void 0);\nexport class GroupPrice extends AutoEncoder {\n constructor() {\n super(...arguments);\n this.name = 'Standaardtarief';\n this.price = ReduceablePrice.create({});\n this.hidden = false;\n /**\n * Total stock, excluding already sold items into account\n */\n this.stock = null;\n /**\n * @deprecated removed\n */\n this._usedStock = 0;\n /**\n * @deprecated removed\n */\n this._reserved = 0;\n }\n getUsedStock(group) {\n const groupStockReservations = group.stockReservations;\n return StockReservation.getAmount('GroupPrice', this.id, groupStockReservations);\n }\n /**\n * Can be negative is we are editing items, positive if other items in the cart cause stock changes\n */\n getPendingStock(item) {\n const stock = item.getCartPendingStockReservations(); // this is positive if it will be used\n return StockReservation.getAmount('GroupPrice', this.id, StockReservation.filter('Group', item.group.id, stock));\n }\n isSoldOut(item) {\n if (this.stock === null) {\n return false;\n }\n if (item instanceof Group) {\n return this.getUsedStock(item) >= this.stock;\n }\n return this.getUsedStock(item.group) + this.getPendingStock(item) >= this.stock;\n }\n getRemainingStock(item) {\n if (this.stock === null) {\n return null;\n }\n if (item instanceof Group) {\n return Math.max(0, this.stock - this.getUsedStock(item));\n }\n return Math.max(0, this.stock - this.getPendingStock(item) - this.getUsedStock(item.group));\n }\n}\n__decorate([\n field({ decoder: StringDecoder, defaultValue: () => uuidv4() })\n], GroupPrice.prototype, \"id\", void 0);\n__decorate([\n field({ decoder: StringDecoder })\n], GroupPrice.prototype, \"name\", void 0);\n__decorate([\n field({ decoder: ReduceablePrice })\n], GroupPrice.prototype, \"price\", void 0);\n__decorate([\n field({ decoder: BooleanDecoder, version: 290 })\n], GroupPrice.prototype, \"hidden\", void 0);\n__decorate([\n field({ decoder: IntegerDecoder, nullable: true, version: 290 })\n], GroupPrice.prototype, \"stock\", void 0);\n__decorate([\n field({ decoder: IntegerDecoder, optional: true, field: 'usedStock' })\n], GroupPrice.prototype, \"_usedStock\", void 0);\n__decorate([\n field({ decoder: IntegerDecoder, optional: true, field: 'reserved' })\n], GroupPrice.prototype, \"_reserved\", void 0);\nexport class GroupOption extends AutoEncoder {\n constructor() {\n super(...arguments);\n this.name = '';\n this.hidden = false;\n /**\n * Price added (can be negative) is always in cents, to avoid floating point errors\n */\n this.price = ReduceablePrice.create({});\n /**\n * Maximum per registration (if > 1, you can choose an amount for this option)\n * If null = infinite\n */\n this.allowAmount = false;\n /**\n * Maximum per registration (in case allowAmount is true)\n * If null = infinite\n */\n this.maximum = null;\n /**\n * Total stock, excluding already sold items into account\n */\n this.stock = null;\n /**\n * @deprecated removed\n */\n this._usedStock = 0;\n /**\n * @deprecated removed\n */\n this._reserved = 0;\n }\n getUsedStock(group) {\n const groupStockReservations = group.stockReservations;\n return StockReservation.getAmount('GroupOption', this.id, groupStockReservations);\n }\n /**\n * Can be negative is we are editing items, positive if other items in the cart cause stock changes\n */\n getPendingStock(item) {\n const stock = item.getCartPendingStockReservations(); // this is positive if it will be used\n return StockReservation.getAmount('GroupOption', this.id, StockReservation.filter('Group', item.group.id, stock));\n }\n isSoldOut(item) {\n if (this.stock === null) {\n return false;\n }\n if (item instanceof Group) {\n return this.getUsedStock(item) >= this.stock;\n }\n return this.getUsedStock(item.group) + this.getPendingStock(item) >= this.stock;\n }\n getRemainingStock(item) {\n if (this.stock === null) {\n return null;\n }\n if (item instanceof Group) {\n return Math.max(0, this.stock - this.getUsedStock(item));\n }\n return Math.max(0, this.stock - this.getPendingStock(item) - this.getUsedStock(item.group));\n }\n getMaximumSelection(item) {\n if (this.maximum === null) {\n return this.getRemainingStock(item);\n }\n const remaining = this.getRemainingStock(item);\n if (remaining === null) {\n return this.maximum;\n }\n return Math.min(this.maximum, remaining);\n }\n}\n__decorate([\n field({ decoder: StringDecoder, defaultValue: () => uuidv4() })\n], GroupOption.prototype, \"id\", void 0);\n__decorate([\n field({ decoder: StringDecoder })\n], GroupOption.prototype, \"name\", void 0);\n__decorate([\n field({ decoder: BooleanDecoder, version: 290 })\n], GroupOption.prototype, \"hidden\", void 0);\n__decorate([\n field({ decoder: ReduceablePrice })\n], GroupOption.prototype, \"price\", void 0);\n__decorate([\n field({ decoder: BooleanDecoder })\n], GroupOption.prototype, \"allowAmount\", void 0);\n__decorate([\n field({ decoder: IntegerDecoder, nullable: true })\n], GroupOption.prototype, \"maximum\", void 0);\n__decorate([\n field({ decoder: IntegerDecoder, nullable: true, version: 290 })\n], GroupOption.prototype, \"stock\", void 0);\n__decorate([\n field({ decoder: IntegerDecoder, optional: true, field: 'usedStock' })\n], GroupOption.prototype, \"_usedStock\", void 0);\n__decorate([\n field({ decoder: IntegerDecoder, optional: true, field: 'reserved' })\n], GroupOption.prototype, \"_reserved\", void 0);\nexport class GroupOptionMenu extends AutoEncoder {\n constructor() {\n super(...arguments);\n this.name = '';\n this.description = '';\n this.multipleChoice = false;\n this.options = [\n GroupOption.create({}),\n ];\n }\n getFilteredOptions(options) {\n return this.options.filter((p) => {\n if (p.hidden && !(options === null || options === void 0 ? void 0 : options.admin)) {\n return false;\n }\n return true;\n });\n }\n}\n__decorate([\n field({ decoder: StringDecoder, defaultValue: () => uuidv4() })\n], GroupOptionMenu.prototype, \"id\", void 0);\n__decorate([\n field({ decoder: StringDecoder })\n], GroupOptionMenu.prototype, \"name\", void 0);\n__decorate([\n field({ decoder: StringDecoder })\n], GroupOptionMenu.prototype, \"description\", void 0);\n__decorate([\n field({ decoder: BooleanDecoder })\n], GroupOptionMenu.prototype, \"multipleChoice\", void 0);\n__decorate([\n field({ decoder: new ArrayDecoder(GroupOption) })\n], GroupOptionMenu.prototype, \"options\", void 0);\nexport var WaitingListType;\n(function (WaitingListType) {\n WaitingListType[\"None\"] = \"None\";\n WaitingListType[\"PreRegistrations\"] = \"PreRegistrations\";\n WaitingListType[\"ExistingMembersFirst\"] = \"ExistingMembersFirst\";\n WaitingListType[\"All\"] = \"All\";\n})(WaitingListType || (WaitingListType = {}));\nexport class CycleInformation extends AutoEncoder {\n constructor() {\n super(...arguments);\n this.startDate = null;\n this.endDate = null;\n this.registeredMembers = 0;\n /**\n * Amount of members that is reserved (e.g in payment process, or a member on the waiting list that is invited)\n */\n this.reservedMembers = 0;\n /**\n * Amount of members on the waiting list\n */\n this.waitingListSize = 0;\n }\n}\n__decorate([\n field({ decoder: DateDecoder, nullable: true })\n], CycleInformation.prototype, \"startDate\", void 0);\n__decorate([\n field({ decoder: DateDecoder, nullable: true })\n], CycleInformation.prototype, \"endDate\", void 0);\n__decorate([\n field({\n decoder: IntegerDecoder,\n nullable: true,\n })\n], CycleInformation.prototype, \"registeredMembers\", void 0);\n__decorate([\n field({\n decoder: IntegerDecoder,\n nullable: true,\n version: 139,\n })\n], CycleInformation.prototype, \"reservedMembers\", void 0);\n__decorate([\n field({\n decoder: IntegerDecoder,\n nullable: true,\n version: 139,\n })\n], CycleInformation.prototype, \"waitingListSize\", void 0);\nexport class GroupDefaultEventTime extends AutoEncoder {\n constructor() {\n super(...arguments);\n this.dayOfWeek = 1; // 1 = monday, 7 = sunday\n this.startTime = 0; // minutes since midnight\n this.endTime = 0; // minutes since midnight\n }\n}\n__decorate([\n field({ decoder: IntegerDecoder })\n], GroupDefaultEventTime.prototype, \"dayOfWeek\", void 0);\n__decorate([\n field({ decoder: IntegerDecoder })\n], GroupDefaultEventTime.prototype, \"startTime\", void 0);\n__decorate([\n field({ decoder: IntegerDecoder })\n], GroupDefaultEventTime.prototype, \"endTime\", void 0);\nexport class GroupSettings extends AutoEncoder {\n constructor() {\n super(...arguments);\n this.name = '';\n this.description = '';\n /**\n * Cached value so we know what period this group is in, to calculate the age requirements,\n * and to display the time period in the UI\n */\n this.period = null;\n this.prices = [GroupPrice.create({})];\n this.optionMenus = [];\n /**\n * Note: these are saved in the registration, not the member.\n * Do not confuse with the member's record categories in recordsConfiguration\n */\n this.recordCategories = [];\n this.registrationStartDate = null;\n this.registrationEndDate = null;\n this.defaultEventTime = null;\n this.genderType = GroupGenderType.Mixed;\n this.minAge = null;\n this.maxAge = null;\n this.waitingListType = WaitingListType.None;\n /**\n * Only used for waitingListType = PreRegistrations\n */\n this.preRegistrationsDate = null;\n this.maxMembers = null;\n this.waitingListIfFull = true;\n /**\n * @deprecated\n * If maxMembers is not null, this will get filled in by the backend\n */\n this.registeredMembers = 0;\n /**\n * @deprecated\n * Amount of members that is reserved (e.g in payment process, or a member on the waiting list that is invited)\n */\n this.reservedMembers = 0;\n /**\n * @deprecated\n * Amount of members on the waiting list\n */\n this.waitingListSize = null;\n /**\n * Of er voorrang moet gegeven worden aan broers en/of zussen als er wachtlijsten of voorinschrijvingen zijn\n */\n this.priorityForFamily = true;\n this.coverPhoto = null;\n this.squarePhoto = null;\n /**\n * @deprecated\n */\n this.oldPrices = [];\n /**\n * @deprecated\n */\n this.images = [];\n /**\n * @deprecated\n */\n this.location = '';\n /**\n * Require that the member is already registered for one of these groups before allowing to register for this group.\n * If it is empty, then it is not enforced\n */\n this.requireGroupIds = [];\n /**\n * Require that the member is already registered for one of these groups before allowing to register for this group.\n * If it is empty, then it is not enforced\n */\n this.requireDefaultAgeGroupIds = [];\n /**\n * The member should have a platform membership for the provided date before being able to register\n */\n this.requirePlatformMembershipOn = null;\n /**\n * The member should have a valid registration (type = GroupType.Membership) for one of these organization ids\n *\n * If empty and requireOrganizationTags empty: new members without registrations can also register\n */\n this.requireOrganizationIds = [];\n /**\n * The member should have a valid registration (type = GroupType.Membership) for one of these organization tags\n *\n * If empty AND requireOrganizationIds empty: new members without registrations can also register\n */\n this.requireOrganizationTags = [];\n /**\n * Allow other organizations to register members in this group\n * This would create a payment between the organizations instead, so that often requires invoicing\n */\n this.allowRegistrationsByOrganization = false;\n /**\n * @deprecated\n * Require that the member is already registered for one of these groups before allowing to register for this group.\n * If it is empty, then it is not enforced\n */\n this.requirePreviousGroupIds = [];\n /**\n * @deprecated\n */\n this.preventPreviousGroupIds = [];\n /**\n * @deprecated\n * Information about previous cycles\n */\n this.cycleSettings = new Map();\n /**\n * @deprecated\n * Use registration periods instead\n * + replaced by activities\n */\n this.startDate = new Date();\n /**\n * @deprecated\n * Use registration periods instead\n * + replaced by activities\n */\n this.endDate = new Date();\n /**\n * @deprecated\n * Dispay start and end date times\n */\n this.displayStartEndTime = false;\n }\n getUsedStock(group) {\n const groupStockReservations = group.stockReservations;\n return StockReservation.getAmount('GroupPrice', null, groupStockReservations);\n }\n /**\n * Can be negative is we are editing items, positive if other items in the cart cause stock changes\n */\n getPendingStock(item) {\n const stock = item.getCartPendingStockReservations(); // this is positive if it will be used\n return StockReservation.getAmount('Group', item.group.id, stock);\n }\n isSoldOut(item) {\n if (this.maxMembers === null) {\n return false;\n }\n if (item instanceof Group) {\n return this.getUsedStock(item) >= this.maxMembers;\n }\n return this.getUsedStock(item.group) + this.getPendingStock(item) >= this.maxMembers;\n }\n getRemainingStock(item) {\n if (this.maxMembers === null) {\n return null;\n }\n if (item instanceof Group) {\n return Math.max(0, this.maxMembers - this.getUsedStock(item));\n }\n return Math.max(0, this.maxMembers - this.getPendingStock(item) - this.getUsedStock(item.group));\n }\n get isFull() {\n var _a;\n return this.maxMembers !== null && this.registeredMembers !== null && (this.registeredMembers + ((_a = this.reservedMembers) !== null && _a !== void 0 ? _a : 0)) >= this.maxMembers;\n }\n get canHaveWaitingList() {\n return (this.waitingListType !== WaitingListType.None && this.waitingListType !== WaitingListType.PreRegistrations) || (this.waitingListIfFull && this.maxMembers !== null);\n }\n get canHaveWaitingListWithoutMax() {\n return (this.waitingListType !== WaitingListType.None && this.waitingListType !== WaitingListType.PreRegistrations);\n }\n get availableMembers() {\n var _a;\n if (this.maxMembers === null) {\n return null;\n }\n if (this.registeredMembers === null) {\n return null;\n }\n return this.maxMembers - this.registeredMembers - ((_a = this.reservedMembers) !== null && _a !== void 0 ? _a : 0);\n }\n /**\n * @deprecated\n */\n getGroupPrices(date) {\n let foundPrice = undefined;\n // Determine price\n for (const price of this.oldPrices) {\n if (!price.startDate || price.startDate <= date) {\n foundPrice = price;\n }\n }\n return foundPrice;\n }\n get maxYear() {\n if (this.minAge === null) {\n return null;\n }\n return (this.startDate.getFullYear() - this.minAge);\n }\n get minYear() {\n if (this.maxAge === null) {\n return null;\n }\n return (this.startDate.getFullYear() - this.maxAge);\n }\n get forAdults() {\n return ((this.minAge && this.minAge >= 18) || (this.maxAge && this.maxAge > 18));\n }\n getAgeGenderDescription({ includeAge = false, includeGender = false } = {}) {\n let who = '';\n if (includeAge && this.minYear && this.maxYear) {\n if (includeGender && this.genderType === GroupGenderType.OnlyMale) {\n if (this.forAdults) {\n who += 'mannen geboren in';\n }\n else {\n who += 'jongens geboren in';\n }\n }\n else if (includeGender && this.genderType === GroupGenderType.OnlyFemale) {\n if (this.forAdults) {\n who += 'vrouwen geboren in';\n }\n else {\n who += 'meisjes geboren in';\n }\n }\n else {\n who += 'geboren in';\n }\n who += ' ' + (this.minYear) + ' - ' + (this.maxYear);\n }\n else if (includeAge && this.maxYear) {\n if (includeGender && this.genderType === GroupGenderType.OnlyMale) {\n if (this.forAdults) {\n who += 'mannen geboren in of voor';\n }\n else {\n who += 'jongens geboren in of voor';\n }\n }\n else if (includeGender && this.genderType === GroupGenderType.OnlyFemale) {\n if (this.forAdults) {\n who += 'vrouwen geboren in of voor';\n }\n else {\n who += 'meisjes geboren in of voor';\n }\n }\n else {\n who += 'geboren in of voor';\n }\n who += ' ' + (this.maxYear);\n }\n else if (includeAge && this.minYear) {\n if (includeGender && this.genderType === GroupGenderType.OnlyMale) {\n if (this.forAdults) {\n who += 'mannen geboren in of na';\n }\n else {\n who += 'jongens geboren in of na';\n }\n }\n else if (includeGender && this.genderType === GroupGenderType.OnlyFemale) {\n if (this.forAdults) {\n who += 'vrouwen geboren in of na';\n }\n else {\n who += 'meisjes geboren in of na';\n }\n }\n else {\n who += 'geboren in of na';\n }\n who += ' ' + (this.minYear);\n }\n else if (includeGender) {\n if (this.genderType === GroupGenderType.OnlyMale) {\n if (this.forAdults) {\n who += 'mannen';\n }\n else {\n who += 'jongens';\n }\n }\n else if (this.genderType === GroupGenderType.OnlyFemale) {\n if (this.forAdults) {\n who += 'vrouwen';\n }\n else {\n who += 'meisjes';\n }\n }\n }\n if (!who) {\n return null;\n }\n return who;\n }\n getMemberCount({ waitingList }) {\n if (waitingList) {\n return this.waitingListSize;\n }\n return this.registeredMembers;\n }\n getShortCode(maxLength) {\n return Formatter.firstLetters(this.name, maxLength);\n }\n getFilteredPrices(options) {\n return this.prices.filter((p) => {\n if (p.hidden && !(options === null || options === void 0 ? void 0 : options.admin)) {\n return false;\n }\n return true;\n });\n }\n getFilteredOptionMenus(options) {\n return this.optionMenus.filter((p) => {\n return p.getFilteredOptions(options).length > 0;\n });\n }\n get isFree() {\n return !this.prices.find(p => p.price.price > 0) && !this.optionMenus.find(o => o.options.find(p => p.price.price > 0));\n }\n}\n__decorate([\n field({ decoder: StringDecoder })\n], GroupSettings.prototype, \"name\", void 0);\n__decorate([\n field({ decoder: StringDecoder })\n], GroupSettings.prototype, \"description\", void 0);\n__decorate([\n field({ decoder: RegistrationPeriodBase, nullable: true, version: 329 })\n], GroupSettings.prototype, \"period\", void 0);\n__decorate([\n field({ decoder: new ArrayDecoder(GroupPrice), version: 285, upgrade: () => { return []; } }) // Upgrade uses empty array to prevent generating random ids every time\n], GroupSettings.prototype, \"prices\", void 0);\n__decorate([\n field({ decoder: new ArrayDecoder(GroupOptionMenu), version: 285 })\n], GroupSettings.prototype, \"optionMenus\", void 0);\n__decorate([\n field({\n decoder: OrganizationRecordsConfiguration,\n version: 291,\n defaultValue: () => OrganizationRecordsConfiguration.create({}),\n })\n], GroupSettings.prototype, \"recordsConfiguration\", void 0);\n__decorate([\n field({ decoder: new ArrayDecoder(RecordCategory), version: 338 })\n], GroupSettings.prototype, \"recordCategories\", void 0);\n__decorate([\n field({ decoder: DateDecoder, nullable: false, version: 73, upgrade: function () { return this.startDate; } }),\n field({ decoder: DateDecoder, nullable: true, version: 192, downgrade: function () { var _a; return (_a = this.registrationStartDate) !== null && _a !== void 0 ? _a : this.startDate; } })\n], GroupSettings.prototype, \"registrationStartDate\", void 0);\n__decorate([\n field({ decoder: DateDecoder, nullable: false, version: 73, upgrade: function () { return this.endDate; } }),\n field({ decoder: DateDecoder, nullable: true, version: 192, downgrade: function () { var _a; return (_a = this.registrationEndDate) !== null && _a !== void 0 ? _a : this.endDate; } })\n], GroupSettings.prototype, \"registrationEndDate\", void 0);\n__decorate([\n field({ decoder: GroupDefaultEventTime, nullable: true, version: 283 })\n], GroupSettings.prototype, \"defaultEventTime\", void 0);\n__decorate([\n field({ decoder: new EnumDecoder(GroupGenderType) })\n], GroupSettings.prototype, \"genderType\", void 0);\n__decorate([\n field({ decoder: IntegerDecoder, nullable: true, field: 'maxBirthYear' }),\n field({ decoder: IntegerDecoder, nullable: true, version: 12, upgrade: (year) => {\n if (year === null) {\n return null;\n }\n return 2020 - year;\n } })\n], GroupSettings.prototype, \"minAge\", void 0);\n__decorate([\n field({ decoder: IntegerDecoder, nullable: true, field: 'minBirthYear' }),\n field({\n decoder: IntegerDecoder, nullable: true, version: 12, upgrade: (year) => {\n if (year === null) {\n return null;\n }\n return 2020 - year;\n },\n })\n], GroupSettings.prototype, \"maxAge\", void 0);\n__decorate([\n field({ decoder: new EnumDecoder(WaitingListType), version: 16 })\n], GroupSettings.prototype, \"waitingListType\", void 0);\n__decorate([\n field({ decoder: DateDecoder, nullable: true, version: 16 })\n], GroupSettings.prototype, \"preRegistrationsDate\", void 0);\n__decorate([\n field({\n decoder: IntegerDecoder, nullable: true, version: 16,\n }),\n field({\n decoder: IntegerDecoder,\n nullable: true,\n version: 74,\n upgrade: function (old) {\n // Clear value if waiting list type is none\n if (this.waitingListType !== WaitingListType.None) {\n return old;\n }\n return null;\n },\n })\n], GroupSettings.prototype, \"maxMembers\", void 0);\n__decorate([\n field({\n decoder: BooleanDecoder, version: 79,\n })\n], GroupSettings.prototype, \"waitingListIfFull\", void 0);\n__decorate([\n field({\n decoder: IntegerDecoder,\n nullable: true,\n version: 77,\n })\n], GroupSettings.prototype, \"registeredMembers\", void 0);\n__decorate([\n field({\n decoder: IntegerDecoder,\n nullable: true,\n version: 139,\n })\n], GroupSettings.prototype, \"reservedMembers\", void 0);\n__decorate([\n field({\n decoder: IntegerDecoder,\n nullable: true,\n version: 139,\n optional: true,\n })\n], GroupSettings.prototype, \"waitingListSize\", void 0);\n__decorate([\n field({ decoder: BooleanDecoder, version: 16 })\n], GroupSettings.prototype, \"priorityForFamily\", void 0);\n__decorate([\n field({ decoder: Image, nullable: true, version: 65 })\n], GroupSettings.prototype, \"coverPhoto\", void 0);\n__decorate([\n field({ decoder: Image, nullable: true, version: 66 })\n], GroupSettings.prototype, \"squarePhoto\", void 0);\n__decorate([\n field({ decoder: new ArrayDecoder(OldGroupPrices), field: 'prices' }),\n field({ decoder: new ArrayDecoder(OldGroupPrices), field: 'oldPrices', optional: true, version: 284 })\n], GroupSettings.prototype, \"oldPrices\", void 0);\n__decorate([\n field({ decoder: new ArrayDecoder(Image), version: 58, optional: true })\n], GroupSettings.prototype, \"images\", void 0);\n__decorate([\n field({ decoder: StringDecoder, version: 76, optional: true })\n], GroupSettings.prototype, \"location\", void 0);\n__decorate([\n field({ decoder: new ArrayDecoder(StringDecoder), version: 83 })\n], GroupSettings.prototype, \"requireGroupIds\", void 0);\n__decorate([\n field({ decoder: new ArrayDecoder(StringDecoder), version: 297 })\n], GroupSettings.prototype, \"requireDefaultAgeGroupIds\", void 0);\n__decorate([\n field({ decoder: DateDecoder, nullable: true, version: 297 })\n], GroupSettings.prototype, \"requirePlatformMembershipOn\", void 0);\n__decorate([\n field({ decoder: new ArrayDecoder(StringDecoder), version: 297 })\n], GroupSettings.prototype, \"requireOrganizationIds\", void 0);\n__decorate([\n field({ decoder: new ArrayDecoder(StringDecoder), version: 297 })\n], GroupSettings.prototype, \"requireOrganizationTags\", void 0);\n__decorate([\n field({ decoder: BooleanDecoder, version: 303 })\n], GroupSettings.prototype, \"allowRegistrationsByOrganization\", void 0);\n__decorate([\n field({ decoder: new ArrayDecoder(StringDecoder), version: 100, optional: true })\n], GroupSettings.prototype, \"requirePreviousGroupIds\", void 0);\n__decorate([\n field({ decoder: new ArrayDecoder(StringDecoder), version: 102, optional: true })\n], GroupSettings.prototype, \"preventPreviousGroupIds\", void 0);\n__decorate([\n field({ decoder: new MapDecoder(IntegerDecoder, CycleInformation), version: 193, optional: true })\n], GroupSettings.prototype, \"cycleSettings\", void 0);\n__decorate([\n field({ decoder: DateDecoder }),\n field({ decoder: DateDecoder, version: 33, upgrade: (d) => {\n const d2 = new Date(d);\n d2.setUTCHours(-2, 0, 0, 0); // brussels time\n return d2;\n }, optional: true })\n], GroupSettings.prototype, \"startDate\", void 0);\n__decorate([\n field({ decoder: DateDecoder }),\n field({ decoder: DateDecoder, version: 33, upgrade: (d) => {\n const d2 = new Date(d);\n d2.setUTCHours(23 - 2, 59, 0, 0); // brussels time\n return d2;\n }, optional: true })\n], GroupSettings.prototype, \"endDate\", void 0);\n__decorate([\n field({ decoder: BooleanDecoder, version: 78, optional: true })\n], GroupSettings.prototype, \"displayStartEndTime\", void 0);\nexport const GroupSettingsPatch = GroupSettings.patchType();\n//# sourceMappingURL=GroupSettings.js.map","export var Gender;\n(function (Gender) {\n Gender[\"Male\"] = \"Male\";\n Gender[\"Female\"] = \"Female\";\n Gender[\"Other\"] = \"Other\";\n})(Gender || (Gender = {}));\n//# sourceMappingURL=Gender.js.map","import { __decorate } from \"tslib\";\nimport { ArrayDecoder, AutoEncoder, DateDecoder, EnumDecoder, field, IntegerDecoder, StringDecoder } from '@simonbackx/simple-encoding';\nimport { v4 as uuidv4 } from 'uuid';\nimport { GroupGenderType } from './GroupGenderType';\nimport { GroupPrivateSettings } from './GroupPrivateSettings';\nimport { GroupSettings, WaitingListType } from './GroupSettings';\nimport { GroupType } from './GroupType';\nimport { Gender } from './members/Gender';\nimport { PermissionLevel } from './PermissionLevel';\nimport { PermissionsResourceType } from './PermissionsResourceType';\nimport { StockReservation } from './StockReservation';\nexport var GroupStatus;\n(function (GroupStatus) {\n GroupStatus[\"Open\"] = \"Open\";\n GroupStatus[\"Closed\"] = \"Closed\";\n /**\n * @deprecated\n */\n GroupStatus[\"Archived\"] = \"Archived\";\n})(GroupStatus || (GroupStatus = {}));\nexport class Group extends AutoEncoder {\n constructor() {\n super(...arguments);\n this.type = GroupType.Membership;\n this.organizationId = '';\n this.periodId = '';\n this.defaultAgeGroupId = null;\n this.waitingList = null;\n this.stockReservations = [];\n /**\n * @deprecated\n */\n this.cycle = 0;\n this.settings = GroupSettings.create({});\n this.createdAt = new Date();\n this.deletedAt = null;\n /**\n * Only set when you have access to this information\n */\n this.privateSettings = null;\n /**\n * Manually close a group\n */\n this.status = GroupStatus.Open;\n }\n static defaultSort(a, b) {\n if (a.settings.maxAge && !b.settings.maxAge) {\n return -1;\n }\n if (b.settings.maxAge && !a.settings.maxAge) {\n return 1;\n }\n if (!b.settings.maxAge && !a.settings.maxAge) {\n // name\n return Group.nameSort(a, b);\n }\n if (a.settings.maxAge > b.settings.maxAge) {\n return 1;\n }\n if (a.settings.maxAge < b.settings.maxAge) {\n return -1;\n }\n return Group.nameSort(a, b);\n }\n static nameSort(a, b) {\n if (a.settings.name.toLowerCase() < b.settings.name.toLowerCase()) {\n return -1;\n }\n if (a.settings.name.toLowerCase() > b.settings.name.toLowerCase()) {\n return 1;\n }\n return 0;\n }\n getMemberCount({ waitingList } = {}) {\n return this.settings.getMemberCount({ waitingList });\n }\n /**\n * Return the pre registration date only if is is active right now\n */\n get activePreRegistrationDate() {\n if (!this.settings.registrationStartDate) {\n // Registration start date is a requirement for pre registrations\n return null;\n }\n if (this.settings.registrationStartDate < new Date() || this.settings.waitingListType !== WaitingListType.PreRegistrations) {\n // Start date is in the past: registrations are open\n return null;\n }\n return this.settings.preRegistrationsDate;\n }\n /**\n * Closed now, but will open in the future\n */\n get notYetOpen() {\n if (!this.settings.registrationStartDate) {\n return false;\n }\n const now = new Date();\n const preRegistrationDate = this.activePreRegistrationDate;\n if (this.settings.registrationStartDate > now && (!preRegistrationDate || preRegistrationDate > now)) {\n // Start date or pre registration date are in the future\n return true;\n }\n return false;\n }\n /**\n * No registrations and waiting list registrations are possible if closed\n */\n get closed() {\n if (this.status !== GroupStatus.Open) {\n return true;\n }\n if (this.notYetOpen) {\n // Start date or pre registration date are in the future\n return true;\n }\n const now = new Date();\n if (this.settings.registrationEndDate && this.settings.registrationEndDate < now) {\n return true;\n }\n return false;\n }\n hasWaitingList() {\n return this.settings.canHaveWaitingList || this.waitingList !== null;\n }\n /**\n * Returns all parent and grandparents of this group\n */\n getParentCategories(all, recursive = true) {\n const map = new Map();\n const parents = all.filter(g => g.groupIds.includes(this.id));\n for (const parent of parents) {\n map.set(parent.id, parent);\n if (recursive) {\n const hisParents = parent.getParentCategories(all);\n for (const pp of hisParents) {\n map.set(pp.id, pp);\n }\n }\n }\n return [...map.values()];\n }\n hasAccess(permissions, allCategories, permissionLevel = PermissionLevel.Read) {\n if (!permissions) {\n return false;\n }\n if (permissions.hasResourceAccess(PermissionsResourceType.Groups, this.id, permissionLevel)) {\n return true;\n }\n // Check parent categories\n const parentCategories = this.getParentCategories(allCategories);\n for (const category of parentCategories) {\n if (permissions.hasResourceAccess(PermissionsResourceType.GroupCategories, category.id, permissionLevel)) {\n return true;\n }\n }\n return false;\n }\n isPublic(allCategories) {\n for (const parent of this.getParentCategories(allCategories)) {\n if (!parent.settings.public) {\n return false;\n }\n }\n return true;\n }\n hasReadAccess(permissions, allCategories) {\n return this.hasAccess(permissions, allCategories, PermissionLevel.Read);\n }\n hasWriteAccess(permissions, allCategories) {\n return this.hasAccess(permissions, allCategories, PermissionLevel.Write);\n }\n hasFullAccess(permissions, allCategories) {\n return this.hasAccess(permissions, allCategories, PermissionLevel.Full);\n }\n get squareImage() {\n var _a;\n return (_a = this.settings.squarePhoto) !== null && _a !== void 0 ? _a : this.settings.coverPhoto;\n }\n getRecommendedFilter() {\n const filter = [];\n if (this.settings.minAge !== null) {\n filter.push({\n age: {\n $gte: this.settings.minAge,\n },\n });\n }\n if (this.settings.maxAge !== null) {\n filter.push({\n age: {\n $lte: this.settings.maxAge,\n },\n });\n }\n if (this.settings.genderType === GroupGenderType.OnlyMale) {\n filter.push({\n gender: Gender.Male,\n });\n }\n if (this.settings.genderType === GroupGenderType.OnlyFemale) {\n filter.push({\n gender: Gender.Male,\n });\n }\n if (this.settings.requireGroupIds.length) {\n filter.push({\n registrations: {\n $elemMatch: {\n groupId: {\n $in: this.settings.requireGroupIds,\n },\n },\n },\n });\n }\n if (this.settings.requireDefaultAgeGroupIds.length) {\n filter.push({\n registrations: {\n $elemMatch: {\n periodId: this.periodId,\n group: {\n defaultAgeGroupId: {\n $in: this.settings.requireDefaultAgeGroupIds,\n },\n },\n },\n },\n });\n }\n else {\n if (this.settings.requirePlatformMembershipOn !== null) {\n const requirePlatformMembershipOn = this.settings.requirePlatformMembershipOn;\n filter.push({\n platformMemberships: {\n $elemMatch: {\n endDate: {\n $gt: requirePlatformMembershipOn,\n },\n },\n },\n });\n }\n }\n if (this.settings.requireOrganizationIds.length) {\n filter.push({\n registrations: {\n $elemMatch: {\n periodId: this.periodId,\n organizationId: {\n $in: this.settings.requireOrganizationIds,\n },\n },\n },\n });\n }\n if (this.settings.requireOrganizationTags.length) {\n filter.push({\n registrations: {\n $elemMatch: {\n periodId: this.periodId,\n organization: {\n tags: {\n $in: this.settings.requireOrganizationTags,\n },\n },\n },\n },\n });\n }\n return filter;\n }\n}\n__decorate([\n field({ decoder: StringDecoder, defaultValue: () => uuidv4() })\n], Group.prototype, \"id\", void 0);\n__decorate([\n field({ decoder: new EnumDecoder(GroupType), version: 286 })\n], Group.prototype, \"type\", void 0);\n__decorate([\n field({ decoder: StringDecoder, version: 250 })\n], Group.prototype, \"organizationId\", void 0);\n__decorate([\n field({ decoder: StringDecoder, version: 265 })\n], Group.prototype, \"periodId\", void 0);\n__decorate([\n field({ decoder: StringDecoder, nullable: true, version: 267 })\n], Group.prototype, \"defaultAgeGroupId\", void 0);\n__decorate([\n field({ decoder: Group, nullable: true, version: 292 })\n], Group.prototype, \"waitingList\", void 0);\n__decorate([\n field({ decoder: new ArrayDecoder(StockReservation), nullable: true, version: 298 })\n], Group.prototype, \"stockReservations\", void 0);\n__decorate([\n field({ decoder: IntegerDecoder })\n], Group.prototype, \"cycle\", void 0);\n__decorate([\n field({ decoder: GroupSettings })\n], Group.prototype, \"settings\", void 0);\n__decorate([\n field({ decoder: DateDecoder, version: 187 })\n], Group.prototype, \"createdAt\", void 0);\n__decorate([\n field({ decoder: DateDecoder, nullable: true, version: 187 })\n], Group.prototype, \"deletedAt\", void 0);\n__decorate([\n field({ decoder: GroupPrivateSettings, nullable: true, version: 10 })\n], Group.prototype, \"privateSettings\", void 0);\n__decorate([\n field({ decoder: new EnumDecoder(GroupStatus), version: 192 })\n], Group.prototype, \"status\", void 0);\nexport const GroupPatch = Group.patchType();\n//# sourceMappingURL=Group.js.map","import { __decorate } from \"tslib\";\nimport { AutoEncoder, field, StringDecoder } from '@simonbackx/simple-encoding';\nexport class RichText extends AutoEncoder {\n constructor() {\n super(...arguments);\n this.html = '';\n this.text = '';\n }\n toString() {\n return this.text;\n }\n}\n__decorate([\n field({ decoder: StringDecoder })\n], RichText.prototype, \"html\", void 0);\n__decorate([\n field({ decoder: StringDecoder })\n], RichText.prototype, \"text\", void 0);\n//# sourceMappingURL=RichText.js.map","import { __decorate } from \"tslib\";\nimport { ArrayDecoder, AutoEncoder, BooleanDecoder, DateDecoder, field, StringDecoder } from '@simonbackx/simple-encoding';\nimport { v4 as uuidv4 } from 'uuid';\nimport { Image } from './files/Image';\nimport { Group } from './Group';\nimport { RichText } from './RichText';\nimport { Address } from './addresses/Address';\nimport { Formatter } from '@stamhoofd/utility';\nexport class EventLocation extends AutoEncoder {\n constructor() {\n super(...arguments);\n this.name = '';\n this.address = null;\n }\n}\n__decorate([\n field({ decoder: StringDecoder })\n], EventLocation.prototype, \"name\", void 0);\n__decorate([\n field({ decoder: Address, nullable: true })\n], EventLocation.prototype, \"address\", void 0);\n/**\n * In case we need to cache the name, to properly display information without having to fetch loads of data\n */\nexport class NamedObject extends AutoEncoder {\n constructor() {\n super(...arguments);\n this.id = '';\n this.name = '';\n this.description = '';\n }\n}\n__decorate([\n field({ decoder: StringDecoder })\n], NamedObject.prototype, \"id\", void 0);\n__decorate([\n field({ decoder: StringDecoder })\n], NamedObject.prototype, \"name\", void 0);\n__decorate([\n field({ decoder: StringDecoder })\n], NamedObject.prototype, \"description\", void 0);\nexport class EventMeta extends AutoEncoder {\n constructor() {\n super(...arguments);\n /**\n * Contains the name of the organization for displaying the event\n */\n this.organizationCache = null;\n this.description = RichText.create({});\n this.visible = true;\n this.location = null;\n /**\n * A valid membership is required for one of these default age groups\n *\n * null = no restriction\n */\n this.defaultAgeGroupIds = null;\n /**\n * A valid membership is required for one of these specific groups\n * (only if organizationId is set)\n *\n * null = no restriction\n */\n this.groups = null;\n /**\n * A valid membership is required for an organization with one of these tags\n *\n * null = no restriction (unless organizationId is set)\n */\n this.organizationTagIds = null;\n this.coverPhoto = null;\n }\n}\n__decorate([\n field({ decoder: NamedObject, nullable: true, version: 311 })\n], EventMeta.prototype, \"organizationCache\", void 0);\n__decorate([\n field({ decoder: RichText })\n], EventMeta.prototype, \"description\", void 0);\n__decorate([\n field({ decoder: BooleanDecoder })\n], EventMeta.prototype, \"visible\", void 0);\n__decorate([\n field({ decoder: EventLocation, nullable: true })\n], EventMeta.prototype, \"location\", void 0);\n__decorate([\n field({ decoder: new ArrayDecoder(StringDecoder), nullable: true })\n], EventMeta.prototype, \"defaultAgeGroupIds\", void 0);\n__decorate([\n field({ decoder: new ArrayDecoder(NamedObject), nullable: true, version: 302 })\n], EventMeta.prototype, \"groups\", void 0);\n__decorate([\n field({ decoder: new ArrayDecoder(StringDecoder), nullable: true })\n], EventMeta.prototype, \"organizationTagIds\", void 0);\n__decorate([\n field({ decoder: Image, nullable: true })\n], EventMeta.prototype, \"coverPhoto\", void 0);\nexport class Event extends AutoEncoder {\n constructor() {\n super(...arguments);\n this.name = '';\n this.typeId = '';\n this.organizationId = null;\n this.startDate = new Date();\n this.endDate = new Date();\n this.meta = EventMeta.create({});\n this.group = null;\n this.createdAt = new Date();\n this.updatedAt = new Date();\n }\n get dateRange() {\n return Formatter.dateRange(this.startDate, this.endDate);\n }\n static group(events) {\n const queue = [];\n const currentYear = Formatter.year(new Date());\n for (const event of events) {\n const year = Formatter.year(event.startDate);\n const title = Formatter.month(event.startDate) + (year !== currentYear ? ` ${year}` : '');\n const group = queue[queue.length - 1];\n if (group && group.title === title) {\n group.events.push(event);\n }\n else {\n queue.push({ title, events: [event] });\n }\n }\n return queue;\n }\n}\n__decorate([\n field({ decoder: StringDecoder, defaultValue: () => uuidv4() })\n], Event.prototype, \"id\", void 0);\n__decorate([\n field({ decoder: StringDecoder })\n], Event.prototype, \"name\", void 0);\n__decorate([\n field({ decoder: StringDecoder })\n], Event.prototype, \"typeId\", void 0);\n__decorate([\n field({ decoder: StringDecoder, nullable: true })\n], Event.prototype, \"organizationId\", void 0);\n__decorate([\n field({ decoder: DateDecoder })\n], Event.prototype, \"startDate\", void 0);\n__decorate([\n field({ decoder: DateDecoder })\n], Event.prototype, \"endDate\", void 0);\n__decorate([\n field({ decoder: EventMeta })\n], Event.prototype, \"meta\", void 0);\n__decorate([\n field({ decoder: Group, nullable: true })\n], Event.prototype, \"group\", void 0);\n__decorate([\n field({ decoder: DateDecoder })\n], Event.prototype, \"createdAt\", void 0);\n__decorate([\n field({ decoder: DateDecoder })\n], Event.prototype, \"updatedAt\", void 0);\nexport class EventWithRegistrations extends Event {\n}\n//# sourceMappingURL=Event.js.map","import { __decorate } from \"tslib\";\nimport { ArrayDecoder, AutoEncoder, BooleanDecoder, field, IntegerDecoder, StringDecoder } from '@simonbackx/simple-encoding';\nimport { v4 as uuidv4 } from 'uuid';\nimport { AccessRight } from './AccessRight';\nimport { Group } from './Group';\nimport { PermissionRole } from './PermissionRole';\nimport { PermissionsByRole } from './PermissionsByRole';\nimport { PermissionsResourceType } from './PermissionsResourceType';\n/**\n * Give access to a given resouce based by the roles of a user\n */\nexport class GroupCategoryPermissions extends AutoEncoder {\n constructor() {\n super(...arguments);\n /**\n * @deprecated\n * Can create new groups in this category or subcategories\n */\n this.create = [];\n /**\n * @deprecated\n * Permissions automatically for all groups in this category\n */\n this.groupPermissions = PermissionsByRole.create({});\n }\n}\n__decorate([\n field({ decoder: new ArrayDecoder(PermissionRole) })\n], GroupCategoryPermissions.prototype, \"create\", void 0);\n__decorate([\n field({ decoder: PermissionsByRole, version: 203, optional: true })\n], GroupCategoryPermissions.prototype, \"groupPermissions\", void 0);\nexport class GroupCategorySettings extends AutoEncoder {\n constructor() {\n super(...arguments);\n this.name = '';\n /**\n * Small text below the category title\n */\n this.description = '';\n this.public = true;\n this.maximumRegistrations = null;\n /**\n * @deprecated\n */\n this.permissions = GroupCategoryPermissions.create({});\n /**\n * Whether the category can be deleted / moved by non admins.\n */\n this.locked = false;\n }\n}\n__decorate([\n field({ decoder: StringDecoder })\n], GroupCategorySettings.prototype, \"name\", void 0);\n__decorate([\n field({ decoder: StringDecoder })\n], GroupCategorySettings.prototype, \"description\", void 0);\n__decorate([\n field({ decoder: BooleanDecoder })\n], GroupCategorySettings.prototype, \"public\", void 0);\n__decorate([\n field({ decoder: IntegerDecoder, nullable: true, version: 59 })\n], GroupCategorySettings.prototype, \"maximumRegistrations\", void 0);\n__decorate([\n field({ decoder: GroupCategoryPermissions, version: 61 })\n], GroupCategorySettings.prototype, \"permissions\", void 0);\n__decorate([\n field({\n decoder: BooleanDecoder, version: 330,\n })\n], GroupCategorySettings.prototype, \"locked\", void 0);\nexport class GroupCategory extends AutoEncoder {\n constructor() {\n super(...arguments);\n this.settings = GroupCategorySettings.create({});\n /**\n * We only save the ID of groups because these are stored separately. To prevent that a group will be deleted when we simply move the group to a different category\n */\n this.groupIds = [];\n /**\n * Child category IDS\n * We use ID's to allow more flexible changes in the future\n */\n this.categoryIds = [];\n }\n /**\n * Returns all parent and grandparents of this group\n */\n getParentCategories(all) {\n const map = new Map();\n // Avoid recursive loop: can never call getParentCategories on itself again\n const filteredAll = all.filter(g => g.id !== this.id);\n const parents = filteredAll.filter(g => g.categoryIds.includes(this.id));\n for (const parent of parents) {\n map.set(parent.id, parent);\n const hisParents = parent.getParentCategories(filteredAll);\n for (const pp of hisParents) {\n map.set(pp.id, pp);\n }\n }\n return [...map.values()];\n }\n isPublic(allCategories) {\n if (!this.settings.public) {\n return false;\n }\n for (const parent of this.getParentCategories(allCategories)) {\n if (!parent.settings.public) {\n return false;\n }\n }\n return true;\n }\n canEdit(permissions) {\n if (permissions === null || permissions === void 0 ? void 0 : permissions.hasFullAccess()) {\n return true;\n }\n return false;\n }\n canCreate(permissions, categories = []) {\n if (!permissions) {\n return false;\n }\n if (permissions.hasResourceAccessRight(PermissionsResourceType.GroupCategories, this.id, AccessRight.OrganizationCreateGroups)) {\n return true;\n }\n const parents = this.getParentCategories(categories);\n for (const parent of parents) {\n if (permissions.hasResourceAccessRight(PermissionsResourceType.GroupCategories, parent.id, AccessRight.OrganizationCreateGroups)) {\n return true;\n }\n }\n return false;\n }\n}\n__decorate([\n field({ decoder: StringDecoder, defaultValue: () => uuidv4() })\n], GroupCategory.prototype, \"id\", void 0);\n__decorate([\n field({ decoder: GroupCategorySettings })\n], GroupCategory.prototype, \"settings\", void 0);\n__decorate([\n field({ decoder: new ArrayDecoder(StringDecoder) })\n], GroupCategory.prototype, \"groupIds\", void 0);\n__decorate([\n field({ decoder: new ArrayDecoder(StringDecoder) })\n], GroupCategory.prototype, \"categoryIds\", void 0);\nexport class GroupCategoryTree extends GroupCategory {\n constructor() {\n super(...arguments);\n this.groups = [];\n this.categories = [];\n }\n get depth() {\n if (this.groups.length > 0) {\n return 0;\n }\n if (this.categories.length == 0) {\n return 0;\n }\n return Math.max(...this.categories.map(c => c.depth)) + 1;\n }\n getAllGroups() {\n return [...this.groups, ...this.categories.flatMap(c => c.getAllGroups())];\n }\n getAllCategories() {\n return [...this.categories, ...this.categories.flatMap(c => c.getAllCategories())];\n }\n getMemberCount({ waitingList } = {}) {\n if (this.getAllGroups().length == 0) {\n return null;\n }\n let count = 0;\n for (const group of this.getAllGroups()) {\n const c = group.getMemberCount({ waitingList });\n if (c === null) {\n return null;\n }\n count += c;\n }\n return count;\n }\n static build(root, organizationPeriod, options = {}) {\n var _a, _b, _c, _d;\n const categories = organizationPeriod.settings.categories;\n const groups = (_a = options === null || options === void 0 ? void 0 : options.groups) !== null && _a !== void 0 ? _a : organizationPeriod.groups;\n const permissions = (_b = options.permissions) !== null && _b !== void 0 ? _b : null;\n const maxDepth = (_c = options.maxDepth) !== null && _c !== void 0 ? _c : null;\n const smartCombine = (_d = options.smartCombine) !== null && _d !== void 0 ? _d : false;\n return GroupCategoryTree.create({\n ...root,\n categories: root.categoryIds.flatMap((id) => {\n const f = categories.find(c => c.id === id);\n if (f) {\n const t = GroupCategoryTree.build(f, organizationPeriod, {\n ...options,\n maxDepth: maxDepth !== null ? maxDepth - 1 : null,\n });\n if (t.categories.length == 0 && t.groups.length == 0 && (smartCombine || (permissions !== null && !permissions.hasResourceAccessRight(PermissionsResourceType.GroupCategories, t.id, AccessRight.OrganizationCreateGroups)))) {\n // Hide empty categories where we cannot create new groups or when smart combine is enabled\n return [];\n }\n // if (smartCombine && !t.categories.find(c => c.categories.length || c.groups.length > 1)) {\n // // If all categories only have groups and no more than 1 group, combine them all\n // t.groups = t.getAllGroups()\n // t.categories = []\n // }\n if (maxDepth !== null && t.depth >= maxDepth && t.categories.length > 0) {\n const categories = [];\n for (const cat of t.categories) {\n if (smartCombine && cat.groups.length === 0 && cat.categories.length === 0) {\n continue;\n }\n // Clone reference\n cat.settings = GroupCategorySettings.create(cat.settings);\n cat.settings.name = t.settings.name + ' - ' + cat.settings.name;\n cat.settings.public = t.settings.public && cat.settings.public;\n categories.push(cat);\n }\n // Concat here\n return categories;\n }\n return [t];\n }\n return [];\n }),\n groups: root.groupIds.flatMap((id) => {\n const g = groups.find(c => c.id === id);\n if (g) {\n // Hide groups we don't have permissions for\n if (permissions && (!g.hasReadAccess(permissions, categories))) {\n return [];\n }\n return [g];\n }\n return [];\n }),\n });\n }\n /**\n * Filter groups\n */\n filter(keep) {\n const categories = this.categories.flatMap((category) => {\n const filtered = category.filter(keep);\n if (filtered.groups.length == 0 && filtered.categories.length == 0) {\n return [];\n }\n return [filtered];\n });\n const groups = this.groups.filter(keep);\n return GroupCategoryTree.create(Object.assign({}, this, {\n categories,\n groups,\n }));\n }\n /**\n * Remove empty categories and non-public categories\n * @param admin Whether not-public categories should be visible\n */\n filterForDisplay(admin = false, useActivities = true, smartCombine = false) {\n const categories = this.categories.flatMap((category) => {\n if (!admin && !category.settings.public) {\n return [];\n }\n const filtered = category.filterForDisplay(admin, useActivities);\n if (smartCombine && filtered.groups.length == 0 && filtered.categories.length == 0) {\n return [];\n }\n return [filtered];\n });\n return GroupCategoryTree.create(Object.assign({}, this, {\n categories: (useActivities || categories.length == 0) ? categories : [categories[0]],\n }));\n }\n}\n__decorate([\n field({ decoder: new ArrayDecoder(Group) })\n], GroupCategoryTree.prototype, \"groups\", void 0);\n__decorate([\n field({ decoder: new ArrayDecoder(GroupCategoryTree) })\n], GroupCategoryTree.prototype, \"categories\", void 0);\n//# sourceMappingURL=GroupCategory.js.map","import { __decorate } from \"tslib\";\nimport { ArrayDecoder, AutoEncoder, BooleanDecoder, EnumDecoder, IntegerDecoder, StringDecoder, field } from '@simonbackx/simple-encoding';\nimport { v4 as uuidv4 } from 'uuid';\nimport { PermissionRoleForResponsibility } from './PermissionRole';\nimport { ResourcePermissions } from './ResourcePermissions';\nimport { PermissionLevel } from './PermissionLevel';\nimport { PermissionsResourceType } from './PermissionsResourceType';\nexport class MemberResponsibility extends AutoEncoder {\n constructor() {\n super(...arguments);\n this.name = '';\n this.description = '';\n this.minimumMembers = null;\n this.maximumMembers = null;\n /**\n * Whether this is a national responsibility or not\n */\n this.organizationBased = true;\n /**\n * Limit this responsibility to specific organizations\n */\n this.organizationTagIds = null;\n /**\n * Whether this responsibility should be assigned to a specific group (or more) of a specific organization\n */\n this.defaultAgeGroupIds = null;\n /**\n * Automatically grant the following permissions\n */\n this.permissions = null;\n /**\n * Automatically grant limited permissions to the group associated with this responsibility\n */\n this.groupPermissionLevel = PermissionLevel.None;\n }\n get isGroupBased() {\n return this.defaultAgeGroupIds !== null;\n }\n createDefaultPermissions(group) {\n var _a;\n return PermissionRoleForResponsibility.create({\n name: this.name + (group ? ` van ${group.settings.name}` : ''),\n responsibilityId: this.id,\n responsibilityGroupId: (_a = group === null || group === void 0 ? void 0 : group.id) !== null && _a !== void 0 ? _a : null,\n });\n }\n getPermissions(groupId) {\n var _a, _b;\n const r = (_b = (_a = this.permissions) === null || _a === void 0 ? void 0 : _a.clone()) !== null && _b !== void 0 ? _b : PermissionRoleForResponsibility.create({\n id: this.id,\n name: this.name,\n level: PermissionLevel.None,\n responsibilityId: this.id,\n responsibilityGroupId: groupId,\n resources: new Map(),\n });\n r.name = this.name;\n r.id = this.id + (groupId ? '-' + groupId : '');\n r.responsibilityId = this.id;\n r.responsibilityGroupId = groupId;\n if (groupId && this.groupPermissionLevel !== PermissionLevel.None) {\n const map = new Map();\n map.set(groupId, ResourcePermissions.create({ level: this.groupPermissionLevel }));\n r.resources.set(PermissionsResourceType.Groups, map);\n }\n return r;\n }\n}\n__decorate([\n field({ decoder: StringDecoder, defaultValue: () => uuidv4() })\n], MemberResponsibility.prototype, \"id\", void 0);\n__decorate([\n field({ decoder: StringDecoder })\n], MemberResponsibility.prototype, \"name\", void 0);\n__decorate([\n field({ decoder: StringDecoder })\n], MemberResponsibility.prototype, \"description\", void 0);\n__decorate([\n field({ decoder: IntegerDecoder, nullable: true })\n], MemberResponsibility.prototype, \"minimumMembers\", void 0);\n__decorate([\n field({ decoder: IntegerDecoder, nullable: true })\n], MemberResponsibility.prototype, \"maximumMembers\", void 0);\n__decorate([\n field({ decoder: BooleanDecoder, optional: true })\n], MemberResponsibility.prototype, \"organizationBased\", void 0);\n__decorate([\n field({ decoder: new ArrayDecoder(StringDecoder), nullable: true, version: 273 })\n], MemberResponsibility.prototype, \"organizationTagIds\", void 0);\n__decorate([\n field({ decoder: new ArrayDecoder(StringDecoder), nullable: true, version: 273 })\n], MemberResponsibility.prototype, \"defaultAgeGroupIds\", void 0);\n__decorate([\n field({ decoder: PermissionRoleForResponsibility, nullable: true, version: 279 })\n], MemberResponsibility.prototype, \"permissions\", void 0);\n__decorate([\n field({ decoder: new EnumDecoder(PermissionLevel), version: 279 })\n], MemberResponsibility.prototype, \"groupPermissionLevel\", void 0);\nexport class PlatformResponsibility extends MemberResponsibility {\n}\n//# sourceMappingURL=MemberResponsibility.js.map","import { __decorate } from \"tslib\";\nimport { AutoEncoder, BooleanDecoder, DateDecoder, IntegerDecoder, StringDecoder, field } from '@simonbackx/simple-encoding';\nimport { v4 as uuidv4 } from 'uuid';\nexport class MemberPlatformMembership extends AutoEncoder {\n constructor() {\n super(...arguments);\n this.startDate = new Date();\n this.endDate = new Date();\n this.expireDate = null;\n this.balanceItemId = null;\n this.price = 0;\n this.priceWithoutDiscount = 0;\n this.freeAmount = 0;\n this.generated = false;\n this.createdAt = new Date();\n this.updatedAt = new Date();\n }\n isActive(date = new Date()) {\n return this.startDate <= date && this.endDate >= date;\n }\n}\n__decorate([\n field({ decoder: StringDecoder, defaultValue: () => uuidv4() })\n], MemberPlatformMembership.prototype, \"id\", void 0);\n__decorate([\n field({ decoder: StringDecoder })\n], MemberPlatformMembership.prototype, \"memberId\", void 0);\n__decorate([\n field({ decoder: StringDecoder })\n], MemberPlatformMembership.prototype, \"membershipTypeId\", void 0);\n__decorate([\n field({ decoder: StringDecoder })\n], MemberPlatformMembership.prototype, \"organizationId\", void 0);\n__decorate([\n field({ decoder: StringDecoder })\n], MemberPlatformMembership.prototype, \"periodId\", void 0);\n__decorate([\n field({ decoder: DateDecoder })\n], MemberPlatformMembership.prototype, \"startDate\", void 0);\n__decorate([\n field({ decoder: DateDecoder })\n], MemberPlatformMembership.prototype, \"endDate\", void 0);\n__decorate([\n field({ decoder: DateDecoder, nullable: true })\n], MemberPlatformMembership.prototype, \"expireDate\", void 0);\n__decorate([\n field({ decoder: StringDecoder, nullable: true })\n], MemberPlatformMembership.prototype, \"balanceItemId\", void 0);\n__decorate([\n field({ decoder: IntegerDecoder })\n], MemberPlatformMembership.prototype, \"price\", void 0);\n__decorate([\n field({ decoder: IntegerDecoder })\n], MemberPlatformMembership.prototype, \"priceWithoutDiscount\", void 0);\n__decorate([\n field({ decoder: IntegerDecoder, version: 336 })\n], MemberPlatformMembership.prototype, \"freeAmount\", void 0);\n__decorate([\n field({ decoder: BooleanDecoder })\n], MemberPlatformMembership.prototype, \"generated\", void 0);\n__decorate([\n field({ decoder: DateDecoder })\n], MemberPlatformMembership.prototype, \"createdAt\", void 0);\n__decorate([\n field({ decoder: DateDecoder })\n], MemberPlatformMembership.prototype, \"updatedAt\", void 0);\n//# sourceMappingURL=MemberPlatformMembership.js.map","import { __decorate } from \"tslib\";\nimport { AutoEncoder, DateDecoder, StringDecoder, field } from '@simonbackx/simple-encoding';\nimport { v4 as uuidv4 } from 'uuid';\nimport { Group } from '../Group';\nexport class MemberResponsibilityRecordBase extends AutoEncoder {\n constructor() {\n super(...arguments);\n this.organizationId = null;\n this.groupId = null;\n this.startDate = new Date();\n this.endDate = null;\n }\n get isActive() {\n return this.startDate < new Date() && (this.endDate === null || this.endDate > new Date());\n }\n}\n__decorate([\n field({ decoder: StringDecoder, defaultValue: () => uuidv4() })\n], MemberResponsibilityRecordBase.prototype, \"id\", void 0);\n__decorate([\n field({ decoder: StringDecoder })\n], MemberResponsibilityRecordBase.prototype, \"memberId\", void 0);\n__decorate([\n field({ decoder: StringDecoder, nullable: true })\n], MemberResponsibilityRecordBase.prototype, \"organizationId\", void 0);\n__decorate([\n field({ decoder: StringDecoder, nullable: true })\n], MemberResponsibilityRecordBase.prototype, \"groupId\", void 0);\n__decorate([\n field({ decoder: StringDecoder })\n], MemberResponsibilityRecordBase.prototype, \"responsibilityId\", void 0);\n__decorate([\n field({ decoder: DateDecoder })\n], MemberResponsibilityRecordBase.prototype, \"startDate\", void 0);\n__decorate([\n field({ decoder: DateDecoder, nullable: true })\n], MemberResponsibilityRecordBase.prototype, \"endDate\", void 0);\nexport class MemberResponsibilityRecord extends MemberResponsibilityRecordBase {\n constructor() {\n super(...arguments);\n this.group = null;\n }\n getName(member, includeOrganization = true) {\n let allResponsibilities = member.family.platform.config.responsibilities;\n let suffix = (this.group ? ' van ' + this.group.settings.name : '');\n if (this.organizationId) {\n const organization = member.family.getOrganization(this.organizationId);\n if (organization && organization.privateMeta) {\n allResponsibilities = [...allResponsibilities, ...organization.privateMeta.responsibilities];\n }\n if (organization && includeOrganization) {\n suffix += ' bij ' + organization.name;\n }\n }\n const responsibility = allResponsibilities.find(r => r.id == this.responsibilityId);\n return (responsibility ? responsibility.name : 'Verwijderde functie') + suffix;\n }\n}\n__decorate([\n field({ decoder: Group, nullable: true, version: 328 })\n], MemberResponsibilityRecord.prototype, \"group\", void 0);\n//# sourceMappingURL=MemberResponsibilityRecord.js.map","import { __decorate } from \"tslib\";\nimport { ArrayDecoder, AutoEncoder, EnumDecoder, field, MapDecoder, StringDecoder } from '@simonbackx/simple-encoding';\nimport { MemberResponsibilityRecordBase } from './members/MemberResponsibilityRecord';\nimport { getPermissionLevelNumber, PermissionLevel } from './PermissionLevel';\nimport { PermissionRole } from './PermissionRole';\nimport { PermissionsResourceType } from './PermissionsResourceType';\nimport { ResourcePermissions } from './ResourcePermissions';\nexport class Permissions extends AutoEncoder {\n constructor() {\n super(...arguments);\n /**\n * Automatically have all permissions (e.g. when someone created a new group)\n * Also allows creating new groups\n */\n this.level = PermissionLevel.None;\n this.roles = [];\n this.responsibilities = [];\n /**\n * Mostly for temporary access\n */\n this.resources = new Map();\n }\n hasRole(role) {\n return this.roles.find(r => r.id === role.id) !== undefined;\n }\n add(other) {\n if (getPermissionLevelNumber(this.level) < getPermissionLevelNumber(other.level)) {\n this.level = other.level;\n }\n for (const role of other.roles) {\n if (!this.roles.find(r => r.id === role.id)) {\n this.roles.push(role.clone());\n }\n }\n for (const responsibility of other.responsibilities) {\n if (!this.responsibilities.find(r => r.id === responsibility.id)) {\n this.responsibilities.push(responsibility.clone());\n }\n }\n }\n get isEmpty() {\n return this.level === PermissionLevel.None && this.roles.length === 0 && this.responsibilities.length === 0 && this.resources.size === 0;\n }\n}\n__decorate([\n field({ decoder: new EnumDecoder(PermissionLevel) })\n], Permissions.prototype, \"level\", void 0);\n__decorate([\n field({ decoder: new ArrayDecoder(PermissionRole), version: 60 })\n], Permissions.prototype, \"roles\", void 0);\n__decorate([\n field({ decoder: new ArrayDecoder(MemberResponsibilityRecordBase), version: 274 })\n], Permissions.prototype, \"responsibilities\", void 0);\n__decorate([\n field({\n decoder: new MapDecoder(new EnumDecoder(PermissionsResourceType), new MapDecoder(\n // ID\n StringDecoder, ResourcePermissions)),\n version: 249,\n })\n], Permissions.prototype, \"resources\", void 0);\n//# sourceMappingURL=Permissions.js.map","import { AccessRightHelper } from './AccessRight';\nimport { PermissionLevel, getPermissionLevelNumber } from './PermissionLevel';\nimport { PermissionRoleForResponsibility } from './PermissionRole';\nimport { PermissionsResourceType } from './PermissionsResourceType';\nimport { ResourcePermissions } from './ResourcePermissions';\n/**\n * Identical to Permissions but with detailed roles, loaded from the organization or platform\n */\nexport class LoadedPermissions {\n constructor(data) {\n this.level = PermissionLevel.None;\n this.roles = [];\n this.resources = new Map();\n Object.assign(this, data);\n }\n static create(data) {\n return new LoadedPermissions(data);\n }\n static buildRoleForResponsibility(groupId, responsibilityData, inheritedResponsibilityRoles) {\n var _a, _b;\n const role = inheritedResponsibilityRoles.find(r => r.responsibilityId === responsibilityData.id && r.responsibilityGroupId === groupId);\n const r = (_b = (_a = responsibilityData.permissions) === null || _a === void 0 ? void 0 : _a.clone()) !== null && _b !== void 0 ? _b : PermissionRoleForResponsibility.create({\n id: responsibilityData.id,\n name: responsibilityData.name,\n level: PermissionLevel.None,\n responsibilityId: responsibilityData.id,\n responsibilityGroupId: groupId,\n resources: new Map(),\n });\n r.name = responsibilityData.name;\n r.id = responsibilityData.id + (groupId ? '-' + groupId : '');\n r.responsibilityId = responsibilityData.id;\n r.responsibilityGroupId = groupId;\n if (groupId && responsibilityData.groupPermissionLevel !== PermissionLevel.None) {\n const map = new Map();\n map.set(groupId, ResourcePermissions.create({ level: responsibilityData.groupPermissionLevel }));\n r.resources.set(PermissionsResourceType.Groups, map);\n }\n if (role) {\n r.id = role.id;\n r.add(role);\n }\n return r;\n }\n static from(permissions, allRoles, inheritedResponsibilityRoles, allResponsibilites) {\n const roles = permissions.roles.flatMap((role) => {\n const d = allRoles.find(a => a.id === role.id);\n if (d) {\n return [d];\n }\n return [];\n });\n for (const responsibility of permissions.responsibilities) {\n if (responsibility.endDate !== null && responsibility.endDate < new Date()) {\n continue;\n }\n if (responsibility.startDate > new Date()) {\n continue;\n }\n const responsibilityData = allResponsibilites.find(r => r.id === responsibility.responsibilityId);\n if (!responsibilityData) {\n continue;\n }\n const r = this.buildRoleForResponsibility(responsibility.groupId, responsibilityData, inheritedResponsibilityRoles);\n roles.push(r);\n }\n const result = this.create({\n level: permissions.level,\n roles,\n resources: permissions.resources,\n });\n return result;\n }\n getResourcePermissions(type, id) {\n const resource = this.resources.get(type);\n if (!resource) {\n return null;\n }\n const rInstance = resource.get(id);\n const allInstance = resource.get('');\n if (!rInstance) {\n if (allInstance) {\n return allInstance;\n }\n return null;\n }\n if (allInstance) {\n return rInstance.merge(allInstance);\n }\n return rInstance;\n }\n getMergedResourcePermissions(type, id) {\n var _a;\n let base = this.getResourcePermissions(type, id);\n for (const role of this.roles) {\n const r = role.getMergedResourcePermissions(type, id);\n if (r) {\n if (base) {\n base.merge(r);\n }\n else {\n base = r;\n }\n }\n }\n if (getPermissionLevelNumber(this.level) > getPermissionLevelNumber((_a = base === null || base === void 0 ? void 0 : base.level) !== null && _a !== void 0 ? _a : PermissionLevel.None)) {\n if (!base) {\n base = ResourcePermissions.create({ level: this.level });\n }\n base.level = this.level;\n }\n return base;\n }\n hasRole(role) {\n return this.roles.find(r => r.id === role.id) !== undefined;\n }\n hasAccess(level) {\n if (getPermissionLevelNumber(this.level) >= getPermissionLevelNumber(level)) {\n // Someone with read / write access for the whole organization, also the same access for each group\n return true;\n }\n for (const f of this.roles) {\n if (f.hasAccess(level)) {\n return true;\n }\n }\n return false;\n }\n hasResourceAccess(type, id, level) {\n var _a, _b;\n if (this.hasAccess(level)) {\n return true;\n }\n if ((_b = (_a = this.getResourcePermissions(type, id)) === null || _a === void 0 ? void 0 : _a.hasAccess(level)) !== null && _b !== void 0 ? _b : false) {\n return true;\n }\n for (const r of this.roles) {\n if (r.hasResourceAccess(type, id, level)) {\n return true;\n }\n }\n return false;\n }\n hasResourceAccessRight(type, id, right) {\n var _a, _b;\n if (this.hasAccessRight(right)) {\n return true;\n }\n if ((_b = (_a = this.getResourcePermissions(type, id)) === null || _a === void 0 ? void 0 : _a.hasAccessRight(right)) !== null && _b !== void 0 ? _b : false) {\n return true;\n }\n for (const r of this.roles) {\n if (r.hasResourceAccessRight(type, id, right)) {\n return true;\n }\n }\n const autoInherit = AccessRightHelper.autoInheritFrom(right);\n for (const r of autoInherit) {\n if (this.hasResourceAccessRight(type, id, r)) {\n return true;\n }\n }\n return false;\n }\n hasAccessRightForAllResourcesOfType(type, right) {\n return this.hasResourceAccessRight(type, '', right);\n }\n hasAccessRightForSomeResource(type, right) {\n if (this.hasAccessRight(right)) {\n return true;\n }\n const resource = this.resources.get(type);\n if (resource) {\n for (const r of resource.values()) {\n if (r.hasAccessRight(right)) {\n return true;\n }\n }\n }\n for (const r of this.roles) {\n if (r.hasAccessRightForSomeResource(type, right)) {\n return true;\n }\n }\n return false;\n }\n hasReadAccess() {\n return this.hasAccess(PermissionLevel.Read);\n }\n hasWriteAccess() {\n return this.hasAccess(PermissionLevel.Write);\n }\n hasFullAccess() {\n return this.hasAccess(PermissionLevel.Full);\n }\n hasAccessRight(right) {\n const gl = AccessRightHelper.autoGrantRightForLevel(right);\n if (gl && this.hasAccess(gl)) {\n return true;\n }\n for (const f of this.roles) {\n if (f.hasAccessRight(right)) {\n return true;\n }\n }\n const autoInherit = AccessRightHelper.autoInheritFrom(right);\n for (const r of autoInherit) {\n if (this.hasAccessRight(r)) {\n return true;\n }\n }\n return false;\n }\n merge(other) {\n const p = LoadedPermissions.create({});\n p.level = this.level;\n p.roles = this.roles.slice();\n p.resources = new Map(this.resources);\n if (getPermissionLevelNumber(other.level) > getPermissionLevelNumber(p.level)) {\n p.level = other.level;\n }\n for (const [type, r] of other.resources) {\n for (const [id, resource] of r) {\n if (!p.resources.has(type)) {\n p.resources.set(type, new Map());\n }\n const current = p.resources.get(type).get(id);\n if (!current) {\n p.resources.get(type).set(id, resource);\n }\n else {\n p.resources.get(type).set(id, current.merge(resource));\n }\n }\n }\n for (const role of other.roles) {\n const current = p.roles.find(r => r.id === role.id);\n if (!current) {\n p.roles.push(role);\n }\n }\n return p;\n }\n get isEmpty() {\n return this.level === PermissionLevel.None && (this.roles.length === 0 || this.roles.every(r => r.isEmpty)) && this.resources.size === 0;\n }\n}\n//# sourceMappingURL=LoadedPermissions.js.map","import { __decorate } from \"tslib\";\nimport { ArrayDecoder, AutoEncoder, BooleanDecoder, EmailDecoder, field, RecordDecoder, StringDecoder } from '@simonbackx/simple-encoding';\nimport { Formatter } from '@stamhoofd/utility';\nimport { v4 as uuidv4 } from 'uuid';\nexport class EmailInformation extends AutoEncoder {\n constructor() {\n super(...arguments);\n this.markedAsSpam = false;\n this.hardBounce = false;\n this.unsubscribedMarketing = false;\n this.unsubscribedAll = false;\n }\n}\n__decorate([\n field({ decoder: StringDecoder })\n], EmailInformation.prototype, \"email\", void 0);\n__decorate([\n field({ decoder: BooleanDecoder })\n], EmailInformation.prototype, \"markedAsSpam\", void 0);\n__decorate([\n field({ decoder: BooleanDecoder })\n], EmailInformation.prototype, \"hardBounce\", void 0);\n__decorate([\n field({ decoder: BooleanDecoder })\n], EmailInformation.prototype, \"unsubscribedMarketing\", void 0);\n__decorate([\n field({ decoder: BooleanDecoder })\n], EmailInformation.prototype, \"unsubscribedAll\", void 0);\nexport class Replacement extends AutoEncoder {\n}\n__decorate([\n field({ decoder: StringDecoder })\n], Replacement.prototype, \"token\", void 0);\n__decorate([\n field({ decoder: StringDecoder })\n], Replacement.prototype, \"value\", void 0);\n__decorate([\n field({ decoder: StringDecoder, optional: true })\n], Replacement.prototype, \"html\", void 0);\nexport class Recipient extends AutoEncoder {\n constructor() {\n super(...arguments);\n this.firstName = null;\n this.lastName = null;\n this.replacements = [];\n this.headers = null;\n /**\n * Set this to create a replacement called signInUrl, which will auto sign in/sign up the user\n * Note: the e-mail is matched with the user id, if it doesn't match, the sign-in button will contain a simple (non smart) url\n */\n this.userId = null;\n /// For reference and filtering\n /**\n * @deprecated\n * Use types instead\n */\n this.type = null;\n /// For reference and filtering\n this.types = [];\n }\n getDefaultReplacements() {\n var _a, _b;\n return [\n Replacement.create({\n token: 'firstName',\n value: (_a = this.firstName) !== null && _a !== void 0 ? _a : '',\n }),\n Replacement.create({\n token: 'lastName',\n value: (_b = this.lastName) !== null && _b !== void 0 ? _b : '',\n }),\n Replacement.create({\n token: 'email',\n value: this.email,\n }),\n Replacement.create({\n token: 'greeting',\n value: this.firstName ? `Dag ${this.firstName},` : 'Hallo!',\n }),\n ];\n }\n merge(recipient) {\n var _a;\n this.firstName = this.firstName !== null && this.firstName.length > 0 ? this.firstName : recipient.firstName;\n this.lastName = this.lastName !== null && this.lastName.length > 0 ? this.lastName : recipient.lastName;\n for (const replacement of recipient.replacements) {\n const existing = this.replacements.find(r => r.token == replacement.token);\n if (!existing) {\n this.replacements.push(replacement);\n }\n else {\n if (existing.value.length == 0) {\n existing.value = replacement.value;\n }\n }\n }\n this.userId = (_a = this.userId) !== null && _a !== void 0 ? _a : recipient.userId;\n this.types = Formatter.uniqueArray(this.types.concat(recipient.types));\n }\n /**\n * Remove duplicate replacements, keeping the last added replacements\n */\n removeDuplicates() {\n const replacements = [];\n for (const replacement of this.replacements.slice().reverse()) {\n if (!replacements.find(r => r.token === replacement.token)) {\n replacements.unshift(replacement);\n }\n }\n this.replacements = replacements;\n }\n}\n__decorate([\n field({ decoder: StringDecoder, nullable: true })\n], Recipient.prototype, \"firstName\", void 0);\n__decorate([\n field({ decoder: StringDecoder, nullable: true, version: 112 })\n], Recipient.prototype, \"lastName\", void 0);\n__decorate([\n field({ decoder: EmailDecoder })\n], Recipient.prototype, \"email\", void 0);\n__decorate([\n field({ decoder: new ArrayDecoder(Replacement) })\n], Recipient.prototype, \"replacements\", void 0);\n__decorate([\n field({ decoder: new RecordDecoder(StringDecoder, StringDecoder), version: 209, nullable: true })\n], Recipient.prototype, \"headers\", void 0);\n__decorate([\n field({ decoder: StringDecoder, nullable: true, version: 80 })\n], Recipient.prototype, \"userId\", void 0);\n__decorate([\n field({ decoder: StringDecoder, nullable: true, version: 96 })\n], Recipient.prototype, \"type\", void 0);\n__decorate([\n field({ decoder: new ArrayDecoder(StringDecoder), optional: true })\n], Recipient.prototype, \"types\", void 0);\nexport class EmailAttachment extends AutoEncoder {\n get bytes() {\n // Calculates bytes of base64 string\n return Math.ceil((this.content.length / 4) * 3) - (this.content.endsWith('==') ? 2 : this.content.endsWith('=') ? 1 : 0);\n }\n}\n__decorate([\n field({ decoder: StringDecoder, defaultValue: () => uuidv4() })\n], EmailAttachment.prototype, \"id\", void 0);\n__decorate([\n field({ decoder: StringDecoder })\n], EmailAttachment.prototype, \"filename\", void 0);\n__decorate([\n field({ decoder: StringDecoder })\n], EmailAttachment.prototype, \"contentType\", void 0);\n__decorate([\n field({ decoder: StringDecoder })\n], EmailAttachment.prototype, \"content\", void 0);\nexport class EmailRequest extends AutoEncoder {\n constructor() {\n super(...arguments);\n this.text = null;\n this.html = null;\n this.attachments = [];\n this.defaultReplacements = [];\n }\n}\n__decorate([\n field({ decoder: StringDecoder })\n], EmailRequest.prototype, \"emailId\", void 0);\n__decorate([\n field({ decoder: StringDecoder })\n], EmailRequest.prototype, \"subject\", void 0);\n__decorate([\n field({ decoder: new ArrayDecoder(Recipient) })\n], EmailRequest.prototype, \"recipients\", void 0);\n__decorate([\n field({ decoder: StringDecoder, nullable: true })\n], EmailRequest.prototype, \"text\", void 0);\n__decorate([\n field({ decoder: StringDecoder, nullable: true })\n], EmailRequest.prototype, \"html\", void 0);\n__decorate([\n field({ decoder: new ArrayDecoder(EmailAttachment), version: 11 })\n], EmailRequest.prototype, \"attachments\", void 0);\n__decorate([\n field({ decoder: new ArrayDecoder(Replacement), version: 220 })\n], EmailRequest.prototype, \"defaultReplacements\", void 0);\n//# sourceMappingURL=EmailRequest.js.map","import { __decorate } from \"tslib\";\nimport { AutoEncoder, BooleanDecoder, field, StringDecoder } from '@simonbackx/simple-encoding';\nimport { v4 as uuidv4 } from 'uuid';\nexport class OrganizationEmail extends AutoEncoder {\n constructor() {\n super(...arguments);\n /**\n * Name of this person / group\n */\n this.name = null;\n /**\n * Whether this e-mail might get used as a global default one when we could not find a different one\n */\n this.default = false;\n /**\n * Only usable by users with full permissions\n */\n this.restricted = false;\n }\n}\n__decorate([\n field({ decoder: StringDecoder, defaultValue: () => uuidv4() })\n], OrganizationEmail.prototype, \"id\", void 0);\n__decorate([\n field({ decoder: StringDecoder, nullable: true })\n], OrganizationEmail.prototype, \"name\", void 0);\n__decorate([\n field({ decoder: StringDecoder })\n], OrganizationEmail.prototype, \"email\", void 0);\n__decorate([\n field({ decoder: BooleanDecoder })\n], OrganizationEmail.prototype, \"default\", void 0);\n__decorate([\n field({ decoder: BooleanDecoder })\n], OrganizationEmail.prototype, \"restricted\", void 0);\n//# sourceMappingURL=OrganizationEmail.js.map","import { __decorate } from \"tslib\";\nimport { AutoEncoder, DateDecoder, EnumDecoder, MapDecoder, NumberDecoder, StringDecoder, field } from '@simonbackx/simple-encoding';\nexport var SetupStepType;\n(function (SetupStepType) {\n SetupStepType[\"Responsibilities\"] = \"Functions\";\n SetupStepType[\"Companies\"] = \"Companies\";\n SetupStepType[\"Groups\"] = \"Groups\";\n SetupStepType[\"Premises\"] = \"Premises\";\n SetupStepType[\"Emails\"] = \"Emails\";\n SetupStepType[\"Payment\"] = \"Payment\";\n SetupStepType[\"Registrations\"] = \"Registrations\";\n})(SetupStepType || (SetupStepType = {}));\nexport const minimumRegistrationCount = 1;\nexport class SetupStepReview extends AutoEncoder {\n}\n__decorate([\n field({ decoder: DateDecoder })\n], SetupStepReview.prototype, \"date\", void 0);\n__decorate([\n field({ decoder: StringDecoder })\n], SetupStepReview.prototype, \"userName\", void 0);\n__decorate([\n field({ decoder: StringDecoder })\n], SetupStepReview.prototype, \"userId\", void 0);\nexport class SetupStep extends AutoEncoder {\n constructor() {\n super(...arguments);\n /**\n * @deprecated\n * Removed\n */\n this.__reviewedAt = null;\n /**\n * When the item was marked as reviewed.\n */\n this.review = null;\n /**\n * When the finished and total steps last have been updated.\n */\n this.updatedAt = new Date();\n this.finishedSteps = 0;\n this.totalSteps = 1;\n }\n get isDone() {\n return this.finishedSteps >= this.totalSteps;\n }\n get isReviewed() {\n return this.review !== null;\n }\n get isComplete() {\n return this.isDone && this.isReviewed;\n }\n get progress() {\n if (!this.totalSteps)\n return 1;\n return this.finishedSteps / this.totalSteps;\n }\n get priority() {\n const isDone = this.isDone;\n const isReviewed = this.isReviewed;\n if (isDone && isReviewed) {\n return 0;\n }\n if (isDone && !isReviewed) {\n return 1;\n }\n if (!isDone && isReviewed) {\n return 2;\n }\n return 3;\n }\n markReviewed({ userId, userName }) {\n const now = new Date();\n if (this.review === null) {\n this.review = SetupStepReview.create({\n date: now,\n userName,\n userId,\n });\n }\n }\n resetReviewed() {\n this.review = null;\n }\n update(finishedSteps, totalSteps) {\n if (finishedSteps === this.finishedSteps && totalSteps === this.totalSteps) {\n return;\n }\n const now = new Date();\n if (totalSteps === 0) {\n finishedSteps = 1;\n totalSteps = 1;\n }\n if (this.updatedAt === null || (now.getTime() > this.updatedAt.getTime())) {\n this.finishedSteps = finishedSteps;\n this.totalSteps = totalSteps;\n this.updatedAt = now;\n }\n }\n}\n__decorate([\n field({ decoder: DateDecoder, nullable: true, field: 'reviewedAt', optional: true })\n], SetupStep.prototype, \"__reviewedAt\", void 0);\n__decorate([\n field({ decoder: SetupStepReview, nullable: true, version: 326 })\n], SetupStep.prototype, \"review\", void 0);\n__decorate([\n field({ decoder: DateDecoder })\n], SetupStep.prototype, \"updatedAt\", void 0);\n__decorate([\n field({ decoder: NumberDecoder })\n], SetupStep.prototype, \"finishedSteps\", void 0);\n__decorate([\n field({ decoder: NumberDecoder })\n], SetupStep.prototype, \"totalSteps\", void 0);\nexport class SetupSteps extends AutoEncoder {\n constructor() {\n super(...arguments);\n this.steps = new Map();\n }\n get(type) {\n return this.steps.get(type);\n }\n getAll() {\n const result = [];\n for (const value of Object.values(SetupStepType)) {\n const step = this.steps.get(value);\n if (step) {\n result.push({ type: value, step });\n }\n }\n return result;\n }\n isEmpty() {\n return this.steps.size === 0;\n }\n areAllComplete() {\n return Array.from(this.steps.values()).every(s => s.isComplete);\n }\n getStepsToDoOverview() {\n const result = [];\n for (const value of Object.values(SetupStepType)) {\n const step = this.steps.get(value);\n if (step) {\n // filter out steps that are done and reviewed\n if (step.isDone && step.isReviewed) {\n continue;\n }\n result.push({ type: value, step });\n }\n }\n return result;\n }\n getProgress() {\n const total = this.steps.size;\n const completed = Array.from(this.steps.values()).filter(s => s.isComplete).length;\n return { completed, total };\n }\n markReviewed(stepType, by) {\n const step = this.steps.get(stepType);\n if (step) {\n step.markReviewed(by);\n }\n }\n resetReviewed(stepType) {\n const step = this.steps.get(stepType);\n if (step) {\n step.resetReviewed();\n }\n }\n update(stepType, { finishedSteps, totalSteps }) {\n const step = this.steps.get(stepType);\n if (step) {\n step.update(finishedSteps, totalSteps);\n }\n else {\n this.steps.set(stepType, SetupStep.create({ finishedSteps, totalSteps }));\n }\n }\n}\n__decorate([\n field({ decoder: new MapDecoder(new EnumDecoder(SetupStepType), SetupStep), version: 324 })\n], SetupSteps.prototype, \"steps\", void 0);\n//# sourceMappingURL=SetupSteps.js.map","import { __decorate } from \"tslib\";\nimport { ArrayDecoder, AutoEncoder, StringDecoder, field } from '@simonbackx/simple-encoding';\nimport { v4 as uuidv4 } from 'uuid';\nimport { Group, GroupStatus } from './Group';\nimport { GroupCategory, GroupCategorySettings, GroupCategoryTree } from './GroupCategory';\nimport { RegistrationPeriodBase } from './RegistrationPeriodBase';\nimport { SetupSteps } from './SetupSteps';\nexport class RegistrationPeriodSettings extends AutoEncoder {\n}\nexport class RegistrationPeriod extends RegistrationPeriodBase {\n constructor() {\n super(...arguments);\n this.settings = RegistrationPeriodSettings.create({});\n }\n}\n__decorate([\n field({ decoder: RegistrationPeriodSettings })\n], RegistrationPeriod.prototype, \"settings\", void 0);\nexport class OrganizationRegistrationPeriodSettings extends AutoEncoder {\n constructor() {\n var _a, _b;\n super(...arguments);\n /**\n * All the available categories\n */\n this.categories = [GroupCategory.create({ id: 'root' })]; // we use ID root here because this ID needs to stay the same since it won't be saved\n /**\n * We use one invisible root category to simplify the difference between non-root and root category\n */\n this.rootCategoryId = (_b = (_a = this.categories[0]) === null || _a === void 0 ? void 0 : _a.id) !== null && _b !== void 0 ? _b : '';\n }\n get rootCategory() {\n return this.categories.find(c => c.id === this.rootCategoryId);\n }\n}\n__decorate([\n field({ decoder: new ArrayDecoder(GroupCategory) })\n], OrganizationRegistrationPeriodSettings.prototype, \"categories\", void 0);\n__decorate([\n field({ decoder: StringDecoder })\n], OrganizationRegistrationPeriodSettings.prototype, \"rootCategoryId\", void 0);\nexport class OrganizationRegistrationPeriod extends AutoEncoder {\n constructor() {\n super(...arguments);\n this.settings = OrganizationRegistrationPeriodSettings.create({});\n this.groups = [];\n this.setupSteps = SetupSteps.create({});\n }\n /**\n * Get all groups that are in a category\n */\n get availableCategories() {\n return this.adminCategoryTree.getAllCategories();\n }\n /**\n * (todo) Contains the fully build hierarchy without the need for ID lookups. Try not to use this tree when modifying it.\n */\n get categoryTree() {\n return this.getCategoryTree();\n }\n get publicCategoryTree() {\n return this.getCategoryTree({ smartCombine: true });\n }\n get adminCategoryTree() {\n return this.getCategoryTree({ admin: true });\n }\n get waitingLists() {\n return (this.groups.map(g => g.waitingList).filter(g => g !== null)).filter((value, index, self) => self.findIndex(v => value.id === v.id) === index);\n }\n get rootCategory() {\n return this.settings.categories.find(c => c.id === this.settings.rootCategoryId);\n }\n /**\n * Contains the fully build hierarchy without the need for ID lookups. Try not to use this tree when modifying it.\n *\n * For registration members perspective, try to use options.admin instead of options.permissions.\n * options.permissions is only used if you want to hide groups and empty categories that you don't have permissions for.\n */\n getCategoryTree(options) {\n var _a, _b, _c;\n const root = this.rootCategory;\n if (root) {\n let tree = GroupCategoryTree.build(root, this, {\n groups: (options === null || options === void 0 ? void 0 : options.filterGroups) ? this.groups.filter(options.filterGroups) : undefined,\n permissions: options === null || options === void 0 ? void 0 : options.permissions,\n maxDepth: options === null || options === void 0 ? void 0 : options.maxDepth,\n smartCombine: options === null || options === void 0 ? void 0 : options.smartCombine,\n });\n if (!(options === null || options === void 0 ? void 0 : options.permissions)) {\n // Hide non public items\n tree = tree.filterForDisplay((_a = options === null || options === void 0 ? void 0 : options.admin) !== null && _a !== void 0 ? _a : false, ((_c = (_b = options === null || options === void 0 ? void 0 : options.organization) === null || _b === void 0 ? void 0 : _b.meta.packages.useActivities) !== null && _c !== void 0 ? _c : true) || (options === null || options === void 0 ? void 0 : options.admin), options === null || options === void 0 ? void 0 : options.smartCombine);\n }\n if (tree.categories.length == 0 && tree.groups.length > 0) {\n tree.settings.name = 'Inschrijvingsgroepen';\n return GroupCategoryTree.create({\n settings: GroupCategorySettings.create({\n name: '',\n }),\n categories: [tree],\n });\n }\n const usedGroups = tree.getAllGroups();\n const unusedGroups = this.groups.filter(g => !usedGroups.includes(g));\n if (unusedGroups.length > 0) {\n console.warn('Unused groups found in category tree');\n }\n return tree;\n }\n // Broken setup here\n console.warn('Root category ID is missing in categories. Migration might be needed');\n return GroupCategoryTree.create({});\n }\n isCategoryDeactivated(organization, category) {\n if (organization.meta.packages.useActivities) {\n return false;\n }\n const cleanedTree = this.getCategoryTree({ maxDepth: 1 });\n if (cleanedTree.categories.find(c => c.id === category.id)) {\n return false;\n }\n return true;\n }\n duplicate(newPeriod) {\n // Create new groups + map old to new groups\n const groupMap = new Map();\n const categoryMap = new Map();\n const newOrganizationPeriod = OrganizationRegistrationPeriod.create({\n period: newPeriod,\n });\n const yearDifference = newPeriod.startDate.getFullYear() - this.period.startDate.getFullYear();\n for (const group of this.groups) {\n const newGroup = Group.create({\n ...group,\n id: undefined,\n periodId: newPeriod.id,\n settings: group.settings.clone(),\n });\n // Increase all dates with exactly one year\n if (newGroup.settings.registrationStartDate) {\n newGroup.settings.registrationStartDate.setFullYear(newGroup.settings.registrationStartDate.getFullYear() + yearDifference);\n }\n if (newGroup.settings.registrationEndDate) {\n newGroup.settings.registrationEndDate.setFullYear(newGroup.settings.registrationEndDate.getFullYear() + yearDifference);\n }\n // Force close\n newGroup.status = GroupStatus.Closed;\n groupMap.set(group.id, newGroup.id);\n newOrganizationPeriod.groups.push(newGroup);\n }\n for (const category of this.settings.categories) {\n const newCategory = category.clone();\n newCategory.id = uuidv4();\n newCategory.groupIds = category.groupIds.map(groupId => groupMap.get(groupId)).filter(id => id);\n categoryMap.set(category.id, newCategory.id);\n newOrganizationPeriod.settings.categories.push(newCategory);\n }\n // Update category ids\n for (const category of newOrganizationPeriod.settings.categories) {\n category.categoryIds = category.categoryIds.map(categoryId => categoryMap.get(categoryId)).filter(id => id);\n }\n // Update root category id\n newOrganizationPeriod.settings.rootCategoryId = categoryMap.get(this.settings.rootCategoryId);\n return newOrganizationPeriod;\n }\n}\n__decorate([\n field({ decoder: StringDecoder, defaultValue: () => uuidv4() })\n], OrganizationRegistrationPeriod.prototype, \"id\", void 0);\n__decorate([\n field({ decoder: RegistrationPeriod })\n], OrganizationRegistrationPeriod.prototype, \"period\", void 0);\n__decorate([\n field({ decoder: OrganizationRegistrationPeriodSettings })\n], OrganizationRegistrationPeriod.prototype, \"settings\", void 0);\n__decorate([\n field({ decoder: new ArrayDecoder(Group) })\n], OrganizationRegistrationPeriod.prototype, \"groups\", void 0);\n__decorate([\n field({ decoder: SetupSteps, version: 324 })\n], OrganizationRegistrationPeriod.prototype, \"setupSteps\", void 0);\nexport class RegistrationPeriodList extends AutoEncoder {\n constructor() {\n super(...arguments);\n this.organizationPeriods = [];\n this.periods = [];\n }\n}\n__decorate([\n field({ decoder: new ArrayDecoder(OrganizationRegistrationPeriod) })\n], RegistrationPeriodList.prototype, \"organizationPeriods\", void 0);\n__decorate([\n field({ decoder: new ArrayDecoder(RegistrationPeriod) })\n], RegistrationPeriodList.prototype, \"periods\", void 0);\n//# sourceMappingURL=RegistrationPeriod.js.map","import { __decorate } from \"tslib\";\nimport { ArrayDecoder, AutoEncoder, BooleanDecoder, DateDecoder, EnumDecoder, field, IntegerDecoder, MapDecoder, NumberDecoder, StringDecoder } from '@simonbackx/simple-encoding';\nimport { v4 as uuidv4 } from 'uuid';\nimport { Colors } from '@stamhoofd/utility';\nimport { DefaultAgeGroup } from './DefaultAgeGroup';\nimport { Replacement } from './endpoints/EmailRequest';\nimport { Image } from './files/Image';\nimport { ReduceablePrice } from './GroupSettings';\nimport { MemberResponsibility } from './MemberResponsibility';\nimport { DataPermissionsSettings, FinancialSupportSettings, OrganizationRecordsConfiguration } from './members/OrganizationRecordsConfiguration';\nimport { OrganizationEmail } from './OrganizationEmail';\nimport { PermissionRoleDetailed } from './PermissionRole';\nimport { RegistrationPeriod } from './RegistrationPeriod';\nimport { RichText } from './RichText';\nexport class PlatformPrivateConfig extends AutoEncoder {\n constructor() {\n super(...arguments);\n this.roles = [];\n this.emails = [];\n }\n}\n__decorate([\n field({ decoder: new ArrayDecoder(PermissionRoleDetailed) })\n], PlatformPrivateConfig.prototype, \"roles\", void 0);\n__decorate([\n field({ decoder: new ArrayDecoder(OrganizationEmail), version: 272 })\n], PlatformPrivateConfig.prototype, \"emails\", void 0);\nexport var OrganizationTagType;\n(function (OrganizationTagType) {\n OrganizationTagType[\"Tag\"] = \"Tag\";\n OrganizationTagType[\"Verbond\"] = \"Verbond\";\n OrganizationTagType[\"Gewest\"] = \"Gewest\";\n OrganizationTagType[\"Gouw\"] = \"Gouw\";\n})(OrganizationTagType || (OrganizationTagType = {}));\nexport function getOrganizationTagTypeName(type) {\n switch (type) {\n case OrganizationTagType.Tag:\n return 'tag';\n case OrganizationTagType.Verbond:\n return 'verbond';\n case OrganizationTagType.Gewest:\n return 'gewest';\n case OrganizationTagType.Gouw:\n return 'gouw';\n }\n}\nexport function getOrganizationTagTypePluralName(type) {\n switch (type) {\n case OrganizationTagType.Tag:\n return 'tags';\n case OrganizationTagType.Verbond:\n return 'verbonden';\n case OrganizationTagType.Gewest:\n return 'gewesten';\n case OrganizationTagType.Gouw:\n return 'gouwen';\n }\n}\nexport class OrganizationTag extends AutoEncoder {\n constructor() {\n super(...arguments);\n this.name = '';\n this.description = '';\n this.organizationCount = 0;\n this.childTags = [];\n }\n get type() {\n if (this.name.startsWith('Verbond ')) {\n return OrganizationTagType.Verbond;\n }\n if (this.name.startsWith('Gewest ')) {\n return OrganizationTagType.Gewest;\n }\n return OrganizationTagType.Tag;\n }\n getChildType(allTags) {\n if (this.childTags.length === 0) {\n return OrganizationTagType.Tag;\n }\n const childTag = allTags.find(t => t.id === this.childTags[0]);\n if (!childTag) {\n return OrganizationTagType.Tag;\n }\n return childTag.type;\n }\n}\n__decorate([\n field({ decoder: StringDecoder, defaultValue: () => uuidv4() })\n], OrganizationTag.prototype, \"id\", void 0);\n__decorate([\n field({ decoder: StringDecoder })\n], OrganizationTag.prototype, \"name\", void 0);\n__decorate([\n field({ decoder: StringDecoder, version: 341 })\n], OrganizationTag.prototype, \"description\", void 0);\n__decorate([\n field({ decoder: IntegerDecoder, version: 341 })\n], OrganizationTag.prototype, \"organizationCount\", void 0);\n__decorate([\n field({ decoder: new ArrayDecoder(StringDecoder), version: 341 })\n], OrganizationTag.prototype, \"childTags\", void 0);\nexport class PlatformPremiseType extends AutoEncoder {\n constructor() {\n super(...arguments);\n this.name = '';\n this.description = '';\n /**\n * Maximum number of premises allowed for this premise type\n */\n this.max = null;\n /**\n * Minimum number of premises allowed for this premise type\n */\n this.min = null;\n }\n}\n__decorate([\n field({ decoder: StringDecoder, defaultValue: () => uuidv4() })\n], PlatformPremiseType.prototype, \"id\", void 0);\n__decorate([\n field({ decoder: StringDecoder })\n], PlatformPremiseType.prototype, \"name\", void 0);\n__decorate([\n field({ decoder: StringDecoder, version: 319 })\n], PlatformPremiseType.prototype, \"description\", void 0);\n__decorate([\n field({ decoder: IntegerDecoder, nullable: true, version: 319 })\n], PlatformPremiseType.prototype, \"max\", void 0);\n__decorate([\n field({ decoder: IntegerDecoder, nullable: true, version: 319 })\n], PlatformPremiseType.prototype, \"min\", void 0);\nexport class PlatformMembershipTypeConfigPrice extends AutoEncoder {\n constructor() {\n super(...arguments);\n this.startDate = null;\n /**\n *@deprecated\n */\n this._price = 0;\n // key = tag id or an empty string for the default reducable price\n this.prices = new Map([['', ReduceablePrice.create({ price: 0 })]]);\n /**\n * If you set this, it will be possible to choose a custom start and end date within the startDate - endDate period\n */\n this.pricePerDay = 0;\n }\n getBasePrice(tagIds, shouldApplyReducedPrice) {\n let result = null;\n for (const tagId of tagIds.concat([''])) {\n const price = this.prices.get(tagId);\n if (!price)\n continue;\n const priceForMember = price.getPrice(shouldApplyReducedPrice);\n if (result === null || priceForMember < result) {\n result = priceForMember;\n }\n }\n return result !== null && result !== void 0 ? result : 0;\n }\n calculatePrice(tagIds, shouldApplyReducedPrice, days) {\n const basePrice = this.getBasePrice(tagIds, shouldApplyReducedPrice);\n return this.pricePerDay * days + basePrice;\n }\n}\n__decorate([\n field({ decoder: StringDecoder, defaultValue: () => uuidv4() })\n], PlatformMembershipTypeConfigPrice.prototype, \"id\", void 0);\n__decorate([\n field({ decoder: DateDecoder, nullable: true })\n], PlatformMembershipTypeConfigPrice.prototype, \"startDate\", void 0);\n__decorate([\n field({ decoder: IntegerDecoder, field: 'price', optional: true })\n], PlatformMembershipTypeConfigPrice.prototype, \"_price\", void 0);\n__decorate([\n field({ decoder: new MapDecoder(StringDecoder, ReduceablePrice), version: 329 })\n], PlatformMembershipTypeConfigPrice.prototype, \"prices\", void 0);\n__decorate([\n field({ decoder: IntegerDecoder })\n], PlatformMembershipTypeConfigPrice.prototype, \"pricePerDay\", void 0);\nexport class PlatformMembershipTypeConfig extends AutoEncoder {\n constructor() {\n super(...arguments);\n this.startDate = new Date();\n this.endDate = new Date();\n this.expireDate = null;\n this.amountFree = 0;\n this.prices = [PlatformMembershipTypeConfigPrice.create({})];\n }\n getPriceConfigForDate(date) {\n if (date === undefined) {\n throw new Error('Date is required');\n }\n const sorted = this.prices.slice().sort((a, b) => { var _a, _b; return ((_a = a.startDate) !== null && _a !== void 0 ? _a : new Date(0)).getTime() - ((_b = b.startDate) !== null && _b !== void 0 ? _b : new Date(0)).getTime(); });\n let result = sorted[0];\n for (const priceConfig of sorted) {\n if (priceConfig.startDate === null || date >= priceConfig.startDate) {\n result = priceConfig;\n }\n }\n return result;\n }\n getPrice(date, tagIds, shouldApplyReducedPrice) {\n return this.getPriceConfigForDate(date).getBasePrice(tagIds, shouldApplyReducedPrice);\n }\n}\n__decorate([\n field({ decoder: DateDecoder })\n], PlatformMembershipTypeConfig.prototype, \"startDate\", void 0);\n__decorate([\n field({ decoder: DateDecoder })\n], PlatformMembershipTypeConfig.prototype, \"endDate\", void 0);\n__decorate([\n field({ decoder: DateDecoder, nullable: true })\n], PlatformMembershipTypeConfig.prototype, \"expireDate\", void 0);\n__decorate([\n field({ decoder: IntegerDecoder })\n], PlatformMembershipTypeConfig.prototype, \"amountFree\", void 0);\n__decorate([\n field({ decoder: new ArrayDecoder(PlatformMembershipTypeConfigPrice) })\n], PlatformMembershipTypeConfig.prototype, \"prices\", void 0);\nexport var PlatformMembershipTypeBehaviour;\n(function (PlatformMembershipTypeBehaviour) {\n /**\n * A membership that is valid for a certain period\n */\n PlatformMembershipTypeBehaviour[\"Period\"] = \"Period\";\n /**\n * A membership that is valid for a certain number of days\n */\n PlatformMembershipTypeBehaviour[\"Days\"] = \"Days\";\n})(PlatformMembershipTypeBehaviour || (PlatformMembershipTypeBehaviour = {}));\nexport class PlatformMembershipType extends AutoEncoder {\n constructor() {\n super(...arguments);\n this.name = '';\n this.description = '';\n this.behaviour = PlatformMembershipTypeBehaviour.Period;\n /**\n * Settings per period\n */\n this.periods = new Map();\n /**\n * Only allow organizations with these tags to use this membership type\n */\n this.requiredTagIds = null;\n }\n getPrice(periodId, date, tagIds, isReduced) {\n const period = this.periods.get(periodId);\n if (!period) {\n return null;\n }\n return period.getPrice(date, tagIds, isReduced);\n }\n}\n__decorate([\n field({ decoder: StringDecoder, defaultValue: () => uuidv4() })\n], PlatformMembershipType.prototype, \"id\", void 0);\n__decorate([\n field({ decoder: StringDecoder })\n], PlatformMembershipType.prototype, \"name\", void 0);\n__decorate([\n field({ decoder: StringDecoder })\n], PlatformMembershipType.prototype, \"description\", void 0);\n__decorate([\n field({ decoder: new EnumDecoder(PlatformMembershipTypeBehaviour) })\n], PlatformMembershipType.prototype, \"behaviour\", void 0);\n__decorate([\n field({ decoder: new MapDecoder(StringDecoder, PlatformMembershipTypeConfig) })\n], PlatformMembershipType.prototype, \"periods\", void 0);\n__decorate([\n field({ decoder: new ArrayDecoder(StringDecoder), nullable: true })\n], PlatformMembershipType.prototype, \"requiredTagIds\", void 0);\nexport class PlatformEventType extends AutoEncoder {\n constructor() {\n super(...arguments);\n this.name = '';\n this.description = '';\n /**\n * Maximum amount that each organization can have this type\n */\n this.maximum = null;\n /**\n * Maximum number of days allowed for this event type\n */\n this.maximumDays = null;\n /**\n * Minimum number of days allowed for this event type\n */\n this.minimumDays = null;\n this.isLocationRequired = false;\n }\n}\n__decorate([\n field({ decoder: StringDecoder, defaultValue: () => uuidv4() })\n], PlatformEventType.prototype, \"id\", void 0);\n__decorate([\n field({ decoder: StringDecoder })\n], PlatformEventType.prototype, \"name\", void 0);\n__decorate([\n field({ decoder: StringDecoder })\n], PlatformEventType.prototype, \"description\", void 0);\n__decorate([\n field({ decoder: IntegerDecoder, nullable: true })\n], PlatformEventType.prototype, \"maximum\", void 0);\n__decorate([\n field({ decoder: IntegerDecoder, nullable: true, version: 288 })\n], PlatformEventType.prototype, \"maximumDays\", void 0);\n__decorate([\n field({ decoder: IntegerDecoder, nullable: true, version: 288 })\n], PlatformEventType.prototype, \"minimumDays\", void 0);\n__decorate([\n field({ decoder: BooleanDecoder, version: 334 })\n], PlatformEventType.prototype, \"isLocationRequired\", void 0);\nexport class PlatformPolicy extends AutoEncoder {\n constructor() {\n super(...arguments);\n this.name = '';\n this.url = '';\n this.enableAtSignup = true;\n this.checkbox = true;\n this.richText = RichText.create({});\n }\n}\n__decorate([\n field({ decoder: StringDecoder, defaultValue: () => uuidv4() })\n], PlatformPolicy.prototype, \"id\", void 0);\n__decorate([\n field({ decoder: StringDecoder })\n], PlatformPolicy.prototype, \"name\", void 0);\n__decorate([\n field({ decoder: StringDecoder })\n], PlatformPolicy.prototype, \"url\", void 0);\n__decorate([\n field({ decoder: BooleanDecoder, version: 327 })\n], PlatformPolicy.prototype, \"enableAtSignup\", void 0);\n__decorate([\n field({ decoder: BooleanDecoder, version: 327 })\n], PlatformPolicy.prototype, \"checkbox\", void 0);\n__decorate([\n field({ decoder: RichText, version: 327 })\n], PlatformPolicy.prototype, \"richText\", void 0);\nexport class PrivacySettings extends AutoEncoder {\n constructor() {\n super(...arguments);\n this.policies = [];\n }\n}\n__decorate([\n field({ decoder: new ArrayDecoder(PlatformPolicy) })\n], PrivacySettings.prototype, \"policies\", void 0);\nexport class PlatformConfig extends AutoEncoder {\n constructor() {\n super(...arguments);\n this.name = 'Stamhoofd';\n /**\n * Cotnains the text and settings for when financial support is enabled - not whether it is enabled\n */\n this.financialSupport = null;\n /**\n * Contains the text and settings for when data permissions are enabled - not whether it is enabled\n */\n this.dataPermission = null;\n this.recordsConfiguration = OrganizationRecordsConfiguration.create({});\n this.tags = [];\n this.premiseTypes = [];\n this.defaultAgeGroups = [];\n this.responsibilities = [];\n this.membershipTypes = [];\n this.eventTypes = [];\n this.coverPhoto = null;\n this.coverBottomLeftOverlayImage = null;\n this.coverBottomLeftOverlayWidth = 150;\n this.footerText = RichText.create({});\n this.color = null;\n this.horizontalLogoDark = null;\n this.squareLogoDark = null;\n this.horizontalLogo = null;\n this.squareLogo = null;\n this.expandLogo = false;\n this.privacy = PrivacySettings.create({});\n }\n getEmailReplacements() {\n return [\n Replacement.create({\n token: 'primaryColor',\n value: this.color ? this.color : '#0053ff',\n }),\n Replacement.create({\n token: 'primaryColorContrast',\n value: this.color ? Colors.getContrastColor(this.color) : '#fff',\n }),\n ];\n }\n}\n__decorate([\n field({ decoder: StringDecoder, version: 326 })\n], PlatformConfig.prototype, \"name\", void 0);\n__decorate([\n field({ decoder: FinancialSupportSettings, nullable: true, version: 320 })\n], PlatformConfig.prototype, \"financialSupport\", void 0);\n__decorate([\n field({ decoder: DataPermissionsSettings, nullable: true, version: 320 })\n], PlatformConfig.prototype, \"dataPermission\", void 0);\n__decorate([\n field({ decoder: OrganizationRecordsConfiguration, version: 253 })\n], PlatformConfig.prototype, \"recordsConfiguration\", void 0);\n__decorate([\n field({ decoder: new ArrayDecoder(OrganizationTag), version: 260 })\n], PlatformConfig.prototype, \"tags\", void 0);\n__decorate([\n field({ decoder: new ArrayDecoder(PlatformPremiseType), version: 319 })\n], PlatformConfig.prototype, \"premiseTypes\", void 0);\n__decorate([\n field({ decoder: new ArrayDecoder(DefaultAgeGroup), version: 261 })\n], PlatformConfig.prototype, \"defaultAgeGroups\", void 0);\n__decorate([\n field({ decoder: new ArrayDecoder(MemberResponsibility), version: 262 })\n], PlatformConfig.prototype, \"responsibilities\", void 0);\n__decorate([\n field({ decoder: new ArrayDecoder(PlatformMembershipType), version: 268 })\n], PlatformConfig.prototype, \"membershipTypes\", void 0);\n__decorate([\n field({ decoder: new ArrayDecoder(PlatformEventType), version: 287 })\n], PlatformConfig.prototype, \"eventTypes\", void 0);\n__decorate([\n field({ decoder: Image, nullable: true, version: 310 })\n], PlatformConfig.prototype, \"coverPhoto\", void 0);\n__decorate([\n field({ decoder: Image, nullable: true, version: 332 })\n], PlatformConfig.prototype, \"coverBottomLeftOverlayImage\", void 0);\n__decorate([\n field({ decoder: NumberDecoder, version: 332 })\n], PlatformConfig.prototype, \"coverBottomLeftOverlayWidth\", void 0);\n__decorate([\n field({ decoder: RichText, version: 332 })\n], PlatformConfig.prototype, \"footerText\", void 0);\n__decorate([\n field({ decoder: StringDecoder, nullable: true, version: 310 })\n], PlatformConfig.prototype, \"color\", void 0);\n__decorate([\n field({ decoder: Image, nullable: true, version: 310 })\n], PlatformConfig.prototype, \"horizontalLogoDark\", void 0);\n__decorate([\n field({ decoder: Image, nullable: true, version: 310 })\n], PlatformConfig.prototype, \"squareLogoDark\", void 0);\n__decorate([\n field({ decoder: Image, nullable: true, version: 310 })\n], PlatformConfig.prototype, \"horizontalLogo\", void 0);\n__decorate([\n field({ decoder: Image, nullable: true, version: 310 })\n], PlatformConfig.prototype, \"squareLogo\", void 0);\n__decorate([\n field({ decoder: BooleanDecoder, optional: true, version: 310 })\n], PlatformConfig.prototype, \"expandLogo\", void 0);\n__decorate([\n field({ decoder: PrivacySettings, version: 327 })\n], PlatformConfig.prototype, \"privacy\", void 0);\nexport class Platform extends AutoEncoder {\n constructor() {\n super(...arguments);\n this.config = PlatformConfig.create({});\n this.privateConfig = null;\n this.period = RegistrationPeriod.create({});\n /**\n * The organization that represents the platform for collection of platform memberships payments\n */\n this.membershipOrganizationId = null;\n }\n /**\n * If you don't have permissions, privateConfig will be null, so there won't be any roles either\n */\n getRoles() {\n var _a, _b;\n return (_b = (_a = this.privateConfig) === null || _a === void 0 ? void 0 : _a.roles) !== null && _b !== void 0 ? _b : [];\n }\n static get shared() {\n if (!Platform.instance) {\n Platform.instance = Platform.create({});\n }\n return Platform.instance;\n }\n static get optionalShared() {\n return Platform.instance;\n }\n static clearShared() {\n Platform.instance = null;\n }\n setShared() {\n Platform.instance = this;\n }\n}\nPlatform.instance = null;\n__decorate([\n field({ decoder: PlatformConfig })\n], Platform.prototype, \"config\", void 0);\n__decorate([\n field({ decoder: PlatformPrivateConfig, nullable: true })\n], Platform.prototype, \"privateConfig\", void 0);\n__decorate([\n field({ decoder: RegistrationPeriod })\n], Platform.prototype, \"period\", void 0);\n__decorate([\n field({ decoder: StringDecoder, nullable: true, version: 324 })\n], Platform.prototype, \"membershipOrganizationId\", void 0);\n//# sourceMappingURL=Platform.js.map","import { __decorate } from \"tslib\";\nimport { AutoEncoder, field, MapDecoder, StringDecoder } from '@simonbackx/simple-encoding';\nimport { LoadedPermissions } from './LoadedPermissions';\nimport { PermissionLevel } from './PermissionLevel';\nimport { PermissionRoleDetailed } from './PermissionRole';\nimport { Permissions } from './Permissions';\nimport { PermissionsResourceType } from './PermissionsResourceType';\nimport { Platform } from './Platform';\nexport class UserPermissions extends AutoEncoder {\n constructor() {\n super(...arguments);\n this.globalPermissions = null;\n this.organizationPermissions = new Map();\n }\n // Current list of groups\n get platform() {\n return this.forPlatform(Platform.shared);\n }\n forPlatform(platform) {\n if (!this.globalPermissions) {\n return null;\n }\n const platformRoles = platform.getRoles();\n return LoadedPermissions.from(this.globalPermissions, platformRoles, [], platform.config.responsibilities);\n }\n forOrganization(organization, platform) {\n let base = null;\n if (platform) {\n const platformPermissions = this.forPlatform(platform);\n if (platformPermissions) {\n const tags = organization.meta.tags.length === 0 ? [''] : organization.meta.tags;\n for (const tag of tags) {\n const rp = platformPermissions.getMergedResourcePermissions(PermissionsResourceType.OrganizationTags, tag);\n if (rp) {\n if (rp.hasAccess(PermissionLevel.Full)) {\n const pp = Permissions.create({\n level: rp.level,\n });\n return LoadedPermissions.from(pp, [], [], []);\n }\n base = base ? base.merge(rp) : rp;\n }\n }\n }\n }\n const specific = this.forWithoutInherit(organization);\n if (base) {\n const roleWithBaseAccessRights = base.accessRights.length > 0\n ? [PermissionRoleDetailed.create({\n accessRights: base.accessRights,\n })]\n : [];\n const p = LoadedPermissions.from(Permissions.create({\n level: base.level,\n roles: roleWithBaseAccessRights,\n }), roleWithBaseAccessRights, [], []);\n if (!specific) {\n return p;\n }\n return specific.merge(p);\n }\n return specific;\n }\n forWithoutInherit(organization) {\n var _a, _b, _c, _d, _e, _f, _g;\n const permissions = (_a = this.organizationPermissions.get(organization.id)) !== null && _a !== void 0 ? _a : null;\n if (!permissions) {\n return null;\n }\n const organizationRoles = (_c = (_b = organization === null || organization === void 0 ? void 0 : organization.privateMeta) === null || _b === void 0 ? void 0 : _b.roles) !== null && _c !== void 0 ? _c : [];\n const inheritedResponsibilityRoles = (_e = (_d = organization === null || organization === void 0 ? void 0 : organization.privateMeta) === null || _d === void 0 ? void 0 : _d.inheritedResponsibilityRoles) !== null && _e !== void 0 ? _e : [];\n const allResponsibilities = [...Platform.shared.config.responsibilities, ...((_g = (_f = organization === null || organization === void 0 ? void 0 : organization.privateMeta) === null || _f === void 0 ? void 0 : _f.responsibilities) !== null && _g !== void 0 ? _g : [])];\n return LoadedPermissions.from(permissions, organizationRoles, inheritedResponsibilityRoles, allResponsibilities);\n }\n convertPlatformPatch(patch) {\n if (!this.globalPermissions) {\n const clonedPatch = UserPermissions.patch({\n globalPermissions: patch === null ? null : Permissions.create({}).patch(patch),\n });\n return clonedPatch;\n }\n return UserPermissions.patch({\n globalPermissions: patch,\n });\n }\n convertPatch(patch, organizationId) {\n if (!this.organizationPermissions.get(organizationId)) {\n const clonedPatch = UserPermissions.patch({});\n const p = patch === null ? null : Permissions.create({}).patch(patch);\n clonedPatch.organizationPermissions.set(organizationId, p);\n return clonedPatch;\n }\n const clonedPatch = UserPermissions.patch({});\n clonedPatch.organizationPermissions.set(organizationId, patch);\n return clonedPatch;\n }\n clearEmptyPermissions() {\n if (this.globalPermissions && this.globalPermissions.isEmpty) {\n this.globalPermissions = null;\n }\n for (const [organizationId, permissions] of this.organizationPermissions) {\n if (permissions.isEmpty) {\n this.organizationPermissions.delete(organizationId);\n }\n }\n }\n get isEmpty() {\n return this.globalPermissions === null && this.organizationPermissions.size === 0;\n }\n static limitedPatch(old, patch, organizationId) {\n if (patch === null) {\n return old;\n }\n if (patch.isPatch()) {\n // Only allow to set the permissions for the organization in scope\n if (patch.organizationPermissions.get(organizationId) !== undefined) {\n const clonedPatch = UserPermissions.patch({});\n clonedPatch.organizationPermissions.set(organizationId, patch.organizationPermissions.get(organizationId));\n const updated = old ? old.patch(clonedPatch) : UserPermissions.create({}).patch(clonedPatch);\n if (updated.isEmpty) {\n return null;\n }\n return updated;\n }\n }\n else {\n // Only allow to set the permissions for the organization in scope\n if (patch.organizationPermissions.get(organizationId)) {\n const clonedPatch = UserPermissions.patch({});\n clonedPatch.organizationPermissions.set(organizationId, patch.organizationPermissions.get(organizationId));\n const updated = old ? old.patch(clonedPatch) : UserPermissions.create({}).patch(clonedPatch);\n if (updated.isEmpty) {\n return null;\n }\n return updated;\n }\n }\n return old;\n }\n static limitedAdd(old, add, organizationId) {\n if (add.organizationPermissions.get(organizationId)) {\n const cloned = old ? old.clone() : UserPermissions.create({});\n const realAdd = add.organizationPermissions.get(organizationId);\n const realOld = cloned ? cloned.organizationPermissions.get(organizationId) : null;\n if (!realOld) {\n cloned.organizationPermissions.set(organizationId, realAdd);\n return cloned;\n }\n realOld.add(realAdd);\n return cloned;\n }\n return old;\n }\n}\n__decorate([\n field({ decoder: Permissions, nullable: true })\n], UserPermissions.prototype, \"globalPermissions\", void 0);\n__decorate([\n field({ decoder: new MapDecoder(StringDecoder, Permissions) })\n], UserPermissions.prototype, \"organizationPermissions\", void 0);\n//# sourceMappingURL=UserPermissions.js.map","import { __decorate } from \"tslib\";\nimport { AutoEncoder, BooleanDecoder, DateDecoder, EmailDecoder, EnumDecoder, field, MapDecoder, StringDecoder } from '@simonbackx/simple-encoding';\nimport { v4 as uuidv4 } from 'uuid';\nimport { Permissions } from './Permissions';\nimport { UserPermissions } from './UserPermissions';\nexport var LoginProviderType;\n(function (LoginProviderType) {\n LoginProviderType[\"SSO\"] = \"SSO\";\n})(LoginProviderType || (LoginProviderType = {}));\nexport class UserMeta extends AutoEncoder {\n constructor() {\n super(...arguments);\n /**\n * When signed in with SSO, this is the id of that user in the SSO system\n */\n this.loginProviderIds = new Map();\n }\n}\n__decorate([\n field({ decoder: new MapDecoder(new EnumDecoder(LoginProviderType), StringDecoder) })\n], UserMeta.prototype, \"loginProviderIds\", void 0);\nexport class User extends AutoEncoder {\n constructor() {\n super(...arguments);\n this.organizationId = null;\n this.memberId = null;\n this.firstName = null;\n this.lastName = null;\n this.permissions = null;\n /**\n * Readonly\n */\n this.meta = null;\n this.verified = false;\n /**\n * Readonly\n */\n this.hasAccount = false;\n }\n get name() {\n if (!this.lastName) {\n if (!this.firstName) {\n return '';\n }\n return this.firstName;\n }\n return this.firstName + ' ' + this.lastName;\n }\n}\n__decorate([\n field({ decoder: StringDecoder, defaultValue: () => uuidv4() })\n], User.prototype, \"id\", void 0);\n__decorate([\n field({ decoder: StringDecoder, nullable: true, version: 245 })\n], User.prototype, \"organizationId\", void 0);\n__decorate([\n field({ decoder: StringDecoder, nullable: true, version: 281 })\n], User.prototype, \"memberId\", void 0);\n__decorate([\n field({ decoder: StringDecoder, nullable: true, version: 14 })\n], User.prototype, \"firstName\", void 0);\n__decorate([\n field({ decoder: StringDecoder, nullable: true, version: 14 })\n], User.prototype, \"lastName\", void 0);\n__decorate([\n field({ decoder: EmailDecoder })\n], User.prototype, \"email\", void 0);\n__decorate([\n field({ decoder: Permissions, nullable: true, version: 2, upgrade: () => null }),\n field({\n decoder: UserPermissions,\n nullable: true,\n version: 247,\n upgrade: function (oldValue) {\n if (!oldValue || !this.organizationId) {\n return null;\n }\n const m = new Map();\n m.set(this.organizationId, oldValue);\n return UserPermissions.create({\n globalPermissions: null,\n organizationPermissions: m,\n });\n },\n })\n], User.prototype, \"permissions\", void 0);\n__decorate([\n field({ decoder: UserMeta, nullable: true, version: 191 })\n], User.prototype, \"meta\", void 0);\n__decorate([\n field({ decoder: BooleanDecoder, version: 81 })\n], User.prototype, \"verified\", void 0);\n__decorate([\n field({ decoder: BooleanDecoder, version: 162 })\n], User.prototype, \"hasAccount\", void 0);\nexport class NewUser extends User {\n constructor() {\n super(...arguments);\n /**\n * Will be empty in responses for now\n */\n this.password = '';\n }\n}\n__decorate([\n field({ decoder: StringDecoder, version: 162 })\n], NewUser.prototype, \"password\", void 0);\nexport class ApiUser extends AutoEncoder {\n constructor() {\n super(...arguments);\n this.organizationId = null;\n this.name = null;\n this.permissions = null;\n this.createdAt = new Date();\n this.expiresAt = null;\n }\n}\n__decorate([\n field({ decoder: StringDecoder, defaultValue: () => uuidv4() })\n], ApiUser.prototype, \"id\", void 0);\n__decorate([\n field({ decoder: StringDecoder, nullable: true, version: 245 })\n], ApiUser.prototype, \"organizationId\", void 0);\n__decorate([\n field({ decoder: StringDecoder, nullable: true, version: 14 })\n], ApiUser.prototype, \"name\", void 0);\n__decorate([\n field({ decoder: Permissions, nullable: true, version: 2, upgrade: () => null }),\n field({\n decoder: UserPermissions,\n nullable: true,\n version: 247,\n upgrade: function (oldValue) {\n if (!oldValue || !this.organizationId) {\n return null;\n }\n const m = new Map();\n m.set(this.organizationId, oldValue);\n return UserPermissions.create({\n globalPermissions: null,\n organizationPermissions: m,\n });\n },\n })\n], ApiUser.prototype, \"permissions\", void 0);\n__decorate([\n field({ decoder: DateDecoder })\n], ApiUser.prototype, \"createdAt\", void 0);\n__decorate([\n field({ decoder: DateDecoder, nullable: true })\n], ApiUser.prototype, \"expiresAt\", void 0);\nexport class ApiUserWithToken extends ApiUser {\n}\n__decorate([\n field({ decoder: StringDecoder })\n], ApiUserWithToken.prototype, \"token\", void 0);\n//# sourceMappingURL=User.js.map","import { __decorate } from \"tslib\";\nimport { AutoEncoder, BooleanDecoder, DateDecoder, EnumDecoder, field, IntegerDecoder, StringDecoder } from '@simonbackx/simple-encoding';\nimport { SimpleError } from '@simonbackx/simple-errors';\nimport { v4 as uuidv4 } from 'uuid';\nimport { Country } from '../addresses/CountryDecoder';\nexport var STPackageType;\n(function (STPackageType) {\n // Members without activities (not available in frontend anymore)\n STPackageType[\"LegacyMembers\"] = \"LegacyMembers\";\n // Full members package\n STPackageType[\"Members\"] = \"Members\";\n // Webshop package (max 10 webshops)\n STPackageType[\"Webshops\"] = \"Webshops\";\n // One webshop package (max 1 webshop)\n STPackageType[\"SingleWebshop\"] = \"SingleWebshop\";\n STPackageType[\"TrialMembers\"] = \"TrialMembers\";\n STPackageType[\"TrialWebshops\"] = \"TrialWebshops\";\n})(STPackageType || (STPackageType = {}));\nexport class STPackageTypeHelper {\n static getName(type) {\n switch (type) {\n case STPackageType.LegacyMembers: return 'Ledenadministratie (oud gratis pakket)';\n case STPackageType.Members: {\n return 'Ledenadministratie, per lid';\n }\n case STPackageType.Webshops: {\n return 'Webshop module. Maximaal 10 webshops';\n }\n case STPackageType.SingleWebshop: {\n return 'Webshop module voor één webshop';\n }\n case STPackageType.TrialMembers: return 'Demo ledenadministratie';\n case STPackageType.TrialWebshops: return 'Demo webshops';\n }\n }\n}\nexport var STPricingType;\n(function (STPricingType) {\n STPricingType[\"Fixed\"] = \"Fixed\";\n /**\n * Package is renewable per year\n * Package can get extended initially to a specific date\n */\n STPricingType[\"PerYear\"] = \"PerYear\";\n /**\n * Price is per member, per year\n */\n STPricingType[\"PerMember\"] = \"PerMember\";\n})(STPricingType || (STPricingType = {}));\nexport class STPackageMeta extends AutoEncoder {\n constructor() {\n super(...arguments);\n this.pricingType = STPricingType.Fixed;\n this.unitPrice = 0;\n /// Contains the (paid) invoiced amount\n this.paidAmount = 0;\n /// Contains the (paid) invoiced price. Used for statistics and reporting\n this.paidPrice = 0;\n /**\n * Minimum amount that will needs to get invoiced. Only used for first invoice\n */\n this.minimumAmount = 1;\n /**\n * Only used if applicable\n */\n this.autorenew = true;\n /**\n * Only used if applicable\n */\n this.allowRenew = false;\n /// If a top up is done, and the payment fails, set the date here\n /// + increase the payment failed count.\n /// After x days this will disable all functions if it keeps failing\n this.firstFailedPayment = null;\n this.paymentFailedCount = 0;\n this.canDeactivate = false;\n }\n get name() {\n return STPackageTypeHelper.getName(this.type);\n }\n}\n__decorate([\n field({ decoder: StringDecoder, optional: true })\n], STPackageMeta.prototype, \"didRenewId\", void 0);\n__decorate([\n field({ decoder: new EnumDecoder(STPackageType) })\n], STPackageMeta.prototype, \"type\", void 0);\n__decorate([\n field({ decoder: new EnumDecoder(STPricingType) })\n], STPackageMeta.prototype, \"pricingType\", void 0);\n__decorate([\n field({ decoder: IntegerDecoder })\n], STPackageMeta.prototype, \"unitPrice\", void 0);\n__decorate([\n field({ decoder: IntegerDecoder })\n], STPackageMeta.prototype, \"paidAmount\", void 0);\n__decorate([\n field({ decoder: IntegerDecoder })\n], STPackageMeta.prototype, \"paidPrice\", void 0);\n__decorate([\n field({ decoder: IntegerDecoder })\n], STPackageMeta.prototype, \"minimumAmount\", void 0);\n__decorate([\n field({ decoder: BooleanDecoder })\n], STPackageMeta.prototype, \"autorenew\", void 0);\n__decorate([\n field({ decoder: BooleanDecoder })\n], STPackageMeta.prototype, \"allowRenew\", void 0);\n__decorate([\n field({ decoder: DateDecoder, nullable: true })\n], STPackageMeta.prototype, \"firstFailedPayment\", void 0);\n__decorate([\n field({ decoder: IntegerDecoder })\n], STPackageMeta.prototype, \"paymentFailedCount\", void 0);\n__decorate([\n field({ decoder: DateDecoder })\n], STPackageMeta.prototype, \"startDate\", void 0);\n__decorate([\n field({ decoder: BooleanDecoder })\n], STPackageMeta.prototype, \"canDeactivate\", void 0);\n/**\n * A package contains a price agreement for a given period that might be renewable\n */\nexport class STPackage extends AutoEncoder {\n constructor() {\n super(...arguments);\n this.createdAt = new Date();\n this.updatedAt = new Date();\n /**\n * validAt is null if the initial needed payment is missing. The package can be ignore\n * It contains the date when the package was validated and added correctly.\n */\n this.validAt = null;\n this.validUntil = null;\n /// Disable / delete this package after this date (also no renew allowed). Can't keep using the currently saved pricing\n this.removeAt = null;\n }\n shouldHintRenew() {\n if (!this.meta.allowRenew || this.validUntil === null) {\n return false;\n }\n if (this.meta.startDate > new Date()) {\n // Not yet activated\n return false;\n }\n // Allow renew 6 months in advance\n const allowAfter = new Date(this.validUntil);\n allowAfter.setDate(allowAfter.getDate() - 31 * 6);\n if (allowAfter < new Date()) {\n return true;\n }\n return false;\n }\n get status() {\n return STPackageStatus.create({\n startDate: this.meta.startDate,\n validUntil: this.validUntil,\n removeAt: this.removeAt,\n firstFailedPayment: this.meta.firstFailedPayment,\n });\n }\n}\n__decorate([\n field({ decoder: StringDecoder, defaultValue: () => uuidv4() })\n], STPackage.prototype, \"id\", void 0);\n__decorate([\n field({ decoder: STPackageMeta })\n], STPackage.prototype, \"meta\", void 0);\n__decorate([\n field({ decoder: DateDecoder })\n], STPackage.prototype, \"createdAt\", void 0);\n__decorate([\n field({ decoder: DateDecoder })\n], STPackage.prototype, \"updatedAt\", void 0);\n__decorate([\n field({ decoder: DateDecoder, nullable: true })\n], STPackage.prototype, \"validAt\", void 0);\n__decorate([\n field({ decoder: DateDecoder, nullable: true })\n], STPackage.prototype, \"validUntil\", void 0);\n__decorate([\n field({ decoder: DateDecoder, nullable: true })\n], STPackage.prototype, \"removeAt\", void 0);\nexport class STPackageStatus extends AutoEncoder {\n constructor() {\n super(...arguments);\n this.validUntil = null;\n /// Disable / delete this package after this date (also no renew allowed). Can't keep using the currently saved pricing\n this.removeAt = null;\n this.firstFailedPayment = null;\n }\n get isActive() {\n const d = new Date();\n /// Active if it starts within 10 seconds (fixes time differences between server and clients)\n if (this.startDate && this.startDate > new Date(d.getTime() + 10 * 1000)) {\n return false;\n }\n if (this.removeAt && this.removeAt < d) {\n return false;\n }\n if (this.validUntil && this.validUntil < d) {\n return false;\n }\n // Deactivate module if payment failed, and not reactivated after 4 weeks\n const expire = new Date();\n expire.setDate(expire.getDate() - 28);\n if (this.firstFailedPayment && this.firstFailedPayment < expire) {\n return false;\n }\n return true;\n }\n /**\n * Purchased the package, the package is not yet removed, but it is expired or not paid after 4 weeks following a failed payment\n */\n get wasActive() {\n if (this.isActive) {\n return false;\n }\n const d = new Date();\n /// Active if it starts within 10 seconds (fixes time differences between server and clients)\n if (this.startDate && this.startDate > new Date(d.getTime() + 10 * 1000)) {\n return false;\n }\n // if (this.removeAt && this.removeAt < d) {\n // return false\n // }\n if (this.validUntil && this.validUntil < d) {\n // Passed!\n return true;\n }\n // Deactivate module if payment failed, and not reactivated after 4 weeks\n const expire = new Date();\n expire.setDate(expire.getDate() - 28);\n if (this.firstFailedPayment && this.firstFailedPayment < expire) {\n // did not pay!\n return true;\n }\n return false;\n }\n get deactivateDate() {\n const dates = [];\n if (this.removeAt !== null) {\n dates.push(this.removeAt);\n }\n if (this.validUntil !== null) {\n dates.push(this.validUntil);\n }\n if (this.firstFailedPayment !== null) {\n const expire = new Date(this.firstFailedPayment);\n expire.setDate(expire.getDate() + 28);\n dates.push(expire);\n }\n if (dates.length === 0) {\n return null;\n }\n return new Date(Math.min(...dates.map(d => d.getTime())));\n }\n merge(status) {\n if (status.startDate < this.startDate) {\n this.startDate = status.startDate;\n // TODO: fix behaviour with gaps if we allow that in the future\n }\n if (status.validUntil === null) {\n this.validUntil = null;\n }\n else if (this.validUntil !== null) {\n if (status.validUntil > this.validUntil) {\n this.validUntil = status.validUntil;\n }\n }\n if (status.removeAt === null) {\n this.removeAt = null;\n }\n else if (this.removeAt !== null) {\n if (status.removeAt > this.removeAt) {\n this.removeAt = status.removeAt;\n }\n }\n if (this.firstFailedPayment === null) {\n this.firstFailedPayment = status.firstFailedPayment;\n }\n else if (status.firstFailedPayment !== null) {\n if (status.firstFailedPayment < this.firstFailedPayment) {\n this.firstFailedPayment = status.firstFailedPayment;\n }\n }\n }\n}\n__decorate([\n field({ decoder: DateDecoder })\n], STPackageStatus.prototype, \"startDate\", void 0);\n__decorate([\n field({ decoder: DateDecoder, nullable: true })\n], STPackageStatus.prototype, \"validUntil\", void 0);\n__decorate([\n field({ decoder: DateDecoder, nullable: true })\n], STPackageStatus.prototype, \"removeAt\", void 0);\n__decorate([\n field({ decoder: DateDecoder, nullable: true })\n], STPackageStatus.prototype, \"firstFailedPayment\", void 0);\nexport function calculateVATPercentage(address, VATNumber) {\n // Determine VAT rate\n let VATRate = 0;\n if (address.country === Country.Belgium) {\n VATRate = 21;\n }\n else {\n if (VATNumber && VATNumber.substr(0, 2).toUpperCase() !== 'BE') {\n VATRate = 0;\n }\n else {\n // Apply VAT rate of the home country for consumers in the EU\n switch (address.country) {\n case Country.Netherlands:\n VATRate = 21;\n break;\n case Country.Luxembourg:\n VATRate = 17;\n break;\n case Country.France:\n VATRate = 20;\n break;\n case Country.Germany:\n VATRate = 19;\n break;\n default: {\n throw new SimpleError({\n code: 'country_not_supported',\n message: 'Non-business sales to your country are not yet supported. Please enter a valid VAT number.',\n });\n }\n }\n }\n }\n return VATRate;\n}\n//# sourceMappingURL=STPackage.js.map","export var OrganizationGenderType;\n(function (OrganizationGenderType) {\n OrganizationGenderType[\"Mixed\"] = \"Mixed\";\n OrganizationGenderType[\"Separated\"] = \"Separated\";\n OrganizationGenderType[\"OnlyMale\"] = \"OnlyMale\";\n OrganizationGenderType[\"OnlyFemale\"] = \"OnlyFemale\";\n})(OrganizationGenderType || (OrganizationGenderType = {}));\n//# sourceMappingURL=OrganizationGenderType.js.map","export var UmbrellaOrganization;\n(function (UmbrellaOrganization) {\n UmbrellaOrganization[\"ChiroNationaal\"] = \"ChiroNationaal\";\n UmbrellaOrganization[\"ScoutsEnGidsenVlaanderen\"] = \"ScoutsEnGidsenVlaanderen\";\n UmbrellaOrganization[\"KSA\"] = \"KSA\";\n UmbrellaOrganization[\"KLJ\"] = \"KLJ\";\n UmbrellaOrganization[\"FOS\"] = \"FOSOpenScouting\";\n UmbrellaOrganization[\"JeugdRodeKruis\"] = \"JeugdRodeKruis\";\n UmbrellaOrganization[\"JNM\"] = \"JNM\";\n UmbrellaOrganization[\"Other\"] = \"Other\";\n})(UmbrellaOrganization || (UmbrellaOrganization = {}));\nexport class UmbrellaOrganizationHelper {\n static getName(umbrellaOrganization) {\n switch (umbrellaOrganization) {\n case UmbrellaOrganization.ChiroNationaal: return 'Chirojeugd Vlaanderen';\n case UmbrellaOrganization.ScoutsEnGidsenVlaanderen: return 'Scouts & Gidsen Vlaanderen';\n case UmbrellaOrganization.KSA: return 'KSA';\n case UmbrellaOrganization.KLJ: return 'KLJ';\n case UmbrellaOrganization.FOS: return 'FOS Open Scouting';\n case UmbrellaOrganization.JeugdRodeKruis: return 'Jeugd Rode Kruis';\n case UmbrellaOrganization.JNM: return 'JNM';\n case UmbrellaOrganization.Other: return 'Andere / geen';\n }\n }\n static getList() {\n const list = Object.values(UmbrellaOrganization);\n const ob = [];\n for (const item of list) {\n ob.push({\n name: this.getName(item),\n value: item,\n });\n }\n return ob;\n }\n}\n//# sourceMappingURL=UmbrellaOrganization.js.map","import { GroupCategory, GroupCategorySettings } from './GroupCategory';\nimport { UmbrellaOrganization } from './UmbrellaOrganization';\nexport var OrganizationType;\n(function (OrganizationType) {\n OrganizationType[\"Youth\"] = \"Youth\";\n OrganizationType[\"Football\"] = \"Football\";\n OrganizationType[\"Tennis\"] = \"Tennis\";\n OrganizationType[\"Golf\"] = \"Golf\";\n OrganizationType[\"Athletics\"] = \"Athletics\";\n OrganizationType[\"Badminton\"] = \"Badminton\";\n OrganizationType[\"Hockey\"] = \"Hockey\";\n OrganizationType[\"Cycling\"] = \"Cycling\";\n OrganizationType[\"Swimming\"] = \"Swimming\";\n OrganizationType[\"Dance\"] = \"Dance\";\n OrganizationType[\"Volleyball\"] = \"Volleyball\";\n OrganizationType[\"Basketball\"] = \"Basketball\";\n OrganizationType[\"Judo\"] = \"Judo\";\n OrganizationType[\"Sport\"] = \"Sport\";\n OrganizationType[\"School\"] = \"School\";\n OrganizationType[\"Student\"] = \"Student\";\n OrganizationType[\"HorseRiding\"] = \"HorseRiding\";\n OrganizationType[\"Neighborhood\"] = \"Neighborhood\";\n OrganizationType[\"Nature\"] = \"Nature\";\n OrganizationType[\"Music\"] = \"Music\";\n OrganizationType[\"Professional\"] = \"Professional\";\n OrganizationType[\"Art\"] = \"Art\";\n OrganizationType[\"Culture\"] = \"Culture\";\n OrganizationType[\"LGBTQ\"] = \"LGBTQ\";\n OrganizationType[\"Politics\"] = \"Politics\";\n OrganizationType[\"Union\"] = \"Union\";\n OrganizationType[\"Other\"] = \"Other\";\n})(OrganizationType || (OrganizationType = {}));\nexport class OrganizationTypeHelper {\n static getName(type) {\n var _a, _b;\n const l = this.getList();\n return (_b = (_a = l.find(v => v.value === type)) === null || _a === void 0 ? void 0 : _a.name) !== null && _b !== void 0 ? _b : type.toString();\n }\n static getList() {\n return [\n {\n value: OrganizationType.Youth,\n name: 'Jeugdbeweging',\n },\n {\n value: OrganizationType.Football,\n name: 'Voetbal',\n },\n {\n value: OrganizationType.Tennis,\n name: 'Tennis',\n },\n {\n value: OrganizationType.Golf,\n name: 'Golf',\n },\n {\n value: OrganizationType.Athletics,\n name: 'Atletiek',\n },\n {\n value: OrganizationType.Badminton,\n name: 'Badminton',\n },\n {\n value: OrganizationType.Hockey,\n name: 'Hockey',\n },\n {\n value: OrganizationType.Cycling,\n name: 'Wielrennen',\n },\n {\n value: OrganizationType.Swimming,\n name: 'Zwemmen',\n },\n {\n value: OrganizationType.Dance,\n name: 'Dans',\n },\n {\n value: OrganizationType.Volleyball,\n name: 'Volleybal',\n },\n {\n value: OrganizationType.Basketball,\n name: 'Basketbal',\n },\n {\n value: OrganizationType.Judo,\n name: 'Vechtkunst',\n },\n {\n value: OrganizationType.Sport,\n name: 'Andere sport',\n },\n {\n value: OrganizationType.Student,\n name: 'Studentenvereniging',\n },\n {\n value: OrganizationType.HorseRiding,\n name: 'Paardensport',\n },\n {\n value: OrganizationType.Neighborhood,\n name: 'Buurtvereniging',\n },\n {\n value: OrganizationType.Nature,\n name: 'Natuurvereniging',\n },\n {\n value: OrganizationType.Music,\n name: 'Muziekvereniging',\n },\n {\n value: OrganizationType.Professional,\n name: 'Beroepsvereniging',\n },\n {\n value: OrganizationType.Art,\n name: 'Kunstvereniging',\n },\n {\n value: OrganizationType.Culture,\n name: 'Cultuur',\n },\n {\n value: OrganizationType.LGBTQ,\n name: 'LGBTQ+',\n },\n {\n value: OrganizationType.Politics,\n name: 'Politiek',\n },\n {\n value: OrganizationType.Union,\n name: 'Vakbond',\n },\n {\n value: OrganizationType.School,\n name: 'School',\n },\n {\n value: OrganizationType.Other,\n name: 'Andere',\n },\n ];\n }\n static getCategory(type) {\n switch (type) {\n case OrganizationType.Youth:\n case OrganizationType.Student:\n return 'Jeugd';\n case OrganizationType.Sport:\n case OrganizationType.Football:\n case OrganizationType.Tennis:\n case OrganizationType.Golf:\n case OrganizationType.Athletics:\n case OrganizationType.Badminton:\n case OrganizationType.Hockey:\n case OrganizationType.Cycling:\n case OrganizationType.Swimming:\n case OrganizationType.Dance:\n case OrganizationType.Volleyball:\n case OrganizationType.Basketball:\n case OrganizationType.Judo:\n case OrganizationType.HorseRiding:\n return 'Sport';\n case OrganizationType.Culture:\n case OrganizationType.Art:\n case OrganizationType.Music:\n return 'Cultuur';\n case OrganizationType.Other:\n case OrganizationType.LGBTQ:\n case OrganizationType.Politics:\n case OrganizationType.Union:\n case OrganizationType.Nature:\n case OrganizationType.Professional:\n case OrganizationType.Neighborhood:\n case OrganizationType.School:\n return 'Overige';\n }\n }\n /**\n * Return default group categories BEFORE the update with activities!\n * @param type\n * @param umbrella\n */\n static getDefaultGroupCategoriesWithoutActivities(type, umbrella) {\n if (type === OrganizationType.Youth) {\n if (umbrella === UmbrellaOrganization.ScoutsEnGidsenVlaanderen) {\n return [\n GroupCategory.create({\n settings: GroupCategorySettings.create({\n name: 'Takken',\n maximumRegistrations: 1,\n }),\n }),\n ];\n }\n if (umbrella === UmbrellaOrganization.ChiroNationaal) {\n return [\n GroupCategory.create({\n settings: GroupCategorySettings.create({\n name: 'Afdelingen',\n maximumRegistrations: 1,\n }),\n }),\n ];\n }\n return [\n GroupCategory.create({\n settings: GroupCategorySettings.create({\n name: 'Leeftijdsgroepen',\n maximumRegistrations: 1,\n }),\n }),\n ];\n }\n if (type === OrganizationType.Dance) {\n return [\n GroupCategory.create({\n settings: GroupCategorySettings.create({\n name: 'Danslessen',\n maximumRegistrations: 1,\n }),\n }),\n ];\n }\n if (this.getCategory(type) == 'Sport') {\n return [\n GroupCategory.create({\n settings: GroupCategorySettings.create({\n name: 'Leeftijdsgroepen',\n maximumRegistrations: 1,\n }),\n }),\n ];\n }\n // Feel free to add more customizations here\n return [\n // Always need one minimum\n GroupCategory.create({\n settings: GroupCategorySettings.create({\n name: 'Leeftijdsgroepen',\n maximumRegistrations: 1,\n }),\n }),\n ];\n }\n /**\n * Return default group categories for a given type and umbrella (optional), without the root category\n * @param type\n * @param umbrella\n */\n static getDefaultGroupCategories(type, umbrella) {\n if (type === OrganizationType.Youth) {\n if (umbrella === UmbrellaOrganization.ScoutsEnGidsenVlaanderen) {\n const activities = [\n GroupCategory.create({\n settings: GroupCategorySettings.create({\n name: 'Weekends',\n }),\n }),\n GroupCategory.create({\n settings: GroupCategorySettings.create({\n name: 'Kampen',\n }),\n }),\n ];\n return [\n GroupCategory.create({\n settings: GroupCategorySettings.create({\n name: 'Takken',\n maximumRegistrations: 1,\n }),\n }),\n GroupCategory.create({\n settings: GroupCategorySettings.create({\n name: 'Activiteiten',\n }),\n categoryIds: activities.map(c => c.id),\n }),\n ...activities,\n ];\n }\n if (umbrella === UmbrellaOrganization.ChiroNationaal) {\n const activities = [\n GroupCategory.create({\n settings: GroupCategorySettings.create({\n name: 'Weekends',\n }),\n }),\n GroupCategory.create({\n settings: GroupCategorySettings.create({\n name: 'Kampen',\n }),\n }),\n ];\n return [\n GroupCategory.create({\n settings: GroupCategorySettings.create({\n name: 'Afdelingen',\n maximumRegistrations: 1,\n }),\n }),\n GroupCategory.create({\n settings: GroupCategorySettings.create({\n name: 'Activiteiten',\n }),\n categoryIds: activities.map(c => c.id),\n }),\n ...activities,\n ];\n }\n // Feel free to add more customizations here\n const activities = [\n GroupCategory.create({\n settings: GroupCategorySettings.create({\n name: 'Weekends',\n }),\n }),\n GroupCategory.create({\n settings: GroupCategorySettings.create({\n name: 'Kampen',\n }),\n }),\n ];\n return [\n GroupCategory.create({\n settings: GroupCategorySettings.create({\n name: 'Leeftijdsgroepen',\n maximumRegistrations: 1,\n }),\n }),\n GroupCategory.create({\n settings: GroupCategorySettings.create({\n name: 'Activiteiten',\n }),\n categoryIds: activities.map(c => c.id),\n }),\n ...activities,\n ];\n }\n if (type === OrganizationType.Dance) {\n return [\n GroupCategory.create({\n settings: GroupCategorySettings.create({\n name: 'Danslessen',\n }),\n }),\n GroupCategory.create({\n settings: GroupCategorySettings.create({\n name: 'Activiteiten',\n }),\n }),\n ];\n }\n if (this.getCategory(type) == 'Sport') {\n return [\n GroupCategory.create({\n settings: GroupCategorySettings.create({\n name: 'Leeftijdsgroepen',\n maximumRegistrations: 1,\n }),\n }),\n GroupCategory.create({\n settings: GroupCategorySettings.create({\n name: 'Activiteiten',\n }),\n }),\n ];\n }\n // Feel free to add more customizations here\n return [];\n }\n}\n//# sourceMappingURL=OrganizationType.js.map","import { Formatter } from '@stamhoofd/utility';\nexport var PaymentMethod;\n(function (PaymentMethod) {\n PaymentMethod[\"Unknown\"] = \"Unknown\";\n PaymentMethod[\"PointOfSale\"] = \"PointOfSale\";\n PaymentMethod[\"Transfer\"] = \"Transfer\";\n PaymentMethod[\"DirectDebit\"] = \"DirectDebit\";\n PaymentMethod[\"Bancontact\"] = \"Bancontact\";\n PaymentMethod[\"iDEAL\"] = \"iDEAL\";\n PaymentMethod[\"Payconiq\"] = \"Payconiq\";\n PaymentMethod[\"CreditCard\"] = \"CreditCard\";\n})(PaymentMethod || (PaymentMethod = {}));\nexport var PaymentMethodV150;\n(function (PaymentMethodV150) {\n PaymentMethodV150[\"Unknown\"] = \"Unknown\";\n PaymentMethodV150[\"Transfer\"] = \"Transfer\";\n PaymentMethodV150[\"DirectDebit\"] = \"DirectDebit\";\n PaymentMethodV150[\"Bancontact\"] = \"Bancontact\";\n PaymentMethodV150[\"iDEAL\"] = \"iDEAL\";\n PaymentMethodV150[\"Payconiq\"] = \"Payconiq\";\n PaymentMethodV150[\"CreditCard\"] = \"CreditCard\";\n})(PaymentMethodV150 || (PaymentMethodV150 = {}));\nexport function downgradePaymentMethodV150(newerValue) {\n if (newerValue === PaymentMethod.PointOfSale) {\n return PaymentMethodV150.Transfer;\n }\n return newerValue;\n}\nexport function downgradePaymentMethodArrayV150(newerValue) {\n return newerValue.map(v => downgradePaymentMethodV150(v));\n}\nexport class PaymentMethodHelper {\n static getName(method, context = null) {\n switch (method) {\n case PaymentMethod.Unknown: return 'onbekende betaalmethode';\n case PaymentMethod.PointOfSale: {\n switch (context) {\n case 'takeout': return 'bij afhalen';\n case 'delivery': return 'bij levering';\n case 'Takeout': return 'bij afhalen';\n case 'Delivery': return 'bij levering';\n case 'OnSite': return 'ter plaatse';\n default: return 'ter plaatse';\n }\n }\n case PaymentMethod.Transfer: return 'overschrijving';\n case PaymentMethod.DirectDebit: return 'domiciliëring';\n case PaymentMethod.Bancontact: return 'Bancontact';\n case PaymentMethod.iDEAL: return 'iDEAL';\n case PaymentMethod.CreditCard: return 'kredietkaart';\n case PaymentMethod.Payconiq: return 'Payconiq by Bancontact';\n }\n }\n static getPluralName(method) {\n switch (method) {\n case PaymentMethod.Unknown: return 'onbekende betaalmethodes';\n case PaymentMethod.PointOfSale: {\n return 'betalingen ter plaatse';\n }\n case PaymentMethod.Transfer: return 'overschrijvingen';\n case PaymentMethod.DirectDebit: return 'domiciliëringen';\n case PaymentMethod.Bancontact: return 'Bancontact';\n case PaymentMethod.iDEAL: return 'iDEAL';\n case PaymentMethod.CreditCard: return 'kredietkaart';\n case PaymentMethod.Payconiq: return 'Payconiq';\n }\n }\n static getNameCapitalized(method, context = null) {\n if (method === PaymentMethod.iDEAL) {\n return PaymentMethodHelper.getName(method, context);\n }\n return Formatter.capitalizeFirstLetter(PaymentMethodHelper.getName(method, context));\n }\n static getPluralNameCapitalized(method) {\n if (method === PaymentMethod.iDEAL) {\n return PaymentMethodHelper.getPluralName(method);\n }\n return Formatter.capitalizeFirstLetter(PaymentMethodHelper.getPluralName(method));\n }\n}\n//# sourceMappingURL=PaymentMethod.js.map","import { __decorate } from \"tslib\";\nimport { AutoEncoder, EnumDecoder, StringDecoder, field } from '@simonbackx/simple-encoding';\nimport { Country } from '../addresses/CountryDecoder';\nexport var TransferDescriptionType;\n(function (TransferDescriptionType) {\n TransferDescriptionType[\"Structured\"] = \"Structured\";\n TransferDescriptionType[\"Reference\"] = \"Reference\";\n TransferDescriptionType[\"Fixed\"] = \"Fixed\";\n})(TransferDescriptionType || (TransferDescriptionType = {}));\nfunction replaceReplacements(str, replacements) {\n for (const key in replacements) {\n str = str.replace('{{' + key + '}}', replacements[key]);\n }\n return str;\n}\nexport class TransferSettings extends AutoEncoder {\n constructor() {\n super(...arguments);\n this.type = TransferDescriptionType.Structured;\n this.prefix = null;\n this.iban = null;\n this.creditor = null;\n this.infoDescription = '';\n }\n fillMissing(settings) {\n const duplicate = this.clone();\n if (!this.iban) {\n duplicate.iban = settings.iban;\n }\n if (!this.creditor) {\n duplicate.creditor = settings.creditor;\n }\n return duplicate;\n }\n toString() {\n if (this.creditor && this.creditor.length > 0) {\n return this.creditor + ', ' + this.iban;\n }\n return this.iban;\n }\n generateDescription(reference, country, replacements = {}) {\n var _a;\n if (this.type === TransferDescriptionType.Structured) {\n if (country === Country.Belgium) {\n return TransferSettings.generateOGM(replacements);\n }\n return TransferSettings.generateOGMNL(replacements);\n }\n if (this.type === TransferDescriptionType.Reference) {\n return replaceReplacements(this.prefix ? (this.prefix + ' ') : '', replacements) + reference;\n }\n return replaceReplacements((_a = this.prefix) !== null && _a !== void 0 ? _a : '', replacements);\n }\n static generateOGMNL(_ = {}) {\n /**\n * Reference: https://www.betaalvereniging.nl/betalingsverkeer/giraal-betalingsverkeer/betalingskenmerken/\n * Check: https://rudhar.com/cgi-bin/chkdigit.cgi\n * Lengte: 16 cijfers\n * Eerste cijfer = controlegetal\n * Controlegetal wordt berekend door alle cijfers te vermenigvuldigen met een gewicht en vervolgens de modulus van 11 te nemen,\n * het controlegetal is 11 min die modulus\n */\n const length = 15; // allowed values: 15, 12, 11, 10, 9, 8, 7\n const needsLengthIdentification = length < 15;\n const L = needsLengthIdentification ? (length % 10) : '';\n // WARNING: lengths other than 15 are not yet supported because it is not clear whether L needs to be used in the calculation of C or not\n const weights = [2, 4, 8, 5, 10, 9, 7, 3, 6, 1]; // repeat if needed (in reverse order!)\n // Warning: we'll reverse the order of the numbers afterwards!\n const numbers = [];\n for (let index = 0; index < length; index++) {\n numbers.push(Math.floor(Math.random() * 10));\n }\n const sum = numbers.reduce((sum, num, index) => {\n const weight = weights[index % (weights.length)];\n return sum + num * weight;\n }, 0);\n let C = 11 - (sum % 11);\n // Transform to 1 number following the specs\n if (C === 11) {\n C = 0;\n }\n if (C === 10) {\n C = 1;\n }\n return C + '' + L + (numbers.reverse().map(n => n + '')).join('');\n }\n static generateOGM(replacements = {}) {\n /**\n * De eerste tien cijfers zijn bijvoorbeeld een klantennummer of een factuurnummer.\n * De laatste twee cijfers vormen het controlegetal dat verkregen wordt door van de\n * voorgaande tien cijfers de rest bij Euclidische deling door 97 te berekenen (modulo 97).\n * Voor en achter de cijfers worden drie plussen (+++) of sterretjes (***) gezet.\n *\n * Uitzondering: Indien de rest 0 bedraagt, dan wordt als controlegetal 97 gebruikt.[1]\n */\n let firstChars = Math.round(Math.random() * 9999999999);\n console.log(' first chars to', firstChars);\n if (replacements.prefix && replacements.prefix.length > 0) {\n // Change first characters\n const number = parseInt(replacements.prefix);\n if (!isNaN(number) && number !== 0) {\n const paddedFirst = (firstChars + '').padStart(10, '0');\n if (replacements.prefix.length === 4) {\n // Add in the middle, not at the start\n firstChars = parseInt((paddedFirst.substring(0, 3) + number.toFixed(0).padStart(4, '0') + paddedFirst.substring(3)).padStart(10, '0').substring(0, 10));\n }\n else {\n firstChars = parseInt((number + paddedFirst).padStart(10, '0').substring(0, 10));\n }\n console.log('Changed first chars to', firstChars);\n }\n }\n let modulo = firstChars % 97;\n if (modulo === 0) {\n modulo = 97;\n }\n const str = (firstChars + '').padStart(10, '0') + (modulo + '').padStart(2, '0');\n return '+++' + str.substr(0, 3) + '/' + str.substr(3, 4) + '/' + str.substr(3 + 4) + '+++';\n }\n static structureOGM(str) {\n if (str.length !== 12) {\n return str;\n }\n return '+++' + str.substr(0, 3) + '/' + str.substr(3, 4) + '/' + str.substr(3 + 4) + '+++';\n }\n}\n__decorate([\n field({ decoder: new EnumDecoder(TransferDescriptionType) })\n], TransferSettings.prototype, \"type\", void 0);\n__decorate([\n field({ decoder: StringDecoder, nullable: true })\n], TransferSettings.prototype, \"prefix\", void 0);\n__decorate([\n field({ decoder: StringDecoder, nullable: true })\n], TransferSettings.prototype, \"iban\", void 0);\n__decorate([\n field({ decoder: StringDecoder, nullable: true })\n], TransferSettings.prototype, \"creditor\", void 0);\n__decorate([\n field({ decoder: StringDecoder, version: 340 })\n], TransferSettings.prototype, \"infoDescription\", void 0);\n//# sourceMappingURL=TransferSettings.js.map","import { __decorate } from \"tslib\";\nimport { ArrayDecoder, AutoEncoder, BooleanDecoder, EnumDecoder, field, IntegerDecoder, MapDecoder, StringDecoder } from '@simonbackx/simple-encoding';\nimport { v4 as uuidv4 } from 'uuid';\nimport { PaymentMethod } from './PaymentMethod';\nimport { TransferSettings } from './webshops/TransferSettings';\nexport class PayconiqAccount extends AutoEncoder {\n constructor() {\n super(...arguments);\n this.merchantId = null;\n this.profileId = null;\n this.name = null;\n this.iban = null;\n this.callbackUrl = null;\n }\n}\n__decorate([\n field({ decoder: StringDecoder, defaultValue: () => uuidv4() })\n], PayconiqAccount.prototype, \"id\", void 0);\n__decorate([\n field({ decoder: StringDecoder })\n], PayconiqAccount.prototype, \"apiKey\", void 0);\n__decorate([\n field({ decoder: StringDecoder, nullable: true })\n], PayconiqAccount.prototype, \"merchantId\", void 0);\n__decorate([\n field({ decoder: StringDecoder, nullable: true })\n], PayconiqAccount.prototype, \"profileId\", void 0);\n__decorate([\n field({ decoder: StringDecoder, nullable: true })\n], PayconiqAccount.prototype, \"name\", void 0);\n__decorate([\n field({ decoder: StringDecoder, nullable: true })\n], PayconiqAccount.prototype, \"iban\", void 0);\n__decorate([\n field({ decoder: StringDecoder, nullable: true })\n], PayconiqAccount.prototype, \"callbackUrl\", void 0);\n/**\n * Should remain private\n */\nexport class PrivatePaymentConfiguration extends AutoEncoder {\n constructor() {\n super(...arguments);\n /**\n * Warning: internal id is used instead of the stripe id\n */\n this.stripeAccountId = null;\n }\n}\n__decorate([\n field({ decoder: StringDecoder, nullable: true, version: 174 })\n], PrivatePaymentConfiguration.prototype, \"stripeAccountId\", void 0);\nexport class AdministrationFeeSettings extends AutoEncoder {\n constructor() {\n super(...arguments);\n /**\n * In pertenthousand ‱\n * 10 = 0,1% discount\n * 1 = 0,01% discount\n */\n this.percentage = 0;\n /**\n * In cents\n */\n this.fixed = 0;\n this.zeroIfZero = true;\n }\n calculate(price) {\n if (price <= 0 && this.zeroIfZero) {\n return 0;\n }\n return Math.round(price * this.percentage / 10000) + this.fixed;\n }\n isEqual(other) {\n return this.percentage === other.percentage && this.fixed === other.fixed && this.zeroIfZero === other.zeroIfZero;\n }\n isZero() {\n return this.percentage === 0 && this.fixed === 0;\n }\n}\n__decorate([\n field({ decoder: IntegerDecoder })\n], AdministrationFeeSettings.prototype, \"percentage\", void 0);\n__decorate([\n field({ decoder: IntegerDecoder })\n], AdministrationFeeSettings.prototype, \"fixed\", void 0);\n__decorate([\n field({ decoder: BooleanDecoder, version: 228 })\n], AdministrationFeeSettings.prototype, \"zeroIfZero\", void 0);\nexport class PaymentMethodSettings extends AutoEncoder {\n constructor() {\n super(...arguments);\n // Note: these settings are public - don't store sensitive information here\n this.minimumAmount = 0;\n /**\n * Only show warning if amount is higher than this\n */\n this.warningAmount = null;\n this.warningText = '';\n /**\n * Disable this payment method for private users\n */\n this.companiesOnly = false;\n }\n}\n__decorate([\n field({ decoder: IntegerDecoder })\n], PaymentMethodSettings.prototype, \"minimumAmount\", void 0);\n__decorate([\n field({ decoder: IntegerDecoder, nullable: true })\n], PaymentMethodSettings.prototype, \"warningAmount\", void 0);\n__decorate([\n field({ decoder: StringDecoder })\n], PaymentMethodSettings.prototype, \"warningText\", void 0);\n__decorate([\n field({ decoder: BooleanDecoder })\n], PaymentMethodSettings.prototype, \"companiesOnly\", void 0);\nexport class PaymentConfiguration extends AutoEncoder {\n constructor() {\n super(...arguments);\n this.transferSettings = TransferSettings.create({});\n this.paymentMethods = [];\n this.administrationFee = AdministrationFeeSettings.create({});\n this.paymentMethodSettings = new Map();\n }\n getAvailablePaymentMethods(data) {\n return this.paymentMethods.filter((method) => {\n const settings = this.paymentMethodSettings.get(method);\n if (!settings) {\n // No special settings, always available\n return true;\n }\n if (data.amount < settings.minimumAmount) {\n return false;\n }\n if (settings.companiesOnly && (!data.customer || !data.customer.company)) {\n return false;\n }\n return true;\n });\n }\n}\n__decorate([\n field({ decoder: TransferSettings })\n], PaymentConfiguration.prototype, \"transferSettings\", void 0);\n__decorate([\n field({ decoder: new ArrayDecoder(new EnumDecoder(PaymentMethod)) })\n], PaymentConfiguration.prototype, \"paymentMethods\", void 0);\n__decorate([\n field({ decoder: AdministrationFeeSettings })\n], PaymentConfiguration.prototype, \"administrationFee\", void 0);\n__decorate([\n field({ decoder: new MapDecoder(new EnumDecoder(PaymentMethod), PaymentMethodSettings), version: 340 })\n], PaymentConfiguration.prototype, \"paymentMethodSettings\", void 0);\n//# sourceMappingURL=PaymentConfiguration.js.map","import { __decorate } from \"tslib\";\nimport { ArrayDecoder, AutoEncoder, BooleanDecoder, DateDecoder, EnumDecoder, field, IntegerDecoder, MapDecoder, StringDecoder } from '@simonbackx/simple-encoding';\nimport { Colors } from '@stamhoofd/utility';\nimport { Address } from './addresses/Address';\nimport { STPackageStatus, STPackageType } from './billing/STPackage';\nimport { Company } from './Company';\nimport { Replacement } from './endpoints/EmailRequest';\nimport { File } from './files/File';\nimport { Image } from './files/Image';\nimport { GroupCategory } from './GroupCategory';\nimport { OrganizationRecordsConfiguration } from './members/OrganizationRecordsConfiguration';\nimport { OldGroupPrices } from './OldGroupPrices';\nimport { OrganizationGenderType } from './OrganizationGenderType';\nimport { OrganizationType } from './OrganizationType';\nimport { PaymentConfiguration } from './PaymentConfiguration';\nimport { PaymentMethod } from './PaymentMethod';\nimport { UmbrellaOrganization } from './UmbrellaOrganization';\nimport { TransferSettings } from './webshops/TransferSettings';\nexport class OrganizationPackages extends AutoEncoder {\n constructor() {\n super(...arguments);\n this.packages = new Map();\n }\n isActive(type) {\n if (STAMHOOFD.userMode === 'platform') {\n return true;\n }\n const status = this.packages.get(type);\n if (!status) {\n return false;\n }\n if (!status.isActive) {\n return false;\n }\n return true;\n }\n /**\n * Return amount of ms this package has been active for\n */\n getActiveTime(type) {\n const status = this.packages.get(type);\n if (!status) {\n return null;\n }\n if (!status.isActive) {\n return null;\n }\n return Math.max(0, Date.now() - status.startDate.getTime());\n }\n wasActive(type) {\n const status = this.packages.get(type);\n if (!status) {\n return false;\n }\n if (!status.wasActive) {\n return false;\n }\n return true;\n }\n /**\n * Return amount of ms this package has been active for\n */\n getDeactivatedTime(type) {\n const status = this.packages.get(type);\n if (!status) {\n return null;\n }\n if (!status.wasActive) {\n return null;\n }\n const deactivateDate = status.deactivateDate;\n if (deactivateDate === null) {\n return null;\n }\n return Math.max(0, Date.now() - deactivateDate.getTime());\n }\n get useMembers() {\n return this.isActive(STPackageType.Members) || this.isActive(STPackageType.LegacyMembers) || this.isActive(STPackageType.TrialMembers);\n }\n set useMembers(_) {\n console.warn('Deprected set on useMembers');\n }\n get canStartMembersTrial() {\n return !this.useMembers && !this.wasActive(STPackageType.Members);\n }\n get isMembersTrial() {\n return !this.isActive(STPackageType.Members) && !this.isActive(STPackageType.LegacyMembers) && this.isActive(STPackageType.TrialMembers);\n }\n get isActivitiesTrial() {\n return !this.isActive(STPackageType.Members) && this.isActive(STPackageType.LegacyMembers) && this.isActive(STPackageType.TrialMembers);\n }\n get isWebshopsTrial() {\n return !this.isActive(STPackageType.Webshops) && !this.isActive(STPackageType.SingleWebshop) && this.isActive(STPackageType.TrialWebshops);\n }\n get canStartWebshopsTrial() {\n return !this.useWebshops && !this.wasActive(STPackageType.Webshops) && !this.wasActive(STPackageType.SingleWebshop);\n }\n get useWebshops() {\n return this.webshopLimit > 0;\n }\n set useWebshops(_) {\n console.warn('Deprected set on useWebshops');\n }\n get webshopLimit() {\n if (this.isActive(STPackageType.Webshops)) {\n return 10;\n }\n if (this.isActive(STPackageType.SingleWebshop)) {\n return 1;\n }\n if (this.isActive(STPackageType.TrialWebshops)) {\n return 10;\n }\n return 0;\n }\n get disableActivities() {\n return !this.useActivities;\n }\n get useActivities() {\n return this.isActive(STPackageType.Members) || this.isActive(STPackageType.TrialMembers);\n }\n get isPaid() {\n return this.isActive(STPackageType.Members) || this.isActive(STPackageType.LegacyMembers) || this.isActive(STPackageType.Webshops) || this.isActive(STPackageType.SingleWebshop);\n }\n get wasPaid() {\n return this.wasActive(STPackageType.Members) || this.wasActive(STPackageType.LegacyMembers) || this.wasActive(STPackageType.Webshops) || this.wasActive(STPackageType.SingleWebshop);\n }\n}\n__decorate([\n field({ decoder: new MapDecoder(new EnumDecoder(STPackageType), STPackageStatus) })\n], OrganizationPackages.prototype, \"packages\", void 0);\n/**\n * @deprecated\n */\nexport class OrganizationModules extends AutoEncoder {\n constructor() {\n super(...arguments);\n this.useMembers = false;\n this.useWebshops = false;\n /**\n * We use inverse property here because this can only be used in combination with useMembers == true\n */\n this.disableActivities = false;\n }\n get useActivities() {\n return this.useMembers && !this.disableActivities;\n }\n}\n__decorate([\n field({ decoder: BooleanDecoder })\n], OrganizationModules.prototype, \"useMembers\", void 0);\n__decorate([\n field({ decoder: BooleanDecoder })\n], OrganizationModules.prototype, \"useWebshops\", void 0);\n__decorate([\n field({ decoder: BooleanDecoder, version: 63 })\n], OrganizationModules.prototype, \"disableActivities\", void 0);\nexport class OrganizationMetaData extends AutoEncoder {\n constructor() {\n var _a, _b;\n super(...arguments);\n /**\n * Last time the organization signed the terms. Null means the creation date of the organization.\n */\n this.lastSignedTerms = null;\n this.type = OrganizationType.Other;\n /**\n * Contains the ids of the tags\n */\n this.tags = [];\n /**\n * Show beta features in this organization\n */\n this.enableBetaFeatures = false;\n /**\n * @deprecated Only used for migrations\n */\n this.modulesOld = OrganizationModules.create({});\n this.packages = OrganizationPackages.create({});\n this.umbrellaOrganization = null;\n /**\n * Set either file or url for the privacy policy. If both are set, the url has priority\n */\n this.privacyPolicyFile = null;\n this.privacyPolicyUrl = null;\n /**\n * Logo used in a horizontal environment (e.g. menu bar)\n */\n this.horizontalLogo = null;\n /**\n * Logo to display (small)\n */\n this.squareLogo = null;\n this.expandLogo = false;\n this.horizontalLogoDark = null;\n this.squareLogoDark = null;\n this.color = null;\n // Everything below should move to registrations meta data\n /**\n * @deprecated\n */\n this.expectedMemberCount = 0;\n /**\n * @deprecated\n */\n this.genderType = OrganizationGenderType.Mixed;\n /**\n * @deprecated\n */\n this.defaultStartDate = new Date();\n /**\n * @deprecated\n */\n this.defaultEndDate = new Date();\n /**\n * @deprecated\n */\n this.defaultPrices = [];\n /**\n * @deprecated\n * Use registrationPaymentConfiguration.transferSettings instead\n */\n this.oldTransferSettings = TransferSettings.create({});\n /**\n * @deprecated\n * Use registrationPaymentConfiguration.paymentMethods instead\n */\n this.oldPaymentMethods = [PaymentMethod.Transfer];\n this.registrationPaymentConfiguration = PaymentConfiguration.create({ paymentMethods: [PaymentMethod.PointOfSale] });\n /**\n * @deprecated Moved to companies\n */\n this.companyName = null;\n /**\n * @deprecated Moved to companies\n */\n this.VATNumber = null;\n /**\n * @deprecated Moved to companies\n */\n this.companyNumber = null;\n /**\n * @deprecated Moved to companies\n */\n this.companyAddress = null;\n this.companies = [];\n /**\n * @deprecated\n * Use OrganizationRegistrationPeriod instead\n *\n * All the available categories\n */\n this.categories = [GroupCategory.create({ id: 'root' })]; // we use ID root here because this ID needs to stay the same since it won't be saved\n /**\n * @deprecated\n * Use OrganizationRegistrationPeriod instead\n *\n * We use one invisible root category to simplify the difference between non-root and root category\n */\n this.rootCategoryId = (_b = (_a = this.categories[0]) === null || _a === void 0 ? void 0 : _a.id) !== null && _b !== void 0 ? _b : '';\n }\n get didAcceptLatestTerms() {\n return this.lastSignedTerms !== null && this.lastSignedTerms >= new Date(2022, 0, 20, 0, 0, 0, 0);\n }\n get didAcceptEndToEndEncryptionRemoval() {\n return this.lastSignedTerms !== null && this.lastSignedTerms >= new Date(2022, 0, 20, 0, 0, 0, 0);\n }\n /**\n * @deprecated\n * Use packages\n */\n get modules() {\n return this.packages;\n }\n set modules(_) {\n console.error('Deprecated set on modules');\n }\n /**\n * @deprecated\n * Use registrationPaymentConfiguration.paymentMethods instead\n */\n get paymentMethods() {\n return this.registrationPaymentConfiguration.paymentMethods;\n }\n /**\n * @deprecated\n * Use registrationPaymentConfiguration.paymentMethods instead\n */\n get transferSettings() {\n return this.registrationPaymentConfiguration.transferSettings;\n }\n /**\n * @deprecated\n * Use OrganizationRegistrationPeriod instead\n *\n * (todo) Contains the fully build hierarchy without the need for ID lookups. Try not to use this tree when modifying it.\n */\n get rootCategory() {\n return this.categories.find(c => c.id === this.rootCategoryId);\n }\n getEmailReplacements() {\n if (!this.color) {\n return [];\n }\n return [\n Replacement.create({\n token: 'primaryColor',\n value: this.color ? this.color : '#0053ff',\n }),\n Replacement.create({\n token: 'primaryColorContrast',\n value: this.color ? Colors.getContrastColor(this.color) : '#fff',\n }),\n ];\n }\n /**\n * True if at least one id matches\n */\n matchTags(ids) {\n for (const id of ids) {\n if (this.tags.includes(id)) {\n return true;\n }\n }\n return false;\n }\n}\n__decorate([\n field({ decoder: DateDecoder, nullable: true, version: 147 })\n], OrganizationMetaData.prototype, \"lastSignedTerms\", void 0);\n__decorate([\n field({ decoder: new EnumDecoder(OrganizationType) })\n], OrganizationMetaData.prototype, \"type\", void 0);\n__decorate([\n field({ decoder: new ArrayDecoder(StringDecoder), version: 260 })\n], OrganizationMetaData.prototype, \"tags\", void 0);\n__decorate([\n field({ decoder: BooleanDecoder, version: 108 })\n], OrganizationMetaData.prototype, \"enableBetaFeatures\", void 0);\n__decorate([\n field({ decoder: OrganizationModules, version: 48, upgrade: () => OrganizationModules.create({ useMembers: true, useWebshops: true }), field: 'modules' })\n], OrganizationMetaData.prototype, \"modulesOld\", void 0);\n__decorate([\n field({ decoder: OrganizationPackages, version: 87 })\n], OrganizationMetaData.prototype, \"packages\", void 0);\n__decorate([\n field({ decoder: new EnumDecoder(UmbrellaOrganization), nullable: true })\n], OrganizationMetaData.prototype, \"umbrellaOrganization\", void 0);\n__decorate([\n field({ decoder: File, nullable: true, version: 25 })\n], OrganizationMetaData.prototype, \"privacyPolicyFile\", void 0);\n__decorate([\n field({ decoder: StringDecoder, nullable: true, version: 25 })\n], OrganizationMetaData.prototype, \"privacyPolicyUrl\", void 0);\n__decorate([\n field({ decoder: Image, nullable: true, version: 11 })\n], OrganizationMetaData.prototype, \"horizontalLogo\", void 0);\n__decorate([\n field({ decoder: Image, nullable: true, version: 11 })\n], OrganizationMetaData.prototype, \"squareLogo\", void 0);\n__decorate([\n field({ decoder: BooleanDecoder, optional: true })\n], OrganizationMetaData.prototype, \"expandLogo\", void 0);\n__decorate([\n field({ decoder: Image, nullable: true, version: 185 })\n], OrganizationMetaData.prototype, \"horizontalLogoDark\", void 0);\n__decorate([\n field({ decoder: Image, nullable: true, version: 185 })\n], OrganizationMetaData.prototype, \"squareLogoDark\", void 0);\n__decorate([\n field({ decoder: StringDecoder, nullable: true, version: 21 })\n], OrganizationMetaData.prototype, \"color\", void 0);\n__decorate([\n field({ decoder: IntegerDecoder, optional: true })\n], OrganizationMetaData.prototype, \"expectedMemberCount\", void 0);\n__decorate([\n field({ decoder: new EnumDecoder(OrganizationGenderType), optional: true })\n], OrganizationMetaData.prototype, \"genderType\", void 0);\n__decorate([\n field({ decoder: DateDecoder, optional: true })\n], OrganizationMetaData.prototype, \"defaultStartDate\", void 0);\n__decorate([\n field({ decoder: DateDecoder, optional: true })\n], OrganizationMetaData.prototype, \"defaultEndDate\", void 0);\n__decorate([\n field({ decoder: new ArrayDecoder(OldGroupPrices), optional: true })\n], OrganizationMetaData.prototype, \"defaultPrices\", void 0);\n__decorate([\n field({\n decoder: TransferSettings,\n version: 50,\n field: 'transferSettings',\n optional: true, // We no longer expect this from the backend, so it can get removed in a future version\n }),\n field({\n decoder: TransferSettings,\n version: 208,\n field: 'oldTransferSettings',\n optional: true, // We no longer expect this from the backend, so it can get removed in a future version\n downgrade: function () {\n return this.transferSettings;\n },\n })\n], OrganizationMetaData.prototype, \"oldTransferSettings\", void 0);\n__decorate([\n field({\n decoder: new ArrayDecoder(new EnumDecoder(PaymentMethod)),\n version: 151,\n field: 'paymentMethods',\n optional: true,\n }),\n field({\n decoder: new ArrayDecoder(new EnumDecoder(PaymentMethod)),\n version: 208,\n field: 'oldPaymentMethods',\n optional: true, // We no longer expect this from the backend, so it can get removed in a future version\n downgrade: function () {\n // This return value for old clients\n return this.paymentMethods;\n },\n })\n], OrganizationMetaData.prototype, \"oldPaymentMethods\", void 0);\n__decorate([\n field({\n decoder: PaymentConfiguration,\n version: 204,\n upgrade: function () {\n return PaymentConfiguration.create({\n transferSettings: this.oldTransferSettings,\n paymentMethods: this.oldPaymentMethods,\n });\n },\n })\n], OrganizationMetaData.prototype, \"registrationPaymentConfiguration\", void 0);\n__decorate([\n field({\n decoder: OrganizationRecordsConfiguration,\n version: 53,\n defaultValue: () => OrganizationRecordsConfiguration.create({}),\n })\n], OrganizationMetaData.prototype, \"recordsConfiguration\", void 0);\n__decorate([\n field({ decoder: StringDecoder, nullable: true, version: 113, field: 'companyName', optional: true })\n], OrganizationMetaData.prototype, \"companyName\", void 0);\n__decorate([\n field({ decoder: StringDecoder, nullable: true, version: 113, field: 'VATNumber', optional: true })\n], OrganizationMetaData.prototype, \"VATNumber\", void 0);\n__decorate([\n field({ decoder: StringDecoder, nullable: true, version: 113, field: 'companyNumber', optional: true })\n], OrganizationMetaData.prototype, \"companyNumber\", void 0);\n__decorate([\n field({ decoder: Address, nullable: true, version: 113, field: 'companyAddress', optional: true })\n], OrganizationMetaData.prototype, \"companyAddress\", void 0);\n__decorate([\n field({ decoder: new ArrayDecoder(Company), upgrade: function () {\n var _a;\n return (this.companyName || this.VATNumber || this.companyNumber || this.companyAddress)\n ? [\n Company.create({\n id: 'default', // required we have stable ids in upgrades\n name: (_a = this.companyName) !== null && _a !== void 0 ? _a : '',\n VATNumber: this.VATNumber,\n companyNumber: this.companyNumber,\n address: this.companyAddress,\n }),\n ]\n : [];\n }, version: 322 })\n], OrganizationMetaData.prototype, \"companies\", void 0);\n__decorate([\n field({\n decoder: new ArrayDecoder(GroupCategory),\n version: 57,\n })\n], OrganizationMetaData.prototype, \"categories\", void 0);\n__decorate([\n field({\n decoder: StringDecoder,\n version: 57,\n })\n], OrganizationMetaData.prototype, \"rootCategoryId\", void 0);\n//# sourceMappingURL=OrganizationMetaData.js.map","import { __decorate } from \"tslib\";\nimport { AutoEncoder, DateDecoder, EnumDecoder, field, StringDecoder } from '@simonbackx/simple-encoding';\nimport { SimpleErrors } from '@simonbackx/simple-errors';\nimport { v4 as uuidv4 } from 'uuid';\nexport var DNSRecordType;\n(function (DNSRecordType) {\n DNSRecordType[\"CNAME\"] = \"CNAME\";\n DNSRecordType[\"TXT\"] = \"TXT\";\n})(DNSRecordType || (DNSRecordType = {}));\nexport var DNSRecordStatus;\n(function (DNSRecordStatus) {\n DNSRecordStatus[\"Pending\"] = \"Pending\";\n DNSRecordStatus[\"Failed\"] = \"Failed\";\n DNSRecordStatus[\"Valid\"] = \"Valid\";\n})(DNSRecordStatus || (DNSRecordStatus = {}));\nexport class DNSRecord extends AutoEncoder {\n constructor() {\n super(...arguments);\n this.status = DNSRecordStatus.Pending;\n this.errors = null;\n }\n}\n__decorate([\n field({ decoder: StringDecoder, defaultValue: () => uuidv4() })\n], DNSRecord.prototype, \"id\", void 0);\n__decorate([\n field({ decoder: new EnumDecoder(DNSRecordType) })\n], DNSRecord.prototype, \"type\", void 0);\n__decorate([\n field({ decoder: StringDecoder })\n], DNSRecord.prototype, \"name\", void 0);\n__decorate([\n field({ decoder: StringDecoder })\n], DNSRecord.prototype, \"value\", void 0);\n__decorate([\n field({ decoder: new EnumDecoder(DNSRecordStatus) })\n], DNSRecord.prototype, \"status\", void 0);\n__decorate([\n field({ decoder: DateDecoder, defaultValue: () => new Date() })\n], DNSRecord.prototype, \"createdAt\", void 0);\n__decorate([\n field({ decoder: SimpleErrors, nullable: true, version: 7 })\n], DNSRecord.prototype, \"errors\", void 0);\n//# sourceMappingURL=DNSRecord.js.map","export var PaymentProvider;\n(function (PaymentProvider) {\n PaymentProvider[\"Mollie\"] = \"Mollie\";\n PaymentProvider[\"Payconiq\"] = \"Payconiq\";\n PaymentProvider[\"Buckaroo\"] = \"Buckaroo\";\n PaymentProvider[\"Stripe\"] = \"Stripe\";\n})(PaymentProvider || (PaymentProvider = {}));\n//# sourceMappingURL=PaymentProvider.js.map","import { __decorate } from \"tslib\";\nimport { ArrayDecoder, AutoEncoder, BooleanDecoder, DateDecoder, EnumDecoder, field, IntegerDecoder, StringDecoder } from '@simonbackx/simple-encoding';\nimport { Premise } from './addresses/Premise';\nimport { DNSRecord } from './DNSRecord';\nimport { MemberResponsibility } from './MemberResponsibility';\nimport { OrganizationEmail } from './OrganizationEmail';\nimport { PayconiqAccount, PrivatePaymentConfiguration } from './PaymentConfiguration';\nimport { PaymentMethod } from './PaymentMethod';\nimport { PaymentProvider } from './PaymentProvider';\nimport { PermissionRoleDetailed, PermissionRoleForResponsibility } from './PermissionRole';\nexport class CreditItem extends AutoEncoder {\n constructor() {\n super(...arguments);\n /**\n * Credits in cents\n */\n this.change = 0;\n /**\n * Credits in cents\n */\n this.date = new Date();\n }\n /**\n * tmp fix\n */\n static patchIdentifier() {\n return StringDecoder;\n }\n}\n__decorate([\n field({ decoder: IntegerDecoder })\n], CreditItem.prototype, \"change\", void 0);\n__decorate([\n field({ decoder: DateDecoder })\n], CreditItem.prototype, \"date\", void 0);\n__decorate([\n field({ decoder: StringDecoder })\n], CreditItem.prototype, \"description\", void 0);\nexport var MollieStatus;\n(function (MollieStatus) {\n MollieStatus[\"NeedsData\"] = \"NeedsData\";\n MollieStatus[\"InReview\"] = \"InReview\";\n MollieStatus[\"Completed\"] = \"Completed\";\n})(MollieStatus || (MollieStatus = {}));\nexport var AcquisitionType;\n(function (AcquisitionType) {\n AcquisitionType[\"Recommended\"] = \"Recommended\";\n AcquisitionType[\"Seen\"] = \"Seen\";\n AcquisitionType[\"SocialMedia\"] = \"SocialMedia\";\n AcquisitionType[\"Search\"] = \"Search\";\n AcquisitionType[\"Other\"] = \"Other\";\n})(AcquisitionType || (AcquisitionType = {}));\nexport var MollieProfileMode;\n(function (MollieProfileMode) {\n MollieProfileMode[\"Test\"] = \"test\";\n MollieProfileMode[\"Live\"] = \"live\";\n})(MollieProfileMode || (MollieProfileMode = {}));\nexport var MollieProfileStatus;\n(function (MollieProfileStatus) {\n MollieProfileStatus[\"Unverified\"] = \"unverified\";\n MollieProfileStatus[\"Verified\"] = \"verified\";\n MollieProfileStatus[\"Blocked\"] = \"blocked\";\n})(MollieProfileStatus || (MollieProfileStatus = {}));\nexport class MollieProfile extends AutoEncoder {\n}\n__decorate([\n field({ decoder: StringDecoder })\n], MollieProfile.prototype, \"id\", void 0);\n__decorate([\n field({ decoder: new EnumDecoder(MollieProfileMode) })\n], MollieProfile.prototype, \"mode\", void 0);\n__decorate([\n field({ decoder: StringDecoder })\n], MollieProfile.prototype, \"name\", void 0);\n__decorate([\n field({ decoder: StringDecoder })\n], MollieProfile.prototype, \"website\", void 0);\n__decorate([\n field({ decoder: new EnumDecoder(MollieProfileStatus) })\n], MollieProfile.prototype, \"status\", void 0);\nexport class MollieOnboarding extends AutoEncoder {\n constructor() {\n super(...arguments);\n this.canReceivePayments = false;\n this.canReceiveSettlements = false;\n }\n}\n__decorate([\n field({ decoder: BooleanDecoder })\n], MollieOnboarding.prototype, \"canReceivePayments\", void 0);\n__decorate([\n field({ decoder: BooleanDecoder })\n], MollieOnboarding.prototype, \"canReceiveSettlements\", void 0);\n__decorate([\n field({ decoder: new EnumDecoder(MollieStatus) })\n], MollieOnboarding.prototype, \"status\", void 0);\nexport class BuckarooSettings extends AutoEncoder {\n constructor() {\n super(...arguments);\n this.key = '';\n this.secret = '';\n this.paymentMethods = [PaymentMethod.Bancontact, PaymentMethod.iDEAL, PaymentMethod.Payconiq];\n }\n}\n__decorate([\n field({ decoder: StringDecoder })\n], BuckarooSettings.prototype, \"key\", void 0);\n__decorate([\n field({ decoder: StringDecoder })\n], BuckarooSettings.prototype, \"secret\", void 0);\n__decorate([\n field({ decoder: new ArrayDecoder(new EnumDecoder(PaymentMethod)) })\n], BuckarooSettings.prototype, \"paymentMethods\", void 0);\nexport class OrganizationPrivateMetaData extends AutoEncoder {\n constructor() {\n super(...arguments);\n /**\n * @deprecated\n */\n this.privateKey = null;\n /**\n * DNS records that need to be set in order to activate mail domain and registration domain\n */\n this.dnsRecords = [];\n /**\n * Register domain that is awaiting validation\n */\n this.pendingRegisterDomain = null;\n /**\n * Mail domain that is awaiting validation\n */\n this.pendingMailDomain = null;\n /**\n * The mail from domain that should be used (if validated).\n * This domain should have the SPF record and MX records needed to handle bounces\n */\n this.mailFromDomain = null;\n /**\n * Mail domain that is used to send e-mails. You can't set this directly, the server will set this value as soon as the domain has been validated.\n */\n this.mailDomain = null;\n this.mailDomainActive = false;\n /**\n * E-mail addresses that an organization can send from (or reply-to)\n */\n this.emails = [];\n /**\n * @deprecated\n * Credits in cents\n */\n this.credits = [];\n // readonly\n this.mollieOnboarding = null;\n this.mollieProfile = null;\n /**\n * When set, Buckaroo has priority over Mollie as a payment provider\n */\n this.buckarooSettings = null;\n this.registrationPaymentConfiguration = PrivatePaymentConfiguration.create({});\n this.featureFlags = [];\n /**\n * Null = use environment default\n */\n this.useTestPayments = null;\n // Only set for admins\n this.payconiqAccounts = [];\n this.acquisitionTypes = [];\n this.roles = [];\n this.responsibilities = [];\n /**\n * Link responsibility type ids to roles that should be auto-applied for users linked to members with those responsibilities\n */\n this.inheritedResponsibilityRoles = [];\n this.billingContact = null;\n /**\n * @deprecated\n * Moved to public meta data. Do not use.\n */\n this.VATNumber = null;\n this.premises = [];\n }\n /**\n * @deprecated\n */\n get registrationProviderConfiguration() {\n return this.registrationPaymentConfiguration;\n }\n get payconiqApiKey() {\n if (this.payconiqAccounts.length === 0) {\n return null;\n }\n return this.payconiqAccounts[0].apiKey;\n }\n getPaymentProviderFor(method, stripeAccountMeta) {\n var _a;\n if (method === PaymentMethod.Unknown || method === PaymentMethod.Transfer || method === PaymentMethod.PointOfSale) {\n return null;\n }\n if (this.payconiqApiKey && method === PaymentMethod.Payconiq) {\n return PaymentProvider.Payconiq;\n }\n if (stripeAccountMeta) {\n if (stripeAccountMeta.paymentMethods.includes(method)) {\n return PaymentProvider.Stripe;\n }\n }\n // Is Buckaroo setup?\n if (this.buckarooSettings !== null) {\n if (this.buckarooSettings.paymentMethods.includes(method)) {\n return PaymentProvider.Buckaroo;\n }\n }\n if ((this.mollieOnboarding && (((_a = this.mollieOnboarding) === null || _a === void 0 ? void 0 : _a.canReceivePayments) || this.useTestPayments)) && (method == PaymentMethod.Bancontact || method == PaymentMethod.iDEAL || method == PaymentMethod.CreditCard)) {\n return PaymentProvider.Mollie;\n }\n return null;\n }\n}\n__decorate([\n field({ decoder: StringDecoder, version: 149, nullable: true })\n], OrganizationPrivateMetaData.prototype, \"privateKey\", void 0);\n__decorate([\n field({ decoder: new ArrayDecoder(DNSRecord), version: 6 })\n], OrganizationPrivateMetaData.prototype, \"dnsRecords\", void 0);\n__decorate([\n field({ decoder: StringDecoder, nullable: true, version: 84 })\n], OrganizationPrivateMetaData.prototype, \"pendingRegisterDomain\", void 0);\n__decorate([\n field({ decoder: StringDecoder, nullable: true, version: 6 })\n], OrganizationPrivateMetaData.prototype, \"pendingMailDomain\", void 0);\n__decorate([\n field({ decoder: StringDecoder, nullable: true, version: 84 })\n], OrganizationPrivateMetaData.prototype, \"mailFromDomain\", void 0);\n__decorate([\n field({ decoder: StringDecoder, nullable: true, version: 6 })\n], OrganizationPrivateMetaData.prototype, \"mailDomain\", void 0);\n__decorate([\n field({ decoder: BooleanDecoder, version: 8 })\n], OrganizationPrivateMetaData.prototype, \"mailDomainActive\", void 0);\n__decorate([\n field({ decoder: new ArrayDecoder(OrganizationEmail), version: 9 })\n], OrganizationPrivateMetaData.prototype, \"emails\", void 0);\n__decorate([\n field({ decoder: new ArrayDecoder(CreditItem), version: 23, optional: true })\n], OrganizationPrivateMetaData.prototype, \"credits\", void 0);\n__decorate([\n field({ decoder: MollieOnboarding, nullable: true, version: 27 })\n], OrganizationPrivateMetaData.prototype, \"mollieOnboarding\", void 0);\n__decorate([\n field({ decoder: MollieProfile, nullable: true, version: 200 })\n], OrganizationPrivateMetaData.prototype, \"mollieProfile\", void 0);\n__decorate([\n field({ decoder: BuckarooSettings, nullable: true, version: 152 })\n], OrganizationPrivateMetaData.prototype, \"buckarooSettings\", void 0);\n__decorate([\n field({ decoder: PrivatePaymentConfiguration, version: 176, field: 'registrationProviderConfiguration' }),\n field({ decoder: PrivatePaymentConfiguration, version: 204 })\n], OrganizationPrivateMetaData.prototype, \"registrationPaymentConfiguration\", void 0);\n__decorate([\n field({ decoder: new ArrayDecoder(StringDecoder), version: 161 })\n], OrganizationPrivateMetaData.prototype, \"featureFlags\", void 0);\n__decorate([\n field({ decoder: BooleanDecoder, nullable: true, version: 154 })\n], OrganizationPrivateMetaData.prototype, \"useTestPayments\", void 0);\n__decorate([\n field({ decoder: StringDecoder, nullable: true, version: 29, field: 'payconiqApiKey' }),\n field({\n decoder: new ArrayDecoder(PayconiqAccount),\n version: 206,\n upgrade: (oldValue) => {\n if (oldValue === null) {\n return [];\n }\n return [PayconiqAccount.create({ apiKey: oldValue })];\n },\n downgrade: (newValue) => {\n if (newValue.length === 0) {\n return null;\n }\n return newValue[0].apiKey;\n },\n })\n], OrganizationPrivateMetaData.prototype, \"payconiqAccounts\", void 0);\n__decorate([\n field({ decoder: new ArrayDecoder(new EnumDecoder(AcquisitionType)), version: 56 })\n], OrganizationPrivateMetaData.prototype, \"acquisitionTypes\", void 0);\n__decorate([\n field({ decoder: new ArrayDecoder(PermissionRoleDetailed), version: 60 })\n], OrganizationPrivateMetaData.prototype, \"roles\", void 0);\n__decorate([\n field({ decoder: new ArrayDecoder(MemberResponsibility), version: 280 })\n], OrganizationPrivateMetaData.prototype, \"responsibilities\", void 0);\n__decorate([\n field({ decoder: new ArrayDecoder(PermissionRoleForResponsibility), version: 280 })\n], OrganizationPrivateMetaData.prototype, \"inheritedResponsibilityRoles\", void 0);\n__decorate([\n field({ decoder: StringDecoder, nullable: true, version: 88 })\n], OrganizationPrivateMetaData.prototype, \"billingContact\", void 0);\n__decorate([\n field({ decoder: StringDecoder, nullable: true, version: 86, optional: true })\n], OrganizationPrivateMetaData.prototype, \"VATNumber\", void 0);\n__decorate([\n field({ decoder: new ArrayDecoder(Premise), version: 319 })\n], OrganizationPrivateMetaData.prototype, \"premises\", void 0);\n//# sourceMappingURL=OrganizationPrivateMetaData.js.map","import { __decorate } from \"tslib\";\nimport { ArrayDecoder, AutoEncoder, BooleanDecoder, field, StringDecoder } from '@simonbackx/simple-encoding';\nimport { v4 as uuidv4 } from 'uuid';\nexport class Category extends AutoEncoder {\n constructor() {\n super(...arguments);\n this.name = '';\n this.description = '';\n this.enabled = true;\n this.productIds = [];\n }\n}\n__decorate([\n field({ decoder: StringDecoder, defaultValue: () => uuidv4() })\n], Category.prototype, \"id\", void 0);\n__decorate([\n field({ decoder: StringDecoder })\n], Category.prototype, \"name\", void 0);\n__decorate([\n field({ decoder: StringDecoder })\n], Category.prototype, \"description\", void 0);\n__decorate([\n field({ decoder: BooleanDecoder })\n], Category.prototype, \"enabled\", void 0);\n__decorate([\n field({ decoder: new ArrayDecoder(StringDecoder) })\n], Category.prototype, \"productIds\", void 0);\n//# sourceMappingURL=Category.js.map","import { __decorate } from \"tslib\";\nimport { ArrayDecoder, AutoEncoder, BooleanDecoder, EnumDecoder, field, IntegerDecoder, StringDecoder } from '@simonbackx/simple-encoding';\nimport { v4 as uuidv4 } from 'uuid';\nexport class SeatingSizeConfiguration {\n constructor(config) {\n this.seatWidth = 30;\n this.seatHeight = 30;\n this.seatXSpacing = 10;\n this.seatYSpacing = 10;\n Object.assign(this, config);\n }\n}\nexport var SeatMarkings;\n(function (SeatMarkings) {\n SeatMarkings[\"DisabledPerson\"] = \"dp\";\n})(SeatMarkings || (SeatMarkings = {}));\nexport var SeatType;\n(function (SeatType) {\n SeatType[\"Seat\"] = \"s\";\n SeatType[\"Space\"] = \"sp\";\n})(SeatType || (SeatType = {}));\n// Note: we don't use ids for seats and rows\n// 1. To make changes easier (human understandable if seats are moved added or removed)\n// 2. To avoid creating huge objects that take a lot of space in the database/network requests\nexport class SeatingPlanSeat extends AutoEncoder {\n constructor() {\n super(...arguments);\n /**\n * Name of the seat.\n * E.g. '1'\n */\n this.label = '';\n /**\n * Default block width = 2, which equals 1 seat -> allow to jump in halves\n */\n this.blockWidth = 2;\n /**\n * Grow factor (automatically increase width of seat)\n */\n this.grow = 0;\n this.type = SeatType.Seat;\n this.markings = [];\n // Cached drawing position\n this.x = 0;\n this.y = 0;\n this.width = 0;\n this.height = 0;\n // Unique id for rendering\n this.uuid = uuidv4();\n }\n get isSpace() {\n return this.type === SeatType.Space;\n }\n get isValidSeat() {\n return this.type === SeatType.Seat && this.label !== '';\n }\n setPosition(x, y, width, height) {\n this.x = x;\n this.y = y;\n this.width = width;\n this.height = height;\n }\n}\n__decorate([\n field({ decoder: StringDecoder, field: 'l' })\n], SeatingPlanSeat.prototype, \"label\", void 0);\n__decorate([\n field({ decoder: StringDecoder, field: 'c', optional: true, nullable: true })\n], SeatingPlanSeat.prototype, \"category\", void 0);\n__decorate([\n field({ decoder: IntegerDecoder, field: 'w', optional: true })\n], SeatingPlanSeat.prototype, \"blockWidth\", void 0);\n__decorate([\n field({ decoder: IntegerDecoder, field: 'g', optional: true })\n], SeatingPlanSeat.prototype, \"grow\", void 0);\n__decorate([\n field({ decoder: new EnumDecoder(SeatType), field: 't', optional: true })\n], SeatingPlanSeat.prototype, \"type\", void 0);\n__decorate([\n field({ decoder: new ArrayDecoder(new EnumDecoder(SeatMarkings)), optional: true, field: 'm' })\n], SeatingPlanSeat.prototype, \"markings\", void 0);\nexport class SeatingPlanRow extends AutoEncoder {\n constructor() {\n super(...arguments);\n /**\n * Name of the row\n * E.g. 'A'\n */\n this.label = '';\n this.seats = [];\n // Cached drawing positions\n this.x = 0;\n this.y = 0;\n this.height = 0;\n this.width = 0;\n // Unique id for rendering\n this.uuid = uuidv4();\n }\n get seatCount() {\n let count = 0;\n for (const seat of this.seats) {\n if (seat.isValidSeat) {\n count += 1;\n }\n }\n return count;\n }\n getWidth(config) {\n if (this.seats.length === 0) {\n return config.seatWidth;\n }\n let width = -config.seatXSpacing;\n for (const seat of this.seats) {\n width += config.seatWidth * seat.blockWidth / 2 + config.seatXSpacing + Math.floor(config.seatXSpacing * (seat.blockWidth - 2) / 2);\n }\n return width;\n }\n getGrow() {\n let grow = 0;\n for (const seat of this.seats) {\n grow += seat.grow;\n }\n return grow;\n }\n setPosition(x, y, width, height) {\n this.x = x;\n this.y = y;\n this.width = width;\n this.height = height;\n }\n}\n__decorate([\n field({ decoder: StringDecoder, field: 'l' })\n], SeatingPlanRow.prototype, \"label\", void 0);\n__decorate([\n field({ decoder: new ArrayDecoder(SeatingPlanSeat), field: 's' })\n], SeatingPlanRow.prototype, \"seats\", void 0);\nexport class SeatingPlanSection extends AutoEncoder {\n constructor() {\n super(...arguments);\n /**\n * Name of the section (optional if only section)\n */\n this.name = '';\n this.rows = [];\n }\n get seatCount() {\n let count = 0;\n for (const row of this.rows) {\n count += row.seatCount;\n }\n return count;\n }\n calculateSize(config) {\n const size = {\n width: config.seatWidth * 10, // = minimum width\n height: this.rows.length * config.seatHeight + config.seatYSpacing * (this.rows.length - 1),\n };\n for (const row of this.rows) {\n size.width = Math.max(size.width, row.getWidth(config));\n }\n return size;\n }\n updatePositions(config) {\n const size = this.calculateSize(config);\n let y = 0;\n for (const row of this.rows) {\n const rowWidth = row.getWidth(config);\n const rowGrow = row.getGrow();\n const rowX = rowGrow > 0 ? 0 : (size.width / 2 - rowWidth / 2);\n const rowY = y;\n let x = rowX;\n for (const seat of row.seats) {\n const w = config.seatWidth * seat.blockWidth / 2 + Math.floor(config.seatXSpacing * (seat.blockWidth - 2) / 2) + (rowGrow > 0 ? Math.max(0, seat.grow * (size.width - rowWidth) / rowGrow) : 0);\n seat.setPosition(x, y, w, config.seatHeight);\n x += w + config.seatXSpacing;\n }\n y += config.seatHeight;\n row.setPosition(rowX, rowY, rowGrow > 0 ? size.width : rowWidth, y - rowY);\n // Add spacing\n y += config.seatYSpacing;\n }\n }\n}\n__decorate([\n field({ decoder: StringDecoder, defaultValue: () => uuidv4() })\n], SeatingPlanSection.prototype, \"id\", void 0);\n__decorate([\n field({ decoder: StringDecoder })\n], SeatingPlanSection.prototype, \"name\", void 0);\n__decorate([\n field({ decoder: new ArrayDecoder(SeatingPlanRow) })\n], SeatingPlanSection.prototype, \"rows\", void 0);\nexport class SeatingPlanCategory extends AutoEncoder {\n constructor() {\n super(...arguments);\n /**\n * Name of the category\n */\n this.name = '';\n /**\n * Price added (can be negative) is always in cents, to avoid floating point errors\n */\n this.price = 0;\n /**\n * Only allow ordering by administrators\n */\n this.adminOnly = false;\n }\n}\n__decorate([\n field({ decoder: StringDecoder })\n], SeatingPlanCategory.prototype, \"id\", void 0);\n__decorate([\n field({ decoder: StringDecoder })\n], SeatingPlanCategory.prototype, \"name\", void 0);\n__decorate([\n field({ decoder: IntegerDecoder })\n], SeatingPlanCategory.prototype, \"price\", void 0);\n__decorate([\n field({ decoder: BooleanDecoder, version: 218 })\n], SeatingPlanCategory.prototype, \"adminOnly\", void 0);\nexport class SeatingPlan extends AutoEncoder {\n constructor() {\n super(...arguments);\n /**\n * Name of the venue\n */\n this.name = '';\n this.requireOptimalReservation = true;\n this.sections = [SeatingPlanSection.create({})];\n this.categories = [];\n }\n get seatCount() {\n let count = 0;\n for (const section of this.sections) {\n count += section.seatCount;\n }\n return count;\n }\n get adminSeatCount() {\n let count = 0;\n for (const section of this.sections) {\n for (const row of section.rows) {\n for (const seat of row.seats) {\n if (seat.isValidSeat) {\n const category = this.categories.find(c => c.id === seat.category);\n if (category && category.adminOnly) {\n count += 1;\n }\n }\n }\n }\n }\n return count;\n }\n isAdminSeat(s) {\n const seat = this.getSeat(s);\n if (!seat) {\n return false;\n }\n const category = this.categories.find(c => c.id === seat.category);\n if (category && category.adminOnly) {\n return true;\n }\n return false;\n }\n getSeat(s) {\n for (const section of this.sections) {\n if (section.id === s.section) {\n for (const row of section.rows) {\n if (row.label === s.row) {\n for (const seat of row.seats) {\n if (seat.label === s.seat && seat.isValidSeat) {\n return seat;\n }\n }\n }\n }\n }\n }\n return null;\n }\n getCategoryName(seat) {\n if (this.categories.length <= 1) {\n return null;\n }\n const s = this.getSeat(seat);\n if (s) {\n const c = this.categories.find(c => c.id === s.category);\n if (c && c.name) {\n return c.name;\n }\n }\n return null;\n }\n getCategoryColor(categoryId) {\n var _a;\n const colorIndexes = ['', 'var(--color-secundary)', 'var(--color-tertiary)', 'var(--color-warning)'];\n const category = this.categories.findIndex(c => c.id === categoryId);\n if (category) {\n return (_a = colorIndexes[category]) !== null && _a !== void 0 ? _a : '';\n }\n }\n getSeatColor(seat) {\n if (!seat.isValidSeat) {\n return '';\n }\n if (seat.category) {\n return this.getCategoryColor(seat.category);\n }\n return '';\n }\n isValidSeat(s, reservedSeats, allowedSeats) {\n for (const section of this.sections) {\n if (section.id === s.section) {\n for (const row of section.rows) {\n if (row.label === s.row) {\n for (const seat of row.seats) {\n if (seat.label === s.seat && seat.isValidSeat) {\n if (reservedSeats) {\n // We count the elements, because it is possible a seat is reserved multiple times (due to a previous bug)\n const isReservedCount = reservedSeats.filter(s2 => s2.equals(s)).length;\n if (isReservedCount > 0) {\n if (allowedSeats) {\n const isAllowedCount = allowedSeats.filter(s2 => s2.equals(s)).length;\n return isAllowedCount >= isReservedCount;\n }\n return false;\n }\n }\n return true;\n }\n }\n }\n }\n }\n }\n return false;\n }\n adjustSeatsForBetterFit(selectedSeats, reservedSeats, allowedSeats = [], asAdmin = false) {\n // A seat is valid if it is next to a different reserved seat.\n // If above is not true, then it can also be invalid if there is one seat between the next reserved seat\n // Otherwise it is valid\n // Algo steps:\n // 1. Loop each row\n // 2. Check if the seat is taken or a space\n // 3. Count empty seats in a row\n // If we find first selected seat, and empty seats count === 1, then mark that previous seat as 'should be reserved'\n // If we find an empty space, and 'should be reserved' is set, then move the last selected seat to that space\n // If we find a reserved seat of space, then reset 'should be reserved'\n let adjustedSeats = [...selectedSeats];\n let didChange = false;\n for (const section of this.sections) {\n for (const row of section.rows) {\n let emptySeatStack = [];\n let selectedSeatStack = [];\n let leftSwapSeat = null;\n let allowRightSwap = false; // Only allow to move seats to the right if the left seat is adjacent to a empty seat, not a reserved seat or hallway\n for (const seat of [...row.seats, SeatingPlanSeat.create({ label: '', type: SeatType.Space })]) {\n const rSeat = ReservedSeat.create({\n section: section.id,\n row: row.label,\n seat: seat.label,\n });\n if (selectedSeats.find(s => s.equals(rSeat))) {\n if (emptySeatStack.length >= 1) {\n allowRightSwap = true;\n }\n if (emptySeatStack.length === 1) {\n // We have a 'should be reserved'\n leftSwapSeat = emptySeatStack[0];\n }\n emptySeatStack = [];\n selectedSeatStack.push(rSeat);\n }\n else if (!seat.isValidSeat || (reservedSeats.find(s => s.equals(rSeat)) && !allowedSeats.find(s => s.equals(rSeat))) || (!asAdmin && this.isAdminSeat(rSeat))) {\n if (allowRightSwap && emptySeatStack.length === 1 && selectedSeatStack.length) {\n const from = selectedSeatStack[0];\n const to = emptySeatStack[0];\n // Move the first selected seat to the empty seat\n adjustedSeats = adjustedSeats.map((s) => {\n if (s.equals(from)) {\n return to;\n }\n return s;\n });\n didChange = true;\n }\n // Space or reserved\n emptySeatStack = [];\n selectedSeatStack = [];\n leftSwapSeat = null; // When we reach a selected seat that is next to a reserved seat, we don't want to swap it any longer\n allowRightSwap = false;\n }\n else {\n if (leftSwapSeat && selectedSeatStack.length) {\n const from = selectedSeatStack[selectedSeatStack.length - 1];\n const to = leftSwapSeat;\n // Move the last selected seat to the empty seat\n adjustedSeats = adjustedSeats.map((s) => {\n if (s.equals(from)) {\n return to;\n }\n return s;\n });\n didChange = true;\n leftSwapSeat = null;\n emptySeatStack = [];\n selectedSeatStack = [];\n }\n emptySeatStack.push(rSeat);\n }\n }\n }\n }\n if (!didChange) {\n return null;\n }\n return adjustedSeats;\n }\n}\n__decorate([\n field({ decoder: StringDecoder, defaultValue: () => uuidv4() })\n], SeatingPlan.prototype, \"id\", void 0);\n__decorate([\n field({ decoder: StringDecoder })\n], SeatingPlan.prototype, \"name\", void 0);\n__decorate([\n field({ decoder: BooleanDecoder, version: 215 })\n], SeatingPlan.prototype, \"requireOptimalReservation\", void 0);\n__decorate([\n field({ decoder: new ArrayDecoder(SeatingPlanSection) })\n], SeatingPlan.prototype, \"sections\", void 0);\n__decorate([\n field({ decoder: new ArrayDecoder(SeatingPlanCategory), version: 214 })\n], SeatingPlan.prototype, \"categories\", void 0);\nfunction isNumeric(str) {\n return /^\\d+$/.test(str);\n}\nexport class ReservedSeat extends AutoEncoder {\n constructor() {\n super(...arguments);\n /**\n * Id of the section\n */\n this.section = '';\n /**\n * label of the row\n */\n this.row = '';\n /**\n * label of the seat\n */\n this.seat = '';\n }\n getName(webshop, product) {\n if (!product.seatingPlanId) {\n return [];\n }\n const seatingPlan = webshop.meta.seatingPlans.find(p => p.id === product.seatingPlanId);\n if (!seatingPlan) {\n return [];\n }\n const section = seatingPlan.sections.find(s => s.id === this.section);\n const categoryName = seatingPlan.getCategoryName(this);\n const suffix = categoryName ? [{ title: 'Categorie', value: categoryName }] : [];\n if (seatingPlan.sections.length === 1 || !section || section.name.length === 0) {\n // Don't mention the section\n return [\n {\n title: 'Rij',\n value: this.row,\n },\n {\n title: 'Zetel',\n value: this.seat,\n },\n ...suffix,\n ];\n }\n return [\n {\n title: 'Zone',\n value: section.name,\n },\n {\n title: 'Rij',\n value: this.row,\n },\n {\n title: 'Zetel',\n value: this.seat,\n },\n ...suffix,\n ];\n }\n getNameString(webshop, product) {\n if (!product.seatingPlanId) {\n return [];\n }\n const seatingPlan = webshop.meta.seatingPlans.find(p => p.id === product.seatingPlanId);\n if (!seatingPlan) {\n return [];\n }\n const section = seatingPlan.sections.find(s => s.id === this.section);\n if (seatingPlan.sections.length === 1 || !section) {\n if (isNumeric(this.row) !== isNumeric(this.seat)) {\n // Clean string\n return this.row + this.seat;\n }\n return this.getName(webshop, product).map(p => p.title + ': ' + p.value).join(', ');\n }\n if (isNumeric(this.row) !== isNumeric(this.seat)) {\n // Clean string\n return section.name + ' ' + this.row + this.seat;\n }\n return this.getName(webshop, product).map(p => p.title + ': ' + p.value).join(', ');\n }\n equals(reservedSeat) {\n return this.section === reservedSeat.section && this.row === reservedSeat.row && this.seat === reservedSeat.seat;\n }\n}\n__decorate([\n field({ decoder: StringDecoder, field: 'se' })\n], ReservedSeat.prototype, \"section\", void 0);\n__decorate([\n field({ decoder: StringDecoder, field: 'r' })\n], ReservedSeat.prototype, \"row\", void 0);\n__decorate([\n field({ decoder: StringDecoder, field: 's' })\n], ReservedSeat.prototype, \"seat\", void 0);\nexport class CartReservedSeat extends ReservedSeat {\n constructor() {\n super(...arguments);\n /**\n * Additional price that was applied\n */\n this.price = 0;\n }\n calculatePrice(seatingPlan) {\n const seat = seatingPlan.getSeat(this);\n if (!seat) {\n this.price = 0;\n return this.price;\n }\n const category = seatingPlan.categories.find(c => c.id === seat.category);\n if (!category) {\n this.price = 0;\n return this.price;\n }\n this.price = category.price;\n return this.price;\n }\n}\n__decorate([\n field({ decoder: IntegerDecoder, field: 'p', optional: true })\n], CartReservedSeat.prototype, \"price\", void 0);\n//# sourceMappingURL=SeatingPlan.js.map","import { __decorate } from \"tslib\";\nimport { AutoEncoder, BooleanDecoder, field, StringDecoder } from '@simonbackx/simple-encoding';\nimport { SimpleError } from '@simonbackx/simple-errors';\nimport { v4 as uuidv4 } from 'uuid';\nexport class WebshopField extends AutoEncoder {\n constructor() {\n super(...arguments);\n this.name = '';\n this.description = '';\n this.placeholder = '';\n this.required = true;\n }\n}\n__decorate([\n field({ decoder: StringDecoder, defaultValue: () => uuidv4() })\n], WebshopField.prototype, \"id\", void 0);\n__decorate([\n field({ decoder: StringDecoder })\n], WebshopField.prototype, \"name\", void 0);\n__decorate([\n field({ decoder: StringDecoder })\n], WebshopField.prototype, \"description\", void 0);\n__decorate([\n field({ decoder: StringDecoder })\n], WebshopField.prototype, \"placeholder\", void 0);\n__decorate([\n field({ decoder: BooleanDecoder, version: 95 })\n], WebshopField.prototype, \"required\", void 0);\nexport class WebshopFieldAnswer extends AutoEncoder {\n constructor() {\n super(...arguments);\n this.answer = '';\n }\n validate() {\n if (this.field.required && this.answer.length === 0) {\n throw new SimpleError({\n code: 'invalid_field',\n message: 'This field is required',\n human: 'Je moet dit veld verplicht invullen',\n field: 'answer',\n });\n }\n }\n}\n__decorate([\n field({ decoder: WebshopField })\n], WebshopFieldAnswer.prototype, \"field\", void 0);\n__decorate([\n field({ decoder: StringDecoder })\n], WebshopFieldAnswer.prototype, \"answer\", void 0);\n//# sourceMappingURL=WebshopField.js.map","import { __decorate } from \"tslib\";\nimport { ArrayDecoder, AutoEncoder, BooleanDecoder, DateDecoder, EnumDecoder, field, IntegerDecoder, StringDecoder } from '@simonbackx/simple-encoding';\nimport { Formatter } from '@stamhoofd/utility';\nimport { v4 as uuidv4 } from 'uuid';\nimport { Address } from '../addresses/Address';\nimport { Image } from '../files/Image';\nimport { ReservedSeat } from '../SeatingPlan';\nimport { WebshopField } from './WebshopField';\nexport class ProductPrice extends AutoEncoder {\n constructor() {\n super(...arguments);\n this.name = '';\n /**\n * Price is always in cents, to avoid floating point errors\n */\n this.price = 0;\n // Optional: different price if you reach a given amount of pieces (options and prices shouldn't be the same)\n this.discountPrice = null;\n // Only used if discountPrice is not null\n this.discountAmount = 2;\n this.hidden = false;\n /**\n * Total stock, excluding already sold items into account\n */\n this.stock = null;\n this.usedStock = 0;\n }\n get isSoldOut() {\n if (this.stock === null) {\n return false;\n }\n return this.usedStock >= this.stock;\n }\n get remainingStock() {\n if (this.stock === null) {\n return null;\n }\n return Math.max(0, this.stock - this.usedStock);\n }\n}\n__decorate([\n field({ decoder: StringDecoder, defaultValue: () => uuidv4() })\n], ProductPrice.prototype, \"id\", void 0);\n__decorate([\n field({ decoder: StringDecoder })\n], ProductPrice.prototype, \"name\", void 0);\n__decorate([\n field({ decoder: IntegerDecoder })\n], ProductPrice.prototype, \"price\", void 0);\n__decorate([\n field({ decoder: IntegerDecoder, nullable: true, version: 93 })\n], ProductPrice.prototype, \"discountPrice\", void 0);\n__decorate([\n field({ decoder: IntegerDecoder, version: 93 })\n], ProductPrice.prototype, \"discountAmount\", void 0);\n__decorate([\n field({ decoder: BooleanDecoder, version: 219 })\n], ProductPrice.prototype, \"hidden\", void 0);\n__decorate([\n field({ decoder: IntegerDecoder, nullable: true, version: 221 })\n], ProductPrice.prototype, \"stock\", void 0);\n__decorate([\n field({ decoder: IntegerDecoder, version: 221 })\n], ProductPrice.prototype, \"usedStock\", void 0);\nexport class Option extends AutoEncoder {\n constructor() {\n super(...arguments);\n this.name = '';\n /**\n * Price added (can be negative) is always in cents, to avoid floating point errors\n */\n this.price = 0;\n /**\n * Total stock, excluding already sold items into account\n */\n this.stock = null;\n this.usedStock = 0;\n }\n get isSoldOut() {\n if (this.stock === null) {\n return false;\n }\n return this.usedStock >= this.stock;\n }\n get remainingStock() {\n if (this.stock === null) {\n return null;\n }\n return Math.max(0, this.stock - this.usedStock);\n }\n}\n__decorate([\n field({ decoder: StringDecoder, defaultValue: () => uuidv4() })\n], Option.prototype, \"id\", void 0);\n__decorate([\n field({ decoder: StringDecoder })\n], Option.prototype, \"name\", void 0);\n__decorate([\n field({ decoder: IntegerDecoder })\n], Option.prototype, \"price\", void 0);\n__decorate([\n field({ decoder: IntegerDecoder, nullable: true, version: 221 })\n], Option.prototype, \"stock\", void 0);\n__decorate([\n field({ decoder: IntegerDecoder, version: 221 })\n], Option.prototype, \"usedStock\", void 0);\nexport class OptionMenu extends AutoEncoder {\n constructor() {\n super(...arguments);\n this.name = '';\n this.multipleChoice = false;\n this.options = [\n Option.create({}),\n ];\n }\n}\n__decorate([\n field({ decoder: StringDecoder, defaultValue: () => uuidv4() })\n], OptionMenu.prototype, \"id\", void 0);\n__decorate([\n field({ decoder: StringDecoder })\n], OptionMenu.prototype, \"name\", void 0);\n__decorate([\n field({ decoder: BooleanDecoder })\n], OptionMenu.prototype, \"multipleChoice\", void 0);\n__decorate([\n field({ decoder: new ArrayDecoder(Option) })\n], OptionMenu.prototype, \"options\", void 0);\nexport var ProductType;\n(function (ProductType) {\n ProductType[\"Product\"] = \"Product\";\n ProductType[\"Person\"] = \"Person\";\n ProductType[\"Ticket\"] = \"Ticket\";\n ProductType[\"Voucher\"] = \"Voucher\";\n})(ProductType || (ProductType = {}));\n/**\n * This includes a location for a ticket (will be visible on the ticket)\n */\nexport class ProductLocation extends AutoEncoder {\n constructor() {\n super(...arguments);\n this.name = '';\n this.address = null;\n // TODO: coordinates here (only filled in by backend)\n }\n}\n__decorate([\n field({ decoder: StringDecoder, defaultValue: () => uuidv4() })\n], ProductLocation.prototype, \"id\", void 0);\n__decorate([\n field({ decoder: StringDecoder })\n], ProductLocation.prototype, \"name\", void 0);\n__decorate([\n field({ decoder: Address }),\n field({ decoder: Address, nullable: true, version: 146, downgrade: (v) => {\n if (!v) {\n return Address.createDefault();\n }\n return v;\n } })\n], ProductLocation.prototype, \"address\", void 0);\n/**\n * This includes a time for a ticket (will be visible on the ticket)\n */\nexport class ProductDateRange extends AutoEncoder {\n constructor() {\n super(...arguments);\n this.startDate = new Date();\n this.endDate = new Date();\n }\n toString() {\n return Formatter.dateRange(this.startDate, this.endDate);\n }\n}\n__decorate([\n field({ decoder: StringDecoder, defaultValue: () => uuidv4() })\n], ProductDateRange.prototype, \"id\", void 0);\n__decorate([\n field({ decoder: DateDecoder })\n], ProductDateRange.prototype, \"startDate\", void 0);\n__decorate([\n field({ decoder: DateDecoder })\n], ProductDateRange.prototype, \"endDate\", void 0);\nexport class Product extends AutoEncoder {\n constructor() {\n super(...arguments);\n this.name = '';\n this.description = '';\n this.enabled = true;\n this.hidden = false;\n /**\n * Allow to order multiple pieces of the same product combination\n */\n this.allowMultiple = true;\n /**\n * Only allow one piece per product combination\n */\n this.unique = false;\n this.enableAfter = null;\n this.disableAfter = null;\n this.images = [];\n this.customFields = [];\n this.type = ProductType.Product;\n this.location = null;\n this.dateRange = null;\n this.seatingPlanId = null;\n this.reservedSeats = [];\n /**\n * WIP: not yet supported\n * Set to true if you need to have a name for every ordered product. When this is true, you can't order this product mutliple times with the same name.\n * + will validate the name better\n */\n this.askName = false;\n /**\n * Maximum amount per order\n */\n this.maxPerOrder = null;\n /**\n * Total stock, excluding already sold items into account\n */\n this.stock = null;\n this.usedStock = 0;\n this.optionMenus = [];\n }\n get isEnabled() {\n return this.enabled && !this.hidden && (!this.enableAfter || this.enableAfter <= new Date()) && (!this.disableAfter || this.disableAfter >= new Date());\n }\n get enableInFuture() {\n return this.enabled && !this.hidden && this.enableAfter !== null && this.enableAfter > new Date() && (!this.disableAfter || this.disableAfter >= new Date());\n }\n get isTicket() {\n return this.type === ProductType.Ticket || this.type === ProductType.Voucher;\n }\n clearStock() {\n this.usedStock = 0;\n this.reservedSeats = [];\n }\n get isSoldOut() {\n return this.remainingStockWithOptions === 0;\n }\n /**\n * Only accounts for the stock of the product itself, not the stock of the options\n */\n get remainingStock() {\n if (this.stock === null) {\n return null;\n }\n return Math.max(0, this.stock - this.usedStock);\n }\n /**\n * Accounts for options and prices too\n */\n get remainingStockWithOptions() {\n const stocks = [];\n if (this.remainingStock !== null) {\n stocks.push(this.remainingStock);\n }\n let priceStocks = [];\n for (const price of this.prices) {\n if (price.remainingStock !== null) {\n priceStocks.push(price.remainingStock);\n }\n else {\n // Infinite stock for at least one price = no price stock\n priceStocks = [];\n break;\n }\n }\n if (priceStocks.length) {\n stocks.push(Math.max(...priceStocks));\n }\n for (const menu of this.optionMenus) {\n if (!menu.multipleChoice) {\n // Required to pick one\n // We need to pick the maximum of the option stock\n let menuStocks = [];\n for (const option of menu.options) {\n if (option.remainingStock !== null) {\n menuStocks.push(option.remainingStock);\n }\n else {\n // Infinite stock for at least one option = no menu stock\n menuStocks = [];\n break;\n }\n }\n if (menuStocks.length) {\n stocks.push(Math.max(...menuStocks));\n }\n }\n }\n if (stocks.length === 0) {\n return null;\n }\n return Math.min(...stocks);\n }\n getRemainingSeats(webshop, isAdmin) {\n if (this.seatingPlanId === null) {\n return null;\n }\n const seatingPlan = webshop.meta.seatingPlans.find(p => p.id === this.seatingPlanId);\n if (!seatingPlan) {\n return null;\n }\n if (isAdmin) {\n return seatingPlan.seatCount - this.reservedSeats.length;\n }\n return seatingPlan.seatCount - seatingPlan.adminSeatCount - this.reservedSeats.filter(r => !seatingPlan.isAdminSeat(r)).length;\n }\n /**\n * Whether it is not possibel to add multiple different items of this product to the cart, or whether this product supports multiple items in the cart.\n * Controls whether cart is edited by default or updated when clicking it open in the webshop.\n */\n get isUnique() {\n if (this.maxPerOrder === 1) {\n return true;\n }\n // No choice options\n if (this.optionMenus.length === 0 && this.prices.length <= 1 && this.customFields.length === 0) {\n return true;\n }\n return false;\n }\n getRemainingStockText(stock) {\n if (stock === 1) {\n if (this.type === ProductType.Ticket) {\n return 'één ticket';\n }\n if (this.type === ProductType.Person) {\n return 'één persoon';\n }\n return 'één stuk';\n }\n if (this.type === ProductType.Ticket) {\n return stock + ' tickets';\n }\n if (this.type === ProductType.Person) {\n return stock + ' personen';\n }\n return stock + ' stuks';\n }\n get stockText() {\n if (this.remainingStockWithOptions === null || this.remainingStockWithOptions > 25) {\n return null;\n }\n if (this.remainingStockWithOptions === 0) {\n return 'Uitverkocht';\n }\n return 'Nog ' + this.getRemainingStockText(this.remainingStockWithOptions);\n }\n get isEnabledTextLong() {\n if (this.hidden) {\n return 'Verborgen';\n }\n if (!this.enabled) {\n return 'Onbeschikbaar';\n }\n if (this.enableInFuture && this.enableAfter) {\n if (this.disableAfter) {\n return 'Beschikbaar vanaf ' + Formatter.dateTime(this.enableAfter) + ' tot ' + Formatter.dateTime(this.disableAfter);\n }\n return 'Beschikbaar vanaf ' + Formatter.dateTime(this.enableAfter);\n }\n if (!this.isEnabled) {\n return 'Onbeschikbaar';\n }\n if (this.disableAfter) {\n return 'Beschikbaar tot ' + Formatter.dateTime(this.disableAfter);\n }\n }\n get closesSoonText() {\n if (!this.isEnabled) {\n return null;\n }\n if (this.disableAfter) {\n const diff = this.disableAfter.getTime() - new Date().getTime();\n if (diff < 24 * 60 * 60 * 1000) {\n return 'Beschikbaar tot ' + Formatter.time(this.disableAfter);\n }\n }\n return null;\n }\n filteredPrices(options) {\n if (options.admin) {\n return this.prices;\n }\n return this.prices.filter(p => !p.hidden);\n }\n}\n__decorate([\n field({ decoder: StringDecoder, defaultValue: () => uuidv4() })\n], Product.prototype, \"id\", void 0);\n__decorate([\n field({ decoder: StringDecoder })\n], Product.prototype, \"name\", void 0);\n__decorate([\n field({ decoder: StringDecoder })\n], Product.prototype, \"description\", void 0);\n__decorate([\n field({ decoder: BooleanDecoder })\n], Product.prototype, \"enabled\", void 0);\n__decorate([\n field({ decoder: BooleanDecoder, version: 172 })\n], Product.prototype, \"hidden\", void 0);\n__decorate([\n field({ decoder: BooleanDecoder, version: 173 })\n], Product.prototype, \"allowMultiple\", void 0);\n__decorate([\n field({ decoder: BooleanDecoder, version: 173 })\n], Product.prototype, \"unique\", void 0);\n__decorate([\n field({ decoder: DateDecoder, nullable: true, version: 172 })\n], Product.prototype, \"enableAfter\", void 0);\n__decorate([\n field({ decoder: DateDecoder, nullable: true, version: 172 })\n], Product.prototype, \"disableAfter\", void 0);\n__decorate([\n field({ decoder: new ArrayDecoder(Image) })\n], Product.prototype, \"images\", void 0);\n__decorate([\n field({ decoder: new ArrayDecoder(WebshopField), version: 94 })\n], Product.prototype, \"customFields\", void 0);\n__decorate([\n field({ decoder: new EnumDecoder(ProductType) })\n], Product.prototype, \"type\", void 0);\n__decorate([\n field({ decoder: ProductLocation, nullable: true, version: 105 })\n], Product.prototype, \"location\", void 0);\n__decorate([\n field({ decoder: ProductDateRange, nullable: true, version: 105 })\n], Product.prototype, \"dateRange\", void 0);\n__decorate([\n field({ decoder: StringDecoder, nullable: true, version: 211 })\n], Product.prototype, \"seatingPlanId\", void 0);\n__decorate([\n field({ decoder: new ArrayDecoder(ReservedSeat), nullable: true, version: 211 })\n], Product.prototype, \"reservedSeats\", void 0);\n__decorate([\n field({ decoder: BooleanDecoder, optional: true })\n], Product.prototype, \"askName\", void 0);\n__decorate([\n field({ decoder: IntegerDecoder, nullable: true, version: 171 })\n], Product.prototype, \"maxPerOrder\", void 0);\n__decorate([\n field({ decoder: IntegerDecoder, nullable: true })\n], Product.prototype, \"stock\", void 0);\n__decorate([\n field({ decoder: IntegerDecoder })\n], Product.prototype, \"usedStock\", void 0);\n__decorate([\n field({\n decoder: new ArrayDecoder(ProductPrice),\n defaultValue: () => [\n ProductPrice.create({\n name: '',\n price: 0,\n }),\n ],\n })\n], Product.prototype, \"prices\", void 0);\n__decorate([\n field({ decoder: new ArrayDecoder(OptionMenu) })\n], Product.prototype, \"optionMenus\", void 0);\n//# sourceMappingURL=Product.js.map","import { __decorate } from \"tslib\";\nimport { AutoEncoder, field, StringDecoder } from '@simonbackx/simple-encoding';\nimport { v4 as uuidv4 } from 'uuid';\nimport { File } from './files/File';\nexport class Policy extends AutoEncoder {\n constructor() {\n super(...arguments);\n this.name = '';\n /**\n * Set either file or url for the policy. If both are set, the url has priority\n */\n this.file = null;\n this.url = null;\n }\n get calculatedUrl() {\n var _a, _b;\n if (this.url !== null) {\n return this.url;\n }\n return (_b = (_a = this.file) === null || _a === void 0 ? void 0 : _a.getPublicPath()) !== null && _b !== void 0 ? _b : '';\n }\n}\n__decorate([\n field({ decoder: StringDecoder, defaultValue: () => uuidv4() })\n], Policy.prototype, \"id\", void 0);\n__decorate([\n field({ decoder: StringDecoder })\n], Policy.prototype, \"name\", void 0);\n__decorate([\n field({ decoder: File, nullable: true, version: 25 })\n], Policy.prototype, \"file\", void 0);\n__decorate([\n field({ decoder: StringDecoder, nullable: true, version: 25 })\n], Policy.prototype, \"url\", void 0);\n//# sourceMappingURL=Policy.js.map","import { __decorate } from \"tslib\";\nimport { ArrayDecoder, AutoEncoder, BooleanDecoder, field, StringDecoder } from '@simonbackx/simple-encoding';\nimport { v4 as uuidv4 } from 'uuid';\nimport { Image } from './files/Image';\nexport class Sponsor extends AutoEncoder {\n constructor() {\n super(...arguments);\n this.url = null;\n this.name = '';\n this.logo = null;\n this.banner = null;\n this.onTickets = false;\n }\n}\n__decorate([\n field({ decoder: StringDecoder, defaultValue: () => uuidv4() })\n], Sponsor.prototype, \"id\", void 0);\n__decorate([\n field({ decoder: StringDecoder, nullable: true })\n], Sponsor.prototype, \"url\", void 0);\n__decorate([\n field({ decoder: StringDecoder })\n], Sponsor.prototype, \"name\", void 0);\n__decorate([\n field({ decoder: Image, nullable: true })\n], Sponsor.prototype, \"logo\", void 0);\n__decorate([\n field({ decoder: Image, nullable: true, optional: true })\n], Sponsor.prototype, \"banner\", void 0);\n__decorate([\n field({ decoder: BooleanDecoder, optional: true })\n], Sponsor.prototype, \"onTickets\", void 0);\nexport class SponsorConfig extends AutoEncoder {\n constructor() {\n super(...arguments);\n this.sponsors = [];\n }\n}\n__decorate([\n field({ decoder: new ArrayDecoder(Sponsor) })\n], SponsorConfig.prototype, \"sponsors\", void 0);\n//# sourceMappingURL=SponsorConfig.js.map","import { __decorate } from \"tslib\";\nimport { ArrayDecoder, AutoEncoder, BooleanDecoder, EnumDecoder, IntegerDecoder, MapDecoder, StringDecoder, field } from '@simonbackx/simple-encoding';\nimport { v4 as uuidv4 } from 'uuid';\nimport { Formatter } from '@stamhoofd/utility';\nexport var OptionSelectionRequirement;\n(function (OptionSelectionRequirement) {\n OptionSelectionRequirement[\"Required\"] = \"Required\";\n OptionSelectionRequirement[\"Optional\"] = \"Optional\";\n OptionSelectionRequirement[\"Excluded\"] = \"Excluded\";\n})(OptionSelectionRequirement || (OptionSelectionRequirement = {}));\nexport class OptionSelectionRequirementHelper {\n static getName(requirement) {\n switch (requirement) {\n case OptionSelectionRequirement.Required: return 'Enkel met';\n case OptionSelectionRequirement.Optional: return 'Met of zonder';\n case OptionSelectionRequirement.Excluded: return 'Enkel zonder';\n }\n }\n}\nexport class ProductSelector extends AutoEncoder {\n constructor() {\n super(...arguments);\n /**\n * Empty array = doesn't matter\n * Array set = required one of the product prices from the list\n */\n this.productPriceIds = [];\n /**\n * Options that are missing in the list get a default value\n * depending whether the option menu is multiple choice or not.\n *\n * For multiple choice:\n * - new options are optional\n *\n * For choose one:\n * - new options are exluded unless all options are optional\n */\n this.optionIds = new Map();\n }\n getOptionRequirement(optionMenu, option) {\n var _a;\n const value = this.optionIds.get(option.id);\n if (!value) {\n if (optionMenu.multipleChoice) {\n return OptionSelectionRequirement.Optional;\n }\n else {\n for (const o of optionMenu.options) {\n if ((_a = this.optionIds.get(o.id)) !== null && _a !== void 0 ? _a : OptionSelectionRequirement.Optional !== OptionSelectionRequirement.Optional) {\n return OptionSelectionRequirement.Excluded;\n }\n }\n return OptionSelectionRequirement.Optional;\n }\n }\n return value;\n }\n doesMatch(cartItem) {\n if (cartItem.product.id !== this.productId) {\n return false;\n }\n if (this.productPriceIds.includes(cartItem.productPrice.id)) {\n return false;\n }\n for (const option of cartItem.options) {\n const value = this.getOptionRequirement(option.optionMenu, option.option);\n if (value === OptionSelectionRequirement.Excluded) {\n return false;\n }\n }\n for (const [id, requirement] of this.optionIds) {\n if (requirement === OptionSelectionRequirement.Required) {\n const found = cartItem.options.find(o => o.option.id === id);\n if (!found) {\n return false;\n }\n }\n }\n return true;\n }\n getName(webshop, isAdmin = false) {\n const product = webshop.products.find(p => p.id === this.productId);\n if (!product) {\n return {\n name: 'Onbekend artikel',\n footnote: '',\n };\n }\n const allPrices = product.filteredPrices({ admin: isAdmin });\n const productPrices = allPrices.filter(p => this.productPriceIds.includes(p.id));\n let suffix = '';\n if (allPrices.length > 1 && this.productPriceIds.length && productPrices.length < allPrices.length) {\n suffix = productPrices.map(p => p.name).join(', ');\n }\n let footnote = '';\n const excludedOptions = product.optionMenus.flatMap((menu) => {\n return menu.options.filter(o => this.getOptionRequirement(menu, o) === OptionSelectionRequirement.Excluded);\n });\n const requiredOptions = product.optionMenus.flatMap((menu) => {\n return menu.options.filter(o => this.getOptionRequirement(menu, o) === OptionSelectionRequirement.Required);\n });\n if (excludedOptions.length && requiredOptions.length === 0) {\n footnote = 'Behalve voor keuzes met ' + Formatter.joinLast(excludedOptions.map(o => o.name), ', ', ' of ');\n }\n else if (excludedOptions.length === 0 && requiredOptions.length) {\n footnote = 'Enkel indien gekozen voor ' + Formatter.joinLast(requiredOptions.map(o => o.name), ', ', ' en ');\n }\n else if (excludedOptions.length && requiredOptions.length) {\n footnote = 'Enkel indien gekozen voor ' + Formatter.joinLast(requiredOptions.map(o => o.name), ', ', ' en ') + ' en niet gekozen voor ' + Formatter.joinLast(excludedOptions.map(o => o.name), ', ', ' of ');\n }\n return {\n name: product.name + (suffix ? (' (' + suffix + ')') : ''),\n footnote,\n };\n }\n}\n__decorate([\n field({ decoder: StringDecoder })\n], ProductSelector.prototype, \"productId\", void 0);\n__decorate([\n field({ decoder: new ArrayDecoder(StringDecoder) })\n], ProductSelector.prototype, \"productPriceIds\", void 0);\n__decorate([\n field({ decoder: new MapDecoder(StringDecoder, new EnumDecoder(OptionSelectionRequirement)) })\n], ProductSelector.prototype, \"optionIds\", void 0);\nexport class DiscountRequirement extends AutoEncoder {\n constructor() {\n super(...arguments);\n /**\n * Minimum amount to trigger this requirement\n */\n this.amount = 1;\n }\n /**\n * Requirements can match multiple times (for X + Y discount systems)\n */\n getMatchCount(checkout) {\n if (this.amount === 0) {\n return 0;\n }\n let amount = 0;\n for (const item of checkout.cart.items) {\n if (this.product.doesMatch(item)) {\n amount += item.amount;\n }\n }\n return Math.floor(amount / this.amount);\n }\n}\n__decorate([\n field({ decoder: StringDecoder, defaultValue: () => uuidv4() })\n], DiscountRequirement.prototype, \"id\", void 0);\n__decorate([\n field({ decoder: ProductSelector })\n], DiscountRequirement.prototype, \"product\", void 0);\n__decorate([\n field({ decoder: IntegerDecoder })\n], DiscountRequirement.prototype, \"amount\", void 0);\nexport class GeneralDiscount extends AutoEncoder {\n constructor() {\n super(...arguments);\n /**\n * Fixed discount on order\n */\n this.fixedDiscount = 0;\n /**\n * Percentage discount on order, in pertenthousand 1 / 10 000\n * 10 = 0,1% discount\n * 1 = 0,01% discount\n */\n this.percentageDiscount = 0;\n }\n multiply(amount) {\n return GeneralDiscount.create({\n fixedDiscount: Math.round(this.fixedDiscount * amount),\n percentageDiscount: Math.round(this.percentageDiscount * amount),\n });\n }\n}\n__decorate([\n field({ decoder: IntegerDecoder })\n], GeneralDiscount.prototype, \"fixedDiscount\", void 0);\n__decorate([\n field({ decoder: IntegerDecoder })\n], GeneralDiscount.prototype, \"percentageDiscount\", void 0);\nexport class ProductDiscount extends AutoEncoder {\n constructor() {\n super(...arguments);\n this.discountPerPiece = 0;\n /**\n * Percentage discount on order, in pertenthousand 1 / 10 000\n * 10 = 0,1% discount\n * 1 = 0,01% discount\n */\n this.percentageDiscount = 0;\n }\n calculate(price) {\n price = Math.min(price, Math.max(0, Math.round(price * (10000 - this.percentageDiscount) / 10000))); // Min is required to support negative prices: prices should never increase after applyign discounts\n price = Math.min(price, Math.max(0, price - this.discountPerPiece)); // Min is required to support negative prices: prices should never increase after applyign discounts\n return price;\n }\n applyTo(item) {\n // Percentage discounts are always applied to the original price without other discounts\n item.percentageDiscount = Math.min(10000, item.percentageDiscount + this.percentageDiscount);\n item.fixedDiscount = item.fixedDiscount + this.discountPerPiece;\n }\n calculatePotential(item) {\n const current = item;\n const potential = item.clone();\n this.applyTo(potential);\n return current.discountedPrice - potential.discountedPrice;\n }\n}\n__decorate([\n field({ decoder: StringDecoder, defaultValue: () => uuidv4() })\n], ProductDiscount.prototype, \"id\", void 0);\n__decorate([\n field({ decoder: IntegerDecoder })\n], ProductDiscount.prototype, \"discountPerPiece\", void 0);\n__decorate([\n field({ decoder: IntegerDecoder })\n], ProductDiscount.prototype, \"percentageDiscount\", void 0);\nexport var ProductDiscountRepeatBehaviour;\n(function (ProductDiscountRepeatBehaviour) {\n ProductDiscountRepeatBehaviour[\"Once\"] = \"Once\";\n ProductDiscountRepeatBehaviour[\"RepeatLast\"] = \"RepeatLast\";\n ProductDiscountRepeatBehaviour[\"RepeatPattern\"] = \"RepeatPattern\";\n})(ProductDiscountRepeatBehaviour || (ProductDiscountRepeatBehaviour = {}));\nexport class ProductDiscountSettings extends AutoEncoder {\n constructor() {\n super(...arguments);\n this.discounts = [ProductDiscount.create({})];\n this.repeatBehaviour = ProductDiscountRepeatBehaviour.Once;\n this.cartLabel = null;\n }\n getApplicableDiscounts(offset, amount) {\n const d = this.discounts.slice();\n if (this.repeatBehaviour === ProductDiscountRepeatBehaviour.RepeatLast) {\n while (d.length < offset + amount) {\n d.push(this.discounts[this.discounts.length - 1]);\n }\n }\n else if (this.repeatBehaviour === ProductDiscountRepeatBehaviour.RepeatPattern) {\n while (d.length < offset + amount) {\n d.push(this.discounts[d.length % this.discounts.length]);\n }\n }\n return d.slice(offset, offset + amount);\n }\n getTitle(webshop, isAdmin = false) {\n const n = this.product.getName(webshop, isAdmin);\n const titles = [n.name];\n let descriptions = [];\n const footnotes = [];\n if (n.footnote) {\n const index = '*'.repeat(footnotes.length + 1);\n titles.push(index);\n footnotes.push(index + ' ' + n.footnote);\n }\n if (this.cartLabel) {\n descriptions.push(this.cartLabel);\n }\n else if (this.discounts.length === 1) {\n const discount = this.discounts[0];\n if (discount.percentageDiscount) {\n if (discount.percentageDiscount >= 100 * 100) {\n if (this.repeatBehaviour !== ProductDiscountRepeatBehaviour.Once) {\n descriptions.push('Gratis');\n }\n else {\n descriptions.push('Eén stuk gratis');\n }\n }\n else {\n if (this.repeatBehaviour !== ProductDiscountRepeatBehaviour.Once) {\n descriptions.push(Formatter.percentage(discount.percentageDiscount) + ' korting');\n }\n else {\n descriptions.push('Eén keer ' + Formatter.percentage(discount.percentageDiscount) + ' korting');\n }\n }\n }\n if (discount.discountPerPiece) {\n if (this.repeatBehaviour !== ProductDiscountRepeatBehaviour.Once) {\n descriptions.push(Formatter.price(discount.discountPerPiece) + ' korting per stuk');\n }\n else {\n descriptions.push('Eén keer ' + Formatter.price(discount.discountPerPiece) + ' korting');\n }\n }\n }\n else {\n let index = 0;\n for (const discount of this.repeatBehaviour === ProductDiscountRepeatBehaviour.RepeatPattern ? [...this.discounts, ...this.discounts, ...this.discounts] : this.discounts) {\n index += 1;\n let s = Formatter.ordinalNumber(index) + ' stuk';\n if (index === this.discounts.length) {\n if (this.repeatBehaviour === ProductDiscountRepeatBehaviour.RepeatLast) {\n if (descriptions.length > 0) {\n s = 'overige stuks';\n }\n else {\n s = 'vanaf ' + s;\n }\n }\n }\n if (discount.percentageDiscount) {\n if (discount.percentageDiscount >= 100 * 100) {\n descriptions.push(s + ' gratis');\n }\n else {\n descriptions.push(Formatter.percentage(discount.percentageDiscount) + ' korting op ' + s);\n }\n }\n if (discount.discountPerPiece) {\n descriptions.push(Formatter.price(discount.discountPerPiece) + ' korting op ' + s);\n }\n }\n if (this.repeatBehaviour === ProductDiscountRepeatBehaviour.RepeatPattern) {\n if (descriptions.length === 3 && this.discounts[this.discounts.length - 1].percentageDiscount === 100 * 100) {\n descriptions = [(this.discounts.length - 1) + ' + 1 gratis'];\n }\n else {\n descriptions.push('...');\n }\n }\n }\n if (descriptions.length === 0) {\n descriptions.push('Geen korting');\n }\n return {\n title: titles.join(' '),\n description: Formatter.capitalizeFirstLetter(Formatter.joinLast(descriptions, ', ', ' en ')),\n footnote: footnotes.join('\\n'),\n };\n }\n}\n__decorate([\n field({ decoder: StringDecoder, defaultValue: () => uuidv4() })\n], ProductDiscountSettings.prototype, \"id\", void 0);\n__decorate([\n field({ decoder: ProductSelector })\n], ProductDiscountSettings.prototype, \"product\", void 0);\n__decorate([\n field({ decoder: new ArrayDecoder(ProductDiscount) })\n], ProductDiscountSettings.prototype, \"discounts\", void 0);\n__decorate([\n field({ decoder: new EnumDecoder(ProductDiscountRepeatBehaviour) })\n], ProductDiscountSettings.prototype, \"repeatBehaviour\", void 0);\n__decorate([\n field({ decoder: StringDecoder, nullable: true, version: 238 })\n], ProductDiscountSettings.prototype, \"cartLabel\", void 0);\nexport class ProductDiscountTracker {\n constructor(discount) {\n this.usageCount = 0;\n this.cartItemQueue = [];\n this.discount = discount;\n }\n getNextDiscount(offset = 0) {\n const d = this.discount.getApplicableDiscounts(this.usageCount + offset, 1);\n if (d.length === 1) {\n return d[0];\n }\n return null;\n }\n sortQueue() {\n // Sort queue from highest price to lowest price\n this.cartItemQueue.sort((a, b) => b.price.discountedPrice - a.price.discountedPrice);\n }\n apply() {\n // Make sure we use the next one in the discount applicable discounts\n this.sortQueue();\n const item = this.cartItemQueue.shift();\n if (item) {\n const discount = this.getNextDiscount();\n if (discount) {\n const potential = discount.calculatePotential(item.price);\n this.usageCount += 1;\n discount.applyTo(item.price);\n if (potential > 0 && !item.item.discounts.find(d => d.id === this.discount.id)) {\n item.item.discounts.push(this.discount);\n }\n }\n }\n }\n addItemToQueue(cartItem) {\n this.cartItemQueue.push(...cartItem.calculatedPrices.map((price) => {\n return { price, item: cartItem };\n }));\n }\n getPotentialDiscount() {\n let offset = 0;\n let potential = 0;\n this.sortQueue();\n for (const item of this.cartItemQueue) {\n const d = this.getNextDiscount(offset);\n if (d) {\n potential += d.calculatePotential(item.price);\n }\n else {\n break;\n }\n offset += 1;\n }\n return potential;\n }\n}\nexport class Discount extends AutoEncoder {\n constructor() {\n super(...arguments);\n /**\n * Empty list = no requirements\n */\n this.requirements = [];\n /**\n * If the requirements match x times, apply the discount x times\n */\n this.applyMultipleTimes = false;\n this.orderDiscount = GeneralDiscount.create({});\n this.productDiscounts = [];\n }\n getTitle(webshop, isAdmin = false) {\n const titles = [];\n const footnotes = [];\n const descriptions = [];\n if (this.orderDiscount.percentageDiscount) {\n titles.push(Formatter.percentage(this.orderDiscount.percentageDiscount) + ' korting');\n }\n if (this.orderDiscount.fixedDiscount) {\n titles.push(Formatter.price(this.orderDiscount.fixedDiscount) + ' korting');\n }\n for (const productDiscount of this.productDiscounts) {\n const t = productDiscount.getTitle(webshop, isAdmin);\n titles.push(t.description + ' op ' + t.title);\n if (t.footnote) {\n footnotes.push(t.footnote);\n }\n }\n if (titles.length === 0) {\n return {\n title: 'Geen korting',\n description: '',\n footnote: '',\n };\n }\n if (this.requirements.length) {\n if (this.applyMultipleTimes) {\n if (this.requirements.length > 1) {\n descriptions.push('Per bestelde combinatie van');\n }\n else {\n descriptions.push('Per besteld');\n }\n }\n else {\n descriptions.push('Bij bestellen van minstens');\n }\n const subdescriptions = [];\n for (const requirement of this.requirements) {\n const n = requirement.product.getName(webshop, isAdmin);\n subdescriptions.push(requirement.amount + ' x ' + n.name);\n if (n.footnote) {\n const index = '*'.repeat(footnotes.length + 1);\n subdescriptions[subdescriptions.length - 1] = subdescriptions[subdescriptions.length - 1] + index;\n footnotes.push(index + ' ' + n.footnote);\n }\n }\n descriptions.push(Formatter.joinLast(subdescriptions, ', ', ' en '));\n }\n return {\n title: titles.join(' '),\n description: descriptions.join(' '),\n footnote: footnotes.join('\\n'),\n };\n }\n applyToCheckout(checkout) {\n let matchCount = null;\n if (this.requirements.length > 0) {\n for (const requirement of this.requirements) {\n const amount = requirement.getMatchCount(checkout);\n if (amount === 0) {\n // Not applicable\n return [];\n }\n matchCount = matchCount === null ? amount : Math.min(amount, matchCount);\n }\n }\n if (matchCount === null) {\n matchCount = 1;\n }\n if (!this.applyMultipleTimes) {\n matchCount = 1;\n }\n // Fixed part to the whole order\n const multipliedOrderDiscount = this.orderDiscount.multiply(matchCount !== null && matchCount !== void 0 ? matchCount : 1);\n checkout.fixedDiscount += multipliedOrderDiscount.fixedDiscount;\n checkout.percentageDiscount = Math.min(10000, checkout.percentageDiscount + multipliedOrderDiscount.percentageDiscount);\n const trackers = [];\n // Per product\n for (const discount of this.productDiscounts) {\n for (let index = 0; index < matchCount; index++) {\n const tracker = new ProductDiscountTracker(discount);\n for (const item of checkout.cart.items) {\n if (discount.product.doesMatch(item)) {\n tracker.addItemToQueue(item);\n // item.applicableDiscounts.push(tracker);\n }\n }\n trackers.push(tracker);\n }\n }\n return trackers;\n }\n}\n__decorate([\n field({ decoder: StringDecoder, defaultValue: () => uuidv4() })\n], Discount.prototype, \"id\", void 0);\n__decorate([\n field({ decoder: new ArrayDecoder(DiscountRequirement) })\n], Discount.prototype, \"requirements\", void 0);\n__decorate([\n field({ decoder: BooleanDecoder })\n], Discount.prototype, \"applyMultipleTimes\", void 0);\n__decorate([\n field({ decoder: GeneralDiscount })\n], Discount.prototype, \"orderDiscount\", void 0);\n__decorate([\n field({ decoder: new ArrayDecoder(ProductDiscountSettings) })\n], Discount.prototype, \"productDiscounts\", void 0);\n//# sourceMappingURL=Discount.js.map","import { __decorate } from \"tslib\";\nimport { ArrayDecoder, AutoEncoder, BooleanDecoder, DateDecoder, EnumDecoder, field, IntegerDecoder, StringDecoder } from '@simonbackx/simple-encoding';\nimport { SimpleError } from '@simonbackx/simple-errors';\nimport { Colors, Formatter } from '@stamhoofd/utility';\nimport { v4 as uuidv4 } from 'uuid';\nimport { Address } from '../addresses/Address';\nimport { City } from '../addresses/City';\nimport { CountryDecoder } from '../addresses/CountryDecoder';\nimport { Province } from '../addresses/Province';\nimport { DNSRecord, DNSRecordType } from '../DNSRecord';\nimport { Replacement } from '../endpoints/EmailRequest';\nimport { Image } from '../files/Image';\nimport { RecordCategory } from '../members/records/RecordCategory';\nimport { PaymentConfiguration, PrivatePaymentConfiguration } from '../PaymentConfiguration';\nimport { PaymentMethod } from '../PaymentMethod';\nimport { PermissionsByRole } from '../PermissionsByRole';\nimport { Policy } from '../Policy';\nimport { RichText } from '../RichText';\nimport { SeatingPlan } from '../SeatingPlan';\nimport { SponsorConfig } from '../SponsorConfig';\nimport { Discount } from './Discount';\nimport { TransferSettings } from './TransferSettings';\nimport { WebshopField } from './WebshopField';\nexport var WebshopLayout;\n(function (WebshopLayout) {\n WebshopLayout[\"Default\"] = \"Default\";\n WebshopLayout[\"Split\"] = \"Split\";\n})(WebshopLayout || (WebshopLayout = {}));\nexport var DarkMode;\n(function (DarkMode) {\n DarkMode[\"Off\"] = \"Off\";\n DarkMode[\"On\"] = \"On\";\n DarkMode[\"Auto\"] = \"Auto\";\n})(DarkMode || (DarkMode = {}));\nexport class WebshopTimeSlot extends AutoEncoder {\n constructor() {\n super(...arguments);\n /**\n * Saved in minutes since midnight\n */\n this.startTime = 12 * 60;\n /**\n * Saved in minutes since midnight (so can also keep going after midnight to indicate an event that keeps going until e.g. 03:00)\n */\n this.endTime = 14 * 60;\n this.maxOrders = null;\n this.usedOrders = 0;\n this.maxPersons = null;\n this.usedPersons = 0;\n }\n get remainingOrders() {\n if (this.maxOrders === null) {\n return null;\n }\n return Math.max(0, this.maxOrders - this.usedOrders);\n }\n get remainingPersons() {\n if (this.maxPersons === null) {\n return null;\n }\n return Math.max(0, this.maxPersons - this.usedPersons);\n }\n /**\n * In case maxPersons and maxOrders are used at the same time, try to transform it onto 1 number of remainign 'stock' for this timeslot,\n * which will be visible for customers\n */\n get listedRemainingStock() {\n const remainingOrders = this.remainingOrders;\n const remainingPersons = this.remainingPersons;\n if (remainingOrders === null && remainingPersons === null) {\n return null;\n }\n if (remainingPersons === null) {\n return remainingOrders;\n }\n if (remainingOrders === null) {\n return remainingPersons;\n }\n if (remainingPersons === 0 || remainingOrders === 0) {\n return 0;\n }\n // If we still have at least one remaining order, the remaining persons always is the number we need to show\n return remainingPersons;\n }\n static sort(a, b) {\n const aa = Formatter.dateIso(a.date) + ' ' + Formatter.minutesPadded(a.startTime) + ' ' + Formatter.minutesPadded(a.endTime);\n const bb = Formatter.dateIso(b.date) + ' ' + Formatter.minutesPadded(b.startTime) + ' ' + Formatter.minutesPadded(b.endTime);\n if (aa < bb) {\n return -1;\n }\n if (aa > bb) {\n return 1;\n }\n return 0;\n }\n /**\n * Index for sorting on both start and end time\n */\n get timeIndex() {\n return Formatter.timeIndex(this.startTime) + Formatter.timeIndex(this.endTime);\n }\n toString() {\n return this.dateString() + ', ' + this.timeRangeString();\n }\n dateString() {\n return Formatter.dateWithDay(this.date);\n }\n dateStringShort() {\n return Formatter.date(this.date);\n }\n timeRangeString() {\n return Formatter.minutes(this.startTime) + ' - ' + Formatter.minutes(this.endTime);\n }\n clearStock() {\n this.usedOrders = 0;\n this.usedPersons = 0;\n }\n}\n__decorate([\n field({ decoder: StringDecoder, defaultValue: () => uuidv4() })\n], WebshopTimeSlot.prototype, \"id\", void 0);\n__decorate([\n field({ decoder: DateDecoder })\n], WebshopTimeSlot.prototype, \"date\", void 0);\n__decorate([\n field({ decoder: IntegerDecoder })\n], WebshopTimeSlot.prototype, \"startTime\", void 0);\n__decorate([\n field({ decoder: IntegerDecoder })\n], WebshopTimeSlot.prototype, \"endTime\", void 0);\n__decorate([\n field({ decoder: IntegerDecoder, nullable: true, version: 143 })\n], WebshopTimeSlot.prototype, \"maxOrders\", void 0);\n__decorate([\n field({ decoder: IntegerDecoder, version: 143 })\n], WebshopTimeSlot.prototype, \"usedOrders\", void 0);\n__decorate([\n field({ decoder: IntegerDecoder, nullable: true, version: 143 })\n], WebshopTimeSlot.prototype, \"maxPersons\", void 0);\n__decorate([\n field({ decoder: IntegerDecoder, version: 143 })\n], WebshopTimeSlot.prototype, \"usedPersons\", void 0);\n/**\n * Configuration to keep track of available time slots. Can be a fixed number or an infinite amount of time slots\n */\nexport class WebshopTimeSlots extends AutoEncoder {\n constructor() {\n super(...arguments);\n this.timeSlots = [];\n }\n}\n__decorate([\n field({ decoder: new ArrayDecoder(WebshopTimeSlot) })\n], WebshopTimeSlots.prototype, \"timeSlots\", void 0);\nexport var CheckoutMethodType;\n(function (CheckoutMethodType) {\n CheckoutMethodType[\"OnSite\"] = \"OnSite\";\n CheckoutMethodType[\"Takeout\"] = \"Takeout\";\n CheckoutMethodType[\"Delivery\"] = \"Delivery\";\n})(CheckoutMethodType || (CheckoutMethodType = {}));\nexport class CheckoutMethodTypeHelper {\n static getName(type) {\n switch (type) {\n case CheckoutMethodType.OnSite:\n return 'Ter plaatse consumeren';\n case CheckoutMethodType.Takeout:\n return 'Afhalen';\n case CheckoutMethodType.Delivery:\n return 'Leveren';\n }\n }\n}\nexport class CheckoutMethod extends AutoEncoder {\n constructor() {\n super(...arguments);\n this.name = '';\n this.description = '';\n this.timeSlots = WebshopTimeSlots.create({});\n }\n get typeName() {\n return CheckoutMethodTypeHelper.getName(this.type);\n }\n clearStock() {\n for (const slot of this.timeSlots.timeSlots) {\n slot.clearStock();\n }\n }\n}\n__decorate([\n field({ decoder: StringDecoder, defaultValue: () => uuidv4() })\n], CheckoutMethod.prototype, \"id\", void 0);\n__decorate([\n field({ decoder: new EnumDecoder(CheckoutMethodType) })\n], CheckoutMethod.prototype, \"type\", void 0);\n__decorate([\n field({ decoder: StringDecoder })\n], CheckoutMethod.prototype, \"name\", void 0);\n__decorate([\n field({ decoder: StringDecoder })\n], CheckoutMethod.prototype, \"description\", void 0);\n__decorate([\n field({ decoder: WebshopTimeSlots })\n], CheckoutMethod.prototype, \"timeSlots\", void 0);\nexport class WebshopTakeoutMethod extends CheckoutMethod {\n constructor() {\n super(...arguments);\n this.type = CheckoutMethodType.Takeout;\n }\n}\n__decorate([\n field({ decoder: new EnumDecoder(CheckoutMethodType), patchDefaultValue: () => CheckoutMethodType.Takeout }) // patchDefaultVAlue -> to include this value in all patches and make sure we can recognize the type of the patch\n], WebshopTakeoutMethod.prototype, \"type\", void 0);\n__decorate([\n field({ decoder: Address })\n], WebshopTakeoutMethod.prototype, \"address\", void 0);\n/**\n * Choose a location and time to eat / consume the order\n */\nexport class WebshopOnSiteMethod extends CheckoutMethod {\n constructor() {\n super(...arguments);\n // Indicate this field exists for all versions, but the downgrade should get executed\n this.type = CheckoutMethodType.OnSite;\n }\n}\n__decorate([\n field({ decoder: new EnumDecoder(CheckoutMethodType) }),\n field({\n decoder: new EnumDecoder(CheckoutMethodType),\n version: 105, downgrade: () => {\n // Return takeout method for old clients\n return CheckoutMethodType.Takeout;\n },\n patchDefaultValue: () => CheckoutMethodType.OnSite,\n }) // patchDefaultVAlue -> to include this value in all patches and make sure we can recognize the type of the patch\n], WebshopOnSiteMethod.prototype, \"type\", void 0);\n__decorate([\n field({ decoder: Address })\n], WebshopOnSiteMethod.prototype, \"address\", void 0);\n/**\n * If you want to have some sort of cost (e.g. delivery cost that is variable depending on the cart value)\n */\nexport class CheckoutMethodPrice extends AutoEncoder {\n constructor() {\n super(...arguments);\n this.price = 0;\n /**\n * At what price of the cart the discount price should be used instead.\n * If it is null, the discount price will never get used\n */\n this.minimumPrice = null;\n this.discountPrice = 0;\n }\n}\n__decorate([\n field({ decoder: IntegerDecoder })\n], CheckoutMethodPrice.prototype, \"price\", void 0);\n__decorate([\n field({ decoder: IntegerDecoder, nullable: true })\n], CheckoutMethodPrice.prototype, \"minimumPrice\", void 0);\n__decorate([\n field({ decoder: IntegerDecoder })\n], CheckoutMethodPrice.prototype, \"discountPrice\", void 0);\nexport class WebshopDeliveryMethod extends CheckoutMethod {\n constructor() {\n super(...arguments);\n this.type = CheckoutMethodType.Delivery;\n this.price = CheckoutMethodPrice.create({});\n this.cities = [];\n this.provinces = [];\n this.countries = [];\n }\n}\n__decorate([\n field({ decoder: new EnumDecoder(CheckoutMethodType), patchDefaultValue: () => CheckoutMethodType.Delivery }) // patchDefaultVAlue -> to include this value in all patches and make sure we can recognize the type of the patch\n], WebshopDeliveryMethod.prototype, \"type\", void 0);\n__decorate([\n field({ decoder: CheckoutMethodPrice, version: 45 })\n], WebshopDeliveryMethod.prototype, \"price\", void 0);\n__decorate([\n field({ decoder: new ArrayDecoder(City), version: 46 })\n], WebshopDeliveryMethod.prototype, \"cities\", void 0);\n__decorate([\n field({ decoder: new ArrayDecoder(Province), version: 46 })\n], WebshopDeliveryMethod.prototype, \"provinces\", void 0);\n__decorate([\n field({ decoder: new ArrayDecoder(CountryDecoder), version: 46 })\n], WebshopDeliveryMethod.prototype, \"countries\", void 0);\nexport class AnyCheckoutMethodPatchDecoder {\n static decode(data) {\n const base = data.decode(CheckoutMethod.patchType());\n if (base.type === CheckoutMethodType.Takeout) {\n return WebshopTakeoutMethod.patchType().decode(data);\n }\n if (base.type === CheckoutMethodType.Delivery) {\n return WebshopDeliveryMethod.patchType().decode(data);\n }\n if (base.type === CheckoutMethodType.OnSite) {\n return WebshopOnSiteMethod.patchType().decode(data);\n }\n throw new SimpleError({\n code: 'invalid_field',\n message: 'Unsupported checkout type in patch. Make sure checkout type is always set when patching.',\n field: data.addToCurrentField('type'),\n });\n }\n static patchType() {\n // We never allow patches on this type\n return AnyCheckoutMethodPatchDecoder;\n }\n}\nexport class AnyCheckoutMethodDecoder {\n static decode(data) {\n const base = data.decode(CheckoutMethod);\n if (base.type === CheckoutMethodType.Takeout) {\n return WebshopTakeoutMethod.decode(data);\n }\n if (base.type === CheckoutMethodType.Delivery) {\n return WebshopDeliveryMethod.decode(data);\n }\n if (base.type === CheckoutMethodType.OnSite) {\n return WebshopOnSiteMethod.decode(data);\n }\n throw new SimpleError({\n code: 'invalid_field',\n message: 'Unsupported checkout type',\n field: data.addToCurrentField('type'),\n });\n }\n static patchType() {\n // We never allow patches on this type\n return AnyCheckoutMethodPatchDecoder;\n }\n static patchIdentifier() {\n // We never allow patches on this type\n return StringDecoder;\n }\n}\nexport var WebshopTicketType;\n(function (WebshopTicketType) {\n WebshopTicketType[\"None\"] = \"None\";\n /**\n * Create a single ticket for every order. Used to scan the order on takeout\n */\n WebshopTicketType[\"SingleTicket\"] = \"SingleTicket\";\n /**\n * Create a single ticket for every product in an order\n * + this disables the use of checkout methods\n * + this enables the use of locations and times on products\n */\n WebshopTicketType[\"Tickets\"] = \"Tickets\";\n})(WebshopTicketType || (WebshopTicketType = {}));\nexport var WebshopStatus;\n(function (WebshopStatus) {\n WebshopStatus[\"Open\"] = \"Open\";\n WebshopStatus[\"Closed\"] = \"Closed\";\n WebshopStatus[\"Archived\"] = \"Archived\";\n})(WebshopStatus || (WebshopStatus = {}));\nexport var WebshopNumberingType;\n(function (WebshopNumberingType) {\n WebshopNumberingType[\"Continuous\"] = \"Continuous\";\n WebshopNumberingType[\"Random\"] = \"Random\";\n})(WebshopNumberingType || (WebshopNumberingType = {}));\nexport var WebshopAuthType;\n(function (WebshopAuthType) {\n WebshopAuthType[\"Disabled\"] = \"Disabled\";\n WebshopAuthType[\"Required\"] = \"Required\";\n})(WebshopAuthType || (WebshopAuthType = {}));\nexport class WebshopMetaData extends AutoEncoder {\n constructor() {\n super(...arguments);\n this.name = '';\n this.title = '';\n this.description = RichText.create({});\n this.ticketType = WebshopTicketType.None;\n this.coverPhoto = null;\n this.allowComments = false;\n this.phoneEnabled = true;\n this.allowDiscountCodeEntry = false;\n this.recordCategories = [];\n /**\n * @deprecated\n */\n this.customFields = [];\n this.checkoutMethods = [];\n this.seatingPlans = [];\n this.reduceBranding = false;\n this.defaultDiscounts = [];\n /**\n * @deprecated\n * Use paymentConfiguration.paymentMethods instead\n */\n this.oldPaymentMethods = [PaymentMethod.Transfer];\n /**\n * @deprecated\n * Use paymentConfiguration.transferSettings instead\n */\n this.oldTransferSettings = TransferSettings.create({});\n this.paymentConfiguration = PaymentConfiguration.create({});\n this.policies = [];\n this.sponsors = null;\n this.availableUntil = null;\n this.openAt = null;\n /**\n * Manually close a webshop\n */\n this.status = WebshopStatus.Open;\n this.layout = WebshopLayout.Default;\n this.darkMode = DarkMode.Off;\n this.color = null;\n this.horizontalLogo = null;\n this.squareLogo = null;\n this.horizontalLogoDark = null;\n this.squareLogoDark = null;\n this.useLogo = false;\n this.expandLogo = false;\n this.cartEnabled = true;\n /**\n * Whether the domain name has been validated and is active. Only used to know if this domain should get used emails and in the dashboard.\n * This is to prevent invalid url's from being used in emails.\n * Lookups for a given domain still work if not active\n */\n this.domainActive = false;\n this.authType = WebshopAuthType.Disabled;\n }\n /**\n * @deprecated\n * Use paymentConfiguration.paymentMethods instead\n */\n get paymentMethods() {\n return this.paymentConfiguration.paymentMethods;\n }\n /**\n * @deprecated\n * Use paymentConfiguration.paymentMethods instead\n */\n get transferSettings() {\n return this.paymentConfiguration.transferSettings;\n }\n get hasTickets() {\n return this.ticketType === WebshopTicketType.SingleTicket || this.ticketType === WebshopTicketType.Tickets;\n }\n get hasSingleTickets() {\n return this.ticketType === WebshopTicketType.SingleTicket;\n }\n getEmailReplacements() {\n // Do not return a replacement in case we don't have a color (= default to organization color)\n if (!this.color) {\n return [];\n }\n return [\n Replacement.create({\n token: 'primaryColor',\n value: this.color,\n }),\n Replacement.create({\n token: 'primaryColorContrast',\n value: this.color ? Colors.getContrastColor(this.color) : '#fff',\n }),\n ];\n }\n}\n__decorate([\n field({ decoder: StringDecoder })\n], WebshopMetaData.prototype, \"name\", void 0);\n__decorate([\n field({ decoder: StringDecoder })\n], WebshopMetaData.prototype, \"title\", void 0);\n__decorate([\n field({ decoder: StringDecoder }),\n field({ decoder: RichText, version: 181, upgrade: data => RichText.create({ text: data }), downgrade: data => data.text, upgradePatch: data => RichText.patch({ text: data }), downgradePatch: data => data.text })\n], WebshopMetaData.prototype, \"description\", void 0);\n__decorate([\n field({ decoder: new EnumDecoder(WebshopTicketType), version: 105 })\n], WebshopMetaData.prototype, \"ticketType\", void 0);\n__decorate([\n field({ decoder: Image, nullable: true })\n], WebshopMetaData.prototype, \"coverPhoto\", void 0);\n__decorate([\n field({ decoder: BooleanDecoder, version: 94 })\n], WebshopMetaData.prototype, \"allowComments\", void 0);\n__decorate([\n field({ decoder: BooleanDecoder, optional: true })\n], WebshopMetaData.prototype, \"phoneEnabled\", void 0);\n__decorate([\n field({ decoder: BooleanDecoder, version: 242 })\n], WebshopMetaData.prototype, \"allowDiscountCodeEntry\", void 0);\n__decorate([\n field({ decoder: new ArrayDecoder(RecordCategory), optional: true })\n], WebshopMetaData.prototype, \"recordCategories\", void 0);\n__decorate([\n field({ decoder: new ArrayDecoder(WebshopField), version: 94 })\n], WebshopMetaData.prototype, \"customFields\", void 0);\n__decorate([\n field({ decoder: new ArrayDecoder(AnyCheckoutMethodDecoder) })\n], WebshopMetaData.prototype, \"checkoutMethods\", void 0);\n__decorate([\n field({ decoder: new ArrayDecoder(SeatingPlan), version: 211 })\n], WebshopMetaData.prototype, \"seatingPlans\", void 0);\n__decorate([\n field({ decoder: BooleanDecoder, version: 233, optional: true })\n], WebshopMetaData.prototype, \"reduceBranding\", void 0);\n__decorate([\n field({ decoder: new ArrayDecoder(Discount), version: 235 })\n], WebshopMetaData.prototype, \"defaultDiscounts\", void 0);\n__decorate([\n field({\n decoder: new ArrayDecoder(new EnumDecoder(PaymentMethod)),\n version: 151,\n field: 'paymentMethods',\n optional: true, // We no longer expect this from the backend, so it can get removed in a future version\n }),\n field({\n decoder: new ArrayDecoder(new EnumDecoder(PaymentMethod)),\n version: 208,\n field: 'oldPaymentMethods',\n optional: true, // We no longer expect this from the backend, so it can get removed in a future version\n downgrade: function () {\n // This return value for old clients\n return this.paymentMethods;\n },\n })\n], WebshopMetaData.prototype, \"oldPaymentMethods\", void 0);\n__decorate([\n field({\n decoder: TransferSettings,\n version: 49,\n field: 'transferSettings',\n optional: true, // We no longer expect this from the backend, so it can get removed in a future version\n }),\n field({\n decoder: TransferSettings,\n version: 208,\n field: 'oldTransferSettings',\n optional: true, // We no longer expect this from the backend, so it can get removed in a future version\n downgrade: function () {\n // This return value for old clients\n return this.transferSettings;\n },\n })\n], WebshopMetaData.prototype, \"oldTransferSettings\", void 0);\n__decorate([\n field({\n decoder: PaymentConfiguration,\n version: 205,\n upgrade: function () {\n return PaymentConfiguration.create({\n transferSettings: this.oldTransferSettings,\n paymentMethods: this.oldPaymentMethods,\n });\n },\n })\n], WebshopMetaData.prototype, \"paymentConfiguration\", void 0);\n__decorate([\n field({ decoder: new ArrayDecoder(Policy), version: 116 })\n], WebshopMetaData.prototype, \"policies\", void 0);\n__decorate([\n field({ decoder: SponsorConfig, version: 226, nullable: true })\n], WebshopMetaData.prototype, \"sponsors\", void 0);\n__decorate([\n field({ decoder: DateDecoder, nullable: true, version: 43 })\n], WebshopMetaData.prototype, \"availableUntil\", void 0);\n__decorate([\n field({ decoder: DateDecoder, nullable: true, version: 170 })\n], WebshopMetaData.prototype, \"openAt\", void 0);\n__decorate([\n field({ decoder: new EnumDecoder(WebshopStatus), version: 136 })\n], WebshopMetaData.prototype, \"status\", void 0);\n__decorate([\n field({ decoder: new EnumDecoder(WebshopLayout), version: 180 })\n], WebshopMetaData.prototype, \"layout\", void 0);\n__decorate([\n field({ decoder: new EnumDecoder(DarkMode), version: 182 })\n], WebshopMetaData.prototype, \"darkMode\", void 0);\n__decorate([\n field({ decoder: StringDecoder, nullable: true, version: 183 })\n], WebshopMetaData.prototype, \"color\", void 0);\n__decorate([\n field({ decoder: Image, nullable: true, version: 183 })\n], WebshopMetaData.prototype, \"horizontalLogo\", void 0);\n__decorate([\n field({ decoder: Image, nullable: true, version: 183 })\n], WebshopMetaData.prototype, \"squareLogo\", void 0);\n__decorate([\n field({ decoder: Image, nullable: true, version: 183 })\n], WebshopMetaData.prototype, \"horizontalLogoDark\", void 0);\n__decorate([\n field({ decoder: Image, nullable: true, version: 183 })\n], WebshopMetaData.prototype, \"squareLogoDark\", void 0);\n__decorate([\n field({ decoder: BooleanDecoder, version: 184 })\n], WebshopMetaData.prototype, \"useLogo\", void 0);\n__decorate([\n field({ decoder: BooleanDecoder, optional: true, version: 183 })\n], WebshopMetaData.prototype, \"expandLogo\", void 0);\n__decorate([\n field({ decoder: BooleanDecoder, version: 180 })\n], WebshopMetaData.prototype, \"cartEnabled\", void 0);\n__decorate([\n field({ decoder: BooleanDecoder, version: 135 })\n], WebshopMetaData.prototype, \"domainActive\", void 0);\n__decorate([\n field({ decoder: new EnumDecoder(WebshopAuthType), version: 188 })\n], WebshopMetaData.prototype, \"authType\", void 0);\nexport class WebshopPrivateMetaData extends AutoEncoder {\n constructor() {\n super(...arguments);\n /**\n * Automatically has full access\n */\n this.authorId = '';\n /**\n * @deprecated\n * Use role resources instead\n */\n this.permissions = PermissionsByRole.create({});\n /**\n * @deprecated\n * Use role resources instead\n */\n this.scanPermissions = PermissionsByRole.create({});\n /**\n * DNS records that need to be set in order to activate mail domain and registration domain\n */\n this.dnsRecords = [];\n this.defaultEmailId = null;\n this.notificationEmails = [];\n this.numberingType = WebshopNumberingType.Continuous;\n this.paymentConfiguration = PrivatePaymentConfiguration.create({});\n }\n static buildDNSRecords(domain) {\n return [\n DNSRecord.create({\n type: DNSRecordType.CNAME,\n name: domain + '.',\n value: STAMHOOFD.domains.webshopCname + '.',\n }),\n ];\n }\n}\n__decorate([\n field({ decoder: StringDecoder, version: 59 })\n], WebshopPrivateMetaData.prototype, \"authorId\", void 0);\n__decorate([\n field({ decoder: PermissionsByRole, version: 60, optional: true })\n], WebshopPrivateMetaData.prototype, \"permissions\", void 0);\n__decorate([\n field({ decoder: PermissionsByRole, version: 202, optional: true })\n], WebshopPrivateMetaData.prototype, \"scanPermissions\", void 0);\n__decorate([\n field({ decoder: new ArrayDecoder(DNSRecord), version: 135 })\n], WebshopPrivateMetaData.prototype, \"dnsRecords\", void 0);\n__decorate([\n field({ decoder: StringDecoder, nullable: true, version: 145 })\n], WebshopPrivateMetaData.prototype, \"defaultEmailId\", void 0);\n__decorate([\n field({ decoder: new ArrayDecoder(StringDecoder), version: 163 })\n], WebshopPrivateMetaData.prototype, \"notificationEmails\", void 0);\n__decorate([\n field({ decoder: new EnumDecoder(WebshopNumberingType), optional: true })\n], WebshopPrivateMetaData.prototype, \"numberingType\", void 0);\n__decorate([\n field({ decoder: PrivatePaymentConfiguration, version: 175, field: 'providerConfiguration' }),\n field({ decoder: PrivatePaymentConfiguration, version: 205 })\n], WebshopPrivateMetaData.prototype, \"paymentConfiguration\", void 0);\nexport class WebshopServerMetaData extends AutoEncoder {\n constructor() {\n super(...arguments);\n this.placeholder = '';\n }\n}\n__decorate([\n field({ decoder: StringDecoder })\n], WebshopServerMetaData.prototype, \"placeholder\", void 0);\n//# sourceMappingURL=WebshopMetaData.js.map","import { __decorate } from \"tslib\";\nimport { ArrayDecoder, AutoEncoder, field, StringDecoder } from '@simonbackx/simple-encoding';\nimport { v4 as uuidv4 } from 'uuid';\nimport { Category } from './Category';\nimport { Product } from './Product';\nimport { WebshopMetaData, WebshopPrivateMetaData, WebshopStatus } from './WebshopMetaData';\nexport class WebshopPreview extends AutoEncoder {\n constructor() {\n super(...arguments);\n /**\n * Not writeable\n */\n this.uri = '';\n /**\n * Not writeable\n */\n this.legacyUri = null;\n this.domain = null;\n this.domainUri = null;\n this.meta = WebshopMetaData.create({});\n this.privateMeta = WebshopPrivateMetaData.create({});\n }\n get hasSingleTickets() {\n return this.meta.hasSingleTickets;\n }\n get hasTickets() {\n return this.meta.hasTickets;\n }\n getDefaultDomain(organization) {\n var _a;\n return ((_a = STAMHOOFD.domains.webshop[organization.address.country]) !== null && _a !== void 0 ? _a : STAMHOOFD.domains.webshop['']);\n }\n getDefaultUrl(organization) {\n return this.getDefaultDomain(organization) + this.getDefaultSuffix();\n }\n getDomainUrl() {\n return this.domain + this.getDomainSuffix();\n }\n getUrl(organization) {\n if (this.domain && this.meta.domainActive) {\n return this.getDomainUrl();\n }\n return this.getDefaultUrl(organization);\n }\n getLegacyUrl(organization) {\n if (!STAMHOOFD.domains.legacyWebshop || this.legacyUri === null) {\n return null;\n }\n return organization.uri + '.' + STAMHOOFD.domains.legacyWebshop + (this.legacyUri ? '/' + this.legacyUri : '');\n }\n getDomainSuffix() {\n if (!this.domainUri) {\n return '';\n }\n return '/' + this.domainUri;\n }\n getDefaultSuffix() {\n if (!this.uri) {\n return '';\n }\n return '/' + this.uri;\n }\n getUrlSuffix() {\n if (this.domain) {\n return this.getDomainSuffix();\n }\n return this.getDefaultSuffix();\n }\n isClosed(margin = 0) {\n if (this.meta.status !== WebshopStatus.Open || (this.meta.availableUntil && this.meta.availableUntil.getTime() < new Date().getTime() + margin)) {\n return true;\n }\n return false;\n }\n}\n__decorate([\n field({ decoder: StringDecoder, defaultValue: () => uuidv4() })\n], WebshopPreview.prototype, \"id\", void 0);\n__decorate([\n field({ decoder: StringDecoder, version: 134 })\n], WebshopPreview.prototype, \"uri\", void 0);\n__decorate([\n field({ decoder: StringDecoder, version: 89, field: 'uri' }),\n field({\n decoder: StringDecoder,\n nullable: true,\n version: 134,\n downgrade: function () {\n var _a;\n return (_a = this.legacyUri) !== null && _a !== void 0 ? _a : this.uri;\n },\n })\n], WebshopPreview.prototype, \"legacyUri\", void 0);\n__decorate([\n field({ decoder: StringDecoder, nullable: true, version: 89 })\n], WebshopPreview.prototype, \"domain\", void 0);\n__decorate([\n field({ decoder: StringDecoder, nullable: true, version: 89 })\n], WebshopPreview.prototype, \"domainUri\", void 0);\n__decorate([\n field({ decoder: WebshopMetaData })\n], WebshopPreview.prototype, \"meta\", void 0);\n__decorate([\n field({ decoder: WebshopPrivateMetaData, version: 62 })\n], WebshopPreview.prototype, \"privateMeta\", void 0);\nexport class Webshop extends AutoEncoder {\n constructor() {\n super(...arguments);\n /**\n * Not writeable\n */\n this.uri = '';\n /**\n * Not writeable\n */\n this.legacyUri = null;\n this.domain = null;\n this.domainUri = null;\n this.meta = WebshopMetaData.create({});\n this.products = [];\n this.categories = [];\n }\n get hasSingleTickets() {\n return this.meta.hasSingleTickets;\n }\n get hasTickets() {\n return this.meta.hasTickets;\n }\n /**\n * Whether we need to show the text 'Free' in webshops (only if we have at least one non-free product)\n */\n get isAllFree() {\n for (const product of this.products) {\n for (const price of product.prices) {\n if (price.price) {\n return false;\n }\n }\n for (const menu of product.optionMenus) {\n for (const option of menu.options) {\n if (option.price) {\n return false;\n }\n }\n }\n }\n for (const plan of this.meta.seatingPlans) {\n for (const category of plan.categories) {\n if (category.price) {\n return false;\n }\n }\n }\n if (this.meta.paymentConfiguration.administrationFee.fixed) {\n return false;\n }\n return true;\n }\n get canEnableCart() {\n if (this.products.length === 1 && !this.meta.allowDiscountCodeEntry) {\n const product = this.products[0];\n if (product.isUnique) {\n return false;\n }\n }\n return true;\n }\n get shouldEnableCart() {\n if (!this.meta.cartEnabled) {\n return false;\n }\n return this.canEnableCart;\n }\n getDefaultDomain(organization) {\n var _a;\n return ((_a = STAMHOOFD.domains.webshop[organization.address.country]) !== null && _a !== void 0 ? _a : STAMHOOFD.domains.webshop['']);\n }\n getDefaultUrl(organization) {\n return this.getDefaultDomain(organization) + this.getDefaultSuffix();\n }\n getDomainUrl() {\n return this.domain + this.getDomainSuffix();\n }\n getUrl(organization) {\n if (this.domain && this.meta.domainActive) {\n return this.getDomainUrl();\n }\n return this.getDefaultUrl(organization);\n }\n getLegacyUrl(organization) {\n if (!STAMHOOFD.domains.legacyWebshop || this.legacyUri === null) {\n return null;\n }\n return organization.uri + '.' + STAMHOOFD.domains.legacyWebshop + (this.legacyUri ? '/' + this.legacyUri : '');\n }\n getDomainSuffix() {\n if (!this.domainUri) {\n return '';\n }\n return '/' + this.domainUri;\n }\n getDefaultSuffix() {\n if (!this.uri) {\n return '';\n }\n return '/' + this.uri;\n }\n getUrlSuffix() {\n if (this.domain) {\n return this.getDomainSuffix();\n }\n return this.getDefaultSuffix();\n }\n buildDNSRecords() {\n if (!this.domain) {\n return [];\n }\n return WebshopPrivateMetaData.buildDNSRecords(this.domain);\n }\n isClosed(margin = 0) {\n if (this.meta.status !== WebshopStatus.Open || (this.meta.availableUntil && this.meta.availableUntil.getTime() < new Date().getTime() + margin) || this.opensInTheFuture()) {\n return true;\n }\n return false;\n }\n opensInTheFuture() {\n if (this.meta.status !== WebshopStatus.Open) {\n return false;\n }\n if (this.meta.openAt && this.meta.openAt.getTime() > new Date().getTime()) {\n return true;\n }\n return false;\n }\n clearStock() {\n for (const product of this.products) {\n product.clearStock();\n }\n for (const method of this.meta.checkoutMethods) {\n method.clearStock();\n }\n }\n}\n__decorate([\n field({ decoder: StringDecoder, defaultValue: () => uuidv4() })\n], Webshop.prototype, \"id\", void 0);\n__decorate([\n field({ decoder: StringDecoder, version: 134 })\n], Webshop.prototype, \"uri\", void 0);\n__decorate([\n field({ decoder: StringDecoder, field: 'uri' }),\n field({\n decoder: StringDecoder,\n nullable: true,\n version: 134,\n downgrade: function () {\n var _a;\n return (_a = this.legacyUri) !== null && _a !== void 0 ? _a : this.uri;\n },\n })\n], Webshop.prototype, \"legacyUri\", void 0);\n__decorate([\n field({ decoder: StringDecoder, nullable: true })\n], Webshop.prototype, \"domain\", void 0);\n__decorate([\n field({ decoder: StringDecoder, nullable: true })\n], Webshop.prototype, \"domainUri\", void 0);\n__decorate([\n field({ decoder: WebshopMetaData })\n], Webshop.prototype, \"meta\", void 0);\n__decorate([\n field({ decoder: new ArrayDecoder(Product) })\n], Webshop.prototype, \"products\", void 0);\n__decorate([\n field({ decoder: new ArrayDecoder(Category) })\n], Webshop.prototype, \"categories\", void 0);\nexport class PrivateWebshop extends Webshop {\n constructor() {\n super(...arguments);\n this.privateMeta = WebshopPrivateMetaData.create({});\n }\n}\n__decorate([\n field({ decoder: WebshopPrivateMetaData })\n], PrivateWebshop.prototype, \"privateMeta\", void 0);\n//# sourceMappingURL=Webshop.js.map","import { __decorate } from \"tslib\";\nimport { ArrayDecoder, AutoEncoder, BooleanDecoder, DateDecoder, field, StringDecoder } from '@simonbackx/simple-encoding';\nimport { v4 as uuidv4 } from 'uuid';\nimport { Address } from './addresses/Address';\nimport { Group } from './Group';\nimport { OrganizationMetaData } from './OrganizationMetaData';\nimport { OrganizationPrivateMetaData } from './OrganizationPrivateMetaData';\nimport { OrganizationRegistrationPeriod, RegistrationPeriod } from './RegistrationPeriod';\nimport { Webshop, WebshopPreview } from './webshops/Webshop';\nexport class Organization extends AutoEncoder {\n constructor() {\n super(...arguments);\n /**\n * Name of the organization you are creating\n */\n this.name = '';\n this.active = true;\n this.website = null;\n this.registerDomain = null;\n this.uri = '';\n /**\n * @deprecated\n * Please use period instead now\n */\n this.groups = [];\n this.createdAt = new Date();\n /**\n * Only set for users with full access to the organization\n */\n this.privateMeta = null;\n /**\n * Only set for users with full access to the organization\n */\n this.webshops = [];\n /**\n * Only available for patching. Also available with lazy loading OrganizationAdmins\n */\n this.admins = null;\n }\n /**\n * Get all groups that are in a category\n */\n get availableGroups() {\n return this.period.categoryTree.getAllGroups();\n }\n getGroupsForPermissions(permissions) {\n return this.getCategoryTree({ permissions }).getAllGroups();\n }\n get adminAvailableGroups() {\n return this.period.adminCategoryTree.getAllGroups();\n }\n /**\n * @deprecated\n *\n * Get all groups that are in a category\n */\n get availableCategories() {\n return this.period.availableCategories;\n }\n /**\n * @deprecated\n */\n get categoryTree() {\n return this.period.categoryTree;\n }\n /**\n * @deprecated\n */\n get publicCategoryTree() {\n return this.period.publicCategoryTree;\n }\n /**\n * @deprecated\n */\n get adminCategoryTree() {\n return this.getCategoryTree({ admin: true });\n }\n isAcceptingNewMembers(admin) {\n const allGroups = this.adminAvailableGroups; // we need to check admin groups because required groups could be restricted to internal groups\n const groups = this.getCategoryTree({ admin }).getAllGroups();\n for (const group of groups) {\n if (group.closed) {\n continue;\n }\n if (group.settings.requireGroupIds.length > 0 && group.settings.requireGroupIds.find(id => !!allGroups.find(g => g.id === id))) {\n continue;\n }\n if (group.settings.availableMembers === 0 && !group.waitingList) {\n continue;\n }\n return true;\n }\n return false;\n }\n isAcceptingExistingMembers(admin) {\n const groups = this.getCategoryTree({ admin }).getAllGroups();\n for (const group of groups) {\n if (group.closed) {\n continue;\n }\n if (group.settings.availableMembers === 0 && !group.waitingList) {\n continue;\n }\n return true;\n }\n return false;\n }\n /**\n * Contains the fully build hierarchy without the need for ID lookups. Try not to use this tree when modifying it.\n *\n * For registration members perspective, try to use options.admin instead of options.permissions.\n * options.permissions is only used if you want to hide groups and empty categories that you don't have permissions for.\n */\n getCategoryTree(options) {\n return this.period.getCategoryTree(options ? { ...options, organization: this } : { organization: this });\n }\n /**\n * @deprecated\n * (todo) Contains the fully build hierarchy without the need for ID lookups. Try not to use this tree when modifying it.\n */\n getCategoryTreeWithDepth(maxDepth) {\n return this.getCategoryTree({ maxDepth });\n }\n get resolvedRegisterDomain() {\n var _a;\n if (this.registerDomain) {\n return this.registerDomain;\n }\n if (!STAMHOOFD.domains.registration) {\n return null;\n }\n return this.uri + '.' + ((_a = STAMHOOFD.domains.registration[this.address.country]) !== null && _a !== void 0 ? _a : STAMHOOFD.domains.registration['']);\n }\n get registerUrl() {\n const d = this.resolvedRegisterDomain;\n if (!d) {\n return 'https://' + STAMHOOFD.domains.dashboard + '/leden/' + this.uri;\n }\n return 'https://' + d;\n }\n get dashboardDomain() {\n return STAMHOOFD.domains.dashboard;\n }\n}\n__decorate([\n field({ decoder: StringDecoder, defaultValue: () => uuidv4() })\n], Organization.prototype, \"id\", void 0);\n__decorate([\n field({ decoder: StringDecoder })\n], Organization.prototype, \"name\", void 0);\n__decorate([\n field({ decoder: BooleanDecoder, version: 325 })\n], Organization.prototype, \"active\", void 0);\n__decorate([\n field({ decoder: StringDecoder, nullable: true, version: 3, upgrade: () => null })\n], Organization.prototype, \"website\", void 0);\n__decorate([\n field({ decoder: StringDecoder, nullable: true, version: 3, upgrade: () => null })\n], Organization.prototype, \"registerDomain\", void 0);\n__decorate([\n field({ decoder: StringDecoder, version: 3, upgrade: () => '' })\n], Organization.prototype, \"uri\", void 0);\n__decorate([\n field({ decoder: OrganizationMetaData, defaultValue: () => OrganizationMetaData.create({}) })\n], Organization.prototype, \"meta\", void 0);\n__decorate([\n field({ decoder: Address })\n], Organization.prototype, \"address\", void 0);\n__decorate([\n field({ decoder: new ArrayDecoder(Group), version: 2, upgrade: () => [], optional: true })\n], Organization.prototype, \"groups\", void 0);\n__decorate([\n field({ decoder: OrganizationRegistrationPeriod, version: 264, defaultValue: () => OrganizationRegistrationPeriod.create({ period: RegistrationPeriod.create({}) }) })\n], Organization.prototype, \"period\", void 0);\n__decorate([\n field({ decoder: DateDecoder, version: 259 })\n], Organization.prototype, \"createdAt\", void 0);\n__decorate([\n field({ decoder: OrganizationPrivateMetaData, nullable: true, version: 6 })\n], Organization.prototype, \"privateMeta\", void 0);\n__decorate([\n field({ decoder: new ArrayDecoder(WebshopPreview), version: 38, upgrade: () => [] })\n], Organization.prototype, \"webshops\", void 0);\nexport class OrganizationWithWebshop extends AutoEncoder {\n}\n__decorate([\n field({ decoder: Organization })\n], OrganizationWithWebshop.prototype, \"organization\", void 0);\n__decorate([\n field({ decoder: Webshop })\n], OrganizationWithWebshop.prototype, \"webshop\", void 0);\nexport class GetWebshopFromDomainResult extends AutoEncoder {\n constructor() {\n super(...arguments);\n /**\n * There is one specific webshop for the given domain.\n */\n this.webshop = null;\n /**\n * Multiple webshops possible. Show a selection page.\n */\n this.webshops = [];\n }\n}\n__decorate([\n field({ decoder: Organization })\n], GetWebshopFromDomainResult.prototype, \"organization\", void 0);\n__decorate([\n field({ decoder: Webshop, nullable: true })\n], GetWebshopFromDomainResult.prototype, \"webshop\", void 0);\n__decorate([\n field({ decoder: new ArrayDecoder(WebshopPreview), version: 137 })\n], GetWebshopFromDomainResult.prototype, \"webshops\", void 0);\nexport const OrganizationPatch = Organization.patchType();\n//# sourceMappingURL=Organization.js.map","import { __decorate } from \"tslib\";\nimport { AutoEncoder, field, StringDecoder } from '@simonbackx/simple-encoding';\nimport { Address } from './addresses/Address';\nexport class OrganizationSimple extends AutoEncoder {\n}\n__decorate([\n field({ decoder: StringDecoder })\n], OrganizationSimple.prototype, \"id\", void 0);\n__decorate([\n field({ decoder: StringDecoder })\n], OrganizationSimple.prototype, \"name\", void 0);\n__decorate([\n field({ decoder: Address })\n], OrganizationSimple.prototype, \"address\", void 0);\n//# sourceMappingURL=OrganizationSimple.js.map","import { __decorate } from \"tslib\";\nimport { AutoEncoder, field, StringDecoder } from '@simonbackx/simple-encoding';\nimport { Company } from './Company';\n/**\n * Who is paying / paid, and how can we contact them\n */\nexport class PaymentCustomer extends AutoEncoder {\n constructor() {\n super(...arguments);\n this.firstName = null;\n this.lastName = null;\n this.email = null;\n this.phone = null;\n /**\n * As soon as this is set, we can assume that the customer is a company\n */\n this.company = null;\n }\n get name() {\n if (this.firstName && this.lastName) {\n return `${this.firstName} ${this.lastName}`;\n }\n return this.firstName || this.lastName;\n }\n get dynamicName() {\n if (this.company) {\n return this.company.name || this.company.companyNumber || 'Onbekend bedrijf';\n }\n if (this.firstName && this.lastName) {\n return `${this.firstName} ${this.lastName}`;\n }\n return this.firstName || this.lastName || this.email || this.phone || 'Onbekende klant';\n }\n get dynamicEmail() {\n var _a;\n return this.email || ((_a = this.company) === null || _a === void 0 ? void 0 : _a.administrationEmail) || null;\n }\n}\n__decorate([\n field({ decoder: StringDecoder, nullable: true })\n], PaymentCustomer.prototype, \"firstName\", void 0);\n__decorate([\n field({ decoder: StringDecoder, nullable: true })\n], PaymentCustomer.prototype, \"lastName\", void 0);\n__decorate([\n field({ decoder: StringDecoder, nullable: true })\n], PaymentCustomer.prototype, \"email\", void 0);\n__decorate([\n field({ decoder: StringDecoder, nullable: true })\n], PaymentCustomer.prototype, \"phone\", void 0);\n__decorate([\n field({ decoder: Company, nullable: true })\n], PaymentCustomer.prototype, \"company\", void 0);\n//# sourceMappingURL=PaymentCustomer.js.map","import { Formatter } from '@stamhoofd/utility';\nexport var PaymentStatus;\n(function (PaymentStatus) {\n PaymentStatus[\"Pending\"] = \"Pending\";\n PaymentStatus[\"Failed\"] = \"Failed\";\n PaymentStatus[\"Succeeded\"] = \"Succeeded\";\n PaymentStatus[\"Created\"] = \"Created\";\n})(PaymentStatus || (PaymentStatus = {}));\nexport class PaymentStatusHelper {\n static getName(method) {\n switch (method) {\n case PaymentStatus.Pending: return 'wacht op betaling';\n case PaymentStatus.Created: return 'wacht op betaling';\n case PaymentStatus.Succeeded: return 'ontvangen';\n case PaymentStatus.Failed: return 'mislukt/geannuleerd';\n }\n }\n static getNameCapitalized(method) {\n return Formatter.capitalizeFirstLetter(PaymentStatusHelper.getName(method));\n }\n}\n//# sourceMappingURL=PaymentStatus.js.map","/**\n * This is a custom encoded implementation since we need to follow the OAuth2 specification, which for some reason\n * returns a relative \"expires_in\" timestamp instead of an absolute value.\n */\nexport class Token {\n constructor(token) {\n this.accessToken = token.accessToken;\n this.refreshToken = token.refreshToken;\n this.accessTokenValidUntil = token.accessTokenValidUntil;\n }\n static decode(data) {\n return new Token({\n accessToken: data.field('access_token').string,\n refreshToken: data.field('refresh_token').string,\n accessTokenValidUntil: new Date(new Date().getTime() + data.field('expires_in').integer * 1000),\n });\n }\n encode(_context) {\n // We convert to snake case, as specified in the OAuth2 specs\n return {\n access_token: this.accessToken,\n token_type: 'bearer',\n expires_in: Math.floor((this.accessTokenValidUntil.getTime() - new Date().getTime()) / 1000),\n refresh_token: this.refreshToken,\n };\n }\n needsRefresh() {\n return this.accessToken.length == 0 || this.accessTokenValidUntil < new Date();\n }\n}\n//# sourceMappingURL=Token.js.map","import { __decorate } from \"tslib\";\nimport { AutoEncoder, DateDecoder, EnumDecoder, field, IntegerDecoder, StringDecoder } from '@simonbackx/simple-encoding';\nimport { Formatter } from '@stamhoofd/utility';\nimport { v4 as uuidv4 } from 'uuid';\nimport { downgradePaymentMethodV150, PaymentMethod, PaymentMethodHelper, PaymentMethodV150 } from '../PaymentMethod';\nimport { PaymentProvider } from '../PaymentProvider';\nimport { PaymentStatus } from '../PaymentStatus';\nimport { TransferSettings } from '../webshops/TransferSettings';\nimport { PaymentCustomer } from '../PaymentCustomer';\nexport class Payment extends AutoEncoder {\n constructor() {\n super(...arguments);\n this.status = PaymentStatus.Created;\n this.provider = null;\n this.customer = null;\n this.price = 0;\n this.freeContribution = null;\n // Transfer description if paid via transfer\n this.transferDescription = null;\n this.transferSettings = null;\n this.paidAt = null;\n this.createdAt = new Date();\n this.updatedAt = new Date();\n this.organizationId = null;\n }\n get isPending() {\n return this.status !== PaymentStatus.Succeeded && this.status !== PaymentStatus.Failed;\n }\n get isSucceeded() {\n return this.status === PaymentStatus.Succeeded;\n }\n get isFailed() {\n return this.status === PaymentStatus.Failed;\n }\n get canChangeStatus() {\n return this.method === PaymentMethod.Transfer || this.method === PaymentMethod.PointOfSale || this.method === PaymentMethod.Unknown;\n }\n matchQuery(query) {\n const lowerQuery = query.toLowerCase();\n if (this.transferDescription && this.transferDescription.toLowerCase().includes(lowerQuery)) {\n return true;\n }\n return false;\n }\n getHTMLTable() {\n var _a, _b, _c, _d, _e, _f;\n let str = ``;\n /**\n * Replacement.create({\n token: \"priceToPay\",\n value: forcePayment?.status !== PaymentStatus.Succeeded ? Formatter.price(forcePayment?.price ?? 0) : \"\"\n }),\n Replacement.create({\n token: \"paymentMethod\",\n value: forcePayment?.method ? PaymentMethodHelper.getName(forcePayment.method) : PaymentMethodHelper.getName(this.data.paymentMethod)\n }),\n Replacement.create({\n token: \"transferDescription\",\n value: forcePayment?.status !== PaymentStatus.Succeeded && forcePayment?.method === PaymentMethod.Transfer ? (forcePayment?.transferDescription ?? \"\") : \"\"\n }),\n Replacement.create({\n token: \"transferBankAccount\",\n value: forcePayment?.status !== PaymentStatus.Succeeded && forcePayment?.method === PaymentMethod.Transfer ? ((webshop?.meta.transferSettings.iban ? webshop?.meta.transferSettings.iban : organization.meta.transferSettings.iban) ?? \"\") : \"\"\n }),\n Replacement.create({\n token: \"transferBankCreditor\",\n value: forcePayment?.status !== PaymentStatus.Succeeded && forcePayment?.method === PaymentMethod.Transfer ? ((webshop?.meta.transferSettings.creditor ? webshop?.meta.transferSettings.creditor : organization.meta.transferSettings.creditor) ?? organization.name) : \"\"\n }),\n */\n const data = [\n {\n title: 'Betaalmethode',\n value: this.method ? Formatter.capitalizeFirstLetter(PaymentMethodHelper.getName(this.method)) : '',\n },\n {\n title: 'Te betalen',\n value: this.status !== PaymentStatus.Succeeded ? Formatter.price((_a = this === null || this === void 0 ? void 0 : this.price) !== null && _a !== void 0 ? _a : 0) : Formatter.price(0),\n },\n ...(this.method === PaymentMethod.Transfer\n ? [\n {\n title: 'Mededeling',\n value: (_b = this.transferDescription) !== null && _b !== void 0 ? _b : '',\n },\n {\n title: 'Rekeningnummer',\n value: (_d = (_c = this.transferSettings) === null || _c === void 0 ? void 0 : _c.iban) !== null && _d !== void 0 ? _d : '',\n },\n {\n title: 'Begunstigde',\n value: (_f = (_e = this.transferSettings) === null || _e === void 0 ? void 0 : _e.creditor) !== null && _f !== void 0 ? _f : '',\n },\n ]\n : []),\n ];\n for (const replacement of data) {\n if (replacement.value.length == 0) {\n continue;\n }\n str += ``;\n }\n return str + '

${Formatter.escapeHtml(replacement.title)}

${Formatter.escapeHtml(replacement.value)}
';\n }\n}\n__decorate([\n field({ decoder: StringDecoder, defaultValue: () => uuidv4() })\n], Payment.prototype, \"id\", void 0);\n__decorate([\n field({ decoder: new EnumDecoder(PaymentMethodV150), nullable: true }),\n field({\n decoder: new EnumDecoder(PaymentMethod),\n version: 151,\n downgrade: downgradePaymentMethodV150,\n })\n], Payment.prototype, \"method\", void 0);\n__decorate([\n field({ decoder: new EnumDecoder(PaymentStatus) })\n], Payment.prototype, \"status\", void 0);\n__decorate([\n field({ decoder: new EnumDecoder(PaymentProvider), nullable: true, version: 152 })\n], Payment.prototype, \"provider\", void 0);\n__decorate([\n field({ decoder: PaymentCustomer, nullable: true, version: 321 })\n], Payment.prototype, \"customer\", void 0);\n__decorate([\n field({ decoder: IntegerDecoder })\n], Payment.prototype, \"price\", void 0);\n__decorate([\n field({ decoder: IntegerDecoder, nullable: true, version: 92 })\n], Payment.prototype, \"freeContribution\", void 0);\n__decorate([\n field({ decoder: StringDecoder, nullable: true })\n], Payment.prototype, \"transferDescription\", void 0);\n__decorate([\n field({ decoder: TransferSettings, nullable: true, version: 160 })\n], Payment.prototype, \"transferSettings\", void 0);\n__decorate([\n field({ decoder: DateDecoder, nullable: true })\n], Payment.prototype, \"paidAt\", void 0);\n__decorate([\n field({ decoder: DateDecoder })\n], Payment.prototype, \"createdAt\", void 0);\n__decorate([\n field({ decoder: DateDecoder })\n], Payment.prototype, \"updatedAt\", void 0);\n__decorate([\n field({ decoder: StringDecoder, nullable: true, version: 324 })\n], Payment.prototype, \"organizationId\", void 0);\nexport class Settlement extends AutoEncoder {\n constructor() {\n super(...arguments);\n /**\n * Fee for the payment provider for the individual payment\n * Only set if it is witheld from the settlement/payout\n */\n this.fee = 0;\n }\n}\n__decorate([\n field({ decoder: StringDecoder })\n], Settlement.prototype, \"id\", void 0);\n__decorate([\n field({ decoder: StringDecoder })\n], Settlement.prototype, \"reference\", void 0);\n__decorate([\n field({ decoder: DateDecoder })\n], Settlement.prototype, \"settledAt\", void 0);\n__decorate([\n field({ decoder: IntegerDecoder })\n], Settlement.prototype, \"amount\", void 0);\n__decorate([\n field({ decoder: IntegerDecoder, version: 195 })\n], Settlement.prototype, \"fee\", void 0);\nexport class PrivatePayment extends Payment {\n constructor() {\n super(...arguments);\n this.settlement = null;\n this.iban = null;\n this.ibanName = null;\n this.transferFee = 0;\n }\n}\n__decorate([\n field({ decoder: Settlement, nullable: true })\n], PrivatePayment.prototype, \"settlement\", void 0);\n__decorate([\n field({ decoder: StringDecoder, nullable: true, version: 153 })\n], PrivatePayment.prototype, \"iban\", void 0);\n__decorate([\n field({ decoder: StringDecoder, nullable: true, version: 153 })\n], PrivatePayment.prototype, \"ibanName\", void 0);\n__decorate([\n field({ decoder: IntegerDecoder, version: 197 })\n], PrivatePayment.prototype, \"transferFee\", void 0);\n//# sourceMappingURL=Payment.js.map","import { __decorate } from \"tslib\";\nimport { ArrayDecoder, AutoEncoder, DateDecoder, EnumDecoder, field, IntegerDecoder, MapDecoder, StringDecoder } from '@simonbackx/simple-encoding';\nimport { v4 as uuidv4 } from 'uuid';\nimport { Payment, PrivatePayment } from './members/Payment';\nexport var BalanceItemStatus;\n(function (BalanceItemStatus) {\n /**\n * The balance is not yet owed by the member (payment is optional and not visible). But it is paid, the status will change to 'paid'.\n */\n BalanceItemStatus[\"Hidden\"] = \"Hidden\";\n /**\n * The balance is owed by the member, but not yet (fully) paid by the member.\n */\n BalanceItemStatus[\"Pending\"] = \"Pending\";\n /**\n * The balance has been paid by the member. All settled.\n */\n BalanceItemStatus[\"Paid\"] = \"Paid\";\n})(BalanceItemStatus || (BalanceItemStatus = {}));\nexport var BalanceItemType;\n(function (BalanceItemType) {\n BalanceItemType[\"Registration\"] = \"Registration\";\n BalanceItemType[\"AdministrationFee\"] = \"AdministrationFee\";\n BalanceItemType[\"FreeContribution\"] = \"FreeContribution\";\n BalanceItemType[\"Order\"] = \"Order\";\n BalanceItemType[\"Other\"] = \"Other\";\n BalanceItemType[\"PlatformMembership\"] = \"PlatformMembership\";\n})(BalanceItemType || (BalanceItemType = {}));\nexport function getBalanceItemTypeName(type) {\n switch (type) {\n case BalanceItemType.Registration: return 'Inschrijving';\n case BalanceItemType.AdministrationFee: return 'Administratiekosten';\n case BalanceItemType.FreeContribution: return 'Vrije bijdrage';\n case BalanceItemType.Order: return 'Webshopbestelling';\n case BalanceItemType.Other: return 'Andere';\n case BalanceItemType.PlatformMembership: return 'Aansluiting';\n }\n}\nexport function getBalanceItemTypeIcon(type) {\n switch (type) {\n case BalanceItemType.Registration: return 'membership-filled';\n case BalanceItemType.AdministrationFee: return 'calculator';\n case BalanceItemType.FreeContribution: return 'gift';\n case BalanceItemType.Order: return 'basket';\n case BalanceItemType.Other: return 'card';\n case BalanceItemType.PlatformMembership: return 'membership-filled';\n }\n return null;\n}\nexport var BalanceItemRelationType;\n(function (BalanceItemRelationType) {\n BalanceItemRelationType[\"Webshop\"] = \"Webshop\";\n BalanceItemRelationType[\"Group\"] = \"Group\";\n BalanceItemRelationType[\"GroupPrice\"] = \"GroupPrice\";\n BalanceItemRelationType[\"GroupOptionMenu\"] = \"GroupOptionMenu\";\n BalanceItemRelationType[\"GroupOption\"] = \"GroupOption\";\n BalanceItemRelationType[\"Member\"] = \"Member\";\n BalanceItemRelationType[\"MembershipType\"] = \"MembershipType\";\n})(BalanceItemRelationType || (BalanceItemRelationType = {}));\nexport function getBalanceItemRelationTypeName(type) {\n switch (type) {\n case BalanceItemRelationType.Webshop: return 'Webshop';\n case BalanceItemRelationType.Group: return 'Inschrijving';\n case BalanceItemRelationType.GroupPrice: return 'Tarief';\n case BalanceItemRelationType.GroupOptionMenu: return 'Keuzemenu';\n case BalanceItemRelationType.GroupOption: return 'Keuze';\n case BalanceItemRelationType.Member: return 'Lid';\n case BalanceItemRelationType.MembershipType: return 'Aansluitingstype';\n }\n}\nexport function getBalanceItemRelationTypeDescription(type) {\n switch (type) {\n case BalanceItemRelationType.Webshop: return 'Webshop geassocieerd aan dit item';\n case BalanceItemRelationType.Group: return 'Naam van de groep of activiteit geassocieerd aan dit item';\n case BalanceItemRelationType.GroupPrice: return 'Tarief dat gekozen werd voor de groep of activiteit';\n case BalanceItemRelationType.GroupOptionMenu: return 'Naam van het keuzemenu waaruit gekozen werd';\n case BalanceItemRelationType.GroupOption: return 'De gekozen optie van het keuzemenu waarvoor betaald werd. Als er meerdere keuzes gekozen werden, dan wordt er per keuze een apart item aangemaakt.';\n case BalanceItemRelationType.Member: return 'Naam van het lid geassocieerd aan dit item';\n case BalanceItemRelationType.MembershipType: return 'Naam van het aansluitingstype geassocieerd aan dit item';\n }\n}\nexport function shouldAggregateOnRelationType(type, allRelations) {\n switch (type) {\n case BalanceItemRelationType.GroupPrice:\n // Only aggregate on group price if it is not for a specific option (we'll combine all options in one group, regardless of the corresponding groupPrice)\n return !allRelations.has(BalanceItemRelationType.GroupOption);\n case BalanceItemRelationType.Member: return true;\n }\n return false;\n}\n/**\n * Helps you understand what a balance item is for. It can be for multiple things at the same time, e.g. when it is an option to buy a ticket, it is also a ticket.\n */\nexport class BalanceItemRelation extends AutoEncoder {\n constructor() {\n super(...arguments);\n this.name = '';\n }\n}\n__decorate([\n field({ decoder: StringDecoder })\n], BalanceItemRelation.prototype, \"id\", void 0);\n__decorate([\n field({ decoder: StringDecoder })\n], BalanceItemRelation.prototype, \"name\", void 0);\nexport class BalanceItem extends AutoEncoder {\n constructor() {\n super(...arguments);\n this.type = BalanceItemType.Other;\n this.relations = new Map();\n this.description = '';\n this.amount = 1;\n this.unitPrice = 0; // unit price\n this.pricePaid = 0;\n this.pricePending = 0;\n this.createdAt = new Date();\n this.status = BalanceItemStatus.Pending;\n this.organizationId = '';\n this.memberId = null;\n this.userId = null;\n this.registrationId = null;\n }\n get price() {\n return this.unitPrice * this.amount;\n }\n get priceOpen() {\n return this.price - this.pricePaid - this.pricePending;\n }\n get isPaid() {\n return this.pricePaid === this.price;\n }\n get paymentShortDescription() {\n var _a, _b, _c, _d, _e, _f;\n switch (this.type) {\n case BalanceItemType.Registration: {\n return (_b = (_a = this.relations.get(BalanceItemRelationType.Group)) === null || _a === void 0 ? void 0 : _a.name) !== null && _b !== void 0 ? _b : 'inschrijving';\n }\n case BalanceItemType.AdministrationFee: return 'administratiekosten';\n case BalanceItemType.FreeContribution: return 'vrije bijdrage';\n case BalanceItemType.Order: return (_d = (_c = this.relations.get(BalanceItemRelationType.Webshop)) === null || _c === void 0 ? void 0 : _c.name) !== null && _d !== void 0 ? _d : 'webshop';\n case BalanceItemType.Other: return 'andere';\n case BalanceItemType.PlatformMembership: return (_f = (_e = this.relations.get(BalanceItemRelationType.MembershipType)) === null || _e === void 0 ? void 0 : _e.name) !== null && _f !== void 0 ? _f : 'aansluitingen';\n }\n }\n get groupPrefix() {\n return this.itemPrefix;\n }\n get groupTitle() {\n return this.itemTitle;\n }\n get groupDescription() {\n return null;\n }\n get priceBreakown() {\n const all = [\n {\n name: 'Reeds betaald',\n price: this.pricePaid,\n },\n {\n name: 'In verwerking',\n price: this.pricePending,\n },\n ].filter(a => a.price !== 0);\n if (all.length > 0) {\n all.unshift({\n name: 'Totaalprijs',\n price: this.price,\n });\n }\n return [\n ...all,\n {\n name: this.priceOpen < 0 ? 'Terug te krijgen' : 'Te betalen',\n price: Math.abs(this.priceOpen),\n },\n ];\n }\n /**\n * Unique identifier whithing a reporting group\n */\n get groupCode() {\n if (this.type === BalanceItemType.Other) {\n return 'type-' + this.type\n + '-unit-price-' + this.unitPrice\n + '-description-' + this.description;\n }\n return 'type-' + this.type\n + '-unit-price-' + this.unitPrice\n + '-relations' + Array.from(this.relations.entries())\n .filter(([key]) => !shouldAggregateOnRelationType(key, this.relations))\n .map(([key, value]) => key + '-' + value.id)\n .join('-');\n }\n /**\n * When displayed as a single item\n */\n get itemPrefix() {\n var _a;\n const prefix = this.amount === 0 ? 'Geannuleerde ' : '';\n switch (this.type) {\n case BalanceItemType.Registration: {\n if (this.relations.get(BalanceItemRelationType.GroupOption)) {\n const group = ((_a = this.relations.get(BalanceItemRelationType.Group)) === null || _a === void 0 ? void 0 : _a.name) || 'onbekende inschrijvingsgroep';\n return prefix + 'inschrijving voor ' + group;\n }\n return prefix + 'inschrijving';\n }\n case BalanceItemType.AdministrationFee: return prefix + 'administratiekosten';\n case BalanceItemType.FreeContribution: return prefix + 'vrije bijdrage';\n case BalanceItemType.Order: return prefix + 'bestelling';\n case BalanceItemType.Other: return prefix + 'andere';\n case BalanceItemType.PlatformMembership: return prefix + 'aansluiting';\n }\n }\n /**\n * When displayed as a single item\n */\n get itemTitle() {\n var _a, _b, _c, _d, _e;\n switch (this.type) {\n case BalanceItemType.Registration: {\n const option = this.relations.get(BalanceItemRelationType.GroupOption);\n if (option) {\n const optionMenu = this.relations.get(BalanceItemRelationType.GroupOptionMenu);\n return ((_a = optionMenu === null || optionMenu === void 0 ? void 0 : optionMenu.name) !== null && _a !== void 0 ? _a : 'Onbekend') + ': ' + option.name;\n }\n const group = ((_b = this.relations.get(BalanceItemRelationType.Group)) === null || _b === void 0 ? void 0 : _b.name) || 'Onbekende inschrijvingsgroep';\n const price = (_c = this.relations.get(BalanceItemRelationType.GroupPrice)) === null || _c === void 0 ? void 0 : _c.name;\n return group + (price && price !== 'Standaardtarief' ? ' (' + price + ')' : '');\n }\n case BalanceItemType.AdministrationFee: return 'Administratiekosten';\n case BalanceItemType.FreeContribution: return 'Vrije bijdrage';\n case BalanceItemType.Order: return ((_d = this.relations.get(BalanceItemRelationType.Webshop)) === null || _d === void 0 ? void 0 : _d.name) || 'Onbekende webshop';\n case BalanceItemType.Other: return this.description;\n case BalanceItemType.PlatformMembership: return ((_e = this.relations.get(BalanceItemRelationType.MembershipType)) === null || _e === void 0 ? void 0 : _e.name) || 'Onbekend aansluitingstype';\n }\n }\n /**\n * When displayed as a single item\n */\n get itemDescription() {\n switch (this.type) {\n case BalanceItemType.Registration: {\n const member = this.relations.get(BalanceItemRelationType.Member);\n if (member) {\n return member.name;\n }\n return null;\n }\n case BalanceItemType.PlatformMembership: {\n const member = this.relations.get(BalanceItemRelationType.Member);\n if (member) {\n return member.name;\n }\n }\n }\n return null;\n }\n}\n__decorate([\n field({ decoder: StringDecoder, defaultValue: () => uuidv4() })\n], BalanceItem.prototype, \"id\", void 0);\n__decorate([\n field({ decoder: new EnumDecoder(BalanceItemType), version: 307 })\n], BalanceItem.prototype, \"type\", void 0);\n__decorate([\n field({ decoder: new MapDecoder(new EnumDecoder(BalanceItemRelationType), BalanceItemRelation), version: 307 })\n], BalanceItem.prototype, \"relations\", void 0);\n__decorate([\n field({ decoder: StringDecoder })\n], BalanceItem.prototype, \"description\", void 0);\n__decorate([\n field({ decoder: IntegerDecoder, version: 307 })\n], BalanceItem.prototype, \"amount\", void 0);\n__decorate([\n field({ decoder: IntegerDecoder, field: 'price' }),\n field({ decoder: IntegerDecoder, field: 'unitPrice', version: 307 })\n], BalanceItem.prototype, \"unitPrice\", void 0);\n__decorate([\n field({ decoder: IntegerDecoder })\n], BalanceItem.prototype, \"pricePaid\", void 0);\n__decorate([\n field({ decoder: IntegerDecoder, version: 335 })\n], BalanceItem.prototype, \"pricePending\", void 0);\n__decorate([\n field({ decoder: DateDecoder })\n], BalanceItem.prototype, \"createdAt\", void 0);\n__decorate([\n field({ decoder: new EnumDecoder(BalanceItemStatus) })\n], BalanceItem.prototype, \"status\", void 0);\n__decorate([\n field({ decoder: StringDecoder })\n], BalanceItem.prototype, \"organizationId\", void 0);\n__decorate([\n field({ decoder: StringDecoder, nullable: true })\n], BalanceItem.prototype, \"memberId\", void 0);\n__decorate([\n field({ decoder: StringDecoder, nullable: true })\n], BalanceItem.prototype, \"userId\", void 0);\n__decorate([\n field({ decoder: StringDecoder, nullable: true })\n], BalanceItem.prototype, \"registrationId\", void 0);\nexport class BalanceItemPayment extends AutoEncoder {\n}\n__decorate([\n field({ decoder: StringDecoder, defaultValue: () => uuidv4() })\n], BalanceItemPayment.prototype, \"id\", void 0);\n__decorate([\n field({ decoder: IntegerDecoder })\n], BalanceItemPayment.prototype, \"price\", void 0);\nexport class BalanceItemPaymentWithPayment extends BalanceItemPayment {\n}\n__decorate([\n field({ decoder: Payment })\n], BalanceItemPaymentWithPayment.prototype, \"payment\", void 0);\nexport class BalanceItemPaymentWithPrivatePayment extends BalanceItemPayment {\n}\n__decorate([\n field({ decoder: PrivatePayment })\n], BalanceItemPaymentWithPrivatePayment.prototype, \"payment\", void 0);\nexport class BalanceItemWithPayments extends BalanceItem {\n constructor() {\n super(...arguments);\n this.payments = [];\n }\n updatePricePaid() {\n this.pricePaid = this.payments.reduce((total, payment) => total + (payment.payment.isSucceeded ? payment.price : 0), 0);\n }\n /**\n * Return whether a payment has been initiated for this balance item\n */\n get hasPendingPayment() {\n return !!this.payments.find(p => p.payment.isPending);\n }\n static getOutstandingBalance(items) {\n // Get sum of balance payments\n const totalPending = items.map(p => p.pricePending).reduce((t, total) => total + t, 0);\n const totalPaid = items.map(p => p.pricePaid).reduce((t, total) => total + t, 0);\n const totalPrice = items.map(p => p.price).reduce((t, total) => total + t, 0);\n const total = totalPrice - totalPaid;\n const totalOpen = total - totalPending;\n return {\n /**\n * @deprecated\n */\n totalPending, // Pending payment\n /**\n * @deprecated\n */\n totalOpen, // Not yet started\n /**\n * @deprecated\n */\n total: totalPending + totalOpen, // total not yet paid\n price: totalPrice,\n pricePending: totalPending,\n priceOpen: totalOpen,\n pricePaid: totalPaid,\n };\n }\n}\n__decorate([\n field({ decoder: new ArrayDecoder(BalanceItemPaymentWithPayment) })\n], BalanceItemWithPayments.prototype, \"payments\", void 0);\nexport class BalanceItemWithPrivatePayments extends BalanceItemWithPayments {\n constructor() {\n super(...arguments);\n this.payments = [];\n }\n}\n__decorate([\n field({ decoder: new ArrayDecoder(BalanceItemPaymentWithPrivatePayment) })\n], BalanceItemWithPrivatePayments.prototype, \"payments\", void 0);\n//# sourceMappingURL=BalanceItem.js.map","import { __decorate } from \"tslib\";\nimport { AutoEncoder, field, StringDecoder } from '@simonbackx/simple-encoding';\nimport { Formatter, StringCompare } from '@stamhoofd/utility';\nimport { v4 as uuidv4 } from 'uuid';\nexport class EmergencyContact extends AutoEncoder {\n constructor() {\n super(...arguments);\n this.name = '';\n this.phone = null;\n this.title = '';\n }\n /**\n * Call this to clean up capitals in all the available data\n */\n cleanData() {\n if (StringCompare.isFullCaps(this.name)) {\n this.name = Formatter.capitalizeWords(this.name.toLowerCase());\n }\n if (StringCompare.isFullCaps(this.title)) {\n this.title = this.title.toLowerCase();\n }\n this.name = Formatter.capitalizeFirstLetter(this.name.trim());\n this.title = this.title.trim();\n this.title = Formatter.capitalizeFirstLetter(this.title);\n }\n isEqual(other) {\n this.cleanData();\n other.cleanData();\n return this.name === other.name && this.phone === other.phone && this.title === other.title;\n }\n}\n__decorate([\n field({ decoder: StringDecoder, defaultValue: () => uuidv4() })\n], EmergencyContact.prototype, \"id\", void 0);\n__decorate([\n field({ decoder: StringDecoder })\n], EmergencyContact.prototype, \"name\", void 0);\n__decorate([\n field({ decoder: StringDecoder, nullable: true })\n], EmergencyContact.prototype, \"phone\", void 0);\n__decorate([\n field({ decoder: StringDecoder })\n], EmergencyContact.prototype, \"title\", void 0);\n//# sourceMappingURL=EmergencyContact.js.map","export var ParentType;\n(function (ParentType) {\n ParentType[\"Mother\"] = \"Mother\";\n ParentType[\"Father\"] = \"Father\";\n ParentType[\"Stepfather\"] = \"Stepfather\";\n ParentType[\"Stepmother\"] = \"Stepmother\";\n ParentType[\"Parent1\"] = \"Parent1\";\n ParentType[\"Parent2\"] = \"Parent2\";\n ParentType[\"Other\"] = \"Other\";\n})(ParentType || (ParentType = {}));\nexport class ParentTypeHelper {\n static getName(type) {\n switch (type) {\n case ParentType.Mother:\n return 'Mama';\n case ParentType.Father:\n return 'Papa';\n case ParentType.Stepmother:\n return 'Plusmama';\n case ParentType.Stepfather:\n return 'Pluspapa';\n case ParentType.Parent1:\n return 'Ouder 1';\n case ParentType.Parent2:\n return 'Ouder 2';\n case ParentType.Other:\n return 'Voogd';\n }\n }\n static getPublicTypes() {\n return [ParentType.Mother, ParentType.Father, ParentType.Stepmother, ParentType.Stepfather, ParentType.Other];\n }\n}\n//# sourceMappingURL=ParentType.js.map","import { __decorate } from \"tslib\";\nimport { ArrayDecoder, AutoEncoder, EnumDecoder, field, StringDecoder } from '@simonbackx/simple-encoding';\nimport { DataValidator, Formatter, StringCompare } from '@stamhoofd/utility';\nimport { v4 as uuidv4 } from 'uuid';\nimport { Address } from '../addresses/Address';\nimport { ParentType } from './ParentType';\nexport class Parent extends AutoEncoder {\n constructor() {\n super(...arguments);\n this.type = ParentType.Mother;\n this.firstName = '';\n this.lastName = '';\n this.phone = null;\n this.email = null;\n this.alternativeEmails = [];\n this.address = null;\n }\n get name() {\n if (!this.firstName) {\n return this.lastName;\n }\n if (!this.lastName) {\n return this.firstName;\n }\n return this.firstName + ' ' + this.lastName;\n }\n matchQuery(query) {\n if (StringCompare.typoCount(this.firstName, query) < 2\n || StringCompare.typoCount(this.lastName, query) < 2\n || StringCompare.typoCount(this.name, query) < 2) {\n return true;\n }\n return false;\n }\n hasEmail(email) {\n const cleaned = email.toLowerCase().trim();\n if (this.email === cleaned) {\n return true;\n }\n return this.alternativeEmails.includes(cleaned);\n }\n /**\n * Call this to clean up capitals in all the available data\n */\n cleanData() {\n var _a;\n if (StringCompare.isFullCaps(this.firstName)) {\n this.firstName = Formatter.capitalizeWords(Formatter.removeDuplicateSpaces(this.firstName.toLowerCase()));\n }\n if (StringCompare.isFullCaps(this.lastName)) {\n this.lastName = Formatter.capitalizeWords(Formatter.removeDuplicateSpaces(this.lastName.toLowerCase()));\n }\n if (this.email) {\n this.email = this.email.toLowerCase().trim();\n if (!DataValidator.isEmailValid(this.email)) {\n this.email = null;\n }\n }\n this.alternativeEmails = this.alternativeEmails.map(e => e.toLowerCase().trim()).filter((email) => {\n if (this.email && email === this.email) {\n return false;\n }\n if (!DataValidator.isEmailValid(email)) {\n return false;\n }\n return true;\n });\n if (this.phone) {\n this.phone = Formatter.removeDuplicateSpaces(this.phone.trim());\n }\n this.firstName = Formatter.capitalizeFirstLetter(Formatter.removeDuplicateSpaces(this.firstName.trim()));\n this.lastName = Formatter.removeDuplicateSpaces(this.lastName.trim());\n if (this.lastName === this.lastName.toLocaleLowerCase()) {\n // Add auto capitals\n this.lastName = Formatter.capitalizeWords(this.lastName);\n }\n (_a = this.address) === null || _a === void 0 ? void 0 : _a.cleanData();\n }\n isEqual(other) {\n var _a, _b;\n this.cleanData();\n other.cleanData();\n return this.firstName === other.firstName && this.lastName === other.lastName && this.email === other.email && this.phone === other.phone && ((_a = this.address) === null || _a === void 0 ? void 0 : _a.toString()) === ((_b = other.address) === null || _b === void 0 ? void 0 : _b.toString());\n }\n merge(other) {\n if (other.firstName.length > 0) {\n this.firstName = other.firstName;\n }\n if (other.lastName.length > 0) {\n this.lastName = other.lastName;\n }\n if (other.email) {\n this.email = other.email;\n }\n if (other.address) {\n this.address = other.address;\n }\n if (other.phone) {\n this.phone = other.phone;\n }\n if (other.type) {\n if (other.type === ParentType.Parent1 || other.type === ParentType.Parent2) {\n // Ignore if current type is also not one of those\n if (this.type === ParentType.Parent1 || this.type === ParentType.Parent2) {\n this.type = other.type;\n }\n }\n else {\n this.type = other.type;\n }\n }\n this.alternativeEmails = Formatter.uniqueArray([...this.alternativeEmails, ...other.alternativeEmails]);\n }\n}\n__decorate([\n field({ decoder: StringDecoder, defaultValue: () => uuidv4() })\n], Parent.prototype, \"id\", void 0);\n__decorate([\n field({ decoder: new EnumDecoder(ParentType) })\n], Parent.prototype, \"type\", void 0);\n__decorate([\n field({ decoder: StringDecoder })\n], Parent.prototype, \"firstName\", void 0);\n__decorate([\n field({ decoder: StringDecoder })\n], Parent.prototype, \"lastName\", void 0);\n__decorate([\n field({ decoder: StringDecoder, nullable: true })\n], Parent.prototype, \"phone\", void 0);\n__decorate([\n field({ decoder: StringDecoder, nullable: true, field: 'mail' }),\n field({ decoder: StringDecoder, nullable: true, version: 5 })\n], Parent.prototype, \"email\", void 0);\n__decorate([\n field({ decoder: new ArrayDecoder(StringDecoder), version: 278 })\n], Parent.prototype, \"alternativeEmails\", void 0);\n__decorate([\n field({ decoder: Address, nullable: true })\n], Parent.prototype, \"address\", void 0);\n//# sourceMappingURL=Parent.js.map","import { __decorate } from \"tslib\";\nimport { ArrayDecoder, AutoEncoder, DateDecoder, field, StringDecoder } from '@simonbackx/simple-encoding';\n/**\n * Keep a timestamp of when certain information was reviewed of a member\n */\nexport class ReviewTime extends AutoEncoder {\n}\n__decorate([\n field({ decoder: StringDecoder })\n], ReviewTime.prototype, \"name\", void 0);\n__decorate([\n field({ decoder: DateDecoder })\n], ReviewTime.prototype, \"reviewedAt\", void 0);\nexport class ReviewTimes extends AutoEncoder {\n constructor() {\n super(...arguments);\n this.times = [];\n }\n markReviewed(name, date) {\n for (const time of this.times) {\n if (time.name === name) {\n if (date && date < time.reviewedAt) {\n // Can't decrease time\n return;\n }\n time.reviewedAt = date !== null && date !== void 0 ? date : new Date();\n return;\n }\n }\n this.times.push(ReviewTime.create({\n name,\n reviewedAt: date !== null && date !== void 0 ? date : new Date(),\n }));\n }\n removeReview(name) {\n this.times = this.times.filter(t => t.name !== name);\n }\n getLastReview(name) {\n if (!name) {\n if (this.times.length === 0) {\n return;\n }\n return new Date(Math.min(...this.times.map(t => t.reviewedAt.getTime())));\n }\n for (const time of this.times) {\n if (time.name === name) {\n return time.reviewedAt;\n }\n }\n }\n merge(other) {\n for (const time of other.times) {\n this.markReviewed(time.name, time.reviewedAt);\n }\n }\n isReviewed(name) {\n const time = this.getLastReview(name);\n if (!time) {\n return false;\n }\n return true;\n }\n isOutdated(name, timeoutMs) {\n const time = this.getLastReview(name);\n if (!time) {\n return true;\n }\n if (time.getTime() < new Date().getTime() - timeoutMs) {\n return true;\n }\n return false;\n }\n clearAll() {\n this.times = [];\n }\n}\n__decorate([\n field({ decoder: new ArrayDecoder(ReviewTime) })\n], ReviewTimes.prototype, \"times\", void 0);\n//# sourceMappingURL=ReviewTime.js.map","import { __decorate } from \"tslib\";\nimport { ArrayDecoder, AutoEncoder, BooleanDecoder, DateDecoder, EnumDecoder, field, MapDecoder, PatchableArray, StringDecoder } from '@simonbackx/simple-encoding';\nimport { DataValidator, Formatter, StringCompare } from '@stamhoofd/utility';\nimport { Address } from '../addresses/Address';\nimport { Replacement } from '../endpoints/EmailRequest';\nimport { GroupGenderType } from '../GroupGenderType';\nimport { EmergencyContact } from './EmergencyContact';\nimport { Gender } from './Gender';\nimport { Parent } from './Parent';\nimport { RecordAnswerDecoder } from './records/RecordAnswer';\nimport { ReviewTimes } from './ReviewTime';\n/**\n * Keep track of date nad time of an edited boolean value\n */\nexport class BooleanStatus extends AutoEncoder {\n constructor() {\n super(...arguments);\n this.value = false;\n this.date = new Date();\n }\n isOutdated(timeoutMs) {\n const time = this.date;\n if (time.getTime() < new Date().getTime() - timeoutMs) {\n return true;\n }\n return false;\n }\n}\n__decorate([\n field({ decoder: BooleanDecoder })\n], BooleanStatus.prototype, \"value\", void 0);\n__decorate([\n field({ decoder: DateDecoder })\n], BooleanStatus.prototype, \"date\", void 0);\n/**\n * This full model is always encrypted before sending it to the server. It is never processed on the server - only in encrypted form.\n * The public key of the member is stored in the member model, the private key is stored in the keychain for the 'owner' users. The organization has a copy that is encrypted with the organization's public key.\n * Validation needs to happen mostly client side - but malicious users can just send invalid data in the encrypted form. So validation happens a second time on the client side when an organitiona's admin decrypts the member data.\n */\nexport class MemberDetails extends AutoEncoder {\n constructor() {\n super(...arguments);\n this.firstName = '';\n this.lastName = '';\n this.memberNumber = null;\n /**\n * Code needed to get access to this member when detecting duplicates. It is only visible for admins, otherwise it will be null.\n *\n * Set this value if you want to gain access to a member but receive the known_member_missing_rights error code\n */\n this.securityCode = null;\n this.gender = Gender.Other;\n this.phone = null;\n this.email = null;\n this.alternativeEmails = [];\n /**\n * These emails will get access to the member if parentsHaveAccess is true\n */\n this.unverifiedEmails = [];\n this.unverifiedPhones = [];\n this.unverifiedAddresses = [];\n this.notes = null;\n this.uitpasNumber = null;\n this.birthDay = null;\n this.address = null;\n this.parents = [];\n this.emergencyContacts = [];\n this.recordAnswers = new Map();\n this.requiresFinancialSupport = null;\n /**\n * Gave permission to collect sensitive information\n */\n this.dataPermissions = null;\n /**\n * Last time the records were reviewed\n */\n this.reviewTimes = ReviewTimes.create({});\n }\n /**\n * Call this to clean up capitals in all the available data\n */\n cleanData() {\n var _a, _b, _c;\n if (StringCompare.isFullCaps(this.firstName)) {\n this.firstName = Formatter.capitalizeWords(Formatter.removeDuplicateSpaces(this.firstName.toLowerCase()));\n }\n if (StringCompare.isFullCaps(this.lastName)) {\n this.lastName = Formatter.capitalizeWords(Formatter.removeDuplicateSpaces(this.lastName.toLowerCase()));\n }\n this.firstName = Formatter.capitalizeFirstLetter(Formatter.removeDuplicateSpaces(this.firstName.trim()));\n this.lastName = Formatter.removeDuplicateSpaces(this.lastName.trim());\n if (this.lastName === this.lastName.toLocaleLowerCase()) {\n // Add auto capitals\n this.lastName = Formatter.capitalizeWords(this.lastName);\n }\n for (const parent of this.parents) {\n parent.cleanData();\n }\n (_a = this.address) === null || _a === void 0 ? void 0 : _a.cleanData();\n for (const contact of this.emergencyContacts) {\n contact.cleanData();\n }\n // Remove email address on member if it was set on a parent too\n if (this.email !== null) {\n this.email = this.email.toLowerCase().trim();\n for (const parent of this.parents) {\n if (parent.hasEmail(this.email)) {\n this.email = null;\n break;\n }\n }\n if (!this.email || !DataValidator.isEmailValid(this.email)) {\n this.email = null;\n }\n }\n const filterUsedAndInvalidEmails = (emails, checkAlternative = true) => emails\n .map(e => e.toLowerCase().trim())\n .filter((email) => {\n if (checkAlternative) {\n if (this.hasEmail(email)) {\n return false;\n }\n }\n else {\n if (this.email && email === this.email) {\n return false;\n }\n for (const parent of this.parents) {\n if (parent.hasEmail(email)) {\n return false;\n }\n }\n }\n if (!DataValidator.isEmailValid(email)) {\n return false;\n }\n return true;\n });\n this.alternativeEmails = filterUsedAndInvalidEmails(this.alternativeEmails, false);\n if (this.phone) {\n const formattedPhone = Formatter.removeDuplicateSpaces(this.phone.trim());\n if (formattedPhone !== this.phone) {\n this.phone = formattedPhone;\n }\n for (const parent of this.parents) {\n if (parent.phone === this.phone) {\n this.phone = null;\n break;\n }\n }\n }\n // #region unverified data\n if (this.hasUnverifiedData) {\n const lastReviewed = this.reviewTimes.getLastReview('parents') && this.reviewTimes.getLastReview('details');\n if (lastReviewed) {\n // clear unverified data\n this.unverifiedAddresses = [];\n this.unverifiedEmails = [];\n this.unverifiedPhones = [];\n }\n else {\n // #region filter used unverified addresses\n const usedAddressIds = new Set();\n if (this.unverifiedAddresses.length > 0) {\n const memberAddressId = (_b = this.address) === null || _b === void 0 ? void 0 : _b.id;\n const parentAddressIds = this.parents.filter(parent => parent.address).map(parent => parent.address.id);\n for (const unverifiedAddress of this.unverifiedAddresses) {\n unverifiedAddress.cleanData();\n const addressId = unverifiedAddress.id;\n const isUsed = addressId === memberAddressId || parentAddressIds.includes(addressId);\n if (isUsed) {\n usedAddressIds.add(addressId);\n }\n }\n if (usedAddressIds.size > 0) {\n this.unverifiedAddresses = this.unverifiedAddresses.filter(address => !usedAddressIds.has(address.id));\n }\n }\n // #endregion\n // filter uncatetorized emails\n this.unverifiedEmails = filterUsedAndInvalidEmails(this.unverifiedEmails);\n // #region filter unverified phones\n if (this.unverifiedPhones.length > 0) {\n const parentPhones = new Set();\n for (const parent of this.parents) {\n const parentPhone = parent.phone;\n if (parentPhone)\n parentPhones.add(parentPhone);\n }\n this.unverifiedPhones = this.unverifiedPhones\n .map(phone => Formatter.removeDuplicateSpaces(phone.trim()))\n .filter((unverifiedPhone) => {\n if (this.phone === unverifiedPhone)\n return false;\n if (parentPhones.has(unverifiedPhone))\n return false;\n return true;\n });\n }\n // #endregion\n }\n }\n // #endregion\n if (this.notes !== null) {\n // cut long notes\n if (this.notes.length > 1000) {\n this.notes = this.notes.substring(0, 1000);\n }\n // remove empty notes\n if (/^\\s*$/.test(this.notes)) {\n this.notes = null;\n }\n }\n // set requires financial support if uitpasNumber has 'kansentarief'\n const hasFinancialSupport = !!((_c = this.requiresFinancialSupport) === null || _c === void 0 ? void 0 : _c.value);\n if ((hasFinancialSupport === false) && this.uitpasNumber !== null && DataValidator.isUitpasNumberKansenTarief(this.uitpasNumber)) {\n this.requiresFinancialSupport = BooleanStatus.create({ value: true });\n }\n }\n isEqual(other) {\n if (!this.firstName || !other.firstName) {\n // Not possible to compare\n return false;\n }\n if (!this.lastName || !other.lastName) {\n // Not possible to compare\n return false;\n }\n if (!this.birthDay || !other.birthDay) {\n // Not possible to compare\n return false;\n }\n if (this.firstName !== other.firstName) {\n return false;\n }\n if (this.lastName !== other.lastName) {\n return false;\n }\n if (this.birthDayFormatted !== other.birthDayFormatted) {\n return false;\n }\n return true;\n }\n get name() {\n if (!this.firstName) {\n return this.lastName;\n }\n if (!this.lastName) {\n return this.firstName;\n }\n return this.firstName + ' ' + this.lastName;\n }\n /// The age this member will become, this year\n ageForYear(year) {\n if (!this.birthDay) {\n return null;\n }\n // For now calculate based on Brussels timezone (we'll need to correct this later)\n const birthDay = Formatter.luxon(this.birthDay);\n return year - birthDay.year;\n }\n ageOnDate(date) {\n if (!this.birthDay) {\n return null;\n }\n // For now calculate based on Brussels timezone (we'll need to correct this later)\n const birthDay = Formatter.luxon(this.birthDay);\n let age = date.getFullYear() - birthDay.year;\n const m = date.getMonth() - (birthDay.month - 1);\n if (m < 0 || (m === 0 && date.getDate() < birthDay.day)) {\n age--;\n }\n return age;\n }\n get age() {\n return this.ageOnDate(new Date());\n }\n /**\n * Age, set to 99 if missing\n */\n get defaultAge() {\n var _a;\n return (_a = this.age) !== null && _a !== void 0 ? _a : 99;\n }\n get birthDayFormatted() {\n if (!this.birthDay) {\n return null;\n }\n return Formatter.date(this.birthDay, true);\n }\n get hasUnverifiedData() {\n return this.unverifiedEmails.length > 0 || this.unverifiedAddresses.length > 0 || this.unverifiedPhones.length > 0;\n }\n get shouldApplyReducedPrice() {\n var _a, _b;\n return (_b = (_a = this.requiresFinancialSupport) === null || _a === void 0 ? void 0 : _a.value) !== null && _b !== void 0 ? _b : false;\n }\n /**\n * @deprecated\n */\n matchQuery(query) {\n if (StringCompare.typoCount(this.firstName, query) < 2\n || StringCompare.typoCount(this.lastName, query) < 2\n || StringCompare.typoCount(this.name, query) <= 2) {\n return true;\n }\n for (const parent of this.parents) {\n if (parent.matchQuery(query)) {\n return true;\n }\n }\n return false;\n }\n /**\n * Check if this member could fit a group, ignoring dates and waiting lists\n */\n doesMatchGroup(group) {\n return this.getMatchingError(group) === null;\n }\n getMatchingError(group) {\n var _a, _b, _c, _d;\n if (group.settings.minAge || group.settings.maxAge) {\n const age = this.ageForYear(Formatter.luxon((_b = (_a = group.settings.period) === null || _a === void 0 ? void 0 : _a.startDate) !== null && _b !== void 0 ? _b : new Date()).year);\n if (age) {\n if (group.settings.minAge && age < group.settings.minAge) {\n return {\n message: 'Te jong',\n description: this.firstName + ' is te jong. Inschrijvingen is beperkt tot leden ' + ((_c = group.settings.getAgeGenderDescription({ includeAge: true })) !== null && _c !== void 0 ? _c : ''),\n };\n }\n if (group.settings.maxAge && age > group.settings.maxAge) {\n return {\n message: 'Te oud',\n description: this.firstName + ' is te jong. Inschrijvingen is beperkt tot leden ' + ((_d = group.settings.getAgeGenderDescription({ includeAge: true })) !== null && _d !== void 0 ? _d : ''),\n };\n }\n }\n }\n if (this.gender == Gender.Male && group.settings.genderType == GroupGenderType.OnlyFemale) {\n return {\n message: 'Enkel ' + group.settings.getAgeGenderDescription({ includeGender: true }),\n description: 'Inschrijvingen is beperkt tot ' + group.settings.getAgeGenderDescription({ includeGender: true }),\n };\n }\n if (this.gender == Gender.Female && group.settings.genderType == GroupGenderType.OnlyMale) {\n return {\n message: 'Enkel ' + group.settings.getAgeGenderDescription({ includeGender: true }),\n description: 'Inschrijvingen is beperkt tot ' + group.settings.getAgeGenderDescription({ includeGender: true }),\n };\n }\n return null;\n }\n getMatchingGroups(groups) {\n return groups.filter(g => this.doesMatchGroup(g));\n }\n updateAddress(oldValue, newValue) {\n const str = oldValue.toString();\n if (this.address && this.address.toString() == str) {\n this.address = newValue;\n }\n for (const parent of this.parents) {\n if (parent.address && parent.address.toString() == str) {\n parent.address = newValue;\n }\n }\n }\n updateAddressPatch(oldValue, newValue) {\n const str = oldValue.toString();\n let patch = MemberDetails.patch({});\n let changed = false;\n if (this.address && this.address.toString() == str) {\n patch = patch.patch({ address: newValue });\n changed = true;\n }\n for (const parent of this.parents) {\n if (parent.address && parent.address.toString() == str) {\n // parent.address = newValue\n const arr = new PatchableArray();\n arr.addPatch(Parent.patch({ id: parent.id, address: newValue }));\n patch = patch.patch({ parents: arr });\n changed = true;\n }\n }\n if (changed) {\n return patch;\n }\n return null;\n }\n /**\n * This will SET the parent\n */\n updateParent(parent) {\n for (const [index, _parent] of this.parents.entries()) {\n if (_parent.id == parent.id || _parent.isEqual(parent)) {\n this.parents[index] = parent;\n }\n }\n }\n /**\n * This will SET the parent\n */\n updateParentPatch(parent) {\n let patch = MemberDetails.patch({});\n let changed = false;\n for (const [index, _parent] of this.parents.entries()) {\n if (_parent.id == parent.id || _parent.isEqual(parent)) {\n const arr = new PatchableArray();\n // Assure we auto correct possible duplicates\n arr.addDelete(_parent.id);\n arr.addDelete(_parent.id);\n arr.addPut(parent);\n patch = patch.patch({ parents: arr });\n changed = true;\n }\n }\n if (changed) {\n return patch;\n }\n return null;\n }\n /**\n * This will SET the parent\n */\n updateEmergencyContactPatch(emergencyContact) {\n let patch = MemberDetails.patch({});\n let changed = false;\n for (const [index, _emergencyContact] of this.emergencyContacts.entries()) {\n if (_emergencyContact.id == emergencyContact.id || _emergencyContact.isEqual(emergencyContact)) {\n const arr = new PatchableArray();\n // Assure we auto correct possible duplicates\n arr.addDelete(_emergencyContact.id);\n arr.addDelete(_emergencyContact.id);\n arr.addPut(emergencyContact);\n patch = patch.patch({ emergencyContacts: arr });\n changed = true;\n }\n }\n if (changed) {\n return patch;\n }\n return null;\n }\n /**\n * This will add or update the parent (possibily partially if not all data is present)\n */\n addParent(parent) {\n console.log('adding parent to ', this.name);\n // Multiple loops to mangage priority\n for (const [index, _parent] of this.parents.entries()) {\n if (_parent.id == parent.id) {\n console.log('Merging parent on id', index, parent);\n this.parents[index].merge(parent);\n return;\n }\n }\n for (const [index, _parent] of this.parents.entries()) {\n // clean both parents before checking\n parent.cleanData();\n _parent.cleanData();\n if (_parent.name && parent.name) {\n if (StringCompare.typoCount(_parent.name, parent.name) === 0) {\n console.log('Merging parent on name', index, parent);\n this.parents[index].merge(parent);\n return;\n }\n }\n }\n for (const [index, _parent] of this.parents.entries()) {\n if (_parent.name && parent.name) {\n if (StringCompare.typoCount(_parent.name, parent.name) < 2) {\n console.log('Merging parent on name typo', index, parent);\n this.parents[index].merge(parent);\n return;\n }\n }\n }\n for (const [index, _parent] of this.parents.entries()) {\n if (!_parent.name || !parent.name) {\n if (_parent.email && parent.email) {\n // Compare on email address\n if (_parent.email == parent.email) {\n console.log('Merging parent on email', index, parent);\n this.parents[index].merge(parent);\n return;\n }\n }\n if (_parent.phone && parent.phone) {\n if (_parent.phone == parent.phone) {\n console.log('Merging parent on phone', index, parent);\n this.parents[index].merge(parent);\n return;\n }\n }\n }\n }\n this.parents.push(parent);\n }\n getShortCode(maxLength) {\n return Formatter.firstLetters(this.firstName, maxLength);\n }\n get canHaveOwnAccount() {\n return (this.age === null || (this.age >= 12));\n }\n get parentsHaveAccess() {\n return (this.age && (this.age < 18));\n }\n /**\n * Apply newer details without deleting data or replacing filled in data with empty data\n */\n merge(other) {\n console.log('merge member details', this, other);\n if (other.firstName.length > 0) {\n this.firstName = other.firstName;\n }\n if (other.lastName.length > 0) {\n this.lastName = other.lastName;\n }\n if (other.email) {\n this.email = other.email;\n }\n if (other.birthDay) {\n this.birthDay = other.birthDay;\n }\n if (other.gender !== Gender.Other) {\n // Always copy gender\n this.gender = other.gender;\n }\n if (other.address) {\n if (this.address) {\n this.updateAddress(this.address, other.address);\n }\n else {\n this.address = other.address;\n }\n }\n if (other.phone) {\n this.phone = other.phone;\n }\n if (other.memberNumber) {\n this.memberNumber = other.memberNumber;\n }\n if (other.parents.length > 0) {\n for (const parent of other.parents) {\n // Will override existing parent if possible\n this.addParent(parent);\n }\n }\n if (other.emergencyContacts.length > 0) {\n this.emergencyContacts = other.emergencyContacts;\n }\n this.reviewTimes.merge(other.reviewTimes);\n if (other.requiresFinancialSupport && (!this.requiresFinancialSupport || this.requiresFinancialSupport.date < other.requiresFinancialSupport.date)) {\n this.requiresFinancialSupport = other.requiresFinancialSupport;\n }\n if (other.dataPermissions && (!this.dataPermissions || this.dataPermissions.date < other.dataPermissions.date)) {\n this.dataPermissions = other.dataPermissions;\n }\n // Merge answers\n const newAnswers = new Map(this.recordAnswers);\n for (const answer of other.recordAnswers.values()) {\n const existing = newAnswers.get(answer.settings.id);\n if (!existing) {\n newAnswers.set(answer.settings.id, answer);\n }\n else if (answer.date >= existing.date) {\n newAnswers.set(answer.settings.id, answer);\n }\n else {\n // keep existing, this one is more up-to-date, don't add the other answer\n }\n }\n this.recordAnswers = newAnswers;\n // Merge unverified data\n this.unverifiedEmails = Formatter.uniqueArray(this.unverifiedEmails.concat(other.unverifiedEmails));\n this.unverifiedPhones = Formatter.uniqueArray(this.unverifiedPhones.concat(other.unverifiedPhones));\n // Merge unverified addresses\n for (const address of other.unverifiedAddresses) {\n if (!this.unverifiedAddresses.find(a => a.id === address.id)) {\n this.unverifiedAddresses.push(address);\n }\n }\n // Notes\n if (other.notes) {\n this.notes = (this.notes ? (this.notes + '\\n') : '') + other.notes;\n }\n }\n getEmailReplacements() {\n return [\n Replacement.create({\n token: 'memberFirstName',\n value: this.firstName,\n }),\n Replacement.create({\n token: 'memberLastName',\n value: this.lastName,\n }),\n ];\n }\n getMemberEmails() {\n const userEmails = [...this.alternativeEmails];\n if (this.email) {\n userEmails.push(this.email);\n }\n return userEmails;\n }\n getParentEmails() {\n return this.parents.flatMap(p => p.email ? [p.email, ...p.alternativeEmails] : p.alternativeEmails);\n }\n hasEmail(email) {\n const cleanedEmail = email.toLowerCase().trim();\n return this.getMemberEmails().includes(cleanedEmail) || this.getParentEmails().includes(cleanedEmail);\n }\n}\n__decorate([\n field({ decoder: StringDecoder })\n], MemberDetails.prototype, \"firstName\", void 0);\n__decorate([\n field({ decoder: StringDecoder })\n], MemberDetails.prototype, \"lastName\", void 0);\n__decorate([\n field({ decoder: StringDecoder, version: 30, nullable: true })\n], MemberDetails.prototype, \"memberNumber\", void 0);\n__decorate([\n field({ decoder: StringDecoder, nullable: true, version: 331 })\n], MemberDetails.prototype, \"securityCode\", void 0);\n__decorate([\n field({ decoder: DateDecoder, optional: true, nullable: true })\n], MemberDetails.prototype, \"lastExternalSync\", void 0);\n__decorate([\n field({ decoder: new EnumDecoder(Gender) })\n], MemberDetails.prototype, \"gender\", void 0);\n__decorate([\n field({ decoder: StringDecoder, nullable: true })\n], MemberDetails.prototype, \"phone\", void 0);\n__decorate([\n field({ decoder: StringDecoder, nullable: true, field: 'mail' }),\n field({ decoder: StringDecoder, nullable: true, version: 5 })\n], MemberDetails.prototype, \"email\", void 0);\n__decorate([\n field({ decoder: new ArrayDecoder(StringDecoder), version: 277 })\n], MemberDetails.prototype, \"alternativeEmails\", void 0);\n__decorate([\n field({ decoder: new ArrayDecoder(StringDecoder), version: 304 })\n], MemberDetails.prototype, \"unverifiedEmails\", void 0);\n__decorate([\n field({ decoder: new ArrayDecoder(StringDecoder), version: 304 })\n], MemberDetails.prototype, \"unverifiedPhones\", void 0);\n__decorate([\n field({ decoder: new ArrayDecoder(Address), version: 304 })\n], MemberDetails.prototype, \"unverifiedAddresses\", void 0);\n__decorate([\n field({ decoder: StringDecoder, nullable: true, version: 301 })\n], MemberDetails.prototype, \"notes\", void 0);\n__decorate([\n field({ decoder: StringDecoder, nullable: true, version: 306 })\n], MemberDetails.prototype, \"uitpasNumber\", void 0);\n__decorate([\n field({ decoder: DateDecoder }),\n field({ decoder: DateDecoder, nullable: true, version: 52, downgrade: (old) => old !== null && old !== void 0 ? old : new Date('1970-01-01') })\n], MemberDetails.prototype, \"birthDay\", void 0);\n__decorate([\n field({ decoder: Address, nullable: true })\n], MemberDetails.prototype, \"address\", void 0);\n__decorate([\n field({ decoder: new ArrayDecoder(Parent) })\n], MemberDetails.prototype, \"parents\", void 0);\n__decorate([\n field({ decoder: new ArrayDecoder(EmergencyContact) })\n], MemberDetails.prototype, \"emergencyContacts\", void 0);\n__decorate([\n field({ decoder: new ArrayDecoder(RecordAnswerDecoder), version: 120 }),\n field({\n decoder: new MapDecoder(StringDecoder, RecordAnswerDecoder),\n version: 252,\n upgrade: (old) => {\n const map = new Map();\n for (const answer of old) {\n map.set(answer.settings.id, answer);\n }\n return map;\n },\n })\n], MemberDetails.prototype, \"recordAnswers\", void 0);\n__decorate([\n field({ decoder: BooleanStatus, version: 117, optional: true }),\n field({\n decoder: BooleanStatus,\n version: 258,\n optional: false,\n nullable: true,\n downgrade: (newValue) => newValue === null ? undefined : newValue,\n upgrade: (oldValue) => {\n if (!oldValue) {\n return null;\n }\n return oldValue;\n },\n })\n], MemberDetails.prototype, \"requiresFinancialSupport\", void 0);\n__decorate([\n field({ decoder: BooleanStatus, version: 117, optional: true }),\n field({\n decoder: BooleanStatus,\n version: 256,\n optional: true,\n nullable: true,\n downgrade: (newValue) => newValue === null ? undefined : newValue,\n upgrade: (oldValue) => {\n if (!oldValue) {\n return null;\n }\n return oldValue;\n },\n })\n], MemberDetails.prototype, \"dataPermissions\", void 0);\n__decorate([\n field({ decoder: DateDecoder, nullable: true, version: 20, field: 'lastReviewed' }),\n field({ decoder: ReviewTimes, version: 71, upgrade: (oldDate) => {\n const times = ReviewTimes.create({});\n if (oldDate) {\n times.markReviewed('records', oldDate);\n times.markReviewed('parents', oldDate);\n times.markReviewed('emergencyContacts', oldDate);\n times.markReviewed('details', oldDate);\n }\n return times;\n } })\n], MemberDetails.prototype, \"reviewTimes\", void 0);\n//# sourceMappingURL=MemberDetails.js.map","import { __decorate } from \"tslib\";\nimport { AutoEncoder, DateDecoder, field, IntegerDecoder, StringDecoder } from '@simonbackx/simple-encoding';\nimport { v4 as uuidv4 } from 'uuid';\nimport { MemberDetails } from './MemberDetails';\nexport class TinyMember extends AutoEncoder {\n constructor() {\n super(...arguments);\n this.firstName = '';\n this.lastName = '';\n }\n get name() {\n if (!this.firstName) {\n return this.lastName;\n }\n if (!this.lastName) {\n return this.firstName;\n }\n return this.firstName + ' ' + this.lastName;\n }\n}\n__decorate([\n field({ decoder: StringDecoder, defaultValue: () => uuidv4() })\n], TinyMember.prototype, \"id\", void 0);\n__decorate([\n field({ decoder: StringDecoder })\n], TinyMember.prototype, \"firstName\", void 0);\n__decorate([\n field({ decoder: StringDecoder })\n], TinyMember.prototype, \"lastName\", void 0);\nexport class Member extends AutoEncoder {\n constructor() {\n super(...arguments);\n this.outstandingBalance = 0;\n this.createdAt = new Date();\n this.updatedAt = new Date();\n }\n get tiny() {\n return TinyMember.create({\n id: this.id,\n firstName: this.details.firstName,\n lastName: this.details.lastName,\n });\n }\n get isMinor() {\n return (this.details.age !== null && this.details.age < 18);\n }\n get firstName() {\n return this.details.firstName;\n }\n get name() {\n return this.details.name;\n }\n static sorterByName(sortDirection = 'ASC') {\n return (a, b) => {\n if (!a.details && !b.details) {\n return 0;\n }\n if (!a.details) {\n return 1;\n }\n if (!b.details) {\n return -1;\n }\n if (sortDirection == 'ASC') {\n if (a.details.name.toLowerCase() > b.details.name.toLowerCase()) {\n return 1;\n }\n if (a.details.name.toLowerCase() < b.details.name.toLowerCase()) {\n return -1;\n }\n return 0;\n }\n if (a.details.name.toLowerCase() > b.details.name.toLowerCase()) {\n return -1;\n }\n if (a.details.name.toLowerCase() < b.details.name.toLowerCase()) {\n return 1;\n }\n return 0;\n };\n }\n}\n__decorate([\n field({ decoder: StringDecoder, defaultValue: () => uuidv4() })\n], Member.prototype, \"id\", void 0);\n__decorate([\n field({ decoder: MemberDetails, field: 'nonEncryptedDetails' }),\n field({ decoder: MemberDetails, version: 165 })\n], Member.prototype, \"details\", void 0);\n__decorate([\n field({ decoder: IntegerDecoder, optional: true })\n], Member.prototype, \"outstandingBalance\", void 0);\n__decorate([\n field({ decoder: DateDecoder, version: 31 })\n], Member.prototype, \"createdAt\", void 0);\n__decorate([\n field({ decoder: DateDecoder, version: 31 })\n], Member.prototype, \"updatedAt\", void 0);\n//# sourceMappingURL=Member.js.map","import { StringCompare } from '@stamhoofd/utility';\nfunction $andInMemoryFilterCompiler(filter, filters) {\n const runners = compileInMemoryFilter(filter, filters);\n return (object) => {\n for (const runner of runners) {\n if (!runner(object)) {\n return false;\n }\n }\n return true;\n };\n}\nfunction $orInMemoryFilterCompiler(filter, filters) {\n const runners = compileInMemoryFilter(filter, filters);\n return (object) => {\n for (const runner of runners) {\n if (runner(object)) {\n return true;\n }\n }\n return false;\n };\n}\nfunction $notInMemoryFilterCompiler(filter, filters) {\n const andRunner = $andInMemoryFilterCompiler(filter, filters);\n return (object) => {\n return !andRunner(object);\n };\n}\nfunction $lessThanInMemoryFilterCompiler(filter) {\n return (val) => {\n const a = normalizeValue(guardFilterCompareValue(val));\n const b = normalizeValue(guardFilterCompareValue(filter));\n if (a === null || b === null) {\n return a !== null && b === null;\n }\n return a < b;\n };\n}\nfunction $greaterThanInMemoryFilterCompiler(filter) {\n return (val) => {\n const a = normalizeValue(guardFilterCompareValue(val));\n const b = normalizeValue(guardFilterCompareValue(filter));\n if (a === null || b === null) {\n return a === null && b !== null;\n }\n return a > b;\n };\n}\nfunction $equalsInMemoryFilterCompiler(filter) {\n return (val) => {\n const b = normalizeValue(guardFilterCompareValue(filter));\n if (Array.isArray(val)) {\n // To match backend logic where these things are required for optimizations\n // + also match MongoDB behavior\n for (const v of val) {\n const a = normalizeValue(guardFilterCompareValue(v));\n if (a === b) {\n return true;\n }\n }\n return false;\n }\n const a = normalizeValue(guardFilterCompareValue(val));\n return a === b;\n };\n}\nfunction invertFilterCompiler(compiler) {\n return (filter, filters) => {\n const runner = compiler(filter, filters);\n return (val) => {\n return !runner(val);\n };\n };\n}\nfunction $containsInMemoryFilterCompiler(filter) {\n return (val) => {\n const a = normalizeValue(guardFilterCompareValue(val));\n const needle = normalizeValue(guardFilterCompareValue(filter));\n if (typeof a !== 'string' || typeof needle !== 'string') {\n return false;\n }\n return StringCompare.contains(a, needle);\n };\n}\nfunction $inInMemoryFilterCompiler(filter) {\n return (val) => {\n if (!Array.isArray(filter)) {\n throw new Error('Invalid filter: expected array as value for $in filter');\n }\n if (Array.isArray(val)) {\n // To match backend logic (JSON_OVERLAPS in MySQL) where these things are required for optimizations\n // + also match MongoDB behavior\n for (const v of val) {\n const a = normalizeValue(guardFilterCompareValue(v));\n for (const element of filter) {\n const b = normalizeValue(guardFilterCompareValue(element));\n if (a === b) {\n return true;\n }\n }\n }\n return false;\n }\n const a = normalizeValue(guardFilterCompareValue(val));\n for (const element of filter) {\n const b = normalizeValue(guardFilterCompareValue(element));\n if (a === b) {\n return true;\n }\n }\n return false;\n };\n}\nfunction $lengthInMemoryFilterCompiler(filter, filters) {\n const runner = $andInMemoryFilterCompiler(filter, filters);\n return (val) => {\n if (typeof val === 'string' || Array.isArray(val)) {\n return runner(val.length);\n }\n throw new Error('Invalid filter: expected string or array as value for $length filter');\n };\n}\nfunction objectPathValue(object, path) {\n if (path.length === 0) {\n return object;\n }\n const nextSearched = path[0];\n if (nextSearched in object) {\n return objectPathValue(object[nextSearched], path.slice(1));\n }\n}\nfunction guardFilterCompareValue(val) {\n if (val instanceof Date) {\n return val;\n }\n if (typeof val === 'string') {\n return val;\n }\n if (typeof val === 'number') {\n return val;\n }\n if (typeof val === 'boolean') {\n return val;\n }\n if (val === null) {\n return null;\n }\n if (typeof val === 'object' && '$' in val) {\n if (val['$'] === '$now') {\n return val;\n }\n }\n throw new Error('Invalid compare value. Expected a string, number, boolean, date or null.');\n}\nfunction normalizeValue(val) {\n if (val instanceof Date) {\n return val.getTime();\n }\n if (typeof val === 'string') {\n return val.toLocaleLowerCase();\n }\n if (typeof val === 'boolean') {\n return val === true ? 1 : 0;\n }\n if (val === null) {\n return null;\n }\n if (typeof val === 'object' && '$' in val) {\n const specialValue = val['$'];\n switch (specialValue) {\n case '$now':\n return normalizeValue(new Date());\n default:\n throw new Error('Unsupported magic value ' + specialValue);\n }\n }\n return val;\n}\nfunction wrapPlainFilter(filter) {\n if (typeof filter === 'string' || typeof filter === 'number' || typeof filter === 'boolean' || filter === null || filter === undefined || filter instanceof Date) {\n return {\n $eq: filter,\n };\n }\n return filter;\n}\nexport function createInMemoryFilterCompiler(path) {\n const splitted = path.split('.');\n return (filter, filters) => {\n const runner = $andInMemoryFilterCompiler(filter, filters);\n return (object) => {\n const value = objectPathValue(object, splitted);\n return runner(value);\n };\n };\n}\nexport function createInMemoryFilterCompilerFromCompositePath(paths, separator = ' ') {\n const splittedPaths = paths.map(path => path.split('.'));\n return (filter, filters) => {\n const runner = $andInMemoryFilterCompiler(filter, filters);\n return (object) => {\n const value = splittedPaths.map(splitted => objectPathValue(object, splitted)).join(separator);\n return runner(value);\n };\n };\n}\nexport const baseInMemoryFilterCompilers = {\n $and: $andInMemoryFilterCompiler,\n $or: $orInMemoryFilterCompiler,\n $not: $notInMemoryFilterCompiler,\n $eq: $equalsInMemoryFilterCompiler,\n $neq: invertFilterCompiler($equalsInMemoryFilterCompiler),\n $lt: $lessThanInMemoryFilterCompiler,\n $gt: $greaterThanInMemoryFilterCompiler,\n $lte: invertFilterCompiler($greaterThanInMemoryFilterCompiler),\n $gte: invertFilterCompiler($lessThanInMemoryFilterCompiler),\n $in: $inInMemoryFilterCompiler,\n $contains: $containsInMemoryFilterCompiler,\n $length: $lengthInMemoryFilterCompiler,\n};\nfunction compileInMemoryFilter(filter, definitions) {\n if (filter === undefined) {\n return [];\n }\n const runners = [];\n for (const f2 of (Array.isArray(filter) ? filter : [filter])) {\n const f = wrapPlainFilter(f2);\n for (const key of Object.keys(f)) {\n if (!(key in definitions)) {\n throw new Error('Unsupported filter ' + key);\n }\n const filterCompiler = definitions[key];\n const subFilter = f[key];\n const s = filterCompiler(subFilter, definitions);\n if (s === undefined || s === null) {\n throw new Error('Unsupported filter value for ' + key);\n }\n runners.push(s);\n }\n }\n return runners;\n}\nexport const compileToInMemoryFilter = $andInMemoryFilterCompiler;\n//# sourceMappingURL=InMemoryFilter.js.map","import { baseInMemoryFilterCompilers, createInMemoryFilterCompiler } from './InMemoryFilter';\nexport const memberWithRegistrationsBlobInMemoryFilterCompilers = {\n ...baseInMemoryFilterCompilers,\n age: createInMemoryFilterCompiler('details.defaultAge'),\n gender: createInMemoryFilterCompiler('details.gender'),\n};\nexport const registrationInMemoryFilterCompilers = {\n ...baseInMemoryFilterCompilers,\n};\nexport const registerItemInMemoryFilterCompilers = {\n ...baseInMemoryFilterCompilers,\n};\n//# sourceMappingURL=inMemoryFilterDefinitions.js.map","import { __decorate } from \"tslib\";\nimport { ArrayDecoder, AutoEncoder, field, IntegerDecoder, MapDecoder, StringDecoder } from '@simonbackx/simple-encoding';\nimport { isSimpleError, isSimpleErrors, SimpleError, SimpleErrors } from '@simonbackx/simple-errors';\nimport { Formatter } from '@stamhoofd/utility';\nimport { v4 as uuidv4 } from 'uuid';\nimport { GroupOption, GroupOptionMenu, GroupPrice, WaitingListType } from '../../GroupSettings';\nimport { GroupType } from '../../GroupType';\nimport { StockReservation } from '../../StockReservation';\nimport { compileToInMemoryFilter } from '../../filters/InMemoryFilter';\nimport { registerItemInMemoryFilterCompilers } from '../../filters/inMemoryFilterDefinitions';\nimport { RecordAnswerDecoder } from '../records/RecordAnswer';\nimport { RecordCategory } from '../records/RecordCategory';\nexport class RegisterItemOption extends AutoEncoder {\n constructor() {\n super(...arguments);\n this.amount = 1;\n }\n}\n__decorate([\n field({ decoder: GroupOption })\n], RegisterItemOption.prototype, \"option\", void 0);\n__decorate([\n field({ decoder: GroupOptionMenu })\n], RegisterItemOption.prototype, \"optionMenu\", void 0);\n__decorate([\n field({ decoder: IntegerDecoder })\n], RegisterItemOption.prototype, \"amount\", void 0);\nexport class IDRegisterItem extends AutoEncoder {\n constructor() {\n super(...arguments);\n this.options = [];\n this.recordAnswers = new Map();\n this.replaceRegistrationIds = [];\n }\n hydrate(context) {\n return RegisterItem.fromId(this, context);\n }\n}\n__decorate([\n field({ decoder: StringDecoder })\n], IDRegisterItem.prototype, \"id\", void 0);\n__decorate([\n field({ decoder: StringDecoder })\n], IDRegisterItem.prototype, \"memberId\", void 0);\n__decorate([\n field({ decoder: StringDecoder })\n], IDRegisterItem.prototype, \"groupId\", void 0);\n__decorate([\n field({ decoder: StringDecoder })\n], IDRegisterItem.prototype, \"organizationId\", void 0);\n__decorate([\n field({ decoder: GroupPrice })\n], IDRegisterItem.prototype, \"groupPrice\", void 0);\n__decorate([\n field({ decoder: new ArrayDecoder(RegisterItemOption) })\n], IDRegisterItem.prototype, \"options\", void 0);\n__decorate([\n field({ decoder: new MapDecoder(StringDecoder, RecordAnswerDecoder), version: 338 })\n], IDRegisterItem.prototype, \"recordAnswers\", void 0);\n__decorate([\n field({ decoder: new ArrayDecoder(StringDecoder) })\n], IDRegisterItem.prototype, \"replaceRegistrationIds\", void 0);\nexport class RegisterItem {\n /**\n * @deprecated\n */\n get waitingList() {\n return false;\n }\n static fromRegistration(registration, member, organization) {\n return new RegisterItem({\n id: registration.id,\n member,\n group: registration.group,\n organization,\n groupPrice: registration.groupPrice,\n recordAnswers: registration.recordAnswers,\n options: registration.options,\n });\n }\n static defaultFor(member, group, organization) {\n if (group.organizationId !== organization.id) {\n throw new Error('Group and organization do not match in RegisterItem.defaultFor');\n }\n const item = new RegisterItem({\n member,\n group,\n organization,\n });\n return item;\n }\n constructor(data) {\n var _a, _b, _c, _d, _e, _f, _g, _h;\n this.options = [];\n this.recordAnswers = new Map();\n /**\n * Price for the new registration\n */\n this.calculatedPrice = 0;\n /**\n * Refund for the replaced registrations\n */\n this.calculatedRefund = 0;\n /**\n * These registrations will be replaced as part of this new registration (moving or updating a registration is possible this way)\n */\n this.replaceRegistrations = [];\n /**\n * Show an error in the cart for recovery\n */\n this.cartError = null;\n this.id = (_a = data.id) !== null && _a !== void 0 ? _a : uuidv4();\n this.member = data.member;\n this.group = data.group;\n if (!data.groupPrice) {\n const prices = this.getFilteredPrices();\n for (const price of prices) {\n const stock = price.getRemainingStock(this);\n if (stock !== 0) {\n this.groupPrice = price;\n break;\n }\n }\n if (!this.groupPrice) {\n // Probably all sold out\n // Select the first one anyway\n this.groupPrice = (_b = prices[0]) !== null && _b !== void 0 ? _b : GroupPrice.create({ name: 'Ongeldig tarief', id: '' });\n }\n }\n else {\n this.groupPrice = data.groupPrice;\n }\n this.organization = data.organization;\n this.options = (_c = data.options) !== null && _c !== void 0 ? _c : [];\n this.recordAnswers = (_d = data.recordAnswers) !== null && _d !== void 0 ? _d : new Map();\n this.replaceRegistrations = (_e = data.replaceRegistrations) !== null && _e !== void 0 ? _e : [];\n this.cartError = (_f = data.cartError) !== null && _f !== void 0 ? _f : null;\n this.calculatedPrice = (_g = data.calculatedPrice) !== null && _g !== void 0 ? _g : 0;\n this.calculatedRefund = (_h = data.calculatedRefund) !== null && _h !== void 0 ? _h : 0;\n // Select all defaults\n for (const optionMenu of this.group.settings.optionMenus) {\n if (!optionMenu.multipleChoice) {\n if (this.options.find(o => o.optionMenu.id === optionMenu.id)) {\n continue;\n }\n let added = false;\n const options = this.getFilteredOptions(optionMenu);\n for (const option of options) {\n const stock = option.getRemainingStock(this);\n if (stock === 0) {\n continue;\n }\n this.options.push(RegisterItemOption.create({\n option,\n optionMenu: optionMenu,\n amount: 1,\n }));\n added = true;\n break;\n }\n if (!added && options.length > 0) {\n // Add the first (this one is sold out, but still required for correct error handling)\n this.options.push(RegisterItemOption.create({\n option: options[0],\n optionMenu: optionMenu,\n amount: 1,\n }));\n }\n }\n }\n }\n get isInCart() {\n return this.member.family.checkout.cart.contains(this);\n }\n get showItemView() {\n return !!this.replaceRegistrations.length || this.group.settings.prices.length !== 1 || this.group.settings.optionMenus.length > 0 || this.group.type === GroupType.WaitingList || this.group.settings.description.length > 2 || this.group.settings.prices[0].price.price > 0 || (!this.isInCart && !this.isValid);\n }\n calculatePrice() {\n this.calculatedPrice = this.groupPrice.price.forMember(this.member);\n this.calculatedRefund = 0;\n for (const option of this.options) {\n this.calculatedPrice += option.option.price.forMember(this.member) * option.amount;\n }\n for (const registration of this.replaceRegistrations) {\n this.calculatedRefund += registration.price;\n }\n }\n get totalPrice() {\n return this.calculatedPrice - this.calculatedRefund;\n }\n get priceBreakown() {\n let all = [];\n let replacePrice = 0;\n for (const registration of this.replaceRegistrations) {\n replacePrice += registration.price;\n all.push({\n name: this.checkout.isAdminFromSameOrganization ? 'Reeds aangerekend voor ' + registration.group.settings.name : 'Terugbetaling ' + registration.group.settings.name,\n price: -registration.price,\n });\n }\n all = all.filter(a => a.price !== 0);\n if (all.length > 0) {\n all.unshift({\n name: 'Subtotaal',\n price: this.calculatedPrice,\n });\n }\n return [\n ...all,\n {\n name: this.checkout.isAdminFromSameOrganization ? (this.totalPrice >= 0 ? 'Openstaand bedrag stijgt met' : 'Openstaand bedrag daalt met') : 'Totaal',\n price: this.checkout.isAdminFromSameOrganization ? Math.abs(this.totalPrice) : this.totalPrice,\n },\n ];\n }\n clone() {\n return new RegisterItem({\n id: this.id,\n member: this.member,\n group: this.group,\n organization: this.organization,\n groupPrice: this.groupPrice.clone(),\n options: this.options.map(o => o.clone()),\n recordAnswers: new Map([...this.recordAnswers.entries()].map(([k, v]) => [k, v.clone()])),\n replaceRegistrations: this.replaceRegistrations.map(r => r.clone()),\n cartError: this.cartError,\n calculatedPrice: this.calculatedPrice,\n calculatedRefund: this.calculatedRefund,\n });\n }\n copyFrom(item) {\n this.groupPrice = item.groupPrice.clone();\n this.options = item.options.map(o => o.clone());\n this.recordAnswers = new Map([...item.recordAnswers.entries()].map(([k, v]) => [k, v.clone()]));\n this.calculatedPrice = item.calculatedPrice;\n this.calculatedRefund = item.calculatedRefund;\n }\n getFilteredPrices() {\n const base = this.group.settings.getFilteredPrices({ admin: this.checkout.isAdminFromSameOrganization });\n if (this.groupPrice && !base.some(b => b.id === this.groupPrice.id)) {\n return [this.groupPrice, ...base];\n }\n return base;\n }\n getFilteredOptionMenus() {\n return this.group.settings.getFilteredOptionMenus({ admin: this.checkout.isAdminFromSameOrganization });\n }\n getFilteredOptions(menu) {\n return menu.getFilteredOptions({ admin: this.checkout.isAdminFromSameOrganization });\n }\n convert() {\n return IDRegisterItem.create({\n id: this.id,\n memberId: this.member.member.id,\n groupId: this.group.id,\n organizationId: this.organization.id,\n groupPrice: this.groupPrice,\n options: this.options,\n replaceRegistrationIds: this.replaceRegistrations.map(r => r.id),\n recordAnswers: this.recordAnswers,\n });\n }\n get memberId() {\n return this.member.id;\n }\n get groupId() {\n return this.group.id;\n }\n get reduced() {\n var _a, _b;\n return (_b = (_a = this.member.patchedMember.details.requiresFinancialSupport) === null || _a === void 0 ? void 0 : _a.value) !== null && _b !== void 0 ? _b : false;\n }\n get family() {\n return this.member.family;\n }\n get checkout() {\n return this.family.checkout;\n }\n /**\n * Update self to the newest available data, and throw error if something failed (only after refreshing other ones)\n */\n refresh(group, options) {\n this.group = group;\n const errors = new SimpleErrors();\n if (this.group.settings.prices.length === 0) {\n errors.addError(new SimpleError({\n code: 'product_unavailable',\n message: 'Product unavailable',\n human: 'Er is iets fout met de tariefinstellingen van ' + this.group.settings.name + ', waardoor je nu niet kan inschrijven. Neem contact op met een beheerder en vraag de tariefinstellingen na te kijken.',\n }));\n }\n else {\n const groupPrice = this.group.settings.prices.find(p => p.id === this.groupPrice.id);\n if (!groupPrice) {\n errors.addError(new SimpleError({\n code: 'product_unavailable',\n message: 'Product unavailable',\n human: 'Eén of meerdere tarieven van ' + this.group.settings.name + ' zijn niet meer beschikbaar',\n meta: { recoverable: true },\n }));\n }\n else {\n this.groupPrice = groupPrice;\n }\n }\n // Check all options\n const remainingMenus = this.group.settings.optionMenus.slice();\n for (const o of this.options) {\n let index = remainingMenus.findIndex(m => m.id === o.optionMenu.id);\n if (index == -1) {\n // Check if it has a multiple choice one\n index = this.group.settings.optionMenus.findIndex(m => m.id === o.optionMenu.id);\n errors.addError(new SimpleError({\n code: 'option_menu_unavailable',\n message: 'Option menu unavailable',\n human: 'Eén of meerdere keuzemogelijkheden van ' + this.group.settings.name + ' zijn niet meer beschikbaar',\n meta: { recoverable: true },\n }));\n continue;\n }\n const menu = remainingMenus[index];\n if (!menu.multipleChoice) {\n // Already used: not possible to add another\n remainingMenus.splice(index, 1);\n }\n const option = menu.options.find(m => m.id === o.option.id);\n if (!option) {\n errors.addError(new SimpleError({\n code: 'option_unavailable',\n message: 'Option unavailable',\n human: 'Eén of meerdere keuzemogelijkheden van ' + this.group.settings.name + ' zijn niet meer beschikbaar',\n meta: { recoverable: true },\n }));\n continue;\n }\n // Update to latest data\n o.optionMenu = menu;\n o.option = option;\n }\n if (remainingMenus.filter(m => !m.multipleChoice).length > 0) {\n errors.addError(new SimpleError({\n code: 'missing_menu',\n message: \"Missing menu's \" + remainingMenus.filter(m => !m.multipleChoice).map(m => m.name).join(', '),\n human: 'Er zijn nieuwe keuzemogelijkheden voor ' + this.group.settings.name + ' waaruit je moet kiezen',\n meta: { recoverable: true },\n }));\n }\n if (options === null || options === void 0 ? void 0 : options.final) {\n // Check all answers are answered\n try {\n RecordCategory.validate(this.group.settings.recordCategories, this);\n }\n catch (e) {\n if (isSimpleErrors(e) || isSimpleError(e)) {\n errors.addError(e);\n }\n else {\n throw e;\n }\n }\n }\n errors.throwIfNotEmpty();\n }\n willReplace(registrationId) {\n return this.replaceRegistrations.some(rr => rr.id === registrationId);\n }\n isAlreadyRegistered() {\n return !!this.member.member.registrations.find(r => !this.willReplace(r.id) && r.groupId === this.group.id && r.registeredAt !== null && r.deactivatedAt === null);\n }\n hasReachedCategoryMaximum() {\n if (this.group.type !== GroupType.Membership) {\n return false;\n }\n const parents = this.group.getParentCategories(this.organization.period.settings.categories, false);\n for (const parent of parents) {\n if (parent.settings.maximumRegistrations !== null) {\n const count = this.member.patchedMember.registrations.filter((r) => {\n if (!this.willReplace(r.id) && r.registeredAt !== null && r.deactivatedAt === null && parent.groupIds.includes(r.groupId)) {\n return true;\n }\n return false;\n }).length;\n const waiting = this.checkout.cart.items.filter((item) => {\n return item.member.member.id === this.member.member.id && parent.groupIds.includes(item.group.id) && item.group.id !== this.group.id;\n }).length;\n if (count + waiting >= parent.settings.maximumRegistrations) {\n return true;\n }\n }\n }\n return false;\n }\n isInvited() {\n return !!this.member.member.registrations.find(r => r.groupId === this.group.id && r.registeredAt === null && r.canRegister);\n }\n doesMeetRequireGroupIds() {\n if (this.group.settings.requireGroupIds.length > 0) {\n const hasGroup = this.member.member.registrations.find((r) => {\n return !this.willReplace(r.id) && r.registeredAt !== null && r.deactivatedAt === null && this.group.settings.requireGroupIds.includes(r.groupId);\n });\n if (!hasGroup && !this.checkout.cart.items.find(item => item.member.id === this.member.id && this.group.settings.requireGroupIds.includes(item.group.id))) {\n return false;\n }\n }\n if (this.group.settings.requireDefaultAgeGroupIds.length > 0) {\n const hasGroup = this.member.member.registrations.find((r) => {\n return r.group.periodId === this.group.periodId && !this.willReplace(r.id) && r.registeredAt !== null && r.deactivatedAt === null && r.group.defaultAgeGroupId && this.group.settings.requireDefaultAgeGroupIds.includes(r.group.defaultAgeGroupId);\n });\n if (!hasGroup && !this.checkout.cart.items.find(item => item.member.id === this.member.id && item.group.defaultAgeGroupId && this.group.settings.requireDefaultAgeGroupIds.includes(item.group.defaultAgeGroupId))) {\n return false;\n }\n }\n return true;\n }\n doesMeetRequireOrganizationIds() {\n if (this.group.settings.requireOrganizationIds.length > 0) {\n const hasGroup = this.member.member.registrations.find((r) => {\n return r.group.periodId === this.group.periodId && !this.willReplace(r.id) && r.group.type === GroupType.Membership && this.group.settings.requireOrganizationIds.includes(r.organizationId) && r.registeredAt !== null && r.deactivatedAt === null;\n });\n if (!hasGroup && !this.checkout.cart.items.find(item => item.member.id === this.member.id && this.group.settings.requireOrganizationIds.includes(item.organization.id))) {\n return false;\n }\n }\n return true;\n }\n doesMeetRequireOrganizationTags() {\n if (this.group.settings.requireOrganizationTags.length > 0) {\n const hasOrganization = this.member.filterOrganizations({ currentPeriod: true, types: [GroupType.Membership] }).find((organization) => {\n return organization.meta.matchTags(this.group.settings.requireOrganizationTags);\n });\n if (!hasOrganization && !this.checkout.cart.items.find(item => item.member.id === this.member.id && item.organization.meta.matchTags(this.group.settings.requireOrganizationTags))) {\n return false;\n }\n }\n return true;\n }\n doesMeetRequirePlatformMembershipOn() {\n if (this.group.settings.requirePlatformMembershipOn !== null) {\n const requirePlatformMembershipOn = this.group.settings.requirePlatformMembershipOn;\n return !!this.member.patchedMember.platformMemberships.find(m => m.isActive(requirePlatformMembershipOn));\n }\n return true;\n }\n isExistingMemberOrFamily() {\n return this.member.isExistingMember(this.group.organizationId) || (this.group.settings.priorityForFamily && !!this.family.members.find(f => f.isExistingMember(this.group.organizationId)));\n }\n get description() {\n const descriptions = [];\n if (this.replaceRegistrations.length > 0) {\n for (const registration of this.replaceRegistrations) {\n descriptions.push('Verplaatsen vanaf ' + registration.group.settings.name);\n }\n }\n if (this.getFilteredPrices().length > 1) {\n descriptions.push(this.groupPrice.name);\n }\n for (const option of this.options) {\n descriptions.push(option.optionMenu.name + ': ' + option.option.name + (option.option.allowAmount ? ` x ${option.amount}` : ''));\n }\n return descriptions.filter(d => !!d).join('\\n');\n }\n hasReachedGroupMaximum() {\n const available = this.group.settings.getRemainingStock(this);\n if (available !== null && available <= 0) {\n return true;\n }\n // If all prices are sold out -> also reached maximum\n const prices = this.getFilteredPrices();\n if (prices.length > 0) {\n let allPricesSoldOut = true;\n for (const price of prices) {\n const remaining = price.getRemainingStock(this);\n if (remaining === null || remaining > 0) {\n allPricesSoldOut = false;\n break;\n }\n }\n if (allPricesSoldOut) {\n return true;\n }\n }\n // If non-multiple choice option menu's are sold out -> also reached maximum\n const optionMenus = this.getFilteredOptionMenus();\n for (const menu of optionMenus) {\n if (!menu.multipleChoice) {\n let allOptionsSoldOut = true;\n for (const option of menu.options) {\n const remaining = option.getRemainingStock(this);\n if (remaining === null || remaining > 0) {\n allOptionsSoldOut = false;\n break;\n }\n }\n if (allOptionsSoldOut) {\n return true;\n }\n }\n }\n return false;\n }\n get validationErrorForWaitingList() {\n try {\n this.validate({ forWaitingList: true });\n }\n catch (e) {\n if (isSimpleError(e) || isSimpleErrors(e)) {\n return e.getHuman();\n }\n throw e;\n }\n return null;\n }\n get validationError() {\n try {\n this.validate();\n }\n catch (e) {\n if (isSimpleError(e) || isSimpleErrors(e)) {\n return e.getHuman();\n }\n throw e;\n }\n return null;\n }\n get validationWarning() {\n if (this.validationError) {\n return null;\n }\n if (!this.member.family.checkout.isAdminFromSameOrganization) {\n // Warnings are only for admins\n return null;\n }\n try {\n this.validate({ warnings: true });\n }\n catch (e) {\n if (isSimpleError(e) || isSimpleErrors(e)) {\n return e.getHuman();\n }\n throw e;\n }\n return null;\n }\n get isValid() {\n return this.validationError === null;\n }\n validatePeriod(group, type, admin = false) {\n if (group.type === GroupType.WaitingList) {\n return;\n }\n if (group.type === GroupType.EventRegistration) {\n return;\n }\n const platform = this.family.platform;\n const periodId = group.periodId;\n if (periodId !== this.organization.period.period.id) {\n if (!admin) {\n throw new SimpleError({\n code: 'different_period',\n message: 'Different period',\n human: type === 'register' ? `Je kan niet meer inschrijven voor ${group.settings.name} omdat dit werkjaar niet actief is.` : `Je kan geen inschrijvingen wijzigen van ${group.settings.name} omdat dat werkjaar niet actief is.`,\n });\n }\n }\n const period = periodId === platform.period.id ? platform.period : (periodId === this.organization.period.period.id ? this.organization.period.period : group.settings.period);\n if (!period) {\n throw new SimpleError({\n code: 'locked_period',\n message: 'Locked period',\n human: type === 'register' ? `Je kan niet meer inschrijven voor ${group.settings.name} omdat dit werkjaar is afgesloten.` : `Je kan geen inschrijvingen wijzigen van ${group.settings.name} omdat dit werkjaar is afgesloten.`,\n });\n }\n if (!period || period.locked) {\n throw new SimpleError({\n code: 'locked_period',\n message: 'Locked period',\n human: type === 'register' ? `Je kan niet meer inschrijven voor ${group.settings.name} omdat werkjaar ${period.nameShort} is afgesloten.` : `Je kan geen inschrijvingen wijzigen van ${group.settings.name} omdat werkjaar ${period.nameShort} is afgesloten.`,\n });\n }\n }\n validate(options) {\n var _a;\n this.refresh(this.group, options);\n const checkout = this.member.family.checkout;\n const admin = checkout.isAdminFromSameOrganization && !(options === null || options === void 0 ? void 0 : options.warnings);\n if (this.group.organizationId !== this.organization.id) {\n throw new Error('Group and organization do not match in RegisterItem.validate');\n }\n if (this.checkout.singleOrganization && this.checkout.singleOrganization.id !== this.organization.id) {\n throw new SimpleError({\n code: 'multiple_organizations',\n message: 'Cannot add items of multiple organizations to the checkout',\n human: `Reken eerst jouw huidige winkelmandje af. Inschrijvingen voor ${this.group.settings.name} moeten aan een andere organisatie betaald worden en kan je daardoor niet samen afrekenen.`,\n meta: { recoverable: true },\n });\n }\n this.validatePeriod(this.group, 'register', admin);\n if ((options === null || options === void 0 ? void 0 : options.forWaitingList) && !this.group.waitingList) {\n throw new SimpleError({\n code: 'missing_waiting_list',\n message: 'No waiting list',\n human: `Je kan niet inschrijven voor de wachtlijst`,\n });\n }\n if (checkout.asOrganizationId && !checkout.isAdminFromSameOrganization && !this.group.settings.allowRegistrationsByOrganization) {\n throw new SimpleError({\n code: 'as_organization_disabled',\n message: 'allowRegistrationsByOrganization disabled',\n human: 'Inschrijvingen door organisaties zijn niet toegestaan voor ' + this.group.settings.name,\n });\n }\n for (const registration of this.replaceRegistrations) {\n // todo: check if you are allowed to move\n if (registration.memberId !== this.member.id) {\n throw new SimpleError({\n code: 'invalid_move',\n message: 'Invalid member in replaceRegistration',\n human: 'Je wilt een inschrijving verplaatsen van een ander lid in ruil voor een ander lid. Dit is niet toegestaan.',\n field: 'replaceRegistrations',\n });\n }\n if (registration.group.organizationId !== this.organization.id) {\n throw new SimpleError({\n code: 'invalid_move',\n message: 'Invalid organization in replaceRegistration',\n human: 'Je wilt een inschrijving verplaatsen van een andere organisatie. Dit is niet toegestaan.',\n field: 'replaceRegistrations',\n });\n }\n if (!admin) {\n throw new SimpleError({\n code: 'invalid_move',\n message: 'Not allowed to move registrations',\n human: 'Enkel beheerders kunnen inschrijvingen verplaatsen.',\n field: 'replaceRegistrations',\n });\n }\n this.validatePeriod(registration.group, 'move', admin);\n }\n // Already registered\n if (this.isAlreadyRegistered()) {\n throw new SimpleError({\n code: 'already_registered',\n message: 'Already registered',\n human: `${this.member.member.firstName} is al ingeschreven voor ${this.group.settings.name}`,\n });\n }\n if (this.hasReachedCategoryMaximum()) {\n // Only happens if maximum is reached in teh cart (because maximum without cart is already checked in shouldShow)\n throw new SimpleError({\n code: 'maximum_reached',\n message: 'Maximum reached',\n human: `Je kan niet meer inschrijven voor ${this.group.settings.name} omdat ${this.member.patchedMember.name} al ingeschreven is voor een groep die je niet kan combineren.`,\n });\n }\n // Check if we have an invite (doesn't matter if registrations are closed)\n if (this.isInvited()) {\n return;\n }\n if (!admin) {\n if (!(options === null || options === void 0 ? void 0 : options.forWaitingList)) {\n if (this.group.notYetOpen) {\n throw new SimpleError({\n code: 'not_yet_open',\n message: 'Not yet open',\n human: `De inschrijvingen voor ${this.group.settings.name} zijn nog niet geopend.`,\n });\n }\n if (this.group.closed) {\n throw new SimpleError({\n code: 'closed',\n message: 'Closed',\n human: `De inschrijvingen voor ${this.group.settings.name} zijn gesloten.`,\n });\n }\n }\n // Check if it fits\n if (this.member.member.details) {\n if (!this.member.member.details.doesMatchGroup(this.group)) {\n const error = this.member.member.details.getMatchingError(this.group);\n throw new SimpleError({\n code: 'not_matching',\n message: 'Not matching: memberDetails',\n human: (_a = error === null || error === void 0 ? void 0 : error.description) !== null && _a !== void 0 ? _a : `${this.member.patchedMember.name} voldoet niet aan de voorwaarden om in te schrijven voor deze groep.`,\n });\n }\n }\n // Check if registrations are limited\n if (!this.doesMeetRequireGroupIds()) {\n throw new SimpleError({\n code: 'not_matching',\n message: 'Not matching: requireGroupIds',\n human: `${this.member.patchedMember.name} voldoet niet aan de voorwaarden om in te schrijven voor deze groep (verplichte inschrijving bij leeftijdsgroep).`,\n });\n }\n if (!this.doesMeetRequireOrganizationIds()) {\n throw new SimpleError({\n code: 'not_matching',\n message: 'Not matching: requireOrganizationIds',\n human: `${this.member.patchedMember.name} kan pas inschrijven met een geldige actieve inschrijving (verplichte inschrijving bij lokale groep).`,\n });\n }\n if (!this.doesMeetRequireOrganizationTags()) {\n throw new SimpleError({\n code: 'not_matching',\n message: 'Not matching: requireOrganizationIds',\n human: `${this.member.patchedMember.name} kan pas inschrijven met een geldige actieve inschrijving (verplichte inschrijving in regio).`,\n });\n }\n if (!this.doesMeetRequirePlatformMembershipOn()) {\n throw new SimpleError({\n code: 'not_matching',\n message: 'Not matching: requirePlatformMembershipOn',\n human: `${this.member.patchedMember.name} kan pas inschrijven met een geldige aansluiting (en dus verzekering) bij de koepel`,\n });\n }\n const existingMember = this.isExistingMemberOrFamily();\n // Pre registrations?\n if (this.group.activePreRegistrationDate) {\n if (!existingMember) {\n throw new SimpleError({\n code: 'pre_registrations',\n message: 'Pre registrations',\n human: 'Momenteel zijn de voorinschrijvingen nog bezig voor ' + this.group.settings.name + '. Dit is enkel voor bestaande leden' + (this.group.settings.priorityForFamily ? ' en hun broers/zussen' : '') + '.',\n });\n }\n }\n const reachedMaximum = this.hasReachedGroupMaximum();\n if (!(options === null || options === void 0 ? void 0 : options.forWaitingList)) {\n // More detailed error messages\n if (this.group.settings.waitingListType === WaitingListType.All) {\n throw new SimpleError({\n code: 'waiting_list_required',\n message: 'Waiting list required',\n human: `Iedereen moet zich eerst op de wachtlijst inschrijven`,\n meta: { recoverable: true },\n });\n }\n if (this.group.settings.waitingListType === WaitingListType.ExistingMembersFirst && !existingMember) {\n throw new SimpleError({\n code: 'waiting_list_required',\n message: 'Waiting list required',\n human: `Nieuwe leden moeten zich eerst op de wachtlijst inschrijven`,\n meta: { recoverable: true },\n });\n }\n if (this.group.waitingList) {\n if (reachedMaximum) {\n throw new SimpleError({\n code: 'waiting_list_required',\n message: 'Waiting list required',\n human: `De inschrijvingen voor ${this.group.settings.name} zijn volzet. Je kan wel nog inschrijven voor de wachtlijst`,\n meta: { recoverable: true },\n });\n }\n }\n }\n if (reachedMaximum && !this.group.waitingList) {\n // Reached maximum without waiting lists\n throw new SimpleError({\n code: 'maximum_reached',\n message: 'Maximum reached',\n human: `De inschrijvingen voor ${this.group.settings.name} zijn volzet`,\n meta: { recoverable: true },\n });\n }\n // Only check individual stock if we haven't reached the maximum - otherwise it won't suggest to use the waiting list\n if (!reachedMaximum) {\n // Check individual stock\n if (this.groupPrice.getRemainingStock(this) === 0) {\n throw new SimpleError({\n code: 'stock_empty',\n message: 'Stock empty',\n human: `Het tarief ${this.groupPrice.name} is uitverkocht`,\n meta: { recoverable: true },\n });\n }\n for (const option of this.options) {\n const remaining = option.option.getRemainingStock(this);\n if (remaining !== null && remaining < option.amount) {\n throw new SimpleError({\n code: 'stock_empty',\n message: 'Stock empty',\n human: remaining === 0 ? `De keuzemogelijkheid ${option.option.name} is uitverkocht` : `Er zijn nog maar ${Formatter.pluralText(remaining, 'stuk', 'stuks')} beschikbaar van ${option.option.name}`,\n meta: { recoverable: true },\n });\n }\n }\n }\n if (options === null || options === void 0 ? void 0 : options.forWaitingList) {\n // Also check waiting list itself\n const item = RegisterItem.defaultFor(this.member, this.group.waitingList, this.organization);\n item.validate({ warnings: options === null || options === void 0 ? void 0 : options.warnings });\n }\n }\n }\n static fromId(idRegisterItem, context) {\n const member = context.members.find(m => m.member.id === idRegisterItem.memberId);\n if (!member) {\n throw new Error('Member not found: ' + idRegisterItem.memberId);\n }\n const organization = context.organizations.find(o => o.id === idRegisterItem.organizationId);\n if (!organization) {\n throw new Error('Organization not found: ' + idRegisterItem.organizationId);\n }\n const group = context.groups.find(g => g.id === idRegisterItem.groupId);\n if (!group) {\n throw new Error('Group not found: ' + idRegisterItem.groupId);\n }\n const replaceRegistrations = [];\n for (const registrationId of idRegisterItem.replaceRegistrationIds) {\n const registration = member.patchedMember.registrations.find(r => r.id === registrationId);\n if (!registration) {\n throw new Error('Registration not found: ' + registrationId);\n }\n replaceRegistrations.push(registration);\n }\n return new RegisterItem({\n id: idRegisterItem.id,\n member,\n group,\n organization,\n groupPrice: idRegisterItem.groupPrice,\n options: idRegisterItem.options,\n recordAnswers: idRegisterItem.recordAnswers,\n replaceRegistrations,\n });\n }\n /**\n * Returns the stock that will be taken (or freed if negative) by all the register items before this item\n * and with the removed registrations freed up, so this can be negative\n */\n getCartPendingStockReservations() {\n const deleteRegistrations = [\n ...this.checkout.cart.deleteRegistrations.filter(r => r.groupId === this.group.id),\n ...this.replaceRegistrations.filter(r => r.groupId === this.group.id),\n ];\n const cartIndex = this.checkout.cart.items.findIndex(i => i.id === this.id);\n const itemsBefore = this.checkout.cart.items.slice(0, cartIndex === -1 ? undefined : cartIndex);\n return StockReservation.removed(itemsBefore.flatMap(i => i.getPendingStockReservations()), // these will be removed\n deleteRegistrations.flatMap(r => r.stockReservations));\n }\n /**\n * Stock that will be taken or removed by this item\n */\n getPendingStockReservations() {\n const base = [\n // Global level stock reservations (stored in each group)\n StockReservation.create({\n objectId: this.group.id,\n objectType: 'Group',\n amount: 1,\n children: [\n // Group level stock reservatiosn (stored in the group)\n StockReservation.create({\n objectId: this.groupPrice.id,\n objectType: 'GroupPrice',\n amount: 1,\n }),\n ...this.options.map((o) => {\n return StockReservation.create({\n objectId: o.option.id,\n objectType: 'GroupOption',\n amount: o.amount,\n });\n }),\n ],\n }),\n ];\n const freed = this.replaceRegistrations.flatMap(r => r.stockReservations);\n return StockReservation.removed(base, freed);\n }\n doesMatchFilter(filter) {\n try {\n const compiledFilter = compileToInMemoryFilter(filter, registerItemInMemoryFilterCompilers);\n return compiledFilter(this);\n }\n catch (e) {\n console.error('Error while compiling filter', e, filter);\n }\n return false;\n }\n isRecordEnabled(_) {\n return true;\n }\n getRecordAnswers() {\n return this.recordAnswers;\n }\n}\n//# sourceMappingURL=RegisterItem.js.map","import { __decorate } from \"tslib\";\nimport { ArrayDecoder, AutoEncoder, BooleanDecoder, DateDecoder, field, IntegerDecoder, MapDecoder, StringDecoder } from '@simonbackx/simple-encoding';\nimport { v4 as uuidv4 } from 'uuid';\nimport { Group } from '../Group';\nimport { StockReservation } from '../StockReservation';\nimport { GroupPrice } from '../GroupSettings';\nimport { RegisterItemOption } from './checkout/RegisterItem';\nimport { RecordAnswerDecoder } from './records/RecordAnswer';\nimport { compileToInMemoryFilter } from '../filters/InMemoryFilter';\nimport { registrationInMemoryFilterCompilers } from '../filters/inMemoryFilterDefinitions';\nexport class Registration extends AutoEncoder {\n constructor() {\n super(...arguments);\n this.options = [];\n this.recordAnswers = new Map();\n this.memberId = '';\n /**\n * @deprecated\n */\n this.cycle = 0;\n /// Set registeredAt to null if the member is on the waiting list for now\n this.registeredAt = null;\n /// Keep spot for this member temporarily\n this.reservedUntil = null;\n /**\n * Currently not yet used\n */\n this.deactivatedAt = null;\n this.createdAt = new Date();\n this.updatedAt = new Date();\n /**\n * @deprecated - replaced by group type\n */\n this.waitingList = false;\n this.canRegister = false;\n this.price = 0;\n this.pricePaid = 0;\n this.stockReservations = [];\n }\n get groupId() {\n return this.group.id;\n }\n get description() {\n const descriptions = [];\n if (this.group.settings.getFilteredPrices().length > 1) {\n descriptions.push(this.groupPrice.name);\n }\n for (const option of this.options) {\n descriptions.push(option.optionMenu.name + ': ' + option.option.name + (option.option.allowAmount ? ` x ${option.amount}` : ''));\n }\n for (const answer of this.recordAnswers.values()) {\n descriptions.push(answer.descriptionValue);\n }\n return descriptions.filter(d => !!d).join('\\n');\n }\n doesMatchFilter(filter) {\n try {\n const compiledFilter = compileToInMemoryFilter(filter, registrationInMemoryFilterCompilers);\n return compiledFilter(this);\n }\n catch (e) {\n console.error('Error while compiling filter', e, filter);\n }\n return false;\n }\n isRecordEnabled(_) {\n return true;\n }\n getRecordAnswers() {\n return this.recordAnswers;\n }\n}\n__decorate([\n field({ decoder: StringDecoder, defaultValue: () => uuidv4() })\n], Registration.prototype, \"id\", void 0);\n__decorate([\n field({ decoder: Group, version: 266 })\n], Registration.prototype, \"group\", void 0);\n__decorate([\n field({ decoder: GroupPrice, version: 305 })\n], Registration.prototype, \"groupPrice\", void 0);\n__decorate([\n field({ decoder: new ArrayDecoder(RegisterItemOption), version: 305 })\n], Registration.prototype, \"options\", void 0);\n__decorate([\n field({ decoder: new MapDecoder(StringDecoder, RecordAnswerDecoder), version: 338 })\n], Registration.prototype, \"recordAnswers\", void 0);\n__decorate([\n field({ decoder: StringDecoder, version: 250 })\n], Registration.prototype, \"organizationId\", void 0);\n__decorate([\n field({ decoder: StringDecoder, version: 300 })\n], Registration.prototype, \"memberId\", void 0);\n__decorate([\n field({ decoder: IntegerDecoder, optional: true })\n], Registration.prototype, \"cycle\", void 0);\n__decorate([\n field({ decoder: DateDecoder, nullable: true })\n], Registration.prototype, \"registeredAt\", void 0);\n__decorate([\n field({ decoder: DateDecoder, nullable: true })\n], Registration.prototype, \"reservedUntil\", void 0);\n__decorate([\n field({ decoder: DateDecoder, nullable: true })\n], Registration.prototype, \"deactivatedAt\", void 0);\n__decorate([\n field({ decoder: DateDecoder })\n], Registration.prototype, \"createdAt\", void 0);\n__decorate([\n field({ decoder: DateDecoder })\n], Registration.prototype, \"updatedAt\", void 0);\n__decorate([\n field({ decoder: BooleanDecoder, version: 16, optional: true })\n], Registration.prototype, \"waitingList\", void 0);\n__decorate([\n field({ decoder: BooleanDecoder, version: 20 })\n], Registration.prototype, \"canRegister\", void 0);\n__decorate([\n field({ decoder: IntegerDecoder, optional: true })\n], Registration.prototype, \"price\", void 0);\n__decorate([\n field({ decoder: IntegerDecoder, optional: true })\n], Registration.prototype, \"pricePaid\", void 0);\n__decorate([\n field({ decoder: new ArrayDecoder(StockReservation), nullable: true, version: 299 })\n], Registration.prototype, \"stockReservations\", void 0);\n//# sourceMappingURL=Registration.js.map","import { __decorate } from \"tslib\";\nimport { field } from '@simonbackx/simple-encoding';\nimport { TinyMember } from './Member';\nimport { Registration } from './Registration';\nexport class RegistrationWithMember extends Registration {\n static from(registration, member) {\n return RegistrationWithMember.create({\n ...registration,\n member,\n });\n }\n}\n__decorate([\n field({ decoder: TinyMember })\n], RegistrationWithMember.prototype, \"member\", void 0);\n//# sourceMappingURL=RegistrationWithMember.js.map","import { __decorate } from \"tslib\";\nimport { AutoEncoder, EnumDecoder, field, StringDecoder } from '@simonbackx/simple-encoding';\nexport class EditorSmartButton extends AutoEncoder {\n constructor() {\n super(...arguments);\n this.type = 'block';\n }\n static forRecipient(recipient) {\n const replacements = [...recipient.replacements, ...recipient.getDefaultReplacements()];\n return this.all.map(v => v.clone()).filter((variable) => {\n // Always supported: signInUrl + unsubscribeUrl\n if (variable.id === 'signInUrl' || variable.id === 'unsubscribeUrl') {\n return true;\n }\n const replacement = replacements.find(r => r.token === variable.id && (r.value.length > 0 || r.html !== undefined));\n if (!replacement) {\n // Not found\n return false;\n }\n return true;\n });\n }\n static get all() {\n const buttons = [];\n buttons.push(EditorSmartButton.create({\n id: 'downloadUrl',\n name: 'Knop om te downloaden',\n text: 'Download',\n hint: 'Download een gekoppeld bestand.',\n }));\n buttons.push(EditorSmartButton.create({\n id: 'resetUrl',\n name: 'Knop om wachtwoord opnieuw in te stellen',\n text: 'Wachtwoord opnieuw instellen',\n hint: 'Knop waarmee gebruikers hun wachtwoord kunnen herstellen',\n }));\n buttons.push(EditorSmartButton.create({\n id: 'signInUrl',\n name: 'Knop om in te loggen',\n text: 'Open ledenportaal',\n hint: 'Als gebruikers op deze knop klikken, zorgt het systeem ervoor dat ze inloggen of registreren op het juiste e-mailadres dat al in het systeem zit.',\n }));\n // todo: make button text smart, e.g. 'view tickets' vs 'open order'\n buttons.push(EditorSmartButton.create({\n id: 'orderUrl',\n name: 'Knop naar bestelling',\n text: 'Bestelling bekijken',\n hint: 'Deze knop gaat naar het besteloverzicht, met alle informatie van de bestellingen en eventueel betalingsinstructies.',\n }));\n buttons.push(EditorSmartButton.create({\n id: 'unsubscribeUrl',\n name: 'Knop om uit te schrijven voor e-mails',\n text: 'Uitschrijven',\n hint: 'Met deze knop kan de ontvanger zich uitschrijven voor alle e-mails.',\n type: 'inline',\n }));\n buttons.push(EditorSmartButton.create({\n id: 'confirmEmailUrl',\n name: 'Knop om e-mailadres te bevestigen',\n text: 'Bevestig e-mailadres',\n hint: 'Met deze knop kan de ontvanger het e-mailadres bevestigen.',\n }));\n // Remove all smart variables that are not set in the recipients\n return buttons;\n }\n}\n__decorate([\n field({ decoder: StringDecoder })\n], EditorSmartButton.prototype, \"id\", void 0);\n__decorate([\n field({ decoder: StringDecoder })\n], EditorSmartButton.prototype, \"name\", void 0);\n__decorate([\n field({ decoder: StringDecoder })\n], EditorSmartButton.prototype, \"text\", void 0);\n__decorate([\n field({ decoder: StringDecoder })\n], EditorSmartButton.prototype, \"hint\", void 0);\n__decorate([\n field({ decoder: StringDecoder, optional: true })\n], EditorSmartButton.prototype, \"deleteMessage\", void 0);\n__decorate([\n field({ decoder: new EnumDecoder(['block', 'inline']) })\n], EditorSmartButton.prototype, \"type\", void 0);\n//# sourceMappingURL=EditorSmartButton.js.map","import { Formatter } from '@stamhoofd/utility';\nexport class CartStockHelper {\n static getProductStock({ oldItem, cart, product, admin, amount }) {\n if (product.remainingStock === null) {\n return null;\n }\n const inCart = cart.items.reduce((prev, item) => {\n if (item.id === (oldItem === null || oldItem === void 0 ? void 0 : oldItem.id)) {\n return prev;\n }\n if (item.product.id !== product.id) {\n return prev;\n }\n return prev + item.amount;\n }, 0);\n const reserved = cart.items.reduce((prev, item) => {\n if (item.product.id !== product.id) {\n return prev;\n }\n return prev + item.reservedAmount;\n }, 0);\n const remainingStock = product.remainingStock + reserved;\n const remaining = Math.max(0, remainingStock - inCart);\n let more = '';\n if (inCart > 0) {\n more = `, waarvan er al ${inCart} in jouw winkelmandje ${inCart === 1 ? 'zit' : 'zitten'}`;\n }\n const text = `Er ${remainingStock === 1 ? 'is' : 'zijn'} nog maar ${product.getRemainingStockText(remainingStock)} beschikbaar${more}`;\n return {\n stock: remainingStock,\n remaining: admin ? null : remaining,\n text: remainingStock === 0 ? `${Formatter.capitalizeFirstLetter(product.name)} is uitverkocht` : (remaining < 25 || (amount && remaining <= amount) ? text : null),\n };\n }\n static getPriceStock({ productPrice, oldItem, cart, product, admin, amount }) {\n if (productPrice.remainingStock === null) {\n return null;\n }\n const inCart = cart.items.reduce((prev, item) => {\n if (item.id === (oldItem === null || oldItem === void 0 ? void 0 : oldItem.id)) {\n return prev;\n }\n if (item.product.id !== product.id) {\n return prev;\n }\n if (item.productPrice.id !== productPrice.id) {\n return prev;\n }\n return prev + item.amount;\n }, 0);\n const reserved = cart.items.reduce((prev, item) => {\n if (item.product.id !== product.id) {\n return prev;\n }\n if (item.productPrice.id !== productPrice.id) {\n return prev;\n }\n return prev + item.reservedAmount;\n }, 0);\n const remainingStock = productPrice.remainingStock + reserved;\n const remaining = Math.max(0, remainingStock - inCart);\n let more = '';\n if (inCart > 0) {\n more = `, waarvan er al ${inCart} in jouw winkelmandje ${inCart === 1 ? 'zit' : 'zitten'}`;\n }\n const text = `Er ${remainingStock === 1 ? 'is' : 'zijn'} nog maar ${product.getRemainingStockText(remainingStock)} van ${productPrice.name} beschikbaar${more}`;\n return {\n stock: remainingStock,\n remaining: admin ? null : remaining,\n text: remainingStock === 0 ? `${Formatter.capitalizeFirstLetter(productPrice.name)} is uitverkocht` : (remaining < 25 || (amount && remaining <= amount) ? text : null),\n shortText: remainingStock === 0 ? 'Uitverkocht' : (remaining === 0 ? 'Maximum bereikt' : (remaining < 25 ? `Nog ${product.getRemainingStockText(remaining)}` : null)),\n };\n }\n static getOptionStock({ option, oldItem, cart, product, admin, amount }) {\n if (option.remainingStock === null) {\n return null;\n }\n function hasOption(item) {\n return item.options.some(o => o.option.id === option.id);\n }\n const inCart = cart.items.reduce((prev, item) => {\n if (item.id === (oldItem === null || oldItem === void 0 ? void 0 : oldItem.id)) {\n return prev;\n }\n if (item.product.id !== product.id) {\n return prev;\n }\n if (!hasOption(item)) {\n return prev;\n }\n return prev + item.amount;\n }, 0);\n const reserved = cart.items.reduce((prev, item) => {\n if (item.product.id !== product.id) {\n return prev;\n }\n if (!hasOption(item)) {\n return prev;\n }\n return prev + item.reservedAmount;\n }, 0);\n const remainingStock = option.remainingStock + reserved;\n const remaining = Math.max(0, remainingStock - inCart);\n let more = '';\n if (inCart > 0) {\n more = `, waarvan er al ${inCart} in jouw winkelmandje ${inCart === 1 ? 'zit' : 'zitten'}`;\n }\n const text = `Er ${remainingStock === 1 ? 'is' : 'zijn'} nog maar ${product.getRemainingStockText(remainingStock)} van ${option.name} beschikbaar${more}`;\n return {\n stock: remainingStock,\n remaining: admin ? null : remaining,\n text: remainingStock === 0 ? `${Formatter.capitalizeFirstLetter(option.name)} is uitverkocht` : (remaining < 25 || (amount && remaining <= amount) ? text : null),\n shortText: remainingStock === 0 ? 'Uitverkocht' : (remaining === 0 ? 'Maximum bereikt' : (remaining < 25 ? `Nog ${product.getRemainingStockText(remaining)}` : null)),\n };\n }\n static getSeatsStock({ oldItem, cart, product, webshop, admin, amount }) {\n const remainingSeats = product.getRemainingSeats(webshop, admin);\n if (remainingSeats === null) {\n return null;\n }\n const inCart = cart.items.reduce((prev, item) => {\n if (item.id === (oldItem === null || oldItem === void 0 ? void 0 : oldItem.id)) {\n return prev;\n }\n if (item.product.id !== product.id) {\n return prev;\n }\n return prev + item.seats.length;\n }, 0);\n const reserved = cart.items.reduce((prev, item) => {\n if (item.product.id !== product.id) {\n return prev;\n }\n return prev + item.reservedSeats.length;\n }, 0);\n const remainingStock = remainingSeats + reserved;\n const remaining = Math.max(0, remainingStock - inCart);\n let more = '';\n if (inCart > 0) {\n more = `, waarvan er al ${inCart} in jouw winkelmandje ${inCart === 1 ? 'zit' : 'zitten'}`;\n }\n const text = `Er ${remainingStock === 1 ? 'is' : 'zijn'} nog maar ${Formatter.pluralText(remainingStock, 'plaats', 'plaatsen')} beschikbaar${more}`;\n return {\n stock: remainingStock,\n remaining,\n text: remainingStock === 0 ? 'Er zijn geen plaatsen meer beschikbaar' : (remaining < 25 || (amount && remaining <= amount) ? text : null),\n };\n }\n static getOrderMaximum({ amount, oldItem, cart, product, admin }) {\n if (product.maxPerOrder === null) {\n return null;\n }\n if (admin) {\n return null;\n }\n const inCart = cart.items.reduce((prev, item) => {\n if (item.id === (oldItem === null || oldItem === void 0 ? void 0 : oldItem.id)) {\n return prev;\n }\n if (item.product.id !== product.id) {\n return prev;\n }\n return prev + item.amount;\n }, 0);\n let more = '';\n if (inCart > 0) {\n more = `, waarvan er al ${inCart} in jouw winkelmandje ${inCart === 1 ? 'zit' : 'zitten'}`;\n }\n const remaining = product.maxPerOrder - inCart;\n const show = (amount === undefined || (remaining <= amount));\n return {\n stock: product.maxPerOrder,\n remaining: product.maxPerOrder - inCart,\n text: !show ? null : ('Je kan maximaal ' + product.getRemainingStockText(product.maxPerOrder) + ' bestellen' + more),\n };\n }\n static getAllowMultiple({ amount, oldItem, cart, product, admin }) {\n if (product.allowMultiple) {\n return null;\n }\n const inCart = cart.items.reduce((prev, item) => {\n if (item.id === (oldItem === null || oldItem === void 0 ? void 0 : oldItem.id)) {\n return prev;\n }\n if (item.product.id !== product.id) {\n return prev;\n }\n if (item.code !== (oldItem === null || oldItem === void 0 ? void 0 : oldItem.code)) {\n return prev;\n }\n return prev + item.amount;\n }, 0);\n if (inCart > 0) {\n return {\n stock: 1,\n remaining: 0,\n text: 'Je kan maximaal 1 van dit product bestellen',\n shortText: 'Maximum bereikt',\n };\n }\n return {\n stock: 1,\n remaining: 1,\n text: null,\n };\n }\n static getFixedStockDefinitions(data, options = {}) {\n const definitions = [];\n // General product amount\n const productStock = CartStockHelper.getProductStock(data);\n if (productStock) {\n definitions.push(productStock);\n }\n // Seats stock\n const seatsStock = CartStockHelper.getSeatsStock(data);\n if (seatsStock) {\n definitions.push(seatsStock);\n }\n // Maximum per order\n if (!options.excludeOrder) {\n const orderMaximum = CartStockHelper.getOrderMaximum(data);\n if (orderMaximum) {\n definitions.push(orderMaximum);\n }\n const allowMultiple = CartStockHelper.getAllowMultiple(data);\n if (allowMultiple) {\n definitions.push(allowMultiple);\n }\n }\n return definitions;\n }\n /**\n * Return all the stock definitions for this cart item with the currently selected options\n * = calculate how much you can order with these options\n */\n static getAvailableStock(data) {\n const definitions = this.getFixedStockDefinitions(data);\n const priceStock = CartStockHelper.getPriceStock(data);\n if (priceStock) {\n definitions.push(priceStock);\n }\n for (const option of data.options) {\n const optionStock = CartStockHelper.getOptionStock({ ...data, option: option.option });\n if (optionStock) {\n definitions.push(optionStock);\n }\n }\n return definitions;\n }\n static getRemainingAcrossOptions(data, options = {}) {\n let remaining = this.getRemaining(this.getFixedStockDefinitions(data, options));\n // We sum the amount of product price stock remaining\n // We can for example order 5 medium + 10 large, so total stock is 15 remaining\n let maximumPriceStock = 0;\n for (const productPrice of data.product.filteredPrices({ admin: data.admin })) {\n const priceStock = CartStockHelper.getPriceStock({ ...data, productPrice });\n if (priceStock && priceStock.remaining !== null) {\n if (options.inMultipleCartItems) {\n maximumPriceStock += priceStock.remaining;\n }\n else {\n if (priceStock.remaining > maximumPriceStock) {\n maximumPriceStock = priceStock.remaining;\n }\n }\n }\n else {\n // Infinite price stock\n maximumPriceStock = null;\n break;\n }\n }\n if (maximumPriceStock !== null) {\n if (remaining === null) {\n remaining = maximumPriceStock;\n }\n else {\n remaining = Math.min(remaining, maximumPriceStock);\n }\n }\n // Options\n for (const optionMenu of data.product.optionMenus) {\n if (optionMenu.multipleChoice) {\n // Not affecting maximum stock because choice is optional\n continue;\n }\n let maximumOptionStock = 0;\n for (const option of optionMenu.options) {\n const optionStock = CartStockHelper.getOptionStock({ ...data, option });\n if (optionStock && optionStock.remaining !== null) {\n if (options.inMultipleCartItems) {\n maximumOptionStock += optionStock.remaining;\n }\n else {\n if (optionStock.remaining > maximumOptionStock) {\n maximumOptionStock = optionStock.remaining;\n }\n }\n }\n else {\n // Infinite option stock\n maximumOptionStock = null;\n break;\n }\n }\n if (maximumOptionStock !== null) {\n if (remaining === null) {\n remaining = maximumOptionStock;\n }\n else {\n remaining = Math.min(remaining, maximumOptionStock);\n }\n }\n }\n return remaining;\n }\n static getRemaining(definitions) {\n const minArr = definitions.map(s => s.remaining).filter(v => v !== null);\n if (minArr.length === 0) {\n return null;\n }\n return Math.min(...minArr);\n }\n}\n//# sourceMappingURL=CartStockHelper.js.map","import { __decorate } from \"tslib\";\nimport { ArrayDecoder, AutoEncoder, field, IntegerDecoder, MapDecoder, StringDecoder } from '@simonbackx/simple-encoding';\nimport { isSimpleError, isSimpleErrors, SimpleError, SimpleErrors } from '@simonbackx/simple-errors';\nimport { Formatter } from '@stamhoofd/utility';\nimport { v4 as uuidv4 } from 'uuid';\nimport { CartReservedSeat } from '../SeatingPlan';\nimport { CartStockHelper } from './CartStockHelper';\nimport { ProductDiscountSettings } from './Discount';\nimport { Option, OptionMenu, Product, ProductPrice, ProductType } from './Product';\nimport { WebshopFieldAnswer } from './WebshopField';\nexport class CartItemPrice extends AutoEncoder {\n constructor() {\n super(...arguments);\n this.price = 0;\n this.fixedDiscount = 0;\n this.percentageDiscount = 0;\n }\n get discountedPrice() {\n let price = this.price;\n price = Math.min(price, Math.max(0, Math.round(price * (10000 - this.percentageDiscount) / 10000))); // Min is required to support negative prices: prices should never increase after applyign discounts\n price = Math.min(price, Math.max(0, price - this.fixedDiscount)); // Min is required to support negative prices: prices should never increase after applyign discounts\n return price;\n }\n}\n__decorate([\n field({ decoder: IntegerDecoder })\n], CartItemPrice.prototype, \"price\", void 0);\n__decorate([\n field({ decoder: IntegerDecoder })\n], CartItemPrice.prototype, \"fixedDiscount\", void 0);\n__decorate([\n field({ decoder: IntegerDecoder })\n], CartItemPrice.prototype, \"percentageDiscount\", void 0);\nexport class CartItemOption extends AutoEncoder {\n}\n__decorate([\n field({ decoder: Option })\n], CartItemOption.prototype, \"option\", void 0);\n__decorate([\n field({ decoder: OptionMenu })\n], CartItemOption.prototype, \"optionMenu\", void 0);\nexport class CartItem extends AutoEncoder {\n constructor() {\n super(...arguments);\n this.options = [];\n this.fieldAnswers = [];\n this.seats = [];\n this.amount = 1;\n /**\n * Discounts that are actually applied\n */\n this.discounts = [];\n /**\n * When an order is correctly placed, we store the reserved amount in the stock here.\n * We need this to check the stock changes when an order is edited after placement.\n */\n this.reservedAmount = 0;\n /**\n * Holds a list of what we reserved a stock for (which produce prices and which options specifically so we don't reserve the same thing multiple times or revert when it wasn't reserved earlier)\n */\n this.reservedOptions = new Map();\n /**\n * Holds a list of what we reserved a stock for (which produce prices and which options specifically so we don't reserve the same thing multiple times or revert when it wasn't reserved earlier)\n */\n this.reservedPrices = new Map();\n /**\n * When the seats are successfully reserved, we store them here\n * This makes editing seats possible because we know we can still use these seats even if they are blocked normally\n */\n this.reservedSeats = [];\n /**\n * @deprecated\n * Saved unitPrice (migration needed)\n */\n this.unitPrice = null;\n /**\n * Detailed list of prices\n */\n this.calculatedPrices = [];\n /**\n * Show an error in the cart for recovery\n */\n this.cartError = null;\n }\n /**\n * @deprecated\n */\n get price() {\n return this.unitPrice ? (this.unitPrice * this.amount) : null;\n }\n getReservedAmountPrice(priceId) {\n return this.reservedPrices.get(priceId) || 0;\n }\n getReservedAmountOption(optionId) {\n return this.reservedOptions.get(optionId) || 0;\n }\n static createDefault(product, cart, webshop, data) {\n // Return the first that still has stock or the first if none has stock\n const options = [];\n // Fill in all default options here\n for (const optionMenu of product.optionMenus) {\n if (optionMenu.multipleChoice) {\n continue;\n }\n let cartItemOption = null;\n // Add first option with remaining stock\n for (const option of optionMenu.options) {\n const stock = CartStockHelper.getOptionStock({ product, option, oldItem: null, cart, webshop, admin: data.admin });\n if (!stock || stock.remaining === null || stock.remaining > 0) {\n cartItemOption = CartItemOption.create({\n option,\n optionMenu,\n });\n break;\n }\n }\n // Add (default if no stock for all)\n options.push(cartItemOption !== null && cartItemOption !== void 0 ? cartItemOption : CartItemOption.create({\n option: optionMenu.options[0],\n optionMenu,\n }));\n }\n const prices = product.filteredPrices(data);\n let chosenPrice = null;\n for (const productPrice of prices) {\n const stock = CartStockHelper.getPriceStock({ product, productPrice, oldItem: null, cart, webshop, admin: data.admin });\n if (!stock || stock.remaining === null || stock.remaining > 0) {\n chosenPrice = productPrice;\n break;\n }\n }\n // Default\n return CartItem.create({\n product: product,\n productPrice: chosenPrice !== null && chosenPrice !== void 0 ? chosenPrice : product.filteredPrices(data)[0],\n options,\n });\n }\n static create(object) {\n const c = super.create(object);\n // Fill in all default options here\n for (const optionMenu of c.product.optionMenus) {\n if (optionMenu.multipleChoice) {\n continue;\n }\n if (c.options.find(o => o.optionMenu.id === optionMenu.id)) {\n continue;\n }\n c.options.push(CartItemOption.create({\n option: optionMenu.options[0],\n optionMenu: optionMenu,\n }));\n }\n return c;\n }\n /**\n * Unique identifier to check if two cart items are the same\n */\n get code() {\n return this.codeWithoutFields + '.' + this.fieldAnswers.map(a => a.field.id + '-' + Formatter.slug(a.answer)).join('.');\n }\n get codeWithoutFields() {\n return this.product.id + '.' + this.productPrice.id + '.' + this.options.map(o => o.option.id).join('.');\n }\n /**\n * Return total amount of same product in the given cart. Always includes the current item, even when it isn't in the cart. Doesn't count it twice\n */\n getTotalAmount(cart) {\n return cart.items.reduce((c, item) => {\n if (item.product.id !== this.product.id) {\n return c;\n }\n if (item.id === this.id) {\n return c;\n }\n return c + item.amount;\n }, 0) + this.amount;\n }\n /**\n * Note: this resets any discounts that are applied to the cart item\n */\n calculatePrices(cart) {\n const prices = [];\n const unitPrice = this.calculateUnitPrice(cart);\n for (const seat of this.seats) {\n const seatPrice = unitPrice + seat.price;\n prices.push(CartItemPrice.create({\n price: seatPrice,\n }));\n }\n // Others (non seats)\n const remaining = this.amount - this.seats.length;\n if (remaining > 0) {\n for (let index = 0; index < remaining; index++) {\n prices.push(CartItemPrice.create({\n price: unitPrice,\n }));\n }\n }\n this.calculatedPrices = prices;\n }\n calculateUnitPrice(cart) {\n const amount = this.getTotalAmount(cart);\n let price = this.productPrice.price;\n if (this.productPrice.discountPrice !== null && amount >= this.productPrice.discountAmount) {\n price = this.productPrice.discountPrice;\n }\n for (const option of this.options) {\n price += option.option.price;\n }\n if (this.productPrice.price >= 0) {\n this.unitPrice = Math.max(0, price);\n }\n else {\n // Allow negative\n this.unitPrice = price;\n }\n return this.unitPrice;\n }\n /**\n * @deprecated\n * Use this method if you need temporary prices in case it is not yet calculated\n */\n getUnitPrice(cart) {\n if (this.unitPrice) {\n return this.unitPrice;\n }\n return this.calculateUnitPrice(cart);\n }\n getPriceWithDiscounts() {\n return this.calculatedPrices.reduce((a, b) => a + b.discountedPrice, 0);\n }\n getPriceWithoutDiscounts() {\n return this.calculatedPrices.reduce((a, b) => a + b.price, 0);\n }\n /**\n * @deprecated: use other systems\n * Prices that are only applicable to some amount, but not all (e.g. seat extra prices)\n */\n getPartialExtraPrice(cart) {\n const unitPrice = this.getUnitPrice(cart);\n const expectedPrice = unitPrice * this.amount;\n const actualPrice = this.getPriceWithoutDiscounts();\n return actualPrice - expectedPrice;\n }\n /**\n * @deprecated use getPriceWithDiscounts instead for clarity\n */\n getPrice() {\n return this.getPriceWithDiscounts();\n }\n getUnitPriceCombinationsWithoutDiscount() {\n const priceCombinations = new Map();\n for (const calculatedPrice of this.calculatedPrices) {\n const price = calculatedPrice.price;\n priceCombinations.set(price, (priceCombinations.get(price) || 0) + 1);\n }\n return priceCombinations;\n }\n getUnitPriceCombinationsWithDiscount() {\n const priceCombinations = new Map();\n for (const calculatedPrice of this.calculatedPrices) {\n const price = calculatedPrice.discountedPrice;\n priceCombinations.set(price, (priceCombinations.get(price) || 0) + 1);\n }\n return priceCombinations;\n }\n get formattedAmount() {\n if (!this.product.allowMultiple) {\n return '';\n }\n return Formatter.integer(this.amount);\n }\n /**\n * Without discounts\n */\n getFormattedPriceWithoutDiscount() {\n // Group by seats\n const priceCombinations = this.getUnitPriceCombinationsWithoutDiscount();\n return this.priceCombinationToString(priceCombinations);\n }\n getFormattedPriceWithDiscount() {\n const price = this.getPriceWithDiscounts();\n if (price === this.getPriceWithoutDiscounts()) {\n return null;\n }\n const priceCombinations = this.getUnitPriceCombinationsWithDiscount();\n return this.priceCombinationToString(priceCombinations);\n }\n priceCombinationToString(priceCombinations) {\n // Sort by price\n const sorted = [...priceCombinations.entries()].map(([price, amount]) => ({ price, amount })).sort((a, b) => b.price - a.price);\n // Format\n const parts = [];\n for (const { price, amount } of sorted) {\n if (parts.length > 0 || price < 0) {\n if (price >= 0) {\n parts.push('+');\n }\n else {\n parts.push('-');\n }\n }\n if (!this.product.allowMultiple && amount === 1) {\n parts.push(Formatter.price(Math.abs(price)));\n continue;\n }\n if (price === 0) {\n if (sorted.length === 1) {\n parts.push('Gratis');\n }\n else {\n parts.push(amount + ' gratis');\n }\n }\n else {\n if (sorted.length === 1 || amount === 1) {\n if (amount > 1) {\n parts.push(Formatter.price(Math.abs(price)) + ' / stuk');\n }\n else {\n parts.push(Formatter.price(Math.abs(price)));\n }\n }\n else {\n parts.push(amount + ' × ' + Formatter.price(Math.abs(price)));\n }\n }\n }\n return parts.join(' ');\n }\n /**\n * Used for statistics\n */\n get descriptionWithoutFields() {\n const descriptions = [];\n if (this.product.prices.length > 1) {\n descriptions.push(this.productPrice.name);\n }\n for (const option of this.options) {\n descriptions.push(option.option.name);\n }\n if ((this.product.type === ProductType.Ticket || this.product.type === ProductType.Voucher) && this.product.dateRange) {\n descriptions.unshift(Formatter.capitalizeFirstLetter(this.product.dateRange.toString()));\n }\n return descriptions.filter(d => !!d).join('\\n');\n }\n get descriptionWithoutDate() {\n const descriptions = [];\n if (this.product.prices.length > 1) {\n descriptions.push(this.productPrice.name);\n }\n for (const option of this.options) {\n descriptions.push(option.option.name);\n }\n for (const a of this.fieldAnswers) {\n if (!a.answer) {\n continue;\n }\n descriptions.push(a.field.name + ': ' + a.answer);\n }\n return descriptions.filter(d => !!d).join('\\n');\n }\n get description() {\n const descriptions = [this.descriptionWithoutDate];\n if ((this.product.type === ProductType.Ticket || this.product.type === ProductType.Voucher) && this.product.dateRange) {\n descriptions.unshift(Formatter.capitalizeFirstLetter(this.product.dateRange.toString()));\n }\n return descriptions.filter(d => !!d).join('\\n');\n }\n validateAnswers() {\n const newAnswers = [];\n for (const field of this.product.customFields) {\n const answer = this.fieldAnswers.find(a => a.field.id === field.id);\n try {\n if (!answer) {\n const a = WebshopFieldAnswer.create({ field, answer: '' });\n a.validate();\n newAnswers.push(a);\n }\n else {\n answer.field = field;\n answer.validate();\n newAnswers.push(answer);\n }\n }\n catch (e) {\n if (isSimpleError(e) || isSimpleErrors(e)) {\n e.addNamespace('fieldAnswers.' + field.id);\n }\n throw e;\n }\n }\n this.fieldAnswers = newAnswers;\n }\n /**\n * Update self to the newest available data, and throw error if something failed (only after refreshing other ones)\n */\n refresh(webshop) {\n const errors = new SimpleErrors();\n const product = webshop.products.find(p => p.id === this.product.id);\n if (!product) {\n errors.addError(new SimpleError({\n code: 'product_unavailable',\n message: 'Product unavailable',\n human: this.product.name + ' is niet meer beschikbaar',\n }));\n }\n else {\n this.product = product;\n const productPrice = product.prices.find(p => p.id === this.productPrice.id);\n if (!productPrice) {\n if ((this.productPrice.name.length === 0 || this.product.prices.length <= 1) && product.prices.length > 1) {\n errors.addError(new SimpleError({\n code: 'product_price_unavailable',\n message: 'Product price unavailable',\n human: 'Er werden keuzemogelijkheden toegevoegd aan ' + this.product.name + ', waar je nu eerst moet uit kiezen.',\n }));\n }\n else {\n errors.addError(new SimpleError({\n code: 'product_price_unavailable',\n message: 'Product price unavailable',\n human: \"De keuzemogelijkheid '\" + this.productPrice.name + \"' van \" + this.product.name + ' is niet meer beschikbaar. Kies een andere.',\n }));\n }\n }\n else {\n // Only set product if we did find our product price\n this.productPrice = productPrice;\n }\n // Check all options\n const remainingMenus = this.product.optionMenus.slice();\n for (const o of this.options) {\n let index = remainingMenus.findIndex(m => m.id === o.optionMenu.id);\n if (index === -1) {\n // Check if it has a multiple choice one\n index = this.product.optionMenus.findIndex(m => m.id === o.optionMenu.id);\n errors.addError(new SimpleError({\n code: 'option_menu_unavailable',\n message: 'Option menu unavailable',\n human: 'Eén of meerdere keuzemogelijkheden van ' + this.product.name + ' zijn niet meer beschikbaar',\n }));\n continue;\n }\n const menu = remainingMenus[index];\n if (!menu.multipleChoice) {\n // Already used: not possible to add another\n remainingMenus.splice(index, 1);\n }\n const option = menu.options.find(m => m.id === o.option.id);\n if (!option) {\n errors.addError(new SimpleError({\n code: 'option_unavailable',\n message: 'Option unavailable',\n human: 'Eén of meerdere keuzemogelijkheden van ' + this.product.name + ' zijn niet meer beschikbaar',\n }));\n continue;\n }\n // Update to latest data\n o.optionMenu = menu;\n o.option = option;\n }\n if (remainingMenus.filter(m => !m.multipleChoice).length > 0) {\n errors.addError(new SimpleError({\n code: 'missing_menu',\n message: \"Missing menu's \" + remainingMenus.filter(m => !m.multipleChoice).map(m => m.name).join(', '),\n human: 'Er zijn nieuwe keuzemogelijkheden voor ' + this.product.name + ' waaruit je moet kiezen',\n }));\n }\n }\n try {\n this.validateAnswers();\n }\n catch (e) {\n if (isSimpleError(e) || isSimpleErrors(e)) {\n errors.addError(e);\n }\n else {\n throw e;\n }\n }\n errors.throwIfNotEmpty();\n }\n getFixedStockDefinitions(oldItem, cart, webshop, admin) {\n return CartStockHelper.getFixedStockDefinitions({ oldItem, cart, product: this.product, webshop, admin, amount: this.amount });\n }\n /**\n * Return all the stock definitions for this cart item with the currently selected options\n * = calculate how much you can order with these options\n */\n getAvailableStock(oldItem, cart, webshop, admin) {\n return CartStockHelper.getAvailableStock({ oldItem, cart, product: this.product, webshop, admin, amount: this.amount, productPrice: this.productPrice, options: this.options });\n }\n getMaximumRemaining(oldItem, cart, webshop, admin) {\n return CartStockHelper.getRemaining(this.getAvailableStock(oldItem, cart, webshop, admin));\n }\n /**\n * Update self to the newest available data and throw if it was not able to recover\n */\n validate(webshop, cart, { refresh, admin, validateSeats } = { refresh: true, admin: false, validateSeats: true }) {\n this.cartError = null;\n if (admin === undefined) {\n admin = false;\n }\n if (refresh === undefined) {\n refresh = true;\n }\n if (validateSeats === undefined) {\n validateSeats = true;\n }\n if (refresh) {\n this.refresh(webshop);\n }\n const product = this.product;\n if (!product.allowMultiple) {\n this.amount = 1;\n }\n // Check stock\n if (!admin) {\n if (!product.isEnabled && this.amount > this.reservedAmount) {\n throw new SimpleError({\n code: 'product_unavailable',\n message: 'Product unavailable',\n human: this.product.name + ' is niet meer beschikbaar',\n });\n }\n if (this.productPrice.hidden) {\n throw new SimpleError({\n code: 'product_price_unavailable',\n message: 'Product price unavailable',\n human: this.productPrice.name + ' is niet meer beschikbaar',\n });\n }\n if (product.isSoldOut && this.amount > this.reservedAmount) {\n throw new SimpleError({\n code: 'product_unavailable',\n message: 'Product unavailable',\n human: this.product.name + ' is uitverkocht',\n });\n }\n const remaining = this.getAvailableStock(this, cart, webshop, admin);\n const minimumRemaining = CartStockHelper.getRemaining(remaining);\n if (minimumRemaining !== null && minimumRemaining < this.amount) {\n // Search for appropriate message in stock definitions\n const stockDefinition = remaining.find(r => r.remaining === minimumRemaining);\n throw new SimpleError({\n code: 'product_unavailable',\n message: 'Product unavailable',\n human: (stockDefinition === null || stockDefinition === void 0 ? void 0 : stockDefinition.text) || 'Er zijn nog maar ' + minimumRemaining + ' stuks beschikbaar van ' + this.product.name,\n meta: { recoverable: minimumRemaining > 0 },\n });\n }\n }\n if (this.product.seatingPlanId && validateSeats) {\n const seatingPlan = webshop.meta.seatingPlans.find(s => s.id === this.product.seatingPlanId);\n if (!seatingPlan) {\n throw new SimpleError({\n code: 'seating_plan_unavailable',\n message: 'Invalid seating plan',\n human: 'Het zaalplan van ' + this.product.name + ' is niet meer beschikbaar. Herlaad de pagina en probeer opnieuw. Neem contact met ons op als het probleem zich herhaalt.',\n });\n }\n // Check seats taken already?\n const reservedSeats = this.product.reservedSeats;\n // Remove invalid seats\n const invalidSeats = this.seats.filter((s) => {\n const valid = seatingPlan.isValidSeat(s, reservedSeats, this.reservedSeats);\n if (valid) {\n return false;\n }\n else {\n if (!admin && seatingPlan.isAdminSeat(s)) {\n return false;\n }\n return true;\n }\n });\n if (invalidSeats.length) {\n throw new SimpleError({\n code: 'seats_unavailable',\n message: 'Seats unavailable',\n human: 'De volgende plaatsen zijn niet meer beschikbaar: ' + invalidSeats.map(s => s.getNameString(webshop, this.product)).join(', '),\n meta: { recoverable: true },\n });\n }\n // Seating validation\n if (this.seats.length !== this.amount) {\n if (this.seats.length > this.amount) {\n // We need to handle this, because this can be caused by a stock limit\n throw new SimpleError({\n code: 'invalid_seats',\n message: 'Invalid seats',\n human: `Kies ${Formatter.pluralText(this.amount, 'plaats', 'plaatsen')}`,\n meta: { recoverable: true },\n });\n }\n throw new SimpleError({\n code: 'invalid_seats',\n message: 'Invalid seats',\n human: `Kies nog ${Formatter.pluralText(this.amount - this.seats.length, 'plaats', 'plaatsen')}`,\n meta: { recoverable: true },\n });\n }\n // Check other cart items have same seats\n const otherItems = cart.items.filter(i => i.product.id === this.product.id && i.id !== this.id);\n for (const item of otherItems) {\n for (const seat of item.seats) {\n if (this.seats.find(s => s.equals(seat))) {\n throw new SimpleError({\n code: 'seats_unavailable',\n message: 'Seats unavailable',\n human: 'De volgende plaatsen heb je twee keer gekozen: ' + seat.getNameString(webshop, this.product),\n });\n }\n }\n }\n // Adjust seats automatically if enabled\n if (seatingPlan.requireOptimalReservation && !admin) {\n const otherSeats = cart.items.filter(i => i.product.id === this.product.id && i.id !== this.id).flatMap(i => i.seats);\n const adjusted = seatingPlan.adjustSeatsForBetterFit(this.seats, [...reservedSeats, ...otherSeats], this.reservedSeats);\n if (adjusted) {\n this.seats = adjusted.map(a => CartReservedSeat.create(a));\n }\n // Edge case: if seats are not optimal across multiple items, we can't fix it\n const adjusted2 = seatingPlan.adjustSeatsForBetterFit([...this.seats, ...otherSeats], reservedSeats, this.reservedSeats);\n if (adjusted2) {\n // Not able to correct this across multiple items\n throw new SimpleError({\n code: 'select_connected_seats',\n message: 'Select connected seats',\n human: 'Pas de plaatsen aan zodat ze aansluiten en geen enkele plaatsen openlaten.',\n meta: { recoverable: true },\n });\n }\n }\n // Update prices\n for (const seat of this.seats) {\n seat.calculatePrice(seatingPlan);\n }\n }\n // Update prices\n // should now happen in the checkout so discounts are in sync\n // this.calculateUnitPrice(cart)\n }\n}\n__decorate([\n field({ decoder: StringDecoder, defaultValue: () => uuidv4(), version: 106, upgrade: function () {\n // Warning: this id will always be too long for storage in a normal database record.\n // But that is not a problem, since only new orders will use tickets that need this field\n return this.code;\n } })\n], CartItem.prototype, \"id\", void 0);\n__decorate([\n field({ decoder: Product })\n], CartItem.prototype, \"product\", void 0);\n__decorate([\n field({ decoder: ProductPrice })\n], CartItem.prototype, \"productPrice\", void 0);\n__decorate([\n field({ decoder: new ArrayDecoder(CartItemOption) })\n], CartItem.prototype, \"options\", void 0);\n__decorate([\n field({ decoder: new ArrayDecoder(WebshopFieldAnswer), version: 94 })\n], CartItem.prototype, \"fieldAnswers\", void 0);\n__decorate([\n field({ decoder: new ArrayDecoder(CartReservedSeat), version: 212 })\n], CartItem.prototype, \"seats\", void 0);\n__decorate([\n field({ decoder: IntegerDecoder })\n], CartItem.prototype, \"amount\", void 0);\n__decorate([\n field({ decoder: new ArrayDecoder(ProductDiscountSettings), version: 237, optional: true })\n], CartItem.prototype, \"discounts\", void 0);\n__decorate([\n field({ decoder: IntegerDecoder, version: 115 })\n], CartItem.prototype, \"reservedAmount\", void 0);\n__decorate([\n field({ decoder: new MapDecoder(StringDecoder, IntegerDecoder), version: 224 })\n], CartItem.prototype, \"reservedOptions\", void 0);\n__decorate([\n field({ decoder: new MapDecoder(StringDecoder, IntegerDecoder), version: 224 })\n], CartItem.prototype, \"reservedPrices\", void 0);\n__decorate([\n field({ decoder: new ArrayDecoder(CartReservedSeat), version: 213 })\n], CartItem.prototype, \"reservedSeats\", void 0);\n__decorate([\n field({ decoder: IntegerDecoder, nullable: true, version: 107 })\n], CartItem.prototype, \"unitPrice\", void 0);\n__decorate([\n field({ decoder: new ArrayDecoder(CartItemPrice), version: 236, upgrade: function () {\n var _a;\n const prices = [];\n const unitPrice = (_a = this.unitPrice) !== null && _a !== void 0 ? _a : 0;\n for (const seat of this.seats) {\n const seatPrice = unitPrice + seat.price;\n prices.push(CartItemPrice.create({\n price: seatPrice,\n }));\n }\n // Others (non seats)\n const remaining = this.amount - this.seats.length;\n if (remaining > 0) {\n for (let index = 0; index < remaining; index++) {\n prices.push(CartItemPrice.create({\n price: unitPrice,\n }));\n }\n }\n return prices;\n } })\n], CartItem.prototype, \"calculatedPrices\", void 0);\n//# sourceMappingURL=CartItem.js.map","import { __decorate } from \"tslib\";\nimport { ArrayDecoder, AutoEncoder, field } from '@simonbackx/simple-encoding';\nimport { isSimpleError, isSimpleErrors, SimpleErrors } from '@simonbackx/simple-errors';\nimport { ProductType } from './Product';\nimport { CartItem } from './CartItem';\nexport class Cart extends AutoEncoder {\n constructor() {\n super(...arguments);\n this.items = [];\n }\n clear() {\n this.items = [];\n }\n addItem(item, allowMerge = true) {\n if (item.amount === 0) {\n return;\n }\n const c = item.code;\n for (const i of this.items) {\n if (i.code === c && allowMerge) {\n i.amount += item.amount;\n i.seats.push(...item.seats);\n return;\n }\n }\n this.items.push(item);\n }\n removeItem(item) {\n const c = item.code;\n for (const [index, i] of this.items.entries()) {\n if (i.code === c) {\n this.items.splice(index, 1);\n return;\n }\n }\n }\n replaceItem(old, item) {\n // First check if code is already used\n const c = item.code;\n const oldCode = old.code;\n for (const i of this.items) {\n if (i.code === c && i.code !== oldCode) {\n i.amount += item.amount;\n i.seats.push(...item.seats);\n this.removeItem(old);\n return;\n }\n }\n for (const [index, i] of this.items.entries()) {\n if (i.code === oldCode) {\n this.items.splice(index, 1, item);\n return;\n }\n }\n if (item.amount === 0) {\n return;\n }\n this.removeItem(old);\n this.addItem(item);\n }\n /**\n * @deprecated\n * Be careful when to use the price with and without discounts\n */\n get price() {\n return this.priceWithDiscounts;\n }\n get priceWithDiscounts() {\n return Math.max(0, this.items.reduce((c, item) => c + item.getPriceWithDiscounts(), 0));\n }\n get priceWithoutDiscounts() {\n return Math.max(0, this.items.reduce((c, item) => c + item.getPriceWithoutDiscounts(), 0));\n }\n get count() {\n return this.items.reduce((c, item) => c + item.amount, 0);\n }\n get persons() {\n return this.items.reduce((sum, item) => sum + (item.product.type === ProductType.Person ? item.amount : 0), 0);\n }\n /**\n * Refresh all items with the newest data, throw if something failed (at the end)\n */\n refresh(webshop) {\n const errors = new SimpleErrors();\n for (const item of this.items) {\n try {\n item.refresh(webshop);\n }\n catch (e) {\n if (isSimpleError(e) || isSimpleErrors(e)) {\n errors.addError(e);\n }\n else {\n throw e;\n }\n }\n }\n errors.throwIfNotEmpty();\n }\n validate(webshop, asAdmin = false) {\n var _a;\n const newItems = [];\n const errors = new SimpleErrors();\n for (const item of this.items) {\n try {\n item.validate(webshop, this, {\n refresh: true,\n admin: asAdmin,\n });\n newItems.push(item);\n if (!webshop.meta.cartEnabled) {\n break;\n }\n }\n catch (e) {\n if (isSimpleError(e) || isSimpleErrors(e)) {\n e.addNamespace('cart');\n errors.addError(e);\n }\n else {\n throw e;\n }\n if (isSimpleError(e) && ((_a = e.meta) === null || _a === void 0 ? void 0 : _a.recoverable)) {\n item.cartError = e;\n newItems.push(item);\n if (!webshop.meta.cartEnabled) {\n break;\n }\n }\n }\n }\n this.items = newItems;\n errors.throwIfNotEmpty();\n }\n}\n__decorate([\n field({ decoder: new ArrayDecoder(CartItem) })\n], Cart.prototype, \"items\", void 0);\n//# sourceMappingURL=Cart.js.map","import { __decorate } from \"tslib\";\nimport { AutoEncoder, field, StringDecoder } from '@simonbackx/simple-encoding';\nexport class Customer extends AutoEncoder {\n constructor() {\n super(...arguments);\n this.firstName = '';\n this.lastName = '';\n this.email = '';\n this.phone = '';\n }\n get name() {\n if (this.lastName === '') {\n return this.firstName;\n }\n if (this.firstName === '') {\n return this.lastName;\n }\n return this.firstName + ' ' + this.lastName;\n }\n}\n__decorate([\n field({ decoder: StringDecoder })\n], Customer.prototype, \"firstName\", void 0);\n__decorate([\n field({ decoder: StringDecoder })\n], Customer.prototype, \"lastName\", void 0);\n__decorate([\n field({ decoder: StringDecoder })\n], Customer.prototype, \"email\", void 0);\n__decorate([\n field({ decoder: StringDecoder })\n], Customer.prototype, \"phone\", void 0);\n//# sourceMappingURL=Customer.js.map","import { __decorate } from \"tslib\";\nimport { AutoEncoder, field, StringDecoder } from '@simonbackx/simple-encoding';\nimport { Formatter } from '@stamhoofd/utility';\nimport { Address, ValidatedAddress } from '../addresses/Address';\nimport { Country } from '../addresses/CountryDecoder';\nimport { BalanceItem, BalanceItemRelation, BalanceItemRelationType } from '../BalanceItem';\nimport { BalanceItemPaymentDetailed } from '../BalanceItemDetailed';\nimport { STPackageType, STPackageTypeHelper } from '../billing/STPackage';\nimport { Payment } from '../members/Payment';\nimport { PaymentGeneral } from '../members/PaymentGeneral';\nimport { Organization } from '../Organization';\nimport { OrganizationMetaData } from '../OrganizationMetaData';\nimport { OrganizationType } from '../OrganizationType';\nimport { PaymentMethod } from '../PaymentMethod';\nimport { Cart } from '../webshops/Cart';\nimport { CartItem, CartItemPrice } from '../webshops/CartItem';\nimport { Customer } from '../webshops/Customer';\nimport { Order, OrderData } from '../webshops/Order';\nimport { Product, ProductPrice } from '../webshops/Product';\nimport { TransferDescriptionType, TransferSettings } from '../webshops/TransferSettings';\nimport { WebshopPreview } from '../webshops/Webshop';\nimport { WebshopMetaData, WebshopTakeoutMethod, WebshopTimeSlot } from '../webshops/WebshopMetaData';\nexport class EditorSmartVariable extends AutoEncoder {\n constructor() {\n super(...arguments);\n this.description = null;\n }\n getJSONContent() {\n return { type: this.html ? 'smartVariableBlock' : 'smartVariable', attrs: { id: this.id } };\n }\n static forRecipient(recipient) {\n const replacements = [...recipient.replacements, ...recipient.getDefaultReplacements()];\n return this.all.map(v => v.clone()).filter((variable) => {\n const replacement = replacements.find(r => r.token === variable.id && (r.value.length > 0 || r.html !== undefined));\n if (!replacement) {\n // Not found\n return false;\n }\n else {\n if (replacement.html) {\n variable.html = replacement.html;\n }\n if (variable.html === undefined && replacement.value) {\n variable.example = replacement.value;\n }\n }\n return true;\n });\n }\n static get all() {\n const exampleRegistrationPayment = PaymentGeneral.create({\n id: '',\n method: PaymentMethod.Transfer,\n transferDescription: '+++111/111/111+++',\n price: 1500,\n transferSettings: TransferSettings.create({\n type: TransferDescriptionType.Structured,\n iban: 'BE1234 1234 1234',\n creditor: 'Demovereniging',\n }),\n createdAt: new Date(),\n updatedAt: new Date(),\n balanceItemPayments: [\n BalanceItemPaymentDetailed.create({\n price: 2500,\n balanceItem: BalanceItem.create({\n amount: 1,\n unitPrice: 2500,\n description: 'Inschrijving A',\n relations: new Map([\n [\n BalanceItemRelationType.Member,\n BalanceItemRelation.create({\n id: 'example-member-1',\n name: 'Jan Jansens',\n }),\n ],\n ]),\n }),\n }),\n BalanceItemPaymentDetailed.create({\n price: 3000,\n balanceItem: BalanceItem.create({\n amount: 1,\n unitPrice: 3000,\n description: 'Inschrijving B',\n relations: new Map([\n [\n BalanceItemRelationType.Member,\n BalanceItemRelation.create({\n id: 'example-member-2',\n name: 'Peter Jansens',\n }),\n ],\n ]),\n }),\n }),\n ],\n });\n const variables = [\n EditorSmartVariable.create({\n id: 'firstName',\n name: 'Voornaam',\n example: '',\n deleteMessage: 'De voornaam van één of meerdere ontvangers ontbreekt in het systeem. De magische tekstvervanging voor de voornaam is daarom weggehaald.',\n }),\n EditorSmartVariable.create({\n id: 'lastName',\n name: 'Achternaam',\n example: '',\n deleteMessage: 'De achternaam van één of meerdere ontvangers ontbreekt in het systeem. De magische tekstvervanging voor de achteraam is daarom weggehaald.',\n }),\n EditorSmartVariable.create({\n id: 'email',\n name: 'E-mailadres',\n example: '',\n }),\n EditorSmartVariable.create({\n id: 'firstNameMember',\n name: 'Voornaam van lid',\n example: '',\n deleteMessage: 'Je kan de voornaam van een lid enkel gebruiken als je één e-mail per lid verstuurt.',\n }),\n EditorSmartVariable.create({\n id: 'lastNameMember',\n name: 'Achternaam van lid',\n example: '',\n deleteMessage: 'Je kan de achternaam van een lid enkel gebruiken als je één e-mail per lid verstuurt.',\n }),\n EditorSmartVariable.create({\n id: 'inviterName',\n name: 'Naam van uitnodiger',\n example: 'Iemand',\n }),\n EditorSmartVariable.create({\n id: 'platformOrOrganizationName',\n name: 'Naam van de vereniging of van het platform',\n example: 'Demovereniging',\n }),\n EditorSmartVariable.create({\n id: 'greeting',\n name: 'Begroeting',\n example: 'Dag John,',\n }),\n EditorSmartVariable.create({\n id: 'outstandingBalance',\n name: 'Openstaand bedrag',\n example: '',\n deleteMessage: 'Je kan het openstaand bedrag van een lid enkel gebruiken als je één e-mail per lid verstuurt.',\n }),\n EditorSmartVariable.create({\n id: 'registerUrl',\n name: 'Inschrijvingsportaal link',\n example: 'https://inschrijven.mijnvereniging.be',\n }),\n EditorSmartVariable.create({\n id: 'resetUrl',\n name: 'Voluit link om wachtwoord te herstellen',\n example: 'https://www.voorbeeld.com/heel-lange-code-waarmee-de-link-beveiligd-wordt',\n }),\n EditorSmartVariable.create({\n id: 'confirmEmailCode',\n name: 'Code om e-mail te bevestigen',\n example: '000 000',\n }),\n EditorSmartVariable.create({\n id: 'loginDetails',\n name: 'Inloggegevens',\n example: '',\n html: `

Je kan op het ledenportaal inloggen met ${Formatter.escapeHtml('voorbeeld@email.com')}

`,\n hint: 'Deze tekst wijzigt afhankelijk van de situatie: als de ontvanger nog geen account heeft, vertelt het op welk e-mailadres de ontvanger kan registreren. In het andere geval op welk e-mailadres de ontvanger kan inloggen.',\n }),\n EditorSmartVariable.create({\n id: 'groupName',\n name: 'Groepnaam',\n example: 'Kapoenen',\n }),\n EditorSmartVariable.create({\n id: 'mailDomain',\n name: 'E-maildomeinnaam',\n example: 'vereniging.com',\n }),\n ];\n // if (this.orders.length > 0) {\n variables.push(EditorSmartVariable.create({\n id: 'nr',\n name: 'Bestelnummer',\n example: '',\n }));\n variables.push(EditorSmartVariable.create({\n id: 'orderPrice',\n name: 'Bestelbedrag',\n example: '',\n }));\n variables.push(EditorSmartVariable.create({\n id: 'orderStatus',\n name: 'Bestelstatus',\n example: '',\n }));\n variables.push(EditorSmartVariable.create({\n id: 'orderTime',\n name: 'Tijdstip',\n example: '',\n }));\n variables.push(EditorSmartVariable.create({\n id: 'orderDate',\n name: 'Afhaal/leverdatum',\n example: '',\n }));\n variables.push(EditorSmartVariable.create({\n id: 'orderMethod',\n name: 'Afhaalmethode (afhalen, leveren, ter plaatse)',\n example: '',\n }));\n variables.push(EditorSmartVariable.create({\n id: 'orderLocation',\n name: 'Locatie of leveradres',\n example: '',\n }));\n variables.push(EditorSmartVariable.create({\n id: 'paymentMethod',\n name: 'Betaalmethode',\n example: '',\n }));\n variables.push(EditorSmartVariable.create({\n id: 'priceToPay',\n name: 'Te betalen bedrag',\n example: '',\n }));\n variables.push(EditorSmartVariable.create({\n id: 'pricePaid',\n name: 'Betaald bedrag',\n example: '',\n }));\n variables.push(EditorSmartVariable.create({\n id: 'transferDescription',\n name: 'Mededeling (overschrijving)',\n example: '',\n }));\n variables.push(EditorSmartVariable.create({\n id: 'transferBankAccount',\n name: 'Rekeningnummer (overschrijving)',\n example: '',\n }));\n variables.push(EditorSmartVariable.create({\n id: 'transferBankCreditor',\n name: 'Begunstigde (overschrijving)',\n example: '',\n }));\n variables.push(EditorSmartVariable.create({\n id: 'orderTable',\n name: 'Tabel met bestelde artikels',\n example: 'order table',\n html: '',\n }));\n variables.push(EditorSmartVariable.create({\n id: 'overviewTable',\n name: 'Overzichtstabel',\n example: 'overview table',\n html: exampleRegistrationPayment.getDetailsHTMLTable(),\n }));\n variables.push(EditorSmartVariable.create({\n id: 'orderDetailsTable',\n name: 'Tabel met bestelgegevens',\n example: 'order details table',\n html: '',\n }));\n variables.push(EditorSmartVariable.create({\n id: 'paymentTable',\n name: 'Tabel met betaalinstructies',\n example: 'payment table',\n html: '',\n }));\n variables.push(EditorSmartVariable.create({\n id: 'overviewContext',\n name: 'Betaalcontext',\n example: 'Inschrijving van ' + exampleRegistrationPayment.memberNames,\n }));\n variables.push(EditorSmartVariable.create({\n id: 'memberNames',\n name: 'Naam leden',\n example: exampleRegistrationPayment.memberNames,\n }));\n variables.push(EditorSmartVariable.create({\n id: 'organizationName',\n name: 'Naam vereniging',\n example: 'Demovereniging',\n }));\n variables.push(EditorSmartVariable.create({\n id: 'webshopName',\n name: 'Naam webshop',\n example: '',\n }));\n variables.push(EditorSmartVariable.create({\n id: 'validUntil',\n name: 'Geldig tot',\n example: Formatter.dateTime(new Date()),\n }));\n variables.push(EditorSmartVariable.create({\n id: 'validUntilDate',\n name: 'Geldig tot (datum)',\n example: Formatter.date(new Date()),\n }));\n variables.push(EditorSmartVariable.create({\n id: 'packageName',\n name: 'Pakketnaam',\n example: STPackageTypeHelper.getName(STPackageType.Members),\n }));\n fillSmartVariables(variables);\n return variables;\n }\n}\n__decorate([\n field({ decoder: StringDecoder })\n], EditorSmartVariable.prototype, \"id\", void 0);\n__decorate([\n field({ decoder: StringDecoder })\n], EditorSmartVariable.prototype, \"name\", void 0);\n__decorate([\n field({ decoder: StringDecoder, nullable: true })\n], EditorSmartVariable.prototype, \"description\", void 0);\n__decorate([\n field({ decoder: StringDecoder })\n], EditorSmartVariable.prototype, \"example\", void 0);\n__decorate([\n field({ decoder: StringDecoder, optional: true })\n], EditorSmartVariable.prototype, \"html\", void 0);\n__decorate([\n field({ decoder: StringDecoder, optional: true })\n], EditorSmartVariable.prototype, \"deleteMessage\", void 0);\n__decorate([\n field({ decoder: StringDecoder, optional: true })\n], EditorSmartVariable.prototype, \"hint\", void 0);\nfunction fillSmartVariables(variables) {\n const exampleOrder = Order.create({\n id: '',\n payment: Payment.create({\n id: '',\n method: PaymentMethod.Transfer,\n transferDescription: '+++111/111/111+++',\n price: 1500,\n transferSettings: TransferSettings.create({\n type: TransferDescriptionType.Structured,\n iban: 'BE1234 1234 1234',\n creditor: 'Demovereniging',\n }),\n createdAt: new Date(),\n updatedAt: new Date(),\n }),\n webshopId: '',\n number: 15,\n data: OrderData.create({\n customer: Customer.create({\n firstName: 'John',\n lastName: 'Doe',\n email: 'john@example.com',\n phone: '+32 479 45 71 52',\n }),\n timeSlot: WebshopTimeSlot.create({\n date: new Date(),\n startTime: 12 * 60,\n endTime: 13 * 60,\n }),\n checkoutMethod: WebshopTakeoutMethod.create({\n name: 'Bakkerij',\n address: Address.create({\n street: 'Demostraat',\n number: '12',\n postalCode: '9000',\n city: 'Gent',\n country: Country.Belgium,\n }),\n }),\n address: ValidatedAddress.create({\n street: 'Demostraat',\n number: '12',\n postalCode: '9000',\n city: 'Gent',\n country: Country.Belgium,\n cityId: '',\n parentCityId: null,\n provinceId: '',\n }),\n cart: Cart.create({\n items: [\n CartItem.create({\n product: Product.create({\n name: 'Voorbeeld product',\n }),\n productPrice: ProductPrice.create({\n price: 550,\n }),\n amount: 2,\n calculatedPrices: [CartItemPrice.create({\n price: 550,\n }), CartItemPrice.create({\n price: 550,\n })],\n }),\n CartItem.create({\n product: Product.create({\n name: 'Nog een voorbeeld product',\n }),\n productPrice: ProductPrice.create({\n price: 400,\n }),\n amount: 1,\n calculatedPrices: [CartItemPrice.create({\n price: 400,\n })],\n }),\n ],\n }),\n paymentMethod: PaymentMethod.CreditCard,\n }),\n });\n const recipient = exampleOrder.getEmailRecipient(Organization.create({\n name: 'Demovereniging',\n uri: 'demo',\n meta: OrganizationMetaData.create({\n type: OrganizationType.Other,\n defaultStartDate: new Date(),\n defaultEndDate: new Date(),\n }),\n address: Address.createDefault(Country.Belgium),\n }), WebshopPreview.create({\n meta: WebshopMetaData.create({\n name: 'Demowinkel',\n }),\n }));\n for (const replacement of [...recipient.replacements, ...recipient.getDefaultReplacements()]) {\n const variable = variables.find(v => v.id === replacement.token);\n if (variable) {\n if (replacement.html && (variable.html === undefined || variable.html.length == 0)) {\n variable.html = replacement.html;\n }\n if (variable.html === undefined) {\n variable.example = replacement.value;\n }\n }\n }\n}\n//# sourceMappingURL=EditorSmartVariable.js.map","import { __decorate } from \"tslib\";\nimport { ArrayDecoder, AutoEncoder, DateDecoder, field } from '@simonbackx/simple-encoding';\nimport { Formatter } from '@stamhoofd/utility';\nimport { Organization } from '../Organization';\nimport { User } from '../User';\nimport { EmailRecipient } from '../email/Email';\nimport { Replacement } from '../endpoints/EmailRequest';\nimport { memberWithRegistrationsBlobInMemoryFilterCompilers } from '../filters/inMemoryFilterDefinitions';\nimport { compileToInMemoryFilter } from '../filters/InMemoryFilter';\nimport { Member } from './Member';\nimport { MemberPlatformMembership } from './MemberPlatformMembership';\nimport { Registration } from './Registration';\nimport { MemberResponsibilityRecord } from './MemberResponsibilityRecord';\nexport class MemberWithRegistrationsBlob extends Member {\n constructor() {\n super(...arguments);\n this.registrations = [];\n this.users = [];\n this.responsibilities = [];\n this.platformMemberships = [];\n }\n doesMatchFilter(filter) {\n try {\n const compiledFilter = compileToInMemoryFilter(filter, memberWithRegistrationsBlobInMemoryFilterCompilers);\n return compiledFilter(this);\n }\n catch (e) {\n console.error('Error while compiling filter', e, filter);\n }\n return false;\n }\n outstandingBalanceFor(organizationId) {\n return this.registrations.filter(r => r.organizationId == organizationId).reduce((sum, r) => sum + (r.price - r.pricePaid), 0);\n }\n hasAccount(email) {\n return !!this.users.find(u => u.hasAccount && u.email === email);\n }\n getEmailRecipients(subtypes = null) {\n var _a;\n const recipients = [];\n const shared = [];\n shared.push(Replacement.create({\n token: 'firstNameMember',\n value: this.firstName,\n }));\n shared.push(Replacement.create({\n token: 'lastNameMember',\n value: (_a = this.details.lastName) !== null && _a !== void 0 ? _a : '',\n }));\n shared.push(Replacement.create({\n token: 'outstandingBalance',\n value: Formatter.price(this.outstandingBalance),\n }));\n const createLoginDetailsReplacement = (email) => {\n const formattedEmail = Formatter.escapeHtml(email);\n let suffix = '';\n if (this.details.securityCode) {\n suffix = ` De beveiligingscode voor ${Formatter.escapeHtml(this.firstName)} is ${Formatter.escapeHtml(Formatter.spaceString(this.details.securityCode, 4, '-'))}.`;\n }\n return Replacement.create({\n token: 'loginDetails',\n value: '',\n html: this.hasAccount(email) ? `

Je kan op het ledenportaal inloggen met ${formattedEmail}.${suffix}

` : `

Je kan op het ledenportaal een nieuw account aanmaken met het e-mailadres ${formattedEmail}, dan krijg je automatisch toegang tot alle bestaande gegevens.${suffix}

`,\n });\n };\n if (this.details.email && (subtypes === null || subtypes.includes('member'))) {\n recipients.push(EmailRecipient.create({\n firstName: this.details.firstName,\n lastName: this.details.lastName,\n email: this.details.email,\n replacements: [\n createLoginDetailsReplacement(this.details.email),\n ...shared,\n ],\n }));\n }\n if (subtypes === null || subtypes.includes('parents')) {\n for (const parent of this.details.parents) {\n if (parent.email) {\n recipients.push(EmailRecipient.create({\n firstName: parent.firstName,\n lastName: parent.lastName,\n email: parent.email,\n replacements: [\n createLoginDetailsReplacement(parent.email),\n ...shared,\n ],\n }));\n }\n }\n }\n if (subtypes && subtypes.includes('unverified')) {\n for (const unverifiedEmail of this.details.unverifiedEmails) {\n recipients.push(EmailRecipient.create({\n email: unverifiedEmail,\n replacements: [\n Replacement.create({\n token: 'email',\n value: unverifiedEmail.toLowerCase(),\n }),\n createLoginDetailsReplacement(unverifiedEmail),\n ...shared,\n ],\n }));\n }\n }\n return recipients;\n }\n}\n__decorate([\n field({ decoder: new ArrayDecoder(Registration) })\n], MemberWithRegistrationsBlob.prototype, \"registrations\", void 0);\n__decorate([\n field({ decoder: new ArrayDecoder(User), version: 32 })\n], MemberWithRegistrationsBlob.prototype, \"users\", void 0);\n__decorate([\n field({ decoder: new ArrayDecoder(MemberResponsibilityRecord), version: 263 })\n], MemberWithRegistrationsBlob.prototype, \"responsibilities\", void 0);\n__decorate([\n field({ decoder: new ArrayDecoder(MemberPlatformMembership), version: 270 })\n], MemberWithRegistrationsBlob.prototype, \"platformMemberships\", void 0);\nexport class MembersBlob extends AutoEncoder {\n constructor() {\n super(...arguments);\n this.members = [];\n this.organizations = [];\n /**\n * Timestamp on which the backend constructed this blob\n *\n * This is encoded, so it can be stored locally\n */\n this.receivedAt = new Date();\n }\n markReceivedFromBackend() {\n this.receivedAt = new Date();\n }\n get isStale() {\n return MembersBlob.lastPatchedMembersDate !== null && this.receivedAt < MembersBlob.lastPatchedMembersDate;\n }\n static markAllStale() {\n MembersBlob.lastPatchedMembersDate = new Date();\n }\n}\nMembersBlob.lastPatchedMembersDate = null;\n__decorate([\n field({ decoder: new ArrayDecoder(MemberWithRegistrationsBlob) })\n], MembersBlob.prototype, \"members\", void 0);\n__decorate([\n field({ decoder: new ArrayDecoder(Organization) })\n], MembersBlob.prototype, \"organizations\", void 0);\n__decorate([\n field({ decoder: DateDecoder, version: 329 })\n], MembersBlob.prototype, \"receivedAt\", void 0);\n//# sourceMappingURL=MemberWithRegistrationsBlob.js.map","import { __decorate } from \"tslib\";\nimport { AnyDecoder, AutoEncoder, DateDecoder, EnumDecoder, field, StringDecoder } from '@simonbackx/simple-encoding';\nimport { v4 as uuidv4 } from 'uuid';\nimport { EmailRecipientFilterType } from './Email';\nexport var EmailTemplateType;\n(function (EmailTemplateType) {\n /**\n * Template created by the user to send manually\n */\n EmailTemplateType[\"SavedMembersEmail\"] = \"SavedMembersEmail\";\n /**\n * Defaults\n */\n EmailTemplateType[\"DefaultMembersEmail\"] = \"DefaultMembersEmail\";\n //\n EmailTemplateType[\"MembersExpirationReminder\"] = \"MembersExpirationReminder\";\n EmailTemplateType[\"WebshopsExpirationReminder\"] = \"WebshopsExpirationReminder\";\n EmailTemplateType[\"SingleWebshopExpirationReminder\"] = \"SingleWebshopExpirationReminder\";\n EmailTemplateType[\"TrialWebshopsExpirationReminder\"] = \"TrialWebshopsExpirationReminder\";\n EmailTemplateType[\"TrialMembersExpirationReminder\"] = \"TrialMembersExpirationReminder\";\n EmailTemplateType[\"OrderNotification\"] = \"OrderNotification\";\n EmailTemplateType[\"RegistrationConfirmation\"] = \"RegistrationConfirmation\";\n EmailTemplateType[\"RegistrationTransferDetails\"] = \"RegistrationTransferDetails\";\n EmailTemplateType[\"OrderConfirmationOnline\"] = \"OrderConfirmationOnline\";\n EmailTemplateType[\"OrderConfirmationTransfer\"] = \"OrderConfirmationTransfer\";\n EmailTemplateType[\"OrderConfirmationPOS\"] = \"OrderConfirmationPOS\";\n EmailTemplateType[\"OrderReceivedTransfer\"] = \"OrderReceivedTransfer\";\n EmailTemplateType[\"OrderOnlinePaymentFailed\"] = \"OrderOnlinePaymentFailed\";\n /**\n * Tickets sent immediately after ordering\n */\n EmailTemplateType[\"TicketsConfirmation\"] = \"TicketsConfirmation\";\n /**\n * Order received, tickets will follow when we receive your payment\n */\n EmailTemplateType[\"TicketsConfirmationTransfer\"] = \"TicketsConfirmationTransfer\";\n /**\n * Order received, tickets sent, but need to get paid at entrance\n */\n EmailTemplateType[\"TicketsConfirmationPOS\"] = \"TicketsConfirmationPOS\";\n /**\n * Tickets sent after payment is received\n */\n EmailTemplateType[\"TicketsReceivedTransfer\"] = \"TicketsReceivedTransfer\";\n /**\n * Organization emails:\n */\n EmailTemplateType[\"OrganizationUnstableDNS\"] = \"OrganizationUnstableDNS\";\n EmailTemplateType[\"OrganizationInvalidDNS\"] = \"OrganizationInvalidDNS\";\n EmailTemplateType[\"OrganizationValidDNS\"] = \"OrganizationValidDNS\";\n EmailTemplateType[\"OrganizationStableDNS\"] = \"OrganizationStableDNS\";\n EmailTemplateType[\"OrganizationDNSSetupComplete\"] = \"OrganizationDNSSetupComplete\";\n // Drip emails\n EmailTemplateType[\"OrganizationDripWelcome\"] = \"OrganizationDripWelcome\";\n EmailTemplateType[\"OrganizationDripWebshopTrialCheckin\"] = \"OrganizationDripWebshopTrialCheckin\";\n EmailTemplateType[\"OrganizationDripMembersTrialCheckin\"] = \"OrganizationDripMembersTrialCheckin\";\n EmailTemplateType[\"OrganizationDripWebshopTrialExpired\"] = \"OrganizationDripWebshopTrialExpired\";\n EmailTemplateType[\"OrganizationDripMembersTrialExpired\"] = \"OrganizationDripMembersTrialExpired\";\n EmailTemplateType[\"OrganizationDripTrialExpiredReminder\"] = \"OrganizationDripTrialExpiredReminder\";\n EmailTemplateType[\"OrganizationDripWebshopNotRenewed\"] = \"OrganizationDripWebshopNotRenewed\";\n EmailTemplateType[\"OrganizationDripMembersNotRenewed\"] = \"OrganizationDripMembersNotRenewed\";\n /**\n * Exports\n */\n EmailTemplateType[\"ExcelExportSucceeded\"] = \"ExcelExportSucceeded\";\n EmailTemplateType[\"ExcelExportFailed\"] = \"ExcelExportFailed\";\n /**\n * User emails\n */\n EmailTemplateType[\"ForgotPasswordButNoAccount\"] = \"ForgotPasswordButNoAccount\";\n EmailTemplateType[\"ForgotPassword\"] = \"ForgotPassword\";\n EmailTemplateType[\"SignupAlreadyHasAccount\"] = \"SignupAlreadyHasAccount\";\n EmailTemplateType[\"VerifyEmail\"] = \"VerifyEmail\";\n EmailTemplateType[\"VerifyEmailWithoutCode\"] = \"VerifyEmailWithoutCode\";\n EmailTemplateType[\"AdminInvitation\"] = \"AdminInvitation\";\n EmailTemplateType[\"AdminInvitationNewUser\"] = \"AdminInvitationNewUser\";\n EmailTemplateType[\"DeleteAccountConfirmation\"] = \"DeleteAccountConfirmation\";\n})(EmailTemplateType || (EmailTemplateType = {}));\nexport class EmailTemplate extends AutoEncoder {\n constructor() {\n super(...arguments);\n this.organizationId = null;\n this.subject = '';\n this.type = EmailTemplateType.SavedMembersEmail;\n this.html = '';\n this.text = '';\n this.json = {};\n this.groupId = null;\n this.webshopId = null;\n this.createdAt = new Date();\n this.updatedAt = new Date();\n }\n static getDefaultForRecipient(type) {\n if (type === EmailRecipientFilterType.Members || type === EmailRecipientFilterType.MemberParents) {\n return EmailTemplateType.DefaultMembersEmail;\n }\n return null;\n }\n static isSavedEmail(type) {\n if (type === EmailTemplateType.SavedMembersEmail) {\n return true;\n }\n return false;\n }\n static getRecipientType(type) {\n if (type === EmailTemplateType.SavedMembersEmail) {\n return EmailRecipientFilterType.Members;\n }\n if (type === EmailTemplateType.DefaultMembersEmail) {\n return EmailRecipientFilterType.Members;\n }\n // Use custom getSupportedReplacementsForType for this type\n return null;\n }\n static getTypeTitle(type) {\n switch (type) {\n case EmailTemplateType.SavedMembersEmail: return 'Opgeslagen e-mail naar leden';\n case EmailTemplateType.DefaultMembersEmail: return 'Placeholder: Standaard e-mail naar leden';\n case EmailTemplateType.MembersExpirationReminder: return 'Billing: Herinnering verlopen pakket ledenadministratie';\n case EmailTemplateType.WebshopsExpirationReminder: return 'Billing: Herinnering verlopen pakket webshops';\n case EmailTemplateType.SingleWebshopExpirationReminder: return 'Billing: Herinnering verlopen pakket enkele webshop';\n case EmailTemplateType.TrialWebshopsExpirationReminder: return 'Billing: Herinnering verlopen proefperiode pakket webshops';\n case EmailTemplateType.TrialMembersExpirationReminder: return 'Billing: Herinnering verlopen proefperiode pakket ledenadministratie';\n case EmailTemplateType.OrderNotification: return 'Webshop: Bestelling notificatie voor beheerders';\n case EmailTemplateType.RegistrationConfirmation: return 'Inschrijvingen: Bevestiging';\n case EmailTemplateType.RegistrationTransferDetails: return 'Inschrijvingen: Betaalinstructies met overschrijving';\n case EmailTemplateType.OrderConfirmationOnline: return 'Webshop: Bestelling bevestiging online betaling';\n case EmailTemplateType.OrderConfirmationTransfer: return 'Webshop: Bestelling bevestiging overschrijving';\n case EmailTemplateType.OrderConfirmationPOS: return 'Webshop: Bestelling bevestiging betaling aan de kassa';\n case EmailTemplateType.OrderReceivedTransfer: return 'Webshop: Bestelling ontvangen overschrijving';\n case EmailTemplateType.OrderOnlinePaymentFailed: return 'Webshop: Online betaling mislukt';\n case EmailTemplateType.TicketsConfirmation: return 'Webshop: Tickets bevestiging';\n case EmailTemplateType.TicketsConfirmationTransfer: return 'Webshop: Tickets bevestiging overschrijving';\n case EmailTemplateType.TicketsConfirmationPOS: return 'Webshop: Tickets bevestiging betaling aan de kassa';\n case EmailTemplateType.TicketsReceivedTransfer: return 'Webshop: Tickets ontvangen overschrijving';\n case EmailTemplateType.OrganizationUnstableDNS: return 'DNS: instabiele DNS';\n case EmailTemplateType.OrganizationInvalidDNS: return 'DNS: ongeldige DNS';\n case EmailTemplateType.OrganizationValidDNS: return 'DNS: geldige DNS';\n case EmailTemplateType.OrganizationStableDNS: return 'DNS: stabiele DNS';\n case EmailTemplateType.OrganizationDNSSetupComplete: return 'DNS: DNS setup compleet';\n case EmailTemplateType.OrganizationDripWelcome: return 'Organisatie: drip welkom';\n case EmailTemplateType.OrganizationDripWebshopTrialCheckin: return 'Organisatie: drip webshop proefperiode checkin';\n case EmailTemplateType.OrganizationDripMembersTrialCheckin: return 'Organisatie: drip ledenadministratie proefperiode checkin';\n case EmailTemplateType.OrganizationDripWebshopTrialExpired: return 'Organisatie: drip webshop proefperiode verlopen';\n case EmailTemplateType.OrganizationDripMembersTrialExpired: return 'Organisatie: drip ledenadministratie proefperiode verlopen';\n case EmailTemplateType.OrganizationDripTrialExpiredReminder: return 'Organisatie: drip proefperiode verlopen reminder';\n case EmailTemplateType.OrganizationDripWebshopNotRenewed: return 'Organisatie: drip webshop niet verlengd';\n case EmailTemplateType.OrganizationDripMembersNotRenewed: return 'Organisatie: drip ledenadministratie niet verlengd';\n case EmailTemplateType.ExcelExportSucceeded: return 'Export: Excel export geslaagd';\n case EmailTemplateType.ExcelExportFailed: return 'Export: Excel export mislukt';\n case EmailTemplateType.SignupAlreadyHasAccount: return 'Registratie: account bestaat al';\n case EmailTemplateType.ForgotPasswordButNoAccount: return 'Wachtwoord vergeten: geen account';\n case EmailTemplateType.ForgotPassword: return 'Wachtwoord vergeten';\n case EmailTemplateType.DeleteAccountConfirmation: return 'Bevestiging account verwijderen';\n case EmailTemplateType.VerifyEmail: return 'Verifieer e-mailadres';\n case EmailTemplateType.VerifyEmailWithoutCode: return 'Verifieer e-mailadres zonder code';\n case EmailTemplateType.AdminInvitation: return 'Uitnodiging beheerder: bestaande gebruiker';\n case EmailTemplateType.AdminInvitationNewUser: return 'Uitnodiging beheerder: nieuwe gebruiker';\n }\n }\n static allowPlatformLevel(type) {\n if (STAMHOOFD.userMode === 'platform') {\n if (type.includes('Drip') || type.includes('Expiration')) {\n return false;\n }\n }\n return true;\n }\n static allowOrganizationLevel(type) {\n switch (type) {\n case EmailTemplateType.DefaultMembersEmail: return true;\n case EmailTemplateType.SavedMembersEmail: return true;\n case EmailTemplateType.RegistrationConfirmation: return true;\n case EmailTemplateType.RegistrationTransferDetails: return true;\n // case EmailTemplateType.OrderConfirmationOnline: return true\n // case EmailTemplateType.OrderConfirmationTransfer: return true\n // case EmailTemplateType.OrderConfirmationPOS: return true\n // case EmailTemplateType.OrderReceivedTransfer: return true\n // case EmailTemplateType.TicketsConfirmation: return true\n // case EmailTemplateType.TicketsConfirmationTransfer: return true\n // case EmailTemplateType.TicketsConfirmationPOS: return true\n // case EmailTemplateType.TicketsReceivedTransfer: return true\n }\n return false;\n }\n static getPlatformTypeDescription(type) {\n switch (type) {\n case EmailTemplateType.OrganizationUnstableDNS: return 'Organisatie: instabiele DNS';\n case EmailTemplateType.OrganizationInvalidDNS: return 'Organisatie: ongeldige DNS';\n case EmailTemplateType.OrganizationValidDNS: return 'Organisatie: geldige DNS';\n case EmailTemplateType.OrganizationStableDNS: return 'Organisatie: stabiele DNS';\n case EmailTemplateType.OrganizationDNSSetupComplete: return 'Organisatie: DNS setup compleet';\n case EmailTemplateType.OrderOnlinePaymentFailed: return 'Wanneer een online betaling bij een webshop mislukt na een lange tijd wachten - zou zelden mogen voorkomen';\n case EmailTemplateType.ExcelExportSucceeded: return 'Bij lange Excel exports ontvang je een e-mail om jouw bestand te downloaden';\n case EmailTemplateType.ExcelExportFailed: return 'Als een lange Excel export toch mislukt, ontvang je een e-mail dat het mis ging';\n case EmailTemplateType.ForgotPasswordButNoAccount: return 'Als iemand een wachtwoord probeert te resetten, maar er geen account is met dat e-mailadres';\n case EmailTemplateType.ForgotPassword: return 'De e-mail met een link om je wachtwoord opnieuw in te stellen als je die bent vergeten';\n case EmailTemplateType.DeleteAccountConfirmation: return 'De e-mail als bevestiging als iemand aanvraagt om hun account te verwijderen.';\n case EmailTemplateType.VerifyEmail: return 'De e-mail die wordt verzonden om het e-mailadres te bevestigen als iemand een account aanmaakt.';\n case EmailTemplateType.VerifyEmailWithoutCode: return 'De e-mail die wordt verzonden naar de gebruiker om het e-mailadres te bevestigen als een beheerder dit wijzigt. Deze e-mail bevat geen bevestigingscode.';\n case EmailTemplateType.AdminInvitation: return 'De e-mail die een bestaande gebruiker ontvangt als hij toegevoegd wordt als beheerder.';\n case EmailTemplateType.AdminInvitationNewUser: return 'De e-mail die iemand zonder account ontvangt als hij toegevoegd wordt als beheerder.';\n case EmailTemplateType.SignupAlreadyHasAccount: return 'Als iemand probeert een account aan te maken, maar er al een account bestaat met dat e-mailadres';\n }\n return null;\n }\n static getTypeDescription(type) {\n switch (type) {\n case EmailTemplateType.DefaultMembersEmail: return 'Als iemand een nieuwe e-mail opstelt, gericht aan leden, zal deze template standaard al klaar staan. Deze kan dan nog aangepast worden.';\n case EmailTemplateType.OrderNotification: return 'E-mail die webshop eigenaren ontvangen wanneer er een bestelling is geplaatst (indien ze die functie hebben ingeschakeld)';\n case EmailTemplateType.RegistrationConfirmation: return 'Leden en ouders (die toegang hebben of moeten krijgen) ontvangen deze e-mail nadat ze worden ingeschreven of zelf inschrijven.';\n case EmailTemplateType.OrderConfirmationOnline: return 'Wanneer een besteller online betaald (of totaalbedrag is 0 euro)';\n case EmailTemplateType.OrderConfirmationTransfer: return 'Wanneer een besteller kiest voor overschrijving - bevat nog eens de betaalinstructies als de betaling nog niet zou zijn gebeurd';\n case EmailTemplateType.OrderConfirmationPOS: return 'Wanneer een besteller kiest voor betaling ter plaatse/bij levering';\n case EmailTemplateType.OrderReceivedTransfer: return 'De e-mail die een besteller nog ontvangt als je de betaling hebt gemarkeerd als ontvangen (enkel bij betaalmethode overschrijving)';\n case EmailTemplateType.TicketsConfirmation: return 'Wanneer een besteller online betaald (of totaalbedrag is 0 euro)';\n case EmailTemplateType.TicketsConfirmationTransfer: return 'Wanneer een besteller kiest voor overschrijving - bevat nog eens de betaalinstructies als de betaling nog niet zou zijn gebeurd';\n case EmailTemplateType.TicketsConfirmationPOS: return 'Wanneer een besteller kiest voor betaling ter plaatse/bij levering';\n case EmailTemplateType.TicketsReceivedTransfer: return 'De e-mail die een besteller nog ontvangt als je de betaling hebt gemarkeerd als ontvangen (enkel bij betaalmethode overschrijving)';\n }\n return '';\n }\n static getSupportedReplacementsForType(type) {\n if (type === EmailTemplateType.SignupAlreadyHasAccount) {\n return [\n 'greeting',\n 'email',\n 'resetUrl',\n ];\n }\n if (type === EmailTemplateType.ForgotPasswordButNoAccount) {\n return [\n 'email',\n ];\n }\n if (type === EmailTemplateType.DeleteAccountConfirmation) {\n return [\n 'email',\n ];\n }\n if (type === EmailTemplateType.ForgotPassword) {\n return [\n 'greeting',\n 'firstName',\n 'lastName',\n 'email',\n 'resetUrl',\n ];\n }\n if (type === EmailTemplateType.VerifyEmail) {\n return [\n 'greeting',\n 'email',\n 'confirmEmailUrl',\n 'confirmEmailCode',\n 'organizationName',\n ];\n }\n if (type === EmailTemplateType.VerifyEmailWithoutCode) {\n return [\n 'greeting',\n 'email',\n 'confirmEmailUrl',\n 'organizationName',\n ];\n }\n if (type === EmailTemplateType.AdminInvitation) {\n return [\n 'greeting',\n 'email',\n 'platformOrOrganizationName',\n 'inviterName',\n 'validUntil',\n 'signInUrl',\n 'resetUrl',\n ];\n }\n if (type === EmailTemplateType.AdminInvitationNewUser) {\n return [\n 'greeting',\n 'email',\n 'platformOrOrganizationName',\n 'inviterName',\n 'validUntil',\n 'resetUrl',\n ];\n }\n if (type === EmailTemplateType.ExcelExportSucceeded) {\n return [\n 'greeting',\n 'firstName',\n 'lastName',\n 'downloadUrl',\n ];\n }\n if (type === EmailTemplateType.ExcelExportFailed) {\n return [\n 'greeting',\n 'firstName',\n 'lastName',\n ];\n }\n if (type === EmailTemplateType.RegistrationConfirmation) {\n return [\n 'greeting',\n 'firstName',\n 'lastName',\n 'firstNameMember',\n 'lastNameMember',\n 'email',\n 'registerUrl',\n 'organizationName',\n 'groupName',\n 'signInUrl',\n 'unsubscribeUrl',\n 'loginDetails',\n ];\n }\n if ([\n EmailTemplateType.OrganizationDNSSetupComplete,\n EmailTemplateType.OrganizationInvalidDNS,\n EmailTemplateType.OrganizationStableDNS,\n EmailTemplateType.OrganizationUnstableDNS,\n EmailTemplateType.OrganizationValidDNS,\n ].includes(type)) {\n return [\n 'greeting',\n 'firstName',\n 'lastName',\n 'email',\n 'organizationName',\n 'mailDomain',\n ];\n }\n if (type === EmailTemplateType.RegistrationTransferDetails) {\n return [\n 'priceToPay',\n 'paymentMethod',\n 'transferDescription',\n 'transferBankAccount',\n 'transferBankCreditor',\n 'overviewContext',\n 'memberNames',\n 'overviewTable',\n 'paymentTable',\n 'registerUrl',\n 'organizationName',\n 'signInUrl',\n 'unsubscribeUrl',\n 'loginDetails',\n ];\n }\n if ([\n EmailTemplateType.MembersExpirationReminder,\n EmailTemplateType.WebshopsExpirationReminder,\n EmailTemplateType.TrialMembersExpirationReminder,\n EmailTemplateType.TrialWebshopsExpirationReminder,\n EmailTemplateType.SingleWebshopExpirationReminder,\n ].includes(type)) {\n return [\n 'greeting',\n 'firstName',\n 'organizationName',\n 'packageName',\n 'validUntil',\n 'validUntilDate',\n 'renewUrl',\n 'unsubscribeUrl',\n ];\n }\n const sharedReplacements = [\n 'orderPrice',\n 'orderStatus',\n 'orderDetailsTable',\n 'orderTable',\n 'paymentTable',\n 'orderUrl',\n 'paymentMethod',\n 'organizationName',\n 'webshopName',\n 'unsubscribeUrl',\n ];\n if (type !== EmailTemplateType.OrderOnlinePaymentFailed) {\n sharedReplacements.push('nr');\n }\n if (type !== EmailTemplateType.OrderNotification) {\n sharedReplacements.push('greeting', 'firstName', 'lastName');\n }\n if (type === EmailTemplateType.OrderConfirmationTransfer || type === EmailTemplateType.TicketsConfirmationTransfer) {\n return [\n ...sharedReplacements,\n 'transferDescription',\n 'transferBankAccount',\n 'transferBankCreditor',\n ];\n }\n return sharedReplacements;\n }\n}\n__decorate([\n field({ decoder: StringDecoder, defaultValue: () => uuidv4() })\n], EmailTemplate.prototype, \"id\", void 0);\n__decorate([\n field({ decoder: StringDecoder, nullable: true })\n], EmailTemplate.prototype, \"organizationId\", void 0);\n__decorate([\n field({ decoder: StringDecoder })\n], EmailTemplate.prototype, \"subject\", void 0);\n__decorate([\n field({ decoder: new EnumDecoder(EmailTemplateType) })\n], EmailTemplate.prototype, \"type\", void 0);\n__decorate([\n field({ decoder: StringDecoder })\n], EmailTemplate.prototype, \"html\", void 0);\n__decorate([\n field({ decoder: StringDecoder })\n], EmailTemplate.prototype, \"text\", void 0);\n__decorate([\n field({ decoder: AnyDecoder })\n], EmailTemplate.prototype, \"json\", void 0);\n__decorate([\n field({ decoder: StringDecoder, nullable: true })\n], EmailTemplate.prototype, \"groupId\", void 0);\n__decorate([\n field({ decoder: StringDecoder, nullable: true })\n], EmailTemplate.prototype, \"webshopId\", void 0);\n__decorate([\n field({ decoder: DateDecoder, optional: true })\n], EmailTemplate.prototype, \"createdAt\", void 0);\n__decorate([\n field({ decoder: DateDecoder, optional: true })\n], EmailTemplate.prototype, \"updatedAt\", void 0);\n//# sourceMappingURL=EmailTemplate.js.map","import { __decorate } from \"tslib\";\nimport { AnyDecoder, ArrayDecoder, AutoEncoder, BooleanDecoder, DateDecoder, EnumDecoder, field, IntegerDecoder, StringDecoder } from '@simonbackx/simple-encoding';\nimport { v4 as uuidv4 } from 'uuid';\nimport { EditorSmartButton } from '../email/EditorSmartButton';\nimport { EditorSmartVariable } from '../email/EditorSmartVariable';\nimport { EmailAttachment, Recipient, Replacement } from '../endpoints/EmailRequest';\nimport { StamhoofdFilterDecoder } from '../filters/FilteredRequest';\nimport { MemberDetails } from '../members/MemberDetails';\nimport { MemberWithRegistrationsBlob } from '../members/MemberWithRegistrationsBlob';\nimport { EmailTemplateType } from './EmailTemplate';\nexport var EmailRecipientFilterType;\n(function (EmailRecipientFilterType) {\n EmailRecipientFilterType[\"Members\"] = \"Members\";\n EmailRecipientFilterType[\"MemberParents\"] = \"MemberParents\";\n EmailRecipientFilterType[\"MemberUnverified\"] = \"MemberUnverified\";\n EmailRecipientFilterType[\"Orders\"] = \"Orders\";\n})(EmailRecipientFilterType || (EmailRecipientFilterType = {}));\nexport function getExampleRecipient(type = null) {\n return MemberWithRegistrationsBlob.create({\n details: MemberDetails.create({\n firstName: 'Jan',\n lastName: 'Janssens',\n email: 'jan.janssens@voorbeeld-emailadres.com',\n }),\n }).getEmailRecipients(['member'])[0];\n}\nexport var EmailStatus;\n(function (EmailStatus) {\n EmailStatus[\"Draft\"] = \"Draft\";\n EmailStatus[\"Sending\"] = \"Sending\";\n EmailStatus[\"Sent\"] = \"Sent\";\n EmailStatus[\"Deleted\"] = \"Deleted\";\n})(EmailStatus || (EmailStatus = {}));\nexport var EmailRecipientsStatus;\n(function (EmailRecipientsStatus) {\n EmailRecipientsStatus[\"NotCreated\"] = \"NotCreated\";\n EmailRecipientsStatus[\"Creating\"] = \"Creating\";\n EmailRecipientsStatus[\"Created\"] = \"Created\";\n})(EmailRecipientsStatus || (EmailRecipientsStatus = {}));\nexport class EmailRecipientSubfilter extends AutoEncoder {\n constructor() {\n super(...arguments);\n this.type = EmailRecipientFilterType.Members;\n this.filter = null;\n this.search = null;\n }\n}\n__decorate([\n field({ decoder: new EnumDecoder(EmailRecipientFilterType) })\n], EmailRecipientSubfilter.prototype, \"type\", void 0);\n__decorate([\n field({ decoder: StamhoofdFilterDecoder, nullable: true })\n], EmailRecipientSubfilter.prototype, \"filter\", void 0);\n__decorate([\n field({ decoder: StringDecoder, nullable: true })\n], EmailRecipientSubfilter.prototype, \"search\", void 0);\nexport class EmailRecipientFilter extends AutoEncoder {\n constructor() {\n super(...arguments);\n this.filters = [];\n this.groupByEmail = false;\n }\n}\n__decorate([\n field({ decoder: new ArrayDecoder(EmailRecipientSubfilter) })\n], EmailRecipientFilter.prototype, \"filters\", void 0);\n__decorate([\n field({ decoder: BooleanDecoder })\n], EmailRecipientFilter.prototype, \"groupByEmail\", void 0);\nexport class Email extends AutoEncoder {\n constructor() {\n super(...arguments);\n this.recipientFilter = EmailRecipientFilter.create({});\n this.subject = null;\n this.status = EmailStatus.Draft;\n this.recipientsStatus = EmailRecipientsStatus.NotCreated;\n this.json = {};\n this.text = null;\n this.html = null;\n this.fromAddress = null;\n this.fromName = null;\n this.recipientCount = null;\n this.attachments = [];\n this.sentAt = null;\n this.createdAt = new Date();\n this.updatedAt = new Date();\n }\n getTemplateType() {\n for (const filter of this.recipientFilter.filters) {\n if (filter.type === EmailRecipientFilterType.Members) {\n return EmailTemplateType.SavedMembersEmail;\n }\n }\n return null;\n }\n}\n__decorate([\n field({ decoder: StringDecoder, defaultValue: () => uuidv4() })\n], Email.prototype, \"id\", void 0);\n__decorate([\n field({ decoder: EmailRecipientFilter })\n], Email.prototype, \"recipientFilter\", void 0);\n__decorate([\n field({ decoder: StringDecoder, nullable: true })\n], Email.prototype, \"subject\", void 0);\n__decorate([\n field({ decoder: new EnumDecoder(EmailStatus) })\n], Email.prototype, \"status\", void 0);\n__decorate([\n field({ decoder: new EnumDecoder(EmailRecipientsStatus) })\n], Email.prototype, \"recipientsStatus\", void 0);\n__decorate([\n field({ decoder: AnyDecoder })\n], Email.prototype, \"json\", void 0);\n__decorate([\n field({ decoder: StringDecoder, nullable: true })\n], Email.prototype, \"text\", void 0);\n__decorate([\n field({ decoder: StringDecoder, nullable: true })\n], Email.prototype, \"html\", void 0);\n__decorate([\n field({ decoder: StringDecoder, nullable: true })\n], Email.prototype, \"fromAddress\", void 0);\n__decorate([\n field({ decoder: StringDecoder, nullable: true })\n], Email.prototype, \"fromName\", void 0);\n__decorate([\n field({ decoder: IntegerDecoder, nullable: true })\n], Email.prototype, \"recipientCount\", void 0);\n__decorate([\n field({ decoder: new ArrayDecoder(EmailAttachment) })\n], Email.prototype, \"attachments\", void 0);\n__decorate([\n field({ decoder: DateDecoder, nullable: true })\n], Email.prototype, \"sentAt\", void 0);\n__decorate([\n field({ decoder: DateDecoder })\n], Email.prototype, \"createdAt\", void 0);\n__decorate([\n field({ decoder: DateDecoder })\n], Email.prototype, \"updatedAt\", void 0);\nexport class EmailRecipient extends AutoEncoder {\n constructor() {\n super(...arguments);\n this.emailId = '';\n this.firstName = null;\n this.lastName = null;\n this.replacements = [];\n this.failErrorMessage = null;\n this.failCount = 0;\n this.firstFailedAt = null;\n this.lastFailedAt = null;\n this.sentAt = null;\n this.createdAt = new Date();\n this.updatedAt = new Date();\n }\n getDefaultReplacements() {\n return Recipient.create(this).getDefaultReplacements();\n }\n}\n__decorate([\n field({ decoder: StringDecoder, defaultValue: () => uuidv4() })\n], EmailRecipient.prototype, \"id\", void 0);\n__decorate([\n field({ decoder: StringDecoder })\n], EmailRecipient.prototype, \"emailId\", void 0);\n__decorate([\n field({ decoder: StringDecoder, nullable: true })\n], EmailRecipient.prototype, \"firstName\", void 0);\n__decorate([\n field({ decoder: StringDecoder, nullable: true })\n], EmailRecipient.prototype, \"lastName\", void 0);\n__decorate([\n field({ decoder: StringDecoder })\n], EmailRecipient.prototype, \"email\", void 0);\n__decorate([\n field({ decoder: new ArrayDecoder(Replacement) })\n], EmailRecipient.prototype, \"replacements\", void 0);\n__decorate([\n field({ decoder: StringDecoder, nullable: true })\n], EmailRecipient.prototype, \"failErrorMessage\", void 0);\n__decorate([\n field({ decoder: IntegerDecoder })\n], EmailRecipient.prototype, \"failCount\", void 0);\n__decorate([\n field({ decoder: DateDecoder, nullable: true })\n], EmailRecipient.prototype, \"firstFailedAt\", void 0);\n__decorate([\n field({ decoder: DateDecoder, nullable: true })\n], EmailRecipient.prototype, \"lastFailedAt\", void 0);\n__decorate([\n field({ decoder: DateDecoder, nullable: true })\n], EmailRecipient.prototype, \"sentAt\", void 0);\n__decorate([\n field({ decoder: DateDecoder })\n], EmailRecipient.prototype, \"createdAt\", void 0);\n__decorate([\n field({ decoder: DateDecoder })\n], EmailRecipient.prototype, \"updatedAt\", void 0);\nexport class EmailPreview extends Email {\n constructor() {\n super(...arguments);\n this.exampleRecipient = null;\n this.smartVariables = [];\n this.smartButtons = [];\n // todo: count stats\n // todo: bounce / spam stats\n }\n}\n__decorate([\n field({ decoder: EmailRecipient, nullable: true })\n], EmailPreview.prototype, \"exampleRecipient\", void 0);\n__decorate([\n field({ decoder: new ArrayDecoder(EditorSmartVariable) })\n], EmailPreview.prototype, \"smartVariables\", void 0);\n__decorate([\n field({ decoder: new ArrayDecoder(EditorSmartButton) })\n], EmailPreview.prototype, \"smartButtons\", void 0);\n//# sourceMappingURL=Email.js.map","import { __decorate } from \"tslib\";\nimport { AutoEncoder, field, StringDecoder, ArrayDecoder, IntegerDecoder, BooleanDecoder, DateDecoder } from '@simonbackx/simple-encoding';\nimport { Discount } from './Discount';\nimport { v4 as uuidv4 } from 'uuid';\nexport class DiscountCode extends AutoEncoder {\n constructor() {\n super(...arguments);\n this.description = '';\n this.discounts = [];\n this.usageCount = 0;\n this.maximumUsage = null;\n /**\n * When an order is correctly placed, we store the reserved amount in the stock here.\n * We need this to check the stock changes when an order is edited after placement.\n */\n this.reserved = false;\n this.createdAt = new Date();\n this.updatedAt = new Date();\n }\n}\n__decorate([\n field({ decoder: StringDecoder, defaultValue: () => uuidv4() })\n], DiscountCode.prototype, \"id\", void 0);\n__decorate([\n field({ decoder: StringDecoder })\n], DiscountCode.prototype, \"code\", void 0);\n__decorate([\n field({ decoder: StringDecoder, version: 241 })\n], DiscountCode.prototype, \"description\", void 0);\n__decorate([\n field({ decoder: new ArrayDecoder(Discount) })\n], DiscountCode.prototype, \"discounts\", void 0);\n__decorate([\n field({ decoder: IntegerDecoder })\n], DiscountCode.prototype, \"usageCount\", void 0);\n__decorate([\n field({ decoder: IntegerDecoder, nullable: true })\n], DiscountCode.prototype, \"maximumUsage\", void 0);\n__decorate([\n field({ decoder: BooleanDecoder })\n], DiscountCode.prototype, \"reserved\", void 0);\n__decorate([\n field({ decoder: DateDecoder, version: 240 })\n], DiscountCode.prototype, \"createdAt\", void 0);\n__decorate([\n field({ decoder: DateDecoder, version: 240 })\n], DiscountCode.prototype, \"updatedAt\", void 0);\n//# sourceMappingURL=DiscountCode.js.map","import { __decorate } from \"tslib\";\nimport { ArrayDecoder, AutoEncoder, BooleanDecoder, EnumDecoder, field, IntegerDecoder, MapDecoder, NumberDecoder, StringDecoder } from '@simonbackx/simple-encoding';\nimport { isSimpleError, isSimpleErrors, SimpleError } from '@simonbackx/simple-errors';\nimport { Formatter } from '@stamhoofd/utility';\nimport { ValidatedAddress } from '../addresses/Address';\nimport { RecordAnswerDecoder } from '../members/records/RecordAnswer';\nimport { RecordCategory } from '../members/records/RecordCategory';\nimport { PaymentMethod } from '../PaymentMethod';\nimport { Cart } from './Cart';\nimport { Customer } from './Customer';\nimport { Discount } from './Discount';\nimport { DiscountCode } from './DiscountCode';\nimport { WebshopFieldAnswer } from './WebshopField';\nimport { AnyCheckoutMethodDecoder, CheckoutMethodType, WebshopDeliveryMethod, WebshopTimeSlot } from './WebshopMetaData';\nexport class Checkout extends AutoEncoder {\n constructor() {\n super(...arguments);\n this.timeSlot = null;\n this.checkoutMethod = null;\n /**\n * Only needed for delivery\n */\n this.address = null;\n this.customer = Customer.create({});\n this.fieldAnswers = [];\n this.recordAnswers = new Map();\n this.cart = Cart.create({});\n this.paymentMethod = null;\n this.administrationFee = 0;\n this.discounts = [];\n this.discountCodes = [];\n /**\n * Applied fixed discount (not applicable to a specific cart item)\n */\n this.fixedDiscount = 0;\n /**\n * Applied percentage discount (not applicable to a specific cart item)\n * in pertenthousand\n */\n this.percentageDiscount = 0;\n /**\n * Number of persons we did reserve in webshop time slots (and maybe future other maximums)\n */\n this.reservedPersons = 0;\n /**\n * Whether we reserved order stock in webshop time slots (and maybe future other maximums)\n */\n this.reservedOrder = false;\n }\n get paymentContext() {\n var _a, _b;\n if (((_a = this.checkoutMethod) === null || _a === void 0 ? void 0 : _a.type) === CheckoutMethodType.Takeout) {\n return 'takeout';\n }\n if (((_b = this.checkoutMethod) === null || _b === void 0 ? void 0 : _b.type) === CheckoutMethodType.Delivery) {\n return 'delivery';\n }\n return null;\n }\n get deliveryPrice() {\n if (!this.checkoutMethod || this.checkoutMethod.type !== CheckoutMethodType.Delivery) {\n return 0;\n }\n if (!(this.checkoutMethod instanceof WebshopDeliveryMethod)) {\n // will throw in validation\n return 0;\n }\n if (this.checkoutMethod.price.minimumPrice !== null && this.cart.price >= this.checkoutMethod.price.minimumPrice) {\n return this.checkoutMethod.price.discountPrice;\n }\n return this.checkoutMethod.price.price;\n }\n get appliedPercentageDiscount() {\n return Math.round(this.cart.price * this.percentageDiscount / 10000);\n }\n get totalPrice() {\n // Percentage discount\n // + this.administrationFee;\n return Math.max(0, this.cart.price - this.appliedPercentageDiscount - this.fixedDiscount) + this.deliveryPrice + this.administrationFee;\n }\n get amount() {\n return this.cart.items.reduce((acc, item) => acc + item.amount, 0);\n }\n get priceBreakown() {\n const all = [\n {\n name: Formatter.percentage(this.percentageDiscount) + ' korting',\n price: -this.appliedPercentageDiscount,\n },\n {\n name: 'Korting',\n price: -this.fixedDiscount,\n },\n {\n name: 'Leveringskost',\n price: this.deliveryPrice,\n },\n {\n name: 'Administratiekost',\n price: this.administrationFee,\n },\n ].filter(a => a.price !== 0);\n if (all.length > 0) {\n all.unshift({\n name: 'Subtotaal',\n price: this.cart.priceWithDiscounts,\n });\n }\n return [\n ...all,\n {\n name: 'Totaal',\n price: this.totalPrice,\n },\n ];\n }\n get totalPriceWithoutAdministrationFee() {\n return this.totalPrice - this.administrationFee;\n }\n doesMatchFilter(_filter) {\n throw new Error('Method not implemented.');\n }\n isRecordEnabled(_record) {\n return true;\n }\n getRecordAnswers() {\n return new Map();\n // return this.recordAnswers\n }\n patchRecordAnswers(_patch) {\n throw new Error('Method not implemented.');\n }\n validateAnswers(webshop) {\n const newAnswers = [];\n for (const field of webshop.meta.customFields) {\n const answer = this.fieldAnswers.find(a => a.field.id === field.id);\n try {\n if (!answer) {\n const a = WebshopFieldAnswer.create({ field, answer: '' });\n a.validate();\n newAnswers.push(a);\n }\n else {\n answer.field = field;\n answer.validate();\n newAnswers.push(answer);\n }\n }\n catch (e) {\n if (isSimpleError(e) || isSimpleErrors(e)) {\n e.addNamespace('fieldAnswers.' + field.id);\n }\n throw e;\n }\n }\n this.fieldAnswers = newAnswers;\n }\n validateCart(webshop, organizationMeta, asAdmin = false) {\n if (this.cart.items.length === 0) {\n throw new SimpleError({\n code: 'cart_empty',\n message: 'Cart is empty',\n human: 'Jouw winkelmandje is leeg',\n field: 'cart',\n });\n }\n try {\n this.cart.validate(webshop, asAdmin);\n }\n catch (e) {\n if (isSimpleError(e) || isSimpleErrors(e)) {\n e.addNamespace('cart');\n }\n // also update discounts on errors\n this.updateDiscounts(webshop);\n this.calculatePrices();\n throw e;\n }\n this.updateDiscounts(webshop);\n this.calculatePrices();\n if (!asAdmin && webshop.meta.availableUntil && webshop.meta.availableUntil < new Date()) {\n throw new SimpleError({\n code: 'closed',\n message: 'Orders are closed',\n human: 'Helaas! Je bent te laat. De bestellingen zijn gesloten.',\n });\n }\n if (!asAdmin && webshop.meta.openAt && webshop.meta.openAt > new Date()) {\n throw new SimpleError({\n code: 'closed',\n message: 'Orders are closed',\n human: 'Nog even geduld. Bestellen kan vanaf ' + Formatter.dateTime(webshop.meta.openAt) + '.',\n });\n }\n }\n validateCheckoutMethod(webshop, organizationMeta) {\n if (this.checkoutMethod === null) {\n if (webshop.meta.checkoutMethods.length > 0) {\n throw new SimpleError({\n code: 'missing_checkout_method',\n message: 'Checkout method is required',\n human: 'Er zijn enkele instellingen gewijzigd terwijl je aan het bestellen was. Herlaad de pagina en probeer opnieuw.',\n field: 'checkoutMethod',\n });\n }\n return;\n }\n const current = this.checkoutMethod;\n const checkoutMethod = webshop.meta.checkoutMethods.find(m => m.id === current.id);\n if (!checkoutMethod) {\n if (webshop.meta.checkoutMethods.length === 0) {\n this.checkoutMethod = null;\n return;\n }\n throw new SimpleError({\n code: 'invalid_checkout_method',\n message: 'Checkout method is invalid',\n human: 'Er zijn enkele instellingen gewijzigd terwijl je aan het bestellen was. Herlaad de pagina en probeer opnieuw.',\n field: 'checkoutMethod',\n });\n }\n this.checkoutMethod = checkoutMethod;\n }\n validateDeliveryAddress(webshop, organizationMeta) {\n if (!this.checkoutMethod || this.checkoutMethod.type !== CheckoutMethodType.Delivery) {\n this.address = null;\n return;\n }\n if (!(this.checkoutMethod instanceof WebshopDeliveryMethod)) {\n throw new SimpleError({\n code: 'invalid_data_type',\n message: 'Invalid data type',\n human: 'Er ontbreekt data. Probeer het opnieuw of neem contact op met de webshop eigenaar om dit te melden.',\n field: 'address',\n });\n }\n if (!this.address) {\n throw new SimpleError({\n code: 'missing_address',\n message: 'Checkout address is invalid',\n human: 'Een leveringsadres is noodzakelijk, herlaad de pagina opnieuw en vul een leveringsadres in.',\n field: 'address',\n });\n }\n // Check country\n if (this.checkoutMethod.countries.includes(this.address.country)) {\n return;\n }\n if (this.checkoutMethod.provinces.map(p => p.id).includes(this.address.provinceId)) {\n return;\n }\n if (this.checkoutMethod.cities.map(c => c.id).includes(this.address.cityId)) {\n return;\n }\n if (this.address.parentCityId && this.checkoutMethod.cities.map(c => c.id).includes(this.address.parentCityId)) {\n return;\n }\n throw new SimpleError({\n code: 'region_not_supported',\n message: 'Region not supported',\n human: 'We leveren jammer genoeg niet op dit adres.',\n field: 'address',\n });\n }\n validateTimeSlot(_webshop, _organizationMeta) {\n if (!this.checkoutMethod || this.checkoutMethod.timeSlots.timeSlots.length === 0) {\n this.timeSlot = null;\n return;\n }\n if (!this.timeSlot) {\n throw new SimpleError({\n code: 'missing_timeslot',\n message: 'Checkout timeslot is missings',\n human: 'Kies een tijdstip, herlaad de pagina opnieuw en maak een keuze.',\n field: 'timeSlot',\n });\n }\n const current = this.timeSlot;\n const timeSlot = this.checkoutMethod.timeSlots.timeSlots.find(s => s.id === current.id);\n const availableTimeslots = this.checkoutMethod.timeSlots.timeSlots.length;\n if (!timeSlot) {\n throw new SimpleError({\n code: 'invalid_timeslot',\n message: 'Checkout timeslot is invalid',\n human: 'Het afhaaltijdstip dat je had gekozen werd gewijzigd terwijl je aan het bestellen was, kies een nieuw tijdstip.',\n field: 'timeSlot',\n });\n }\n // Check maximum\n if (!this.reservedOrder && timeSlot.remainingOrders === 0) {\n throw new SimpleError({\n code: 'timeslot_full',\n message: 'Timeslot has reached maximum orders',\n human: (availableTimeslots !== 1 ? 'Het gekozen tijdstip is helaas volzet. Kies een ander tijdstip indien mogelijk.' : 'Het evenement is helaas volzet. We aanvaarden geen verdere bestellingen.'),\n field: 'timeSlot',\n });\n }\n // Check maximum\n if (timeSlot.remainingPersons !== null && this.cart.persons - this.reservedPersons > timeSlot.remainingPersons) {\n const remainingPersons = timeSlot.remainingPersons;\n if (remainingPersons === 0) {\n throw new SimpleError({\n code: 'timeslot_full',\n message: 'Timeslot has reached maximum orders',\n human: (availableTimeslots !== 1 ? 'Het gekozen tijdstip is helaas volzet. Kies een ander tijdstip indien mogelijk.' : 'Het evenement is helaas volzet. We aanvaarden geen verdere bestellingen.'),\n field: 'timeSlot',\n });\n }\n throw new SimpleError({\n code: 'timeslot_full',\n message: 'Timeslot has reached maximum persons',\n human: 'Er ' + (remainingPersons !== 1 ? 'zijn' : 'is') + ' nog maar ' + remainingPersons + ' ' + (remainingPersons !== 1 ? 'plaatsen' : 'plaats') + ' vrij ' + (availableTimeslots !== 1 ? 'op het gekozen tijdstip' : 'voor dit evenement') + '. Jouw mandje is voor ' + this.cart.persons + ' ' + (this.cart.persons !== 1 ? 'personen' : 'persoon') + (availableTimeslots !== 1 ? '. Kies een ander tijdstip indien mogelijk.' : ''),\n field: 'timeSlot',\n });\n }\n this.timeSlot = timeSlot;\n }\n validateCustomer(webshop, organizationMeta, i18n, asAdmin = false, user = null) {\n if (user) {\n if (user.firstName) {\n this.customer.firstName = user.firstName;\n }\n if (user.lastName) {\n this.customer.lastName = user.lastName;\n }\n this.customer.email = user.email;\n }\n if (this.customer.firstName.length < 2) {\n throw new SimpleError({\n code: 'invalid_first_name',\n message: 'Invalid first name',\n human: 'De voornaam die je hebt opgegeven is ongeldig, corrigeer het voor je verder gaat.',\n field: 'customer.firstName',\n });\n }\n if (this.customer.lastName.length < 2) {\n throw new SimpleError({\n code: 'invalid_last_name',\n message: 'Invalid last name',\n human: 'De achternaam die je hebt opgegeven is ongeldig, corrigeer het voor je verder gaat.',\n field: 'customer.lastName',\n });\n }\n if (webshop.meta.phoneEnabled) {\n if (this.customer.phone.length < 6 && !asAdmin) {\n throw new SimpleError({\n code: 'invalid_phone',\n message: 'Invalid phone',\n human: i18n.t('shared.inputs.mobile.invalidMessage'),\n field: 'customer.phone',\n });\n }\n }\n else {\n this.customer.phone = '';\n }\n const regex = /^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;\n if (!regex.test(this.customer.email)) {\n throw new SimpleError({\n code: 'invalid_email',\n message: 'Invalid email',\n human: 'Het e-mailadres dat je hebt opgegeven is ongeldig, corrigeer het voor je verder gaat.',\n field: 'customer.email',\n });\n }\n this.validateAnswers(webshop);\n }\n validatePayment(webshop, organizationMeta) {\n if (!this.paymentMethod) {\n throw new SimpleError({\n code: 'missing_payment_method',\n message: 'Missing payment method',\n human: 'Kies een betaalmethode',\n field: 'paymentMethod',\n });\n }\n if (!webshop.meta.paymentMethods.includes(this.paymentMethod)) {\n throw new SimpleError({\n code: 'invalid_payment_method',\n message: 'Invalid payment method',\n human: 'Deze betaalmethode is niet meer beschikbaar. Herlaad eventueel de pagina en probeer opnieuw.',\n field: 'paymentMethod',\n });\n }\n }\n validateRecordAnswersFor(webshop, category) {\n RecordCategory.validate([category], this);\n }\n validateRecordAnswers(webshop) {\n RecordCategory.validate(webshop.meta.recordCategories, this);\n }\n updateAdministrationFee(webshop) {\n this.administrationFee = webshop.meta.paymentConfiguration.administrationFee.calculate(this.totalPriceWithoutAdministrationFee);\n }\n updateDiscounts(webshop) {\n this.discounts = webshop.meta.defaultDiscounts.slice();\n this.discounts.push(...this.discountCodes.flatMap(c => c.discounts));\n }\n calculatePrices() {\n // Group discounts by discounts that can get applied together with other discounts\n // for now: everything can get combined\n const discountOrders = [this.discounts];\n for (const discounts of discountOrders) {\n this.fixedDiscount = 0;\n this.percentageDiscount = 0;\n for (const item of this.cart.items) {\n item.discounts = [];\n // Reset all discounts on this item\n item.calculatePrices(this.cart);\n }\n const trackers = [];\n for (const discount of discounts) {\n trackers.push(...discount.applyToCheckout(this));\n }\n // Loop trackers and apply the one with the current highest potential\n while (true) {\n let bestPotential = null;\n for (const tracker of trackers) {\n const potential = tracker.getPotentialDiscount();\n if (potential !== 0 && (bestPotential === null || potential > bestPotential.potential)) {\n bestPotential = { tracker, potential };\n }\n }\n if (bestPotential) {\n bestPotential.tracker.apply();\n }\n else {\n break;\n }\n }\n }\n }\n update(webshop) {\n this.updateDiscounts(webshop);\n this.calculatePrices();\n this.updateAdministrationFee(webshop);\n }\n validate(webshop, organizationMeta, i18n, asAdmin = false, user = null) {\n try {\n this.validateCart(webshop, organizationMeta, asAdmin);\n this.validateCheckoutMethod(webshop, organizationMeta);\n this.validateDeliveryAddress(webshop, organizationMeta);\n this.validateTimeSlot(webshop, organizationMeta);\n this.validateCustomer(webshop, organizationMeta, i18n, asAdmin, user);\n this.validateRecordAnswers(webshop);\n if (this.totalPrice !== 0 && !asAdmin) {\n this.validatePayment(webshop, organizationMeta);\n }\n else if (this.totalPrice === 0) {\n this.paymentMethod = PaymentMethod.Unknown;\n }\n }\n finally {\n this.update(webshop);\n }\n }\n /**\n * Convenience mapper\n */\n get deliveryMethod() {\n if (!this.checkoutMethod || this.checkoutMethod.type !== CheckoutMethodType.Delivery) {\n return null;\n }\n if (!(this.checkoutMethod instanceof WebshopDeliveryMethod)) {\n // will throw in validation\n return null;\n }\n return this.checkoutMethod;\n }\n}\n__decorate([\n field({ decoder: WebshopTimeSlot, nullable: true })\n], Checkout.prototype, \"timeSlot\", void 0);\n__decorate([\n field({ decoder: AnyCheckoutMethodDecoder, nullable: true })\n], Checkout.prototype, \"checkoutMethod\", void 0);\n__decorate([\n field({ decoder: ValidatedAddress, nullable: true })\n], Checkout.prototype, \"address\", void 0);\n__decorate([\n field({ decoder: Customer, version: 40 })\n], Checkout.prototype, \"customer\", void 0);\n__decorate([\n field({ decoder: new ArrayDecoder(WebshopFieldAnswer), version: 94 })\n], Checkout.prototype, \"fieldAnswers\", void 0);\n__decorate([\n field({ decoder: new ArrayDecoder(RecordAnswerDecoder), optional: true }),\n field({\n decoder: new MapDecoder(StringDecoder, RecordAnswerDecoder),\n version: 252,\n optional: true,\n upgrade: (old) => {\n const map = new Map();\n for (const answer of old) {\n map.set(answer.settings.id, answer);\n }\n return map;\n },\n })\n], Checkout.prototype, \"recordAnswers\", void 0);\n__decorate([\n field({ decoder: Cart })\n], Checkout.prototype, \"cart\", void 0);\n__decorate([\n field({ decoder: new EnumDecoder(PaymentMethod), nullable: true })\n], Checkout.prototype, \"paymentMethod\", void 0);\n__decorate([\n field({ decoder: IntegerDecoder, version: 207 })\n], Checkout.prototype, \"administrationFee\", void 0);\n__decorate([\n field({ decoder: new ArrayDecoder(Discount), version: 235 })\n], Checkout.prototype, \"discounts\", void 0);\n__decorate([\n field({ decoder: new ArrayDecoder(DiscountCode), version: 239 })\n], Checkout.prototype, \"discountCodes\", void 0);\n__decorate([\n field({ decoder: IntegerDecoder, version: 235 })\n], Checkout.prototype, \"fixedDiscount\", void 0);\n__decorate([\n field({ decoder: IntegerDecoder, version: 235 })\n], Checkout.prototype, \"percentageDiscount\", void 0);\n__decorate([\n field({ decoder: NumberDecoder, version: 143 })\n], Checkout.prototype, \"reservedPersons\", void 0);\n__decorate([\n field({ decoder: BooleanDecoder, version: 143 })\n], Checkout.prototype, \"reservedOrder\", void 0);\n//# sourceMappingURL=Checkout.js.map","import { __decorate } from \"tslib\";\nimport { ArrayDecoder, AutoEncoder, DateDecoder, field, IntegerDecoder, StringDecoder } from '@simonbackx/simple-encoding';\nimport { Sorter } from '@stamhoofd/utility';\nimport { v4 as uuidv4 } from 'uuid';\nimport { CartReservedSeat } from '../SeatingPlan';\nimport { CartItem } from './CartItem';\nexport class Ticket extends AutoEncoder {\n constructor() {\n super(...arguments);\n this.scannedAt = null;\n this.createdAt = new Date();\n this.updatedAt = new Date();\n this.seat = null;\n this.originalSeat = null;\n }\n}\n__decorate([\n field({ decoder: StringDecoder, defaultValue: () => uuidv4() })\n], Ticket.prototype, \"id\", void 0);\n__decorate([\n field({ decoder: DateDecoder, nullable: true })\n], Ticket.prototype, \"scannedAt\", void 0);\n__decorate([\n field({ decoder: DateDecoder })\n], Ticket.prototype, \"createdAt\", void 0);\n__decorate([\n field({ decoder: DateDecoder })\n], Ticket.prototype, \"updatedAt\", void 0);\n__decorate([\n field({ decoder: StringDecoder })\n], Ticket.prototype, \"secret\", void 0);\n__decorate([\n field({ decoder: IntegerDecoder })\n], Ticket.prototype, \"index\", void 0);\n__decorate([\n field({ decoder: IntegerDecoder })\n], Ticket.prototype, \"total\", void 0);\n__decorate([\n field({ decoder: CartReservedSeat, nullable: true, version: 216 })\n], Ticket.prototype, \"seat\", void 0);\n__decorate([\n field({ decoder: CartReservedSeat, nullable: true, version: 216 })\n], Ticket.prototype, \"originalSeat\", void 0);\n/**\n * Ticket extended with the order data. This is\n * required because the user doesn't have access\n * to the order. So we need to add the relevant data\n * */\nexport class TicketPublic extends Ticket {\n constructor() {\n super(...arguments);\n this.items = [];\n }\n get isSingle() {\n return this.items.length === 1 && this.items[0].product.isTicket;\n }\n getPrice(order) {\n var _a, _b, _c;\n if (!this.isSingle) {\n if (order) {\n return order.data.totalPrice;\n }\n return Math.max(0, this.items.reduce((c, item) => { var _a; return c + ((_a = item.price) !== null && _a !== void 0 ? _a : 0); }, 0));\n }\n const item = this.items[0];\n return ((_a = item.unitPrice) !== null && _a !== void 0 ? _a : 0) + ((_c = (_b = this.seat) === null || _b === void 0 ? void 0 : _b.price) !== null && _c !== void 0 ? _c : 0);\n }\n getTitle() {\n if (!this.isSingle) {\n return 'Ticket';\n }\n return this.items[0].product.name;\n }\n getChangedSeatString(webshop, isCustomer) {\n if (!this.isSingle) {\n return null;\n }\n const item = this.items[0];\n if (!item || !item.product.seatingPlanId) {\n return null;\n }\n if (!this.originalSeat) {\n return null;\n }\n if (!this.seat) {\n return null;\n }\n if (this.seat.equals(this.originalSeat)) {\n return null;\n }\n const to = this.seat.getNameString(webshop, item.product);\n const from = this.originalSeat.getNameString(webshop, item.product);\n if (isCustomer) {\n return 'Jouw zitplaats werd gewijzigd van ' + from + ' naar ' + to;\n }\n return 'Deze zitplaats werd gewijzigd van ' + from + ' naar ' + to;\n }\n getIndexDescriptionString(webshop) {\n if (!this.isSingle) {\n return '';\n }\n const description = this.getIndexDescription(webshop);\n return description.map(d => d.title + ': ' + d.value).join('\\n');\n }\n getIndexDescription(webshop) {\n if (!this.isSingle) {\n return [];\n }\n const item = this.items[0];\n if (!item || !item.product.seatingPlanId) {\n return [];\n }\n const seat = this.seat;\n if (seat) {\n const r = seat.getName(webshop, item.product);\n if (r.length > 0) {\n return r;\n }\n }\n return [\n {\n title: 'Plaats',\n value: 'Onbekende plaats. Jouw toegekende plaats werd waarschijnlijk verwijderd. Neem contact met ons op om dit recht te zetten.',\n },\n ];\n }\n getSeatingPlanId() {\n if (!this.isSingle) {\n return null;\n }\n return this.items[0].product.seatingPlanId;\n }\n getIndexText() {\n if (this.items.length !== 1) {\n if (this.total > 1) {\n return this.index + ' / ' + this.total;\n }\n return null;\n }\n const item = this.items[0];\n const nameField = item.fieldAnswers.findIndex(a => a.field.name.toLowerCase().includes('naam'));\n if (nameField !== -1) {\n return item.fieldAnswers[nameField].answer;\n }\n if (this.total > 1) {\n return this.index + ' / ' + this.total;\n }\n return null;\n }\n static sort(a, b) {\n var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;\n return Sorter.stack(Sorter.byNumberValue(a.items.length, b.items.length), Sorter.byStringValue((_c = (_b = (_a = a.items[0]) === null || _a === void 0 ? void 0 : _a.product) === null || _b === void 0 ? void 0 : _b.name) !== null && _c !== void 0 ? _c : '', (_f = (_e = (_d = b.items[0]) === null || _d === void 0 ? void 0 : _d.product) === null || _e === void 0 ? void 0 : _e.name) !== null && _f !== void 0 ? _f : ''), Sorter.byStringValue((_h = (_g = a.items[0]) === null || _g === void 0 ? void 0 : _g.id) !== null && _h !== void 0 ? _h : '', (_k = (_j = b.items[0]) === null || _j === void 0 ? void 0 : _j.id) !== null && _k !== void 0 ? _k : ''), // group same options and items\n -1 * Sorter.byNumberValue(a.index, b.index));\n }\n get isValid() {\n return this.items.length > 0;\n }\n}\n__decorate([\n field({ decoder: new ArrayDecoder(CartItem) })\n], TicketPublic.prototype, \"items\", void 0);\n/**\n * Structure if you do have access to the order (needs proof first: be an admin or pass the order id along the request)\n */\nexport class TicketOrder extends Ticket {\n constructor() {\n super(...arguments);\n /**\n * itemId is private because access to the order is needed to be able to look it up.\n */\n this.itemId = null;\n }\n getPublic(order) {\n if (this.itemId) {\n const item = order.data.cart.items.find(i => i.id === this.itemId);\n return TicketPublic.create({\n ...this,\n items: item ? [item] : [],\n });\n }\n else {\n return TicketPublic.create({\n ...this,\n items: order.data.cart.items,\n });\n }\n }\n}\n__decorate([\n field({ decoder: StringDecoder })\n], TicketOrder.prototype, \"orderId\", void 0);\n__decorate([\n field({ decoder: StringDecoder, nullable: true })\n], TicketOrder.prototype, \"itemId\", void 0);\nexport class TicketPublicPrivate extends TicketPublic {\n constructor() {\n super(...arguments);\n /**\n * Private information\n */\n this.scannedBy = null;\n this.deletedAt = null;\n }\n getPublic() {\n return this;\n }\n}\n__decorate([\n field({ decoder: StringDecoder, nullable: true })\n], TicketPublicPrivate.prototype, \"scannedBy\", void 0);\n__decorate([\n field({ decoder: DateDecoder, nullable: true, version: 229 })\n], TicketPublicPrivate.prototype, \"deletedAt\", void 0);\n/**\n * Structure if you do have access to the order (needs proof first: be an admin or pass the order id along the request)\n */\nexport class TicketPrivate extends TicketOrder {\n constructor() {\n super(...arguments);\n /**\n * Private information\n */\n this.scannedBy = null;\n this.deletedAt = null;\n }\n getPublic(order) {\n return TicketPublicPrivate.create({\n ...super.getPublic(order),\n scannedBy: this.scannedBy,\n deletedAt: this.deletedAt,\n });\n }\n}\n__decorate([\n field({ decoder: StringDecoder, nullable: true })\n], TicketPrivate.prototype, \"scannedBy\", void 0);\n__decorate([\n field({ decoder: DateDecoder, nullable: true, version: 229 })\n], TicketPrivate.prototype, \"deletedAt\", void 0);\n//# sourceMappingURL=Ticket.js.map","import { __decorate } from \"tslib\";\nimport { ArrayDecoder, AutoEncoder, DateDecoder, EnumDecoder, field, IntegerDecoder, StringDecoder } from '@simonbackx/simple-encoding';\nimport { Formatter } from '@stamhoofd/utility';\nimport { BalanceItemWithPayments, BalanceItemWithPrivatePayments } from '../BalanceItem';\nimport { EmailRecipient } from '../email/Email';\nimport { Recipient, Replacement } from '../endpoints/EmailRequest';\nimport { Payment, PrivatePayment } from '../members/Payment';\nimport { downgradePaymentMethodV150, PaymentMethod, PaymentMethodHelper, PaymentMethodV150 } from '../PaymentMethod';\nimport { PaymentStatus } from '../PaymentStatus';\nimport { Checkout } from './Checkout';\nimport { Customer } from './Customer';\nimport { TicketPrivate } from './Ticket';\nimport { CheckoutMethodType } from './WebshopMetaData';\nexport var OrderStatusV103;\n(function (OrderStatusV103) {\n OrderStatusV103[\"Created\"] = \"Created\";\n OrderStatusV103[\"Prepared\"] = \"Prepared\";\n OrderStatusV103[\"Completed\"] = \"Completed\";\n OrderStatusV103[\"Canceled\"] = \"Canceled\";\n})(OrderStatusV103 || (OrderStatusV103 = {}));\nexport var OrderStatusV137;\n(function (OrderStatusV137) {\n OrderStatusV137[\"Created\"] = \"Created\";\n OrderStatusV137[\"Prepared\"] = \"Prepared\";\n OrderStatusV137[\"Collect\"] = \"Collect\";\n OrderStatusV137[\"Completed\"] = \"Completed\";\n OrderStatusV137[\"Canceled\"] = \"Canceled\";\n})(OrderStatusV137 || (OrderStatusV137 = {}));\nexport var OrderStatus;\n(function (OrderStatus) {\n OrderStatus[\"Created\"] = \"Created\";\n OrderStatus[\"Prepared\"] = \"Prepared\";\n OrderStatus[\"Collect\"] = \"Collect\";\n OrderStatus[\"Completed\"] = \"Completed\";\n OrderStatus[\"Canceled\"] = \"Canceled\";\n OrderStatus[\"Deleted\"] = \"Deleted\";\n})(OrderStatus || (OrderStatus = {}));\nexport class OrderStatusHelper {\n static getName(status) {\n switch (status) {\n case OrderStatus.Created: return 'Nieuw';\n case OrderStatus.Prepared: return 'Verwerkt';\n case OrderStatus.Collect: return 'Ligt klaar';\n case OrderStatus.Completed: return 'Voltooid';\n case OrderStatus.Canceled: return 'Geannuleerd';\n case OrderStatus.Deleted: return 'Verwijderd';\n }\n }\n static getColor(status) {\n switch (status) {\n case OrderStatus.Completed: return 'success';\n case OrderStatus.Prepared: return 'secundary';\n case OrderStatus.Collect: return 'tertiary';\n case OrderStatus.Canceled: return 'error';\n case OrderStatus.Created: return 'info';\n }\n return 'error';\n }\n}\nexport class OrderData extends Checkout {\n constructor() {\n super(...arguments);\n this.consumerLanguage = 'nl';\n this.comments = '';\n // Payment method is required\n this.paymentMethod = PaymentMethod.Unknown;\n }\n matchQuery(query) {\n const lowerQuery = query.toLowerCase();\n if (this.customer.firstName.toLowerCase().includes(lowerQuery)\n || this.customer.lastName.toLowerCase().includes(lowerQuery)\n || this.customer.name.toLowerCase().includes(lowerQuery)) {\n return true;\n }\n // Search product names\n for (const item of this.cart.items) {\n if (item.product.name.toLowerCase().includes(lowerQuery)) {\n return true;\n }\n }\n return false;\n }\n get shouldSendPaymentUpdates() {\n return (!this.timeSlot || (this.timeSlot.date.getTime() + 1000 * 60 * 60 * 24) > new Date().getTime());\n }\n get locationName() {\n var _a, _b, _c, _d;\n if (((_a = this.checkoutMethod) === null || _a === void 0 ? void 0 : _a.type) === CheckoutMethodType.Takeout) {\n return this.checkoutMethod.name;\n }\n if (((_b = this.checkoutMethod) === null || _b === void 0 ? void 0 : _b.type) === CheckoutMethodType.OnSite) {\n return this.checkoutMethod.name;\n }\n return (_d = (_c = this.address) === null || _c === void 0 ? void 0 : _c.shortString()) !== null && _d !== void 0 ? _d : 'Onbekend';\n }\n /**\n * Delete the personal data associated with an order when you delete an order.\n * We still need the other data (e.g. to inform other clients about a deleted order)\n * And also to match online payments and handle refunds if needed\n */\n removePersonalData() {\n // Clear customer data\n this.customer = Customer.create({});\n // Clear free inputs\n this.fieldAnswers = [];\n for (const item of this.cart.items) {\n item.fieldAnswers = [];\n }\n }\n}\n__decorate([\n field({ decoder: StringDecoder, version: 129 })\n], OrderData.prototype, \"consumerLanguage\", void 0);\n__decorate([\n field({ decoder: StringDecoder, version: 158 })\n], OrderData.prototype, \"comments\", void 0);\n__decorate([\n field({ decoder: new EnumDecoder(PaymentMethodV150) }),\n field({\n decoder: new EnumDecoder(PaymentMethod),\n version: 151,\n downgrade: downgradePaymentMethodV150,\n })\n], OrderData.prototype, \"paymentMethod\", void 0);\nexport class Order extends AutoEncoder {\n constructor() {\n super(...arguments);\n this.number = null;\n this.data = OrderData.create({});\n this.balanceItems = [];\n /**\n * @deprecated: replaced by balance items\n */\n this.payment = null;\n this.createdAt = new Date();\n this.updatedAt = new Date();\n this.validAt = null;\n this.status = OrderStatus.Created;\n }\n get shouldIncludeStock() {\n return this.status !== OrderStatus.Canceled && this.status !== OrderStatus.Deleted;\n }\n get pricePaid() {\n return this.balanceItems.reduce((total, item) => total + item.pricePaid, 0);\n }\n get totalToPay() {\n if (this.status === OrderStatus.Canceled || this.status === OrderStatus.Deleted) {\n return 0;\n }\n return this.data.totalPrice;\n }\n get openBalance() {\n return this.totalToPay - this.pricePaid;\n }\n updatePricePaid() {\n for (const item of this.balanceItems) {\n item.updatePricePaid();\n }\n }\n get payments() {\n return this.balanceItems.flatMap(i => i.payments.map(p => p.payment)).filter(p => p.status !== PaymentStatus.Failed).sort((a, b) => a.createdAt.getTime() - b.createdAt.getTime());\n }\n matchQuery(query) {\n var _a;\n if (this.number + '' === query) {\n return true;\n }\n if ((_a = this.payment) === null || _a === void 0 ? void 0 : _a.matchQuery(query)) {\n return true;\n }\n return this.data.matchQuery(query);\n }\n getHTMLTable() {\n var _a, _b;\n const allFree = this.data.cart.items.every(i => i.getPriceWithoutDiscounts() === 0);\n if (allFree) {\n let str = ``;\n for (const item of this.data.cart.items) {\n str += ``;\n }\n return str + '
ArtikelAantal

${Formatter.escapeHtml(item.product.name)}

${item.description.length > 0 ? '

' + Formatter.escapeHtml(item.description) + '

' : ''}
${Formatter.escapeHtml((_a = item.formattedAmount) !== null && _a !== void 0 ? _a : '1')}
';\n }\n let str = ``;\n for (const item of this.data.cart.items) {\n str += ``;\n }\n return str + '
ArtikelAantal

${Formatter.escapeHtml(item.product.name)}

${item.description.length > 0 ? '

' + Formatter.escapeHtml(item.description) + '

' : ''}${'

' + Formatter.escapeHtml(item.getFormattedPriceWithDiscount() || item.getFormattedPriceWithoutDiscount()) + '

'}
${Formatter.escapeHtml((_b = item.formattedAmount) !== null && _b !== void 0 ? _b : '1')}
';\n }\n getDetailsHTMLTable() {\n var _a, _b, _c, _d, _e, _f, _g, _h;\n let str = ``;\n const data = [\n {\n title: 'Bestelnummer',\n value: '' + ((_a = this.number) !== null && _a !== void 0 ? _a : '?'),\n },\n {\n title: ((order) => {\n var _a, _b;\n if (((_a = order.data.checkoutMethod) === null || _a === void 0 ? void 0 : _a.type) === CheckoutMethodType.Takeout) {\n return 'Afhaallocatie';\n }\n if (((_b = order.data.checkoutMethod) === null || _b === void 0 ? void 0 : _b.type) === CheckoutMethodType.OnSite) {\n return 'Locatie';\n }\n return 'Leveringsadres';\n })(this),\n value: ((order) => {\n var _a, _b, _c, _d;\n if (((_a = order.data.checkoutMethod) === null || _a === void 0 ? void 0 : _a.type) === CheckoutMethodType.Takeout) {\n return order.data.checkoutMethod.name;\n }\n if (((_b = order.data.checkoutMethod) === null || _b === void 0 ? void 0 : _b.type) === CheckoutMethodType.OnSite) {\n return order.data.checkoutMethod.name;\n }\n return (_d = (_c = order.data.address) === null || _c === void 0 ? void 0 : _c.shortString()) !== null && _d !== void 0 ? _d : '';\n })(this),\n },\n ...((((_b = this.data.checkoutMethod) === null || _b === void 0 ? void 0 : _b.type) === CheckoutMethodType.Takeout || ((_c = this.data.checkoutMethod) === null || _c === void 0 ? void 0 : _c.type) === CheckoutMethodType.OnSite) && ((_d = this.data.checkoutMethod) === null || _d === void 0 ? void 0 : _d.address)\n ? [\n {\n title: 'Adres',\n value: ((order) => {\n var _a, _b, _c;\n return (_c = (_b = (_a = order.data.checkoutMethod) === null || _a === void 0 ? void 0 : _a.address) === null || _b === void 0 ? void 0 : _b.shortString()) !== null && _c !== void 0 ? _c : '';\n })(this),\n },\n ]\n : []),\n {\n title: 'Datum',\n value: Formatter.capitalizeFirstLetter((_f = (_e = this.data.timeSlot) === null || _e === void 0 ? void 0 : _e.dateString()) !== null && _f !== void 0 ? _f : ''),\n },\n {\n title: 'Tijdstip',\n value: (_h = (_g = this.data.timeSlot) === null || _g === void 0 ? void 0 : _g.timeRangeString()) !== null && _h !== void 0 ? _h : '',\n },\n {\n title: 'Naam',\n value: this.data.customer.name,\n },\n ...(this.data.customer.phone\n ? [\n {\n title: 'GSM-nummer',\n value: this.data.customer.phone,\n },\n ]\n : []),\n ...this.data.fieldAnswers.filter(a => a.answer).map(a => ({\n title: a.field.name,\n value: a.answer,\n })),\n ...((this.data.paymentMethod !== PaymentMethod.Unknown)\n ? [\n {\n title: 'Betaalmethode',\n value: Formatter.capitalizeFirstLetter(PaymentMethodHelper.getName(this.data.paymentMethod)),\n },\n ]\n : []),\n ...this.data.priceBreakown.map((p) => {\n return {\n title: p.name,\n value: Formatter.price(p.price),\n };\n }),\n ];\n for (const replacement of data) {\n if (replacement.value.length === 0) {\n continue;\n }\n str += ``;\n }\n return str + '

${Formatter.escapeHtml(replacement.title)}

${Formatter.escapeHtml(replacement.value)}
';\n }\n getEmailRecipient(organization, webshop) {\n var _a, _b, _c, _d, _e, _f, _g;\n const customer = this.data.customer;\n const order = this;\n const email = customer.email.toLowerCase();\n return EmailRecipient.create({\n firstName: customer.firstName,\n lastName: customer.lastName,\n email,\n replacements: [\n Replacement.create({\n token: 'orderUrl',\n value: 'https://' + (webshop === null || webshop === void 0 ? void 0 : webshop.getUrl(organization)) + '/order/' + (order.id),\n }),\n Replacement.create({\n token: 'nr',\n value: ((_a = order.number) !== null && _a !== void 0 ? _a : '') + '',\n }),\n Replacement.create({\n token: 'orderPrice',\n value: Formatter.price(order.data.totalPrice),\n }),\n Replacement.create({\n token: 'priceToPay',\n value: order.openBalance <= 0 ? '' : Formatter.price(order.openBalance),\n }),\n Replacement.create({\n token: 'paymentMethod',\n value: order.data.paymentMethod,\n }),\n // todo?\n // Replacement.create({\n // token: 'transferDescription',\n // value: forcePayment?.status !== PaymentStatus.Succeeded && forcePayment?.method === PaymentMethod.Transfer ? (forcePayment?.transferDescription ?? '') : '',\n // }),\n // Replacement.create({\n // token: 'transferBankAccount',\n // value: forcePayment?.status !== PaymentStatus.Succeeded && forcePayment?.method === PaymentMethod.Transfer ? ((webshop?.meta.transferSettings.iban ? webshop?.meta.transferSettings.iban : organization.meta.transferSettings.iban) ?? '') : '',\n // }),\n // Replacement.create({\n // token: 'transferBankCreditor',\n // value: forcePayment?.status !== PaymentStatus.Succeeded && forcePayment?.method === PaymentMethod.Transfer ? ((webshop?.meta.transferSettings.creditor ? webshop?.meta.transferSettings.creditor : organization.meta.transferSettings.creditor) ?? organization.name) : '',\n // }),\n Replacement.create({\n token: 'orderStatus',\n value: OrderStatusHelper.getName(order.status),\n }),\n Replacement.create({\n token: 'orderMethod',\n value: (_c = (_b = order.data.checkoutMethod) === null || _b === void 0 ? void 0 : _b.typeName) !== null && _c !== void 0 ? _c : '',\n }),\n Replacement.create({\n token: 'orderLocation',\n value: order.data.locationName,\n }),\n Replacement.create({\n token: 'orderDate',\n value: (_e = (_d = order.data.timeSlot) === null || _d === void 0 ? void 0 : _d.dateString()) !== null && _e !== void 0 ? _e : '',\n }),\n Replacement.create({\n token: 'orderTime',\n value: (_g = (_f = order.data.timeSlot) === null || _f === void 0 ? void 0 : _f.timeRangeString()) !== null && _g !== void 0 ? _g : '',\n }),\n Replacement.create({\n token: 'orderDetailsTable',\n value: '',\n html: order.getDetailsHTMLTable(),\n }),\n Replacement.create({\n token: 'orderTable',\n value: '',\n html: order.getHTMLTable(),\n }),\n // todo?\n // Replacement.create({\n // token: 'paymentTable',\n // value: '',\n // html: forcePayment?.getHTMLTable(),\n // }),\n Replacement.create({\n token: 'organizationName',\n value: organization.name,\n }),\n Replacement.create({\n token: 'webshopName',\n value: webshop.meta.name,\n }),\n ],\n });\n }\n getRecipient(organization, webshop, payment) {\n var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;\n const order = this;\n const email = order.data.customer.email.toLowerCase();\n const forcePayment = payment !== null && payment !== void 0 ? payment : order.payment;\n return Recipient.create({\n firstName: order.data.customer.firstName,\n lastName: order.data.customer.lastName,\n email,\n replacements: [\n Replacement.create({\n token: 'orderUrl',\n value: 'https://' + (webshop === null || webshop === void 0 ? void 0 : webshop.getUrl(organization)) + '/order/' + (order.id),\n }),\n Replacement.create({\n token: 'nr',\n value: ((_a = order.number) !== null && _a !== void 0 ? _a : '') + '',\n }),\n Replacement.create({\n token: 'orderPrice',\n value: Formatter.price(order.data.totalPrice),\n }),\n Replacement.create({\n token: 'priceToPay',\n value: (forcePayment === null || forcePayment === void 0 ? void 0 : forcePayment.status) !== PaymentStatus.Succeeded ? Formatter.price((_b = forcePayment === null || forcePayment === void 0 ? void 0 : forcePayment.price) !== null && _b !== void 0 ? _b : 0) : '',\n }),\n Replacement.create({\n token: 'paymentMethod',\n value: (forcePayment === null || forcePayment === void 0 ? void 0 : forcePayment.method) ? PaymentMethodHelper.getName(forcePayment.method) : PaymentMethodHelper.getName(this.data.paymentMethod),\n }),\n Replacement.create({\n token: 'transferDescription',\n value: (forcePayment === null || forcePayment === void 0 ? void 0 : forcePayment.status) !== PaymentStatus.Succeeded && (forcePayment === null || forcePayment === void 0 ? void 0 : forcePayment.method) === PaymentMethod.Transfer ? ((_c = forcePayment === null || forcePayment === void 0 ? void 0 : forcePayment.transferDescription) !== null && _c !== void 0 ? _c : '') : '',\n }),\n Replacement.create({\n token: 'transferBankAccount',\n value: (forcePayment === null || forcePayment === void 0 ? void 0 : forcePayment.status) !== PaymentStatus.Succeeded && (forcePayment === null || forcePayment === void 0 ? void 0 : forcePayment.method) === PaymentMethod.Transfer ? ((_d = ((webshop === null || webshop === void 0 ? void 0 : webshop.meta.transferSettings.iban) ? webshop === null || webshop === void 0 ? void 0 : webshop.meta.transferSettings.iban : organization.meta.transferSettings.iban)) !== null && _d !== void 0 ? _d : '') : '',\n }),\n Replacement.create({\n token: 'transferBankCreditor',\n value: (forcePayment === null || forcePayment === void 0 ? void 0 : forcePayment.status) !== PaymentStatus.Succeeded && (forcePayment === null || forcePayment === void 0 ? void 0 : forcePayment.method) === PaymentMethod.Transfer ? ((_e = ((webshop === null || webshop === void 0 ? void 0 : webshop.meta.transferSettings.creditor) ? webshop === null || webshop === void 0 ? void 0 : webshop.meta.transferSettings.creditor : organization.meta.transferSettings.creditor)) !== null && _e !== void 0 ? _e : organization.name) : '',\n }),\n Replacement.create({\n token: 'orderStatus',\n value: OrderStatusHelper.getName(order.status),\n }),\n Replacement.create({\n token: 'orderMethod',\n value: (_g = (_f = order.data.checkoutMethod) === null || _f === void 0 ? void 0 : _f.typeName) !== null && _g !== void 0 ? _g : '',\n }),\n Replacement.create({\n token: 'orderLocation',\n value: ((order) => {\n var _a, _b, _c, _d;\n if (((_a = order.data.checkoutMethod) === null || _a === void 0 ? void 0 : _a.type) === CheckoutMethodType.Takeout) {\n return order.data.checkoutMethod.name;\n }\n if (((_b = order.data.checkoutMethod) === null || _b === void 0 ? void 0 : _b.type) === CheckoutMethodType.OnSite) {\n return order.data.checkoutMethod.name;\n }\n return (_d = (_c = order.data.address) === null || _c === void 0 ? void 0 : _c.shortString()) !== null && _d !== void 0 ? _d : '';\n })(order),\n }),\n Replacement.create({\n token: 'orderDate',\n value: (_j = (_h = order.data.timeSlot) === null || _h === void 0 ? void 0 : _h.dateString()) !== null && _j !== void 0 ? _j : '',\n }),\n Replacement.create({\n token: 'orderTime',\n value: (_l = (_k = order.data.timeSlot) === null || _k === void 0 ? void 0 : _k.timeRangeString()) !== null && _l !== void 0 ? _l : '',\n }),\n Replacement.create({\n token: 'orderDetailsTable',\n value: '',\n html: order.getDetailsHTMLTable(),\n }),\n Replacement.create({\n token: 'orderTable',\n value: '',\n html: order.getHTMLTable(),\n }),\n Replacement.create({\n token: 'paymentTable',\n value: '',\n html: forcePayment === null || forcePayment === void 0 ? void 0 : forcePayment.getHTMLTable(),\n }),\n Replacement.create({\n token: 'organizationName',\n value: organization.name,\n }),\n Replacement.create({\n token: 'webshopName',\n value: webshop.meta.name,\n }),\n ],\n });\n }\n}\n__decorate([\n field({ decoder: StringDecoder })\n], Order.prototype, \"id\", void 0);\n__decorate([\n field({ decoder: StringDecoder, version: 140 })\n], Order.prototype, \"webshopId\", void 0);\n__decorate([\n field({ decoder: IntegerDecoder, nullable: true })\n], Order.prototype, \"number\", void 0);\n__decorate([\n field({ decoder: OrderData })\n], Order.prototype, \"data\", void 0);\n__decorate([\n field({ decoder: new ArrayDecoder(BalanceItemWithPayments), version: 225 })\n], Order.prototype, \"balanceItems\", void 0);\n__decorate([\n field({ decoder: Payment, nullable: true })\n], Order.prototype, \"payment\", void 0);\n__decorate([\n field({ decoder: DateDecoder })\n], Order.prototype, \"createdAt\", void 0);\n__decorate([\n field({ decoder: DateDecoder, version: 107 })\n], Order.prototype, \"updatedAt\", void 0);\n__decorate([\n field({ decoder: DateDecoder, nullable: true })\n], Order.prototype, \"validAt\", void 0);\n__decorate([\n field({ decoder: new EnumDecoder(OrderStatusV103), version: 47 })\n // Migrate newer order status .collect in case of older client\n ,\n field({\n decoder: new EnumDecoder(OrderStatusV137),\n version: 104,\n upgrade: (old) => {\n return old;\n },\n downgrade: (n) => {\n if (n === OrderStatusV137.Collect) {\n // Map to other status\n return OrderStatusV103.Prepared;\n }\n return n;\n },\n }),\n field({\n decoder: new EnumDecoder(OrderStatus),\n version: 138,\n upgrade: (old) => {\n return old;\n },\n downgrade: (n) => {\n if (n === OrderStatus.Deleted) {\n // Map to other status\n return OrderStatusV137.Canceled;\n }\n return n;\n },\n })\n], Order.prototype, \"status\", void 0);\nexport class PrivateOrder extends Order {\n constructor() {\n super(...arguments);\n /**\n * @deprecated\n */\n this.payment = null;\n this.balanceItems = [];\n }\n get payments() {\n return this.balanceItems.flatMap(i => i.payments.map(p => p.payment)).filter(p => p.status !== PaymentStatus.Failed).sort((a, b) => a.createdAt.getTime() - b.createdAt.getTime());\n }\n}\n__decorate([\n field({ decoder: PrivatePayment, nullable: true })\n], PrivateOrder.prototype, \"payment\", void 0);\n__decorate([\n field({ decoder: new ArrayDecoder(BalanceItemWithPrivatePayments), nullable: true, version: 225 })\n], PrivateOrder.prototype, \"balanceItems\", void 0);\nexport class PrivateOrderWithTickets extends PrivateOrder {\n constructor() {\n super(...arguments);\n this.tickets = [];\n }\n /**\n * Adds or removes tickets as appropriate\n */\n addTickets(tickets) {\n for (const ticket of tickets) {\n if (ticket.orderId === this.id) {\n if (ticket.deletedAt) {\n const existingIndex = this.tickets.findIndex(t => t.id === ticket.id);\n if (existingIndex !== -1) {\n this.tickets.splice(existingIndex, 1);\n }\n }\n else {\n const existing = this.tickets.find(t => t.id === ticket.id);\n if (existing) {\n existing.set(ticket);\n }\n else {\n this.tickets.push(ticket);\n }\n }\n }\n }\n }\n addTicketPatches(patches) {\n PrivateOrderWithTickets.addTicketPatches([this], patches);\n }\n static addTicketPatches(orders, patches) {\n mainLoop: for (const patch of patches) {\n for (const order of orders) {\n for (const ticket of order.tickets) {\n if (ticket.id === patch.id) {\n ticket.set(ticket.patch(patch));\n continue mainLoop;\n }\n }\n }\n }\n }\n}\n__decorate([\n field({ decoder: new ArrayDecoder(TicketPrivate) })\n], PrivateOrderWithTickets.prototype, \"tickets\", void 0);\nexport class OrderResponse extends AutoEncoder {\n constructor() {\n super(...arguments);\n this.paymentUrl = null;\n }\n}\n__decorate([\n field({ decoder: StringDecoder, nullable: true })\n], OrderResponse.prototype, \"paymentUrl\", void 0);\n__decorate([\n field({ decoder: Order })\n], OrderResponse.prototype, \"order\", void 0);\n//# sourceMappingURL=Order.js.map","import { __decorate } from \"tslib\";\nimport { field } from '@simonbackx/simple-encoding';\nimport { Formatter } from '@stamhoofd/utility';\nimport { BalanceItem, BalanceItemPayment } from './BalanceItem';\nimport { RegistrationWithMember } from './members/RegistrationWithMember';\nimport { Order } from './webshops/Order';\n// Do we still need this?\nexport class BalanceItemDetailed extends BalanceItem {\n constructor() {\n super(...arguments);\n this.registration = null;\n this.order = null;\n }\n}\n__decorate([\n field({ decoder: RegistrationWithMember, nullable: true })\n], BalanceItemDetailed.prototype, \"registration\", void 0);\n__decorate([\n field({ decoder: Order, nullable: true })\n], BalanceItemDetailed.prototype, \"order\", void 0);\nexport class BalanceItemPaymentDetailed extends BalanceItemPayment {\n /**\n * Note: this can be a float in case of partial payments\n * Try to avoid using this in calculations, as this is not super reliable\n *\n * Always round when displaying!\n */\n get amount() {\n if (this.unitPrice === 0) {\n // Not possible to calculate amount\n return this.balanceItem.amount;\n }\n return this.price / this.unitPrice;\n }\n get unitPrice() {\n if (this.price < 0 && this.balanceItem.unitPrice > 0) {\n return -this.balanceItem.unitPrice;\n }\n return this.balanceItem.unitPrice;\n }\n /**\n * When displayed as a single item\n */\n get itemPrefix() {\n return this.balanceItem.itemPrefix;\n }\n /**\n * When displayed as a single item\n */\n get itemTitle() {\n return this.balanceItem.itemTitle;\n }\n /**\n * When displayed as a single item\n */\n get itemDescription() {\n return this.balanceItem.itemDescription;\n }\n toString() {\n return Formatter.float(this.amount) + 'x ' + this.itemTitle + (this.itemDescription ? ' (' + this.itemDescription + ')' : '');\n }\n}\n__decorate([\n field({ decoder: BalanceItem })\n], BalanceItemPaymentDetailed.prototype, \"balanceItem\", void 0);\n//# sourceMappingURL=BalanceItemDetailed.js.map","import { __decorate } from \"tslib\";\nimport { ArrayDecoder, field, IntegerDecoder, StringDecoder } from '@simonbackx/simple-encoding';\nimport { Formatter } from '@stamhoofd/utility';\nimport { BalanceItemPaymentDetailed } from '../BalanceItemDetailed';\nimport { Payment, Settlement } from './Payment';\nimport { BalanceItemRelationType } from '../BalanceItem';\nexport class PaymentGeneral extends Payment {\n constructor() {\n super(...arguments);\n this.balanceItemPayments = [];\n this.iban = null;\n this.ibanName = null;\n /**\n * Only set for administrators with the correct permissions\n */\n this.settlement = null;\n /**\n * Only set for administrators with the correct permissions\n */\n this.transferFee = 0;\n /**\n * Only set for administrators with the correct permissions\n */\n this.stripeAccountId = null;\n }\n get groupIds() {\n const ids = this.balanceItemPayments.flatMap((p) => {\n var _a;\n const id = (_a = p.balanceItem.relations.get(BalanceItemRelationType.Group)) === null || _a === void 0 ? void 0 : _a.id;\n return id ? [id] : [];\n });\n return Formatter.uniqueArray(ids);\n }\n get webshopIds() {\n const ids = this.balanceItemPayments.flatMap((p) => {\n var _a;\n const id = (_a = p.balanceItem.relations.get(BalanceItemRelationType.Webshop)) === null || _a === void 0 ? void 0 : _a.id;\n return id ? [id] : [];\n });\n return Formatter.uniqueArray(ids);\n }\n get memberNames() {\n const ids = this.balanceItemPayments.flatMap((p) => {\n var _a;\n const id = (_a = p.balanceItem.relations.get(BalanceItemRelationType.Member)) === null || _a === void 0 ? void 0 : _a.name;\n return id ? [id] : [];\n });\n return Formatter.joinLast(Formatter.uniqueArray(ids), ', ', ' en ');\n }\n getDetailsHTMLTable() {\n let str = '';\n str += ``;\n for (const balanceItemPayment of this.balanceItemPayments) {\n str += ``;\n }\n return str + '
BeschrijvingPrijs

${Formatter.escapeHtml(balanceItemPayment.balanceItem.description)}

${Formatter.escapeHtml(Formatter.price(balanceItemPayment.price))}
';\n }\n getShortDescription() {\n const shortDescriptions = this.balanceItemPayments.map(p => p.balanceItem.paymentShortDescription).filter(p => p !== null);\n // Count the number of times each description occurs and add prefix if more than 1\n const counts = {};\n for (const shortDescription of shortDescriptions) {\n counts[shortDescription] = (counts[shortDescription] || 0) + 1;\n }\n // Add prefix if more than 1\n const arr = [];\n for (const shortDescription of Object.keys(counts)) {\n if (counts[shortDescription] > 1) {\n arr.push(counts[shortDescription] + ' x ' + shortDescription);\n }\n else {\n arr.push(shortDescription);\n }\n }\n return Formatter.capitalizeFirstLetter(Formatter.joinLast(arr, ', ', ' en '));\n }\n}\n__decorate([\n field({ decoder: new ArrayDecoder(BalanceItemPaymentDetailed) })\n], PaymentGeneral.prototype, \"balanceItemPayments\", void 0);\n__decorate([\n field({ decoder: StringDecoder, nullable: true })\n], PaymentGeneral.prototype, \"iban\", void 0);\n__decorate([\n field({ decoder: StringDecoder, nullable: true })\n], PaymentGeneral.prototype, \"ibanName\", void 0);\n__decorate([\n field({ decoder: Settlement, nullable: true })\n], PaymentGeneral.prototype, \"settlement\", void 0);\n__decorate([\n field({ decoder: IntegerDecoder, version: 196 })\n], PaymentGeneral.prototype, \"transferFee\", void 0);\n__decorate([\n field({ decoder: StringDecoder, nullable: true, version: 198 })\n], PaymentGeneral.prototype, \"stripeAccountId\", void 0);\n//# sourceMappingURL=PaymentGeneral.js.map","import { __decorate } from \"tslib\";\nimport { ArrayDecoder, AutoEncoder, EnumDecoder, field, IntegerDecoder, StringDecoder } from '@simonbackx/simple-encoding';\nimport { v4 as uuidv4 } from 'uuid';\nimport { BalanceItemWithPayments } from './BalanceItem';\nimport { PaymentGeneral } from './members/PaymentGeneral';\nexport var ReceivableBalanceType;\n(function (ReceivableBalanceType) {\n ReceivableBalanceType[\"organization\"] = \"organization\";\n ReceivableBalanceType[\"member\"] = \"member\";\n ReceivableBalanceType[\"user\"] = \"user\";\n})(ReceivableBalanceType || (ReceivableBalanceType = {}));\nexport function getReceivableBalanceTypeName(type, $t) {\n switch (type) {\n case ReceivableBalanceType.organization: return $t('b66501e0-f6de-4259-95ef-13590b24182b');\n case ReceivableBalanceType.member: return $t('146d0874-2f4d-4374-8808-61a4bd953354');\n case ReceivableBalanceType.user: return $t('fbb0dee5-c500-4bb4-81d6-945666ae4784');\n }\n}\nexport class ReceivableBalanceObjectContact extends AutoEncoder {\n constructor() {\n super(...arguments);\n this.firstName = null;\n this.lastName = null;\n this.emails = [];\n }\n}\n__decorate([\n field({ decoder: StringDecoder, nullable: true })\n], ReceivableBalanceObjectContact.prototype, \"firstName\", void 0);\n__decorate([\n field({ decoder: StringDecoder, nullable: true })\n], ReceivableBalanceObjectContact.prototype, \"lastName\", void 0);\n__decorate([\n field({ decoder: new ArrayDecoder(StringDecoder) })\n], ReceivableBalanceObjectContact.prototype, \"emails\", void 0);\nexport class ReceivableBalanceObject extends AutoEncoder {\n constructor() {\n super(...arguments);\n this.name = '';\n // E-mail addresses to reach out to this entity\n this.contacts = [];\n }\n}\n__decorate([\n field({ decoder: StringDecoder, defaultValue: () => uuidv4() })\n], ReceivableBalanceObject.prototype, \"id\", void 0);\n__decorate([\n field({ decoder: StringDecoder })\n], ReceivableBalanceObject.prototype, \"name\", void 0);\n__decorate([\n field({ decoder: new ArrayDecoder(ReceivableBalanceObjectContact) })\n], ReceivableBalanceObject.prototype, \"contacts\", void 0);\n/**\n * An entity (organization, member or user) that has an outstanding balance towards an organization\n */\nexport class ReceivableBalance extends AutoEncoder {\n constructor() {\n super(...arguments);\n this.amount = 0;\n this.amountPending = 0;\n }\n get amountOpen() {\n return this.amount - this.amountPending;\n }\n}\n__decorate([\n field({ decoder: StringDecoder, defaultValue: () => uuidv4() })\n], ReceivableBalance.prototype, \"id\", void 0);\n__decorate([\n field({ decoder: new EnumDecoder(ReceivableBalanceType) })\n], ReceivableBalance.prototype, \"objectType\", void 0);\n__decorate([\n field({ decoder: ReceivableBalanceObject })\n], ReceivableBalance.prototype, \"object\", void 0);\n__decorate([\n field({ decoder: StringDecoder })\n], ReceivableBalance.prototype, \"organizationId\", void 0);\n__decorate([\n field({ decoder: IntegerDecoder })\n], ReceivableBalance.prototype, \"amount\", void 0);\n__decorate([\n field({ decoder: IntegerDecoder })\n], ReceivableBalance.prototype, \"amountPending\", void 0);\nexport class DetailedReceivableBalance extends ReceivableBalance {\n constructor() {\n super(...arguments);\n this.balanceItems = [];\n this.payments = [];\n }\n}\n__decorate([\n field({ decoder: new ArrayDecoder(BalanceItemWithPayments) })\n], DetailedReceivableBalance.prototype, \"balanceItems\", void 0);\n__decorate([\n field({ decoder: new ArrayDecoder(PaymentGeneral) })\n], DetailedReceivableBalance.prototype, \"payments\", void 0);\n//# sourceMappingURL=ReceivableBalance.js.map","import { __decorate } from \"tslib\";\nimport { field } from '@simonbackx/simple-encoding';\nimport { MembersBlob } from './members/MemberWithRegistrationsBlob';\nimport { User } from './User';\nexport class UserWithMembers extends User {\n constructor() {\n super(...arguments);\n this.members = MembersBlob.create({});\n }\n}\n__decorate([\n field({ decoder: MembersBlob })\n], UserWithMembers.prototype, \"members\", void 0);\n//# sourceMappingURL=UserWithMembers.js.map","import { __decorate } from \"tslib\";\nimport { AutoEncoder, BooleanDecoder, IntegerDecoder, MapDecoder, StringDecoder, field } from '@simonbackx/simple-encoding';\nexport class ChargeMembershipsTypeSummary extends AutoEncoder {\n constructor() {\n super(...arguments);\n this.memberships = 0;\n this.members = 0;\n this.price = 0;\n this.organizations = 0;\n }\n}\n__decorate([\n field({ decoder: IntegerDecoder })\n], ChargeMembershipsTypeSummary.prototype, \"memberships\", void 0);\n__decorate([\n field({ decoder: IntegerDecoder })\n], ChargeMembershipsTypeSummary.prototype, \"members\", void 0);\n__decorate([\n field({ decoder: IntegerDecoder })\n], ChargeMembershipsTypeSummary.prototype, \"price\", void 0);\n__decorate([\n field({ decoder: IntegerDecoder })\n], ChargeMembershipsTypeSummary.prototype, \"organizations\", void 0);\nexport class ChargeMembershipsSummary extends AutoEncoder {\n constructor() {\n super(...arguments);\n this.running = false;\n this.memberships = 0;\n this.members = 0;\n this.price = 0;\n this.organizations = 0;\n this.membershipsPerType = new Map();\n }\n}\n__decorate([\n field({ decoder: BooleanDecoder })\n], ChargeMembershipsSummary.prototype, \"running\", void 0);\n__decorate([\n field({ decoder: IntegerDecoder })\n], ChargeMembershipsSummary.prototype, \"memberships\", void 0);\n__decorate([\n field({ decoder: IntegerDecoder })\n], ChargeMembershipsSummary.prototype, \"members\", void 0);\n__decorate([\n field({ decoder: IntegerDecoder })\n], ChargeMembershipsSummary.prototype, \"price\", void 0);\n__decorate([\n field({ decoder: IntegerDecoder })\n], ChargeMembershipsSummary.prototype, \"organizations\", void 0);\n__decorate([\n field({ decoder: new MapDecoder(StringDecoder, ChargeMembershipsTypeSummary) })\n], ChargeMembershipsSummary.prototype, \"membershipsPerType\", void 0);\n//# sourceMappingURL=ChargeMembershipsSummary.js.map","import { __decorate } from \"tslib\";\nimport { AutoEncoder, field, StringDecoder } from '@simonbackx/simple-encoding';\nimport { Organization } from '../Organization';\nimport { NewUser } from '../User';\nexport class CreateOrganization extends AutoEncoder {\n constructor() {\n super(...arguments);\n this.registerCode = null;\n }\n}\n__decorate([\n field({ decoder: Organization })\n], CreateOrganization.prototype, \"organization\", void 0);\n__decorate([\n field({ decoder: NewUser })\n], CreateOrganization.prototype, \"user\", void 0);\n__decorate([\n field({ decoder: StringDecoder, nullable: true, version: 24 })\n], CreateOrganization.prototype, \"registerCode\", void 0);\n//# sourceMappingURL=CreateOrganization.js.map","import { __decorate } from \"tslib\";\nimport { AutoEncoder, EmailDecoder, field } from '@simonbackx/simple-encoding';\nexport class ForgotPasswordRequest extends AutoEncoder {\n}\n__decorate([\n field({ decoder: EmailDecoder })\n], ForgotPasswordRequest.prototype, \"email\", void 0);\n//# sourceMappingURL=ForgotPasswordRequest.js.map","import { __decorate } from \"tslib\";\nimport { ArrayDecoder, AutoEncoder, field } from '@simonbackx/simple-encoding';\nimport { Group } from '../Group';\nimport { Organization } from '../Organization';\nexport class GroupsWithOrganizations extends AutoEncoder {\n constructor() {\n super(...arguments);\n this.groups = [];\n this.organizations = [];\n }\n}\n__decorate([\n field({ decoder: new ArrayDecoder(Group) })\n], GroupsWithOrganizations.prototype, \"groups\", void 0);\n__decorate([\n field({ decoder: new ArrayDecoder(Organization) })\n], GroupsWithOrganizations.prototype, \"organizations\", void 0);\n//# sourceMappingURL=GroupsWithOrganizations.js.map","import { __decorate } from \"tslib\";\nimport { ArrayDecoder, AutoEncoder, field } from '@simonbackx/simple-encoding';\nimport { UserWithMembers } from '../UserWithMembers';\nexport class OrganizationAdmins extends AutoEncoder {\n constructor() {\n super(...arguments);\n this.users = [];\n }\n}\n__decorate([\n field({ decoder: new ArrayDecoder(UserWithMembers) })\n], OrganizationAdmins.prototype, \"users\", void 0);\n//# sourceMappingURL=OrganizationAdmins.js.map","import { __decorate } from \"tslib\";\nimport { ArrayDecoder, AutoEncoder, field, IntegerDecoder } from '@simonbackx/simple-encoding';\nimport { Organization } from '../Organization';\nimport { BalanceItemWithPayments } from '../BalanceItem';\nimport { PaymentGeneral } from '../members/PaymentGeneral';\nexport class PayableBalance extends AutoEncoder {\n constructor() {\n super(...arguments);\n this.amount = 0;\n this.amountPending = 0;\n }\n}\n__decorate([\n field({ decoder: Organization })\n], PayableBalance.prototype, \"organization\", void 0);\n__decorate([\n field({ decoder: IntegerDecoder })\n], PayableBalance.prototype, \"amount\", void 0);\n__decorate([\n field({ decoder: IntegerDecoder, version: 335 })\n], PayableBalance.prototype, \"amountPending\", void 0);\nexport class PayableBalanceCollection extends AutoEncoder {\n constructor() {\n super(...arguments);\n /**\n * Debt you have to other organizations\n */\n this.organizations = [];\n }\n}\n__decorate([\n field({ decoder: new ArrayDecoder(PayableBalance) })\n], PayableBalanceCollection.prototype, \"organizations\", void 0);\nexport class DetailedPayableBalance extends AutoEncoder {\n constructor() {\n super(...arguments);\n this.balanceItems = [];\n this.payments = [];\n }\n}\n__decorate([\n field({ decoder: Organization })\n], DetailedPayableBalance.prototype, \"organization\", void 0);\n__decorate([\n field({ decoder: new ArrayDecoder(BalanceItemWithPayments) })\n], DetailedPayableBalance.prototype, \"balanceItems\", void 0);\n__decorate([\n field({ decoder: new ArrayDecoder(PaymentGeneral) })\n], DetailedPayableBalance.prototype, \"payments\", void 0);\nexport class DetailedPayableBalanceCollection extends AutoEncoder {\n constructor() {\n super(...arguments);\n /**\n * Debt you have to other organizations\n */\n this.organizations = [];\n }\n}\n__decorate([\n field({ decoder: new ArrayDecoder(DetailedPayableBalance) })\n], DetailedPayableBalanceCollection.prototype, \"organizations\", void 0);\n//# sourceMappingURL=PayableBalanceCollection.js.map","import { __decorate } from \"tslib\";\nimport { ArrayDecoder, AutoEncoder, field, StringDecoder } from '@simonbackx/simple-encoding';\nimport { MembersBlob } from '../members/MemberWithRegistrationsBlob';\nimport { Payment } from '../members/Payment';\nimport { RegistrationWithMember } from '../members/RegistrationWithMember';\nexport class RegisterResponse extends AutoEncoder {\n constructor() {\n super(...arguments);\n this.payment = null;\n this.paymentUrl = null;\n this.registrations = [];\n }\n}\n__decorate([\n field({ decoder: Payment, nullable: true })\n], RegisterResponse.prototype, \"payment\", void 0);\n__decorate([\n field({ decoder: StringDecoder, nullable: true, version: 28 })\n], RegisterResponse.prototype, \"paymentUrl\", void 0);\n__decorate([\n field({ decoder: MembersBlob })\n], RegisterResponse.prototype, \"members\", void 0);\n__decorate([\n field({ decoder: new ArrayDecoder(RegistrationWithMember), version: 19 })\n], RegisterResponse.prototype, \"registrations\", void 0);\n//# sourceMappingURL=RegisterResponse.js.map","import { __decorate } from \"tslib\";\nimport { AutoEncoder, field, StringDecoder } from '@simonbackx/simple-encoding';\nexport class SignupResponse extends AutoEncoder {\n}\n__decorate([\n field({ decoder: StringDecoder })\n], SignupResponse.prototype, \"token\", void 0);\n//# sourceMappingURL=SignupResponse.js.map","import { __decorate } from \"tslib\";\nimport { AutoEncoder, BooleanDecoder, field, StringDecoder } from '@simonbackx/simple-encoding';\nexport class VerifyEmailRequest extends AutoEncoder {\n}\n__decorate([\n field({ decoder: StringDecoder })\n], VerifyEmailRequest.prototype, \"token\", void 0);\n__decorate([\n field({ decoder: StringDecoder })\n], VerifyEmailRequest.prototype, \"code\", void 0);\nexport class PollEmailVerificationRequest extends AutoEncoder {\n}\n__decorate([\n field({ decoder: StringDecoder })\n], PollEmailVerificationRequest.prototype, \"token\", void 0);\nexport class PollEmailVerificationResponse extends AutoEncoder {\n}\n__decorate([\n field({ decoder: BooleanDecoder })\n], PollEmailVerificationResponse.prototype, \"valid\", void 0);\n//# sourceMappingURL=VerifyEmailRequest.js.map","import { encodeObject } from '@simonbackx/simple-encoding';\nexport class IPaginatedResponse {\n}\nexport class UnencodeablePaginatedResponse {\n constructor(data) {\n this.results = data.results;\n this.next = data.next;\n }\n}\nexport class PaginatedResponse {\n constructor(data) {\n this.results = data.results;\n this.next = data.next;\n }\n encode(context) {\n var _a;\n return {\n results: encodeObject(this.results, context), // this.results.map(r => r.encode(context)),\n next: (_a = this.next) === null || _a === void 0 ? void 0 : _a.encode(context),\n };\n }\n}\nexport class PaginatedResponseDecoder {\n constructor(resultDecoder, querydecoder) {\n this.resultDecoder = resultDecoder;\n this.querydecoder = querydecoder;\n }\n decode(data) {\n var _a;\n return new PaginatedResponse({\n results: data.field('results').decode(this.resultDecoder),\n next: (_a = data.optionalField('next')) === null || _a === void 0 ? void 0 : _a.decode(this.querydecoder),\n });\n }\n}\n//# sourceMappingURL=PaginatedResponse.js.map","import { __decorate } from \"tslib\";\nimport { AutoEncoder, field, IntegerDecoder } from '@simonbackx/simple-encoding';\nimport { SimpleError } from '@simonbackx/simple-errors';\nimport { BalanceItemWithPayments } from '../../BalanceItem';\n/**\n * Contains an intention to pay for an outstanding balance item\n */\nexport class BalanceItemCartItem extends AutoEncoder {\n constructor() {\n super(...arguments);\n /**\n * Amount you want to pay of that balance item\n */\n this.price = 0;\n }\n get id() {\n return this.item.id;\n }\n validate(data) {\n if (data.balanceItems !== undefined) {\n const found = data.balanceItems.find(b => b.id === this.item.id);\n if (!found) {\n throw new SimpleError({\n code: 'not_found',\n message: 'Eén van de openstaande bedragen is niet meer beschikbaar.',\n });\n }\n this.item = found;\n }\n const maxPrice = this.item.priceOpen;\n if (maxPrice === 0) {\n throw new SimpleError({\n code: 'not_found',\n message: 'Eén van de openstaande bedragen is ondertussen al betaald.',\n });\n }\n if (maxPrice < 0) {\n // Allow negative prices\n if (this.price > 0) {\n this.price = maxPrice;\n }\n if (this.price < maxPrice) {\n // Don't throw: we'll throw a different error during checkout if the price has changed\n this.price = maxPrice;\n }\n return;\n }\n if (this.price < 0) {\n this.price = maxPrice;\n }\n if (this.price > maxPrice) {\n // Don't throw: we'll throw a different error during checkout if the price has changed\n this.price = maxPrice;\n }\n }\n}\n__decorate([\n field({ decoder: BalanceItemWithPayments })\n], BalanceItemCartItem.prototype, \"item\", void 0);\n__decorate([\n field({ decoder: IntegerDecoder })\n], BalanceItemCartItem.prototype, \"price\", void 0);\n//# sourceMappingURL=BalanceItemCartItem.js.map","import { __decorate } from \"tslib\";\nimport { ArrayDecoder, AutoEncoder, field, StringDecoder } from '@simonbackx/simple-encoding';\nimport { isSimpleError, isSimpleErrors, SimpleError, SimpleErrors } from '@simonbackx/simple-errors';\nimport { RegistrationWithMember } from '../RegistrationWithMember';\nimport { BalanceItemCartItem } from './BalanceItemCartItem';\nimport { IDRegisterItem } from './RegisterItem';\nimport { Platform } from '../../Platform';\nexport class IDRegisterCart extends AutoEncoder {\n constructor() {\n super(...arguments);\n this.items = [];\n this.balanceItems = [];\n this.deleteRegistrationIds = [];\n }\n hydrate(context) {\n const cart = new RegisterCart();\n cart.items = this.items.map(i => i.hydrate(context));\n cart.balanceItems = this.balanceItems;\n const registrations = [];\n for (const registrationId of this.deleteRegistrationIds) {\n let found = false;\n for (const member of context.members) {\n const registration = member.patchedMember.registrations.find(r => r.id === registrationId);\n if (!registration) {\n continue;\n }\n registrations.push(RegistrationWithMember.from(registration, member.patchedMember.tiny));\n found = true;\n break;\n }\n if (!found) {\n throw new SimpleError({\n code: 'not_found',\n message: 'Registration not found',\n human: 'De inschrijving die je wou verwijderen kon niet gevonden worden. Het is mogelijk dat deze inschrijving al verwijderd is.',\n field: 'deleteRegistrationIds',\n });\n }\n }\n cart.deleteRegistrations = registrations;\n return cart;\n }\n}\n__decorate([\n field({ decoder: new ArrayDecoder(IDRegisterItem) })\n], IDRegisterCart.prototype, \"items\", void 0);\n__decorate([\n field({ decoder: new ArrayDecoder(BalanceItemCartItem), optional: true })\n], IDRegisterCart.prototype, \"balanceItems\", void 0);\n__decorate([\n field({ decoder: new ArrayDecoder(StringDecoder), optional: true })\n], IDRegisterCart.prototype, \"deleteRegistrationIds\", void 0);\nexport class RegisterCart {\n constructor() {\n this.items = [];\n this.balanceItems = [];\n /**\n * You can define which registrations you want remove as part of this register operation.\n */\n this.deleteRegistrations = [];\n }\n calculatePrices() {\n for (const item of this.items) {\n item.calculatePrice();\n }\n }\n clone() {\n const cart = new RegisterCart();\n cart.items = this.items.map(i => i.clone());\n cart.balanceItems = this.balanceItems.map(i => i.clone());\n cart.deleteRegistrations = this.deleteRegistrations.map(r => r.clone());\n return cart;\n }\n convert() {\n return IDRegisterCart.create({\n items: this.items.map(i => i.convert()),\n balanceItems: this.balanceItems,\n deleteRegistrationIds: this.deleteRegistrations.map(r => r.id),\n });\n }\n add(item) {\n if (this.contains(item)) {\n return this.remove(item, item);\n }\n if (!this.canAdd(item)) {\n return;\n }\n this.items.push(item);\n }\n canAdd(item) {\n if (this.contains(item)) {\n return false;\n }\n if (this.items.length >= 500) {\n return false;\n }\n return true;\n }\n contains(item) {\n for (const [i, otherItem] of this.items.entries()) {\n if (otherItem.id === item.id || (otherItem.member.id === item.member.id && otherItem.groupId === item.groupId)) {\n return true;\n }\n }\n return false;\n }\n getMemberAndGroup(memberId, groupId) {\n for (const [i, otherItem] of this.items.entries()) {\n if (otherItem.member.id === memberId && otherItem.groupId === groupId) {\n return otherItem;\n }\n }\n return null;\n }\n containsMemberAndGroup(memberId, groupId) {\n return this.getMemberAndGroup(memberId, groupId) !== null;\n }\n remove(item, replaceWith) {\n for (const [i, otherItem] of this.items.entries()) {\n if (otherItem.id === item.id || (otherItem.member.id === item.member.id && otherItem.groupId === item.groupId)) {\n this.items.splice(i, 1, ...(replaceWith ? [replaceWith] : []));\n break;\n }\n }\n }\n removeMemberAndGroup(memberId, groupId) {\n for (let i = this.items.length - 1; i >= 0; i--) {\n const otherItem = this.items[i];\n if (otherItem.member.id === memberId && otherItem.groupId === groupId) {\n this.items.splice(i, 1);\n }\n }\n }\n removeRegistration(registration) {\n const index = this.deleteRegistrations.findIndex(r => r.id === registration.id);\n if (index === -1) {\n this.deleteRegistrations.push(registration);\n }\n }\n unremoveRegistration(registration) {\n const index = this.deleteRegistrations.findIndex(r => r.id === registration.id);\n if (index !== -1) {\n this.deleteRegistrations.splice(index, 1);\n }\n }\n canAddBalanceItem(item) {\n var _a;\n if (this.singleOrganization) {\n if (item.item.organizationId !== ((_a = this.singleOrganization) === null || _a === void 0 ? void 0 : _a.id)) {\n return false;\n }\n }\n // Check duplicate\n for (const i of this.balanceItems) {\n if (i.item.id === item.item.id) {\n return false;\n }\n }\n return true;\n }\n addBalanceItem(item) {\n if (!this.canAddBalanceItem(item)) {\n return;\n }\n this.balanceItems.push(item);\n }\n removeBalanceItem(item) {\n for (let i = this.balanceItems.length - 1; i >= 0; i--) {\n if (this.balanceItems[i].id === item.id) {\n this.balanceItems.splice(i, 1);\n }\n }\n }\n get isEmpty() {\n return this.count === 0;\n }\n get count() {\n return this.items.length + this.balanceItems.length + this.deleteRegistrations.length;\n }\n get price() {\n return this.items.reduce((total, item) => item.calculatedPrice + total, 0)\n + this.balanceItems.reduce((total, item) => {\n return total + item.price;\n }, 0);\n }\n get refund() {\n return this.items.reduce((total, item) => item.calculatedRefund + total, 0)\n + this.deleteRegistrations.reduce((total, item) => {\n return total + item.price;\n }, 0);\n }\n get singleOrganization() {\n if (this.items.length === 0) {\n return null;\n }\n return this.items[0].organization;\n }\n validate(checkout, data) {\n var _a;\n const newItems = [];\n const errors = new SimpleErrors();\n for (const item of this.items) {\n try {\n item.validate({ final: true });\n item.cartError = null;\n newItems.push(item);\n }\n catch (e) {\n if (isSimpleError(e) || isSimpleErrors(e)) {\n e.addNamespace('cart');\n errors.addError(e);\n }\n else {\n throw e;\n }\n if (isSimpleError(e) && ((_a = e.meta) === null || _a === void 0 ? void 0 : _a.recoverable)) {\n item.cartError = e;\n newItems.push(item);\n }\n }\n }\n const cleanedBalanceItems = [];\n for (const balanceItem of this.balanceItems) {\n // TODO: validate balance item organization (happens in backend anyway)\n if (checkout.singleOrganizationId && balanceItem.item.organizationId !== checkout.singleOrganizationId) {\n errors.addError(new SimpleError({\n code: 'invalid_organization',\n message: 'Invalid organization in balanceItems',\n human: 'Het is niet mogelijk om een openstaand bedrag af te rekenen voor een andere organisatie samen met andere items in je winkelmandje voor een andere organisatie, dit moet apart gebeuren.',\n field: 'balanceItems',\n }));\n continue;\n }\n try {\n balanceItem.validate({ balanceItems: data === null || data === void 0 ? void 0 : data.memberBalanceItems });\n cleanedBalanceItems.push(balanceItem);\n }\n catch (e) {\n if (isSimpleError(e) || isSimpleErrors(e)) {\n e.addNamespace('cart');\n errors.addError(e);\n }\n else {\n throw e;\n }\n }\n }\n const cleanedRegistrations = [];\n const singleOrganization = checkout.singleOrganization;\n for (const registration of this.deleteRegistrations) {\n if (checkout.singleOrganizationId && registration.group.organizationId !== checkout.singleOrganizationId) {\n errors.addError(new SimpleError({\n code: 'invalid_organization',\n message: 'Invalid organization in deleteRegistrations',\n human: 'Het is niet mogelijk om een inschrijving te verwijderen samen met een inschrijving voor een andere organisatie, dit moet apart gebeuren.',\n field: 'deleteRegistrations',\n }));\n continue;\n }\n const platform = Platform.shared;\n const periodId = registration.group.periodId;\n if (periodId !== (singleOrganization === null || singleOrganization === void 0 ? void 0 : singleOrganization.period.period.id) && periodId !== platform.period.id) {\n errors.addError(new SimpleError({\n code: 'different_period',\n message: 'Different period',\n human: `Je kan geen inschrijvingen wijzigen van ${registration.group.settings.name} omdat dat werkjaar niet actief is.`,\n }));\n continue;\n }\n const period = periodId === platform.period.id ? platform.period : singleOrganization === null || singleOrganization === void 0 ? void 0 : singleOrganization.period.period;\n if (period && period.locked) {\n errors.addError(new SimpleError({\n code: 'locked_period',\n message: 'Locked period',\n human: `Je kan geen inschrijvingen wijzigen van ${registration.group.settings.name} omdat werkjaar ${period.nameShort} is afgesloten.`,\n }));\n continue;\n }\n cleanedRegistrations.push(registration);\n }\n this.balanceItems = cleanedBalanceItems;\n this.deleteRegistrations = cleanedRegistrations;\n this.items = newItems;\n errors.throwIfNotEmpty();\n }\n}\n//# sourceMappingURL=RegisterCart.js.map","import { __decorate } from \"tslib\";\nimport { AutoEncoder, EnumDecoder, field, IntegerDecoder, StringDecoder, URLDecoder } from '@simonbackx/simple-encoding';\nimport { SimpleError } from '@simonbackx/simple-errors';\nimport { Formatter } from '@stamhoofd/utility';\nimport { PaymentCustomer } from '../../PaymentCustomer';\nimport { PaymentMethod } from '../../PaymentMethod';\nimport { IDRegisterCart, RegisterCart } from './RegisterCart';\nexport class IDRegisterCheckout extends AutoEncoder {\n constructor() {\n super(...arguments);\n this.cart = IDRegisterCart.create({});\n this.administrationFee = 0;\n this.freeContribution = 0;\n this.paymentMethod = null;\n /**\n * The link we'll redirect the user back too after the payment page (either succeeded or failed!)\n * The id query param will be appended with the payment id\n */\n this.redirectUrl = null;\n /**\n * The link we'll redirect the user back too after the user canceled a payment (not supported for all payment methods)\n * The id query param will be appended with the payment id\n */\n this.cancelUrl = null;\n /**\n * Register these members as the organization\n */\n this.asOrganizationId = null;\n this.customer = null;\n /**\n * Cached price so we can detect inconsistencies between frontend and backend\n */\n this.totalPrice = null;\n }\n hydrate(context) {\n var _a;\n const checkout = new RegisterCheckout();\n checkout.cart = this.cart.hydrate(context);\n checkout.administrationFee = this.administrationFee;\n checkout.freeContribution = this.freeContribution;\n checkout.paymentMethod = this.paymentMethod;\n checkout.asOrganizationId = this.asOrganizationId;\n checkout.customer = this.customer;\n if (context.organizations[0] && !checkout.cart.isEmpty && checkout.defaultOrganization === null) {\n const preferredId = checkout.singleOrganizationId;\n checkout.setDefaultOrganization((_a = (preferredId ? context.organizations.find(o => o.id === preferredId) : null)) !== null && _a !== void 0 ? _a : context.organizations[0]);\n }\n else {\n if (!checkout.cart.isEmpty && !checkout.singleOrganization) {\n throw new Error('Missing default organization');\n }\n }\n return checkout;\n }\n get memberIds() {\n return Formatter.uniqueArray(this.cart.items.map(i => i.memberId));\n }\n get groupIds() {\n return Formatter.uniqueArray(this.cart.items.map(i => i.groupId));\n }\n}\n__decorate([\n field({ decoder: IDRegisterCart })\n], IDRegisterCheckout.prototype, \"cart\", void 0);\n__decorate([\n field({ decoder: IntegerDecoder })\n], IDRegisterCheckout.prototype, \"administrationFee\", void 0);\n__decorate([\n field({ decoder: IntegerDecoder })\n], IDRegisterCheckout.prototype, \"freeContribution\", void 0);\n__decorate([\n field({ decoder: new EnumDecoder(PaymentMethod), nullable: true })\n], IDRegisterCheckout.prototype, \"paymentMethod\", void 0);\n__decorate([\n field({ decoder: new URLDecoder({ allowedProtocols: ['https:'] }), nullable: true })\n], IDRegisterCheckout.prototype, \"redirectUrl\", void 0);\n__decorate([\n field({ decoder: new URLDecoder({ allowedProtocols: ['https:'] }), nullable: true })\n], IDRegisterCheckout.prototype, \"cancelUrl\", void 0);\n__decorate([\n field({ decoder: StringDecoder, nullable: true })\n], IDRegisterCheckout.prototype, \"asOrganizationId\", void 0);\n__decorate([\n field({ decoder: PaymentCustomer, nullable: true, version: 322 })\n], IDRegisterCheckout.prototype, \"customer\", void 0);\n__decorate([\n field({ decoder: IntegerDecoder, nullable: true })\n], IDRegisterCheckout.prototype, \"totalPrice\", void 0);\nexport class RegisterCheckout {\n constructor() {\n this.cart = new RegisterCart();\n this.administrationFee = 0;\n this.freeContribution = 0;\n this.paymentMethod = null;\n this.customer = null;\n this.asOrganizationId = null;\n // Default hint for empty carts to know the organization to use\n this.defaultOrganization = null;\n }\n convert() {\n return IDRegisterCheckout.create({\n cart: this.cart.convert(),\n administrationFee: this.administrationFee,\n freeContribution: this.freeContribution,\n paymentMethod: this.paymentMethod,\n totalPrice: this.totalPrice,\n asOrganizationId: this.asOrganizationId,\n customer: this.customer,\n });\n }\n get singleOrganization() {\n var _a;\n return (_a = this.cart.singleOrganization) !== null && _a !== void 0 ? _a : this.defaultOrganization;\n }\n get singleOrganizationId() {\n var _a, _b, _c, _d, _e;\n return (_d = (_b = (_a = this.singleOrganization) === null || _a === void 0 ? void 0 : _a.id) !== null && _b !== void 0 ? _b : (_c = this.cart.deleteRegistrations[0]) === null || _c === void 0 ? void 0 : _c.organizationId) !== null && _d !== void 0 ? _d : (_e = this.cart.balanceItems[0]) === null || _e === void 0 ? void 0 : _e.item.organizationId;\n }\n setDefaultOrganization(organization) {\n this.defaultOrganization = organization;\n }\n get isAdminFromSameOrganization() {\n var _a;\n return !!this.asOrganizationId && this.asOrganizationId === ((_a = this.singleOrganization) === null || _a === void 0 ? void 0 : _a.id);\n }\n add(item, options) {\n if (this.cart.isEmpty) {\n this.defaultOrganization = null;\n }\n if (!this.singleOrganization) {\n this.setDefaultOrganization(item.organization);\n }\n this.cart.add(item);\n if ((options === null || options === void 0 ? void 0 : options.calculate) !== false) {\n this.updatePrices();\n }\n }\n remove(item, options) {\n this.cart.remove(item);\n if ((options === null || options === void 0 ? void 0 : options.calculate) !== false) {\n this.updatePrices();\n }\n if (this.cart.isEmpty) {\n this.defaultOrganization = null;\n }\n }\n removeMemberAndGroup(memberId, groupId, options) {\n this.cart.removeMemberAndGroup(memberId, groupId);\n if ((options === null || options === void 0 ? void 0 : options.calculate) !== false) {\n this.updatePrices();\n }\n if (this.cart.isEmpty) {\n this.defaultOrganization = null;\n }\n }\n removeRegistration(registration, options) {\n this.cart.removeRegistration(registration);\n if ((options === null || options === void 0 ? void 0 : options.calculate) !== false) {\n this.updatePrices();\n }\n if (this.cart.isEmpty) {\n this.defaultOrganization = null;\n }\n }\n unremoveRegistration(registration, options) {\n this.cart.unremoveRegistration(registration);\n if ((options === null || options === void 0 ? void 0 : options.calculate) !== false) {\n this.updatePrices();\n }\n if (this.cart.isEmpty) {\n this.defaultOrganization = null;\n }\n }\n addBalanceItem(item, options) {\n this.cart.addBalanceItem(item);\n if ((options === null || options === void 0 ? void 0 : options.calculate) !== false) {\n this.updatePrices();\n }\n }\n removeBalanceItem(item, options) {\n this.cart.removeBalanceItem(item);\n if ((options === null || options === void 0 ? void 0 : options.calculate) !== false) {\n this.updatePrices();\n }\n if (this.cart.isEmpty) {\n this.defaultOrganization = null;\n }\n }\n updatePrices() {\n var _a;\n this.cart.calculatePrices();\n if (this.isAdminFromSameOrganization || !this.singleOrganization) {\n this.administrationFee = 0;\n }\n else {\n this.administrationFee = (_a = this.singleOrganization.meta.registrationPaymentConfiguration.administrationFee.calculate(this.cart.price)) !== null && _a !== void 0 ? _a : 0;\n }\n }\n validate(data) {\n if (!this.isAdminFromSameOrganization && this.cart.deleteRegistrations.length > 0) {\n throw new SimpleError({\n code: 'forbidden',\n message: 'Permission denied: you are not allowed to delete registrations',\n human: 'Oeps, je hebt geen rechten om inschrijvingen te verwijderen.',\n });\n }\n this.cart.validate(this, data);\n }\n clear() {\n this.administrationFee = 0;\n this.freeContribution = 0;\n this.cart.items = [];\n this.cart.balanceItems = [];\n this.cart.deleteRegistrations = [];\n this.customer = null;\n }\n get totalPrice() {\n return Math.max(0, this.cart.price + this.administrationFee + this.freeContribution - this.cart.refund);\n }\n get priceBreakown() {\n const all = [\n {\n name: 'Administratiekost',\n price: this.administrationFee,\n },\n {\n name: 'Vrije bijdrage',\n price: this.freeContribution,\n },\n {\n name: 'Terugbetaling',\n price: -this.cart.refund,\n },\n ].filter(a => a.price !== 0);\n if (all.length > 0) {\n all.unshift({\n name: 'Subtotaal',\n price: this.cart.price,\n });\n }\n return [\n ...all,\n {\n name: 'Totaal',\n price: this.totalPrice,\n },\n ];\n }\n}\n//# sourceMappingURL=RegisterCheckout.js.map","import { deepSetArray, PatchableArray } from '@simonbackx/simple-encoding';\nimport { AccessRight } from '../AccessRight';\nimport { GroupType } from '../GroupType';\nimport { PermissionLevel } from '../PermissionLevel';\nimport { PermissionsResourceType } from '../PermissionsResourceType';\nimport { Platform } from '../Platform';\nimport { MemberDetails } from './MemberDetails';\nimport { MemberWithRegistrationsBlob } from './MemberWithRegistrationsBlob';\nimport { OrganizationRecordsConfiguration } from './OrganizationRecordsConfiguration';\nimport { RegisterCheckout } from './checkout/RegisterCheckout';\nimport { RegisterItem } from './checkout/RegisterItem';\nexport class PlatformFamily {\n constructor(context) {\n this.members = [];\n /**\n * Checkout is required for the member to know whether certain fields are required to get collected\n */\n this.checkout = new RegisterCheckout();\n /**\n * Items that have not been added to the cart/checkout, but will be - and for which data has to be collected\n */\n this.pendingRegisterItems = [];\n this.organizations = [];\n this.platform = context.platform;\n this.organizations = context.contextOrganization ? [context.contextOrganization] : [];\n }\n insertOrganization(organization) {\n if (this.organizations.find(o => o.id === organization.id)) {\n return;\n }\n this.organizations.push(organization);\n }\n getOrganization(id) {\n return this.organizations.find(o => o.id === id);\n }\n static create(blob, context) {\n const family = new PlatformFamily(context);\n family.insertFromBlob(blob);\n return family;\n }\n insertFromBlob(blob, removeMissing = false) {\n for (const organization of blob.organizations) {\n this.insertOrganization(organization);\n }\n for (const member of blob.members) {\n const existing = this.members.find(m => m.id === member.id);\n if (existing) {\n existing.member.deepSet(member);\n continue;\n }\n const platformMember = new PlatformMember({\n member,\n family: this,\n });\n this.members.push(platformMember);\n }\n if (removeMissing) {\n // Keep same array reference\n deepSetArray(this.members, this.members.filter(m => blob.members.find(b => b.id === m.id)));\n }\n }\n /**\n * Same as insertFromBlob, but doesn't add new members, only updates existing members\n */\n updateFromBlob(blob) {\n for (const member of blob.members) {\n const existing = this.members.find(m => m.id === member.id);\n if (existing) {\n existing.member.deepSet(member);\n }\n }\n }\n newMember() {\n const member = new PlatformMember({\n member: MemberWithRegistrationsBlob.create({\n details: MemberDetails.create({}),\n users: [],\n registrations: [],\n }),\n family: this,\n isNew: true,\n });\n this.members.push(member);\n return member;\n }\n static createSingles(blob, context) {\n const memberList = [];\n for (const member of blob.members) {\n const family = new PlatformFamily(context);\n for (const organization of blob.organizations) {\n // Check if this organization is relevant to this member\n if (member.registrations.find(r => r.organizationId === organization.id) || member.platformMemberships.find(m => m.organizationId === organization.id) || member.responsibilities.find(r => r.organizationId === organization.id)) {\n family.insertOrganization(organization);\n }\n }\n const platformMember = new PlatformMember({\n member,\n family,\n });\n family.members.push(platformMember);\n memberList.push(platformMember);\n }\n return memberList;\n }\n insertSingle(member) {\n const platformMember = new PlatformMember({\n member,\n family: this,\n });\n this.members.push(platformMember);\n return platformMember;\n }\n /**\n * These clones are for patches so they only become visible after saving\n */\n clone() {\n const family = new PlatformFamily({\n platform: this.platform,\n });\n family.organizations = this.organizations;\n family.checkout = this.checkout;\n family.pendingRegisterItems = this.pendingRegisterItems;\n family.members = this.members.map(m => m._cloneWithFamily(family));\n return family;\n }\n copyFromClone(clone) {\n var _a;\n for (const member of this.members) {\n const cloneMember = (_a = clone.members.find(m => m.id === member.id)) !== null && _a !== void 0 ? _a : clone.members.find(m => m._oldId && m._oldId === member.id);\n if (cloneMember) {\n member.member.deepSet(cloneMember.member);\n member.patch.deepSet(cloneMember.patch);\n member.patch.id = member.id;\n member.isNew = cloneMember.isNew;\n member._oldId = cloneMember._oldId;\n if (cloneMember._savingPatch || cloneMember._isCreating) {\n console.warn('Copying from member that is being saved');\n }\n }\n else {\n console.warn('copyFromClone could not find member with id', member.id, 'in clone.');\n }\n }\n for (const c of clone.members) {\n const member = this.members.find(m => m.id === c.id);\n if (!member) {\n this.members.push(c._cloneWithFamily(this));\n }\n }\n // Delete members that are not in the clone\n this.members = this.members.filter(m => clone.members.find(c => c.id === m.id));\n for (const o of clone.organizations) {\n this.insertOrganization(o);\n }\n }\n getAddressOccurrences(address, skip) {\n const occurrences = new Set();\n const searchString = address.toString();\n for (const member of this.members) {\n if (member.patchedMember.details.address) {\n if (!(skip === null || skip === void 0 ? void 0 : skip.memberId) || member.id !== (skip === null || skip === void 0 ? void 0 : skip.memberId)) {\n if (member.patchedMember.details.address.toString() === searchString) {\n occurrences.add(member.patchedMember.details.name);\n }\n }\n }\n for (const parent of member.patchedMember.details.parents) {\n if (parent.address) {\n if (!(skip === null || skip === void 0 ? void 0 : skip.parentId) || parent.id !== (skip === null || skip === void 0 ? void 0 : skip.parentId)) {\n if (parent.address.toString() === searchString) {\n occurrences.add(parent.name);\n }\n }\n }\n }\n }\n return Array.from(occurrences.values());\n }\n get addresses() {\n const addresses = new Map();\n for (const member of this.members) {\n if (member.member.details.address) {\n addresses.set(member.member.details.address.toString(), member.member.details.address);\n }\n if (member.patchedMember.details.address) {\n addresses.set(member.patchedMember.details.address.toString(), member.patchedMember.details.address);\n }\n for (const parent of member.member.details.parents) {\n if (parent.address) {\n addresses.set(parent.address.toString(), parent.address);\n }\n }\n for (const parent of member.patchedMember.details.parents) {\n if (parent.address) {\n addresses.set(parent.address.toString(), parent.address);\n }\n }\n for (const unverifiedAddress of member.member.details.unverifiedAddresses) {\n addresses.set(unverifiedAddress.toString(), unverifiedAddress);\n }\n }\n return Array.from(addresses.values());\n }\n get parents() {\n if (!this.members) {\n return [];\n }\n const parents = new Map();\n for (const member of this.members) {\n for (const parent of member.patchedMember.details.parents) {\n parents.set(parent.id, parent);\n }\n }\n return Array.from(parents.values());\n }\n updateAddress(oldValue, newValue) {\n for (const member of this.members) {\n const patch = member.patchedMember.details.updateAddressPatch(oldValue, newValue);\n if (patch !== null) {\n member.addDetailsPatch(patch);\n }\n }\n }\n /// Update all references to this parent (with same id)\n updateParent(parent) {\n for (const member of this.members) {\n const patch = member.patchedMember.details.updateParentPatch(parent);\n if (patch !== null) {\n member.addDetailsPatch(patch);\n }\n }\n }\n updateEmergencyContact(emergencyContact) {\n for (const member of this.members) {\n const patch = member.patchedMember.details.updateEmergencyContactPatch(emergencyContact);\n if (patch !== null) {\n member.addDetailsPatch(patch);\n }\n }\n }\n getRecommendedEventsFilter() {\n const filter = [];\n const groups = new Set();\n const defaultGroupIds = new Set();\n const organizationIds = new Set();\n const organizationTags = new Set();\n for (const member of this.members) {\n for (const group of member.filterGroups({ types: [GroupType.Membership], currentPeriod: true })) {\n groups.add(group.id);\n if (group.defaultAgeGroupId) {\n defaultGroupIds.add(group.defaultAgeGroupId);\n }\n organizationIds.add(group.organizationId);\n const organization = this.organizations.find(o => o.id === group.organizationId);\n if (organization) {\n for (const tag of organization.meta.tags) {\n organizationTags.add(tag);\n }\n }\n }\n }\n filter.push({\n groupIds: {\n $in: [null, ...groups.values()],\n },\n defaultAgeGroupIds: {\n $in: [null, ...defaultGroupIds.values()],\n },\n organizationId: {\n $in: [null, ...organizationIds.values()],\n },\n organizationTagIds: {\n $in: [null, ...organizationTags.values()],\n },\n });\n return filter;\n }\n deleteMember(id) {\n this.members = this.members.filter(m => m.id !== id);\n }\n}\nexport var MembershipStatus;\n(function (MembershipStatus) {\n MembershipStatus[\"Active\"] = \"Active\";\n MembershipStatus[\"Expiring\"] = \"Expiring\";\n MembershipStatus[\"Inactive\"] = \"Inactive\";\n MembershipStatus[\"Temporary\"] = \"Temporary\";\n})(MembershipStatus || (MembershipStatus = {}));\nexport class PlatformMember {\n get id() {\n return this.member.id;\n }\n constructor(data) {\n var _a, _b;\n // Save status data:\n this._savingPatch = null;\n this._isCreating = null;\n /**\n * In case this was a duplicate member, we need to keep track of the old id to merge changes\n */\n this._oldId = null;\n this.isNew = false;\n this.member = data.member;\n this.patch = (_a = data.patch) !== null && _a !== void 0 ? _a : MemberWithRegistrationsBlob.patch({ id: this.member.id });\n this.family = data.family;\n this.isNew = (_b = data.isNew) !== null && _b !== void 0 ? _b : false;\n }\n clone() {\n const family = this.family.clone();\n return family.members.find(m => m.id === this.id);\n }\n _cloneWithFamily(family) {\n const c = new PlatformMember({\n member: this.member.clone(),\n family,\n isNew: this.isNew,\n patch: this.patch.clone(),\n });\n c._oldId = this._oldId;\n return c;\n }\n get organizations() {\n return this.family.organizations;\n }\n get platform() {\n return this.family.platform;\n }\n get allGroups() {\n return this.organizations.flatMap(o => o.groups);\n }\n get isSaving() {\n return this._savingPatch !== null || this._isCreating !== null;\n }\n get membershipStatus() {\n let status = MembershipStatus.Inactive;\n const now = new Date();\n for (const t of this.patchedMember.platformMemberships) {\n const organization = this.organizations.find(o => o.id === t.organizationId);\n if (!organization) {\n continue;\n }\n if (t.endDate && t.endDate < now) {\n continue;\n }\n if (t.startDate > now) {\n continue;\n }\n if (t.expireDate && t.expireDate < now) {\n if (status === MembershipStatus.Inactive) {\n status = MembershipStatus.Expiring;\n }\n continue;\n }\n const isTemporary = t.endDate.getTime() - t.startDate.getTime() < 1000 * 60 * 60 * 24 * 31;\n if (status === MembershipStatus.Inactive || ((status === MembershipStatus.Expiring || status === MembershipStatus.Temporary) && !isTemporary)) {\n if (isTemporary) {\n status = MembershipStatus.Temporary;\n }\n else {\n status = MembershipStatus.Active;\n }\n }\n }\n return status;\n }\n get shouldApplyReducedPrice() {\n return this.patchedMember.details.shouldApplyReducedPrice;\n }\n addPatch(p) {\n this.patch = this.patch.patch(MemberWithRegistrationsBlob.patch(p));\n }\n addEmergencyContact(emergencyContact) {\n const arr = new PatchableArray();\n arr.addPut(emergencyContact);\n this.addDetailsPatch({\n emergencyContacts: arr,\n });\n }\n addParent(parent) {\n const arr = new PatchableArray();\n arr.addPut(parent);\n this.addDetailsPatch({\n parents: arr,\n });\n }\n addDetailsPatch(p) {\n this.addPatch({\n details: MemberDetails.patch(p),\n });\n }\n isPropertyEnabledForPlatform(property) {\n var _a;\n if ((property === 'financialSupport' || property === 'uitpasNumber')\n && !((_a = this.patchedMember.details.dataPermissions) === null || _a === void 0 ? void 0 : _a.value)) {\n return false;\n }\n if (property === 'dataPermission' || property === 'financialSupport') {\n if (this.platform.config.recordsConfiguration[property]) {\n return true;\n }\n return false;\n }\n const def = this.platform.config.recordsConfiguration[property];\n if (def === null) {\n return false;\n }\n return def.isEnabled(this);\n }\n isPropertyEnabled(property, options) {\n var _a, _b, _c;\n if (this.isPropertyEnabledForPlatform(property)) {\n return true;\n }\n if ((property === 'financialSupport' || property === 'uitpasNumber')\n && !((_a = this.patchedMember.details.dataPermissions) === null || _a === void 0 ? void 0 : _a.value)) {\n return false;\n }\n if ((options === null || options === void 0 ? void 0 : options.checkPermissions) && (property === 'financialSupport' || property === 'uitpasNumber')) {\n const isUserManager = options.checkPermissions.user.members.members.some(m => m.id === this.id);\n if (!isUserManager) {\n // Need permission to view financial support\n let foundPermissions = false;\n for (const organization of this.filterOrganizations({ currentPeriod: true })) {\n if ((_c = (_b = options.checkPermissions.user.permissions) === null || _b === void 0 ? void 0 : _b.forOrganization(organization, Platform.shared)) === null || _c === void 0 ? void 0 : _c.hasAccessRight(options.checkPermissions.level === PermissionLevel.Read ? AccessRight.MemberReadFinancialData : AccessRight.MemberWriteFinancialData)) {\n foundPermissions = true;\n break;\n }\n }\n if (!foundPermissions) {\n return false;\n }\n }\n }\n const recordsConfigurations = this.filterRecordsConfigurations({ currentPeriod: true });\n for (const recordsConfiguration of recordsConfigurations) {\n if (property === 'dataPermission' || property === 'financialSupport') {\n if (recordsConfiguration[property]) {\n return true;\n }\n continue;\n }\n const def = recordsConfiguration[property];\n if (def === null) {\n continue;\n }\n if (def.enabledWhen === null) {\n return true;\n }\n if (this.doesMatchFilter(def.enabledWhen)) {\n return true;\n }\n }\n return false;\n }\n isPropertyRequiredForPlatform(property) {\n if (!this.isPropertyEnabledForPlatform(property)) {\n return false;\n }\n const def = this.platform.config.recordsConfiguration[property];\n if (def === null) {\n return false;\n }\n return def.isRequired(this);\n }\n isPropertyRequired(property) {\n if (!this.isPropertyEnabled(property)) {\n return false;\n }\n const recordsConfigurations = this.filterRecordsConfigurations({ currentPeriod: true });\n for (const recordsConfiguration of recordsConfigurations) {\n const def = recordsConfiguration[property];\n if (def === null) {\n continue;\n }\n if (def.isRequired(this)) {\n return true;\n }\n }\n return false;\n }\n prepareSave() {\n this._savingPatch = this.patch;\n this.patch = MemberWithRegistrationsBlob.patch({ id: this.member.id });\n this._isCreating = this.isNew;\n this.isNew = false;\n }\n markSaved() {\n if (this._isCreating === true) {\n this.isNew = false;\n }\n this._savingPatch = null;\n this._isCreating = null;\n }\n markFailedSave() {\n if (this._savingPatch) {\n this.patch = this._savingPatch.patch(this.patch);\n this._savingPatch = null;\n }\n if (this._isCreating !== null) {\n this.isNew = this._isCreating;\n this._isCreating = null;\n }\n }\n filterRegistrations(filters) {\n return this.patchedMember.registrations.filter((r) => {\n if (r.registeredAt === null || r.deactivatedAt !== null) {\n return false;\n }\n if (filters.organizationId && r.organizationId !== filters.organizationId) {\n return false;\n }\n if (filters.types !== undefined) {\n if (!filters.types.includes(r.group.type)) {\n return false;\n }\n }\n if (filters.groups && !filters.groups.find(g => g.id === r.groupId)) {\n return false;\n }\n if (filters.currentPeriod !== undefined) {\n const organization = this.organizations.find(o => o.id === r.organizationId);\n const isCurrentPeriod = !!organization && r.group.periodId === organization.period.period.id;\n if (isCurrentPeriod !== filters.currentPeriod) {\n return false;\n }\n }\n if (filters.periodId && r.group.periodId !== filters.periodId) {\n return false;\n }\n if (filters.canRegister !== undefined && r.canRegister !== filters.canRegister) {\n return false;\n }\n return true;\n });\n }\n filterGroups(filters) {\n const registrations = this.filterRegistrations(filters);\n const base = [];\n for (const registration of registrations) {\n if (base.find(g => g.id === registration.groupId)) {\n continue;\n }\n base.push(registration.group);\n }\n // Loop checkout\n for (const item of [...this.family.checkout.cart.items, ...this.family.pendingRegisterItems]) {\n if (item.member.id === this.id) {\n if (filters.currentPeriod === false) {\n continue;\n }\n if (filters.periodId && item.group.periodId !== filters.periodId) {\n continue;\n }\n if (filters.canRegister !== undefined) {\n continue;\n }\n if (filters.organizationId !== undefined) {\n if (item.organization.id !== filters.organizationId) {\n continue;\n }\n }\n if (!base.find(g => g.id === item.group.id)) {\n base.push(item.group);\n }\n }\n }\n return base;\n }\n filterRecordsConfigurations(filters) {\n const groups = this.filterGroups(filters);\n const configurations = [];\n for (const group of groups) {\n const organization = this.family.getOrganization(group.organizationId);\n if (!organization) {\n continue;\n }\n configurations.push(OrganizationRecordsConfiguration.build({\n platform: this.platform,\n organization,\n group,\n includeGroup: true,\n }));\n }\n if (groups.length === 0) {\n configurations.push(OrganizationRecordsConfiguration.build({\n platform: this.platform,\n }));\n }\n return configurations;\n }\n filterOrganizations(filters) {\n const registrations = this.filterRegistrations(filters);\n const base = [];\n for (const registration of registrations) {\n if (base.find(g => g.id === registration.organizationId)) {\n continue;\n }\n const organization = this.organizations.find(o => o.id === registration.organizationId);\n if (organization) {\n base.push(organization);\n }\n }\n // Loop checkout\n for (const item of [...this.family.checkout.cart.items, ...this.family.pendingRegisterItems]) {\n if (item.member.id === this.id) {\n if (filters.currentPeriod === false) {\n continue;\n }\n if (filters.periodId && item.group.periodId !== filters.periodId) {\n continue;\n }\n if (filters.canRegister !== undefined) {\n continue;\n }\n if (filters.types !== undefined) {\n if (!filters.types.includes(item.group.type)) {\n continue;\n }\n }\n if (!base.find(g => g.id === item.organization.id)) {\n base.push(item.organization);\n }\n }\n }\n // for (const responsibility of this.patchedMember.responsibilities) {\n // if (!responsibility.isActive) {\n // continue;\n // }\n // if (base.find(g => g.id === responsibility.organizationId)) {\n // continue;\n // }\n //\n // const organization = this.organizations.find(o => o.id === responsibility.organizationId);\n // if (organization) {\n // base.push(organization)\n // }\n // }\n return base;\n }\n get groups() {\n return this.filterGroups({ currentPeriod: true });\n }\n insertOrganization(organization) {\n this.family.insertOrganization(organization);\n }\n canRegister(group, organization) {\n const item = RegisterItem.defaultFor(this, group, organization);\n const error = item.validationError;\n if (error === null) {\n return true;\n }\n return false;\n }\n canRegisterForWaitingList(group, organization) {\n const item = RegisterItem.defaultFor(this, group, organization);\n const error = item.validationErrorForWaitingList;\n if (error === null) {\n return true;\n }\n return false;\n }\n get patchedMember() {\n if (this._savingPatch) {\n return this.member.patch(this._savingPatch).patch(this.patch);\n }\n return this.member.patch(this.patch);\n }\n doesMatchFilter(filter) {\n return this.patchedMember.doesMatchFilter(filter);\n }\n getAllRecordCategories() {\n // From organization\n const categories = [];\n categories.push(...this.platform.config.recordsConfiguration.recordCategories);\n for (const organization of this.organizations) {\n categories.push(...organization.meta.recordsConfiguration.recordCategories);\n }\n return categories;\n }\n getEnabledRecordCategories(options) {\n const checkPermissions = options.checkPermissions;\n if (checkPermissions && !checkPermissions.permissions) {\n return [];\n }\n // From organization\n const categories = [];\n const scopedOrganizations = options.scopeOrganization ? [options.scopeOrganization] : this.filterOrganizations({ currentPeriod: true });\n const recordsConfigurations = this.filterRecordsConfigurations({ currentPeriod: true, groups: options.scopeGroup ? [options.scopeGroup] : null });\n for (const recordsConfiguration of recordsConfigurations) {\n for (const recordCategory of recordsConfiguration.recordCategories) {\n if (categories.find(c => c.id === recordCategory.id)) {\n // Already added\n continue;\n }\n if (recordCategory.isEnabled(this)) {\n if (checkPermissions && checkPermissions.permissions) {\n // Check permissions\n // we need at least permission in one organization\n let hasPermission = false;\n for (const organization of scopedOrganizations) {\n const organizationPermissions = checkPermissions.permissions.forOrganization(organization, Platform.shared);\n if (!organizationPermissions) {\n continue;\n }\n if (organizationPermissions.hasResourceAccess(PermissionsResourceType.RecordCategories, recordCategory.id, checkPermissions.level)) {\n hasPermission = true;\n break;\n }\n }\n if (!hasPermission) {\n continue;\n }\n }\n categories.push(recordCategory);\n }\n }\n }\n return categories;\n }\n isExistingMember(organizationId) {\n const member = this.member;\n if (member.registrations.length === 0) {\n return false;\n }\n const organization = this.organizations.find(o => o.id === organizationId);\n if (!organization) {\n return false;\n }\n for (const registration of member.registrations) {\n if (registration.group.type === GroupType.Membership && registration.registeredAt !== null && registration.deactivatedAt === null) {\n return true;\n }\n }\n return false;\n }\n isRecordEnabled(record) {\n var _a;\n if (record.sensitive && !((_a = this.patchedMember.details.dataPermissions) === null || _a === void 0 ? void 0 : _a.value)) {\n return false;\n }\n return true;\n }\n getRecordAnswers() {\n return this.patchedMember.details.recordAnswers;\n }\n getResponsibilities(organization) {\n return this.patchedMember.responsibilities\n .filter(r => (r.endDate === null || r.endDate > new Date()) && (!organization || r.organizationId === organization.id));\n }\n}\n//# sourceMappingURL=PlatformMember.js.map","import { __decorate } from \"tslib\";\nimport { AutoEncoder, BooleanDecoder, field, StringDecoder } from '@simonbackx/simple-encoding';\nimport { OrganizationSimple } from '../OrganizationSimple';\nexport class EmailAddressSettings extends AutoEncoder {\n constructor() {\n super(...arguments);\n this.organization = null;\n }\n}\n__decorate([\n field({ decoder: StringDecoder })\n], EmailAddressSettings.prototype, \"email\", void 0);\n__decorate([\n field({ decoder: BooleanDecoder })\n], EmailAddressSettings.prototype, \"unsubscribedMarketing\", void 0);\n__decorate([\n field({ decoder: BooleanDecoder })\n], EmailAddressSettings.prototype, \"unsubscribedAll\", void 0);\n__decorate([\n field({ decoder: OrganizationSimple, nullable: true })\n], EmailAddressSettings.prototype, \"organization\", void 0);\n//# sourceMappingURL=EmailAddressSettings.js.map","import { __decorate } from \"tslib\";\nimport { ArrayDecoder, AutoEncoder, field, StringDecoder } from '@simonbackx/simple-encoding';\nimport { LimitedFilteredRequest } from './FilteredRequest';\nexport var ExcelExportType;\n(function (ExcelExportType) {\n ExcelExportType[\"Payments\"] = \"payments\";\n ExcelExportType[\"Members\"] = \"members\";\n ExcelExportType[\"Organizations\"] = \"organizations\";\n})(ExcelExportType || (ExcelExportType = {}));\nexport class ExcelSheetFilter extends AutoEncoder {\n constructor() {\n super(...arguments);\n this.columns = [];\n }\n}\n__decorate([\n field({ decoder: StringDecoder })\n], ExcelSheetFilter.prototype, \"id\", void 0);\n__decorate([\n field({ decoder: new ArrayDecoder(StringDecoder) })\n], ExcelSheetFilter.prototype, \"columns\", void 0);\n/**\n * Which sheets and columns to include in the excel file\n */\nexport class ExcelWorkbookFilter extends AutoEncoder {\n constructor() {\n super(...arguments);\n this.sheets = [];\n }\n}\n__decorate([\n field({ decoder: new ArrayDecoder(ExcelSheetFilter) })\n], ExcelWorkbookFilter.prototype, \"sheets\", void 0);\nexport class ExcelExportRequest extends AutoEncoder {\n}\n__decorate([\n field({ decoder: LimitedFilteredRequest })\n], ExcelExportRequest.prototype, \"filter\", void 0);\n__decorate([\n field({ decoder: ExcelWorkbookFilter })\n], ExcelExportRequest.prototype, \"workbookFilter\", void 0);\nexport class ExcelExportResponse extends AutoEncoder {\n constructor() {\n super(...arguments);\n /**\n * Contains a file id which can be used to download the file\n *\n * If this is null, the file will be sent via e-mail\n */\n this.url = null;\n }\n}\n__decorate([\n field({ decoder: StringDecoder, nullable: true })\n], ExcelExportResponse.prototype, \"url\", void 0);\n//# sourceMappingURL=ExcelExportRequest.js.map","import { isSimpleError, isSimpleErrors, SimpleError } from '@simonbackx/simple-errors';\nimport { AccessRight } from '../AccessRight';\nimport { PermissionsResourceType } from '../PermissionsResourceType';\nexport class EventPermissionChecker {\n /**\n * Will throw error if not allowed to edit/add/delete this event\n * @param event\n * @returns Organization if event for specific organization, else null\n * @throws error if not allowed to write this event\n */\n static async checkEventAccessAsync(event, { getOrganization, userPermissions, platform, }) {\n if (!userPermissions) {\n throw new SimpleError({\n code: 'permission_denied',\n message: 'Je hebt geen toegangsrechten om een activiteit te beheren.',\n statusCode: 403,\n });\n }\n if (event.organizationId !== null) {\n let organization;\n try {\n organization = await getOrganization(event.organizationId);\n }\n catch (error) {\n throw new SimpleError({\n code: 'not_found',\n message: 'Event not found',\n human: 'De activiteit werd niet gevonden',\n });\n }\n this.throwIfNoPermissionToWriteEventForOrganization(event, organization, platform, userPermissions);\n return organization;\n }\n this.throwIfNoPermissionToWriteNationalOrRegionalEvent(event, userPermissions, platform);\n return null;\n }\n /**\n * Will throw error if not allowed to edit/add/delete this event\n * @param event\n * @throws error if not allowed to write this event\n */\n static throwIfNoPermissionToWriteEvent(event, { organization, userPermissions, platform, }) {\n if (!userPermissions) {\n throw new SimpleError({\n code: 'permission_denied',\n message: 'Je hebt geen toegangsrechten om een activiteit te beheren.',\n statusCode: 403,\n });\n }\n if (event.organizationId !== null) {\n if (organization === null) {\n throw new Error('Organization not specified.');\n }\n this.throwIfNoPermissionToWriteEventForOrganization(event, organization, platform, userPermissions);\n }\n else {\n this.throwIfNoPermissionToWriteNationalOrRegionalEvent(event, userPermissions, platform);\n }\n }\n static hasPermissionToWriteEvent(event, options) {\n try {\n this.throwIfNoPermissionToWriteEvent(event, options);\n }\n catch (error) {\n if (isSimpleError(error) || isSimpleErrors(error)) {\n return false;\n }\n throw error;\n }\n return true;\n }\n static throwIfNoPermissionToWriteEventForOrganization(event, organization, platform, userPermissions) {\n const accessRight = AccessRight.EventWrite;\n if (event.organizationId !== organization.id) {\n throw new SimpleError({\n code: 'permission_denied',\n message: 'Je kan geen activiteit beheren voor deze organisatie.',\n statusCode: 403,\n });\n }\n const organizationPermissions = userPermissions.forOrganization(organization, platform);\n if (!organizationPermissions) {\n throw new SimpleError({\n code: 'permission_denied',\n message: 'Je hebt geen toegangsrechten om een activiteit te beheren voor deze organisatie.',\n statusCode: 403,\n });\n }\n if (event.meta.groups === null) {\n if (!organizationPermissions.hasResourceAccessRight(PermissionsResourceType.Groups, '', accessRight)) {\n throw new SimpleError({\n code: 'permission_denied',\n message: 'Je hebt geen toegangsrechten om een activiteit te beheren voor deze organisatie.',\n statusCode: 403,\n });\n }\n }\n else {\n for (const group of event.meta.groups) {\n if (!organizationPermissions.hasResourceAccessRight(PermissionsResourceType.Groups, group.id, accessRight)) {\n throw new SimpleError({\n code: 'permission_denied',\n message: 'Je hebt geen toegangsrechten om een activiteit te beheren voor deze groep(en).',\n statusCode: 403,\n });\n }\n }\n }\n }\n static throwIfNoPermissionToWriteNationalOrRegionalEvent(event, userPermissions, platform) {\n const accessRight = AccessRight.EventWrite;\n const platformPermissions = userPermissions.forPlatform(platform);\n if (!platformPermissions) {\n throw new SimpleError({\n code: 'permission_denied',\n message: 'Je hebt geen toegangsrechten om een nationale activiteit te beheren.',\n statusCode: 403,\n });\n }\n // organization tags\n if (event.meta.organizationTagIds === null) {\n if (!(platformPermissions.hasResourceAccessRight(PermissionsResourceType.OrganizationTags, '', accessRight))) {\n throw new SimpleError({\n code: 'permission_denied',\n message: 'Je hebt geen toegangsrechten om een nationale activiteit te beheren voor alle groepen.',\n statusCode: 403,\n });\n }\n }\n else {\n for (const tagId of event.meta.organizationTagIds) {\n if (!platformPermissions.hasResourceAccessRight(PermissionsResourceType.OrganizationTags, tagId, accessRight)) {\n throw new SimpleError({\n code: 'permission_denied',\n message: \"Je hebt geen toegangsrechten om een regionale activiteit te beheren voor deze regio('s).\",\n statusCode: 403,\n });\n }\n }\n }\n }\n}\n//# sourceMappingURL=EventPermissionChecker.js.map","export class TagHelper {\n /**\n * Get the root tags from the tags array.\n * A root tag is a tag that is not a child of another tag in the array.\n * @param tags\n */\n static getRootTags(tags) {\n const result = [];\n for (const tag of tags) {\n const tagId = tag.id;\n let isRootTag = true;\n for (const otherTag of tags) {\n const otherTagId = otherTag.id;\n if (tagId === otherTagId) {\n continue;\n }\n if (otherTag.childTags.includes(tagId)) {\n isRootTag = false;\n break;\n }\n }\n if (isRootTag) {\n result.push(tag);\n }\n }\n return result;\n }\n /**\n * Checks if a tag with the provided id contains the tag with the id to search recursively.\n * @param tagId id of the tag to search into\n * @param tagIdToSearch id of the tag to search inside the tag\n * @param tagMap a map of all the tags\n * @returns true if the tag contains the tag to search recursively or false otherwise\n */\n static containsDeep(tagId, tagIdToSearch, tags) {\n const tagMap = 'tagMap' in tags ? tags.tagMap : new Map(tags.allTags.map(tag => [tag.id, tag]));\n const tag = tagMap.get(tagId);\n if (!tag) {\n // should not happen\n return false;\n }\n if (tag.childTags.length === 0) {\n return false;\n }\n if (tag.childTags.includes(tagIdToSearch)) {\n return true;\n }\n for (const childTagId of tag.childTags) {\n if (this.containsDeep(childTagId, tagIdToSearch, { tagMap })) {\n return true;\n }\n }\n return false;\n }\n}\n//# sourceMappingURL=TagHelper.js.map","/**\n * Group related requests so you can cancel them easily when they are no longer needed\n */\nexport class RequestBag {\n constructor() {\n this.requests = [];\n }\n static get(object) {\n return this.bags.get(object);\n }\n static getOrCreate(object) {\n var _a;\n return (_a = this.get(object)) !== null && _a !== void 0 ? _a : this.create(object);\n }\n static create(object) {\n const bag = new RequestBag();\n this.bags.set(object, bag);\n return bag;\n }\n addRequest(request) {\n this.requests.push(request);\n }\n removeRequest(request) {\n const index = this.requests.findIndex(r => r === request);\n if (index !== -1) {\n this.requests.splice(index, 1);\n }\n }\n cancel() {\n for (const request of this.requests) {\n request.cancel();\n }\n this.requests = [];\n }\n}\n/**\n * We use a WeakMap so all the requests can get garbage collected\n * when all references to an instance disappears.\n * Note: since this is javascript, we cannot automatically cancel all pending requests in a RequestBag\n * when the associated key is deallocated (it is possible in newer browsers, but with a high and unreliable delay);\n * So use the .cancel() method on the bag to stop all requests in a bag properly if they are no longer needed\n */\nRequestBag.bags = new WeakMap();\n//# sourceMappingURL=RequestBag.js.map","// Requests use middleware to extend its behaviour\nimport { encodeObject, ObjectData } from \"@simonbackx/simple-encoding\";\nimport { isSimpleError, isSimpleErrors, SimpleError, SimpleErrors } from \"@simonbackx/simple-errors\";\nimport { RequestBag } from \"./RequestBag\";\nexport class RequestResult {\n constructor(data, headers = {}, responseVersion) {\n this.data = data;\n this.headers = headers;\n this.responseVersion = responseVersion;\n }\n}\nexport class Request {\n constructor(server, request) {\n var _a, _b, _c, _d, _e, _f;\n /**\n * Set to false to disable middleware retry logic entirely. When canceling a request, this will also\n * disable retries\n */\n this.shouldRetry = true;\n /**\n * Even when shouldRetry is false, still allow to retry normal valid errors\n * often needed to refresh a token etc\n */\n this.allowErrorRetry = true;\n /// Request specific middleware\n this.middlewares = [];\n this.errorDecoder = SimpleErrors;\n this.didFailNetwork = false;\n this.XMLHttpRequest = null;\n this.server = server;\n this.method = request.method;\n this.path = request.path;\n this.query = request.query;\n this.body = request.body;\n this.decoder = request.decoder;\n this.headers = (_a = request.headers) !== null && _a !== void 0 ? _a : {};\n this.version = request.version;\n this.timeout = request.timeout;\n this.responseType = (_b = request.responseType) !== null && _b !== void 0 ? _b : \"\";\n this.shouldRetry = (_c = request.shouldRetry) !== null && _c !== void 0 ? _c : this.shouldRetry;\n this.allowErrorRetry = (_d = request.allowErrorRetry) !== null && _d !== void 0 ? _d : this.allowErrorRetry;\n this.bag = (_e = request.bag) !== null && _e !== void 0 ? _e : (request.owner ? RequestBag.getOrCreate(request.owner) : undefined);\n this.overrideXMLHttpRequest = request.overrideXMLHttpRequest;\n (_f = this.bag) === null || _f === void 0 ? void 0 : _f.addRequest(this);\n }\n get static() {\n return this.constructor;\n }\n getMiddlewares() {\n return Request.sharedMiddlewares.concat(this.middlewares);\n }\n /**\n * Cancels any pending requests and also disables retries\n */\n cancel() {\n this.shouldRetry = false;\n this.allowErrorRetry = false;\n if (this.XMLHttpRequest) {\n this.XMLHttpRequest.abort();\n this.XMLHttpRequest = null;\n }\n else {\n // Probably a middleware that is running a timeout to retry it later on\n // Immediately call all middlewares to notify them faster of this abort\n // Notify middleware that we stop retrying\n if (!this.didFailNetwork) {\n this.didFailNetwork = true;\n for (const middleware of this.getMiddlewares()) {\n // Check if one of the middlewares decides to stop\n if (middleware.onFatalNetworkError) {\n middleware.onFatalNetworkError(this, new SimpleError({\n code: \"network_abort\",\n message: \"Network abort\"\n }));\n }\n }\n }\n }\n }\n /**\n * Cancel all requests with a given owner\n * Shorthand to avoid RequestBag syntax.\n */\n static cancelAll(owner) {\n var _a;\n (_a = RequestBag.get(owner)) === null || _a === void 0 ? void 0 : _a.cancel();\n }\n static isNetworkError(e) {\n return !!((isSimpleError(e) || isSimpleErrors(e)) && (e.hasCode(\"network_error\") || e.hasCode(\"network_timeout\") || e.hasCode(\"network_abort\")));\n }\n static isAbortError(e) {\n return !!((isSimpleError(e) || isSimpleErrors(e)) && (e.hasCode(\"network_abort\")));\n }\n async fetch(data) {\n return new Promise((resolve, reject) => {\n try {\n const request = this.overrideXMLHttpRequest ? (new this.overrideXMLHttpRequest()) : new XMLHttpRequest();\n request.responseType = this.responseType;\n let finished = false;\n request.onreadystatechange = (e) => {\n if (finished) {\n // ignore duplicate events\n return;\n }\n if (request.readyState == 4) {\n if (request.status == 0) {\n // should call handleError or handleTimeout\n return;\n }\n finished = true;\n this.XMLHttpRequest = null;\n resolve(request);\n }\n };\n request.ontimeout = () => {\n if (finished) {\n // ignore duplicate events\n return;\n }\n finished = true;\n this.XMLHttpRequest = null;\n reject(new SimpleError({\n code: \"network_timeout\",\n message: \"Timeout\"\n }));\n };\n request.onerror = (e) => {\n if (finished) {\n // ignore duplicate events\n return;\n }\n // Your request timed out\n finished = true;\n this.XMLHttpRequest = null;\n reject(new SimpleError({\n code: \"network_error\",\n message: \"Network error\"\n }));\n };\n request.onabort = () => {\n if (finished) {\n // ignore duplicate events\n return;\n }\n finished = true;\n this.XMLHttpRequest = null;\n // Disable retries\n this.shouldRetry = false;\n reject(new SimpleError({\n code: \"network_abort\",\n message: \"Network abort\"\n }));\n };\n request.open(data.method, data.url);\n for (const key in data.headers) {\n if (Object.prototype.hasOwnProperty.call(data.headers, key)) {\n const value = data.headers[key];\n request.setRequestHeader(key, value);\n }\n }\n request.timeout = data.timeout;\n this.XMLHttpRequest = request;\n request.send(data.body);\n }\n catch (e) {\n reject(e);\n }\n });\n }\n async start() {\n // todo: check if already running or not\n var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;\n // todo: add query parameters\n for (const middleware of this.getMiddlewares()) {\n if (middleware.onBeforeRequest)\n await middleware.onBeforeRequest(this);\n }\n if (this.didFailNetwork) {\n // In the meantime, the request is canceled before it even started\n // This can happen when the onBeforeRequest did something time intensive (e.g. refresh a token)\n // and in the meantime, the request bag got canceled\n throw new SimpleError({\n code: \"network_abort\",\n message: \"Network abort\"\n });\n }\n let response;\n let timeout = (_a = this.timeout) !== null && _a !== void 0 ? _a : (this.method == \"GET\" ? 20 * 1000 : 30 * 10000);\n try {\n let body;\n // We only support application/json or FormData for now\n if (this.body === undefined) {\n body = undefined;\n }\n else {\n if (this.body instanceof FormData) {\n body = this.body;\n let size = 0;\n for (const [prop, value] of this.body.entries()) {\n if (typeof value === \"string\") {\n size += value.length;\n }\n else {\n size += value.size;\n }\n }\n if (size > 1000 * 1000 * 1000) {\n // > 1MB upload\n timeout = Math.max(timeout, 60 * 1000);\n }\n }\n else {\n if (!this.headers[\"Content-Type\"] && this.headers[\"content-type\"]) {\n this.headers[\"Content-Type\"] = this.headers[\"content-type\"];\n delete this.headers[\"content-type\"];\n }\n if (this.headers[\"Content-Type\"] && this.headers[\"Content-Type\"].startsWith(\"application/x-www-form-urlencoded\")) {\n const typeCopy = encodeObject(this.body, { version: (_b = this.version) !== null && _b !== void 0 ? _b : 0 });\n if (typeCopy === null || typeCopy === undefined) {\n throw new Error(\"Invalid body, got null/undefined, which is not encodeable to a querystring\");\n }\n body = Object.keys(typeCopy)\n .filter((k) => typeCopy[k] !== undefined)\n .map((k) => encodeURIComponent(k) + \"=\" + encodeURIComponent(typeCopy[k]))\n .join(\"&\");\n }\n else {\n this.headers[\"Content-Type\"] = \"application/json;charset=utf-8\";\n body = JSON.stringify(encodeObject(this.body, { version: (_c = this.version) !== null && _c !== void 0 ? _c : 0 }));\n }\n }\n }\n let queryString = \"\";\n if (this.query) {\n const query = encodeObject(this.query, { version: (_d = this.version) !== null && _d !== void 0 ? _d : 0 });\n if (query !== undefined && query !== null && Object.keys(query).length > 0) {\n queryString =\n \"?\" +\n Object.keys(query)\n .filter((k) => query[k] !== undefined)\n .map((k) => encodeURIComponent(k) + \"=\" + encodeURIComponent(query[k]))\n .join(\"&\");\n }\n }\n if (this.static.verbose) {\n console.log(\"Starting new request\");\n console.log(\"New request\", this.method, this.path, this.body, this.query, this.headers);\n }\n response = await this.fetch({\n url: this.server.host + (this.version !== undefined ? (\"/v\" + this.version) : \"\") + this.path + queryString,\n method: this.method,\n headers: this.headers,\n body,\n timeout\n });\n }\n catch (error) {\n if ((isSimpleError(error) || isSimpleErrors(error)) && error.hasCode('network_timeout')) {\n // Increase next timeout (note: upload will stay 1 minute)\n this.timeout = Math.max(timeout, 30 * 1000);\n }\n // network error is encountered or CORS is misconfigured on the server-side\n // A middleware might decide here to interrupt the callback\n // He might for example fire a timer to retry the request because of a network failure\n // Or it might decide to fetch a new access token because the current one is expired\n // They return a promise with a boolean value indicating that the request should get retried\n if (this.shouldRetry && !this.didFailNetwork) {\n let retry = false;\n for (const middleware of this.getMiddlewares()) {\n // Check if one of the middlewares decides to stop\n if (middleware.shouldRetryNetworkError) {\n retry = retry || (await middleware.shouldRetryNetworkError(this, error));\n }\n if (!this.shouldRetry || this.didFailNetwork) {\n // Stop the loop faster\n break;\n }\n }\n // Sometimes, in the meantime, shouldRetry might have become false, so check again\n if (retry && this.shouldRetry && !this.didFailNetwork) {\n // Retry\n return await this.start();\n }\n }\n // Notify middleware that we stop retrying\n if (!this.didFailNetwork) {\n // On abort we call this faster if needed (e.g. when middleware is hanging)\n this.didFailNetwork = true;\n for (const middleware of this.getMiddlewares()) {\n // Check if one of the middlewares decides to stop\n if (middleware.onFatalNetworkError) {\n middleware.onFatalNetworkError(this, error);\n }\n }\n }\n // Failed and not caught\n (_e = this.bag) === null || _e === void 0 ? void 0 : _e.removeRequest(this);\n throw error;\n }\n for (const middleware of this.getMiddlewares()) {\n // Update middleware of recovered network status\n if (middleware.onNetworkResponse) {\n middleware.onNetworkResponse(this, response);\n }\n }\n // Get the version\n let responseVersion;\n for (const header of this.server.versionHeaders) {\n const value = response.getResponseHeader(header);\n if (value) {\n const v = parseInt(value);\n if (!isNaN(v) && isFinite(v)) {\n responseVersion = v;\n break;\n }\n }\n }\n if (!responseVersion) {\n // Use the request version by default\n responseVersion = (_f = this.version) !== null && _f !== void 0 ? _f : 0;\n }\n if (response.status < 200 || response.status >= 300) {\n if (response.getResponseHeader(\"Content-Type\") === \"application/json\") {\n let err;\n try {\n let bodyText = await response.response;\n if (bodyText instanceof Blob) {\n bodyText = await response.response.text();\n }\n const json = JSON.parse(bodyText);\n if (this.errorDecoder) {\n try {\n err = this.errorDecoder.decode(new ObjectData(json, { version: responseVersion }));\n if (this.static.verbose) {\n console.error(err);\n }\n }\n catch (e) {\n // Failed to decode\n if (this.static.verbose) {\n console.error(json);\n }\n throw e;\n }\n }\n else {\n err = json;\n }\n }\n catch (e) {\n return await this.retryOrThrowServerError(response, e);\n }\n // A middleware might decide here to retry instead of passing the error to the caller\n if (this.shouldRetry || this.allowErrorRetry) {\n let retry = false;\n for (const middleware of this.getMiddlewares()) {\n // Check if one of the middlewares decides to stop\n if (middleware.shouldRetryError) {\n retry = retry || (await middleware.shouldRetryError(this, response, err));\n }\n }\n // Sometimes, in the meantime, shouldRetry might have become false, so check again\n if (retry && (this.shouldRetry || this.allowErrorRetry)) {\n // Retry\n return await this.start();\n }\n }\n (_g = this.bag) === null || _g === void 0 ? void 0 : _g.removeRequest(this);\n throw err;\n }\n // A non 200 status code without json header is always considered as a server error.\n return await this.retryOrThrowServerError(response, new Error(response.response));\n }\n if (response.getResponseHeader(\"Content-Type\") === \"application/json\") {\n let json;\n try {\n let bodyText = await response.response;\n if (bodyText instanceof Blob) {\n bodyText = await response.response.text();\n }\n json = JSON.parse(bodyText);\n }\n catch (e) {\n // A 200 status code with invalid JSON is considered a server error\n return await this.retryOrThrowServerError(response, e);\n }\n if (this.decoder) {\n const decoded = (_h = this.decoder) === null || _h === void 0 ? void 0 : _h.decode(new ObjectData(json, { version: responseVersion }));\n if (this.static.verbose) {\n console.info(decoded);\n }\n (_j = this.bag) === null || _j === void 0 ? void 0 : _j.removeRequest(this);\n return new RequestResult(decoded, Request.parseHeaders(response.getAllResponseHeaders()), responseVersion);\n }\n (_k = this.bag) === null || _k === void 0 ? void 0 : _k.removeRequest(this);\n return new RequestResult(json, Request.parseHeaders(response.getAllResponseHeaders()), responseVersion);\n }\n if (this.decoder) {\n // Expected content, but the server didn't respond with content\n if (this.static.verbose) {\n console.error(response.response);\n }\n return await this.retryOrThrowServerError(response, new Error(\"Missing JSON response from server\"));\n }\n (_l = this.bag) === null || _l === void 0 ? void 0 : _l.removeRequest(this);\n return new RequestResult(await response.response, Request.parseHeaders(response.getAllResponseHeaders()), responseVersion);\n }\n static parseHeaders(headers) {\n const result = {};\n for (const line of headers.trim().split(/[\\r\\n]+/)) {\n const parts = line.split(\": \");\n const header = parts.shift();\n if (header) {\n const value = parts.join(': ');\n result[header.toLowerCase()] = value;\n }\n }\n return result;\n }\n async retryOrThrowServerError(response, e) {\n var _a;\n // Invalid json is considered as a server error\n if (this.static.verbose) {\n console.error(e);\n }\n if (this.shouldRetry) {\n // A middleware might decide here to retry instead of passing the error to the caller\n let retry = false;\n for (const middleware of this.getMiddlewares()) {\n // Check if one of the middlewares decides to stop\n if (middleware.shouldRetryServerError) {\n retry = retry || (await middleware.shouldRetryServerError(this, response, e));\n }\n }\n // Sometimes, in the meantime, shouldRetry might have become false, so check again\n if (retry && this.shouldRetry) {\n // Retry\n return await this.start();\n }\n }\n (_a = this.bag) === null || _a === void 0 ? void 0 : _a.removeRequest(this);\n throw e;\n }\n}\n/// Shared middlewares that allows dependency injection here\nRequest.sharedMiddlewares = [];\nRequest.verbose = false;\n//# sourceMappingURL=Request.js.map","import { Request } from './Request';\nexport class Server {\n constructor(host) {\n this.middlewares = [];\n /**\n * When decoding the version headers of the response will be used if they are present.\n */\n this.versionHeaders = ['X-Version'];\n this.host = host;\n }\n setVersionHeaders(headers) {\n this.versionHeaders = headers;\n }\n /**\n * Build an internal request. Start it manually.\n * Usefull if you need the reference to the request object in order to cancel it later.\n */\n build(request) {\n const r = new Request(this, request);\n r.middlewares.push(...this.middlewares);\n return r;\n }\n /**\n * Build an internal request and start it immediately\n */\n request(request) {\n return this.build(request).start();\n }\n}\n//# sourceMappingURL=Server.js.map","import { App } from \"vue\"\n\nexport class I18n {\n loadedLocales: Map> = new Map()\n loadedNamespaces: Set = new Set()\n locale = \"en-US\"\n\n // Reference to messages in loadedLocales\n messages: Map\n\n install(app: App) {\n app.config.globalProperties.$t = this.$t.bind(this)\n }\n\n loadRecursive(messages: any, prefix: string | null = null): Map {\n const map = new Map()\n for (const key in messages) {\n const element = messages[key];\n if (typeof (element) !== \"string\") {\n const map2 = this.loadRecursive(element, (prefix ? prefix + \".\" : \"\")+key)\n map2.forEach((val, key) => map.set(key, val));\n } else {\n map.set((prefix ? prefix + \".\" : \"\")+key, element)\n }\n }\n return map;\n }\n\n setLocale(locale: string) {\n this.locale = locale\n const messages = this.loadedLocales.get(locale)\n if (!messages) {\n throw new Error(\"Locale not loaded when creating I18n for \"+locale)\n }\n this.messages = messages\n }\n\n isLocaleLoaded(namespace: string, locale: string) {\n return this.loadedNamespaces.has(namespace+':'+locale)\n }\n\n loadLocale(namespace: string, locale: string, messages: any) {\n this.loadedNamespaces.add(namespace + ':' + locale)\n const loaded = this.loadRecursive(messages)\n const existing = this.loadedLocales.get(locale)\n\n // Merge maps\n if (existing) {\n loaded.forEach((val, key) => existing.set(key, val))\n } else {\n this.loadedLocales.set(locale, loaded)\n }\n }\n\n t(key: string, replace?: Record): string {\n return this.$t(key, replace)\n }\n\n $t(key: string, replace?: Record): string {\n return this.replace(this.messages?.get(key) ?? key, replace)\n }\n\n escapeRegex(string: string) {\n return string.replace(/[-/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n }\n\n replace(text: string, replace?: Record): string {\n if (!replace) {\n return text\n }\n for (const key in replace) {\n const value = replace[key];\n text = text.replace(new RegExp(\"{\"+this.escapeRegex(key)+\"}\", \"g\"), value)\n }\n return text\n }\n}\n","/**\n* @vue/shared v3.4.25\n* (c) 2018-present Yuxi (Evan) You and Vue contributors\n* @license MIT\n**/\n/*! #__NO_SIDE_EFFECTS__ */\n// @__NO_SIDE_EFFECTS__\nfunction makeMap(str, expectsLowerCase) {\n const set = new Set(str.split(\",\"));\n return expectsLowerCase ? (val) => set.has(val.toLowerCase()) : (val) => set.has(val);\n}\n\nconst EMPTY_OBJ = !!(process.env.NODE_ENV !== \"production\") ? Object.freeze({}) : {};\nconst EMPTY_ARR = !!(process.env.NODE_ENV !== \"production\") ? Object.freeze([]) : [];\nconst NOOP = () => {\n};\nconst NO = () => false;\nconst isOn = (key) => key.charCodeAt(0) === 111 && key.charCodeAt(1) === 110 && // uppercase letter\n(key.charCodeAt(2) > 122 || key.charCodeAt(2) < 97);\nconst isModelListener = (key) => key.startsWith(\"onUpdate:\");\nconst extend = Object.assign;\nconst remove = (arr, el) => {\n const i = arr.indexOf(el);\n if (i > -1) {\n arr.splice(i, 1);\n }\n};\nconst hasOwnProperty = Object.prototype.hasOwnProperty;\nconst hasOwn = (val, key) => hasOwnProperty.call(val, key);\nconst isArray = Array.isArray;\nconst isMap = (val) => toTypeString(val) === \"[object Map]\";\nconst isSet = (val) => toTypeString(val) === \"[object Set]\";\nconst isDate = (val) => toTypeString(val) === \"[object Date]\";\nconst isRegExp = (val) => toTypeString(val) === \"[object RegExp]\";\nconst isFunction = (val) => typeof val === \"function\";\nconst isString = (val) => typeof val === \"string\";\nconst isSymbol = (val) => typeof val === \"symbol\";\nconst isObject = (val) => val !== null && typeof val === \"object\";\nconst isPromise = (val) => {\n return (isObject(val) || isFunction(val)) && isFunction(val.then) && isFunction(val.catch);\n};\nconst objectToString = Object.prototype.toString;\nconst toTypeString = (value) => objectToString.call(value);\nconst toRawType = (value) => {\n return toTypeString(value).slice(8, -1);\n};\nconst isPlainObject = (val) => toTypeString(val) === \"[object Object]\";\nconst isIntegerKey = (key) => isString(key) && key !== \"NaN\" && key[0] !== \"-\" && \"\" + parseInt(key, 10) === key;\nconst isReservedProp = /* @__PURE__ */ makeMap(\n // the leading comma is intentional so empty string \"\" is also included\n \",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted\"\n);\nconst isBuiltInDirective = /* @__PURE__ */ makeMap(\n \"bind,cloak,else-if,else,for,html,if,model,on,once,pre,show,slot,text,memo\"\n);\nconst cacheStringFunction = (fn) => {\n const cache = /* @__PURE__ */ Object.create(null);\n return (str) => {\n const hit = cache[str];\n return hit || (cache[str] = fn(str));\n };\n};\nconst camelizeRE = /-(\\w)/g;\nconst camelize = cacheStringFunction((str) => {\n return str.replace(camelizeRE, (_, c) => c ? c.toUpperCase() : \"\");\n});\nconst hyphenateRE = /\\B([A-Z])/g;\nconst hyphenate = cacheStringFunction(\n (str) => str.replace(hyphenateRE, \"-$1\").toLowerCase()\n);\nconst capitalize = cacheStringFunction((str) => {\n return str.charAt(0).toUpperCase() + str.slice(1);\n});\nconst toHandlerKey = cacheStringFunction((str) => {\n const s = str ? `on${capitalize(str)}` : ``;\n return s;\n});\nconst hasChanged = (value, oldValue) => !Object.is(value, oldValue);\nconst invokeArrayFns = (fns, arg) => {\n for (let i = 0; i < fns.length; i++) {\n fns[i](arg);\n }\n};\nconst def = (obj, key, value) => {\n Object.defineProperty(obj, key, {\n configurable: true,\n enumerable: false,\n value\n });\n};\nconst looseToNumber = (val) => {\n const n = parseFloat(val);\n return isNaN(n) ? val : n;\n};\nconst toNumber = (val) => {\n const n = isString(val) ? Number(val) : NaN;\n return isNaN(n) ? val : n;\n};\nlet _globalThis;\nconst getGlobalThis = () => {\n return _globalThis || (_globalThis = typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : typeof global !== \"undefined\" ? global : {});\n};\nconst identRE = /^[_$a-zA-Z\\xA0-\\uFFFF][_$a-zA-Z0-9\\xA0-\\uFFFF]*$/;\nfunction genPropsAccessExp(name) {\n return identRE.test(name) ? `__props.${name}` : `__props[${JSON.stringify(name)}]`;\n}\n\nconst PatchFlags = {\n \"TEXT\": 1,\n \"1\": \"TEXT\",\n \"CLASS\": 2,\n \"2\": \"CLASS\",\n \"STYLE\": 4,\n \"4\": \"STYLE\",\n \"PROPS\": 8,\n \"8\": \"PROPS\",\n \"FULL_PROPS\": 16,\n \"16\": \"FULL_PROPS\",\n \"NEED_HYDRATION\": 32,\n \"32\": \"NEED_HYDRATION\",\n \"STABLE_FRAGMENT\": 64,\n \"64\": \"STABLE_FRAGMENT\",\n \"KEYED_FRAGMENT\": 128,\n \"128\": \"KEYED_FRAGMENT\",\n \"UNKEYED_FRAGMENT\": 256,\n \"256\": \"UNKEYED_FRAGMENT\",\n \"NEED_PATCH\": 512,\n \"512\": \"NEED_PATCH\",\n \"DYNAMIC_SLOTS\": 1024,\n \"1024\": \"DYNAMIC_SLOTS\",\n \"DEV_ROOT_FRAGMENT\": 2048,\n \"2048\": \"DEV_ROOT_FRAGMENT\",\n \"HOISTED\": -1,\n \"-1\": \"HOISTED\",\n \"BAIL\": -2,\n \"-2\": \"BAIL\"\n};\nconst PatchFlagNames = {\n [1]: `TEXT`,\n [2]: `CLASS`,\n [4]: `STYLE`,\n [8]: `PROPS`,\n [16]: `FULL_PROPS`,\n [32]: `NEED_HYDRATION`,\n [64]: `STABLE_FRAGMENT`,\n [128]: `KEYED_FRAGMENT`,\n [256]: `UNKEYED_FRAGMENT`,\n [512]: `NEED_PATCH`,\n [1024]: `DYNAMIC_SLOTS`,\n [2048]: `DEV_ROOT_FRAGMENT`,\n [-1]: `HOISTED`,\n [-2]: `BAIL`\n};\n\nconst ShapeFlags = {\n \"ELEMENT\": 1,\n \"1\": \"ELEMENT\",\n \"FUNCTIONAL_COMPONENT\": 2,\n \"2\": \"FUNCTIONAL_COMPONENT\",\n \"STATEFUL_COMPONENT\": 4,\n \"4\": \"STATEFUL_COMPONENT\",\n \"TEXT_CHILDREN\": 8,\n \"8\": \"TEXT_CHILDREN\",\n \"ARRAY_CHILDREN\": 16,\n \"16\": \"ARRAY_CHILDREN\",\n \"SLOTS_CHILDREN\": 32,\n \"32\": \"SLOTS_CHILDREN\",\n \"TELEPORT\": 64,\n \"64\": \"TELEPORT\",\n \"SUSPENSE\": 128,\n \"128\": \"SUSPENSE\",\n \"COMPONENT_SHOULD_KEEP_ALIVE\": 256,\n \"256\": \"COMPONENT_SHOULD_KEEP_ALIVE\",\n \"COMPONENT_KEPT_ALIVE\": 512,\n \"512\": \"COMPONENT_KEPT_ALIVE\",\n \"COMPONENT\": 6,\n \"6\": \"COMPONENT\"\n};\n\nconst SlotFlags = {\n \"STABLE\": 1,\n \"1\": \"STABLE\",\n \"DYNAMIC\": 2,\n \"2\": \"DYNAMIC\",\n \"FORWARDED\": 3,\n \"3\": \"FORWARDED\"\n};\nconst slotFlagsText = {\n [1]: \"STABLE\",\n [2]: \"DYNAMIC\",\n [3]: \"FORWARDED\"\n};\n\nconst GLOBALS_ALLOWED = \"Infinity,undefined,NaN,isFinite,isNaN,parseFloat,parseInt,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl,BigInt,console,Error\";\nconst isGloballyAllowed = /* @__PURE__ */ makeMap(GLOBALS_ALLOWED);\nconst isGloballyWhitelisted = isGloballyAllowed;\n\nconst range = 2;\nfunction generateCodeFrame(source, start = 0, end = source.length) {\n let lines = source.split(/(\\r?\\n)/);\n const newlineSequences = lines.filter((_, idx) => idx % 2 === 1);\n lines = lines.filter((_, idx) => idx % 2 === 0);\n let count = 0;\n const res = [];\n for (let i = 0; i < lines.length; i++) {\n count += lines[i].length + (newlineSequences[i] && newlineSequences[i].length || 0);\n if (count >= start) {\n for (let j = i - range; j <= i + range || end > count; j++) {\n if (j < 0 || j >= lines.length)\n continue;\n const line = j + 1;\n res.push(\n `${line}${\" \".repeat(Math.max(3 - String(line).length, 0))}| ${lines[j]}`\n );\n const lineLength = lines[j].length;\n const newLineSeqLength = newlineSequences[j] && newlineSequences[j].length || 0;\n if (j === i) {\n const pad = start - (count - (lineLength + newLineSeqLength));\n const length = Math.max(\n 1,\n end > count ? lineLength - pad : end - start\n );\n res.push(` | ` + \" \".repeat(pad) + \"^\".repeat(length));\n } else if (j > i) {\n if (end > count) {\n const length = Math.max(Math.min(end - count, lineLength), 1);\n res.push(` | ` + \"^\".repeat(length));\n }\n count += lineLength + newLineSeqLength;\n }\n }\n break;\n }\n }\n return res.join(\"\\n\");\n}\n\nfunction normalizeStyle(value) {\n if (isArray(value)) {\n const res = {};\n for (let i = 0; i < value.length; i++) {\n const item = value[i];\n const normalized = isString(item) ? parseStringStyle(item) : normalizeStyle(item);\n if (normalized) {\n for (const key in normalized) {\n res[key] = normalized[key];\n }\n }\n }\n return res;\n } else if (isString(value) || isObject(value)) {\n return value;\n }\n}\nconst listDelimiterRE = /;(?![^(]*\\))/g;\nconst propertyDelimiterRE = /:([^]+)/;\nconst styleCommentRE = /\\/\\*[^]*?\\*\\//g;\nfunction parseStringStyle(cssText) {\n const ret = {};\n cssText.replace(styleCommentRE, \"\").split(listDelimiterRE).forEach((item) => {\n if (item) {\n const tmp = item.split(propertyDelimiterRE);\n tmp.length > 1 && (ret[tmp[0].trim()] = tmp[1].trim());\n }\n });\n return ret;\n}\nfunction stringifyStyle(styles) {\n let ret = \"\";\n if (!styles || isString(styles)) {\n return ret;\n }\n for (const key in styles) {\n const value = styles[key];\n const normalizedKey = key.startsWith(`--`) ? key : hyphenate(key);\n if (isString(value) || typeof value === \"number\") {\n ret += `${normalizedKey}:${value};`;\n }\n }\n return ret;\n}\nfunction normalizeClass(value) {\n let res = \"\";\n if (isString(value)) {\n res = value;\n } else if (isArray(value)) {\n for (let i = 0; i < value.length; i++) {\n const normalized = normalizeClass(value[i]);\n if (normalized) {\n res += normalized + \" \";\n }\n }\n } else if (isObject(value)) {\n for (const name in value) {\n if (value[name]) {\n res += name + \" \";\n }\n }\n }\n return res.trim();\n}\nfunction normalizeProps(props) {\n if (!props)\n return null;\n let { class: klass, style } = props;\n if (klass && !isString(klass)) {\n props.class = normalizeClass(klass);\n }\n if (style) {\n props.style = normalizeStyle(style);\n }\n return props;\n}\n\nconst HTML_TAGS = \"html,body,base,head,link,meta,style,title,address,article,aside,footer,header,hgroup,h1,h2,h3,h4,h5,h6,nav,section,div,dd,dl,dt,figcaption,figure,picture,hr,img,li,main,ol,p,pre,ul,a,b,abbr,bdi,bdo,br,cite,code,data,dfn,em,i,kbd,mark,q,rp,rt,ruby,s,samp,small,span,strong,sub,sup,time,u,var,wbr,area,audio,map,track,video,embed,object,param,source,canvas,script,noscript,del,ins,caption,col,colgroup,table,thead,tbody,td,th,tr,button,datalist,fieldset,form,input,label,legend,meter,optgroup,option,output,progress,select,textarea,details,dialog,menu,summary,template,blockquote,iframe,tfoot\";\nconst SVG_TAGS = \"svg,animate,animateMotion,animateTransform,circle,clipPath,color-profile,defs,desc,discard,ellipse,feBlend,feColorMatrix,feComponentTransfer,feComposite,feConvolveMatrix,feDiffuseLighting,feDisplacementMap,feDistantLight,feDropShadow,feFlood,feFuncA,feFuncB,feFuncG,feFuncR,feGaussianBlur,feImage,feMerge,feMergeNode,feMorphology,feOffset,fePointLight,feSpecularLighting,feSpotLight,feTile,feTurbulence,filter,foreignObject,g,hatch,hatchpath,image,line,linearGradient,marker,mask,mesh,meshgradient,meshpatch,meshrow,metadata,mpath,path,pattern,polygon,polyline,radialGradient,rect,set,solidcolor,stop,switch,symbol,text,textPath,title,tspan,unknown,use,view\";\nconst MATH_TAGS = \"annotation,annotation-xml,maction,maligngroup,malignmark,math,menclose,merror,mfenced,mfrac,mfraction,mglyph,mi,mlabeledtr,mlongdiv,mmultiscripts,mn,mo,mover,mpadded,mphantom,mprescripts,mroot,mrow,ms,mscarries,mscarry,msgroup,msline,mspace,msqrt,msrow,mstack,mstyle,msub,msubsup,msup,mtable,mtd,mtext,mtr,munder,munderover,none,semantics\";\nconst VOID_TAGS = \"area,base,br,col,embed,hr,img,input,link,meta,param,source,track,wbr\";\nconst isHTMLTag = /* @__PURE__ */ makeMap(HTML_TAGS);\nconst isSVGTag = /* @__PURE__ */ makeMap(SVG_TAGS);\nconst isMathMLTag = /* @__PURE__ */ makeMap(MATH_TAGS);\nconst isVoidTag = /* @__PURE__ */ makeMap(VOID_TAGS);\n\nconst specialBooleanAttrs = `itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly`;\nconst isSpecialBooleanAttr = /* @__PURE__ */ makeMap(specialBooleanAttrs);\nconst isBooleanAttr = /* @__PURE__ */ makeMap(\n specialBooleanAttrs + `,async,autofocus,autoplay,controls,default,defer,disabled,hidden,inert,loop,open,required,reversed,scoped,seamless,checked,muted,multiple,selected`\n);\nfunction includeBooleanAttr(value) {\n return !!value || value === \"\";\n}\nconst unsafeAttrCharRE = /[>/=\"'\\u0009\\u000a\\u000c\\u0020]/;\nconst attrValidationCache = {};\nfunction isSSRSafeAttrName(name) {\n if (attrValidationCache.hasOwnProperty(name)) {\n return attrValidationCache[name];\n }\n const isUnsafe = unsafeAttrCharRE.test(name);\n if (isUnsafe) {\n console.error(`unsafe attribute name: ${name}`);\n }\n return attrValidationCache[name] = !isUnsafe;\n}\nconst propsToAttrMap = {\n acceptCharset: \"accept-charset\",\n className: \"class\",\n htmlFor: \"for\",\n httpEquiv: \"http-equiv\"\n};\nconst isKnownHtmlAttr = /* @__PURE__ */ makeMap(\n `accept,accept-charset,accesskey,action,align,allow,alt,async,autocapitalize,autocomplete,autofocus,autoplay,background,bgcolor,border,buffered,capture,challenge,charset,checked,cite,class,code,codebase,color,cols,colspan,content,contenteditable,contextmenu,controls,coords,crossorigin,csp,data,datetime,decoding,default,defer,dir,dirname,disabled,download,draggable,dropzone,enctype,enterkeyhint,for,form,formaction,formenctype,formmethod,formnovalidate,formtarget,headers,height,hidden,high,href,hreflang,http-equiv,icon,id,importance,inert,integrity,ismap,itemprop,keytype,kind,label,lang,language,loading,list,loop,low,manifest,max,maxlength,minlength,media,min,multiple,muted,name,novalidate,open,optimum,pattern,ping,placeholder,poster,preload,radiogroup,readonly,referrerpolicy,rel,required,reversed,rows,rowspan,sandbox,scope,scoped,selected,shape,size,sizes,slot,span,spellcheck,src,srcdoc,srclang,srcset,start,step,style,summary,tabindex,target,title,translate,type,usemap,value,width,wrap`\n);\nconst isKnownSvgAttr = /* @__PURE__ */ makeMap(\n `xmlns,accent-height,accumulate,additive,alignment-baseline,alphabetic,amplitude,arabic-form,ascent,attributeName,attributeType,azimuth,baseFrequency,baseline-shift,baseProfile,bbox,begin,bias,by,calcMode,cap-height,class,clip,clipPathUnits,clip-path,clip-rule,color,color-interpolation,color-interpolation-filters,color-profile,color-rendering,contentScriptType,contentStyleType,crossorigin,cursor,cx,cy,d,decelerate,descent,diffuseConstant,direction,display,divisor,dominant-baseline,dur,dx,dy,edgeMode,elevation,enable-background,end,exponent,fill,fill-opacity,fill-rule,filter,filterRes,filterUnits,flood-color,flood-opacity,font-family,font-size,font-size-adjust,font-stretch,font-style,font-variant,font-weight,format,from,fr,fx,fy,g1,g2,glyph-name,glyph-orientation-horizontal,glyph-orientation-vertical,glyphRef,gradientTransform,gradientUnits,hanging,height,href,hreflang,horiz-adv-x,horiz-origin-x,id,ideographic,image-rendering,in,in2,intercept,k,k1,k2,k3,k4,kernelMatrix,kernelUnitLength,kerning,keyPoints,keySplines,keyTimes,lang,lengthAdjust,letter-spacing,lighting-color,limitingConeAngle,local,marker-end,marker-mid,marker-start,markerHeight,markerUnits,markerWidth,mask,maskContentUnits,maskUnits,mathematical,max,media,method,min,mode,name,numOctaves,offset,opacity,operator,order,orient,orientation,origin,overflow,overline-position,overline-thickness,panose-1,paint-order,path,pathLength,patternContentUnits,patternTransform,patternUnits,ping,pointer-events,points,pointsAtX,pointsAtY,pointsAtZ,preserveAlpha,preserveAspectRatio,primitiveUnits,r,radius,referrerPolicy,refX,refY,rel,rendering-intent,repeatCount,repeatDur,requiredExtensions,requiredFeatures,restart,result,rotate,rx,ry,scale,seed,shape-rendering,slope,spacing,specularConstant,specularExponent,speed,spreadMethod,startOffset,stdDeviation,stemh,stemv,stitchTiles,stop-color,stop-opacity,strikethrough-position,strikethrough-thickness,string,stroke,stroke-dasharray,stroke-dashoffset,stroke-linecap,stroke-linejoin,stroke-miterlimit,stroke-opacity,stroke-width,style,surfaceScale,systemLanguage,tabindex,tableValues,target,targetX,targetY,text-anchor,text-decoration,text-rendering,textLength,to,transform,transform-origin,type,u1,u2,underline-position,underline-thickness,unicode,unicode-bidi,unicode-range,units-per-em,v-alphabetic,v-hanging,v-ideographic,v-mathematical,values,vector-effect,version,vert-adv-y,vert-origin-x,vert-origin-y,viewBox,viewTarget,visibility,width,widths,word-spacing,writing-mode,x,x-height,x1,x2,xChannelSelector,xlink:actuate,xlink:arcrole,xlink:href,xlink:role,xlink:show,xlink:title,xlink:type,xmlns:xlink,xml:base,xml:lang,xml:space,y,y1,y2,yChannelSelector,z,zoomAndPan`\n);\nfunction isRenderableAttrValue(value) {\n if (value == null) {\n return false;\n }\n const type = typeof value;\n return type === \"string\" || type === \"number\" || type === \"boolean\";\n}\n\nconst escapeRE = /[\"'&<>]/;\nfunction escapeHtml(string) {\n const str = \"\" + string;\n const match = escapeRE.exec(str);\n if (!match) {\n return str;\n }\n let html = \"\";\n let escaped;\n let index;\n let lastIndex = 0;\n for (index = match.index; index < str.length; index++) {\n switch (str.charCodeAt(index)) {\n case 34:\n escaped = \""\";\n break;\n case 38:\n escaped = \"&\";\n break;\n case 39:\n escaped = \"'\";\n break;\n case 60:\n escaped = \"<\";\n break;\n case 62:\n escaped = \">\";\n break;\n default:\n continue;\n }\n if (lastIndex !== index) {\n html += str.slice(lastIndex, index);\n }\n lastIndex = index + 1;\n html += escaped;\n }\n return lastIndex !== index ? html + str.slice(lastIndex, index) : html;\n}\nconst commentStripRE = /^-?>||--!>| looseEqual(item, val));\n}\n\nconst toDisplayString = (val) => {\n return isString(val) ? val : val == null ? \"\" : isArray(val) || isObject(val) && (val.toString === objectToString || !isFunction(val.toString)) ? JSON.stringify(val, replacer, 2) : String(val);\n};\nconst replacer = (_key, val) => {\n if (val && val.__v_isRef) {\n return replacer(_key, val.value);\n } else if (isMap(val)) {\n return {\n [`Map(${val.size})`]: [...val.entries()].reduce(\n (entries, [key, val2], i) => {\n entries[stringifySymbol(key, i) + \" =>\"] = val2;\n return entries;\n },\n {}\n )\n };\n } else if (isSet(val)) {\n return {\n [`Set(${val.size})`]: [...val.values()].map((v) => stringifySymbol(v))\n };\n } else if (isSymbol(val)) {\n return stringifySymbol(val);\n } else if (isObject(val) && !isArray(val) && !isPlainObject(val)) {\n return String(val);\n }\n return val;\n};\nconst stringifySymbol = (v, i = \"\") => {\n var _a;\n return (\n // Symbol.description in es2019+ so we need to cast here to pass\n // the lib: es2016 check\n isSymbol(v) ? `Symbol(${(_a = v.description) != null ? _a : i})` : v\n );\n};\n\nexport { EMPTY_ARR, EMPTY_OBJ, NO, NOOP, PatchFlagNames, PatchFlags, ShapeFlags, SlotFlags, camelize, capitalize, def, escapeHtml, escapeHtmlComment, extend, genPropsAccessExp, generateCodeFrame, getGlobalThis, hasChanged, hasOwn, hyphenate, includeBooleanAttr, invokeArrayFns, isArray, isBooleanAttr, isBuiltInDirective, isDate, isFunction, isGloballyAllowed, isGloballyWhitelisted, isHTMLTag, isIntegerKey, isKnownHtmlAttr, isKnownSvgAttr, isMap, isMathMLTag, isModelListener, isObject, isOn, isPlainObject, isPromise, isRegExp, isRenderableAttrValue, isReservedProp, isSSRSafeAttrName, isSVGTag, isSet, isSpecialBooleanAttr, isString, isSymbol, isVoidTag, looseEqual, looseIndexOf, looseToNumber, makeMap, normalizeClass, normalizeProps, normalizeStyle, objectToString, parseStringStyle, propsToAttrMap, remove, slotFlagsText, stringifyStyle, toDisplayString, toHandlerKey, toNumber, toRawType, toTypeString };\n","/**\n* @vue/reactivity v3.4.25\n* (c) 2018-present Yuxi (Evan) You and Vue contributors\n* @license MIT\n**/\nimport { NOOP, extend, isArray, isSymbol, isMap, isIntegerKey, hasOwn, hasChanged, isObject, makeMap, capitalize, toRawType, def, isFunction } from '@vue/shared';\n\nfunction warn(msg, ...args) {\n console.warn(`[Vue warn] ${msg}`, ...args);\n}\n\nlet activeEffectScope;\nclass EffectScope {\n constructor(detached = false) {\n this.detached = detached;\n /**\n * @internal\n */\n this._active = true;\n /**\n * @internal\n */\n this.effects = [];\n /**\n * @internal\n */\n this.cleanups = [];\n this.parent = activeEffectScope;\n if (!detached && activeEffectScope) {\n this.index = (activeEffectScope.scopes || (activeEffectScope.scopes = [])).push(\n this\n ) - 1;\n }\n }\n get active() {\n return this._active;\n }\n run(fn) {\n if (this._active) {\n const currentEffectScope = activeEffectScope;\n try {\n activeEffectScope = this;\n return fn();\n } finally {\n activeEffectScope = currentEffectScope;\n }\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n warn(`cannot run an inactive effect scope.`);\n }\n }\n /**\n * This should only be called on non-detached scopes\n * @internal\n */\n on() {\n activeEffectScope = this;\n }\n /**\n * This should only be called on non-detached scopes\n * @internal\n */\n off() {\n activeEffectScope = this.parent;\n }\n stop(fromParent) {\n if (this._active) {\n let i, l;\n for (i = 0, l = this.effects.length; i < l; i++) {\n this.effects[i].stop();\n }\n for (i = 0, l = this.cleanups.length; i < l; i++) {\n this.cleanups[i]();\n }\n if (this.scopes) {\n for (i = 0, l = this.scopes.length; i < l; i++) {\n this.scopes[i].stop(true);\n }\n }\n if (!this.detached && this.parent && !fromParent) {\n const last = this.parent.scopes.pop();\n if (last && last !== this) {\n this.parent.scopes[this.index] = last;\n last.index = this.index;\n }\n }\n this.parent = void 0;\n this._active = false;\n }\n }\n}\nfunction effectScope(detached) {\n return new EffectScope(detached);\n}\nfunction recordEffectScope(effect, scope = activeEffectScope) {\n if (scope && scope.active) {\n scope.effects.push(effect);\n }\n}\nfunction getCurrentScope() {\n return activeEffectScope;\n}\nfunction onScopeDispose(fn) {\n if (activeEffectScope) {\n activeEffectScope.cleanups.push(fn);\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n warn(\n `onScopeDispose() is called when there is no active effect scope to be associated with.`\n );\n }\n}\n\nlet activeEffect;\nclass ReactiveEffect {\n constructor(fn, trigger, scheduler, scope) {\n this.fn = fn;\n this.trigger = trigger;\n this.scheduler = scheduler;\n this.active = true;\n this.deps = [];\n /**\n * @internal\n */\n this._dirtyLevel = 4;\n /**\n * @internal\n */\n this._trackId = 0;\n /**\n * @internal\n */\n this._runnings = 0;\n /**\n * @internal\n */\n this._shouldSchedule = false;\n /**\n * @internal\n */\n this._depsLength = 0;\n recordEffectScope(this, scope);\n }\n get dirty() {\n if (this._dirtyLevel === 2 || this._dirtyLevel === 3) {\n this._dirtyLevel = 1;\n pauseTracking();\n for (let i = 0; i < this._depsLength; i++) {\n const dep = this.deps[i];\n if (dep.computed) {\n triggerComputed(dep.computed);\n if (this._dirtyLevel >= 4) {\n break;\n }\n }\n }\n if (this._dirtyLevel === 1) {\n this._dirtyLevel = 0;\n }\n resetTracking();\n }\n return this._dirtyLevel >= 4;\n }\n set dirty(v) {\n this._dirtyLevel = v ? 4 : 0;\n }\n run() {\n this._dirtyLevel = 0;\n if (!this.active) {\n return this.fn();\n }\n let lastShouldTrack = shouldTrack;\n let lastEffect = activeEffect;\n try {\n shouldTrack = true;\n activeEffect = this;\n this._runnings++;\n preCleanupEffect(this);\n return this.fn();\n } finally {\n postCleanupEffect(this);\n this._runnings--;\n activeEffect = lastEffect;\n shouldTrack = lastShouldTrack;\n }\n }\n stop() {\n var _a;\n if (this.active) {\n preCleanupEffect(this);\n postCleanupEffect(this);\n (_a = this.onStop) == null ? void 0 : _a.call(this);\n this.active = false;\n }\n }\n}\nfunction triggerComputed(computed) {\n return computed.value;\n}\nfunction preCleanupEffect(effect2) {\n effect2._trackId++;\n effect2._depsLength = 0;\n}\nfunction postCleanupEffect(effect2) {\n if (effect2.deps.length > effect2._depsLength) {\n for (let i = effect2._depsLength; i < effect2.deps.length; i++) {\n cleanupDepEffect(effect2.deps[i], effect2);\n }\n effect2.deps.length = effect2._depsLength;\n }\n}\nfunction cleanupDepEffect(dep, effect2) {\n const trackId = dep.get(effect2);\n if (trackId !== void 0 && effect2._trackId !== trackId) {\n dep.delete(effect2);\n if (dep.size === 0) {\n dep.cleanup();\n }\n }\n}\nfunction effect(fn, options) {\n if (fn.effect instanceof ReactiveEffect) {\n fn = fn.effect.fn;\n }\n const _effect = new ReactiveEffect(fn, NOOP, () => {\n if (_effect.dirty) {\n _effect.run();\n }\n });\n if (options) {\n extend(_effect, options);\n if (options.scope)\n recordEffectScope(_effect, options.scope);\n }\n if (!options || !options.lazy) {\n _effect.run();\n }\n const runner = _effect.run.bind(_effect);\n runner.effect = _effect;\n return runner;\n}\nfunction stop(runner) {\n runner.effect.stop();\n}\nlet shouldTrack = true;\nlet pauseScheduleStack = 0;\nconst trackStack = [];\nfunction pauseTracking() {\n trackStack.push(shouldTrack);\n shouldTrack = false;\n}\nfunction enableTracking() {\n trackStack.push(shouldTrack);\n shouldTrack = true;\n}\nfunction resetTracking() {\n const last = trackStack.pop();\n shouldTrack = last === void 0 ? true : last;\n}\nfunction pauseScheduling() {\n pauseScheduleStack++;\n}\nfunction resetScheduling() {\n pauseScheduleStack--;\n while (!pauseScheduleStack && queueEffectSchedulers.length) {\n queueEffectSchedulers.shift()();\n }\n}\nfunction trackEffect(effect2, dep, debuggerEventExtraInfo) {\n var _a;\n if (dep.get(effect2) !== effect2._trackId) {\n dep.set(effect2, effect2._trackId);\n const oldDep = effect2.deps[effect2._depsLength];\n if (oldDep !== dep) {\n if (oldDep) {\n cleanupDepEffect(oldDep, effect2);\n }\n effect2.deps[effect2._depsLength++] = dep;\n } else {\n effect2._depsLength++;\n }\n if (!!(process.env.NODE_ENV !== \"production\")) {\n (_a = effect2.onTrack) == null ? void 0 : _a.call(effect2, extend({ effect: effect2 }, debuggerEventExtraInfo));\n }\n }\n}\nconst queueEffectSchedulers = [];\nfunction triggerEffects(dep, dirtyLevel, debuggerEventExtraInfo) {\n var _a;\n pauseScheduling();\n for (const effect2 of dep.keys()) {\n let tracking;\n if (effect2._dirtyLevel < dirtyLevel && (tracking != null ? tracking : tracking = dep.get(effect2) === effect2._trackId)) {\n effect2._shouldSchedule || (effect2._shouldSchedule = effect2._dirtyLevel === 0);\n effect2._dirtyLevel = dirtyLevel;\n }\n if (effect2._shouldSchedule && (tracking != null ? tracking : tracking = dep.get(effect2) === effect2._trackId)) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n (_a = effect2.onTrigger) == null ? void 0 : _a.call(effect2, extend({ effect: effect2 }, debuggerEventExtraInfo));\n }\n effect2.trigger();\n if ((!effect2._runnings || effect2.allowRecurse) && effect2._dirtyLevel !== 2) {\n effect2._shouldSchedule = false;\n if (effect2.scheduler) {\n queueEffectSchedulers.push(effect2.scheduler);\n }\n }\n }\n }\n resetScheduling();\n}\n\nconst createDep = (cleanup, computed) => {\n const dep = /* @__PURE__ */ new Map();\n dep.cleanup = cleanup;\n dep.computed = computed;\n return dep;\n};\n\nconst targetMap = /* @__PURE__ */ new WeakMap();\nconst ITERATE_KEY = Symbol(!!(process.env.NODE_ENV !== \"production\") ? \"iterate\" : \"\");\nconst MAP_KEY_ITERATE_KEY = Symbol(!!(process.env.NODE_ENV !== \"production\") ? \"Map key iterate\" : \"\");\nfunction track(target, type, key) {\n if (shouldTrack && activeEffect) {\n let depsMap = targetMap.get(target);\n if (!depsMap) {\n targetMap.set(target, depsMap = /* @__PURE__ */ new Map());\n }\n let dep = depsMap.get(key);\n if (!dep) {\n depsMap.set(key, dep = createDep(() => depsMap.delete(key)));\n }\n trackEffect(\n activeEffect,\n dep,\n !!(process.env.NODE_ENV !== \"production\") ? {\n target,\n type,\n key\n } : void 0\n );\n }\n}\nfunction trigger(target, type, key, newValue, oldValue, oldTarget) {\n const depsMap = targetMap.get(target);\n if (!depsMap) {\n return;\n }\n let deps = [];\n if (type === \"clear\") {\n deps = [...depsMap.values()];\n } else if (key === \"length\" && isArray(target)) {\n const newLength = Number(newValue);\n depsMap.forEach((dep, key2) => {\n if (key2 === \"length\" || !isSymbol(key2) && key2 >= newLength) {\n deps.push(dep);\n }\n });\n } else {\n if (key !== void 0) {\n deps.push(depsMap.get(key));\n }\n switch (type) {\n case \"add\":\n if (!isArray(target)) {\n deps.push(depsMap.get(ITERATE_KEY));\n if (isMap(target)) {\n deps.push(depsMap.get(MAP_KEY_ITERATE_KEY));\n }\n } else if (isIntegerKey(key)) {\n deps.push(depsMap.get(\"length\"));\n }\n break;\n case \"delete\":\n if (!isArray(target)) {\n deps.push(depsMap.get(ITERATE_KEY));\n if (isMap(target)) {\n deps.push(depsMap.get(MAP_KEY_ITERATE_KEY));\n }\n }\n break;\n case \"set\":\n if (isMap(target)) {\n deps.push(depsMap.get(ITERATE_KEY));\n }\n break;\n }\n }\n pauseScheduling();\n for (const dep of deps) {\n if (dep) {\n triggerEffects(\n dep,\n 4,\n !!(process.env.NODE_ENV !== \"production\") ? {\n target,\n type,\n key,\n newValue,\n oldValue,\n oldTarget\n } : void 0\n );\n }\n }\n resetScheduling();\n}\nfunction getDepFromReactive(object, key) {\n var _a;\n return (_a = targetMap.get(object)) == null ? void 0 : _a.get(key);\n}\n\nconst isNonTrackableKeys = /* @__PURE__ */ makeMap(`__proto__,__v_isRef,__isVue`);\nconst builtInSymbols = new Set(\n /* @__PURE__ */ Object.getOwnPropertyNames(Symbol).filter((key) => key !== \"arguments\" && key !== \"caller\").map((key) => Symbol[key]).filter(isSymbol)\n);\nconst arrayInstrumentations = /* @__PURE__ */ createArrayInstrumentations();\nfunction createArrayInstrumentations() {\n const instrumentations = {};\n [\"includes\", \"indexOf\", \"lastIndexOf\"].forEach((key) => {\n instrumentations[key] = function(...args) {\n const arr = toRaw(this);\n for (let i = 0, l = this.length; i < l; i++) {\n track(arr, \"get\", i + \"\");\n }\n const res = arr[key](...args);\n if (res === -1 || res === false) {\n return arr[key](...args.map(toRaw));\n } else {\n return res;\n }\n };\n });\n [\"push\", \"pop\", \"shift\", \"unshift\", \"splice\"].forEach((key) => {\n instrumentations[key] = function(...args) {\n pauseTracking();\n pauseScheduling();\n const res = toRaw(this)[key].apply(this, args);\n resetScheduling();\n resetTracking();\n return res;\n };\n });\n return instrumentations;\n}\nfunction hasOwnProperty(key) {\n if (!isSymbol(key))\n key = String(key);\n const obj = toRaw(this);\n track(obj, \"has\", key);\n return obj.hasOwnProperty(key);\n}\nclass BaseReactiveHandler {\n constructor(_isReadonly = false, _isShallow = false) {\n this._isReadonly = _isReadonly;\n this._isShallow = _isShallow;\n }\n get(target, key, receiver) {\n const isReadonly2 = this._isReadonly, isShallow2 = this._isShallow;\n if (key === \"__v_isReactive\") {\n return !isReadonly2;\n } else if (key === \"__v_isReadonly\") {\n return isReadonly2;\n } else if (key === \"__v_isShallow\") {\n return isShallow2;\n } else if (key === \"__v_raw\") {\n if (receiver === (isReadonly2 ? isShallow2 ? shallowReadonlyMap : readonlyMap : isShallow2 ? shallowReactiveMap : reactiveMap).get(target) || // receiver is not the reactive proxy, but has the same prototype\n // this means the reciever is a user proxy of the reactive proxy\n Object.getPrototypeOf(target) === Object.getPrototypeOf(receiver)) {\n return target;\n }\n return;\n }\n const targetIsArray = isArray(target);\n if (!isReadonly2) {\n if (targetIsArray && hasOwn(arrayInstrumentations, key)) {\n return Reflect.get(arrayInstrumentations, key, receiver);\n }\n if (key === \"hasOwnProperty\") {\n return hasOwnProperty;\n }\n }\n const res = Reflect.get(target, key, receiver);\n if (isSymbol(key) ? builtInSymbols.has(key) : isNonTrackableKeys(key)) {\n return res;\n }\n if (!isReadonly2) {\n track(target, \"get\", key);\n }\n if (isShallow2) {\n return res;\n }\n if (isRef(res)) {\n return targetIsArray && isIntegerKey(key) ? res : res.value;\n }\n if (isObject(res)) {\n return isReadonly2 ? readonly(res) : reactive(res);\n }\n return res;\n }\n}\nclass MutableReactiveHandler extends BaseReactiveHandler {\n constructor(isShallow2 = false) {\n super(false, isShallow2);\n }\n set(target, key, value, receiver) {\n let oldValue = target[key];\n if (!this._isShallow) {\n const isOldValueReadonly = isReadonly(oldValue);\n if (!isShallow(value) && !isReadonly(value)) {\n oldValue = toRaw(oldValue);\n value = toRaw(value);\n }\n if (!isArray(target) && isRef(oldValue) && !isRef(value)) {\n if (isOldValueReadonly) {\n return false;\n } else {\n oldValue.value = value;\n return true;\n }\n }\n }\n const hadKey = isArray(target) && isIntegerKey(key) ? Number(key) < target.length : hasOwn(target, key);\n const result = Reflect.set(target, key, value, receiver);\n if (target === toRaw(receiver)) {\n if (!hadKey) {\n trigger(target, \"add\", key, value);\n } else if (hasChanged(value, oldValue)) {\n trigger(target, \"set\", key, value, oldValue);\n }\n }\n return result;\n }\n deleteProperty(target, key) {\n const hadKey = hasOwn(target, key);\n const oldValue = target[key];\n const result = Reflect.deleteProperty(target, key);\n if (result && hadKey) {\n trigger(target, \"delete\", key, void 0, oldValue);\n }\n return result;\n }\n has(target, key) {\n const result = Reflect.has(target, key);\n if (!isSymbol(key) || !builtInSymbols.has(key)) {\n track(target, \"has\", key);\n }\n return result;\n }\n ownKeys(target) {\n track(\n target,\n \"iterate\",\n isArray(target) ? \"length\" : ITERATE_KEY\n );\n return Reflect.ownKeys(target);\n }\n}\nclass ReadonlyReactiveHandler extends BaseReactiveHandler {\n constructor(isShallow2 = false) {\n super(true, isShallow2);\n }\n set(target, key) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n warn(\n `Set operation on key \"${String(key)}\" failed: target is readonly.`,\n target\n );\n }\n return true;\n }\n deleteProperty(target, key) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n warn(\n `Delete operation on key \"${String(key)}\" failed: target is readonly.`,\n target\n );\n }\n return true;\n }\n}\nconst mutableHandlers = /* @__PURE__ */ new MutableReactiveHandler();\nconst readonlyHandlers = /* @__PURE__ */ new ReadonlyReactiveHandler();\nconst shallowReactiveHandlers = /* @__PURE__ */ new MutableReactiveHandler(\n true\n);\nconst shallowReadonlyHandlers = /* @__PURE__ */ new ReadonlyReactiveHandler(true);\n\nconst toShallow = (value) => value;\nconst getProto = (v) => Reflect.getPrototypeOf(v);\nfunction get(target, key, isReadonly = false, isShallow = false) {\n target = target[\"__v_raw\"];\n const rawTarget = toRaw(target);\n const rawKey = toRaw(key);\n if (!isReadonly) {\n if (hasChanged(key, rawKey)) {\n track(rawTarget, \"get\", key);\n }\n track(rawTarget, \"get\", rawKey);\n }\n const { has: has2 } = getProto(rawTarget);\n const wrap = isShallow ? toShallow : isReadonly ? toReadonly : toReactive;\n if (has2.call(rawTarget, key)) {\n return wrap(target.get(key));\n } else if (has2.call(rawTarget, rawKey)) {\n return wrap(target.get(rawKey));\n } else if (target !== rawTarget) {\n target.get(key);\n }\n}\nfunction has(key, isReadonly = false) {\n const target = this[\"__v_raw\"];\n const rawTarget = toRaw(target);\n const rawKey = toRaw(key);\n if (!isReadonly) {\n if (hasChanged(key, rawKey)) {\n track(rawTarget, \"has\", key);\n }\n track(rawTarget, \"has\", rawKey);\n }\n return key === rawKey ? target.has(key) : target.has(key) || target.has(rawKey);\n}\nfunction size(target, isReadonly = false) {\n target = target[\"__v_raw\"];\n !isReadonly && track(toRaw(target), \"iterate\", ITERATE_KEY);\n return Reflect.get(target, \"size\", target);\n}\nfunction add(value) {\n value = toRaw(value);\n const target = toRaw(this);\n const proto = getProto(target);\n const hadKey = proto.has.call(target, value);\n if (!hadKey) {\n target.add(value);\n trigger(target, \"add\", value, value);\n }\n return this;\n}\nfunction set(key, value) {\n value = toRaw(value);\n const target = toRaw(this);\n const { has: has2, get: get2 } = getProto(target);\n let hadKey = has2.call(target, key);\n if (!hadKey) {\n key = toRaw(key);\n hadKey = has2.call(target, key);\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n checkIdentityKeys(target, has2, key);\n }\n const oldValue = get2.call(target, key);\n target.set(key, value);\n if (!hadKey) {\n trigger(target, \"add\", key, value);\n } else if (hasChanged(value, oldValue)) {\n trigger(target, \"set\", key, value, oldValue);\n }\n return this;\n}\nfunction deleteEntry(key) {\n const target = toRaw(this);\n const { has: has2, get: get2 } = getProto(target);\n let hadKey = has2.call(target, key);\n if (!hadKey) {\n key = toRaw(key);\n hadKey = has2.call(target, key);\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n checkIdentityKeys(target, has2, key);\n }\n const oldValue = get2 ? get2.call(target, key) : void 0;\n const result = target.delete(key);\n if (hadKey) {\n trigger(target, \"delete\", key, void 0, oldValue);\n }\n return result;\n}\nfunction clear() {\n const target = toRaw(this);\n const hadItems = target.size !== 0;\n const oldTarget = !!(process.env.NODE_ENV !== \"production\") ? isMap(target) ? new Map(target) : new Set(target) : void 0;\n const result = target.clear();\n if (hadItems) {\n trigger(target, \"clear\", void 0, void 0, oldTarget);\n }\n return result;\n}\nfunction createForEach(isReadonly, isShallow) {\n return function forEach(callback, thisArg) {\n const observed = this;\n const target = observed[\"__v_raw\"];\n const rawTarget = toRaw(target);\n const wrap = isShallow ? toShallow : isReadonly ? toReadonly : toReactive;\n !isReadonly && track(rawTarget, \"iterate\", ITERATE_KEY);\n return target.forEach((value, key) => {\n return callback.call(thisArg, wrap(value), wrap(key), observed);\n });\n };\n}\nfunction createIterableMethod(method, isReadonly, isShallow) {\n return function(...args) {\n const target = this[\"__v_raw\"];\n const rawTarget = toRaw(target);\n const targetIsMap = isMap(rawTarget);\n const isPair = method === \"entries\" || method === Symbol.iterator && targetIsMap;\n const isKeyOnly = method === \"keys\" && targetIsMap;\n const innerIterator = target[method](...args);\n const wrap = isShallow ? toShallow : isReadonly ? toReadonly : toReactive;\n !isReadonly && track(\n rawTarget,\n \"iterate\",\n isKeyOnly ? MAP_KEY_ITERATE_KEY : ITERATE_KEY\n );\n return {\n // iterator protocol\n next() {\n const { value, done } = innerIterator.next();\n return done ? { value, done } : {\n value: isPair ? [wrap(value[0]), wrap(value[1])] : wrap(value),\n done\n };\n },\n // iterable protocol\n [Symbol.iterator]() {\n return this;\n }\n };\n };\n}\nfunction createReadonlyMethod(type) {\n return function(...args) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n const key = args[0] ? `on key \"${args[0]}\" ` : ``;\n warn(\n `${capitalize(type)} operation ${key}failed: target is readonly.`,\n toRaw(this)\n );\n }\n return type === \"delete\" ? false : type === \"clear\" ? void 0 : this;\n };\n}\nfunction createInstrumentations() {\n const mutableInstrumentations2 = {\n get(key) {\n return get(this, key);\n },\n get size() {\n return size(this);\n },\n has,\n add,\n set,\n delete: deleteEntry,\n clear,\n forEach: createForEach(false, false)\n };\n const shallowInstrumentations2 = {\n get(key) {\n return get(this, key, false, true);\n },\n get size() {\n return size(this);\n },\n has,\n add,\n set,\n delete: deleteEntry,\n clear,\n forEach: createForEach(false, true)\n };\n const readonlyInstrumentations2 = {\n get(key) {\n return get(this, key, true);\n },\n get size() {\n return size(this, true);\n },\n has(key) {\n return has.call(this, key, true);\n },\n add: createReadonlyMethod(\"add\"),\n set: createReadonlyMethod(\"set\"),\n delete: createReadonlyMethod(\"delete\"),\n clear: createReadonlyMethod(\"clear\"),\n forEach: createForEach(true, false)\n };\n const shallowReadonlyInstrumentations2 = {\n get(key) {\n return get(this, key, true, true);\n },\n get size() {\n return size(this, true);\n },\n has(key) {\n return has.call(this, key, true);\n },\n add: createReadonlyMethod(\"add\"),\n set: createReadonlyMethod(\"set\"),\n delete: createReadonlyMethod(\"delete\"),\n clear: createReadonlyMethod(\"clear\"),\n forEach: createForEach(true, true)\n };\n const iteratorMethods = [\n \"keys\",\n \"values\",\n \"entries\",\n Symbol.iterator\n ];\n iteratorMethods.forEach((method) => {\n mutableInstrumentations2[method] = createIterableMethod(method, false, false);\n readonlyInstrumentations2[method] = createIterableMethod(method, true, false);\n shallowInstrumentations2[method] = createIterableMethod(method, false, true);\n shallowReadonlyInstrumentations2[method] = createIterableMethod(\n method,\n true,\n true\n );\n });\n return [\n mutableInstrumentations2,\n readonlyInstrumentations2,\n shallowInstrumentations2,\n shallowReadonlyInstrumentations2\n ];\n}\nconst [\n mutableInstrumentations,\n readonlyInstrumentations,\n shallowInstrumentations,\n shallowReadonlyInstrumentations\n] = /* @__PURE__ */ createInstrumentations();\nfunction createInstrumentationGetter(isReadonly, shallow) {\n const instrumentations = shallow ? isReadonly ? shallowReadonlyInstrumentations : shallowInstrumentations : isReadonly ? readonlyInstrumentations : mutableInstrumentations;\n return (target, key, receiver) => {\n if (key === \"__v_isReactive\") {\n return !isReadonly;\n } else if (key === \"__v_isReadonly\") {\n return isReadonly;\n } else if (key === \"__v_raw\") {\n return target;\n }\n return Reflect.get(\n hasOwn(instrumentations, key) && key in target ? instrumentations : target,\n key,\n receiver\n );\n };\n}\nconst mutableCollectionHandlers = {\n get: /* @__PURE__ */ createInstrumentationGetter(false, false)\n};\nconst shallowCollectionHandlers = {\n get: /* @__PURE__ */ createInstrumentationGetter(false, true)\n};\nconst readonlyCollectionHandlers = {\n get: /* @__PURE__ */ createInstrumentationGetter(true, false)\n};\nconst shallowReadonlyCollectionHandlers = {\n get: /* @__PURE__ */ createInstrumentationGetter(true, true)\n};\nfunction checkIdentityKeys(target, has2, key) {\n const rawKey = toRaw(key);\n if (rawKey !== key && has2.call(target, rawKey)) {\n const type = toRawType(target);\n warn(\n `Reactive ${type} contains both the raw and reactive versions of the same object${type === `Map` ? ` as keys` : ``}, which can lead to inconsistencies. Avoid differentiating between the raw and reactive versions of an object and only use the reactive version if possible.`\n );\n }\n}\n\nconst reactiveMap = /* @__PURE__ */ new WeakMap();\nconst shallowReactiveMap = /* @__PURE__ */ new WeakMap();\nconst readonlyMap = /* @__PURE__ */ new WeakMap();\nconst shallowReadonlyMap = /* @__PURE__ */ new WeakMap();\nfunction targetTypeMap(rawType) {\n switch (rawType) {\n case \"Object\":\n case \"Array\":\n return 1 /* COMMON */;\n case \"Map\":\n case \"Set\":\n case \"WeakMap\":\n case \"WeakSet\":\n return 2 /* COLLECTION */;\n default:\n return 0 /* INVALID */;\n }\n}\nfunction getTargetType(value) {\n return value[\"__v_skip\"] || !Object.isExtensible(value) ? 0 /* INVALID */ : targetTypeMap(toRawType(value));\n}\nfunction reactive(target) {\n if (isReadonly(target)) {\n return target;\n }\n return createReactiveObject(\n target,\n false,\n mutableHandlers,\n mutableCollectionHandlers,\n reactiveMap\n );\n}\nfunction shallowReactive(target) {\n return createReactiveObject(\n target,\n false,\n shallowReactiveHandlers,\n shallowCollectionHandlers,\n shallowReactiveMap\n );\n}\nfunction readonly(target) {\n return createReactiveObject(\n target,\n true,\n readonlyHandlers,\n readonlyCollectionHandlers,\n readonlyMap\n );\n}\nfunction shallowReadonly(target) {\n return createReactiveObject(\n target,\n true,\n shallowReadonlyHandlers,\n shallowReadonlyCollectionHandlers,\n shallowReadonlyMap\n );\n}\nfunction createReactiveObject(target, isReadonly2, baseHandlers, collectionHandlers, proxyMap) {\n if (!isObject(target)) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n warn(`value cannot be made reactive: ${String(target)}`);\n }\n return target;\n }\n if (target[\"__v_raw\"] && !(isReadonly2 && target[\"__v_isReactive\"])) {\n return target;\n }\n const existingProxy = proxyMap.get(target);\n if (existingProxy) {\n return existingProxy;\n }\n const targetType = getTargetType(target);\n if (targetType === 0 /* INVALID */) {\n return target;\n }\n const proxy = new Proxy(\n target,\n targetType === 2 /* COLLECTION */ ? collectionHandlers : baseHandlers\n );\n proxyMap.set(target, proxy);\n return proxy;\n}\nfunction isReactive(value) {\n if (isReadonly(value)) {\n return isReactive(value[\"__v_raw\"]);\n }\n return !!(value && value[\"__v_isReactive\"]);\n}\nfunction isReadonly(value) {\n return !!(value && value[\"__v_isReadonly\"]);\n}\nfunction isShallow(value) {\n return !!(value && value[\"__v_isShallow\"]);\n}\nfunction isProxy(value) {\n return value ? !!value[\"__v_raw\"] : false;\n}\nfunction toRaw(observed) {\n const raw = observed && observed[\"__v_raw\"];\n return raw ? toRaw(raw) : observed;\n}\nfunction markRaw(value) {\n if (Object.isExtensible(value)) {\n def(value, \"__v_skip\", true);\n }\n return value;\n}\nconst toReactive = (value) => isObject(value) ? reactive(value) : value;\nconst toReadonly = (value) => isObject(value) ? readonly(value) : value;\n\nconst COMPUTED_SIDE_EFFECT_WARN = `Computed is still dirty after getter evaluation, likely because a computed is mutating its own dependency in its getter. State mutations in computed getters should be avoided. Check the docs for more details: https://vuejs.org/guide/essentials/computed.html#getters-should-be-side-effect-free`;\nclass ComputedRefImpl {\n constructor(getter, _setter, isReadonly, isSSR) {\n this.getter = getter;\n this._setter = _setter;\n this.dep = void 0;\n this.__v_isRef = true;\n this[\"__v_isReadonly\"] = false;\n this.effect = new ReactiveEffect(\n () => getter(this._value),\n () => triggerRefValue(\n this,\n this.effect._dirtyLevel === 2 ? 2 : 3\n )\n );\n this.effect.computed = this;\n this.effect.active = this._cacheable = !isSSR;\n this[\"__v_isReadonly\"] = isReadonly;\n }\n get value() {\n const self = toRaw(this);\n if ((!self._cacheable || self.effect.dirty) && hasChanged(self._value, self._value = self.effect.run())) {\n triggerRefValue(self, 4);\n }\n trackRefValue(self);\n if (self.effect._dirtyLevel >= 2) {\n if (!!(process.env.NODE_ENV !== \"production\") && this._warnRecursive) {\n warn(COMPUTED_SIDE_EFFECT_WARN, `\n\ngetter: `, this.getter);\n }\n triggerRefValue(self, 2);\n }\n return self._value;\n }\n set value(newValue) {\n this._setter(newValue);\n }\n // #region polyfill _dirty for backward compatibility third party code for Vue <= 3.3.x\n get _dirty() {\n return this.effect.dirty;\n }\n set _dirty(v) {\n this.effect.dirty = v;\n }\n // #endregion\n}\nfunction computed(getterOrOptions, debugOptions, isSSR = false) {\n let getter;\n let setter;\n const onlyGetter = isFunction(getterOrOptions);\n if (onlyGetter) {\n getter = getterOrOptions;\n setter = !!(process.env.NODE_ENV !== \"production\") ? () => {\n warn(\"Write operation failed: computed value is readonly\");\n } : NOOP;\n } else {\n getter = getterOrOptions.get;\n setter = getterOrOptions.set;\n }\n const cRef = new ComputedRefImpl(getter, setter, onlyGetter || !setter, isSSR);\n if (!!(process.env.NODE_ENV !== \"production\") && debugOptions && !isSSR) {\n cRef.effect.onTrack = debugOptions.onTrack;\n cRef.effect.onTrigger = debugOptions.onTrigger;\n }\n return cRef;\n}\n\nfunction trackRefValue(ref2) {\n var _a;\n if (shouldTrack && activeEffect) {\n ref2 = toRaw(ref2);\n trackEffect(\n activeEffect,\n (_a = ref2.dep) != null ? _a : ref2.dep = createDep(\n () => ref2.dep = void 0,\n ref2 instanceof ComputedRefImpl ? ref2 : void 0\n ),\n !!(process.env.NODE_ENV !== \"production\") ? {\n target: ref2,\n type: \"get\",\n key: \"value\"\n } : void 0\n );\n }\n}\nfunction triggerRefValue(ref2, dirtyLevel = 4, newVal) {\n ref2 = toRaw(ref2);\n const dep = ref2.dep;\n if (dep) {\n triggerEffects(\n dep,\n dirtyLevel,\n !!(process.env.NODE_ENV !== \"production\") ? {\n target: ref2,\n type: \"set\",\n key: \"value\",\n newValue: newVal\n } : void 0\n );\n }\n}\nfunction isRef(r) {\n return !!(r && r.__v_isRef === true);\n}\nfunction ref(value) {\n return createRef(value, false);\n}\nfunction shallowRef(value) {\n return createRef(value, true);\n}\nfunction createRef(rawValue, shallow) {\n if (isRef(rawValue)) {\n return rawValue;\n }\n return new RefImpl(rawValue, shallow);\n}\nclass RefImpl {\n constructor(value, __v_isShallow) {\n this.__v_isShallow = __v_isShallow;\n this.dep = void 0;\n this.__v_isRef = true;\n this._rawValue = __v_isShallow ? value : toRaw(value);\n this._value = __v_isShallow ? value : toReactive(value);\n }\n get value() {\n trackRefValue(this);\n return this._value;\n }\n set value(newVal) {\n const useDirectValue = this.__v_isShallow || isShallow(newVal) || isReadonly(newVal);\n newVal = useDirectValue ? newVal : toRaw(newVal);\n if (hasChanged(newVal, this._rawValue)) {\n this._rawValue = newVal;\n this._value = useDirectValue ? newVal : toReactive(newVal);\n triggerRefValue(this, 4, newVal);\n }\n }\n}\nfunction triggerRef(ref2) {\n triggerRefValue(ref2, 4, !!(process.env.NODE_ENV !== \"production\") ? ref2.value : void 0);\n}\nfunction unref(ref2) {\n return isRef(ref2) ? ref2.value : ref2;\n}\nfunction toValue(source) {\n return isFunction(source) ? source() : unref(source);\n}\nconst shallowUnwrapHandlers = {\n get: (target, key, receiver) => unref(Reflect.get(target, key, receiver)),\n set: (target, key, value, receiver) => {\n const oldValue = target[key];\n if (isRef(oldValue) && !isRef(value)) {\n oldValue.value = value;\n return true;\n } else {\n return Reflect.set(target, key, value, receiver);\n }\n }\n};\nfunction proxyRefs(objectWithRefs) {\n return isReactive(objectWithRefs) ? objectWithRefs : new Proxy(objectWithRefs, shallowUnwrapHandlers);\n}\nclass CustomRefImpl {\n constructor(factory) {\n this.dep = void 0;\n this.__v_isRef = true;\n const { get, set } = factory(\n () => trackRefValue(this),\n () => triggerRefValue(this)\n );\n this._get = get;\n this._set = set;\n }\n get value() {\n return this._get();\n }\n set value(newVal) {\n this._set(newVal);\n }\n}\nfunction customRef(factory) {\n return new CustomRefImpl(factory);\n}\nfunction toRefs(object) {\n if (!!(process.env.NODE_ENV !== \"production\") && !isProxy(object)) {\n warn(`toRefs() expects a reactive object but received a plain one.`);\n }\n const ret = isArray(object) ? new Array(object.length) : {};\n for (const key in object) {\n ret[key] = propertyToRef(object, key);\n }\n return ret;\n}\nclass ObjectRefImpl {\n constructor(_object, _key, _defaultValue) {\n this._object = _object;\n this._key = _key;\n this._defaultValue = _defaultValue;\n this.__v_isRef = true;\n }\n get value() {\n const val = this._object[this._key];\n return val === void 0 ? this._defaultValue : val;\n }\n set value(newVal) {\n this._object[this._key] = newVal;\n }\n get dep() {\n return getDepFromReactive(toRaw(this._object), this._key);\n }\n}\nclass GetterRefImpl {\n constructor(_getter) {\n this._getter = _getter;\n this.__v_isRef = true;\n this.__v_isReadonly = true;\n }\n get value() {\n return this._getter();\n }\n}\nfunction toRef(source, key, defaultValue) {\n if (isRef(source)) {\n return source;\n } else if (isFunction(source)) {\n return new GetterRefImpl(source);\n } else if (isObject(source) && arguments.length > 1) {\n return propertyToRef(source, key, defaultValue);\n } else {\n return ref(source);\n }\n}\nfunction propertyToRef(source, key, defaultValue) {\n const val = source[key];\n return isRef(val) ? val : new ObjectRefImpl(source, key, defaultValue);\n}\n\nconst deferredComputed = computed;\n\nconst TrackOpTypes = {\n \"GET\": \"get\",\n \"HAS\": \"has\",\n \"ITERATE\": \"iterate\"\n};\nconst TriggerOpTypes = {\n \"SET\": \"set\",\n \"ADD\": \"add\",\n \"DELETE\": \"delete\",\n \"CLEAR\": \"clear\"\n};\nconst ReactiveFlags = {\n \"SKIP\": \"__v_skip\",\n \"IS_REACTIVE\": \"__v_isReactive\",\n \"IS_READONLY\": \"__v_isReadonly\",\n \"IS_SHALLOW\": \"__v_isShallow\",\n \"RAW\": \"__v_raw\"\n};\n\nexport { EffectScope, ITERATE_KEY, ReactiveEffect, ReactiveFlags, TrackOpTypes, TriggerOpTypes, computed, customRef, deferredComputed, effect, effectScope, enableTracking, getCurrentScope, isProxy, isReactive, isReadonly, isRef, isShallow, markRaw, onScopeDispose, pauseScheduling, pauseTracking, proxyRefs, reactive, readonly, ref, resetScheduling, resetTracking, shallowReactive, shallowReadonly, shallowRef, stop, toRaw, toRef, toRefs, toValue, track, trigger, triggerRef, unref };\n","/**\n* @vue/runtime-core v3.4.25\n* (c) 2018-present Yuxi (Evan) You and Vue contributors\n* @license MIT\n**/\nimport { pauseTracking, resetTracking, isRef, toRaw, shallowReadonly, isShallow, isReactive, ReactiveEffect, getCurrentScope, ref, track, reactive, shallowReactive, trigger, isProxy, proxyRefs, markRaw, EffectScope, computed as computed$1, customRef, isReadonly } from '@vue/reactivity';\nexport { EffectScope, ReactiveEffect, TrackOpTypes, TriggerOpTypes, customRef, effect, effectScope, getCurrentScope, isProxy, isReactive, isReadonly, isRef, isShallow, markRaw, onScopeDispose, proxyRefs, reactive, readonly, ref, shallowReactive, shallowReadonly, shallowRef, stop, toRaw, toRef, toRefs, toValue, triggerRef, unref } from '@vue/reactivity';\nimport { isString, isFunction, isPromise, isArray, NOOP, getGlobalThis, extend, EMPTY_OBJ, toHandlerKey, looseToNumber, hyphenate, camelize, isObject, isOn, hasOwn, isModelListener, capitalize, toNumber, hasChanged, remove, isSet, isMap, isPlainObject, isBuiltInDirective, invokeArrayFns, isRegExp, isGloballyAllowed, NO, isReservedProp, EMPTY_ARR, toRawType, makeMap, def, normalizeClass, stringifyStyle, normalizeStyle, isKnownSvgAttr, isBooleanAttr, isKnownHtmlAttr, includeBooleanAttr, isRenderableAttrValue } from '@vue/shared';\nexport { camelize, capitalize, normalizeClass, normalizeProps, normalizeStyle, toDisplayString, toHandlerKey } from '@vue/shared';\n\nconst stack = [];\nfunction pushWarningContext(vnode) {\n stack.push(vnode);\n}\nfunction popWarningContext() {\n stack.pop();\n}\nfunction warn$1(msg, ...args) {\n pauseTracking();\n const instance = stack.length ? stack[stack.length - 1].component : null;\n const appWarnHandler = instance && instance.appContext.config.warnHandler;\n const trace = getComponentTrace();\n if (appWarnHandler) {\n callWithErrorHandling(\n appWarnHandler,\n instance,\n 11,\n [\n msg + args.map((a) => {\n var _a, _b;\n return (_b = (_a = a.toString) == null ? void 0 : _a.call(a)) != null ? _b : JSON.stringify(a);\n }).join(\"\"),\n instance && instance.proxy,\n trace.map(\n ({ vnode }) => `at <${formatComponentName(instance, vnode.type)}>`\n ).join(\"\\n\"),\n trace\n ]\n );\n } else {\n const warnArgs = [`[Vue warn]: ${msg}`, ...args];\n if (trace.length && // avoid spamming console during tests\n true) {\n warnArgs.push(`\n`, ...formatTrace(trace));\n }\n console.warn(...warnArgs);\n }\n resetTracking();\n}\nfunction getComponentTrace() {\n let currentVNode = stack[stack.length - 1];\n if (!currentVNode) {\n return [];\n }\n const normalizedStack = [];\n while (currentVNode) {\n const last = normalizedStack[0];\n if (last && last.vnode === currentVNode) {\n last.recurseCount++;\n } else {\n normalizedStack.push({\n vnode: currentVNode,\n recurseCount: 0\n });\n }\n const parentInstance = currentVNode.component && currentVNode.component.parent;\n currentVNode = parentInstance && parentInstance.vnode;\n }\n return normalizedStack;\n}\nfunction formatTrace(trace) {\n const logs = [];\n trace.forEach((entry, i) => {\n logs.push(...i === 0 ? [] : [`\n`], ...formatTraceEntry(entry));\n });\n return logs;\n}\nfunction formatTraceEntry({ vnode, recurseCount }) {\n const postfix = recurseCount > 0 ? `... (${recurseCount} recursive calls)` : ``;\n const isRoot = vnode.component ? vnode.component.parent == null : false;\n const open = ` at <${formatComponentName(\n vnode.component,\n vnode.type,\n isRoot\n )}`;\n const close = `>` + postfix;\n return vnode.props ? [open, ...formatProps(vnode.props), close] : [open + close];\n}\nfunction formatProps(props) {\n const res = [];\n const keys = Object.keys(props);\n keys.slice(0, 3).forEach((key) => {\n res.push(...formatProp(key, props[key]));\n });\n if (keys.length > 3) {\n res.push(` ...`);\n }\n return res;\n}\nfunction formatProp(key, value, raw) {\n if (isString(value)) {\n value = JSON.stringify(value);\n return raw ? value : [`${key}=${value}`];\n } else if (typeof value === \"number\" || typeof value === \"boolean\" || value == null) {\n return raw ? value : [`${key}=${value}`];\n } else if (isRef(value)) {\n value = formatProp(key, toRaw(value.value), true);\n return raw ? value : [`${key}=Ref<`, value, `>`];\n } else if (isFunction(value)) {\n return [`${key}=fn${value.name ? `<${value.name}>` : ``}`];\n } else {\n value = toRaw(value);\n return raw ? value : [`${key}=`, value];\n }\n}\nfunction assertNumber(val, type) {\n if (!!!(process.env.NODE_ENV !== \"production\"))\n return;\n if (val === void 0) {\n return;\n } else if (typeof val !== \"number\") {\n warn$1(`${type} is not a valid number - got ${JSON.stringify(val)}.`);\n } else if (isNaN(val)) {\n warn$1(`${type} is NaN - the duration expression might be incorrect.`);\n }\n}\n\nconst ErrorCodes = {\n \"SETUP_FUNCTION\": 0,\n \"0\": \"SETUP_FUNCTION\",\n \"RENDER_FUNCTION\": 1,\n \"1\": \"RENDER_FUNCTION\",\n \"WATCH_GETTER\": 2,\n \"2\": \"WATCH_GETTER\",\n \"WATCH_CALLBACK\": 3,\n \"3\": \"WATCH_CALLBACK\",\n \"WATCH_CLEANUP\": 4,\n \"4\": \"WATCH_CLEANUP\",\n \"NATIVE_EVENT_HANDLER\": 5,\n \"5\": \"NATIVE_EVENT_HANDLER\",\n \"COMPONENT_EVENT_HANDLER\": 6,\n \"6\": \"COMPONENT_EVENT_HANDLER\",\n \"VNODE_HOOK\": 7,\n \"7\": \"VNODE_HOOK\",\n \"DIRECTIVE_HOOK\": 8,\n \"8\": \"DIRECTIVE_HOOK\",\n \"TRANSITION_HOOK\": 9,\n \"9\": \"TRANSITION_HOOK\",\n \"APP_ERROR_HANDLER\": 10,\n \"10\": \"APP_ERROR_HANDLER\",\n \"APP_WARN_HANDLER\": 11,\n \"11\": \"APP_WARN_HANDLER\",\n \"FUNCTION_REF\": 12,\n \"12\": \"FUNCTION_REF\",\n \"ASYNC_COMPONENT_LOADER\": 13,\n \"13\": \"ASYNC_COMPONENT_LOADER\",\n \"SCHEDULER\": 14,\n \"14\": \"SCHEDULER\"\n};\nconst ErrorTypeStrings$1 = {\n [\"sp\"]: \"serverPrefetch hook\",\n [\"bc\"]: \"beforeCreate hook\",\n [\"c\"]: \"created hook\",\n [\"bm\"]: \"beforeMount hook\",\n [\"m\"]: \"mounted hook\",\n [\"bu\"]: \"beforeUpdate hook\",\n [\"u\"]: \"updated\",\n [\"bum\"]: \"beforeUnmount hook\",\n [\"um\"]: \"unmounted hook\",\n [\"a\"]: \"activated hook\",\n [\"da\"]: \"deactivated hook\",\n [\"ec\"]: \"errorCaptured hook\",\n [\"rtc\"]: \"renderTracked hook\",\n [\"rtg\"]: \"renderTriggered hook\",\n [0]: \"setup function\",\n [1]: \"render function\",\n [2]: \"watcher getter\",\n [3]: \"watcher callback\",\n [4]: \"watcher cleanup function\",\n [5]: \"native event handler\",\n [6]: \"component event handler\",\n [7]: \"vnode hook\",\n [8]: \"directive hook\",\n [9]: \"transition hook\",\n [10]: \"app errorHandler\",\n [11]: \"app warnHandler\",\n [12]: \"ref function\",\n [13]: \"async component loader\",\n [14]: \"scheduler flush. This is likely a Vue internals bug. Please open an issue at https://github.com/vuejs/core .\"\n};\nfunction callWithErrorHandling(fn, instance, type, args) {\n try {\n return args ? fn(...args) : fn();\n } catch (err) {\n handleError(err, instance, type);\n }\n}\nfunction callWithAsyncErrorHandling(fn, instance, type, args) {\n if (isFunction(fn)) {\n const res = callWithErrorHandling(fn, instance, type, args);\n if (res && isPromise(res)) {\n res.catch((err) => {\n handleError(err, instance, type);\n });\n }\n return res;\n }\n if (isArray(fn)) {\n const values = [];\n for (let i = 0; i < fn.length; i++) {\n values.push(callWithAsyncErrorHandling(fn[i], instance, type, args));\n }\n return values;\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n warn$1(\n `Invalid value type passed to callWithAsyncErrorHandling(): ${typeof fn}`\n );\n }\n}\nfunction handleError(err, instance, type, throwInDev = true) {\n const contextVNode = instance ? instance.vnode : null;\n if (instance) {\n let cur = instance.parent;\n const exposedInstance = instance.proxy;\n const errorInfo = !!(process.env.NODE_ENV !== \"production\") ? ErrorTypeStrings$1[type] : `https://vuejs.org/error-reference/#runtime-${type}`;\n while (cur) {\n const errorCapturedHooks = cur.ec;\n if (errorCapturedHooks) {\n for (let i = 0; i < errorCapturedHooks.length; i++) {\n if (errorCapturedHooks[i](err, exposedInstance, errorInfo) === false) {\n return;\n }\n }\n }\n cur = cur.parent;\n }\n const appErrorHandler = instance.appContext.config.errorHandler;\n if (appErrorHandler) {\n pauseTracking();\n callWithErrorHandling(\n appErrorHandler,\n null,\n 10,\n [err, exposedInstance, errorInfo]\n );\n resetTracking();\n return;\n }\n }\n logError(err, type, contextVNode, throwInDev);\n}\nfunction logError(err, type, contextVNode, throwInDev = true) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n const info = ErrorTypeStrings$1[type];\n if (contextVNode) {\n pushWarningContext(contextVNode);\n }\n warn$1(`Unhandled error${info ? ` during execution of ${info}` : ``}`);\n if (contextVNode) {\n popWarningContext();\n }\n if (throwInDev) {\n throw err;\n } else {\n console.error(err);\n }\n } else {\n console.error(err);\n }\n}\n\nlet isFlushing = false;\nlet isFlushPending = false;\nconst queue = [];\nlet flushIndex = 0;\nconst pendingPostFlushCbs = [];\nlet activePostFlushCbs = null;\nlet postFlushIndex = 0;\nconst resolvedPromise = /* @__PURE__ */ Promise.resolve();\nlet currentFlushPromise = null;\nconst RECURSION_LIMIT = 100;\nfunction nextTick(fn) {\n const p = currentFlushPromise || resolvedPromise;\n return fn ? p.then(this ? fn.bind(this) : fn) : p;\n}\nfunction findInsertionIndex(id) {\n let start = flushIndex + 1;\n let end = queue.length;\n while (start < end) {\n const middle = start + end >>> 1;\n const middleJob = queue[middle];\n const middleJobId = getId(middleJob);\n if (middleJobId < id || middleJobId === id && middleJob.pre) {\n start = middle + 1;\n } else {\n end = middle;\n }\n }\n return start;\n}\nfunction queueJob(job) {\n if (!queue.length || !queue.includes(\n job,\n isFlushing && job.allowRecurse ? flushIndex + 1 : flushIndex\n )) {\n if (job.id == null) {\n queue.push(job);\n } else {\n queue.splice(findInsertionIndex(job.id), 0, job);\n }\n queueFlush();\n }\n}\nfunction queueFlush() {\n if (!isFlushing && !isFlushPending) {\n isFlushPending = true;\n currentFlushPromise = resolvedPromise.then(flushJobs);\n }\n}\nfunction invalidateJob(job) {\n const i = queue.indexOf(job);\n if (i > flushIndex) {\n queue.splice(i, 1);\n }\n}\nfunction queuePostFlushCb(cb) {\n if (!isArray(cb)) {\n if (!activePostFlushCbs || !activePostFlushCbs.includes(\n cb,\n cb.allowRecurse ? postFlushIndex + 1 : postFlushIndex\n )) {\n pendingPostFlushCbs.push(cb);\n }\n } else {\n pendingPostFlushCbs.push(...cb);\n }\n queueFlush();\n}\nfunction flushPreFlushCbs(instance, seen, i = isFlushing ? flushIndex + 1 : 0) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n seen = seen || /* @__PURE__ */ new Map();\n }\n for (; i < queue.length; i++) {\n const cb = queue[i];\n if (cb && cb.pre) {\n if (instance && cb.id !== instance.uid) {\n continue;\n }\n if (!!(process.env.NODE_ENV !== \"production\") && checkRecursiveUpdates(seen, cb)) {\n continue;\n }\n queue.splice(i, 1);\n i--;\n cb();\n }\n }\n}\nfunction flushPostFlushCbs(seen) {\n if (pendingPostFlushCbs.length) {\n const deduped = [...new Set(pendingPostFlushCbs)].sort(\n (a, b) => getId(a) - getId(b)\n );\n pendingPostFlushCbs.length = 0;\n if (activePostFlushCbs) {\n activePostFlushCbs.push(...deduped);\n return;\n }\n activePostFlushCbs = deduped;\n if (!!(process.env.NODE_ENV !== \"production\")) {\n seen = seen || /* @__PURE__ */ new Map();\n }\n for (postFlushIndex = 0; postFlushIndex < activePostFlushCbs.length; postFlushIndex++) {\n if (!!(process.env.NODE_ENV !== \"production\") && checkRecursiveUpdates(seen, activePostFlushCbs[postFlushIndex])) {\n continue;\n }\n activePostFlushCbs[postFlushIndex]();\n }\n activePostFlushCbs = null;\n postFlushIndex = 0;\n }\n}\nconst getId = (job) => job.id == null ? Infinity : job.id;\nconst comparator = (a, b) => {\n const diff = getId(a) - getId(b);\n if (diff === 0) {\n if (a.pre && !b.pre)\n return -1;\n if (b.pre && !a.pre)\n return 1;\n }\n return diff;\n};\nfunction flushJobs(seen) {\n isFlushPending = false;\n isFlushing = true;\n if (!!(process.env.NODE_ENV !== \"production\")) {\n seen = seen || /* @__PURE__ */ new Map();\n }\n queue.sort(comparator);\n const check = !!(process.env.NODE_ENV !== \"production\") ? (job) => checkRecursiveUpdates(seen, job) : NOOP;\n try {\n for (flushIndex = 0; flushIndex < queue.length; flushIndex++) {\n const job = queue[flushIndex];\n if (job && job.active !== false) {\n if (!!(process.env.NODE_ENV !== \"production\") && check(job)) {\n continue;\n }\n callWithErrorHandling(job, null, 14);\n }\n }\n } finally {\n flushIndex = 0;\n queue.length = 0;\n flushPostFlushCbs(seen);\n isFlushing = false;\n currentFlushPromise = null;\n if (queue.length || pendingPostFlushCbs.length) {\n flushJobs(seen);\n }\n }\n}\nfunction checkRecursiveUpdates(seen, fn) {\n if (!seen.has(fn)) {\n seen.set(fn, 1);\n } else {\n const count = seen.get(fn);\n if (count > RECURSION_LIMIT) {\n const instance = fn.ownerInstance;\n const componentName = instance && getComponentName(instance.type);\n handleError(\n `Maximum recursive updates exceeded${componentName ? ` in component <${componentName}>` : ``}. This means you have a reactive effect that is mutating its own dependencies and thus recursively triggering itself. Possible sources include component template, render function, updated hook or watcher source function.`,\n null,\n 10\n );\n return true;\n } else {\n seen.set(fn, count + 1);\n }\n }\n}\n\nlet isHmrUpdating = false;\nconst hmrDirtyComponents = /* @__PURE__ */ new Set();\nif (!!(process.env.NODE_ENV !== \"production\")) {\n getGlobalThis().__VUE_HMR_RUNTIME__ = {\n createRecord: tryWrap(createRecord),\n rerender: tryWrap(rerender),\n reload: tryWrap(reload)\n };\n}\nconst map = /* @__PURE__ */ new Map();\nfunction registerHMR(instance) {\n const id = instance.type.__hmrId;\n let record = map.get(id);\n if (!record) {\n createRecord(id, instance.type);\n record = map.get(id);\n }\n record.instances.add(instance);\n}\nfunction unregisterHMR(instance) {\n map.get(instance.type.__hmrId).instances.delete(instance);\n}\nfunction createRecord(id, initialDef) {\n if (map.has(id)) {\n return false;\n }\n map.set(id, {\n initialDef: normalizeClassComponent(initialDef),\n instances: /* @__PURE__ */ new Set()\n });\n return true;\n}\nfunction normalizeClassComponent(component) {\n return isClassComponent(component) ? component.__vccOpts : component;\n}\nfunction rerender(id, newRender) {\n const record = map.get(id);\n if (!record) {\n return;\n }\n record.initialDef.render = newRender;\n [...record.instances].forEach((instance) => {\n if (newRender) {\n instance.render = newRender;\n normalizeClassComponent(instance.type).render = newRender;\n }\n instance.renderCache = [];\n isHmrUpdating = true;\n instance.effect.dirty = true;\n instance.update();\n isHmrUpdating = false;\n });\n}\nfunction reload(id, newComp) {\n const record = map.get(id);\n if (!record)\n return;\n newComp = normalizeClassComponent(newComp);\n updateComponentDef(record.initialDef, newComp);\n const instances = [...record.instances];\n for (const instance of instances) {\n const oldComp = normalizeClassComponent(instance.type);\n if (!hmrDirtyComponents.has(oldComp)) {\n if (oldComp !== record.initialDef) {\n updateComponentDef(oldComp, newComp);\n }\n hmrDirtyComponents.add(oldComp);\n }\n instance.appContext.propsCache.delete(instance.type);\n instance.appContext.emitsCache.delete(instance.type);\n instance.appContext.optionsCache.delete(instance.type);\n if (instance.ceReload) {\n hmrDirtyComponents.add(oldComp);\n instance.ceReload(newComp.styles);\n hmrDirtyComponents.delete(oldComp);\n } else if (instance.parent) {\n instance.parent.effect.dirty = true;\n queueJob(instance.parent.update);\n } else if (instance.appContext.reload) {\n instance.appContext.reload();\n } else if (typeof window !== \"undefined\") {\n window.location.reload();\n } else {\n console.warn(\n \"[HMR] Root or manually mounted instance modified. Full reload required.\"\n );\n }\n }\n queuePostFlushCb(() => {\n for (const instance of instances) {\n hmrDirtyComponents.delete(\n normalizeClassComponent(instance.type)\n );\n }\n });\n}\nfunction updateComponentDef(oldComp, newComp) {\n extend(oldComp, newComp);\n for (const key in oldComp) {\n if (key !== \"__file\" && !(key in newComp)) {\n delete oldComp[key];\n }\n }\n}\nfunction tryWrap(fn) {\n return (id, arg) => {\n try {\n return fn(id, arg);\n } catch (e) {\n console.error(e);\n console.warn(\n `[HMR] Something went wrong during Vue component hot-reload. Full reload required.`\n );\n }\n };\n}\n\nlet devtools$1;\nlet buffer = [];\nlet devtoolsNotInstalled = false;\nfunction emit$1(event, ...args) {\n if (devtools$1) {\n devtools$1.emit(event, ...args);\n } else if (!devtoolsNotInstalled) {\n buffer.push({ event, args });\n }\n}\nfunction setDevtoolsHook$1(hook, target) {\n var _a, _b;\n devtools$1 = hook;\n if (devtools$1) {\n devtools$1.enabled = true;\n buffer.forEach(({ event, args }) => devtools$1.emit(event, ...args));\n buffer = [];\n } else if (\n // handle late devtools injection - only do this if we are in an actual\n // browser environment to avoid the timer handle stalling test runner exit\n // (#4815)\n typeof window !== \"undefined\" && // some envs mock window but not fully\n window.HTMLElement && // also exclude jsdom\n !((_b = (_a = window.navigator) == null ? void 0 : _a.userAgent) == null ? void 0 : _b.includes(\"jsdom\"))\n ) {\n const replay = target.__VUE_DEVTOOLS_HOOK_REPLAY__ = target.__VUE_DEVTOOLS_HOOK_REPLAY__ || [];\n replay.push((newHook) => {\n setDevtoolsHook$1(newHook, target);\n });\n setTimeout(() => {\n if (!devtools$1) {\n target.__VUE_DEVTOOLS_HOOK_REPLAY__ = null;\n devtoolsNotInstalled = true;\n buffer = [];\n }\n }, 3e3);\n } else {\n devtoolsNotInstalled = true;\n buffer = [];\n }\n}\nfunction devtoolsInitApp(app, version) {\n emit$1(\"app:init\" /* APP_INIT */, app, version, {\n Fragment,\n Text,\n Comment,\n Static\n });\n}\nfunction devtoolsUnmountApp(app) {\n emit$1(\"app:unmount\" /* APP_UNMOUNT */, app);\n}\nconst devtoolsComponentAdded = /* @__PURE__ */ createDevtoolsComponentHook(\n \"component:added\" /* COMPONENT_ADDED */\n);\nconst devtoolsComponentUpdated = /* @__PURE__ */ createDevtoolsComponentHook(\"component:updated\" /* COMPONENT_UPDATED */);\nconst _devtoolsComponentRemoved = /* @__PURE__ */ createDevtoolsComponentHook(\n \"component:removed\" /* COMPONENT_REMOVED */\n);\nconst devtoolsComponentRemoved = (component) => {\n if (devtools$1 && typeof devtools$1.cleanupBuffer === \"function\" && // remove the component if it wasn't buffered\n !devtools$1.cleanupBuffer(component)) {\n _devtoolsComponentRemoved(component);\n }\n};\n/*! #__NO_SIDE_EFFECTS__ */\n// @__NO_SIDE_EFFECTS__\nfunction createDevtoolsComponentHook(hook) {\n return (component) => {\n emit$1(\n hook,\n component.appContext.app,\n component.uid,\n component.parent ? component.parent.uid : void 0,\n component\n );\n };\n}\nconst devtoolsPerfStart = /* @__PURE__ */ createDevtoolsPerformanceHook(\n \"perf:start\" /* PERFORMANCE_START */\n);\nconst devtoolsPerfEnd = /* @__PURE__ */ createDevtoolsPerformanceHook(\n \"perf:end\" /* PERFORMANCE_END */\n);\nfunction createDevtoolsPerformanceHook(hook) {\n return (component, type, time) => {\n emit$1(hook, component.appContext.app, component.uid, component, type, time);\n };\n}\nfunction devtoolsComponentEmit(component, event, params) {\n emit$1(\n \"component:emit\" /* COMPONENT_EMIT */,\n component.appContext.app,\n component,\n event,\n params\n );\n}\n\nfunction emit(instance, event, ...rawArgs) {\n if (instance.isUnmounted)\n return;\n const props = instance.vnode.props || EMPTY_OBJ;\n if (!!(process.env.NODE_ENV !== \"production\")) {\n const {\n emitsOptions,\n propsOptions: [propsOptions]\n } = instance;\n if (emitsOptions) {\n if (!(event in emitsOptions) && true) {\n if (!propsOptions || !(toHandlerKey(event) in propsOptions)) {\n warn$1(\n `Component emitted event \"${event}\" but it is neither declared in the emits option nor as an \"${toHandlerKey(event)}\" prop.`\n );\n }\n } else {\n const validator = emitsOptions[event];\n if (isFunction(validator)) {\n const isValid = validator(...rawArgs);\n if (!isValid) {\n warn$1(\n `Invalid event arguments: event validation failed for event \"${event}\".`\n );\n }\n }\n }\n }\n }\n let args = rawArgs;\n const isModelListener = event.startsWith(\"update:\");\n const modelArg = isModelListener && event.slice(7);\n if (modelArg && modelArg in props) {\n const modifiersKey = `${modelArg === \"modelValue\" ? \"model\" : modelArg}Modifiers`;\n const { number, trim } = props[modifiersKey] || EMPTY_OBJ;\n if (trim) {\n args = rawArgs.map((a) => isString(a) ? a.trim() : a);\n }\n if (number) {\n args = rawArgs.map(looseToNumber);\n }\n }\n if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n devtoolsComponentEmit(instance, event, args);\n }\n if (!!(process.env.NODE_ENV !== \"production\")) {\n const lowerCaseEvent = event.toLowerCase();\n if (lowerCaseEvent !== event && props[toHandlerKey(lowerCaseEvent)]) {\n warn$1(\n `Event \"${lowerCaseEvent}\" is emitted in component ${formatComponentName(\n instance,\n instance.type\n )} but the handler is registered for \"${event}\". Note that HTML attributes are case-insensitive and you cannot use v-on to listen to camelCase events when using in-DOM templates. You should probably use \"${hyphenate(\n event\n )}\" instead of \"${event}\".`\n );\n }\n }\n let handlerName;\n let handler = props[handlerName = toHandlerKey(event)] || // also try camelCase event handler (#2249)\n props[handlerName = toHandlerKey(camelize(event))];\n if (!handler && isModelListener) {\n handler = props[handlerName = toHandlerKey(hyphenate(event))];\n }\n if (handler) {\n callWithAsyncErrorHandling(\n handler,\n instance,\n 6,\n args\n );\n }\n const onceHandler = props[handlerName + `Once`];\n if (onceHandler) {\n if (!instance.emitted) {\n instance.emitted = {};\n } else if (instance.emitted[handlerName]) {\n return;\n }\n instance.emitted[handlerName] = true;\n callWithAsyncErrorHandling(\n onceHandler,\n instance,\n 6,\n args\n );\n }\n}\nfunction normalizeEmitsOptions(comp, appContext, asMixin = false) {\n const cache = appContext.emitsCache;\n const cached = cache.get(comp);\n if (cached !== void 0) {\n return cached;\n }\n const raw = comp.emits;\n let normalized = {};\n let hasExtends = false;\n if (__VUE_OPTIONS_API__ && !isFunction(comp)) {\n const extendEmits = (raw2) => {\n const normalizedFromExtend = normalizeEmitsOptions(raw2, appContext, true);\n if (normalizedFromExtend) {\n hasExtends = true;\n extend(normalized, normalizedFromExtend);\n }\n };\n if (!asMixin && appContext.mixins.length) {\n appContext.mixins.forEach(extendEmits);\n }\n if (comp.extends) {\n extendEmits(comp.extends);\n }\n if (comp.mixins) {\n comp.mixins.forEach(extendEmits);\n }\n }\n if (!raw && !hasExtends) {\n if (isObject(comp)) {\n cache.set(comp, null);\n }\n return null;\n }\n if (isArray(raw)) {\n raw.forEach((key) => normalized[key] = null);\n } else {\n extend(normalized, raw);\n }\n if (isObject(comp)) {\n cache.set(comp, normalized);\n }\n return normalized;\n}\nfunction isEmitListener(options, key) {\n if (!options || !isOn(key)) {\n return false;\n }\n key = key.slice(2).replace(/Once$/, \"\");\n return hasOwn(options, key[0].toLowerCase() + key.slice(1)) || hasOwn(options, hyphenate(key)) || hasOwn(options, key);\n}\n\nlet currentRenderingInstance = null;\nlet currentScopeId = null;\nfunction setCurrentRenderingInstance(instance) {\n const prev = currentRenderingInstance;\n currentRenderingInstance = instance;\n currentScopeId = instance && instance.type.__scopeId || null;\n return prev;\n}\nfunction pushScopeId(id) {\n currentScopeId = id;\n}\nfunction popScopeId() {\n currentScopeId = null;\n}\nconst withScopeId = (_id) => withCtx;\nfunction withCtx(fn, ctx = currentRenderingInstance, isNonScopedSlot) {\n if (!ctx)\n return fn;\n if (fn._n) {\n return fn;\n }\n const renderFnWithContext = (...args) => {\n if (renderFnWithContext._d) {\n setBlockTracking(-1);\n }\n const prevInstance = setCurrentRenderingInstance(ctx);\n let res;\n try {\n res = fn(...args);\n } finally {\n setCurrentRenderingInstance(prevInstance);\n if (renderFnWithContext._d) {\n setBlockTracking(1);\n }\n }\n if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n devtoolsComponentUpdated(ctx);\n }\n return res;\n };\n renderFnWithContext._n = true;\n renderFnWithContext._c = true;\n renderFnWithContext._d = true;\n return renderFnWithContext;\n}\n\nlet accessedAttrs = false;\nfunction markAttrsAccessed() {\n accessedAttrs = true;\n}\nfunction renderComponentRoot(instance) {\n const {\n type: Component,\n vnode,\n proxy,\n withProxy,\n propsOptions: [propsOptions],\n slots,\n attrs,\n emit,\n render,\n renderCache,\n props,\n data,\n setupState,\n ctx,\n inheritAttrs\n } = instance;\n const prev = setCurrentRenderingInstance(instance);\n let result;\n let fallthroughAttrs;\n if (!!(process.env.NODE_ENV !== \"production\")) {\n accessedAttrs = false;\n }\n try {\n if (vnode.shapeFlag & 4) {\n const proxyToUse = withProxy || proxy;\n const thisProxy = !!(process.env.NODE_ENV !== \"production\") && setupState.__isScriptSetup ? new Proxy(proxyToUse, {\n get(target, key, receiver) {\n warn$1(\n `Property '${String(\n key\n )}' was accessed via 'this'. Avoid using 'this' in templates.`\n );\n return Reflect.get(target, key, receiver);\n }\n }) : proxyToUse;\n result = normalizeVNode(\n render.call(\n thisProxy,\n proxyToUse,\n renderCache,\n !!(process.env.NODE_ENV !== \"production\") ? shallowReadonly(props) : props,\n setupState,\n data,\n ctx\n )\n );\n fallthroughAttrs = attrs;\n } else {\n const render2 = Component;\n if (!!(process.env.NODE_ENV !== \"production\") && attrs === props) {\n markAttrsAccessed();\n }\n result = normalizeVNode(\n render2.length > 1 ? render2(\n !!(process.env.NODE_ENV !== \"production\") ? shallowReadonly(props) : props,\n !!(process.env.NODE_ENV !== \"production\") ? {\n get attrs() {\n markAttrsAccessed();\n return attrs;\n },\n slots,\n emit\n } : { attrs, slots, emit }\n ) : render2(\n !!(process.env.NODE_ENV !== \"production\") ? shallowReadonly(props) : props,\n null\n )\n );\n fallthroughAttrs = Component.props ? attrs : getFunctionalFallthrough(attrs);\n }\n } catch (err) {\n blockStack.length = 0;\n handleError(err, instance, 1);\n result = createVNode(Comment);\n }\n let root = result;\n let setRoot = void 0;\n if (!!(process.env.NODE_ENV !== \"production\") && result.patchFlag > 0 && result.patchFlag & 2048) {\n [root, setRoot] = getChildRoot(result);\n }\n if (fallthroughAttrs && inheritAttrs !== false) {\n const keys = Object.keys(fallthroughAttrs);\n const { shapeFlag } = root;\n if (keys.length) {\n if (shapeFlag & (1 | 6)) {\n if (propsOptions && keys.some(isModelListener)) {\n fallthroughAttrs = filterModelListeners(\n fallthroughAttrs,\n propsOptions\n );\n }\n root = cloneVNode(root, fallthroughAttrs);\n } else if (!!(process.env.NODE_ENV !== \"production\") && !accessedAttrs && root.type !== Comment) {\n const allAttrs = Object.keys(attrs);\n const eventAttrs = [];\n const extraAttrs = [];\n for (let i = 0, l = allAttrs.length; i < l; i++) {\n const key = allAttrs[i];\n if (isOn(key)) {\n if (!isModelListener(key)) {\n eventAttrs.push(key[2].toLowerCase() + key.slice(3));\n }\n } else {\n extraAttrs.push(key);\n }\n }\n if (extraAttrs.length) {\n warn$1(\n `Extraneous non-props attributes (${extraAttrs.join(\", \")}) were passed to component but could not be automatically inherited because component renders fragment or text root nodes.`\n );\n }\n if (eventAttrs.length) {\n warn$1(\n `Extraneous non-emits event listeners (${eventAttrs.join(\", \")}) were passed to component but could not be automatically inherited because component renders fragment or text root nodes. If the listener is intended to be a component custom event listener only, declare it using the \"emits\" option.`\n );\n }\n }\n }\n }\n if (vnode.dirs) {\n if (!!(process.env.NODE_ENV !== \"production\") && !isElementRoot(root)) {\n warn$1(\n `Runtime directive used on component with non-element root node. The directives will not function as intended.`\n );\n }\n root = cloneVNode(root);\n root.dirs = root.dirs ? root.dirs.concat(vnode.dirs) : vnode.dirs;\n }\n if (vnode.transition) {\n if (!!(process.env.NODE_ENV !== \"production\") && !isElementRoot(root)) {\n warn$1(\n `Component inside renders non-element root node that cannot be animated.`\n );\n }\n root.transition = vnode.transition;\n }\n if (!!(process.env.NODE_ENV !== \"production\") && setRoot) {\n setRoot(root);\n } else {\n result = root;\n }\n setCurrentRenderingInstance(prev);\n return result;\n}\nconst getChildRoot = (vnode) => {\n const rawChildren = vnode.children;\n const dynamicChildren = vnode.dynamicChildren;\n const childRoot = filterSingleRoot(rawChildren, false);\n if (!childRoot) {\n return [vnode, void 0];\n } else if (!!(process.env.NODE_ENV !== \"production\") && childRoot.patchFlag > 0 && childRoot.patchFlag & 2048) {\n return getChildRoot(childRoot);\n }\n const index = rawChildren.indexOf(childRoot);\n const dynamicIndex = dynamicChildren ? dynamicChildren.indexOf(childRoot) : -1;\n const setRoot = (updatedRoot) => {\n rawChildren[index] = updatedRoot;\n if (dynamicChildren) {\n if (dynamicIndex > -1) {\n dynamicChildren[dynamicIndex] = updatedRoot;\n } else if (updatedRoot.patchFlag > 0) {\n vnode.dynamicChildren = [...dynamicChildren, updatedRoot];\n }\n }\n };\n return [normalizeVNode(childRoot), setRoot];\n};\nfunction filterSingleRoot(children, recurse = true) {\n let singleRoot;\n for (let i = 0; i < children.length; i++) {\n const child = children[i];\n if (isVNode(child)) {\n if (child.type !== Comment || child.children === \"v-if\") {\n if (singleRoot) {\n return;\n } else {\n singleRoot = child;\n if (!!(process.env.NODE_ENV !== \"production\") && recurse && singleRoot.patchFlag > 0 && singleRoot.patchFlag & 2048) {\n return filterSingleRoot(singleRoot.children);\n }\n }\n }\n } else {\n return;\n }\n }\n return singleRoot;\n}\nconst getFunctionalFallthrough = (attrs) => {\n let res;\n for (const key in attrs) {\n if (key === \"class\" || key === \"style\" || isOn(key)) {\n (res || (res = {}))[key] = attrs[key];\n }\n }\n return res;\n};\nconst filterModelListeners = (attrs, props) => {\n const res = {};\n for (const key in attrs) {\n if (!isModelListener(key) || !(key.slice(9) in props)) {\n res[key] = attrs[key];\n }\n }\n return res;\n};\nconst isElementRoot = (vnode) => {\n return vnode.shapeFlag & (6 | 1) || vnode.type === Comment;\n};\nfunction shouldUpdateComponent(prevVNode, nextVNode, optimized) {\n const { props: prevProps, children: prevChildren, component } = prevVNode;\n const { props: nextProps, children: nextChildren, patchFlag } = nextVNode;\n const emits = component.emitsOptions;\n if (!!(process.env.NODE_ENV !== \"production\") && (prevChildren || nextChildren) && isHmrUpdating) {\n return true;\n }\n if (nextVNode.dirs || nextVNode.transition) {\n return true;\n }\n if (optimized && patchFlag >= 0) {\n if (patchFlag & 1024) {\n return true;\n }\n if (patchFlag & 16) {\n if (!prevProps) {\n return !!nextProps;\n }\n return hasPropsChanged(prevProps, nextProps, emits);\n } else if (patchFlag & 8) {\n const dynamicProps = nextVNode.dynamicProps;\n for (let i = 0; i < dynamicProps.length; i++) {\n const key = dynamicProps[i];\n if (nextProps[key] !== prevProps[key] && !isEmitListener(emits, key)) {\n return true;\n }\n }\n }\n } else {\n if (prevChildren || nextChildren) {\n if (!nextChildren || !nextChildren.$stable) {\n return true;\n }\n }\n if (prevProps === nextProps) {\n return false;\n }\n if (!prevProps) {\n return !!nextProps;\n }\n if (!nextProps) {\n return true;\n }\n return hasPropsChanged(prevProps, nextProps, emits);\n }\n return false;\n}\nfunction hasPropsChanged(prevProps, nextProps, emitsOptions) {\n const nextKeys = Object.keys(nextProps);\n if (nextKeys.length !== Object.keys(prevProps).length) {\n return true;\n }\n for (let i = 0; i < nextKeys.length; i++) {\n const key = nextKeys[i];\n if (nextProps[key] !== prevProps[key] && !isEmitListener(emitsOptions, key)) {\n return true;\n }\n }\n return false;\n}\nfunction updateHOCHostEl({ vnode, parent }, el) {\n while (parent) {\n const root = parent.subTree;\n if (root.suspense && root.suspense.activeBranch === vnode) {\n root.el = vnode.el;\n }\n if (root === vnode) {\n (vnode = parent.vnode).el = el;\n parent = parent.parent;\n } else {\n break;\n }\n }\n}\n\nconst COMPONENTS = \"components\";\nconst DIRECTIVES = \"directives\";\nfunction resolveComponent(name, maybeSelfReference) {\n return resolveAsset(COMPONENTS, name, true, maybeSelfReference) || name;\n}\nconst NULL_DYNAMIC_COMPONENT = Symbol.for(\"v-ndc\");\nfunction resolveDynamicComponent(component) {\n if (isString(component)) {\n return resolveAsset(COMPONENTS, component, false) || component;\n } else {\n return component || NULL_DYNAMIC_COMPONENT;\n }\n}\nfunction resolveDirective(name) {\n return resolveAsset(DIRECTIVES, name);\n}\nfunction resolveAsset(type, name, warnMissing = true, maybeSelfReference = false) {\n const instance = currentRenderingInstance || currentInstance;\n if (instance) {\n const Component = instance.type;\n if (type === COMPONENTS) {\n const selfName = getComponentName(\n Component,\n false\n );\n if (selfName && (selfName === name || selfName === camelize(name) || selfName === capitalize(camelize(name)))) {\n return Component;\n }\n }\n const res = (\n // local registration\n // check instance[type] first which is resolved for options API\n resolve(instance[type] || Component[type], name) || // global registration\n resolve(instance.appContext[type], name)\n );\n if (!res && maybeSelfReference) {\n return Component;\n }\n if (!!(process.env.NODE_ENV !== \"production\") && warnMissing && !res) {\n const extra = type === COMPONENTS ? `\nIf this is a native custom element, make sure to exclude it from component resolution via compilerOptions.isCustomElement.` : ``;\n warn$1(`Failed to resolve ${type.slice(0, -1)}: ${name}${extra}`);\n }\n return res;\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n warn$1(\n `resolve${capitalize(type.slice(0, -1))} can only be used in render() or setup().`\n );\n }\n}\nfunction resolve(registry, name) {\n return registry && (registry[name] || registry[camelize(name)] || registry[capitalize(camelize(name))]);\n}\n\nconst isSuspense = (type) => type.__isSuspense;\nlet suspenseId = 0;\nconst SuspenseImpl = {\n name: \"Suspense\",\n // In order to make Suspense tree-shakable, we need to avoid importing it\n // directly in the renderer. The renderer checks for the __isSuspense flag\n // on a vnode's type and calls the `process` method, passing in renderer\n // internals.\n __isSuspense: true,\n process(n1, n2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized, rendererInternals) {\n if (n1 == null) {\n mountSuspense(\n n2,\n container,\n anchor,\n parentComponent,\n parentSuspense,\n namespace,\n slotScopeIds,\n optimized,\n rendererInternals\n );\n } else {\n if (parentSuspense && parentSuspense.deps > 0 && !n1.suspense.isInFallback) {\n n2.suspense = n1.suspense;\n n2.suspense.vnode = n2;\n n2.el = n1.el;\n return;\n }\n patchSuspense(\n n1,\n n2,\n container,\n anchor,\n parentComponent,\n namespace,\n slotScopeIds,\n optimized,\n rendererInternals\n );\n }\n },\n hydrate: hydrateSuspense,\n create: createSuspenseBoundary,\n normalize: normalizeSuspenseChildren\n};\nconst Suspense = SuspenseImpl ;\nfunction triggerEvent(vnode, name) {\n const eventListener = vnode.props && vnode.props[name];\n if (isFunction(eventListener)) {\n eventListener();\n }\n}\nfunction mountSuspense(vnode, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized, rendererInternals) {\n const {\n p: patch,\n o: { createElement }\n } = rendererInternals;\n const hiddenContainer = createElement(\"div\");\n const suspense = vnode.suspense = createSuspenseBoundary(\n vnode,\n parentSuspense,\n parentComponent,\n container,\n hiddenContainer,\n anchor,\n namespace,\n slotScopeIds,\n optimized,\n rendererInternals\n );\n patch(\n null,\n suspense.pendingBranch = vnode.ssContent,\n hiddenContainer,\n null,\n parentComponent,\n suspense,\n namespace,\n slotScopeIds\n );\n if (suspense.deps > 0) {\n triggerEvent(vnode, \"onPending\");\n triggerEvent(vnode, \"onFallback\");\n patch(\n null,\n vnode.ssFallback,\n container,\n anchor,\n parentComponent,\n null,\n // fallback tree will not have suspense context\n namespace,\n slotScopeIds\n );\n setActiveBranch(suspense, vnode.ssFallback);\n } else {\n suspense.resolve(false, true);\n }\n}\nfunction patchSuspense(n1, n2, container, anchor, parentComponent, namespace, slotScopeIds, optimized, { p: patch, um: unmount, o: { createElement } }) {\n const suspense = n2.suspense = n1.suspense;\n suspense.vnode = n2;\n n2.el = n1.el;\n const newBranch = n2.ssContent;\n const newFallback = n2.ssFallback;\n const { activeBranch, pendingBranch, isInFallback, isHydrating } = suspense;\n if (pendingBranch) {\n suspense.pendingBranch = newBranch;\n if (isSameVNodeType(newBranch, pendingBranch)) {\n patch(\n pendingBranch,\n newBranch,\n suspense.hiddenContainer,\n null,\n parentComponent,\n suspense,\n namespace,\n slotScopeIds,\n optimized\n );\n if (suspense.deps <= 0) {\n suspense.resolve();\n } else if (isInFallback) {\n if (!isHydrating) {\n patch(\n activeBranch,\n newFallback,\n container,\n anchor,\n parentComponent,\n null,\n // fallback tree will not have suspense context\n namespace,\n slotScopeIds,\n optimized\n );\n setActiveBranch(suspense, newFallback);\n }\n }\n } else {\n suspense.pendingId = suspenseId++;\n if (isHydrating) {\n suspense.isHydrating = false;\n suspense.activeBranch = pendingBranch;\n } else {\n unmount(pendingBranch, parentComponent, suspense);\n }\n suspense.deps = 0;\n suspense.effects.length = 0;\n suspense.hiddenContainer = createElement(\"div\");\n if (isInFallback) {\n patch(\n null,\n newBranch,\n suspense.hiddenContainer,\n null,\n parentComponent,\n suspense,\n namespace,\n slotScopeIds,\n optimized\n );\n if (suspense.deps <= 0) {\n suspense.resolve();\n } else {\n patch(\n activeBranch,\n newFallback,\n container,\n anchor,\n parentComponent,\n null,\n // fallback tree will not have suspense context\n namespace,\n slotScopeIds,\n optimized\n );\n setActiveBranch(suspense, newFallback);\n }\n } else if (activeBranch && isSameVNodeType(newBranch, activeBranch)) {\n patch(\n activeBranch,\n newBranch,\n container,\n anchor,\n parentComponent,\n suspense,\n namespace,\n slotScopeIds,\n optimized\n );\n suspense.resolve(true);\n } else {\n patch(\n null,\n newBranch,\n suspense.hiddenContainer,\n null,\n parentComponent,\n suspense,\n namespace,\n slotScopeIds,\n optimized\n );\n if (suspense.deps <= 0) {\n suspense.resolve();\n }\n }\n }\n } else {\n if (activeBranch && isSameVNodeType(newBranch, activeBranch)) {\n patch(\n activeBranch,\n newBranch,\n container,\n anchor,\n parentComponent,\n suspense,\n namespace,\n slotScopeIds,\n optimized\n );\n setActiveBranch(suspense, newBranch);\n } else {\n triggerEvent(n2, \"onPending\");\n suspense.pendingBranch = newBranch;\n if (newBranch.shapeFlag & 512) {\n suspense.pendingId = newBranch.component.suspenseId;\n } else {\n suspense.pendingId = suspenseId++;\n }\n patch(\n null,\n newBranch,\n suspense.hiddenContainer,\n null,\n parentComponent,\n suspense,\n namespace,\n slotScopeIds,\n optimized\n );\n if (suspense.deps <= 0) {\n suspense.resolve();\n } else {\n const { timeout, pendingId } = suspense;\n if (timeout > 0) {\n setTimeout(() => {\n if (suspense.pendingId === pendingId) {\n suspense.fallback(newFallback);\n }\n }, timeout);\n } else if (timeout === 0) {\n suspense.fallback(newFallback);\n }\n }\n }\n }\n}\nlet hasWarned = false;\nfunction createSuspenseBoundary(vnode, parentSuspense, parentComponent, container, hiddenContainer, anchor, namespace, slotScopeIds, optimized, rendererInternals, isHydrating = false) {\n if (!!(process.env.NODE_ENV !== \"production\") && true && !hasWarned) {\n hasWarned = true;\n console[console.info ? \"info\" : \"log\"](\n ` is an experimental feature and its API will likely change.`\n );\n }\n const {\n p: patch,\n m: move,\n um: unmount,\n n: next,\n o: { parentNode, remove }\n } = rendererInternals;\n let parentSuspenseId;\n const isSuspensible = isVNodeSuspensible(vnode);\n if (isSuspensible) {\n if (parentSuspense == null ? void 0 : parentSuspense.pendingBranch) {\n parentSuspenseId = parentSuspense.pendingId;\n parentSuspense.deps++;\n }\n }\n const timeout = vnode.props ? toNumber(vnode.props.timeout) : void 0;\n if (!!(process.env.NODE_ENV !== \"production\")) {\n assertNumber(timeout, `Suspense timeout`);\n }\n const initialAnchor = anchor;\n const suspense = {\n vnode,\n parent: parentSuspense,\n parentComponent,\n namespace,\n container,\n hiddenContainer,\n deps: 0,\n pendingId: suspenseId++,\n timeout: typeof timeout === \"number\" ? timeout : -1,\n activeBranch: null,\n pendingBranch: null,\n isInFallback: !isHydrating,\n isHydrating,\n isUnmounted: false,\n effects: [],\n resolve(resume = false, sync = false) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n if (!resume && !suspense.pendingBranch) {\n throw new Error(\n `suspense.resolve() is called without a pending branch.`\n );\n }\n if (suspense.isUnmounted) {\n throw new Error(\n `suspense.resolve() is called on an already unmounted suspense boundary.`\n );\n }\n }\n const {\n vnode: vnode2,\n activeBranch,\n pendingBranch,\n pendingId,\n effects,\n parentComponent: parentComponent2,\n container: container2\n } = suspense;\n let delayEnter = false;\n if (suspense.isHydrating) {\n suspense.isHydrating = false;\n } else if (!resume) {\n delayEnter = activeBranch && pendingBranch.transition && pendingBranch.transition.mode === \"out-in\";\n if (delayEnter) {\n activeBranch.transition.afterLeave = () => {\n if (pendingId === suspense.pendingId) {\n move(\n pendingBranch,\n container2,\n anchor === initialAnchor ? next(activeBranch) : anchor,\n 0\n );\n queuePostFlushCb(effects);\n }\n };\n }\n if (activeBranch) {\n if (parentNode(activeBranch.el) !== suspense.hiddenContainer) {\n anchor = next(activeBranch);\n }\n unmount(activeBranch, parentComponent2, suspense, true);\n }\n if (!delayEnter) {\n move(pendingBranch, container2, anchor, 0);\n }\n }\n setActiveBranch(suspense, pendingBranch);\n suspense.pendingBranch = null;\n suspense.isInFallback = false;\n let parent = suspense.parent;\n let hasUnresolvedAncestor = false;\n while (parent) {\n if (parent.pendingBranch) {\n parent.effects.push(...effects);\n hasUnresolvedAncestor = true;\n break;\n }\n parent = parent.parent;\n }\n if (!hasUnresolvedAncestor && !delayEnter) {\n queuePostFlushCb(effects);\n }\n suspense.effects = [];\n if (isSuspensible) {\n if (parentSuspense && parentSuspense.pendingBranch && parentSuspenseId === parentSuspense.pendingId) {\n parentSuspense.deps--;\n if (parentSuspense.deps === 0 && !sync) {\n parentSuspense.resolve();\n }\n }\n }\n triggerEvent(vnode2, \"onResolve\");\n },\n fallback(fallbackVNode) {\n if (!suspense.pendingBranch) {\n return;\n }\n const { vnode: vnode2, activeBranch, parentComponent: parentComponent2, container: container2, namespace: namespace2 } = suspense;\n triggerEvent(vnode2, \"onFallback\");\n const anchor2 = next(activeBranch);\n const mountFallback = () => {\n if (!suspense.isInFallback) {\n return;\n }\n patch(\n null,\n fallbackVNode,\n container2,\n anchor2,\n parentComponent2,\n null,\n // fallback tree will not have suspense context\n namespace2,\n slotScopeIds,\n optimized\n );\n setActiveBranch(suspense, fallbackVNode);\n };\n const delayEnter = fallbackVNode.transition && fallbackVNode.transition.mode === \"out-in\";\n if (delayEnter) {\n activeBranch.transition.afterLeave = mountFallback;\n }\n suspense.isInFallback = true;\n unmount(\n activeBranch,\n parentComponent2,\n null,\n // no suspense so unmount hooks fire now\n true\n // shouldRemove\n );\n if (!delayEnter) {\n mountFallback();\n }\n },\n move(container2, anchor2, type) {\n suspense.activeBranch && move(suspense.activeBranch, container2, anchor2, type);\n suspense.container = container2;\n },\n next() {\n return suspense.activeBranch && next(suspense.activeBranch);\n },\n registerDep(instance, setupRenderEffect) {\n const isInPendingSuspense = !!suspense.pendingBranch;\n if (isInPendingSuspense) {\n suspense.deps++;\n }\n const hydratedEl = instance.vnode.el;\n instance.asyncDep.catch((err) => {\n handleError(err, instance, 0);\n }).then((asyncSetupResult) => {\n if (instance.isUnmounted || suspense.isUnmounted || suspense.pendingId !== instance.suspenseId) {\n return;\n }\n instance.asyncResolved = true;\n const { vnode: vnode2 } = instance;\n if (!!(process.env.NODE_ENV !== \"production\")) {\n pushWarningContext(vnode2);\n }\n handleSetupResult(instance, asyncSetupResult, false);\n if (hydratedEl) {\n vnode2.el = hydratedEl;\n }\n const placeholder = !hydratedEl && instance.subTree.el;\n setupRenderEffect(\n instance,\n vnode2,\n // component may have been moved before resolve.\n // if this is not a hydration, instance.subTree will be the comment\n // placeholder.\n parentNode(hydratedEl || instance.subTree.el),\n // anchor will not be used if this is hydration, so only need to\n // consider the comment placeholder case.\n hydratedEl ? null : next(instance.subTree),\n suspense,\n namespace,\n optimized\n );\n if (placeholder) {\n remove(placeholder);\n }\n updateHOCHostEl(instance, vnode2.el);\n if (!!(process.env.NODE_ENV !== \"production\")) {\n popWarningContext();\n }\n if (isInPendingSuspense && --suspense.deps === 0) {\n suspense.resolve();\n }\n });\n },\n unmount(parentSuspense2, doRemove) {\n suspense.isUnmounted = true;\n if (suspense.activeBranch) {\n unmount(\n suspense.activeBranch,\n parentComponent,\n parentSuspense2,\n doRemove\n );\n }\n if (suspense.pendingBranch) {\n unmount(\n suspense.pendingBranch,\n parentComponent,\n parentSuspense2,\n doRemove\n );\n }\n }\n };\n return suspense;\n}\nfunction hydrateSuspense(node, vnode, parentComponent, parentSuspense, namespace, slotScopeIds, optimized, rendererInternals, hydrateNode) {\n const suspense = vnode.suspense = createSuspenseBoundary(\n vnode,\n parentSuspense,\n parentComponent,\n node.parentNode,\n // eslint-disable-next-line no-restricted-globals\n document.createElement(\"div\"),\n null,\n namespace,\n slotScopeIds,\n optimized,\n rendererInternals,\n true\n );\n const result = hydrateNode(\n node,\n suspense.pendingBranch = vnode.ssContent,\n parentComponent,\n suspense,\n slotScopeIds,\n optimized\n );\n if (suspense.deps === 0) {\n suspense.resolve(false, true);\n }\n return result;\n}\nfunction normalizeSuspenseChildren(vnode) {\n const { shapeFlag, children } = vnode;\n const isSlotChildren = shapeFlag & 32;\n vnode.ssContent = normalizeSuspenseSlot(\n isSlotChildren ? children.default : children\n );\n vnode.ssFallback = isSlotChildren ? normalizeSuspenseSlot(children.fallback) : createVNode(Comment);\n}\nfunction normalizeSuspenseSlot(s) {\n let block;\n if (isFunction(s)) {\n const trackBlock = isBlockTreeEnabled && s._c;\n if (trackBlock) {\n s._d = false;\n openBlock();\n }\n s = s();\n if (trackBlock) {\n s._d = true;\n block = currentBlock;\n closeBlock();\n }\n }\n if (isArray(s)) {\n const singleChild = filterSingleRoot(s);\n if (!!(process.env.NODE_ENV !== \"production\") && !singleChild && s.filter((child) => child !== NULL_DYNAMIC_COMPONENT).length > 0) {\n warn$1(` slots expect a single root node.`);\n }\n s = singleChild;\n }\n s = normalizeVNode(s);\n if (block && !s.dynamicChildren) {\n s.dynamicChildren = block.filter((c) => c !== s);\n }\n return s;\n}\nfunction queueEffectWithSuspense(fn, suspense) {\n if (suspense && suspense.pendingBranch) {\n if (isArray(fn)) {\n suspense.effects.push(...fn);\n } else {\n suspense.effects.push(fn);\n }\n } else {\n queuePostFlushCb(fn);\n }\n}\nfunction setActiveBranch(suspense, branch) {\n suspense.activeBranch = branch;\n const { vnode, parentComponent } = suspense;\n let el = branch.el;\n while (!el && branch.component) {\n branch = branch.component.subTree;\n el = branch.el;\n }\n vnode.el = el;\n if (parentComponent && parentComponent.subTree === vnode) {\n parentComponent.vnode.el = el;\n updateHOCHostEl(parentComponent, el);\n }\n}\nfunction isVNodeSuspensible(vnode) {\n var _a;\n return ((_a = vnode.props) == null ? void 0 : _a.suspensible) != null && vnode.props.suspensible !== false;\n}\n\nconst ssrContextKey = Symbol.for(\"v-scx\");\nconst useSSRContext = () => {\n {\n const ctx = inject(ssrContextKey);\n if (!ctx) {\n !!(process.env.NODE_ENV !== \"production\") && warn$1(\n `Server rendering context not provided. Make sure to only call useSSRContext() conditionally in the server build.`\n );\n }\n return ctx;\n }\n};\n\nfunction watchEffect(effect, options) {\n return doWatch(effect, null, options);\n}\nfunction watchPostEffect(effect, options) {\n return doWatch(\n effect,\n null,\n !!(process.env.NODE_ENV !== \"production\") ? extend({}, options, { flush: \"post\" }) : { flush: \"post\" }\n );\n}\nfunction watchSyncEffect(effect, options) {\n return doWatch(\n effect,\n null,\n !!(process.env.NODE_ENV !== \"production\") ? extend({}, options, { flush: \"sync\" }) : { flush: \"sync\" }\n );\n}\nconst INITIAL_WATCHER_VALUE = {};\nfunction watch(source, cb, options) {\n if (!!(process.env.NODE_ENV !== \"production\") && !isFunction(cb)) {\n warn$1(\n `\\`watch(fn, options?)\\` signature has been moved to a separate API. Use \\`watchEffect(fn, options?)\\` instead. \\`watch\\` now only supports \\`watch(source, cb, options?) signature.`\n );\n }\n return doWatch(source, cb, options);\n}\nfunction doWatch(source, cb, {\n immediate,\n deep,\n flush,\n once,\n onTrack,\n onTrigger\n} = EMPTY_OBJ) {\n if (cb && once) {\n const _cb = cb;\n cb = (...args) => {\n _cb(...args);\n unwatch();\n };\n }\n if (!!(process.env.NODE_ENV !== \"production\") && deep !== void 0 && typeof deep === \"number\") {\n warn$1(\n `watch() \"deep\" option with number value will be used as watch depth in future versions. Please use a boolean instead to avoid potential breakage.`\n );\n }\n if (!!(process.env.NODE_ENV !== \"production\") && !cb) {\n if (immediate !== void 0) {\n warn$1(\n `watch() \"immediate\" option is only respected when using the watch(source, callback, options?) signature.`\n );\n }\n if (deep !== void 0) {\n warn$1(\n `watch() \"deep\" option is only respected when using the watch(source, callback, options?) signature.`\n );\n }\n if (once !== void 0) {\n warn$1(\n `watch() \"once\" option is only respected when using the watch(source, callback, options?) signature.`\n );\n }\n }\n const warnInvalidSource = (s) => {\n warn$1(\n `Invalid watch source: `,\n s,\n `A watch source can only be a getter/effect function, a ref, a reactive object, or an array of these types.`\n );\n };\n const instance = currentInstance;\n const reactiveGetter = (source2) => deep === true ? source2 : (\n // for deep: false, only traverse root-level properties\n traverse(source2, deep === false ? 1 : void 0)\n );\n let getter;\n let forceTrigger = false;\n let isMultiSource = false;\n if (isRef(source)) {\n getter = () => source.value;\n forceTrigger = isShallow(source);\n } else if (isReactive(source)) {\n getter = () => reactiveGetter(source);\n forceTrigger = true;\n } else if (isArray(source)) {\n isMultiSource = true;\n forceTrigger = source.some((s) => isReactive(s) || isShallow(s));\n getter = () => source.map((s) => {\n if (isRef(s)) {\n return s.value;\n } else if (isReactive(s)) {\n return reactiveGetter(s);\n } else if (isFunction(s)) {\n return callWithErrorHandling(s, instance, 2);\n } else {\n !!(process.env.NODE_ENV !== \"production\") && warnInvalidSource(s);\n }\n });\n } else if (isFunction(source)) {\n if (cb) {\n getter = () => callWithErrorHandling(source, instance, 2);\n } else {\n getter = () => {\n if (cleanup) {\n cleanup();\n }\n return callWithAsyncErrorHandling(\n source,\n instance,\n 3,\n [onCleanup]\n );\n };\n }\n } else {\n getter = NOOP;\n !!(process.env.NODE_ENV !== \"production\") && warnInvalidSource(source);\n }\n if (cb && deep) {\n const baseGetter = getter;\n getter = () => traverse(baseGetter());\n }\n let cleanup;\n let onCleanup = (fn) => {\n cleanup = effect.onStop = () => {\n callWithErrorHandling(fn, instance, 4);\n cleanup = effect.onStop = void 0;\n };\n };\n let ssrCleanup;\n if (isInSSRComponentSetup) {\n onCleanup = NOOP;\n if (!cb) {\n getter();\n } else if (immediate) {\n callWithAsyncErrorHandling(cb, instance, 3, [\n getter(),\n isMultiSource ? [] : void 0,\n onCleanup\n ]);\n }\n if (flush === \"sync\") {\n const ctx = useSSRContext();\n ssrCleanup = ctx.__watcherHandles || (ctx.__watcherHandles = []);\n } else {\n return NOOP;\n }\n }\n let oldValue = isMultiSource ? new Array(source.length).fill(INITIAL_WATCHER_VALUE) : INITIAL_WATCHER_VALUE;\n const job = () => {\n if (!effect.active || !effect.dirty) {\n return;\n }\n if (cb) {\n const newValue = effect.run();\n if (deep || forceTrigger || (isMultiSource ? newValue.some((v, i) => hasChanged(v, oldValue[i])) : hasChanged(newValue, oldValue)) || false) {\n if (cleanup) {\n cleanup();\n }\n callWithAsyncErrorHandling(cb, instance, 3, [\n newValue,\n // pass undefined as the old value when it's changed for the first time\n oldValue === INITIAL_WATCHER_VALUE ? void 0 : isMultiSource && oldValue[0] === INITIAL_WATCHER_VALUE ? [] : oldValue,\n onCleanup\n ]);\n oldValue = newValue;\n }\n } else {\n effect.run();\n }\n };\n job.allowRecurse = !!cb;\n let scheduler;\n if (flush === \"sync\") {\n scheduler = job;\n } else if (flush === \"post\") {\n scheduler = () => queuePostRenderEffect(job, instance && instance.suspense);\n } else {\n job.pre = true;\n if (instance)\n job.id = instance.uid;\n scheduler = () => queueJob(job);\n }\n const effect = new ReactiveEffect(getter, NOOP, scheduler);\n const scope = getCurrentScope();\n const unwatch = () => {\n effect.stop();\n if (scope) {\n remove(scope.effects, effect);\n }\n };\n if (!!(process.env.NODE_ENV !== \"production\")) {\n effect.onTrack = onTrack;\n effect.onTrigger = onTrigger;\n }\n if (cb) {\n if (immediate) {\n job();\n } else {\n oldValue = effect.run();\n }\n } else if (flush === \"post\") {\n queuePostRenderEffect(\n effect.run.bind(effect),\n instance && instance.suspense\n );\n } else {\n effect.run();\n }\n if (ssrCleanup)\n ssrCleanup.push(unwatch);\n return unwatch;\n}\nfunction instanceWatch(source, value, options) {\n const publicThis = this.proxy;\n const getter = isString(source) ? source.includes(\".\") ? createPathGetter(publicThis, source) : () => publicThis[source] : source.bind(publicThis, publicThis);\n let cb;\n if (isFunction(value)) {\n cb = value;\n } else {\n cb = value.handler;\n options = value;\n }\n const reset = setCurrentInstance(this);\n const res = doWatch(getter, cb.bind(publicThis), options);\n reset();\n return res;\n}\nfunction createPathGetter(ctx, path) {\n const segments = path.split(\".\");\n return () => {\n let cur = ctx;\n for (let i = 0; i < segments.length && cur; i++) {\n cur = cur[segments[i]];\n }\n return cur;\n };\n}\nfunction traverse(value, depth, currentDepth = 0, seen) {\n if (!isObject(value) || value[\"__v_skip\"]) {\n return value;\n }\n if (depth && depth > 0) {\n if (currentDepth >= depth) {\n return value;\n }\n currentDepth++;\n }\n seen = seen || /* @__PURE__ */ new Set();\n if (seen.has(value)) {\n return value;\n }\n seen.add(value);\n if (isRef(value)) {\n traverse(value.value, depth, currentDepth, seen);\n } else if (isArray(value)) {\n for (let i = 0; i < value.length; i++) {\n traverse(value[i], depth, currentDepth, seen);\n }\n } else if (isSet(value) || isMap(value)) {\n value.forEach((v) => {\n traverse(v, depth, currentDepth, seen);\n });\n } else if (isPlainObject(value)) {\n for (const key in value) {\n traverse(value[key], depth, currentDepth, seen);\n }\n }\n return value;\n}\n\nfunction validateDirectiveName(name) {\n if (isBuiltInDirective(name)) {\n warn$1(\"Do not use built-in directive ids as custom directive id: \" + name);\n }\n}\nfunction withDirectives(vnode, directives) {\n if (currentRenderingInstance === null) {\n !!(process.env.NODE_ENV !== \"production\") && warn$1(`withDirectives can only be used inside render functions.`);\n return vnode;\n }\n const instance = getExposeProxy(currentRenderingInstance) || currentRenderingInstance.proxy;\n const bindings = vnode.dirs || (vnode.dirs = []);\n for (let i = 0; i < directives.length; i++) {\n let [dir, value, arg, modifiers = EMPTY_OBJ] = directives[i];\n if (dir) {\n if (isFunction(dir)) {\n dir = {\n mounted: dir,\n updated: dir\n };\n }\n if (dir.deep) {\n traverse(value);\n }\n bindings.push({\n dir,\n instance,\n value,\n oldValue: void 0,\n arg,\n modifiers\n });\n }\n }\n return vnode;\n}\nfunction invokeDirectiveHook(vnode, prevVNode, instance, name) {\n const bindings = vnode.dirs;\n const oldBindings = prevVNode && prevVNode.dirs;\n for (let i = 0; i < bindings.length; i++) {\n const binding = bindings[i];\n if (oldBindings) {\n binding.oldValue = oldBindings[i].value;\n }\n let hook = binding.dir[name];\n if (hook) {\n pauseTracking();\n callWithAsyncErrorHandling(hook, instance, 8, [\n vnode.el,\n binding,\n vnode,\n prevVNode\n ]);\n resetTracking();\n }\n }\n}\n\nconst leaveCbKey = Symbol(\"_leaveCb\");\nconst enterCbKey = Symbol(\"_enterCb\");\nfunction useTransitionState() {\n const state = {\n isMounted: false,\n isLeaving: false,\n isUnmounting: false,\n leavingVNodes: /* @__PURE__ */ new Map()\n };\n onMounted(() => {\n state.isMounted = true;\n });\n onBeforeUnmount(() => {\n state.isUnmounting = true;\n });\n return state;\n}\nconst TransitionHookValidator = [Function, Array];\nconst BaseTransitionPropsValidators = {\n mode: String,\n appear: Boolean,\n persisted: Boolean,\n // enter\n onBeforeEnter: TransitionHookValidator,\n onEnter: TransitionHookValidator,\n onAfterEnter: TransitionHookValidator,\n onEnterCancelled: TransitionHookValidator,\n // leave\n onBeforeLeave: TransitionHookValidator,\n onLeave: TransitionHookValidator,\n onAfterLeave: TransitionHookValidator,\n onLeaveCancelled: TransitionHookValidator,\n // appear\n onBeforeAppear: TransitionHookValidator,\n onAppear: TransitionHookValidator,\n onAfterAppear: TransitionHookValidator,\n onAppearCancelled: TransitionHookValidator\n};\nconst BaseTransitionImpl = {\n name: `BaseTransition`,\n props: BaseTransitionPropsValidators,\n setup(props, { slots }) {\n const instance = getCurrentInstance();\n const state = useTransitionState();\n return () => {\n const children = slots.default && getTransitionRawChildren(slots.default(), true);\n if (!children || !children.length) {\n return;\n }\n let child = children[0];\n if (children.length > 1) {\n let hasFound = false;\n for (const c of children) {\n if (c.type !== Comment) {\n if (!!(process.env.NODE_ENV !== \"production\") && hasFound) {\n warn$1(\n \" can only be used on a single element or component. Use for lists.\"\n );\n break;\n }\n child = c;\n hasFound = true;\n if (!!!(process.env.NODE_ENV !== \"production\"))\n break;\n }\n }\n }\n const rawProps = toRaw(props);\n const { mode } = rawProps;\n if (!!(process.env.NODE_ENV !== \"production\") && mode && mode !== \"in-out\" && mode !== \"out-in\" && mode !== \"default\") {\n warn$1(`invalid mode: ${mode}`);\n }\n if (state.isLeaving) {\n return emptyPlaceholder(child);\n }\n const innerChild = getKeepAliveChild(child);\n if (!innerChild) {\n return emptyPlaceholder(child);\n }\n const enterHooks = resolveTransitionHooks(\n innerChild,\n rawProps,\n state,\n instance\n );\n setTransitionHooks(innerChild, enterHooks);\n const oldChild = instance.subTree;\n const oldInnerChild = oldChild && getKeepAliveChild(oldChild);\n if (oldInnerChild && oldInnerChild.type !== Comment && !isSameVNodeType(innerChild, oldInnerChild)) {\n const leavingHooks = resolveTransitionHooks(\n oldInnerChild,\n rawProps,\n state,\n instance\n );\n setTransitionHooks(oldInnerChild, leavingHooks);\n if (mode === \"out-in\") {\n state.isLeaving = true;\n leavingHooks.afterLeave = () => {\n state.isLeaving = false;\n if (instance.update.active !== false) {\n instance.effect.dirty = true;\n instance.update();\n }\n };\n return emptyPlaceholder(child);\n } else if (mode === \"in-out\" && innerChild.type !== Comment) {\n leavingHooks.delayLeave = (el, earlyRemove, delayedLeave) => {\n const leavingVNodesCache = getLeavingNodesForType(\n state,\n oldInnerChild\n );\n leavingVNodesCache[String(oldInnerChild.key)] = oldInnerChild;\n el[leaveCbKey] = () => {\n earlyRemove();\n el[leaveCbKey] = void 0;\n delete enterHooks.delayedLeave;\n };\n enterHooks.delayedLeave = delayedLeave;\n };\n }\n }\n return child;\n };\n }\n};\nconst BaseTransition = BaseTransitionImpl;\nfunction getLeavingNodesForType(state, vnode) {\n const { leavingVNodes } = state;\n let leavingVNodesCache = leavingVNodes.get(vnode.type);\n if (!leavingVNodesCache) {\n leavingVNodesCache = /* @__PURE__ */ Object.create(null);\n leavingVNodes.set(vnode.type, leavingVNodesCache);\n }\n return leavingVNodesCache;\n}\nfunction resolveTransitionHooks(vnode, props, state, instance) {\n const {\n appear,\n mode,\n persisted = false,\n onBeforeEnter,\n onEnter,\n onAfterEnter,\n onEnterCancelled,\n onBeforeLeave,\n onLeave,\n onAfterLeave,\n onLeaveCancelled,\n onBeforeAppear,\n onAppear,\n onAfterAppear,\n onAppearCancelled\n } = props;\n const key = String(vnode.key);\n const leavingVNodesCache = getLeavingNodesForType(state, vnode);\n const callHook = (hook, args) => {\n hook && callWithAsyncErrorHandling(\n hook,\n instance,\n 9,\n args\n );\n };\n const callAsyncHook = (hook, args) => {\n const done = args[1];\n callHook(hook, args);\n if (isArray(hook)) {\n if (hook.every((hook2) => hook2.length <= 1))\n done();\n } else if (hook.length <= 1) {\n done();\n }\n };\n const hooks = {\n mode,\n persisted,\n beforeEnter(el) {\n let hook = onBeforeEnter;\n if (!state.isMounted) {\n if (appear) {\n hook = onBeforeAppear || onBeforeEnter;\n } else {\n return;\n }\n }\n if (el[leaveCbKey]) {\n el[leaveCbKey](\n true\n /* cancelled */\n );\n }\n const leavingVNode = leavingVNodesCache[key];\n if (leavingVNode && isSameVNodeType(vnode, leavingVNode) && leavingVNode.el[leaveCbKey]) {\n leavingVNode.el[leaveCbKey]();\n }\n callHook(hook, [el]);\n },\n enter(el) {\n let hook = onEnter;\n let afterHook = onAfterEnter;\n let cancelHook = onEnterCancelled;\n if (!state.isMounted) {\n if (appear) {\n hook = onAppear || onEnter;\n afterHook = onAfterAppear || onAfterEnter;\n cancelHook = onAppearCancelled || onEnterCancelled;\n } else {\n return;\n }\n }\n let called = false;\n const done = el[enterCbKey] = (cancelled) => {\n if (called)\n return;\n called = true;\n if (cancelled) {\n callHook(cancelHook, [el]);\n } else {\n callHook(afterHook, [el]);\n }\n if (hooks.delayedLeave) {\n hooks.delayedLeave();\n }\n el[enterCbKey] = void 0;\n };\n if (hook) {\n callAsyncHook(hook, [el, done]);\n } else {\n done();\n }\n },\n leave(el, remove) {\n const key2 = String(vnode.key);\n if (el[enterCbKey]) {\n el[enterCbKey](\n true\n /* cancelled */\n );\n }\n if (state.isUnmounting) {\n return remove();\n }\n callHook(onBeforeLeave, [el]);\n let called = false;\n const done = el[leaveCbKey] = (cancelled) => {\n if (called)\n return;\n called = true;\n remove();\n if (cancelled) {\n callHook(onLeaveCancelled, [el]);\n } else {\n callHook(onAfterLeave, [el]);\n }\n el[leaveCbKey] = void 0;\n if (leavingVNodesCache[key2] === vnode) {\n delete leavingVNodesCache[key2];\n }\n };\n leavingVNodesCache[key2] = vnode;\n if (onLeave) {\n callAsyncHook(onLeave, [el, done]);\n } else {\n done();\n }\n },\n clone(vnode2) {\n return resolveTransitionHooks(vnode2, props, state, instance);\n }\n };\n return hooks;\n}\nfunction emptyPlaceholder(vnode) {\n if (isKeepAlive(vnode)) {\n vnode = cloneVNode(vnode);\n vnode.children = null;\n return vnode;\n }\n}\nfunction getKeepAliveChild(vnode) {\n if (!isKeepAlive(vnode)) {\n return vnode;\n }\n if (!!(process.env.NODE_ENV !== \"production\") && vnode.component) {\n return vnode.component.subTree;\n }\n const { shapeFlag, children } = vnode;\n if (children) {\n if (shapeFlag & 16) {\n return children[0];\n }\n if (shapeFlag & 32 && isFunction(children.default)) {\n return children.default();\n }\n }\n}\nfunction setTransitionHooks(vnode, hooks) {\n if (vnode.shapeFlag & 6 && vnode.component) {\n setTransitionHooks(vnode.component.subTree, hooks);\n } else if (vnode.shapeFlag & 128) {\n vnode.ssContent.transition = hooks.clone(vnode.ssContent);\n vnode.ssFallback.transition = hooks.clone(vnode.ssFallback);\n } else {\n vnode.transition = hooks;\n }\n}\nfunction getTransitionRawChildren(children, keepComment = false, parentKey) {\n let ret = [];\n let keyedFragmentCount = 0;\n for (let i = 0; i < children.length; i++) {\n let child = children[i];\n const key = parentKey == null ? child.key : String(parentKey) + String(child.key != null ? child.key : i);\n if (child.type === Fragment) {\n if (child.patchFlag & 128)\n keyedFragmentCount++;\n ret = ret.concat(\n getTransitionRawChildren(child.children, keepComment, key)\n );\n } else if (keepComment || child.type !== Comment) {\n ret.push(key != null ? cloneVNode(child, { key }) : child);\n }\n }\n if (keyedFragmentCount > 1) {\n for (let i = 0; i < ret.length; i++) {\n ret[i].patchFlag = -2;\n }\n }\n return ret;\n}\n\n/*! #__NO_SIDE_EFFECTS__ */\n// @__NO_SIDE_EFFECTS__\nfunction defineComponent(options, extraOptions) {\n return isFunction(options) ? (\n // #8326: extend call and options.name access are considered side-effects\n // by Rollup, so we have to wrap it in a pure-annotated IIFE.\n /* @__PURE__ */ (() => extend({ name: options.name }, extraOptions, { setup: options }))()\n ) : options;\n}\n\nconst isAsyncWrapper = (i) => !!i.type.__asyncLoader;\n/*! #__NO_SIDE_EFFECTS__ */\n// @__NO_SIDE_EFFECTS__\nfunction defineAsyncComponent(source) {\n if (isFunction(source)) {\n source = { loader: source };\n }\n const {\n loader,\n loadingComponent,\n errorComponent,\n delay = 200,\n timeout,\n // undefined = never times out\n suspensible = true,\n onError: userOnError\n } = source;\n let pendingRequest = null;\n let resolvedComp;\n let retries = 0;\n const retry = () => {\n retries++;\n pendingRequest = null;\n return load();\n };\n const load = () => {\n let thisRequest;\n return pendingRequest || (thisRequest = pendingRequest = loader().catch((err) => {\n err = err instanceof Error ? err : new Error(String(err));\n if (userOnError) {\n return new Promise((resolve, reject) => {\n const userRetry = () => resolve(retry());\n const userFail = () => reject(err);\n userOnError(err, userRetry, userFail, retries + 1);\n });\n } else {\n throw err;\n }\n }).then((comp) => {\n if (thisRequest !== pendingRequest && pendingRequest) {\n return pendingRequest;\n }\n if (!!(process.env.NODE_ENV !== \"production\") && !comp) {\n warn$1(\n `Async component loader resolved to undefined. If you are using retry(), make sure to return its return value.`\n );\n }\n if (comp && (comp.__esModule || comp[Symbol.toStringTag] === \"Module\")) {\n comp = comp.default;\n }\n if (!!(process.env.NODE_ENV !== \"production\") && comp && !isObject(comp) && !isFunction(comp)) {\n throw new Error(`Invalid async component load result: ${comp}`);\n }\n resolvedComp = comp;\n return comp;\n }));\n };\n return defineComponent({\n name: \"AsyncComponentWrapper\",\n __asyncLoader: load,\n get __asyncResolved() {\n return resolvedComp;\n },\n setup() {\n const instance = currentInstance;\n if (resolvedComp) {\n return () => createInnerComp(resolvedComp, instance);\n }\n const onError = (err) => {\n pendingRequest = null;\n handleError(\n err,\n instance,\n 13,\n !errorComponent\n );\n };\n if (suspensible && instance.suspense || isInSSRComponentSetup) {\n return load().then((comp) => {\n return () => createInnerComp(comp, instance);\n }).catch((err) => {\n onError(err);\n return () => errorComponent ? createVNode(errorComponent, {\n error: err\n }) : null;\n });\n }\n const loaded = ref(false);\n const error = ref();\n const delayed = ref(!!delay);\n if (delay) {\n setTimeout(() => {\n delayed.value = false;\n }, delay);\n }\n if (timeout != null) {\n setTimeout(() => {\n if (!loaded.value && !error.value) {\n const err = new Error(\n `Async component timed out after ${timeout}ms.`\n );\n onError(err);\n error.value = err;\n }\n }, timeout);\n }\n load().then(() => {\n loaded.value = true;\n if (instance.parent && isKeepAlive(instance.parent.vnode)) {\n instance.parent.effect.dirty = true;\n queueJob(instance.parent.update);\n }\n }).catch((err) => {\n onError(err);\n error.value = err;\n });\n return () => {\n if (loaded.value && resolvedComp) {\n return createInnerComp(resolvedComp, instance);\n } else if (error.value && errorComponent) {\n return createVNode(errorComponent, {\n error: error.value\n });\n } else if (loadingComponent && !delayed.value) {\n return createVNode(loadingComponent);\n }\n };\n }\n });\n}\nfunction createInnerComp(comp, parent) {\n const { ref: ref2, props, children, ce } = parent.vnode;\n const vnode = createVNode(comp, props, children);\n vnode.ref = ref2;\n vnode.ce = ce;\n delete parent.vnode.ce;\n return vnode;\n}\n\nconst isKeepAlive = (vnode) => vnode.type.__isKeepAlive;\nconst KeepAliveImpl = {\n name: `KeepAlive`,\n // Marker for special handling inside the renderer. We are not using a ===\n // check directly on KeepAlive in the renderer, because importing it directly\n // would prevent it from being tree-shaken.\n __isKeepAlive: true,\n props: {\n include: [String, RegExp, Array],\n exclude: [String, RegExp, Array],\n max: [String, Number]\n },\n setup(props, { slots }) {\n const instance = getCurrentInstance();\n const sharedContext = instance.ctx;\n if (!sharedContext.renderer) {\n return () => {\n const children = slots.default && slots.default();\n return children && children.length === 1 ? children[0] : children;\n };\n }\n const cache = /* @__PURE__ */ new Map();\n const keys = /* @__PURE__ */ new Set();\n let current = null;\n if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n instance.__v_cache = cache;\n }\n const parentSuspense = instance.suspense;\n const {\n renderer: {\n p: patch,\n m: move,\n um: _unmount,\n o: { createElement }\n }\n } = sharedContext;\n const storageContainer = createElement(\"div\");\n sharedContext.activate = (vnode, container, anchor, namespace, optimized) => {\n const instance2 = vnode.component;\n move(vnode, container, anchor, 0, parentSuspense);\n patch(\n instance2.vnode,\n vnode,\n container,\n anchor,\n instance2,\n parentSuspense,\n namespace,\n vnode.slotScopeIds,\n optimized\n );\n queuePostRenderEffect(() => {\n instance2.isDeactivated = false;\n if (instance2.a) {\n invokeArrayFns(instance2.a);\n }\n const vnodeHook = vnode.props && vnode.props.onVnodeMounted;\n if (vnodeHook) {\n invokeVNodeHook(vnodeHook, instance2.parent, vnode);\n }\n }, parentSuspense);\n if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n devtoolsComponentAdded(instance2);\n }\n };\n sharedContext.deactivate = (vnode) => {\n const instance2 = vnode.component;\n move(vnode, storageContainer, null, 1, parentSuspense);\n queuePostRenderEffect(() => {\n if (instance2.da) {\n invokeArrayFns(instance2.da);\n }\n const vnodeHook = vnode.props && vnode.props.onVnodeUnmounted;\n if (vnodeHook) {\n invokeVNodeHook(vnodeHook, instance2.parent, vnode);\n }\n instance2.isDeactivated = true;\n }, parentSuspense);\n if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n devtoolsComponentAdded(instance2);\n }\n };\n function unmount(vnode) {\n resetShapeFlag(vnode);\n _unmount(vnode, instance, parentSuspense, true);\n }\n function pruneCache(filter) {\n cache.forEach((vnode, key) => {\n const name = getComponentName(vnode.type);\n if (name && (!filter || !filter(name))) {\n pruneCacheEntry(key);\n }\n });\n }\n function pruneCacheEntry(key) {\n const cached = cache.get(key);\n if (!current || !isSameVNodeType(cached, current)) {\n unmount(cached);\n } else if (current) {\n resetShapeFlag(current);\n }\n cache.delete(key);\n keys.delete(key);\n }\n watch(\n () => [props.include, props.exclude],\n ([include, exclude]) => {\n include && pruneCache((name) => matches(include, name));\n exclude && pruneCache((name) => !matches(exclude, name));\n },\n // prune post-render after `current` has been updated\n { flush: \"post\", deep: true }\n );\n let pendingCacheKey = null;\n const cacheSubtree = () => {\n if (pendingCacheKey != null) {\n cache.set(pendingCacheKey, getInnerChild(instance.subTree));\n }\n };\n onMounted(cacheSubtree);\n onUpdated(cacheSubtree);\n onBeforeUnmount(() => {\n cache.forEach((cached) => {\n const { subTree, suspense } = instance;\n const vnode = getInnerChild(subTree);\n if (cached.type === vnode.type && cached.key === vnode.key) {\n resetShapeFlag(vnode);\n const da = vnode.component.da;\n da && queuePostRenderEffect(da, suspense);\n return;\n }\n unmount(cached);\n });\n });\n return () => {\n pendingCacheKey = null;\n if (!slots.default) {\n return current = null;\n }\n const children = slots.default();\n const rawVNode = children[0];\n if (children.length > 1) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n warn$1(`KeepAlive should contain exactly one component child.`);\n }\n current = null;\n return children;\n } else if (!isVNode(rawVNode) || !(rawVNode.shapeFlag & 4) && !(rawVNode.shapeFlag & 128)) {\n current = null;\n return rawVNode;\n }\n let vnode = getInnerChild(rawVNode);\n const comp = vnode.type;\n const name = getComponentName(\n isAsyncWrapper(vnode) ? vnode.type.__asyncResolved || {} : comp\n );\n const { include, exclude, max } = props;\n if (include && (!name || !matches(include, name)) || exclude && name && matches(exclude, name)) {\n current = vnode;\n return rawVNode;\n }\n const key = vnode.key == null ? comp : vnode.key;\n const cachedVNode = cache.get(key);\n if (vnode.el) {\n vnode = cloneVNode(vnode);\n if (rawVNode.shapeFlag & 128) {\n rawVNode.ssContent = vnode;\n }\n }\n pendingCacheKey = key;\n if (cachedVNode) {\n vnode.el = cachedVNode.el;\n vnode.component = cachedVNode.component;\n if (vnode.transition) {\n setTransitionHooks(vnode, vnode.transition);\n }\n vnode.shapeFlag |= 512;\n keys.delete(key);\n keys.add(key);\n } else {\n keys.add(key);\n if (max && keys.size > parseInt(max, 10)) {\n pruneCacheEntry(keys.values().next().value);\n }\n }\n vnode.shapeFlag |= 256;\n current = vnode;\n return isSuspense(rawVNode.type) ? rawVNode : vnode;\n };\n }\n};\nconst KeepAlive = KeepAliveImpl;\nfunction matches(pattern, name) {\n if (isArray(pattern)) {\n return pattern.some((p) => matches(p, name));\n } else if (isString(pattern)) {\n return pattern.split(\",\").includes(name);\n } else if (isRegExp(pattern)) {\n return pattern.test(name);\n }\n return false;\n}\nfunction onActivated(hook, target) {\n registerKeepAliveHook(hook, \"a\", target);\n}\nfunction onDeactivated(hook, target) {\n registerKeepAliveHook(hook, \"da\", target);\n}\nfunction registerKeepAliveHook(hook, type, target = currentInstance) {\n const wrappedHook = hook.__wdc || (hook.__wdc = () => {\n let current = target;\n while (current) {\n if (current.isDeactivated) {\n return;\n }\n current = current.parent;\n }\n return hook();\n });\n injectHook(type, wrappedHook, target);\n if (target) {\n let current = target.parent;\n while (current && current.parent) {\n if (isKeepAlive(current.parent.vnode)) {\n injectToKeepAliveRoot(wrappedHook, type, target, current);\n }\n current = current.parent;\n }\n }\n}\nfunction injectToKeepAliveRoot(hook, type, target, keepAliveRoot) {\n const injected = injectHook(\n type,\n hook,\n keepAliveRoot,\n true\n /* prepend */\n );\n onUnmounted(() => {\n remove(keepAliveRoot[type], injected);\n }, target);\n}\nfunction resetShapeFlag(vnode) {\n vnode.shapeFlag &= ~256;\n vnode.shapeFlag &= ~512;\n}\nfunction getInnerChild(vnode) {\n return vnode.shapeFlag & 128 ? vnode.ssContent : vnode;\n}\n\nfunction injectHook(type, hook, target = currentInstance, prepend = false) {\n if (target) {\n const hooks = target[type] || (target[type] = []);\n const wrappedHook = hook.__weh || (hook.__weh = (...args) => {\n if (target.isUnmounted) {\n return;\n }\n pauseTracking();\n const reset = setCurrentInstance(target);\n const res = callWithAsyncErrorHandling(hook, target, type, args);\n reset();\n resetTracking();\n return res;\n });\n if (prepend) {\n hooks.unshift(wrappedHook);\n } else {\n hooks.push(wrappedHook);\n }\n return wrappedHook;\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n const apiName = toHandlerKey(ErrorTypeStrings$1[type].replace(/ hook$/, \"\"));\n warn$1(\n `${apiName} is called when there is no active component instance to be associated with. Lifecycle injection APIs can only be used during execution of setup().` + (` If you are using async setup(), make sure to register lifecycle hooks before the first await statement.` )\n );\n }\n}\nconst createHook = (lifecycle) => (hook, target = currentInstance) => (\n // post-create lifecycle registrations are noops during SSR (except for serverPrefetch)\n (!isInSSRComponentSetup || lifecycle === \"sp\") && injectHook(lifecycle, (...args) => hook(...args), target)\n);\nconst onBeforeMount = createHook(\"bm\");\nconst onMounted = createHook(\"m\");\nconst onBeforeUpdate = createHook(\"bu\");\nconst onUpdated = createHook(\"u\");\nconst onBeforeUnmount = createHook(\"bum\");\nconst onUnmounted = createHook(\"um\");\nconst onServerPrefetch = createHook(\"sp\");\nconst onRenderTriggered = createHook(\n \"rtg\"\n);\nconst onRenderTracked = createHook(\n \"rtc\"\n);\nfunction onErrorCaptured(hook, target = currentInstance) {\n injectHook(\"ec\", hook, target);\n}\n\nfunction renderList(source, renderItem, cache, index) {\n let ret;\n const cached = cache && cache[index];\n if (isArray(source) || isString(source)) {\n ret = new Array(source.length);\n for (let i = 0, l = source.length; i < l; i++) {\n ret[i] = renderItem(source[i], i, void 0, cached && cached[i]);\n }\n } else if (typeof source === \"number\") {\n if (!!(process.env.NODE_ENV !== \"production\") && !Number.isInteger(source)) {\n warn$1(`The v-for range expect an integer value but got ${source}.`);\n }\n ret = new Array(source);\n for (let i = 0; i < source; i++) {\n ret[i] = renderItem(i + 1, i, void 0, cached && cached[i]);\n }\n } else if (isObject(source)) {\n if (source[Symbol.iterator]) {\n ret = Array.from(\n source,\n (item, i) => renderItem(item, i, void 0, cached && cached[i])\n );\n } else {\n const keys = Object.keys(source);\n ret = new Array(keys.length);\n for (let i = 0, l = keys.length; i < l; i++) {\n const key = keys[i];\n ret[i] = renderItem(source[key], key, i, cached && cached[i]);\n }\n }\n } else {\n ret = [];\n }\n if (cache) {\n cache[index] = ret;\n }\n return ret;\n}\n\nfunction createSlots(slots, dynamicSlots) {\n for (let i = 0; i < dynamicSlots.length; i++) {\n const slot = dynamicSlots[i];\n if (isArray(slot)) {\n for (let j = 0; j < slot.length; j++) {\n slots[slot[j].name] = slot[j].fn;\n }\n } else if (slot) {\n slots[slot.name] = slot.key ? (...args) => {\n const res = slot.fn(...args);\n if (res)\n res.key = slot.key;\n return res;\n } : slot.fn;\n }\n }\n return slots;\n}\n\nfunction renderSlot(slots, name, props = {}, fallback, noSlotted) {\n if (currentRenderingInstance.isCE || currentRenderingInstance.parent && isAsyncWrapper(currentRenderingInstance.parent) && currentRenderingInstance.parent.isCE) {\n if (name !== \"default\")\n props.name = name;\n return createVNode(\"slot\", props, fallback && fallback());\n }\n let slot = slots[name];\n if (!!(process.env.NODE_ENV !== \"production\") && slot && slot.length > 1) {\n warn$1(\n `SSR-optimized slot function detected in a non-SSR-optimized render function. You need to mark this component with $dynamic-slots in the parent template.`\n );\n slot = () => [];\n }\n if (slot && slot._c) {\n slot._d = false;\n }\n openBlock();\n const validSlotContent = slot && ensureValidVNode(slot(props));\n const rendered = createBlock(\n Fragment,\n {\n key: props.key || // slot content array of a dynamic conditional slot may have a branch\n // key attached in the `createSlots` helper, respect that\n validSlotContent && validSlotContent.key || `_${name}`\n },\n validSlotContent || (fallback ? fallback() : []),\n validSlotContent && slots._ === 1 ? 64 : -2\n );\n if (!noSlotted && rendered.scopeId) {\n rendered.slotScopeIds = [rendered.scopeId + \"-s\"];\n }\n if (slot && slot._c) {\n slot._d = true;\n }\n return rendered;\n}\nfunction ensureValidVNode(vnodes) {\n return vnodes.some((child) => {\n if (!isVNode(child))\n return true;\n if (child.type === Comment)\n return false;\n if (child.type === Fragment && !ensureValidVNode(child.children))\n return false;\n return true;\n }) ? vnodes : null;\n}\n\nfunction toHandlers(obj, preserveCaseIfNecessary) {\n const ret = {};\n if (!!(process.env.NODE_ENV !== \"production\") && !isObject(obj)) {\n warn$1(`v-on with no argument expects an object value.`);\n return ret;\n }\n for (const key in obj) {\n ret[preserveCaseIfNecessary && /[A-Z]/.test(key) ? `on:${key}` : toHandlerKey(key)] = obj[key];\n }\n return ret;\n}\n\nconst getPublicInstance = (i) => {\n if (!i)\n return null;\n if (isStatefulComponent(i))\n return getExposeProxy(i) || i.proxy;\n return getPublicInstance(i.parent);\n};\nconst publicPropertiesMap = (\n // Move PURE marker to new line to workaround compiler discarding it\n // due to type annotation\n /* @__PURE__ */ extend(/* @__PURE__ */ Object.create(null), {\n $: (i) => i,\n $el: (i) => i.vnode.el,\n $data: (i) => i.data,\n $props: (i) => !!(process.env.NODE_ENV !== \"production\") ? shallowReadonly(i.props) : i.props,\n $attrs: (i) => !!(process.env.NODE_ENV !== \"production\") ? shallowReadonly(i.attrs) : i.attrs,\n $slots: (i) => !!(process.env.NODE_ENV !== \"production\") ? shallowReadonly(i.slots) : i.slots,\n $refs: (i) => !!(process.env.NODE_ENV !== \"production\") ? shallowReadonly(i.refs) : i.refs,\n $parent: (i) => getPublicInstance(i.parent),\n $root: (i) => getPublicInstance(i.root),\n $emit: (i) => i.emit,\n $options: (i) => __VUE_OPTIONS_API__ ? resolveMergedOptions(i) : i.type,\n $forceUpdate: (i) => i.f || (i.f = () => {\n i.effect.dirty = true;\n queueJob(i.update);\n }),\n $nextTick: (i) => i.n || (i.n = nextTick.bind(i.proxy)),\n $watch: (i) => __VUE_OPTIONS_API__ ? instanceWatch.bind(i) : NOOP\n })\n);\nconst isReservedPrefix = (key) => key === \"_\" || key === \"$\";\nconst hasSetupBinding = (state, key) => state !== EMPTY_OBJ && !state.__isScriptSetup && hasOwn(state, key);\nconst PublicInstanceProxyHandlers = {\n get({ _: instance }, key) {\n if (key === \"__v_skip\") {\n return true;\n }\n const { ctx, setupState, data, props, accessCache, type, appContext } = instance;\n if (!!(process.env.NODE_ENV !== \"production\") && key === \"__isVue\") {\n return true;\n }\n let normalizedProps;\n if (key[0] !== \"$\") {\n const n = accessCache[key];\n if (n !== void 0) {\n switch (n) {\n case 1 /* SETUP */:\n return setupState[key];\n case 2 /* DATA */:\n return data[key];\n case 4 /* CONTEXT */:\n return ctx[key];\n case 3 /* PROPS */:\n return props[key];\n }\n } else if (hasSetupBinding(setupState, key)) {\n accessCache[key] = 1 /* SETUP */;\n return setupState[key];\n } else if (data !== EMPTY_OBJ && hasOwn(data, key)) {\n accessCache[key] = 2 /* DATA */;\n return data[key];\n } else if (\n // only cache other properties when instance has declared (thus stable)\n // props\n (normalizedProps = instance.propsOptions[0]) && hasOwn(normalizedProps, key)\n ) {\n accessCache[key] = 3 /* PROPS */;\n return props[key];\n } else if (ctx !== EMPTY_OBJ && hasOwn(ctx, key)) {\n accessCache[key] = 4 /* CONTEXT */;\n return ctx[key];\n } else if (!__VUE_OPTIONS_API__ || shouldCacheAccess) {\n accessCache[key] = 0 /* OTHER */;\n }\n }\n const publicGetter = publicPropertiesMap[key];\n let cssModule, globalProperties;\n if (publicGetter) {\n if (key === \"$attrs\") {\n track(instance.attrs, \"get\", \"\");\n !!(process.env.NODE_ENV !== \"production\") && markAttrsAccessed();\n } else if (!!(process.env.NODE_ENV !== \"production\") && key === \"$slots\") {\n track(instance, \"get\", key);\n }\n return publicGetter(instance);\n } else if (\n // css module (injected by vue-loader)\n (cssModule = type.__cssModules) && (cssModule = cssModule[key])\n ) {\n return cssModule;\n } else if (ctx !== EMPTY_OBJ && hasOwn(ctx, key)) {\n accessCache[key] = 4 /* CONTEXT */;\n return ctx[key];\n } else if (\n // global properties\n globalProperties = appContext.config.globalProperties, hasOwn(globalProperties, key)\n ) {\n {\n return globalProperties[key];\n }\n } else if (!!(process.env.NODE_ENV !== \"production\") && currentRenderingInstance && (!isString(key) || // #1091 avoid internal isRef/isVNode checks on component instance leading\n // to infinite warning loop\n key.indexOf(\"__v\") !== 0)) {\n if (data !== EMPTY_OBJ && isReservedPrefix(key[0]) && hasOwn(data, key)) {\n warn$1(\n `Property ${JSON.stringify(\n key\n )} must be accessed via $data because it starts with a reserved character (\"$\" or \"_\") and is not proxied on the render context.`\n );\n } else if (instance === currentRenderingInstance) {\n warn$1(\n `Property ${JSON.stringify(key)} was accessed during render but is not defined on instance.`\n );\n }\n }\n },\n set({ _: instance }, key, value) {\n const { data, setupState, ctx } = instance;\n if (hasSetupBinding(setupState, key)) {\n setupState[key] = value;\n return true;\n } else if (!!(process.env.NODE_ENV !== \"production\") && setupState.__isScriptSetup && hasOwn(setupState, key)) {\n warn$1(`Cannot mutate \n\n\n","\n\n\n\n\n","\n\n\n","export type Validation = () => Promise | boolean;\n/***\n * Pass a Validator instance to mutliple components so you can validate the state of multiple input components at once.\n * This is usefull because some validation already happens on the fly in components, that way we can reuse that behaviour\n * in a final validation before submitting a form.\n * Components are responsible for their own error showing\n */\nexport class Validator {\n validations: Map = new Map();\n keyMap: Map> = new Map();\n\n addValidation(owner: any, validation: Validation, key?: string) {\n this.validations.set(owner, validation);\n if (key) {\n const set = this.keyMap.get(key);\n if (set) {\n set.add(owner);\n }\n else {\n this.keyMap.set(key, new Set([owner]));\n }\n }\n }\n\n removeValidation(owner: any, key?: string) {\n this.validations.delete(owner);\n\n if (key) {\n const set = this.keyMap.get(key);\n if (set) {\n set.delete(owner);\n if (set.size === 0) {\n this.keyMap.delete(key);\n }\n }\n }\n }\n\n /**\n * Validate all fields\n */\n async validate(): Promise {\n let valid = true;\n for (const [_, validation] of this.validations) {\n const result = await validation();\n if (!result) {\n valid = false;\n // we do not return yet, since validation method can have side effects in UI\n }\n }\n return valid;\n }\n\n async validateByKey(key: string): Promise {\n const validationKeys = this.keyMap.get(key);\n if (!validationKeys) {\n console.error(`Key ${key} not found.`);\n return false;\n }\n\n let isValid = true;\n\n for (const key of validationKeys) {\n const validation = this.validations.get(key);\n if (validation && !await validation()) {\n isValid = false;\n }\n }\n\n return isValid;\n }\n}\n","import { reactive } from \"vue\";\n\nimport { ErrorBox } from \"./ErrorBox\";\nimport { Validator } from \"./Validator\";\n\nexport function useErrors(options?: {validator?: Validator|null}) {\n return reactive({\n errorBox: null as ErrorBox | null,\n validator: options?.validator ?? new Validator()\n }) as {\n errorBox: ErrorBox | null,\n validator: Validator\n }\n}\n","import { onBeforeUnmount } from 'vue';\nimport { Validation, Validator } from './Validator';\n\nexport function useValidation(validator: Validator, validation: Validation, key?: string) {\n const owner = {};\n validator.addValidation(owner, validation, key);\n\n onBeforeUnmount(() => {\n validator.removeValidation(owner);\n });\n}\n","export class EmailStyler {\n static async format(html: string, subject: string): Promise<{ text: string; html: string }> {\n const imported = ((await import(/* webpackChunkName: \"email-css\" */ \"./email.url.scss?inline\")).default)\n\n // Force replacement value\n const primaryColor = \"{{primaryColor}}\";\n const primaryColorContrast = \"{{primaryColorContrast}}\";\n const scss = imported.replaceAll(\"#0053ff\", primaryColor) as string\n\n let styles = scss;\n const hrCSS = \"height: 2px;background: #e7e7e7; border-radius: 1px; padding: 0; margin: 20px 0; outline: none; border: 0;\";\n styles += \" hr {\"+hrCSS+\"}\";\n \n const buttonCSS = \"margin: 0; text-decoration: none; font-size: 16px; font-weight: bold; color: \"+primaryColorContrast+\"; padding: 0 27px; line-height: 42px; background: \"+primaryColor+\"; text-align: center; border-radius: 7px; touch-action: manipulation; display: inline-block; transition: 0.2s transform, 0.2s opacity;\";\n styles += \" .button.primary { \"+buttonCSS+\" } .button.primary:active { transform: scale(0.95, 0.95); } \";\n\n const inlineLinkCSS = \"margin: 0; text-decoration: underline; font-size: inherit; font-weight: inherit; color: inherit; touch-action: manipulation;\";\n styles += \" .inline-link, .inline-link:link, .inline-link:visited, .inline-link:active, .inline-link:hover { \"+inlineLinkCSS+\" } .inline-link:active { opacity: 0.5; } \";\n\n const descriptionCSS = \"color: #5e5e5e;\"\n styles += \" .description { \"+descriptionCSS+\" } \"\n\n // Transform HTML into text + do replacements\n const element = document.createElement(\"div.email-style-apply-here\")\n element.innerHTML = html\n\n const elements = element.querySelectorAll(\"span[data-type=\\\"smartVariable\\\"]\")\n for (const el of elements) {\n // eslint-disable-next-line @typescript-eslint/restrict-plus-operands\n el.parentElement!.replaceChild(document.createTextNode(\"{{\"+el.getAttribute(\"data-id\")+\"}}\"), el)\n }\n\n const blockSmartVariables = element.querySelectorAll(\"div[data-type=\\\"smartVariableBlock\\\"]\")\n for (const el of blockSmartVariables) {\n // eslint-disable-next-line @typescript-eslint/restrict-plus-operands\n (el as HTMLElement).innerText = \"{{\"+el.getAttribute(\"data-id\")+\"}}\"\n }\n\n const buttonElements = element.querySelectorAll(\"span.button\")\n for (const el of buttonElements) {\n // eslint-disable-next-line @typescript-eslint/restrict-plus-operands\n const button = document.createElement(\"a\");\n button.innerText = (el as HTMLElement).innerText;\n button.className = el.className;\n button.setAttribute(\"href\", el.getAttribute(\"href\") ?? \"\");\n button.setAttribute(\"target\", el.getAttribute(\"target\") ?? \"\");\n el.parentElement!.replaceChild(button, el)\n }\n\n const inlineButtons = element.querySelectorAll(\"span[data-type=\\\"smartButtonInline\\\"]\")\n for (const el of inlineButtons) {\n // eslint-disable-next-line @typescript-eslint/restrict-plus-operands\n const button = document.createElement(\"a\");\n button.innerHTML = (el as HTMLElement).innerHTML;\n button.className = 'inline-link';\n button.setAttribute(\"href\", el.getAttribute(\"href\") ?? \"\");\n button.setAttribute(\"target\", el.getAttribute(\"target\") ?? \"\");\n el.parentElement!.replaceChild(button, el)\n }\n\n // add force add padding and margin inline\n const blocks = element.querySelectorAll(\"h1,h2,h3,h4\")\n for (const el of blocks) {\n (el as any).setAttribute(\"style\", \"margin: 0; padding: 0;\");\n }\n\n const ps = element.querySelectorAll(\"p\")\n for (const el of ps) {\n (el as any).setAttribute(\"style\", \"margin: 0; padding: 0; line-height: 1.4;\");\n }\n\n // Force HR\n const hrElements = element.querySelectorAll(\"hr\")\n for (const el of hrElements) {\n (el as any).setAttribute(\"style\", hrCSS); // style.cssText doesn't work reliably (skips some properties)\n }\n\n // Force HR\n const inlineLinkElements = element.querySelectorAll(\".inline-link\")\n for (const el of inlineLinkElements) {\n (el as any).setAttribute(\"style\", inlineLinkCSS); // style.cssText doesn't work reliably (skips some properties)\n }\n\n // Replace all buttons with tables\n const buttons = element.querySelectorAll(\".button.primary\")\n for (const el of buttons) {\n (el as any).setAttribute(\"style\", buttonCSS); // style.cssText doesn't work reliably (skips some properties)\n\n // Old e-mail client fix for buttons\n el.insertAdjacentHTML(\"beforebegin\", `\n\n \n\n
\n \n \n \n \n
\n ${el.outerHTML}\n
\n
`);\n el.parentElement!.removeChild(el)\n \n }\n\n // Force button\n const buttonDescriptionElements = element.querySelectorAll(\".description\")\n for (const el of buttonDescriptionElements) {\n (el as any).setAttribute(\"style\", descriptionCSS); // style.cssText doesn't work reliably (skips some properties)\n }\n\n // add empty paragraph
's\n const emptyP = element.querySelectorAll(\"p:empty\")\n for (const el of emptyP) {\n el.appendChild(document.createElement(\"br\"))\n }\n\n const escapeSubject = document.createElement(\"div\")\n escapeSubject.innerText = subject;\n\n html = `\n\n\n\n\n\n\n${escapeSubject.innerHTML}\n\n\n\n\n${element.innerHTML}\n\n\n`;\n\n return {\n html,\n text: element.innerText\n }\n }\n}","import { isReactive, markRaw } from 'vue';\n\ntype Listener = (value: Value, type: E) => Promise;\n\n/**\n * Controls the fetching and decrypting of members\n */\nexport class EventBus {\n protected listeners: Map }[]> = markRaw(new Map());\n\n addListener(owner: any, type: T, listener: Listener) {\n if (isReactive(owner)) {\n console.warn('Adding a listener with a proxy object. This is not recommended and can cause bugs.');\n }\n\n const existing = this.listeners.get(owner);\n if (existing) {\n existing.push({ type, listener });\n }\n else {\n this.listeners.set(owner, [{ type, listener }]);\n }\n }\n\n removeListener(owner: any) {\n if (isReactive(owner)) {\n console.warn('Removing a listener with a proxy object. This is not recommended and can cause bugs.');\n }\n\n this.listeners.delete(owner);\n }\n\n async sendEvent(type: E, value: Value) {\n const values: Promise[] = [];\n for (const owner of this.listeners.values()) {\n for (const listener of owner) {\n if (listener.type == type) {\n values.push(listener.listener(value, type));\n }\n }\n }\n return await Promise.all(values);\n }\n}\n\nexport const GlobalEventBus = new EventBus();\n","import { SessionContext } from \"@stamhoofd/networking\";\nimport { inject, Ref, toRef } from \"vue\";\n\nexport function useContext(): Ref {\n const refOrReal = inject('$context', null) as SessionContext|null;\n return toRef(refOrReal) as Ref\n}\n","import { AutoEncoder, AutoEncoderPatchType, PartialWithoutMethods, patchContainsChanges, PatchType } from \"@simonbackx/simple-encoding\";\nimport { Version } from \"@stamhoofd/structures\";\nimport { computed, Ref, ref, unref } from \"vue\";\n\nexport function usePatch(obj: T|Ref): {\n createPatch: () => AutoEncoderPatchType,\n patched: Ref, \n patch: Ref>,\n addPatch: (newPatch: PartialWithoutMethods>) => void,\n hasChanges: Ref,\n reset: () => void\n} {\n const initialValue = unref(obj)\n if (!initialValue) {\n throw new Error('Expected a reference with an initial value at usePatch')\n }\n const patch = ref(\"id\" in initialValue ? initialValue.static.patch({id: initialValue.id}) : initialValue.static.patch({})) as Ref>;\n\n const createPatch = () => {\n const iv = unref(obj)\n return (\"id\" in iv ? iv.static.patch({id: iv.id}) : iv.static.patch({})) as AutoEncoderPatchType;\n }\n\n return {\n createPatch,\n patch,\n patched: computed(() => {\n return unref(obj).patch(patch.value)\n }),\n addPatch: (newPatch: PartialWithoutMethods>) => {\n patch.value = patch.value.patch(unref(obj).static.patch(newPatch))\n },\n hasChanges: computed(() => {\n return patchContainsChanges(patch.value as PatchType, unref(obj), { version: Version })\n }),\n reset: () => {\n patch.value = createPatch()\n }\n }\n}\n","import { AutoEncoder, NonScalarIdentifiable, PatchableArrayAutoEncoder, AutoEncoderPatchType, PatchableArray } from \"@simonbackx/simple-encoding\"\n\nexport function usePatchableArray>(patchArray: (array: PatchableArrayAutoEncoder) => void) {\n return {\n addPatch: (patch: AutoEncoderPatchType) => {\n if (!patch.id) {\n throw new Error('Expected a patch with an id at usePatchItemInArray.patchItem for ' + patch)\n }\n const arr = new PatchableArray() as PatchableArrayAutoEncoder\n arr.addPatch(patch)\n patchArray(arr)\n },\n\n addPut: (put: T, after?: string | number | null | undefined) => {\n const arr = new PatchableArray() as PatchableArrayAutoEncoder\n arr.addPut(put, after)\n patchArray(arr)\n },\n\n addDelete: (id: string | number) => {\n const arr = new PatchableArray() as PatchableArrayAutoEncoder\n arr.addDelete(id)\n patchArray(arr)\n }\n }\n}\n","import { AutoEncoder, NonScalarIdentifiable, PatchableArrayAutoEncoder, AutoEncoderPatchType, PatchableArray } from \"@simonbackx/simple-encoding\"\nimport { ref, Ref, computed, unref } from \"vue\"\n\nexport function usePatchArray>(obj: T[]|Ref): {\n patched: Ref, \n patch: Ref>,\n addArrayPatch: (newPatch: PatchableArrayAutoEncoder) => void,\n addPatch: (newPatch: AutoEncoderPatchType) => void,\n addPut: (p: T) => void,\n addDelete: (id: string) => void,\n hasChanges: Ref\n} {\n const patch = ref(new PatchableArray()) as Ref>\n\n return {\n patch,\n patched: computed(() => {\n return patch.value.applyTo(unref(obj)) as T[]\n }),\n addArrayPatch: (newPatch: PatchableArrayAutoEncoder) => {\n patch.value = patch.value.patch(newPatch)\n },\n addPatch: (newPatch: AutoEncoderPatchType) => {\n patch.value.addPatch(newPatch)\n },\n addPut: (p: T) => {\n patch.value.addPut(p)\n },\n addDelete: (id: string) => {\n patch.value.addDelete(id)\n },\n hasChanges: computed(() => {\n return patch.value.changes.length > 0\n })\n }\n}\n","import { AutoEncoder, NonScalarIdentifiable, PatchableArray, PatchableArrayAutoEncoder } from '@simonbackx/simple-encoding';\nimport { computed } from 'vue';\n\nexport function useDraggableArray>(getter: () => T[], addPatch: (newPatch: PatchableArrayAutoEncoder) => void) {\n return computed({\n get: getter,\n set: (records: T[]) => {\n // Create move patch\n const recordsPatch = new PatchableArray() as PatchableArrayAutoEncoder;\n const original = getter();\n\n for (const record of records.slice().reverse()) {\n if (!record) {\n console.warn('Received undefined value in draggable patch');\n continue;\n }\n\n // Check if records exists\n if (original.find(o => o.id === record.id)) {\n recordsPatch.addMove(record.id, null);\n }\n else {\n // This is a new one (happens when dragging between lists)\n recordsPatch.addPut(record, null);\n }\n }\n\n // Check deleted\n for (const r of original) {\n if (!records.find(rr => rr.id === r.id)) {\n recordsPatch.addDelete(r.id);\n }\n }\n\n addPatch(recordsPatch);\n },\n });\n}\n\nexport function useDraggableArrayIds>(getter: () => T[], addPatch: (newPatch: PatchableArray) => void) {\n return computed({\n get: getter,\n set: (records: T[]) => {\n // Create move patch\n const recordsPatch = new PatchableArray();\n const original = getter();\n\n for (const record of records.slice().reverse()) {\n if (!record) {\n console.warn('Received undefined value in draggable patch');\n continue;\n }\n\n // Check if records exists\n if (original.find(o => o.id === record.id)) {\n recordsPatch.addMove(record.id, null);\n }\n else {\n // This is a new one (happens when dragging between lists)\n recordsPatch.addPut(record.id, null);\n }\n }\n\n // Check deleted\n for (const r of original) {\n if (!records.find(rr => rr.id === r.id)) {\n recordsPatch.addDelete(r.id);\n }\n }\n\n addPatch(recordsPatch);\n },\n });\n}\n","import { AutoEncoder, AutoEncoderPatchType, PartialWithoutMethods } from '@simonbackx/simple-encoding';\nimport { Ref, computed } from 'vue';\n\nexport function useEmitPatch(props: any, emit: any, propName: string): {\n createPatch: () => AutoEncoderPatchType;\n patched: Ref;\n addPatch: (newPatch: PartialWithoutMethods>) => void;\n} {\n const createPatch = () => {\n return ('id' in props[propName] ? props[propName].static.patch({ id: props[propName].id }) : props[propName].static.patch({})) as AutoEncoderPatchType;\n };\n\n return {\n createPatch,\n patched: computed(() => props[propName]) as Ref,\n addPatch: (newPatch: PartialWithoutMethods>) => {\n emit('patch:' + propName, createPatch().patch(props[propName].static.patch(newPatch)));\n },\n } as any;\n}\n","import { useFocused } from \"@simonbackx/vue-app-navigation\";\nimport { unref, onActivated, onMounted, onBeforeUnmount, onDeactivated } from \"vue\";\n\nexport function useKeyUpDown(actions: {up: () => unknown|Promise, down: () => unknown|Promise}) {\n const isFocused = useFocused()\n const onKey = (event: KeyboardEvent) => {\n if (event.defaultPrevented || event.repeat) {\n return;\n }\n \n if (!unref(isFocused)) {\n return\n }\n \n const key = event.key || event.keyCode;\n \n if (key === \"ArrowLeft\" || key === \"ArrowUp\" || key === \"PageUp\") {\n event.preventDefault();\n void actions.up();\n } else if (key === \"ArrowRight\" || key === \"ArrowDown\" || key === \"PageDown\") {\n event.preventDefault();\n void actions.down();\n }\n }\n\n const remove = () => {\n document.removeEventListener(\"keydown\", onKey);\n }\n\n const add = () => {\n remove();\n document.addEventListener(\"keydown\", onKey);\n }\n\n onActivated(() => {\n add()\n });\n\n onMounted(() => {\n add()\n });\n\n onBeforeUnmount(() => {\n remove();\n })\n\n onDeactivated(() => {\n remove();\n })\n}\n","import { AutoEncoder, NonScalarIdentifiable, PatchableArray, PatchableArrayAutoEncoder } from \"@simonbackx/simple-encoding\";\nimport { computed, Ref, unref } from \"vue\";\n\nexport function usePatchMoveUpDown>(\n movingItemId: string|number,\n inList: Ref|T[],\n addPatch: (arrPatch: PatchableArrayAutoEncoder) => void,\n) {\n return {\n up: () => {\n const list = unref(inList)\n const index = list.findIndex(c => c.id === movingItemId)\n if (index == -1 || index == 0) {\n return;\n }\n \n const moveTo = index - 2 \n const p = new PatchableArray() as PatchableArrayAutoEncoder\n p.addMove(movingItemId, list[moveTo]?.id ?? null)\n addPatch(p)\n }, \n down: () => {\n const list = unref(inList)\n const index = list.findIndex(c => c.id === movingItemId)\n if (index == -1 || index >= list.length - 1) {\n return;\n }\n \n const moveTo = index + 1\n const p = new PatchableArray() as PatchableArrayAutoEncoder\n p.addMove(movingItemId, list[moveTo]?.id ?? null)\n addPatch(p)\n },\n canMoveUp: computed(() => {\n const list = unref(inList)\n const index = list.findIndex(c => c.id === movingItemId)\n return index > 0\n }),\n canMoveDown: computed(() => {\n const list = unref(inList)\n const index = list.findIndex(c => c.id === movingItemId)\n return index != -1 && index < list.length - 1\n })\n }\n}\n\nexport function usePatchMoveUpDownIds(\n movingItemId: T,\n inList: Ref|T[],\n addPatch: (arrPatch: PatchableArray) => void,\n) {\n return {\n up: () => {\n const list = unref(inList)\n const index = list.findIndex(c => c === movingItemId)\n if (index == -1 || index == 0) {\n return;\n }\n \n const moveTo = index - 2 \n const p = new PatchableArray() as PatchableArray\n p.addMove(movingItemId, list[moveTo] ?? null)\n addPatch(p)\n }, \n down: () => {\n const list = unref(inList)\n const index = list.findIndex(c => c === movingItemId)\n if (index == -1 || index >= list.length - 1) {\n return;\n }\n \n const moveTo = index + 1\n const p = new PatchableArray() as PatchableArray\n p.addMove(movingItemId, list[moveTo] ?? null)\n addPatch(p)\n }\n }\n}\n","import { usePlatformManager } from \"@stamhoofd/networking\";\nimport { Platform } from \"@stamhoofd/structures\";\nimport { Ref, computed } from \"vue\";\n\nexport function usePlatform(): Ref {\n const platformManager = usePlatformManager();\n return computed(() => platformManager.value.$platform)\n}\n","import { UserWithMembers } from \"@stamhoofd/structures\";\nimport { Ref, computed } from \"vue\";\nimport { useContext } from \"./useContext\";\n\nexport function useUser(): Ref {\n const context = useContext()\n return computed(() => context.value.user);\n}\n","import { Organization } from '@stamhoofd/structures';\nimport { Ref, computed } from 'vue';\nimport { useContext } from './useContext';\n\nexport function useOrganization(): Ref {\n const context = useContext();\n return computed(() => context.value.organization);\n}\n\nexport function useRequiredOrganization(): Ref {\n const context = useContext();\n return computed(() => context.value.organization!);\n}\n","import { getCurrentInstance } from \"vue\";\n\nexport function useIsIOS(): boolean {\n const app = getCurrentInstance()!;\n return app.appContext.config.globalProperties.$isIOS;\n}\n","import { getCurrentInstance } from \"vue\";\n\nexport function useIsMobile(): boolean {\n const app = getCurrentInstance()!;\n return app.appContext.config.globalProperties.$isMobile;\n}\n","import { Ref, ref } from \"vue\";\n\nconst width = ref(0);\nlet added = false;\nfunction add() {\n added = true;\n width.value = document.documentElement.clientWidth;\n\n window.addEventListener('resize', () => {\n width.value = document.documentElement.clientWidth;\n }, { passive: true })\n}\n\nexport function useDeviceWidth(): Ref {\n if (!added) {\n add();\n }\n return width;\n}\n","import { ContextPermissions } from \"@stamhoofd/networking\";\nimport { useContext } from \"./useContext\";\n\nexport function useAuth(): ContextPermissions {\n const context = useContext()\n return context.value.auth;\n}\n","import { I18nController } from \"@stamhoofd/frontend-i18n\";\nimport { Country } from \"@stamhoofd/structures\";\nimport { Ref, computed } from \"vue\";\n\nexport function useCountry(): Ref {\n return computed(() => I18nController.shared?.country ?? Country.Belgium)\n}\n","import { ContextPermissions } from \"@stamhoofd/networking\"\nimport { Organization, Platform, UserWithMembers } from \"@stamhoofd/structures\"\nimport { Ref } from \"vue\"\nimport { useOrganization } from \"./useOrganization\"\nimport { usePlatform } from \"./usePlatform\"\nimport { useUser } from \"./useUser\"\n\n/**\n * Allows you to use the ContextPermissions object in a specific context (editing user permissions mostly)\n * without inheriting permissions if the user is also a global admin (which gives them full access to everything, but breaks editing permissions)\n */\nexport function useUninheritedPermissions(overrides?: {patchedUser?: UserWithMembers|Ref, patchedOrganization?: Organization|Ref, patchedPlatform?: Platform|Ref}): ContextPermissions {\n const user = overrides?.patchedUser ?? useUser()\n const organization = overrides?.patchedOrganization ?? useOrganization()\n const platform = overrides?.patchedPlatform ?? usePlatform()\n\n return new ContextPermissions(user, organization, platform, {allowInheritingPermissions: false})\n}\n","import { onBeforeUnmount, ref } from \"vue\";\n\nexport function useInterval(method: (data: {stop: () => void}) => unknown, ms: number) {\n const data = {\n stop: () => {\n clearInterval(interval);\n }\n }\n\n const running = ref(false);\n const handler = async () => {\n if (running.value) {\n return;\n }\n running.value = true;\n try {\n await method(data)\n } catch (e) {\n console.error('Error in useInterval', e)\n }\n running.value = false;\n }\n \n const interval = setInterval(() => {\n handler().catch(console.error)\n }, ms);\n\n onBeforeUnmount(() => {\n clearInterval(interval);\n });\n}\n","import { onMounted, onUnmounted } from \"vue\";\nimport { GlobalEventBus } from \"../EventBus\";\n\nexport function useGlobalEventListener(eventName: string, handler: (value: Value) => Promise) {\n const owner = {};\n\n onMounted(() => {\n GlobalEventBus.addListener(owner, eventName, handler);\n });\n\n onUnmounted(() => {\n GlobalEventBus.removeListener(owner);\n });\n}\n","import { ComponentWithProperties, useShow } from \"@simonbackx/vue-app-navigation\";\nimport { computed, getCurrentInstance, Ref } from \"vue\";\nimport { useKeyUpDown } from \"./useKeyUpDown\";\n\nexport function useBackForward(name: Name, props: Props & {\n getPrevious: ((current: T) => T | null) | null,\n getNext: ((current: T) => T | null) | null\n} & Record, otherProps?: Ref>) {\n \n useKeyUpDown({\n up: goBack,\n down: goForward\n })\n const show = useShow()\n \n const hasPrevious = computed(() => {\n if (!props.getPrevious) {\n return false\n }\n return !!props.getPrevious(props[name]);\n });\n \n const hasNext = computed(() => {\n if (!props.getNext) {\n return false\n }\n return !!props.getNext(props[name]);\n });\n \n const instance = getCurrentInstance()\n async function seek(previous = true) {\n const object = previous ? props.getPrevious?.(props[name]) : props.getNext?.(props[name]);\n\n if (!object) {\n return;\n }\n const component = new ComponentWithProperties(instance!.type, {\n ...props,\n ...otherProps?.value,\n [name]: object,\n });\n \n await show({\n components: [component],\n replace: 1,\n reverse: previous,\n animated: false\n })\n }\n \n async function goBack() {\n await seek(true);\n }\n \n async function goForward() {\n await seek(false);\n }\n\n return {\n hasNext,\n hasPrevious,\n goBack,\n goForward\n }\n}\n","import { useTranslate } from '@stamhoofd/frontend-i18n';\nimport { SetupStepType } from '@stamhoofd/structures';\n\nexport function useSetupStepTranslations(): {\n getReviewTitle: (type: SetupStepType) => string;\n getReviewDescription: (type: SetupStepType) => string;\n getReviewCheckboxTitle: (type: SetupStepType) => string;\n getTodoTitle: (type: SetupStepType) => string;\n getTodoDescription: (type: SetupStepType) => string;\n} {\n const $t = useTranslate();\n\n const reviewTitleMap: Record = {\n [SetupStepType.Responsibilities]: $t('1d0d59b8-d7bf-4f04-846f-5025d7de7b4e'),\n [SetupStepType.Companies]: $t('31df7737-2a25-4a6c-9766-39acc3ccdbc8'),\n [SetupStepType.Groups]: $t('11ad8aa2-5aea-400b-8fe1-90e8495c1395'),\n [SetupStepType.Premises]: $t('19cc6e71-9cd7-41d8-84d0-2c8828bd92c4'),\n [SetupStepType.Emails]: $t('7e68086e-0dcc-445a-a639-984f1a7298ad'),\n [SetupStepType.Payment]: $t('db69887c-b23a-4779-b945-cbe5d02856a7'),\n [SetupStepType.Registrations]: $t('ca88e88f-d859-4445-a13a-4b73c359cd6f'),\n };\n\n const reviewDescriptionMap: Record = {\n [SetupStepType.Responsibilities]: $t('96c10e6b-3974-40d4-8844-70b0b2fa110e'),\n [SetupStepType.Companies]: $t('0712bc3b-15d5-4678-be41-8d168e5d52cf'),\n [SetupStepType.Groups]: $t('c965f4a7-4dc3-4201-961e-65f1a9eb7f89'),\n [SetupStepType.Premises]: $t('03ffd28c-99d4-4bae-8494-5def382d826e'),\n [SetupStepType.Emails]: $t('9eb28669-42a5-4211-b72f-3335c0d4b329'),\n [SetupStepType.Payment]: $t('70894bb8-da5a-4f1a-929d-08f4479c4de3'),\n [SetupStepType.Registrations]: $t('d14ea349-afa8-49f3-bdb0-aac23a41887f'),\n };\n\n const reviewCheckboxTitleMap: Record = {\n [SetupStepType.Responsibilities]: $t('1ee738ae-a91d-474e-a495-996bf431126a'),\n [SetupStepType.Companies]: $t('f5404f0c-96f7-4f6a-834d-7616bfbedaf3'),\n [SetupStepType.Groups]: $t('3124147c-09cf-4a87-8ae8-9545b90c1ba4'),\n [SetupStepType.Premises]: $t('0d7093d6-d3c0-412e-af8a-d44a5d2394d9'),\n [SetupStepType.Emails]: $t('c136101a-cd7e-4b04-9c81-e17f03a511d1'),\n [SetupStepType.Payment]: $t('b831d108-6aa9-4e6e-97ce-9f50a1cab9e1'),\n [SetupStepType.Registrations]: $t('ca88e88f-d859-4445-a13a-4b73c359cd6f'),\n };\n\n const todoTitleMap: Record = {\n [SetupStepType.Responsibilities]: $t('268546f2-5dd0-492c-8680-e93b5d40807d'),\n [SetupStepType.Companies]: $t('5a8403bb-90f8-4722-8cad-b275ffa781d9'),\n [SetupStepType.Groups]: '',\n [SetupStepType.Premises]: $t('5c37d309-63da-44af-8eec-fb593b8bad31'),\n [SetupStepType.Emails]: $t('da415fb3-06f2-45eb-9230-ef56bcd52970'),\n [SetupStepType.Payment]: $t('8587ff64-b9b5-4e57-84b1-4afd342ffec3'),\n [SetupStepType.Registrations]: $t('ca88e88f-d859-4445-a13a-4b73c359cd6f'),\n };\n\n const todoDescriptionMap: Record = {\n [SetupStepType.Responsibilities]: $t('f3236c83-b7ba-453f-981a-3e06925c9b7a'),\n [SetupStepType.Companies]: $t('457fc4b2-9145-45c8-aba3-1fd629317330'),\n [SetupStepType.Groups]: '',\n [SetupStepType.Premises]: $t('05afcd20-5dda-4e01-88a7-e58d46487d30'),\n [SetupStepType.Emails]: $t('9ef3cbb3-93bb-4f77-93af-3752ff869894'),\n [SetupStepType.Payment]: $t('953003c6-6653-4cef-a2ca-09723658b828'),\n [SetupStepType.Registrations]: $t('d14ea349-afa8-49f3-bdb0-aac23a41887f'),\n };\n\n const getReviewTitle = (type: SetupStepType): string => {\n return reviewTitleMap[type];\n };\n\n const getReviewDescription = (type: SetupStepType): string => {\n return reviewDescriptionMap[type];\n };\n\n const getReviewCheckboxTitle = (type: SetupStepType): string => {\n return reviewCheckboxTitleMap[type];\n };\n\n const getTodoTitle = (type: SetupStepType): string => {\n return todoTitleMap[type];\n };\n\n const getTodoDescription = (type: SetupStepType): string => {\n return todoDescriptionMap[type];\n };\n\n return {\n getReviewTitle,\n getReviewDescription,\n getReviewCheckboxTitle,\n getTodoTitle,\n getTodoDescription,\n };\n}\n","import { AutoEncoder, NonScalarIdentifiable, AutoEncoderPatchType, PatchableArrayAutoEncoder } from '@simonbackx/simple-encoding';\nimport { Ref, computed } from 'vue';\nimport { usePatchableArray } from './usePatchableArray';\n\nexport function useEmitPatchArray>(props: Props, emit: ((d: `patch:${PropName}`, value: PatchableArrayAutoEncoder) => unknown), propName: PropName): {\n addArrayPatch: (newPatch: PatchableArrayAutoEncoder) => void;\n addPatch: (newPatch: AutoEncoderPatchType) => void;\n addPut: (p: T) => void;\n addDelete: (id: string) => void;\n patched: Ref;\n} {\n const addArrayPatch = (newPatch: PatchableArrayAutoEncoder) => {\n emit(('patch:' + propName) as `patch:${PropName}`, newPatch);\n };\n\n const { addPatch, addPut, addDelete } = usePatchableArray(addArrayPatch);\n\n return {\n addArrayPatch,\n addPatch,\n addPut,\n addDelete,\n patched: computed(() => props[propName]) as Ref,\n };\n}\n","import { assertSort, CountFilteredRequest, CountResponse, LimitedFilteredRequest, MembersBlob, PaginatedResponseDecoder, PlatformFamily, PlatformMember, SortItemDirection, SortList } from '@stamhoofd/structures';\nimport { ObjectFetcher } from '../tables';\nimport { Decoder } from '@simonbackx/simple-encoding';\nimport { useContext, usePlatform } from '../hooks';\n\ntype ObjectType = PlatformMember;\n\nfunction extendSort(list: SortList): SortList {\n // Map 'age' to 'birthDay' + reverse direction\n list = list.flatMap((l) => {\n if (l.key === 'age') {\n return [\n { key: 'birthDay', order: l.order === SortItemDirection.ASC ? SortItemDirection.DESC : SortItemDirection.ASC },\n ];\n }\n\n if (l.key === 'name') {\n return [\n { key: 'firstName', order: l.order },\n { key: 'lastName', order: l.order },\n ];\n }\n\n return [l];\n });\n\n return assertSort(list, [{ key: 'id' }]);\n}\n\nexport function useMembersObjectFetcher(overrides?: Partial>): ObjectFetcher {\n const context = useContext();\n const platform = usePlatform();\n\n return {\n extendSort,\n async fetch(data: LimitedFilteredRequest): Promise<{ results: ObjectType[]; next?: LimitedFilteredRequest }> {\n console.log('Members.fetch', data);\n const response = await context.value.authenticatedServer.request({\n method: 'GET',\n path: '/members',\n decoder: new PaginatedResponseDecoder(MembersBlob as Decoder, LimitedFilteredRequest as Decoder),\n query: data,\n shouldRetry: false,\n owner: this,\n timeout: 30 * 1000,\n });\n\n console.log('[Done] Members.fetch', data, response.data);\n\n const blob = response.data.results;\n\n return {\n results: PlatformFamily.createSingles(blob, {\n contextOrganization: context.value.organization,\n platform: platform.value,\n }),\n next: response.data.next,\n };\n },\n\n async fetchCount(data: CountFilteredRequest): Promise {\n console.log('Members.fetchCount', data);\n\n const response = await context.value.authenticatedServer.request({\n method: 'GET',\n path: '/members/count',\n decoder: CountResponse as Decoder,\n query: data,\n shouldRetry: false,\n owner: this,\n timeout: 30 * 1000,\n });\n\n console.log('[Done] Members.fetchCount', data, response.data.count);\n return response.data.count;\n },\n\n ...overrides,\n };\n}\n","export class SelectableColumn {\n enabled: boolean = true\n id: string;\n\n name: string;\n description: string = ''\n category?: string|null = null\n\n constructor(data: {\n enabled?: boolean;\n id: string;\n name: string;\n description?: string;\n category?: string|null;\n }) {\n Object.assign(this, data);\n }\n}\n","import { SelectableColumn } from \"./SelectableColumn\";\n\nexport class SelectableSheet {\n id: string;\n\n name: string;\n description: string;\n columns: SelectableColumn[];\n\n constructor(data: {\n id: string;\n name: string;\n description?: string;\n columns: SelectableColumn[];\n }) {\n Object.assign(this, data);\n }\n\n disableAll() {\n for (const column of this.columns) {\n column.enabled = false;\n }\n }\n\n get enabled() {\n return this.columns.some(c => c.enabled);\n }\n\n get enabledCount() {\n return this.columns.filter(c => c.enabled).length;\n }\n}\n\n","import { ExcelWorkbookFilter, ExcelSheetFilter } from \"@stamhoofd/structures\";\nimport { SelectableSheet } from \"./SelectableSheet\";\n\nexport class SelectableWorkbook {\n sheets: SelectableSheet[] = [];\n\n constructor(data: {sheets: SelectableSheet[]}) {\n this.sheets = data.sheets;\n }\n\n disableAll() {\n for (const sheet of this.sheets) {\n sheet.disableAll();\n }\n }\n\n from(filter: ExcelWorkbookFilter) {\n this.disableAll();\n\n for (const s of filter.sheets) {\n const sheet = this.sheets.find(sheet => sheet.id == s.id);\n if (!sheet) {\n continue;\n }\n\n for (const id of s.columns) {\n const column = sheet.columns.find(c => c.id == id);\n if (column) {\n column.enabled = true;\n }\n }\n }\n }\n\n getFilter(): ExcelWorkbookFilter {\n return ExcelWorkbookFilter.create({\n sheets: this.sheets.flatMap(sheet => {\n if (!sheet.enabled) {\n return [];\n }\n\n return [\n ExcelSheetFilter.create({\n id: sheet.id,\n columns: sheet.columns.filter(c => c.enabled).map(c => c.id)\n })\n ]\n })\n })\n }\n}\n","\n\n\n","// ::- Persistent data structure representing an ordered mapping from\n// strings to values, with some convenient update methods.\nfunction OrderedMap(content) {\n this.content = content;\n}\n\nOrderedMap.prototype = {\n constructor: OrderedMap,\n\n find: function(key) {\n for (var i = 0; i < this.content.length; i += 2)\n if (this.content[i] === key) return i\n return -1\n },\n\n // :: (string) → ?any\n // Retrieve the value stored under `key`, or return undefined when\n // no such key exists.\n get: function(key) {\n var found = this.find(key);\n return found == -1 ? undefined : this.content[found + 1]\n },\n\n // :: (string, any, ?string) → OrderedMap\n // Create a new map by replacing the value of `key` with a new\n // value, or adding a binding to the end of the map. If `newKey` is\n // given, the key of the binding will be replaced with that key.\n update: function(key, value, newKey) {\n var self = newKey && newKey != key ? this.remove(newKey) : this;\n var found = self.find(key), content = self.content.slice();\n if (found == -1) {\n content.push(newKey || key, value);\n } else {\n content[found + 1] = value;\n if (newKey) content[found] = newKey;\n }\n return new OrderedMap(content)\n },\n\n // :: (string) → OrderedMap\n // Return a map with the given key removed, if it existed.\n remove: function(key) {\n var found = this.find(key);\n if (found == -1) return this\n var content = this.content.slice();\n content.splice(found, 2);\n return new OrderedMap(content)\n },\n\n // :: (string, any) → OrderedMap\n // Add a new key to the start of the map.\n addToStart: function(key, value) {\n return new OrderedMap([key, value].concat(this.remove(key).content))\n },\n\n // :: (string, any) → OrderedMap\n // Add a new key to the end of the map.\n addToEnd: function(key, value) {\n var content = this.remove(key).content.slice();\n content.push(key, value);\n return new OrderedMap(content)\n },\n\n // :: (string, string, any) → OrderedMap\n // Add a key after the given key. If `place` is not found, the new\n // key is added to the end.\n addBefore: function(place, key, value) {\n var without = this.remove(key), content = without.content.slice();\n var found = without.find(place);\n content.splice(found == -1 ? content.length : found, 0, key, value);\n return new OrderedMap(content)\n },\n\n // :: ((key: string, value: any))\n // Call the given function for each key/value pair in the map, in\n // order.\n forEach: function(f) {\n for (var i = 0; i < this.content.length; i += 2)\n f(this.content[i], this.content[i + 1]);\n },\n\n // :: (union) → OrderedMap\n // Create a new map by prepending the keys in this map that don't\n // appear in `map` before the keys in `map`.\n prepend: function(map) {\n map = OrderedMap.from(map);\n if (!map.size) return this\n return new OrderedMap(map.content.concat(this.subtract(map).content))\n },\n\n // :: (union) → OrderedMap\n // Create a new map by appending the keys in this map that don't\n // appear in `map` after the keys in `map`.\n append: function(map) {\n map = OrderedMap.from(map);\n if (!map.size) return this\n return new OrderedMap(this.subtract(map).content.concat(map.content))\n },\n\n // :: (union) → OrderedMap\n // Create a map containing all the keys in this map that don't\n // appear in `map`.\n subtract: function(map) {\n var result = this;\n map = OrderedMap.from(map);\n for (var i = 0; i < map.content.length; i += 2)\n result = result.remove(map.content[i]);\n return result\n },\n\n // :: () → Object\n // Turn ordered map into a plain object.\n toObject: function() {\n var result = {};\n this.forEach(function(key, value) { result[key] = value; });\n return result\n },\n\n // :: number\n // The amount of keys in this map.\n get size() {\n return this.content.length >> 1\n }\n};\n\n// :: (?union) → OrderedMap\n// Return a map with the given content. If null, create an empty\n// map. If given an ordered map, return that map itself. If given an\n// object, create a map from the object's properties.\nOrderedMap.from = function(value) {\n if (value instanceof OrderedMap) return value\n var content = [];\n if (value) for (var prop in value) content.push(prop, value[prop]);\n return new OrderedMap(content)\n};\n\nexport default OrderedMap;\n","import OrderedMap from 'orderedmap';\n\nfunction findDiffStart(a, b, pos) {\n for (let i = 0;; i++) {\n if (i == a.childCount || i == b.childCount)\n return a.childCount == b.childCount ? null : pos;\n let childA = a.child(i), childB = b.child(i);\n if (childA == childB) {\n pos += childA.nodeSize;\n continue;\n }\n if (!childA.sameMarkup(childB))\n return pos;\n if (childA.isText && childA.text != childB.text) {\n for (let j = 0; childA.text[j] == childB.text[j]; j++)\n pos++;\n return pos;\n }\n if (childA.content.size || childB.content.size) {\n let inner = findDiffStart(childA.content, childB.content, pos + 1);\n if (inner != null)\n return inner;\n }\n pos += childA.nodeSize;\n }\n}\nfunction findDiffEnd(a, b, posA, posB) {\n for (let iA = a.childCount, iB = b.childCount;;) {\n if (iA == 0 || iB == 0)\n return iA == iB ? null : { a: posA, b: posB };\n let childA = a.child(--iA), childB = b.child(--iB), size = childA.nodeSize;\n if (childA == childB) {\n posA -= size;\n posB -= size;\n continue;\n }\n if (!childA.sameMarkup(childB))\n return { a: posA, b: posB };\n if (childA.isText && childA.text != childB.text) {\n let same = 0, minSize = Math.min(childA.text.length, childB.text.length);\n while (same < minSize && childA.text[childA.text.length - same - 1] == childB.text[childB.text.length - same - 1]) {\n same++;\n posA--;\n posB--;\n }\n return { a: posA, b: posB };\n }\n if (childA.content.size || childB.content.size) {\n let inner = findDiffEnd(childA.content, childB.content, posA - 1, posB - 1);\n if (inner)\n return inner;\n }\n posA -= size;\n posB -= size;\n }\n}\n\n/**\nA fragment represents a node's collection of child nodes.\n\nLike nodes, fragments are persistent data structures, and you\nshould not mutate them or their content. Rather, you create new\ninstances whenever needed. The API tries to make this easy.\n*/\nclass Fragment {\n /**\n @internal\n */\n constructor(\n /**\n @internal\n */\n content, size) {\n this.content = content;\n this.size = size || 0;\n if (size == null)\n for (let i = 0; i < content.length; i++)\n this.size += content[i].nodeSize;\n }\n /**\n Invoke a callback for all descendant nodes between the given two\n positions (relative to start of this fragment). Doesn't descend\n into a node when the callback returns `false`.\n */\n nodesBetween(from, to, f, nodeStart = 0, parent) {\n for (let i = 0, pos = 0; pos < to; i++) {\n let child = this.content[i], end = pos + child.nodeSize;\n if (end > from && f(child, nodeStart + pos, parent || null, i) !== false && child.content.size) {\n let start = pos + 1;\n child.nodesBetween(Math.max(0, from - start), Math.min(child.content.size, to - start), f, nodeStart + start);\n }\n pos = end;\n }\n }\n /**\n Call the given callback for every descendant node. `pos` will be\n relative to the start of the fragment. The callback may return\n `false` to prevent traversal of a given node's children.\n */\n descendants(f) {\n this.nodesBetween(0, this.size, f);\n }\n /**\n Extract the text between `from` and `to`. See the same method on\n [`Node`](https://prosemirror.net/docs/ref/#model.Node.textBetween).\n */\n textBetween(from, to, blockSeparator, leafText) {\n let text = \"\", first = true;\n this.nodesBetween(from, to, (node, pos) => {\n let nodeText = node.isText ? node.text.slice(Math.max(from, pos) - pos, to - pos)\n : !node.isLeaf ? \"\"\n : leafText ? (typeof leafText === \"function\" ? leafText(node) : leafText)\n : node.type.spec.leafText ? node.type.spec.leafText(node)\n : \"\";\n if (node.isBlock && (node.isLeaf && nodeText || node.isTextblock) && blockSeparator) {\n if (first)\n first = false;\n else\n text += blockSeparator;\n }\n text += nodeText;\n }, 0);\n return text;\n }\n /**\n Create a new fragment containing the combined content of this\n fragment and the other.\n */\n append(other) {\n if (!other.size)\n return this;\n if (!this.size)\n return other;\n let last = this.lastChild, first = other.firstChild, content = this.content.slice(), i = 0;\n if (last.isText && last.sameMarkup(first)) {\n content[content.length - 1] = last.withText(last.text + first.text);\n i = 1;\n }\n for (; i < other.content.length; i++)\n content.push(other.content[i]);\n return new Fragment(content, this.size + other.size);\n }\n /**\n Cut out the sub-fragment between the two given positions.\n */\n cut(from, to = this.size) {\n if (from == 0 && to == this.size)\n return this;\n let result = [], size = 0;\n if (to > from)\n for (let i = 0, pos = 0; pos < to; i++) {\n let child = this.content[i], end = pos + child.nodeSize;\n if (end > from) {\n if (pos < from || end > to) {\n if (child.isText)\n child = child.cut(Math.max(0, from - pos), Math.min(child.text.length, to - pos));\n else\n child = child.cut(Math.max(0, from - pos - 1), Math.min(child.content.size, to - pos - 1));\n }\n result.push(child);\n size += child.nodeSize;\n }\n pos = end;\n }\n return new Fragment(result, size);\n }\n /**\n @internal\n */\n cutByIndex(from, to) {\n if (from == to)\n return Fragment.empty;\n if (from == 0 && to == this.content.length)\n return this;\n return new Fragment(this.content.slice(from, to));\n }\n /**\n Create a new fragment in which the node at the given index is\n replaced by the given node.\n */\n replaceChild(index, node) {\n let current = this.content[index];\n if (current == node)\n return this;\n let copy = this.content.slice();\n let size = this.size + node.nodeSize - current.nodeSize;\n copy[index] = node;\n return new Fragment(copy, size);\n }\n /**\n Create a new fragment by prepending the given node to this\n fragment.\n */\n addToStart(node) {\n return new Fragment([node].concat(this.content), this.size + node.nodeSize);\n }\n /**\n Create a new fragment by appending the given node to this\n fragment.\n */\n addToEnd(node) {\n return new Fragment(this.content.concat(node), this.size + node.nodeSize);\n }\n /**\n Compare this fragment to another one.\n */\n eq(other) {\n if (this.content.length != other.content.length)\n return false;\n for (let i = 0; i < this.content.length; i++)\n if (!this.content[i].eq(other.content[i]))\n return false;\n return true;\n }\n /**\n The first child of the fragment, or `null` if it is empty.\n */\n get firstChild() { return this.content.length ? this.content[0] : null; }\n /**\n The last child of the fragment, or `null` if it is empty.\n */\n get lastChild() { return this.content.length ? this.content[this.content.length - 1] : null; }\n /**\n The number of child nodes in this fragment.\n */\n get childCount() { return this.content.length; }\n /**\n Get the child node at the given index. Raise an error when the\n index is out of range.\n */\n child(index) {\n let found = this.content[index];\n if (!found)\n throw new RangeError(\"Index \" + index + \" out of range for \" + this);\n return found;\n }\n /**\n Get the child node at the given index, if it exists.\n */\n maybeChild(index) {\n return this.content[index] || null;\n }\n /**\n Call `f` for every child node, passing the node, its offset\n into this parent node, and its index.\n */\n forEach(f) {\n for (let i = 0, p = 0; i < this.content.length; i++) {\n let child = this.content[i];\n f(child, p, i);\n p += child.nodeSize;\n }\n }\n /**\n Find the first position at which this fragment and another\n fragment differ, or `null` if they are the same.\n */\n findDiffStart(other, pos = 0) {\n return findDiffStart(this, other, pos);\n }\n /**\n Find the first position, searching from the end, at which this\n fragment and the given fragment differ, or `null` if they are\n the same. Since this position will not be the same in both\n nodes, an object with two separate positions is returned.\n */\n findDiffEnd(other, pos = this.size, otherPos = other.size) {\n return findDiffEnd(this, other, pos, otherPos);\n }\n /**\n Find the index and inner offset corresponding to a given relative\n position in this fragment. The result object will be reused\n (overwritten) the next time the function is called. @internal\n */\n findIndex(pos, round = -1) {\n if (pos == 0)\n return retIndex(0, pos);\n if (pos == this.size)\n return retIndex(this.content.length, pos);\n if (pos > this.size || pos < 0)\n throw new RangeError(`Position ${pos} outside of fragment (${this})`);\n for (let i = 0, curPos = 0;; i++) {\n let cur = this.child(i), end = curPos + cur.nodeSize;\n if (end >= pos) {\n if (end == pos || round > 0)\n return retIndex(i + 1, end);\n return retIndex(i, curPos);\n }\n curPos = end;\n }\n }\n /**\n Return a debugging string that describes this fragment.\n */\n toString() { return \"<\" + this.toStringInner() + \">\"; }\n /**\n @internal\n */\n toStringInner() { return this.content.join(\", \"); }\n /**\n Create a JSON-serializeable representation of this fragment.\n */\n toJSON() {\n return this.content.length ? this.content.map(n => n.toJSON()) : null;\n }\n /**\n Deserialize a fragment from its JSON representation.\n */\n static fromJSON(schema, value) {\n if (!value)\n return Fragment.empty;\n if (!Array.isArray(value))\n throw new RangeError(\"Invalid input for Fragment.fromJSON\");\n return new Fragment(value.map(schema.nodeFromJSON));\n }\n /**\n Build a fragment from an array of nodes. Ensures that adjacent\n text nodes with the same marks are joined together.\n */\n static fromArray(array) {\n if (!array.length)\n return Fragment.empty;\n let joined, size = 0;\n for (let i = 0; i < array.length; i++) {\n let node = array[i];\n size += node.nodeSize;\n if (i && node.isText && array[i - 1].sameMarkup(node)) {\n if (!joined)\n joined = array.slice(0, i);\n joined[joined.length - 1] = node\n .withText(joined[joined.length - 1].text + node.text);\n }\n else if (joined) {\n joined.push(node);\n }\n }\n return new Fragment(joined || array, size);\n }\n /**\n Create a fragment from something that can be interpreted as a\n set of nodes. For `null`, it returns the empty fragment. For a\n fragment, the fragment itself. For a node or array of nodes, a\n fragment containing those nodes.\n */\n static from(nodes) {\n if (!nodes)\n return Fragment.empty;\n if (nodes instanceof Fragment)\n return nodes;\n if (Array.isArray(nodes))\n return this.fromArray(nodes);\n if (nodes.attrs)\n return new Fragment([nodes], nodes.nodeSize);\n throw new RangeError(\"Can not convert \" + nodes + \" to a Fragment\" +\n (nodes.nodesBetween ? \" (looks like multiple versions of prosemirror-model were loaded)\" : \"\"));\n }\n}\n/**\nAn empty fragment. Intended to be reused whenever a node doesn't\ncontain anything (rather than allocating a new empty fragment for\neach leaf node).\n*/\nFragment.empty = new Fragment([], 0);\nconst found = { index: 0, offset: 0 };\nfunction retIndex(index, offset) {\n found.index = index;\n found.offset = offset;\n return found;\n}\n\nfunction compareDeep(a, b) {\n if (a === b)\n return true;\n if (!(a && typeof a == \"object\") ||\n !(b && typeof b == \"object\"))\n return false;\n let array = Array.isArray(a);\n if (Array.isArray(b) != array)\n return false;\n if (array) {\n if (a.length != b.length)\n return false;\n for (let i = 0; i < a.length; i++)\n if (!compareDeep(a[i], b[i]))\n return false;\n }\n else {\n for (let p in a)\n if (!(p in b) || !compareDeep(a[p], b[p]))\n return false;\n for (let p in b)\n if (!(p in a))\n return false;\n }\n return true;\n}\n\n/**\nA mark is a piece of information that can be attached to a node,\nsuch as it being emphasized, in code font, or a link. It has a\ntype and optionally a set of attributes that provide further\ninformation (such as the target of the link). Marks are created\nthrough a `Schema`, which controls which types exist and which\nattributes they have.\n*/\nclass Mark {\n /**\n @internal\n */\n constructor(\n /**\n The type of this mark.\n */\n type, \n /**\n The attributes associated with this mark.\n */\n attrs) {\n this.type = type;\n this.attrs = attrs;\n }\n /**\n Given a set of marks, create a new set which contains this one as\n well, in the right position. If this mark is already in the set,\n the set itself is returned. If any marks that are set to be\n [exclusive](https://prosemirror.net/docs/ref/#model.MarkSpec.excludes) with this mark are present,\n those are replaced by this one.\n */\n addToSet(set) {\n let copy, placed = false;\n for (let i = 0; i < set.length; i++) {\n let other = set[i];\n if (this.eq(other))\n return set;\n if (this.type.excludes(other.type)) {\n if (!copy)\n copy = set.slice(0, i);\n }\n else if (other.type.excludes(this.type)) {\n return set;\n }\n else {\n if (!placed && other.type.rank > this.type.rank) {\n if (!copy)\n copy = set.slice(0, i);\n copy.push(this);\n placed = true;\n }\n if (copy)\n copy.push(other);\n }\n }\n if (!copy)\n copy = set.slice();\n if (!placed)\n copy.push(this);\n return copy;\n }\n /**\n Remove this mark from the given set, returning a new set. If this\n mark is not in the set, the set itself is returned.\n */\n removeFromSet(set) {\n for (let i = 0; i < set.length; i++)\n if (this.eq(set[i]))\n return set.slice(0, i).concat(set.slice(i + 1));\n return set;\n }\n /**\n Test whether this mark is in the given set of marks.\n */\n isInSet(set) {\n for (let i = 0; i < set.length; i++)\n if (this.eq(set[i]))\n return true;\n return false;\n }\n /**\n Test whether this mark has the same type and attributes as\n another mark.\n */\n eq(other) {\n return this == other ||\n (this.type == other.type && compareDeep(this.attrs, other.attrs));\n }\n /**\n Convert this mark to a JSON-serializeable representation.\n */\n toJSON() {\n let obj = { type: this.type.name };\n for (let _ in this.attrs) {\n obj.attrs = this.attrs;\n break;\n }\n return obj;\n }\n /**\n Deserialize a mark from JSON.\n */\n static fromJSON(schema, json) {\n if (!json)\n throw new RangeError(\"Invalid input for Mark.fromJSON\");\n let type = schema.marks[json.type];\n if (!type)\n throw new RangeError(`There is no mark type ${json.type} in this schema`);\n let mark = type.create(json.attrs);\n type.checkAttrs(mark.attrs);\n return mark;\n }\n /**\n Test whether two sets of marks are identical.\n */\n static sameSet(a, b) {\n if (a == b)\n return true;\n if (a.length != b.length)\n return false;\n for (let i = 0; i < a.length; i++)\n if (!a[i].eq(b[i]))\n return false;\n return true;\n }\n /**\n Create a properly sorted mark set from null, a single mark, or an\n unsorted array of marks.\n */\n static setFrom(marks) {\n if (!marks || Array.isArray(marks) && marks.length == 0)\n return Mark.none;\n if (marks instanceof Mark)\n return [marks];\n let copy = marks.slice();\n copy.sort((a, b) => a.type.rank - b.type.rank);\n return copy;\n }\n}\n/**\nThe empty set of marks.\n*/\nMark.none = [];\n\n/**\nError type raised by [`Node.replace`](https://prosemirror.net/docs/ref/#model.Node.replace) when\ngiven an invalid replacement.\n*/\nclass ReplaceError extends Error {\n}\n/*\nReplaceError = function(this: any, message: string) {\n let err = Error.call(this, message)\n ;(err as any).__proto__ = ReplaceError.prototype\n return err\n} as any\n\nReplaceError.prototype = Object.create(Error.prototype)\nReplaceError.prototype.constructor = ReplaceError\nReplaceError.prototype.name = \"ReplaceError\"\n*/\n/**\nA slice represents a piece cut out of a larger document. It\nstores not only a fragment, but also the depth up to which nodes on\nboth side are ‘open’ (cut through).\n*/\nclass Slice {\n /**\n Create a slice. When specifying a non-zero open depth, you must\n make sure that there are nodes of at least that depth at the\n appropriate side of the fragment—i.e. if the fragment is an\n empty paragraph node, `openStart` and `openEnd` can't be greater\n than 1.\n \n It is not necessary for the content of open nodes to conform to\n the schema's content constraints, though it should be a valid\n start/end/middle for such a node, depending on which sides are\n open.\n */\n constructor(\n /**\n The slice's content.\n */\n content, \n /**\n The open depth at the start of the fragment.\n */\n openStart, \n /**\n The open depth at the end.\n */\n openEnd) {\n this.content = content;\n this.openStart = openStart;\n this.openEnd = openEnd;\n }\n /**\n The size this slice would add when inserted into a document.\n */\n get size() {\n return this.content.size - this.openStart - this.openEnd;\n }\n /**\n @internal\n */\n insertAt(pos, fragment) {\n let content = insertInto(this.content, pos + this.openStart, fragment);\n return content && new Slice(content, this.openStart, this.openEnd);\n }\n /**\n @internal\n */\n removeBetween(from, to) {\n return new Slice(removeRange(this.content, from + this.openStart, to + this.openStart), this.openStart, this.openEnd);\n }\n /**\n Tests whether this slice is equal to another slice.\n */\n eq(other) {\n return this.content.eq(other.content) && this.openStart == other.openStart && this.openEnd == other.openEnd;\n }\n /**\n @internal\n */\n toString() {\n return this.content + \"(\" + this.openStart + \",\" + this.openEnd + \")\";\n }\n /**\n Convert a slice to a JSON-serializable representation.\n */\n toJSON() {\n if (!this.content.size)\n return null;\n let json = { content: this.content.toJSON() };\n if (this.openStart > 0)\n json.openStart = this.openStart;\n if (this.openEnd > 0)\n json.openEnd = this.openEnd;\n return json;\n }\n /**\n Deserialize a slice from its JSON representation.\n */\n static fromJSON(schema, json) {\n if (!json)\n return Slice.empty;\n let openStart = json.openStart || 0, openEnd = json.openEnd || 0;\n if (typeof openStart != \"number\" || typeof openEnd != \"number\")\n throw new RangeError(\"Invalid input for Slice.fromJSON\");\n return new Slice(Fragment.fromJSON(schema, json.content), openStart, openEnd);\n }\n /**\n Create a slice from a fragment by taking the maximum possible\n open value on both side of the fragment.\n */\n static maxOpen(fragment, openIsolating = true) {\n let openStart = 0, openEnd = 0;\n for (let n = fragment.firstChild; n && !n.isLeaf && (openIsolating || !n.type.spec.isolating); n = n.firstChild)\n openStart++;\n for (let n = fragment.lastChild; n && !n.isLeaf && (openIsolating || !n.type.spec.isolating); n = n.lastChild)\n openEnd++;\n return new Slice(fragment, openStart, openEnd);\n }\n}\n/**\nThe empty slice.\n*/\nSlice.empty = new Slice(Fragment.empty, 0, 0);\nfunction removeRange(content, from, to) {\n let { index, offset } = content.findIndex(from), child = content.maybeChild(index);\n let { index: indexTo, offset: offsetTo } = content.findIndex(to);\n if (offset == from || child.isText) {\n if (offsetTo != to && !content.child(indexTo).isText)\n throw new RangeError(\"Removing non-flat range\");\n return content.cut(0, from).append(content.cut(to));\n }\n if (index != indexTo)\n throw new RangeError(\"Removing non-flat range\");\n return content.replaceChild(index, child.copy(removeRange(child.content, from - offset - 1, to - offset - 1)));\n}\nfunction insertInto(content, dist, insert, parent) {\n let { index, offset } = content.findIndex(dist), child = content.maybeChild(index);\n if (offset == dist || child.isText) {\n if (parent && !parent.canReplace(index, index, insert))\n return null;\n return content.cut(0, dist).append(insert).append(content.cut(dist));\n }\n let inner = insertInto(child.content, dist - offset - 1, insert);\n return inner && content.replaceChild(index, child.copy(inner));\n}\nfunction replace($from, $to, slice) {\n if (slice.openStart > $from.depth)\n throw new ReplaceError(\"Inserted content deeper than insertion position\");\n if ($from.depth - slice.openStart != $to.depth - slice.openEnd)\n throw new ReplaceError(\"Inconsistent open depths\");\n return replaceOuter($from, $to, slice, 0);\n}\nfunction replaceOuter($from, $to, slice, depth) {\n let index = $from.index(depth), node = $from.node(depth);\n if (index == $to.index(depth) && depth < $from.depth - slice.openStart) {\n let inner = replaceOuter($from, $to, slice, depth + 1);\n return node.copy(node.content.replaceChild(index, inner));\n }\n else if (!slice.content.size) {\n return close(node, replaceTwoWay($from, $to, depth));\n }\n else if (!slice.openStart && !slice.openEnd && $from.depth == depth && $to.depth == depth) { // Simple, flat case\n let parent = $from.parent, content = parent.content;\n return close(parent, content.cut(0, $from.parentOffset).append(slice.content).append(content.cut($to.parentOffset)));\n }\n else {\n let { start, end } = prepareSliceForReplace(slice, $from);\n return close(node, replaceThreeWay($from, start, end, $to, depth));\n }\n}\nfunction checkJoin(main, sub) {\n if (!sub.type.compatibleContent(main.type))\n throw new ReplaceError(\"Cannot join \" + sub.type.name + \" onto \" + main.type.name);\n}\nfunction joinable($before, $after, depth) {\n let node = $before.node(depth);\n checkJoin(node, $after.node(depth));\n return node;\n}\nfunction addNode(child, target) {\n let last = target.length - 1;\n if (last >= 0 && child.isText && child.sameMarkup(target[last]))\n target[last] = child.withText(target[last].text + child.text);\n else\n target.push(child);\n}\nfunction addRange($start, $end, depth, target) {\n let node = ($end || $start).node(depth);\n let startIndex = 0, endIndex = $end ? $end.index(depth) : node.childCount;\n if ($start) {\n startIndex = $start.index(depth);\n if ($start.depth > depth) {\n startIndex++;\n }\n else if ($start.textOffset) {\n addNode($start.nodeAfter, target);\n startIndex++;\n }\n }\n for (let i = startIndex; i < endIndex; i++)\n addNode(node.child(i), target);\n if ($end && $end.depth == depth && $end.textOffset)\n addNode($end.nodeBefore, target);\n}\nfunction close(node, content) {\n node.type.checkContent(content);\n return node.copy(content);\n}\nfunction replaceThreeWay($from, $start, $end, $to, depth) {\n let openStart = $from.depth > depth && joinable($from, $start, depth + 1);\n let openEnd = $to.depth > depth && joinable($end, $to, depth + 1);\n let content = [];\n addRange(null, $from, depth, content);\n if (openStart && openEnd && $start.index(depth) == $end.index(depth)) {\n checkJoin(openStart, openEnd);\n addNode(close(openStart, replaceThreeWay($from, $start, $end, $to, depth + 1)), content);\n }\n else {\n if (openStart)\n addNode(close(openStart, replaceTwoWay($from, $start, depth + 1)), content);\n addRange($start, $end, depth, content);\n if (openEnd)\n addNode(close(openEnd, replaceTwoWay($end, $to, depth + 1)), content);\n }\n addRange($to, null, depth, content);\n return new Fragment(content);\n}\nfunction replaceTwoWay($from, $to, depth) {\n let content = [];\n addRange(null, $from, depth, content);\n if ($from.depth > depth) {\n let type = joinable($from, $to, depth + 1);\n addNode(close(type, replaceTwoWay($from, $to, depth + 1)), content);\n }\n addRange($to, null, depth, content);\n return new Fragment(content);\n}\nfunction prepareSliceForReplace(slice, $along) {\n let extra = $along.depth - slice.openStart, parent = $along.node(extra);\n let node = parent.copy(slice.content);\n for (let i = extra - 1; i >= 0; i--)\n node = $along.node(i).copy(Fragment.from(node));\n return { start: node.resolveNoCache(slice.openStart + extra),\n end: node.resolveNoCache(node.content.size - slice.openEnd - extra) };\n}\n\n/**\nYou can [_resolve_](https://prosemirror.net/docs/ref/#model.Node.resolve) a position to get more\ninformation about it. Objects of this class represent such a\nresolved position, providing various pieces of context\ninformation, and some helper methods.\n\nThroughout this interface, methods that take an optional `depth`\nparameter will interpret undefined as `this.depth` and negative\nnumbers as `this.depth + value`.\n*/\nclass ResolvedPos {\n /**\n @internal\n */\n constructor(\n /**\n The position that was resolved.\n */\n pos, \n /**\n @internal\n */\n path, \n /**\n The offset this position has into its parent node.\n */\n parentOffset) {\n this.pos = pos;\n this.path = path;\n this.parentOffset = parentOffset;\n this.depth = path.length / 3 - 1;\n }\n /**\n @internal\n */\n resolveDepth(val) {\n if (val == null)\n return this.depth;\n if (val < 0)\n return this.depth + val;\n return val;\n }\n /**\n The parent node that the position points into. Note that even if\n a position points into a text node, that node is not considered\n the parent—text nodes are ‘flat’ in this model, and have no content.\n */\n get parent() { return this.node(this.depth); }\n /**\n The root node in which the position was resolved.\n */\n get doc() { return this.node(0); }\n /**\n The ancestor node at the given level. `p.node(p.depth)` is the\n same as `p.parent`.\n */\n node(depth) { return this.path[this.resolveDepth(depth) * 3]; }\n /**\n The index into the ancestor at the given level. If this points\n at the 3rd node in the 2nd paragraph on the top level, for\n example, `p.index(0)` is 1 and `p.index(1)` is 2.\n */\n index(depth) { return this.path[this.resolveDepth(depth) * 3 + 1]; }\n /**\n The index pointing after this position into the ancestor at the\n given level.\n */\n indexAfter(depth) {\n depth = this.resolveDepth(depth);\n return this.index(depth) + (depth == this.depth && !this.textOffset ? 0 : 1);\n }\n /**\n The (absolute) position at the start of the node at the given\n level.\n */\n start(depth) {\n depth = this.resolveDepth(depth);\n return depth == 0 ? 0 : this.path[depth * 3 - 1] + 1;\n }\n /**\n The (absolute) position at the end of the node at the given\n level.\n */\n end(depth) {\n depth = this.resolveDepth(depth);\n return this.start(depth) + this.node(depth).content.size;\n }\n /**\n The (absolute) position directly before the wrapping node at the\n given level, or, when `depth` is `this.depth + 1`, the original\n position.\n */\n before(depth) {\n depth = this.resolveDepth(depth);\n if (!depth)\n throw new RangeError(\"There is no position before the top-level node\");\n return depth == this.depth + 1 ? this.pos : this.path[depth * 3 - 1];\n }\n /**\n The (absolute) position directly after the wrapping node at the\n given level, or the original position when `depth` is `this.depth + 1`.\n */\n after(depth) {\n depth = this.resolveDepth(depth);\n if (!depth)\n throw new RangeError(\"There is no position after the top-level node\");\n return depth == this.depth + 1 ? this.pos : this.path[depth * 3 - 1] + this.path[depth * 3].nodeSize;\n }\n /**\n When this position points into a text node, this returns the\n distance between the position and the start of the text node.\n Will be zero for positions that point between nodes.\n */\n get textOffset() { return this.pos - this.path[this.path.length - 1]; }\n /**\n Get the node directly after the position, if any. If the position\n points into a text node, only the part of that node after the\n position is returned.\n */\n get nodeAfter() {\n let parent = this.parent, index = this.index(this.depth);\n if (index == parent.childCount)\n return null;\n let dOff = this.pos - this.path[this.path.length - 1], child = parent.child(index);\n return dOff ? parent.child(index).cut(dOff) : child;\n }\n /**\n Get the node directly before the position, if any. If the\n position points into a text node, only the part of that node\n before the position is returned.\n */\n get nodeBefore() {\n let index = this.index(this.depth);\n let dOff = this.pos - this.path[this.path.length - 1];\n if (dOff)\n return this.parent.child(index).cut(0, dOff);\n return index == 0 ? null : this.parent.child(index - 1);\n }\n /**\n Get the position at the given index in the parent node at the\n given depth (which defaults to `this.depth`).\n */\n posAtIndex(index, depth) {\n depth = this.resolveDepth(depth);\n let node = this.path[depth * 3], pos = depth == 0 ? 0 : this.path[depth * 3 - 1] + 1;\n for (let i = 0; i < index; i++)\n pos += node.child(i).nodeSize;\n return pos;\n }\n /**\n Get the marks at this position, factoring in the surrounding\n marks' [`inclusive`](https://prosemirror.net/docs/ref/#model.MarkSpec.inclusive) property. If the\n position is at the start of a non-empty node, the marks of the\n node after it (if any) are returned.\n */\n marks() {\n let parent = this.parent, index = this.index();\n // In an empty parent, return the empty array\n if (parent.content.size == 0)\n return Mark.none;\n // When inside a text node, just return the text node's marks\n if (this.textOffset)\n return parent.child(index).marks;\n let main = parent.maybeChild(index - 1), other = parent.maybeChild(index);\n // If the `after` flag is true of there is no node before, make\n // the node after this position the main reference.\n if (!main) {\n let tmp = main;\n main = other;\n other = tmp;\n }\n // Use all marks in the main node, except those that have\n // `inclusive` set to false and are not present in the other node.\n let marks = main.marks;\n for (var i = 0; i < marks.length; i++)\n if (marks[i].type.spec.inclusive === false && (!other || !marks[i].isInSet(other.marks)))\n marks = marks[i--].removeFromSet(marks);\n return marks;\n }\n /**\n Get the marks after the current position, if any, except those\n that are non-inclusive and not present at position `$end`. This\n is mostly useful for getting the set of marks to preserve after a\n deletion. Will return `null` if this position is at the end of\n its parent node or its parent node isn't a textblock (in which\n case no marks should be preserved).\n */\n marksAcross($end) {\n let after = this.parent.maybeChild(this.index());\n if (!after || !after.isInline)\n return null;\n let marks = after.marks, next = $end.parent.maybeChild($end.index());\n for (var i = 0; i < marks.length; i++)\n if (marks[i].type.spec.inclusive === false && (!next || !marks[i].isInSet(next.marks)))\n marks = marks[i--].removeFromSet(marks);\n return marks;\n }\n /**\n The depth up to which this position and the given (non-resolved)\n position share the same parent nodes.\n */\n sharedDepth(pos) {\n for (let depth = this.depth; depth > 0; depth--)\n if (this.start(depth) <= pos && this.end(depth) >= pos)\n return depth;\n return 0;\n }\n /**\n Returns a range based on the place where this position and the\n given position diverge around block content. If both point into\n the same textblock, for example, a range around that textblock\n will be returned. If they point into different blocks, the range\n around those blocks in their shared ancestor is returned. You can\n pass in an optional predicate that will be called with a parent\n node to see if a range into that parent is acceptable.\n */\n blockRange(other = this, pred) {\n if (other.pos < this.pos)\n return other.blockRange(this);\n for (let d = this.depth - (this.parent.inlineContent || this.pos == other.pos ? 1 : 0); d >= 0; d--)\n if (other.pos <= this.end(d) && (!pred || pred(this.node(d))))\n return new NodeRange(this, other, d);\n return null;\n }\n /**\n Query whether the given position shares the same parent node.\n */\n sameParent(other) {\n return this.pos - this.parentOffset == other.pos - other.parentOffset;\n }\n /**\n Return the greater of this and the given position.\n */\n max(other) {\n return other.pos > this.pos ? other : this;\n }\n /**\n Return the smaller of this and the given position.\n */\n min(other) {\n return other.pos < this.pos ? other : this;\n }\n /**\n @internal\n */\n toString() {\n let str = \"\";\n for (let i = 1; i <= this.depth; i++)\n str += (str ? \"/\" : \"\") + this.node(i).type.name + \"_\" + this.index(i - 1);\n return str + \":\" + this.parentOffset;\n }\n /**\n @internal\n */\n static resolve(doc, pos) {\n if (!(pos >= 0 && pos <= doc.content.size))\n throw new RangeError(\"Position \" + pos + \" out of range\");\n let path = [];\n let start = 0, parentOffset = pos;\n for (let node = doc;;) {\n let { index, offset } = node.content.findIndex(parentOffset);\n let rem = parentOffset - offset;\n path.push(node, index, start + offset);\n if (!rem)\n break;\n node = node.child(index);\n if (node.isText)\n break;\n parentOffset = rem - 1;\n start += offset + 1;\n }\n return new ResolvedPos(pos, path, parentOffset);\n }\n /**\n @internal\n */\n static resolveCached(doc, pos) {\n let cache = resolveCache.get(doc);\n if (cache) {\n for (let i = 0; i < cache.elts.length; i++) {\n let elt = cache.elts[i];\n if (elt.pos == pos)\n return elt;\n }\n }\n else {\n resolveCache.set(doc, cache = new ResolveCache);\n }\n let result = cache.elts[cache.i] = ResolvedPos.resolve(doc, pos);\n cache.i = (cache.i + 1) % resolveCacheSize;\n return result;\n }\n}\nclass ResolveCache {\n constructor() {\n this.elts = [];\n this.i = 0;\n }\n}\nconst resolveCacheSize = 12, resolveCache = new WeakMap();\n/**\nRepresents a flat range of content, i.e. one that starts and\nends in the same node.\n*/\nclass NodeRange {\n /**\n Construct a node range. `$from` and `$to` should point into the\n same node until at least the given `depth`, since a node range\n denotes an adjacent set of nodes in a single parent node.\n */\n constructor(\n /**\n A resolved position along the start of the content. May have a\n `depth` greater than this object's `depth` property, since\n these are the positions that were used to compute the range,\n not re-resolved positions directly at its boundaries.\n */\n $from, \n /**\n A position along the end of the content. See\n caveat for [`$from`](https://prosemirror.net/docs/ref/#model.NodeRange.$from).\n */\n $to, \n /**\n The depth of the node that this range points into.\n */\n depth) {\n this.$from = $from;\n this.$to = $to;\n this.depth = depth;\n }\n /**\n The position at the start of the range.\n */\n get start() { return this.$from.before(this.depth + 1); }\n /**\n The position at the end of the range.\n */\n get end() { return this.$to.after(this.depth + 1); }\n /**\n The parent node that the range points into.\n */\n get parent() { return this.$from.node(this.depth); }\n /**\n The start index of the range in the parent node.\n */\n get startIndex() { return this.$from.index(this.depth); }\n /**\n The end index of the range in the parent node.\n */\n get endIndex() { return this.$to.indexAfter(this.depth); }\n}\n\nconst emptyAttrs = Object.create(null);\n/**\nThis class represents a node in the tree that makes up a\nProseMirror document. So a document is an instance of `Node`, with\nchildren that are also instances of `Node`.\n\nNodes are persistent data structures. Instead of changing them, you\ncreate new ones with the content you want. Old ones keep pointing\nat the old document shape. This is made cheaper by sharing\nstructure between the old and new data as much as possible, which a\ntree shape like this (without back pointers) makes easy.\n\n**Do not** directly mutate the properties of a `Node` object. See\n[the guide](/docs/guide/#doc) for more information.\n*/\nclass Node {\n /**\n @internal\n */\n constructor(\n /**\n The type of node that this is.\n */\n type, \n /**\n An object mapping attribute names to values. The kind of\n attributes allowed and required are\n [determined](https://prosemirror.net/docs/ref/#model.NodeSpec.attrs) by the node type.\n */\n attrs, \n // A fragment holding the node's children.\n content, \n /**\n The marks (things like whether it is emphasized or part of a\n link) applied to this node.\n */\n marks = Mark.none) {\n this.type = type;\n this.attrs = attrs;\n this.marks = marks;\n this.content = content || Fragment.empty;\n }\n /**\n The size of this node, as defined by the integer-based [indexing\n scheme](/docs/guide/#doc.indexing). For text nodes, this is the\n amount of characters. For other leaf nodes, it is one. For\n non-leaf nodes, it is the size of the content plus two (the\n start and end token).\n */\n get nodeSize() { return this.isLeaf ? 1 : 2 + this.content.size; }\n /**\n The number of children that the node has.\n */\n get childCount() { return this.content.childCount; }\n /**\n Get the child node at the given index. Raises an error when the\n index is out of range.\n */\n child(index) { return this.content.child(index); }\n /**\n Get the child node at the given index, if it exists.\n */\n maybeChild(index) { return this.content.maybeChild(index); }\n /**\n Call `f` for every child node, passing the node, its offset\n into this parent node, and its index.\n */\n forEach(f) { this.content.forEach(f); }\n /**\n Invoke a callback for all descendant nodes recursively between\n the given two positions that are relative to start of this\n node's content. The callback is invoked with the node, its\n position relative to the original node (method receiver),\n its parent node, and its child index. When the callback returns\n false for a given node, that node's children will not be\n recursed over. The last parameter can be used to specify a\n starting position to count from.\n */\n nodesBetween(from, to, f, startPos = 0) {\n this.content.nodesBetween(from, to, f, startPos, this);\n }\n /**\n Call the given callback for every descendant node. Doesn't\n descend into a node when the callback returns `false`.\n */\n descendants(f) {\n this.nodesBetween(0, this.content.size, f);\n }\n /**\n Concatenates all the text nodes found in this fragment and its\n children.\n */\n get textContent() {\n return (this.isLeaf && this.type.spec.leafText)\n ? this.type.spec.leafText(this)\n : this.textBetween(0, this.content.size, \"\");\n }\n /**\n Get all text between positions `from` and `to`. When\n `blockSeparator` is given, it will be inserted to separate text\n from different block nodes. If `leafText` is given, it'll be\n inserted for every non-text leaf node encountered, otherwise\n [`leafText`](https://prosemirror.net/docs/ref/#model.NodeSpec^leafText) will be used.\n */\n textBetween(from, to, blockSeparator, leafText) {\n return this.content.textBetween(from, to, blockSeparator, leafText);\n }\n /**\n Returns this node's first child, or `null` if there are no\n children.\n */\n get firstChild() { return this.content.firstChild; }\n /**\n Returns this node's last child, or `null` if there are no\n children.\n */\n get lastChild() { return this.content.lastChild; }\n /**\n Test whether two nodes represent the same piece of document.\n */\n eq(other) {\n return this == other || (this.sameMarkup(other) && this.content.eq(other.content));\n }\n /**\n Compare the markup (type, attributes, and marks) of this node to\n those of another. Returns `true` if both have the same markup.\n */\n sameMarkup(other) {\n return this.hasMarkup(other.type, other.attrs, other.marks);\n }\n /**\n Check whether this node's markup correspond to the given type,\n attributes, and marks.\n */\n hasMarkup(type, attrs, marks) {\n return this.type == type &&\n compareDeep(this.attrs, attrs || type.defaultAttrs || emptyAttrs) &&\n Mark.sameSet(this.marks, marks || Mark.none);\n }\n /**\n Create a new node with the same markup as this node, containing\n the given content (or empty, if no content is given).\n */\n copy(content = null) {\n if (content == this.content)\n return this;\n return new Node(this.type, this.attrs, content, this.marks);\n }\n /**\n Create a copy of this node, with the given set of marks instead\n of the node's own marks.\n */\n mark(marks) {\n return marks == this.marks ? this : new Node(this.type, this.attrs, this.content, marks);\n }\n /**\n Create a copy of this node with only the content between the\n given positions. If `to` is not given, it defaults to the end of\n the node.\n */\n cut(from, to = this.content.size) {\n if (from == 0 && to == this.content.size)\n return this;\n return this.copy(this.content.cut(from, to));\n }\n /**\n Cut out the part of the document between the given positions, and\n return it as a `Slice` object.\n */\n slice(from, to = this.content.size, includeParents = false) {\n if (from == to)\n return Slice.empty;\n let $from = this.resolve(from), $to = this.resolve(to);\n let depth = includeParents ? 0 : $from.sharedDepth(to);\n let start = $from.start(depth), node = $from.node(depth);\n let content = node.content.cut($from.pos - start, $to.pos - start);\n return new Slice(content, $from.depth - depth, $to.depth - depth);\n }\n /**\n Replace the part of the document between the given positions with\n the given slice. The slice must 'fit', meaning its open sides\n must be able to connect to the surrounding content, and its\n content nodes must be valid children for the node they are placed\n into. If any of this is violated, an error of type\n [`ReplaceError`](https://prosemirror.net/docs/ref/#model.ReplaceError) is thrown.\n */\n replace(from, to, slice) {\n return replace(this.resolve(from), this.resolve(to), slice);\n }\n /**\n Find the node directly after the given position.\n */\n nodeAt(pos) {\n for (let node = this;;) {\n let { index, offset } = node.content.findIndex(pos);\n node = node.maybeChild(index);\n if (!node)\n return null;\n if (offset == pos || node.isText)\n return node;\n pos -= offset + 1;\n }\n }\n /**\n Find the (direct) child node after the given offset, if any,\n and return it along with its index and offset relative to this\n node.\n */\n childAfter(pos) {\n let { index, offset } = this.content.findIndex(pos);\n return { node: this.content.maybeChild(index), index, offset };\n }\n /**\n Find the (direct) child node before the given offset, if any,\n and return it along with its index and offset relative to this\n node.\n */\n childBefore(pos) {\n if (pos == 0)\n return { node: null, index: 0, offset: 0 };\n let { index, offset } = this.content.findIndex(pos);\n if (offset < pos)\n return { node: this.content.child(index), index, offset };\n let node = this.content.child(index - 1);\n return { node, index: index - 1, offset: offset - node.nodeSize };\n }\n /**\n Resolve the given position in the document, returning an\n [object](https://prosemirror.net/docs/ref/#model.ResolvedPos) with information about its context.\n */\n resolve(pos) { return ResolvedPos.resolveCached(this, pos); }\n /**\n @internal\n */\n resolveNoCache(pos) { return ResolvedPos.resolve(this, pos); }\n /**\n Test whether a given mark or mark type occurs in this document\n between the two given positions.\n */\n rangeHasMark(from, to, type) {\n let found = false;\n if (to > from)\n this.nodesBetween(from, to, node => {\n if (type.isInSet(node.marks))\n found = true;\n return !found;\n });\n return found;\n }\n /**\n True when this is a block (non-inline node)\n */\n get isBlock() { return this.type.isBlock; }\n /**\n True when this is a textblock node, a block node with inline\n content.\n */\n get isTextblock() { return this.type.isTextblock; }\n /**\n True when this node allows inline content.\n */\n get inlineContent() { return this.type.inlineContent; }\n /**\n True when this is an inline node (a text node or a node that can\n appear among text).\n */\n get isInline() { return this.type.isInline; }\n /**\n True when this is a text node.\n */\n get isText() { return this.type.isText; }\n /**\n True when this is a leaf node.\n */\n get isLeaf() { return this.type.isLeaf; }\n /**\n True when this is an atom, i.e. when it does not have directly\n editable content. This is usually the same as `isLeaf`, but can\n be configured with the [`atom` property](https://prosemirror.net/docs/ref/#model.NodeSpec.atom)\n on a node's spec (typically used when the node is displayed as\n an uneditable [node view](https://prosemirror.net/docs/ref/#view.NodeView)).\n */\n get isAtom() { return this.type.isAtom; }\n /**\n Return a string representation of this node for debugging\n purposes.\n */\n toString() {\n if (this.type.spec.toDebugString)\n return this.type.spec.toDebugString(this);\n let name = this.type.name;\n if (this.content.size)\n name += \"(\" + this.content.toStringInner() + \")\";\n return wrapMarks(this.marks, name);\n }\n /**\n Get the content match in this node at the given index.\n */\n contentMatchAt(index) {\n let match = this.type.contentMatch.matchFragment(this.content, 0, index);\n if (!match)\n throw new Error(\"Called contentMatchAt on a node with invalid content\");\n return match;\n }\n /**\n Test whether replacing the range between `from` and `to` (by\n child index) with the given replacement fragment (which defaults\n to the empty fragment) would leave the node's content valid. You\n can optionally pass `start` and `end` indices into the\n replacement fragment.\n */\n canReplace(from, to, replacement = Fragment.empty, start = 0, end = replacement.childCount) {\n let one = this.contentMatchAt(from).matchFragment(replacement, start, end);\n let two = one && one.matchFragment(this.content, to);\n if (!two || !two.validEnd)\n return false;\n for (let i = start; i < end; i++)\n if (!this.type.allowsMarks(replacement.child(i).marks))\n return false;\n return true;\n }\n /**\n Test whether replacing the range `from` to `to` (by index) with\n a node of the given type would leave the node's content valid.\n */\n canReplaceWith(from, to, type, marks) {\n if (marks && !this.type.allowsMarks(marks))\n return false;\n let start = this.contentMatchAt(from).matchType(type);\n let end = start && start.matchFragment(this.content, to);\n return end ? end.validEnd : false;\n }\n /**\n Test whether the given node's content could be appended to this\n node. If that node is empty, this will only return true if there\n is at least one node type that can appear in both nodes (to avoid\n merging completely incompatible nodes).\n */\n canAppend(other) {\n if (other.content.size)\n return this.canReplace(this.childCount, this.childCount, other.content);\n else\n return this.type.compatibleContent(other.type);\n }\n /**\n Check whether this node and its descendants conform to the\n schema, and raise an exception when they do not.\n */\n check() {\n this.type.checkContent(this.content);\n this.type.checkAttrs(this.attrs);\n let copy = Mark.none;\n for (let i = 0; i < this.marks.length; i++) {\n let mark = this.marks[i];\n mark.type.checkAttrs(mark.attrs);\n copy = mark.addToSet(copy);\n }\n if (!Mark.sameSet(copy, this.marks))\n throw new RangeError(`Invalid collection of marks for node ${this.type.name}: ${this.marks.map(m => m.type.name)}`);\n this.content.forEach(node => node.check());\n }\n /**\n Return a JSON-serializeable representation of this node.\n */\n toJSON() {\n let obj = { type: this.type.name };\n for (let _ in this.attrs) {\n obj.attrs = this.attrs;\n break;\n }\n if (this.content.size)\n obj.content = this.content.toJSON();\n if (this.marks.length)\n obj.marks = this.marks.map(n => n.toJSON());\n return obj;\n }\n /**\n Deserialize a node from its JSON representation.\n */\n static fromJSON(schema, json) {\n if (!json)\n throw new RangeError(\"Invalid input for Node.fromJSON\");\n let marks = undefined;\n if (json.marks) {\n if (!Array.isArray(json.marks))\n throw new RangeError(\"Invalid mark data for Node.fromJSON\");\n marks = json.marks.map(schema.markFromJSON);\n }\n if (json.type == \"text\") {\n if (typeof json.text != \"string\")\n throw new RangeError(\"Invalid text node in JSON\");\n return schema.text(json.text, marks);\n }\n let content = Fragment.fromJSON(schema, json.content);\n let node = schema.nodeType(json.type).create(json.attrs, content, marks);\n node.type.checkAttrs(node.attrs);\n return node;\n }\n}\nNode.prototype.text = undefined;\nclass TextNode extends Node {\n /**\n @internal\n */\n constructor(type, attrs, content, marks) {\n super(type, attrs, null, marks);\n if (!content)\n throw new RangeError(\"Empty text nodes are not allowed\");\n this.text = content;\n }\n toString() {\n if (this.type.spec.toDebugString)\n return this.type.spec.toDebugString(this);\n return wrapMarks(this.marks, JSON.stringify(this.text));\n }\n get textContent() { return this.text; }\n textBetween(from, to) { return this.text.slice(from, to); }\n get nodeSize() { return this.text.length; }\n mark(marks) {\n return marks == this.marks ? this : new TextNode(this.type, this.attrs, this.text, marks);\n }\n withText(text) {\n if (text == this.text)\n return this;\n return new TextNode(this.type, this.attrs, text, this.marks);\n }\n cut(from = 0, to = this.text.length) {\n if (from == 0 && to == this.text.length)\n return this;\n return this.withText(this.text.slice(from, to));\n }\n eq(other) {\n return this.sameMarkup(other) && this.text == other.text;\n }\n toJSON() {\n let base = super.toJSON();\n base.text = this.text;\n return base;\n }\n}\nfunction wrapMarks(marks, str) {\n for (let i = marks.length - 1; i >= 0; i--)\n str = marks[i].type.name + \"(\" + str + \")\";\n return str;\n}\n\n/**\nInstances of this class represent a match state of a node type's\n[content expression](https://prosemirror.net/docs/ref/#model.NodeSpec.content), and can be used to\nfind out whether further content matches here, and whether a given\nposition is a valid end of the node.\n*/\nclass ContentMatch {\n /**\n @internal\n */\n constructor(\n /**\n True when this match state represents a valid end of the node.\n */\n validEnd) {\n this.validEnd = validEnd;\n /**\n @internal\n */\n this.next = [];\n /**\n @internal\n */\n this.wrapCache = [];\n }\n /**\n @internal\n */\n static parse(string, nodeTypes) {\n let stream = new TokenStream(string, nodeTypes);\n if (stream.next == null)\n return ContentMatch.empty;\n let expr = parseExpr(stream);\n if (stream.next)\n stream.err(\"Unexpected trailing text\");\n let match = dfa(nfa(expr));\n checkForDeadEnds(match, stream);\n return match;\n }\n /**\n Match a node type, returning a match after that node if\n successful.\n */\n matchType(type) {\n for (let i = 0; i < this.next.length; i++)\n if (this.next[i].type == type)\n return this.next[i].next;\n return null;\n }\n /**\n Try to match a fragment. Returns the resulting match when\n successful.\n */\n matchFragment(frag, start = 0, end = frag.childCount) {\n let cur = this;\n for (let i = start; cur && i < end; i++)\n cur = cur.matchType(frag.child(i).type);\n return cur;\n }\n /**\n @internal\n */\n get inlineContent() {\n return this.next.length != 0 && this.next[0].type.isInline;\n }\n /**\n Get the first matching node type at this match position that can\n be generated.\n */\n get defaultType() {\n for (let i = 0; i < this.next.length; i++) {\n let { type } = this.next[i];\n if (!(type.isText || type.hasRequiredAttrs()))\n return type;\n }\n return null;\n }\n /**\n @internal\n */\n compatible(other) {\n for (let i = 0; i < this.next.length; i++)\n for (let j = 0; j < other.next.length; j++)\n if (this.next[i].type == other.next[j].type)\n return true;\n return false;\n }\n /**\n Try to match the given fragment, and if that fails, see if it can\n be made to match by inserting nodes in front of it. When\n successful, return a fragment of inserted nodes (which may be\n empty if nothing had to be inserted). When `toEnd` is true, only\n return a fragment if the resulting match goes to the end of the\n content expression.\n */\n fillBefore(after, toEnd = false, startIndex = 0) {\n let seen = [this];\n function search(match, types) {\n let finished = match.matchFragment(after, startIndex);\n if (finished && (!toEnd || finished.validEnd))\n return Fragment.from(types.map(tp => tp.createAndFill()));\n for (let i = 0; i < match.next.length; i++) {\n let { type, next } = match.next[i];\n if (!(type.isText || type.hasRequiredAttrs()) && seen.indexOf(next) == -1) {\n seen.push(next);\n let found = search(next, types.concat(type));\n if (found)\n return found;\n }\n }\n return null;\n }\n return search(this, []);\n }\n /**\n Find a set of wrapping node types that would allow a node of the\n given type to appear at this position. The result may be empty\n (when it fits directly) and will be null when no such wrapping\n exists.\n */\n findWrapping(target) {\n for (let i = 0; i < this.wrapCache.length; i += 2)\n if (this.wrapCache[i] == target)\n return this.wrapCache[i + 1];\n let computed = this.computeWrapping(target);\n this.wrapCache.push(target, computed);\n return computed;\n }\n /**\n @internal\n */\n computeWrapping(target) {\n let seen = Object.create(null), active = [{ match: this, type: null, via: null }];\n while (active.length) {\n let current = active.shift(), match = current.match;\n if (match.matchType(target)) {\n let result = [];\n for (let obj = current; obj.type; obj = obj.via)\n result.push(obj.type);\n return result.reverse();\n }\n for (let i = 0; i < match.next.length; i++) {\n let { type, next } = match.next[i];\n if (!type.isLeaf && !type.hasRequiredAttrs() && !(type.name in seen) && (!current.type || next.validEnd)) {\n active.push({ match: type.contentMatch, type, via: current });\n seen[type.name] = true;\n }\n }\n }\n return null;\n }\n /**\n The number of outgoing edges this node has in the finite\n automaton that describes the content expression.\n */\n get edgeCount() {\n return this.next.length;\n }\n /**\n Get the _n_​th outgoing edge from this node in the finite\n automaton that describes the content expression.\n */\n edge(n) {\n if (n >= this.next.length)\n throw new RangeError(`There's no ${n}th edge in this content match`);\n return this.next[n];\n }\n /**\n @internal\n */\n toString() {\n let seen = [];\n function scan(m) {\n seen.push(m);\n for (let i = 0; i < m.next.length; i++)\n if (seen.indexOf(m.next[i].next) == -1)\n scan(m.next[i].next);\n }\n scan(this);\n return seen.map((m, i) => {\n let out = i + (m.validEnd ? \"*\" : \" \") + \" \";\n for (let i = 0; i < m.next.length; i++)\n out += (i ? \", \" : \"\") + m.next[i].type.name + \"->\" + seen.indexOf(m.next[i].next);\n return out;\n }).join(\"\\n\");\n }\n}\n/**\n@internal\n*/\nContentMatch.empty = new ContentMatch(true);\nclass TokenStream {\n constructor(string, nodeTypes) {\n this.string = string;\n this.nodeTypes = nodeTypes;\n this.inline = null;\n this.pos = 0;\n this.tokens = string.split(/\\s*(?=\\b|\\W|$)/);\n if (this.tokens[this.tokens.length - 1] == \"\")\n this.tokens.pop();\n if (this.tokens[0] == \"\")\n this.tokens.shift();\n }\n get next() { return this.tokens[this.pos]; }\n eat(tok) { return this.next == tok && (this.pos++ || true); }\n err(str) { throw new SyntaxError(str + \" (in content expression '\" + this.string + \"')\"); }\n}\nfunction parseExpr(stream) {\n let exprs = [];\n do {\n exprs.push(parseExprSeq(stream));\n } while (stream.eat(\"|\"));\n return exprs.length == 1 ? exprs[0] : { type: \"choice\", exprs };\n}\nfunction parseExprSeq(stream) {\n let exprs = [];\n do {\n exprs.push(parseExprSubscript(stream));\n } while (stream.next && stream.next != \")\" && stream.next != \"|\");\n return exprs.length == 1 ? exprs[0] : { type: \"seq\", exprs };\n}\nfunction parseExprSubscript(stream) {\n let expr = parseExprAtom(stream);\n for (;;) {\n if (stream.eat(\"+\"))\n expr = { type: \"plus\", expr };\n else if (stream.eat(\"*\"))\n expr = { type: \"star\", expr };\n else if (stream.eat(\"?\"))\n expr = { type: \"opt\", expr };\n else if (stream.eat(\"{\"))\n expr = parseExprRange(stream, expr);\n else\n break;\n }\n return expr;\n}\nfunction parseNum(stream) {\n if (/\\D/.test(stream.next))\n stream.err(\"Expected number, got '\" + stream.next + \"'\");\n let result = Number(stream.next);\n stream.pos++;\n return result;\n}\nfunction parseExprRange(stream, expr) {\n let min = parseNum(stream), max = min;\n if (stream.eat(\",\")) {\n if (stream.next != \"}\")\n max = parseNum(stream);\n else\n max = -1;\n }\n if (!stream.eat(\"}\"))\n stream.err(\"Unclosed braced range\");\n return { type: \"range\", min, max, expr };\n}\nfunction resolveName(stream, name) {\n let types = stream.nodeTypes, type = types[name];\n if (type)\n return [type];\n let result = [];\n for (let typeName in types) {\n let type = types[typeName];\n if (type.groups.indexOf(name) > -1)\n result.push(type);\n }\n if (result.length == 0)\n stream.err(\"No node type or group '\" + name + \"' found\");\n return result;\n}\nfunction parseExprAtom(stream) {\n if (stream.eat(\"(\")) {\n let expr = parseExpr(stream);\n if (!stream.eat(\")\"))\n stream.err(\"Missing closing paren\");\n return expr;\n }\n else if (!/\\W/.test(stream.next)) {\n let exprs = resolveName(stream, stream.next).map(type => {\n if (stream.inline == null)\n stream.inline = type.isInline;\n else if (stream.inline != type.isInline)\n stream.err(\"Mixing inline and block content\");\n return { type: \"name\", value: type };\n });\n stream.pos++;\n return exprs.length == 1 ? exprs[0] : { type: \"choice\", exprs };\n }\n else {\n stream.err(\"Unexpected token '\" + stream.next + \"'\");\n }\n}\n/**\nConstruct an NFA from an expression as returned by the parser. The\nNFA is represented as an array of states, which are themselves\narrays of edges, which are `{term, to}` objects. The first state is\nthe entry state and the last node is the success state.\n\nNote that unlike typical NFAs, the edge ordering in this one is\nsignificant, in that it is used to contruct filler content when\nnecessary.\n*/\nfunction nfa(expr) {\n let nfa = [[]];\n connect(compile(expr, 0), node());\n return nfa;\n function node() { return nfa.push([]) - 1; }\n function edge(from, to, term) {\n let edge = { term, to };\n nfa[from].push(edge);\n return edge;\n }\n function connect(edges, to) {\n edges.forEach(edge => edge.to = to);\n }\n function compile(expr, from) {\n if (expr.type == \"choice\") {\n return expr.exprs.reduce((out, expr) => out.concat(compile(expr, from)), []);\n }\n else if (expr.type == \"seq\") {\n for (let i = 0;; i++) {\n let next = compile(expr.exprs[i], from);\n if (i == expr.exprs.length - 1)\n return next;\n connect(next, from = node());\n }\n }\n else if (expr.type == \"star\") {\n let loop = node();\n edge(from, loop);\n connect(compile(expr.expr, loop), loop);\n return [edge(loop)];\n }\n else if (expr.type == \"plus\") {\n let loop = node();\n connect(compile(expr.expr, from), loop);\n connect(compile(expr.expr, loop), loop);\n return [edge(loop)];\n }\n else if (expr.type == \"opt\") {\n return [edge(from)].concat(compile(expr.expr, from));\n }\n else if (expr.type == \"range\") {\n let cur = from;\n for (let i = 0; i < expr.min; i++) {\n let next = node();\n connect(compile(expr.expr, cur), next);\n cur = next;\n }\n if (expr.max == -1) {\n connect(compile(expr.expr, cur), cur);\n }\n else {\n for (let i = expr.min; i < expr.max; i++) {\n let next = node();\n edge(cur, next);\n connect(compile(expr.expr, cur), next);\n cur = next;\n }\n }\n return [edge(cur)];\n }\n else if (expr.type == \"name\") {\n return [edge(from, undefined, expr.value)];\n }\n else {\n throw new Error(\"Unknown expr type\");\n }\n }\n}\nfunction cmp(a, b) { return b - a; }\n// Get the set of nodes reachable by null edges from `node`. Omit\n// nodes with only a single null-out-edge, since they may lead to\n// needless duplicated nodes.\nfunction nullFrom(nfa, node) {\n let result = [];\n scan(node);\n return result.sort(cmp);\n function scan(node) {\n let edges = nfa[node];\n if (edges.length == 1 && !edges[0].term)\n return scan(edges[0].to);\n result.push(node);\n for (let i = 0; i < edges.length; i++) {\n let { term, to } = edges[i];\n if (!term && result.indexOf(to) == -1)\n scan(to);\n }\n }\n}\n// Compiles an NFA as produced by `nfa` into a DFA, modeled as a set\n// of state objects (`ContentMatch` instances) with transitions\n// between them.\nfunction dfa(nfa) {\n let labeled = Object.create(null);\n return explore(nullFrom(nfa, 0));\n function explore(states) {\n let out = [];\n states.forEach(node => {\n nfa[node].forEach(({ term, to }) => {\n if (!term)\n return;\n let set;\n for (let i = 0; i < out.length; i++)\n if (out[i][0] == term)\n set = out[i][1];\n nullFrom(nfa, to).forEach(node => {\n if (!set)\n out.push([term, set = []]);\n if (set.indexOf(node) == -1)\n set.push(node);\n });\n });\n });\n let state = labeled[states.join(\",\")] = new ContentMatch(states.indexOf(nfa.length - 1) > -1);\n for (let i = 0; i < out.length; i++) {\n let states = out[i][1].sort(cmp);\n state.next.push({ type: out[i][0], next: labeled[states.join(\",\")] || explore(states) });\n }\n return state;\n }\n}\nfunction checkForDeadEnds(match, stream) {\n for (let i = 0, work = [match]; i < work.length; i++) {\n let state = work[i], dead = !state.validEnd, nodes = [];\n for (let j = 0; j < state.next.length; j++) {\n let { type, next } = state.next[j];\n nodes.push(type.name);\n if (dead && !(type.isText || type.hasRequiredAttrs()))\n dead = false;\n if (work.indexOf(next) == -1)\n work.push(next);\n }\n if (dead)\n stream.err(\"Only non-generatable nodes (\" + nodes.join(\", \") + \") in a required position (see https://prosemirror.net/docs/guide/#generatable)\");\n }\n}\n\n// For node types where all attrs have a default value (or which don't\n// have any attributes), build up a single reusable default attribute\n// object, and use it for all nodes that don't specify specific\n// attributes.\nfunction defaultAttrs(attrs) {\n let defaults = Object.create(null);\n for (let attrName in attrs) {\n let attr = attrs[attrName];\n if (!attr.hasDefault)\n return null;\n defaults[attrName] = attr.default;\n }\n return defaults;\n}\nfunction computeAttrs(attrs, value) {\n let built = Object.create(null);\n for (let name in attrs) {\n let given = value && value[name];\n if (given === undefined) {\n let attr = attrs[name];\n if (attr.hasDefault)\n given = attr.default;\n else\n throw new RangeError(\"No value supplied for attribute \" + name);\n }\n built[name] = given;\n }\n return built;\n}\nfunction checkAttrs(attrs, values, type, name) {\n for (let name in values)\n if (!(name in attrs))\n throw new RangeError(`Unsupported attribute ${name} for ${type} of type ${name}`);\n for (let name in attrs) {\n let attr = attrs[name];\n if (attr.validate)\n attr.validate(values[name]);\n }\n}\nfunction initAttrs(attrs) {\n let result = Object.create(null);\n if (attrs)\n for (let name in attrs)\n result[name] = new Attribute(attrs[name]);\n return result;\n}\n/**\nNode types are objects allocated once per `Schema` and used to\n[tag](https://prosemirror.net/docs/ref/#model.Node.type) `Node` instances. They contain information\nabout the node type, such as its name and what kind of node it\nrepresents.\n*/\nclass NodeType {\n /**\n @internal\n */\n constructor(\n /**\n The name the node type has in this schema.\n */\n name, \n /**\n A link back to the `Schema` the node type belongs to.\n */\n schema, \n /**\n The spec that this type is based on\n */\n spec) {\n this.name = name;\n this.schema = schema;\n this.spec = spec;\n /**\n The set of marks allowed in this node. `null` means all marks\n are allowed.\n */\n this.markSet = null;\n this.groups = spec.group ? spec.group.split(\" \") : [];\n this.attrs = initAttrs(spec.attrs);\n this.defaultAttrs = defaultAttrs(this.attrs);\n this.contentMatch = null;\n this.inlineContent = null;\n this.isBlock = !(spec.inline || name == \"text\");\n this.isText = name == \"text\";\n }\n /**\n True if this is an inline type.\n */\n get isInline() { return !this.isBlock; }\n /**\n True if this is a textblock type, a block that contains inline\n content.\n */\n get isTextblock() { return this.isBlock && this.inlineContent; }\n /**\n True for node types that allow no content.\n */\n get isLeaf() { return this.contentMatch == ContentMatch.empty; }\n /**\n True when this node is an atom, i.e. when it does not have\n directly editable content.\n */\n get isAtom() { return this.isLeaf || !!this.spec.atom; }\n /**\n The node type's [whitespace](https://prosemirror.net/docs/ref/#model.NodeSpec.whitespace) option.\n */\n get whitespace() {\n return this.spec.whitespace || (this.spec.code ? \"pre\" : \"normal\");\n }\n /**\n Tells you whether this node type has any required attributes.\n */\n hasRequiredAttrs() {\n for (let n in this.attrs)\n if (this.attrs[n].isRequired)\n return true;\n return false;\n }\n /**\n Indicates whether this node allows some of the same content as\n the given node type.\n */\n compatibleContent(other) {\n return this == other || this.contentMatch.compatible(other.contentMatch);\n }\n /**\n @internal\n */\n computeAttrs(attrs) {\n if (!attrs && this.defaultAttrs)\n return this.defaultAttrs;\n else\n return computeAttrs(this.attrs, attrs);\n }\n /**\n Create a `Node` of this type. The given attributes are\n checked and defaulted (you can pass `null` to use the type's\n defaults entirely, if no required attributes exist). `content`\n may be a `Fragment`, a node, an array of nodes, or\n `null`. Similarly `marks` may be `null` to default to the empty\n set of marks.\n */\n create(attrs = null, content, marks) {\n if (this.isText)\n throw new Error(\"NodeType.create can't construct text nodes\");\n return new Node(this, this.computeAttrs(attrs), Fragment.from(content), Mark.setFrom(marks));\n }\n /**\n Like [`create`](https://prosemirror.net/docs/ref/#model.NodeType.create), but check the given content\n against the node type's content restrictions, and throw an error\n if it doesn't match.\n */\n createChecked(attrs = null, content, marks) {\n content = Fragment.from(content);\n this.checkContent(content);\n return new Node(this, this.computeAttrs(attrs), content, Mark.setFrom(marks));\n }\n /**\n Like [`create`](https://prosemirror.net/docs/ref/#model.NodeType.create), but see if it is\n necessary to add nodes to the start or end of the given fragment\n to make it fit the node. If no fitting wrapping can be found,\n return null. Note that, due to the fact that required nodes can\n always be created, this will always succeed if you pass null or\n `Fragment.empty` as content.\n */\n createAndFill(attrs = null, content, marks) {\n attrs = this.computeAttrs(attrs);\n content = Fragment.from(content);\n if (content.size) {\n let before = this.contentMatch.fillBefore(content);\n if (!before)\n return null;\n content = before.append(content);\n }\n let matched = this.contentMatch.matchFragment(content);\n let after = matched && matched.fillBefore(Fragment.empty, true);\n if (!after)\n return null;\n return new Node(this, attrs, content.append(after), Mark.setFrom(marks));\n }\n /**\n Returns true if the given fragment is valid content for this node\n type.\n */\n validContent(content) {\n let result = this.contentMatch.matchFragment(content);\n if (!result || !result.validEnd)\n return false;\n for (let i = 0; i < content.childCount; i++)\n if (!this.allowsMarks(content.child(i).marks))\n return false;\n return true;\n }\n /**\n Throws a RangeError if the given fragment is not valid content for this\n node type.\n @internal\n */\n checkContent(content) {\n if (!this.validContent(content))\n throw new RangeError(`Invalid content for node ${this.name}: ${content.toString().slice(0, 50)}`);\n }\n /**\n @internal\n */\n checkAttrs(attrs) {\n checkAttrs(this.attrs, attrs, \"node\", this.name);\n }\n /**\n Check whether the given mark type is allowed in this node.\n */\n allowsMarkType(markType) {\n return this.markSet == null || this.markSet.indexOf(markType) > -1;\n }\n /**\n Test whether the given set of marks are allowed in this node.\n */\n allowsMarks(marks) {\n if (this.markSet == null)\n return true;\n for (let i = 0; i < marks.length; i++)\n if (!this.allowsMarkType(marks[i].type))\n return false;\n return true;\n }\n /**\n Removes the marks that are not allowed in this node from the given set.\n */\n allowedMarks(marks) {\n if (this.markSet == null)\n return marks;\n let copy;\n for (let i = 0; i < marks.length; i++) {\n if (!this.allowsMarkType(marks[i].type)) {\n if (!copy)\n copy = marks.slice(0, i);\n }\n else if (copy) {\n copy.push(marks[i]);\n }\n }\n return !copy ? marks : copy.length ? copy : Mark.none;\n }\n /**\n @internal\n */\n static compile(nodes, schema) {\n let result = Object.create(null);\n nodes.forEach((name, spec) => result[name] = new NodeType(name, schema, spec));\n let topType = schema.spec.topNode || \"doc\";\n if (!result[topType])\n throw new RangeError(\"Schema is missing its top node type ('\" + topType + \"')\");\n if (!result.text)\n throw new RangeError(\"Every schema needs a 'text' type\");\n for (let _ in result.text.attrs)\n throw new RangeError(\"The text node type should not have attributes\");\n return result;\n }\n}\nfunction validateType(type) {\n let types = type.split(\"|\");\n return (value) => {\n let name = value === null ? \"null\" : typeof value;\n if (types.indexOf(name) < 0)\n throw new RangeError(`Expected value of type ${types}, got ${name}`);\n };\n}\n// Attribute descriptors\nclass Attribute {\n constructor(options) {\n this.hasDefault = Object.prototype.hasOwnProperty.call(options, \"default\");\n this.default = options.default;\n this.validate = typeof options.validate == \"string\" ? validateType(options.validate) : options.validate;\n }\n get isRequired() {\n return !this.hasDefault;\n }\n}\n// Marks\n/**\nLike nodes, marks (which are associated with nodes to signify\nthings like emphasis or being part of a link) are\n[tagged](https://prosemirror.net/docs/ref/#model.Mark.type) with type objects, which are\ninstantiated once per `Schema`.\n*/\nclass MarkType {\n /**\n @internal\n */\n constructor(\n /**\n The name of the mark type.\n */\n name, \n /**\n @internal\n */\n rank, \n /**\n The schema that this mark type instance is part of.\n */\n schema, \n /**\n The spec on which the type is based.\n */\n spec) {\n this.name = name;\n this.rank = rank;\n this.schema = schema;\n this.spec = spec;\n this.attrs = initAttrs(spec.attrs);\n this.excluded = null;\n let defaults = defaultAttrs(this.attrs);\n this.instance = defaults ? new Mark(this, defaults) : null;\n }\n /**\n Create a mark of this type. `attrs` may be `null` or an object\n containing only some of the mark's attributes. The others, if\n they have defaults, will be added.\n */\n create(attrs = null) {\n if (!attrs && this.instance)\n return this.instance;\n return new Mark(this, computeAttrs(this.attrs, attrs));\n }\n /**\n @internal\n */\n static compile(marks, schema) {\n let result = Object.create(null), rank = 0;\n marks.forEach((name, spec) => result[name] = new MarkType(name, rank++, schema, spec));\n return result;\n }\n /**\n When there is a mark of this type in the given set, a new set\n without it is returned. Otherwise, the input set is returned.\n */\n removeFromSet(set) {\n for (var i = 0; i < set.length; i++)\n if (set[i].type == this) {\n set = set.slice(0, i).concat(set.slice(i + 1));\n i--;\n }\n return set;\n }\n /**\n Tests whether there is a mark of this type in the given set.\n */\n isInSet(set) {\n for (let i = 0; i < set.length; i++)\n if (set[i].type == this)\n return set[i];\n }\n /**\n @internal\n */\n checkAttrs(attrs) {\n checkAttrs(this.attrs, attrs, \"mark\", this.name);\n }\n /**\n Queries whether a given mark type is\n [excluded](https://prosemirror.net/docs/ref/#model.MarkSpec.excludes) by this one.\n */\n excludes(other) {\n return this.excluded.indexOf(other) > -1;\n }\n}\n/**\nA document schema. Holds [node](https://prosemirror.net/docs/ref/#model.NodeType) and [mark\ntype](https://prosemirror.net/docs/ref/#model.MarkType) objects for the nodes and marks that may\noccur in conforming documents, and provides functionality for\ncreating and deserializing such documents.\n\nWhen given, the type parameters provide the names of the nodes and\nmarks in this schema.\n*/\nclass Schema {\n /**\n Construct a schema from a schema [specification](https://prosemirror.net/docs/ref/#model.SchemaSpec).\n */\n constructor(spec) {\n /**\n The [linebreak\n replacement](https://prosemirror.net/docs/ref/#model.NodeSpec.linebreakReplacement) node defined\n in this schema, if any.\n */\n this.linebreakReplacement = null;\n /**\n An object for storing whatever values modules may want to\n compute and cache per schema. (If you want to store something\n in it, try to use property names unlikely to clash.)\n */\n this.cached = Object.create(null);\n let instanceSpec = this.spec = {};\n for (let prop in spec)\n instanceSpec[prop] = spec[prop];\n instanceSpec.nodes = OrderedMap.from(spec.nodes),\n instanceSpec.marks = OrderedMap.from(spec.marks || {}),\n this.nodes = NodeType.compile(this.spec.nodes, this);\n this.marks = MarkType.compile(this.spec.marks, this);\n let contentExprCache = Object.create(null);\n for (let prop in this.nodes) {\n if (prop in this.marks)\n throw new RangeError(prop + \" can not be both a node and a mark\");\n let type = this.nodes[prop], contentExpr = type.spec.content || \"\", markExpr = type.spec.marks;\n type.contentMatch = contentExprCache[contentExpr] ||\n (contentExprCache[contentExpr] = ContentMatch.parse(contentExpr, this.nodes));\n type.inlineContent = type.contentMatch.inlineContent;\n if (type.spec.linebreakReplacement) {\n if (this.linebreakReplacement)\n throw new RangeError(\"Multiple linebreak nodes defined\");\n if (!type.isInline || !type.isLeaf)\n throw new RangeError(\"Linebreak replacement nodes must be inline leaf nodes\");\n this.linebreakReplacement = type;\n }\n type.markSet = markExpr == \"_\" ? null :\n markExpr ? gatherMarks(this, markExpr.split(\" \")) :\n markExpr == \"\" || !type.inlineContent ? [] : null;\n }\n for (let prop in this.marks) {\n let type = this.marks[prop], excl = type.spec.excludes;\n type.excluded = excl == null ? [type] : excl == \"\" ? [] : gatherMarks(this, excl.split(\" \"));\n }\n this.nodeFromJSON = this.nodeFromJSON.bind(this);\n this.markFromJSON = this.markFromJSON.bind(this);\n this.topNodeType = this.nodes[this.spec.topNode || \"doc\"];\n this.cached.wrappings = Object.create(null);\n }\n /**\n Create a node in this schema. The `type` may be a string or a\n `NodeType` instance. Attributes will be extended with defaults,\n `content` may be a `Fragment`, `null`, a `Node`, or an array of\n nodes.\n */\n node(type, attrs = null, content, marks) {\n if (typeof type == \"string\")\n type = this.nodeType(type);\n else if (!(type instanceof NodeType))\n throw new RangeError(\"Invalid node type: \" + type);\n else if (type.schema != this)\n throw new RangeError(\"Node type from different schema used (\" + type.name + \")\");\n return type.createChecked(attrs, content, marks);\n }\n /**\n Create a text node in the schema. Empty text nodes are not\n allowed.\n */\n text(text, marks) {\n let type = this.nodes.text;\n return new TextNode(type, type.defaultAttrs, text, Mark.setFrom(marks));\n }\n /**\n Create a mark with the given type and attributes.\n */\n mark(type, attrs) {\n if (typeof type == \"string\")\n type = this.marks[type];\n return type.create(attrs);\n }\n /**\n Deserialize a node from its JSON representation. This method is\n bound.\n */\n nodeFromJSON(json) {\n return Node.fromJSON(this, json);\n }\n /**\n Deserialize a mark from its JSON representation. This method is\n bound.\n */\n markFromJSON(json) {\n return Mark.fromJSON(this, json);\n }\n /**\n @internal\n */\n nodeType(name) {\n let found = this.nodes[name];\n if (!found)\n throw new RangeError(\"Unknown node type: \" + name);\n return found;\n }\n}\nfunction gatherMarks(schema, marks) {\n let found = [];\n for (let i = 0; i < marks.length; i++) {\n let name = marks[i], mark = schema.marks[name], ok = mark;\n if (mark) {\n found.push(mark);\n }\n else {\n for (let prop in schema.marks) {\n let mark = schema.marks[prop];\n if (name == \"_\" || (mark.spec.group && mark.spec.group.split(\" \").indexOf(name) > -1))\n found.push(ok = mark);\n }\n }\n if (!ok)\n throw new SyntaxError(\"Unknown mark type: '\" + marks[i] + \"'\");\n }\n return found;\n}\n\nfunction isTagRule(rule) { return rule.tag != null; }\nfunction isStyleRule(rule) { return rule.style != null; }\n/**\nA DOM parser represents a strategy for parsing DOM content into a\nProseMirror document conforming to a given schema. Its behavior is\ndefined by an array of [rules](https://prosemirror.net/docs/ref/#model.ParseRule).\n*/\nclass DOMParser {\n /**\n Create a parser that targets the given schema, using the given\n parsing rules.\n */\n constructor(\n /**\n The schema into which the parser parses.\n */\n schema, \n /**\n The set of [parse rules](https://prosemirror.net/docs/ref/#model.ParseRule) that the parser\n uses, in order of precedence.\n */\n rules) {\n this.schema = schema;\n this.rules = rules;\n /**\n @internal\n */\n this.tags = [];\n /**\n @internal\n */\n this.styles = [];\n let matchedStyles = this.matchedStyles = [];\n rules.forEach(rule => {\n if (isTagRule(rule)) {\n this.tags.push(rule);\n }\n else if (isStyleRule(rule)) {\n let prop = /[^=]*/.exec(rule.style)[0];\n if (matchedStyles.indexOf(prop) < 0)\n matchedStyles.push(prop);\n this.styles.push(rule);\n }\n });\n // Only normalize list elements when lists in the schema can't directly contain themselves\n this.normalizeLists = !this.tags.some(r => {\n if (!/^(ul|ol)\\b/.test(r.tag) || !r.node)\n return false;\n let node = schema.nodes[r.node];\n return node.contentMatch.matchType(node);\n });\n }\n /**\n Parse a document from the content of a DOM node.\n */\n parse(dom, options = {}) {\n let context = new ParseContext(this, options, false);\n context.addAll(dom, options.from, options.to);\n return context.finish();\n }\n /**\n Parses the content of the given DOM node, like\n [`parse`](https://prosemirror.net/docs/ref/#model.DOMParser.parse), and takes the same set of\n options. But unlike that method, which produces a whole node,\n this one returns a slice that is open at the sides, meaning that\n the schema constraints aren't applied to the start of nodes to\n the left of the input and the end of nodes at the end.\n */\n parseSlice(dom, options = {}) {\n let context = new ParseContext(this, options, true);\n context.addAll(dom, options.from, options.to);\n return Slice.maxOpen(context.finish());\n }\n /**\n @internal\n */\n matchTag(dom, context, after) {\n for (let i = after ? this.tags.indexOf(after) + 1 : 0; i < this.tags.length; i++) {\n let rule = this.tags[i];\n if (matches(dom, rule.tag) &&\n (rule.namespace === undefined || dom.namespaceURI == rule.namespace) &&\n (!rule.context || context.matchesContext(rule.context))) {\n if (rule.getAttrs) {\n let result = rule.getAttrs(dom);\n if (result === false)\n continue;\n rule.attrs = result || undefined;\n }\n return rule;\n }\n }\n }\n /**\n @internal\n */\n matchStyle(prop, value, context, after) {\n for (let i = after ? this.styles.indexOf(after) + 1 : 0; i < this.styles.length; i++) {\n let rule = this.styles[i], style = rule.style;\n if (style.indexOf(prop) != 0 ||\n rule.context && !context.matchesContext(rule.context) ||\n // Test that the style string either precisely matches the prop,\n // or has an '=' sign after the prop, followed by the given\n // value.\n style.length > prop.length &&\n (style.charCodeAt(prop.length) != 61 || style.slice(prop.length + 1) != value))\n continue;\n if (rule.getAttrs) {\n let result = rule.getAttrs(value);\n if (result === false)\n continue;\n rule.attrs = result || undefined;\n }\n return rule;\n }\n }\n /**\n @internal\n */\n static schemaRules(schema) {\n let result = [];\n function insert(rule) {\n let priority = rule.priority == null ? 50 : rule.priority, i = 0;\n for (; i < result.length; i++) {\n let next = result[i], nextPriority = next.priority == null ? 50 : next.priority;\n if (nextPriority < priority)\n break;\n }\n result.splice(i, 0, rule);\n }\n for (let name in schema.marks) {\n let rules = schema.marks[name].spec.parseDOM;\n if (rules)\n rules.forEach(rule => {\n insert(rule = copy(rule));\n if (!(rule.mark || rule.ignore || rule.clearMark))\n rule.mark = name;\n });\n }\n for (let name in schema.nodes) {\n let rules = schema.nodes[name].spec.parseDOM;\n if (rules)\n rules.forEach(rule => {\n insert(rule = copy(rule));\n if (!(rule.node || rule.ignore || rule.mark))\n rule.node = name;\n });\n }\n return result;\n }\n /**\n Construct a DOM parser using the parsing rules listed in a\n schema's [node specs](https://prosemirror.net/docs/ref/#model.NodeSpec.parseDOM), reordered by\n [priority](https://prosemirror.net/docs/ref/#model.ParseRule.priority).\n */\n static fromSchema(schema) {\n return schema.cached.domParser ||\n (schema.cached.domParser = new DOMParser(schema, DOMParser.schemaRules(schema)));\n }\n}\nconst blockTags = {\n address: true, article: true, aside: true, blockquote: true, canvas: true,\n dd: true, div: true, dl: true, fieldset: true, figcaption: true, figure: true,\n footer: true, form: true, h1: true, h2: true, h3: true, h4: true, h5: true,\n h6: true, header: true, hgroup: true, hr: true, li: true, noscript: true, ol: true,\n output: true, p: true, pre: true, section: true, table: true, tfoot: true, ul: true\n};\nconst ignoreTags = {\n head: true, noscript: true, object: true, script: true, style: true, title: true\n};\nconst listTags = { ol: true, ul: true };\n// Using a bitfield for node context options\nconst OPT_PRESERVE_WS = 1, OPT_PRESERVE_WS_FULL = 2, OPT_OPEN_LEFT = 4;\nfunction wsOptionsFor(type, preserveWhitespace, base) {\n if (preserveWhitespace != null)\n return (preserveWhitespace ? OPT_PRESERVE_WS : 0) |\n (preserveWhitespace === \"full\" ? OPT_PRESERVE_WS_FULL : 0);\n return type && type.whitespace == \"pre\" ? OPT_PRESERVE_WS | OPT_PRESERVE_WS_FULL : base & ~OPT_OPEN_LEFT;\n}\nclass NodeContext {\n constructor(type, attrs, \n // Marks applied to this node itself\n marks, \n // Marks that can't apply here, but will be used in children if possible\n pendingMarks, solid, match, options) {\n this.type = type;\n this.attrs = attrs;\n this.marks = marks;\n this.pendingMarks = pendingMarks;\n this.solid = solid;\n this.options = options;\n this.content = [];\n // Marks applied to the node's children\n this.activeMarks = Mark.none;\n // Nested Marks with same type\n this.stashMarks = [];\n this.match = match || (options & OPT_OPEN_LEFT ? null : type.contentMatch);\n }\n findWrapping(node) {\n if (!this.match) {\n if (!this.type)\n return [];\n let fill = this.type.contentMatch.fillBefore(Fragment.from(node));\n if (fill) {\n this.match = this.type.contentMatch.matchFragment(fill);\n }\n else {\n let start = this.type.contentMatch, wrap;\n if (wrap = start.findWrapping(node.type)) {\n this.match = start;\n return wrap;\n }\n else {\n return null;\n }\n }\n }\n return this.match.findWrapping(node.type);\n }\n finish(openEnd) {\n if (!(this.options & OPT_PRESERVE_WS)) { // Strip trailing whitespace\n let last = this.content[this.content.length - 1], m;\n if (last && last.isText && (m = /[ \\t\\r\\n\\u000c]+$/.exec(last.text))) {\n let text = last;\n if (last.text.length == m[0].length)\n this.content.pop();\n else\n this.content[this.content.length - 1] = text.withText(text.text.slice(0, text.text.length - m[0].length));\n }\n }\n let content = Fragment.from(this.content);\n if (!openEnd && this.match)\n content = content.append(this.match.fillBefore(Fragment.empty, true));\n return this.type ? this.type.create(this.attrs, content, this.marks) : content;\n }\n popFromStashMark(mark) {\n for (let i = this.stashMarks.length - 1; i >= 0; i--)\n if (mark.eq(this.stashMarks[i]))\n return this.stashMarks.splice(i, 1)[0];\n }\n applyPending(nextType) {\n for (let i = 0, pending = this.pendingMarks; i < pending.length; i++) {\n let mark = pending[i];\n if ((this.type ? this.type.allowsMarkType(mark.type) : markMayApply(mark.type, nextType)) &&\n !mark.isInSet(this.activeMarks)) {\n this.activeMarks = mark.addToSet(this.activeMarks);\n this.pendingMarks = mark.removeFromSet(this.pendingMarks);\n }\n }\n }\n inlineContext(node) {\n if (this.type)\n return this.type.inlineContent;\n if (this.content.length)\n return this.content[0].isInline;\n return node.parentNode && !blockTags.hasOwnProperty(node.parentNode.nodeName.toLowerCase());\n }\n}\nclass ParseContext {\n constructor(\n // The parser we are using.\n parser, \n // The options passed to this parse.\n options, isOpen) {\n this.parser = parser;\n this.options = options;\n this.isOpen = isOpen;\n this.open = 0;\n let topNode = options.topNode, topContext;\n let topOptions = wsOptionsFor(null, options.preserveWhitespace, 0) | (isOpen ? OPT_OPEN_LEFT : 0);\n if (topNode)\n topContext = new NodeContext(topNode.type, topNode.attrs, Mark.none, Mark.none, true, options.topMatch || topNode.type.contentMatch, topOptions);\n else if (isOpen)\n topContext = new NodeContext(null, null, Mark.none, Mark.none, true, null, topOptions);\n else\n topContext = new NodeContext(parser.schema.topNodeType, null, Mark.none, Mark.none, true, null, topOptions);\n this.nodes = [topContext];\n this.find = options.findPositions;\n this.needsBlock = false;\n }\n get top() {\n return this.nodes[this.open];\n }\n // Add a DOM node to the content. Text is inserted as text node,\n // otherwise, the node is passed to `addElement` or, if it has a\n // `style` attribute, `addElementWithStyles`.\n addDOM(dom) {\n if (dom.nodeType == 3)\n this.addTextNode(dom);\n else if (dom.nodeType == 1)\n this.addElement(dom);\n }\n withStyleRules(dom, f) {\n let style = dom.style;\n if (!style || !style.length)\n return f();\n let marks = this.readStyles(dom.style);\n if (!marks)\n return; // A style with ignore: true\n let [addMarks, removeMarks] = marks, top = this.top;\n for (let i = 0; i < removeMarks.length; i++)\n this.removePendingMark(removeMarks[i], top);\n for (let i = 0; i < addMarks.length; i++)\n this.addPendingMark(addMarks[i]);\n f();\n for (let i = 0; i < addMarks.length; i++)\n this.removePendingMark(addMarks[i], top);\n for (let i = 0; i < removeMarks.length; i++)\n this.addPendingMark(removeMarks[i]);\n }\n addTextNode(dom) {\n let value = dom.nodeValue;\n let top = this.top;\n if (top.options & OPT_PRESERVE_WS_FULL ||\n top.inlineContext(dom) ||\n /[^ \\t\\r\\n\\u000c]/.test(value)) {\n if (!(top.options & OPT_PRESERVE_WS)) {\n value = value.replace(/[ \\t\\r\\n\\u000c]+/g, \" \");\n // If this starts with whitespace, and there is no node before it, or\n // a hard break, or a text node that ends with whitespace, strip the\n // leading space.\n if (/^[ \\t\\r\\n\\u000c]/.test(value) && this.open == this.nodes.length - 1) {\n let nodeBefore = top.content[top.content.length - 1];\n let domNodeBefore = dom.previousSibling;\n if (!nodeBefore ||\n (domNodeBefore && domNodeBefore.nodeName == 'BR') ||\n (nodeBefore.isText && /[ \\t\\r\\n\\u000c]$/.test(nodeBefore.text)))\n value = value.slice(1);\n }\n }\n else if (!(top.options & OPT_PRESERVE_WS_FULL)) {\n value = value.replace(/\\r?\\n|\\r/g, \" \");\n }\n else {\n value = value.replace(/\\r\\n?/g, \"\\n\");\n }\n if (value)\n this.insertNode(this.parser.schema.text(value));\n this.findInText(dom);\n }\n else {\n this.findInside(dom);\n }\n }\n // Try to find a handler for the given tag and use that to parse. If\n // none is found, the element's content nodes are added directly.\n addElement(dom, matchAfter) {\n let name = dom.nodeName.toLowerCase(), ruleID;\n if (listTags.hasOwnProperty(name) && this.parser.normalizeLists)\n normalizeList(dom);\n let rule = (this.options.ruleFromNode && this.options.ruleFromNode(dom)) ||\n (ruleID = this.parser.matchTag(dom, this, matchAfter));\n if (rule ? rule.ignore : ignoreTags.hasOwnProperty(name)) {\n this.findInside(dom);\n this.ignoreFallback(dom);\n }\n else if (!rule || rule.skip || rule.closeParent) {\n if (rule && rule.closeParent)\n this.open = Math.max(0, this.open - 1);\n else if (rule && rule.skip.nodeType)\n dom = rule.skip;\n let sync, top = this.top, oldNeedsBlock = this.needsBlock;\n if (blockTags.hasOwnProperty(name)) {\n if (top.content.length && top.content[0].isInline && this.open) {\n this.open--;\n top = this.top;\n }\n sync = true;\n if (!top.type)\n this.needsBlock = true;\n }\n else if (!dom.firstChild) {\n this.leafFallback(dom);\n return;\n }\n if (rule && rule.skip)\n this.addAll(dom);\n else\n this.withStyleRules(dom, () => this.addAll(dom));\n if (sync)\n this.sync(top);\n this.needsBlock = oldNeedsBlock;\n }\n else {\n this.withStyleRules(dom, () => {\n this.addElementByRule(dom, rule, rule.consuming === false ? ruleID : undefined);\n });\n }\n }\n // Called for leaf DOM nodes that would otherwise be ignored\n leafFallback(dom) {\n if (dom.nodeName == \"BR\" && this.top.type && this.top.type.inlineContent)\n this.addTextNode(dom.ownerDocument.createTextNode(\"\\n\"));\n }\n // Called for ignored nodes\n ignoreFallback(dom) {\n // Ignored BR nodes should at least create an inline context\n if (dom.nodeName == \"BR\" && (!this.top.type || !this.top.type.inlineContent))\n this.findPlace(this.parser.schema.text(\"-\"));\n }\n // Run any style parser associated with the node's styles. Either\n // return an array of marks, or null to indicate some of the styles\n // had a rule with `ignore` set.\n readStyles(styles) {\n let add = Mark.none, remove = Mark.none;\n // Because many properties will only show up in 'normalized' form\n // in `style.item` (i.e. text-decoration becomes\n // text-decoration-line, text-decoration-color, etc), we directly\n // query the styles mentioned in our rules instead of iterating\n // over the items.\n if (styles.length)\n for (let i = 0; i < this.parser.matchedStyles.length; i++) {\n let name = this.parser.matchedStyles[i], value = styles.getPropertyValue(name);\n if (value)\n for (let after = undefined;;) {\n let rule = this.parser.matchStyle(name, value, this, after);\n if (!rule)\n break;\n if (rule.ignore)\n return null;\n if (rule.clearMark) {\n this.top.pendingMarks.concat(this.top.activeMarks).forEach(m => {\n if (rule.clearMark(m))\n remove = m.addToSet(remove);\n });\n }\n else {\n add = this.parser.schema.marks[rule.mark].create(rule.attrs).addToSet(add);\n }\n if (rule.consuming === false)\n after = rule;\n else\n break;\n }\n }\n return [add, remove];\n }\n // Look up a handler for the given node. If none are found, return\n // false. Otherwise, apply it, use its return value to drive the way\n // the node's content is wrapped, and return true.\n addElementByRule(dom, rule, continueAfter) {\n let sync, nodeType, mark;\n if (rule.node) {\n nodeType = this.parser.schema.nodes[rule.node];\n if (!nodeType.isLeaf) {\n sync = this.enter(nodeType, rule.attrs || null, rule.preserveWhitespace);\n }\n else if (!this.insertNode(nodeType.create(rule.attrs))) {\n this.leafFallback(dom);\n }\n }\n else {\n let markType = this.parser.schema.marks[rule.mark];\n mark = markType.create(rule.attrs);\n this.addPendingMark(mark);\n }\n let startIn = this.top;\n if (nodeType && nodeType.isLeaf) {\n this.findInside(dom);\n }\n else if (continueAfter) {\n this.addElement(dom, continueAfter);\n }\n else if (rule.getContent) {\n this.findInside(dom);\n rule.getContent(dom, this.parser.schema).forEach(node => this.insertNode(node));\n }\n else {\n let contentDOM = dom;\n if (typeof rule.contentElement == \"string\")\n contentDOM = dom.querySelector(rule.contentElement);\n else if (typeof rule.contentElement == \"function\")\n contentDOM = rule.contentElement(dom);\n else if (rule.contentElement)\n contentDOM = rule.contentElement;\n this.findAround(dom, contentDOM, true);\n this.addAll(contentDOM);\n }\n if (sync && this.sync(startIn))\n this.open--;\n if (mark)\n this.removePendingMark(mark, startIn);\n }\n // Add all child nodes between `startIndex` and `endIndex` (or the\n // whole node, if not given). If `sync` is passed, use it to\n // synchronize after every block element.\n addAll(parent, startIndex, endIndex) {\n let index = startIndex || 0;\n for (let dom = startIndex ? parent.childNodes[startIndex] : parent.firstChild, end = endIndex == null ? null : parent.childNodes[endIndex]; dom != end; dom = dom.nextSibling, ++index) {\n this.findAtPoint(parent, index);\n this.addDOM(dom);\n }\n this.findAtPoint(parent, index);\n }\n // Try to find a way to fit the given node type into the current\n // context. May add intermediate wrappers and/or leave non-solid\n // nodes that we're in.\n findPlace(node) {\n let route, sync;\n for (let depth = this.open; depth >= 0; depth--) {\n let cx = this.nodes[depth];\n let found = cx.findWrapping(node);\n if (found && (!route || route.length > found.length)) {\n route = found;\n sync = cx;\n if (!found.length)\n break;\n }\n if (cx.solid)\n break;\n }\n if (!route)\n return false;\n this.sync(sync);\n for (let i = 0; i < route.length; i++)\n this.enterInner(route[i], null, false);\n return true;\n }\n // Try to insert the given node, adjusting the context when needed.\n insertNode(node) {\n if (node.isInline && this.needsBlock && !this.top.type) {\n let block = this.textblockFromContext();\n if (block)\n this.enterInner(block);\n }\n if (this.findPlace(node)) {\n this.closeExtra();\n let top = this.top;\n top.applyPending(node.type);\n if (top.match)\n top.match = top.match.matchType(node.type);\n let marks = top.activeMarks;\n for (let i = 0; i < node.marks.length; i++)\n if (!top.type || top.type.allowsMarkType(node.marks[i].type))\n marks = node.marks[i].addToSet(marks);\n top.content.push(node.mark(marks));\n return true;\n }\n return false;\n }\n // Try to start a node of the given type, adjusting the context when\n // necessary.\n enter(type, attrs, preserveWS) {\n let ok = this.findPlace(type.create(attrs));\n if (ok)\n this.enterInner(type, attrs, true, preserveWS);\n return ok;\n }\n // Open a node of the given type\n enterInner(type, attrs = null, solid = false, preserveWS) {\n this.closeExtra();\n let top = this.top;\n top.applyPending(type);\n top.match = top.match && top.match.matchType(type);\n let options = wsOptionsFor(type, preserveWS, top.options);\n if ((top.options & OPT_OPEN_LEFT) && top.content.length == 0)\n options |= OPT_OPEN_LEFT;\n this.nodes.push(new NodeContext(type, attrs, top.activeMarks, top.pendingMarks, solid, null, options));\n this.open++;\n }\n // Make sure all nodes above this.open are finished and added to\n // their parents\n closeExtra(openEnd = false) {\n let i = this.nodes.length - 1;\n if (i > this.open) {\n for (; i > this.open; i--)\n this.nodes[i - 1].content.push(this.nodes[i].finish(openEnd));\n this.nodes.length = this.open + 1;\n }\n }\n finish() {\n this.open = 0;\n this.closeExtra(this.isOpen);\n return this.nodes[0].finish(this.isOpen || this.options.topOpen);\n }\n sync(to) {\n for (let i = this.open; i >= 0; i--)\n if (this.nodes[i] == to) {\n this.open = i;\n return true;\n }\n return false;\n }\n get currentPos() {\n this.closeExtra();\n let pos = 0;\n for (let i = this.open; i >= 0; i--) {\n let content = this.nodes[i].content;\n for (let j = content.length - 1; j >= 0; j--)\n pos += content[j].nodeSize;\n if (i)\n pos++;\n }\n return pos;\n }\n findAtPoint(parent, offset) {\n if (this.find)\n for (let i = 0; i < this.find.length; i++) {\n if (this.find[i].node == parent && this.find[i].offset == offset)\n this.find[i].pos = this.currentPos;\n }\n }\n findInside(parent) {\n if (this.find)\n for (let i = 0; i < this.find.length; i++) {\n if (this.find[i].pos == null && parent.nodeType == 1 && parent.contains(this.find[i].node))\n this.find[i].pos = this.currentPos;\n }\n }\n findAround(parent, content, before) {\n if (parent != content && this.find)\n for (let i = 0; i < this.find.length; i++) {\n if (this.find[i].pos == null && parent.nodeType == 1 && parent.contains(this.find[i].node)) {\n let pos = content.compareDocumentPosition(this.find[i].node);\n if (pos & (before ? 2 : 4))\n this.find[i].pos = this.currentPos;\n }\n }\n }\n findInText(textNode) {\n if (this.find)\n for (let i = 0; i < this.find.length; i++) {\n if (this.find[i].node == textNode)\n this.find[i].pos = this.currentPos - (textNode.nodeValue.length - this.find[i].offset);\n }\n }\n // Determines whether the given context string matches this context.\n matchesContext(context) {\n if (context.indexOf(\"|\") > -1)\n return context.split(/\\s*\\|\\s*/).some(this.matchesContext, this);\n let parts = context.split(\"/\");\n let option = this.options.context;\n let useRoot = !this.isOpen && (!option || option.parent.type == this.nodes[0].type);\n let minDepth = -(option ? option.depth + 1 : 0) + (useRoot ? 0 : 1);\n let match = (i, depth) => {\n for (; i >= 0; i--) {\n let part = parts[i];\n if (part == \"\") {\n if (i == parts.length - 1 || i == 0)\n continue;\n for (; depth >= minDepth; depth--)\n if (match(i - 1, depth))\n return true;\n return false;\n }\n else {\n let next = depth > 0 || (depth == 0 && useRoot) ? this.nodes[depth].type\n : option && depth >= minDepth ? option.node(depth - minDepth).type\n : null;\n if (!next || (next.name != part && next.groups.indexOf(part) == -1))\n return false;\n depth--;\n }\n }\n return true;\n };\n return match(parts.length - 1, this.open);\n }\n textblockFromContext() {\n let $context = this.options.context;\n if ($context)\n for (let d = $context.depth; d >= 0; d--) {\n let deflt = $context.node(d).contentMatchAt($context.indexAfter(d)).defaultType;\n if (deflt && deflt.isTextblock && deflt.defaultAttrs)\n return deflt;\n }\n for (let name in this.parser.schema.nodes) {\n let type = this.parser.schema.nodes[name];\n if (type.isTextblock && type.defaultAttrs)\n return type;\n }\n }\n addPendingMark(mark) {\n let found = findSameMarkInSet(mark, this.top.pendingMarks);\n if (found)\n this.top.stashMarks.push(found);\n this.top.pendingMarks = mark.addToSet(this.top.pendingMarks);\n }\n removePendingMark(mark, upto) {\n for (let depth = this.open; depth >= 0; depth--) {\n let level = this.nodes[depth];\n let found = level.pendingMarks.lastIndexOf(mark);\n if (found > -1) {\n level.pendingMarks = mark.removeFromSet(level.pendingMarks);\n }\n else {\n level.activeMarks = mark.removeFromSet(level.activeMarks);\n let stashMark = level.popFromStashMark(mark);\n if (stashMark && level.type && level.type.allowsMarkType(stashMark.type))\n level.activeMarks = stashMark.addToSet(level.activeMarks);\n }\n if (level == upto)\n break;\n }\n }\n}\n// Kludge to work around directly nested list nodes produced by some\n// tools and allowed by browsers to mean that the nested list is\n// actually part of the list item above it.\nfunction normalizeList(dom) {\n for (let child = dom.firstChild, prevItem = null; child; child = child.nextSibling) {\n let name = child.nodeType == 1 ? child.nodeName.toLowerCase() : null;\n if (name && listTags.hasOwnProperty(name) && prevItem) {\n prevItem.appendChild(child);\n child = prevItem;\n }\n else if (name == \"li\") {\n prevItem = child;\n }\n else if (name) {\n prevItem = null;\n }\n }\n}\n// Apply a CSS selector.\nfunction matches(dom, selector) {\n return (dom.matches || dom.msMatchesSelector || dom.webkitMatchesSelector || dom.mozMatchesSelector).call(dom, selector);\n}\nfunction copy(obj) {\n let copy = {};\n for (let prop in obj)\n copy[prop] = obj[prop];\n return copy;\n}\n// Used when finding a mark at the top level of a fragment parse.\n// Checks whether it would be reasonable to apply a given mark type to\n// a given node, by looking at the way the mark occurs in the schema.\nfunction markMayApply(markType, nodeType) {\n let nodes = nodeType.schema.nodes;\n for (let name in nodes) {\n let parent = nodes[name];\n if (!parent.allowsMarkType(markType))\n continue;\n let seen = [], scan = (match) => {\n seen.push(match);\n for (let i = 0; i < match.edgeCount; i++) {\n let { type, next } = match.edge(i);\n if (type == nodeType)\n return true;\n if (seen.indexOf(next) < 0 && scan(next))\n return true;\n }\n };\n if (scan(parent.contentMatch))\n return true;\n }\n}\nfunction findSameMarkInSet(mark, set) {\n for (let i = 0; i < set.length; i++) {\n if (mark.eq(set[i]))\n return set[i];\n }\n}\n\n/**\nA DOM serializer knows how to convert ProseMirror nodes and\nmarks of various types to DOM nodes.\n*/\nclass DOMSerializer {\n /**\n Create a serializer. `nodes` should map node names to functions\n that take a node and return a description of the corresponding\n DOM. `marks` does the same for mark names, but also gets an\n argument that tells it whether the mark's content is block or\n inline content (for typical use, it'll always be inline). A mark\n serializer may be `null` to indicate that marks of that type\n should not be serialized.\n */\n constructor(\n /**\n The node serialization functions.\n */\n nodes, \n /**\n The mark serialization functions.\n */\n marks) {\n this.nodes = nodes;\n this.marks = marks;\n }\n /**\n Serialize the content of this fragment to a DOM fragment. When\n not in the browser, the `document` option, containing a DOM\n document, should be passed so that the serializer can create\n nodes.\n */\n serializeFragment(fragment, options = {}, target) {\n if (!target)\n target = doc(options).createDocumentFragment();\n let top = target, active = [];\n fragment.forEach(node => {\n if (active.length || node.marks.length) {\n let keep = 0, rendered = 0;\n while (keep < active.length && rendered < node.marks.length) {\n let next = node.marks[rendered];\n if (!this.marks[next.type.name]) {\n rendered++;\n continue;\n }\n if (!next.eq(active[keep][0]) || next.type.spec.spanning === false)\n break;\n keep++;\n rendered++;\n }\n while (keep < active.length)\n top = active.pop()[1];\n while (rendered < node.marks.length) {\n let add = node.marks[rendered++];\n let markDOM = this.serializeMark(add, node.isInline, options);\n if (markDOM) {\n active.push([add, top]);\n top.appendChild(markDOM.dom);\n top = markDOM.contentDOM || markDOM.dom;\n }\n }\n }\n top.appendChild(this.serializeNodeInner(node, options));\n });\n return target;\n }\n /**\n @internal\n */\n serializeNodeInner(node, options) {\n let { dom, contentDOM } = renderSpec(doc(options), this.nodes[node.type.name](node), null, node.attrs);\n if (contentDOM) {\n if (node.isLeaf)\n throw new RangeError(\"Content hole not allowed in a leaf node spec\");\n this.serializeFragment(node.content, options, contentDOM);\n }\n return dom;\n }\n /**\n Serialize this node to a DOM node. This can be useful when you\n need to serialize a part of a document, as opposed to the whole\n document. To serialize a whole document, use\n [`serializeFragment`](https://prosemirror.net/docs/ref/#model.DOMSerializer.serializeFragment) on\n its [content](https://prosemirror.net/docs/ref/#model.Node.content).\n */\n serializeNode(node, options = {}) {\n let dom = this.serializeNodeInner(node, options);\n for (let i = node.marks.length - 1; i >= 0; i--) {\n let wrap = this.serializeMark(node.marks[i], node.isInline, options);\n if (wrap) {\n (wrap.contentDOM || wrap.dom).appendChild(dom);\n dom = wrap.dom;\n }\n }\n return dom;\n }\n /**\n @internal\n */\n serializeMark(mark, inline, options = {}) {\n let toDOM = this.marks[mark.type.name];\n return toDOM && renderSpec(doc(options), toDOM(mark, inline), null, mark.attrs);\n }\n /**\n Render an [output spec](https://prosemirror.net/docs/ref/#model.DOMOutputSpec) to a DOM node. If\n the spec has a hole (zero) in it, `contentDOM` will point at the\n node with the hole.\n */\n static renderSpec(doc, structure, xmlNS = null) {\n return renderSpec(doc, structure, xmlNS);\n }\n /**\n Build a serializer using the [`toDOM`](https://prosemirror.net/docs/ref/#model.NodeSpec.toDOM)\n properties in a schema's node and mark specs.\n */\n static fromSchema(schema) {\n return schema.cached.domSerializer ||\n (schema.cached.domSerializer = new DOMSerializer(this.nodesFromSchema(schema), this.marksFromSchema(schema)));\n }\n /**\n Gather the serializers in a schema's node specs into an object.\n This can be useful as a base to build a custom serializer from.\n */\n static nodesFromSchema(schema) {\n let result = gatherToDOM(schema.nodes);\n if (!result.text)\n result.text = node => node.text;\n return result;\n }\n /**\n Gather the serializers in a schema's mark specs into an object.\n */\n static marksFromSchema(schema) {\n return gatherToDOM(schema.marks);\n }\n}\nfunction gatherToDOM(obj) {\n let result = {};\n for (let name in obj) {\n let toDOM = obj[name].spec.toDOM;\n if (toDOM)\n result[name] = toDOM;\n }\n return result;\n}\nfunction doc(options) {\n return options.document || window.document;\n}\nconst suspiciousAttributeCache = new WeakMap();\nfunction suspiciousAttributes(attrs) {\n let value = suspiciousAttributeCache.get(attrs);\n if (value === undefined)\n suspiciousAttributeCache.set(attrs, value = suspiciousAttributesInner(attrs));\n return value;\n}\nfunction suspiciousAttributesInner(attrs) {\n let result = null;\n function scan(value) {\n if (value && typeof value == \"object\") {\n if (Array.isArray(value)) {\n if (typeof value[0] == \"string\") {\n if (!result)\n result = [];\n result.push(value);\n }\n else {\n for (let i = 0; i < value.length; i++)\n scan(value[i]);\n }\n }\n else {\n for (let prop in value)\n scan(value[prop]);\n }\n }\n }\n scan(attrs);\n return result;\n}\nfunction renderSpec(doc, structure, xmlNS, blockArraysIn) {\n if (typeof structure == \"string\")\n return { dom: doc.createTextNode(structure) };\n if (structure.nodeType != null)\n return { dom: structure };\n if (structure.dom && structure.dom.nodeType != null)\n return structure;\n let tagName = structure[0], suspicious;\n if (typeof tagName != \"string\")\n throw new RangeError(\"Invalid array passed to renderSpec\");\n if (blockArraysIn && (suspicious = suspiciousAttributes(blockArraysIn)) &&\n suspicious.indexOf(structure) > -1)\n throw new RangeError(\"Using an array from an attribute object as a DOM spec. This may be an attempted cross site scripting attack.\");\n let space = tagName.indexOf(\" \");\n if (space > 0) {\n xmlNS = tagName.slice(0, space);\n tagName = tagName.slice(space + 1);\n }\n let contentDOM;\n let dom = (xmlNS ? doc.createElementNS(xmlNS, tagName) : doc.createElement(tagName));\n let attrs = structure[1], start = 1;\n if (attrs && typeof attrs == \"object\" && attrs.nodeType == null && !Array.isArray(attrs)) {\n start = 2;\n for (let name in attrs)\n if (attrs[name] != null) {\n let space = name.indexOf(\" \");\n if (space > 0)\n dom.setAttributeNS(name.slice(0, space), name.slice(space + 1), attrs[name]);\n else\n dom.setAttribute(name, attrs[name]);\n }\n }\n for (let i = start; i < structure.length; i++) {\n let child = structure[i];\n if (child === 0) {\n if (i < structure.length - 1 || i > start)\n throw new RangeError(\"Content hole must be the only child of its parent node\");\n return { dom, contentDOM: dom };\n }\n else {\n let { dom: inner, contentDOM: innerContent } = renderSpec(doc, child, xmlNS, blockArraysIn);\n dom.appendChild(inner);\n if (innerContent) {\n if (contentDOM)\n throw new RangeError(\"Multiple content holes\");\n contentDOM = innerContent;\n }\n }\n }\n return { dom, contentDOM };\n}\n\nexport { ContentMatch, DOMParser, DOMSerializer, Fragment, Mark, MarkType, Node, NodeRange, NodeType, ReplaceError, ResolvedPos, Schema, Slice };\n","import { ReplaceError, Slice, Fragment, MarkType, Mark } from 'prosemirror-model';\n\n// Recovery values encode a range index and an offset. They are\n// represented as numbers, because tons of them will be created when\n// mapping, for example, a large number of decorations. The number's\n// lower 16 bits provide the index, the remaining bits the offset.\n//\n// Note: We intentionally don't use bit shift operators to en- and\n// decode these, since those clip to 32 bits, which we might in rare\n// cases want to overflow. A 64-bit float can represent 48-bit\n// integers precisely.\nconst lower16 = 0xffff;\nconst factor16 = Math.pow(2, 16);\nfunction makeRecover(index, offset) { return index + offset * factor16; }\nfunction recoverIndex(value) { return value & lower16; }\nfunction recoverOffset(value) { return (value - (value & lower16)) / factor16; }\nconst DEL_BEFORE = 1, DEL_AFTER = 2, DEL_ACROSS = 4, DEL_SIDE = 8;\n/**\nAn object representing a mapped position with extra\ninformation.\n*/\nclass MapResult {\n /**\n @internal\n */\n constructor(\n /**\n The mapped version of the position.\n */\n pos, \n /**\n @internal\n */\n delInfo, \n /**\n @internal\n */\n recover) {\n this.pos = pos;\n this.delInfo = delInfo;\n this.recover = recover;\n }\n /**\n Tells you whether the position was deleted, that is, whether the\n step removed the token on the side queried (via the `assoc`)\n argument from the document.\n */\n get deleted() { return (this.delInfo & DEL_SIDE) > 0; }\n /**\n Tells you whether the token before the mapped position was deleted.\n */\n get deletedBefore() { return (this.delInfo & (DEL_BEFORE | DEL_ACROSS)) > 0; }\n /**\n True when the token after the mapped position was deleted.\n */\n get deletedAfter() { return (this.delInfo & (DEL_AFTER | DEL_ACROSS)) > 0; }\n /**\n Tells whether any of the steps mapped through deletes across the\n position (including both the token before and after the\n position).\n */\n get deletedAcross() { return (this.delInfo & DEL_ACROSS) > 0; }\n}\n/**\nA map describing the deletions and insertions made by a step, which\ncan be used to find the correspondence between positions in the\npre-step version of a document and the same position in the\npost-step version.\n*/\nclass StepMap {\n /**\n Create a position map. The modifications to the document are\n represented as an array of numbers, in which each group of three\n represents a modified chunk as `[start, oldSize, newSize]`.\n */\n constructor(\n /**\n @internal\n */\n ranges, \n /**\n @internal\n */\n inverted = false) {\n this.ranges = ranges;\n this.inverted = inverted;\n if (!ranges.length && StepMap.empty)\n return StepMap.empty;\n }\n /**\n @internal\n */\n recover(value) {\n let diff = 0, index = recoverIndex(value);\n if (!this.inverted)\n for (let i = 0; i < index; i++)\n diff += this.ranges[i * 3 + 2] - this.ranges[i * 3 + 1];\n return this.ranges[index * 3] + diff + recoverOffset(value);\n }\n mapResult(pos, assoc = 1) { return this._map(pos, assoc, false); }\n map(pos, assoc = 1) { return this._map(pos, assoc, true); }\n /**\n @internal\n */\n _map(pos, assoc, simple) {\n let diff = 0, oldIndex = this.inverted ? 2 : 1, newIndex = this.inverted ? 1 : 2;\n for (let i = 0; i < this.ranges.length; i += 3) {\n let start = this.ranges[i] - (this.inverted ? diff : 0);\n if (start > pos)\n break;\n let oldSize = this.ranges[i + oldIndex], newSize = this.ranges[i + newIndex], end = start + oldSize;\n if (pos <= end) {\n let side = !oldSize ? assoc : pos == start ? -1 : pos == end ? 1 : assoc;\n let result = start + diff + (side < 0 ? 0 : newSize);\n if (simple)\n return result;\n let recover = pos == (assoc < 0 ? start : end) ? null : makeRecover(i / 3, pos - start);\n let del = pos == start ? DEL_AFTER : pos == end ? DEL_BEFORE : DEL_ACROSS;\n if (assoc < 0 ? pos != start : pos != end)\n del |= DEL_SIDE;\n return new MapResult(result, del, recover);\n }\n diff += newSize - oldSize;\n }\n return simple ? pos + diff : new MapResult(pos + diff, 0, null);\n }\n /**\n @internal\n */\n touches(pos, recover) {\n let diff = 0, index = recoverIndex(recover);\n let oldIndex = this.inverted ? 2 : 1, newIndex = this.inverted ? 1 : 2;\n for (let i = 0; i < this.ranges.length; i += 3) {\n let start = this.ranges[i] - (this.inverted ? diff : 0);\n if (start > pos)\n break;\n let oldSize = this.ranges[i + oldIndex], end = start + oldSize;\n if (pos <= end && i == index * 3)\n return true;\n diff += this.ranges[i + newIndex] - oldSize;\n }\n return false;\n }\n /**\n Calls the given function on each of the changed ranges included in\n this map.\n */\n forEach(f) {\n let oldIndex = this.inverted ? 2 : 1, newIndex = this.inverted ? 1 : 2;\n for (let i = 0, diff = 0; i < this.ranges.length; i += 3) {\n let start = this.ranges[i], oldStart = start - (this.inverted ? diff : 0), newStart = start + (this.inverted ? 0 : diff);\n let oldSize = this.ranges[i + oldIndex], newSize = this.ranges[i + newIndex];\n f(oldStart, oldStart + oldSize, newStart, newStart + newSize);\n diff += newSize - oldSize;\n }\n }\n /**\n Create an inverted version of this map. The result can be used to\n map positions in the post-step document to the pre-step document.\n */\n invert() {\n return new StepMap(this.ranges, !this.inverted);\n }\n /**\n @internal\n */\n toString() {\n return (this.inverted ? \"-\" : \"\") + JSON.stringify(this.ranges);\n }\n /**\n Create a map that moves all positions by offset `n` (which may be\n negative). This can be useful when applying steps meant for a\n sub-document to a larger document, or vice-versa.\n */\n static offset(n) {\n return n == 0 ? StepMap.empty : new StepMap(n < 0 ? [0, -n, 0] : [0, 0, n]);\n }\n}\n/**\nA StepMap that contains no changed ranges.\n*/\nStepMap.empty = new StepMap([]);\n/**\nA mapping represents a pipeline of zero or more [step\nmaps](https://prosemirror.net/docs/ref/#transform.StepMap). It has special provisions for losslessly\nhandling mapping positions through a series of steps in which some\nsteps are inverted versions of earlier steps. (This comes up when\n‘[rebasing](/docs/guide/#transform.rebasing)’ steps for\ncollaboration or history management.)\n*/\nclass Mapping {\n /**\n Create a new mapping with the given position maps.\n */\n constructor(\n /**\n The step maps in this mapping.\n */\n maps = [], \n /**\n @internal\n */\n mirror, \n /**\n The starting position in the `maps` array, used when `map` or\n `mapResult` is called.\n */\n from = 0, \n /**\n The end position in the `maps` array.\n */\n to = maps.length) {\n this.maps = maps;\n this.mirror = mirror;\n this.from = from;\n this.to = to;\n }\n /**\n Create a mapping that maps only through a part of this one.\n */\n slice(from = 0, to = this.maps.length) {\n return new Mapping(this.maps, this.mirror, from, to);\n }\n /**\n @internal\n */\n copy() {\n return new Mapping(this.maps.slice(), this.mirror && this.mirror.slice(), this.from, this.to);\n }\n /**\n Add a step map to the end of this mapping. If `mirrors` is\n given, it should be the index of the step map that is the mirror\n image of this one.\n */\n appendMap(map, mirrors) {\n this.to = this.maps.push(map);\n if (mirrors != null)\n this.setMirror(this.maps.length - 1, mirrors);\n }\n /**\n Add all the step maps in a given mapping to this one (preserving\n mirroring information).\n */\n appendMapping(mapping) {\n for (let i = 0, startSize = this.maps.length; i < mapping.maps.length; i++) {\n let mirr = mapping.getMirror(i);\n this.appendMap(mapping.maps[i], mirr != null && mirr < i ? startSize + mirr : undefined);\n }\n }\n /**\n Finds the offset of the step map that mirrors the map at the\n given offset, in this mapping (as per the second argument to\n `appendMap`).\n */\n getMirror(n) {\n if (this.mirror)\n for (let i = 0; i < this.mirror.length; i++)\n if (this.mirror[i] == n)\n return this.mirror[i + (i % 2 ? -1 : 1)];\n }\n /**\n @internal\n */\n setMirror(n, m) {\n if (!this.mirror)\n this.mirror = [];\n this.mirror.push(n, m);\n }\n /**\n Append the inverse of the given mapping to this one.\n */\n appendMappingInverted(mapping) {\n for (let i = mapping.maps.length - 1, totalSize = this.maps.length + mapping.maps.length; i >= 0; i--) {\n let mirr = mapping.getMirror(i);\n this.appendMap(mapping.maps[i].invert(), mirr != null && mirr > i ? totalSize - mirr - 1 : undefined);\n }\n }\n /**\n Create an inverted version of this mapping.\n */\n invert() {\n let inverse = new Mapping;\n inverse.appendMappingInverted(this);\n return inverse;\n }\n /**\n Map a position through this mapping.\n */\n map(pos, assoc = 1) {\n if (this.mirror)\n return this._map(pos, assoc, true);\n for (let i = this.from; i < this.to; i++)\n pos = this.maps[i].map(pos, assoc);\n return pos;\n }\n /**\n Map a position through this mapping, returning a mapping\n result.\n */\n mapResult(pos, assoc = 1) { return this._map(pos, assoc, false); }\n /**\n @internal\n */\n _map(pos, assoc, simple) {\n let delInfo = 0;\n for (let i = this.from; i < this.to; i++) {\n let map = this.maps[i], result = map.mapResult(pos, assoc);\n if (result.recover != null) {\n let corr = this.getMirror(i);\n if (corr != null && corr > i && corr < this.to) {\n i = corr;\n pos = this.maps[corr].recover(result.recover);\n continue;\n }\n }\n delInfo |= result.delInfo;\n pos = result.pos;\n }\n return simple ? pos : new MapResult(pos, delInfo, null);\n }\n}\n\nconst stepsByID = Object.create(null);\n/**\nA step object represents an atomic change. It generally applies\nonly to the document it was created for, since the positions\nstored in it will only make sense for that document.\n\nNew steps are defined by creating classes that extend `Step`,\noverriding the `apply`, `invert`, `map`, `getMap` and `fromJSON`\nmethods, and registering your class with a unique\nJSON-serialization identifier using\n[`Step.jsonID`](https://prosemirror.net/docs/ref/#transform.Step^jsonID).\n*/\nclass Step {\n /**\n Get the step map that represents the changes made by this step,\n and which can be used to transform between positions in the old\n and the new document.\n */\n getMap() { return StepMap.empty; }\n /**\n Try to merge this step with another one, to be applied directly\n after it. Returns the merged step when possible, null if the\n steps can't be merged.\n */\n merge(other) { return null; }\n /**\n Deserialize a step from its JSON representation. Will call\n through to the step class' own implementation of this method.\n */\n static fromJSON(schema, json) {\n if (!json || !json.stepType)\n throw new RangeError(\"Invalid input for Step.fromJSON\");\n let type = stepsByID[json.stepType];\n if (!type)\n throw new RangeError(`No step type ${json.stepType} defined`);\n return type.fromJSON(schema, json);\n }\n /**\n To be able to serialize steps to JSON, each step needs a string\n ID to attach to its JSON representation. Use this method to\n register an ID for your step classes. Try to pick something\n that's unlikely to clash with steps from other modules.\n */\n static jsonID(id, stepClass) {\n if (id in stepsByID)\n throw new RangeError(\"Duplicate use of step JSON ID \" + id);\n stepsByID[id] = stepClass;\n stepClass.prototype.jsonID = id;\n return stepClass;\n }\n}\n/**\nThe result of [applying](https://prosemirror.net/docs/ref/#transform.Step.apply) a step. Contains either a\nnew document or a failure value.\n*/\nclass StepResult {\n /**\n @internal\n */\n constructor(\n /**\n The transformed document, if successful.\n */\n doc, \n /**\n The failure message, if unsuccessful.\n */\n failed) {\n this.doc = doc;\n this.failed = failed;\n }\n /**\n Create a successful step result.\n */\n static ok(doc) { return new StepResult(doc, null); }\n /**\n Create a failed step result.\n */\n static fail(message) { return new StepResult(null, message); }\n /**\n Call [`Node.replace`](https://prosemirror.net/docs/ref/#model.Node.replace) with the given\n arguments. Create a successful result if it succeeds, and a\n failed one if it throws a `ReplaceError`.\n */\n static fromReplace(doc, from, to, slice) {\n try {\n return StepResult.ok(doc.replace(from, to, slice));\n }\n catch (e) {\n if (e instanceof ReplaceError)\n return StepResult.fail(e.message);\n throw e;\n }\n }\n}\n\nfunction mapFragment(fragment, f, parent) {\n let mapped = [];\n for (let i = 0; i < fragment.childCount; i++) {\n let child = fragment.child(i);\n if (child.content.size)\n child = child.copy(mapFragment(child.content, f, child));\n if (child.isInline)\n child = f(child, parent, i);\n mapped.push(child);\n }\n return Fragment.fromArray(mapped);\n}\n/**\nAdd a mark to all inline content between two positions.\n*/\nclass AddMarkStep extends Step {\n /**\n Create a mark step.\n */\n constructor(\n /**\n The start of the marked range.\n */\n from, \n /**\n The end of the marked range.\n */\n to, \n /**\n The mark to add.\n */\n mark) {\n super();\n this.from = from;\n this.to = to;\n this.mark = mark;\n }\n apply(doc) {\n let oldSlice = doc.slice(this.from, this.to), $from = doc.resolve(this.from);\n let parent = $from.node($from.sharedDepth(this.to));\n let slice = new Slice(mapFragment(oldSlice.content, (node, parent) => {\n if (!node.isAtom || !parent.type.allowsMarkType(this.mark.type))\n return node;\n return node.mark(this.mark.addToSet(node.marks));\n }, parent), oldSlice.openStart, oldSlice.openEnd);\n return StepResult.fromReplace(doc, this.from, this.to, slice);\n }\n invert() {\n return new RemoveMarkStep(this.from, this.to, this.mark);\n }\n map(mapping) {\n let from = mapping.mapResult(this.from, 1), to = mapping.mapResult(this.to, -1);\n if (from.deleted && to.deleted || from.pos >= to.pos)\n return null;\n return new AddMarkStep(from.pos, to.pos, this.mark);\n }\n merge(other) {\n if (other instanceof AddMarkStep &&\n other.mark.eq(this.mark) &&\n this.from <= other.to && this.to >= other.from)\n return new AddMarkStep(Math.min(this.from, other.from), Math.max(this.to, other.to), this.mark);\n return null;\n }\n toJSON() {\n return { stepType: \"addMark\", mark: this.mark.toJSON(),\n from: this.from, to: this.to };\n }\n /**\n @internal\n */\n static fromJSON(schema, json) {\n if (typeof json.from != \"number\" || typeof json.to != \"number\")\n throw new RangeError(\"Invalid input for AddMarkStep.fromJSON\");\n return new AddMarkStep(json.from, json.to, schema.markFromJSON(json.mark));\n }\n}\nStep.jsonID(\"addMark\", AddMarkStep);\n/**\nRemove a mark from all inline content between two positions.\n*/\nclass RemoveMarkStep extends Step {\n /**\n Create a mark-removing step.\n */\n constructor(\n /**\n The start of the unmarked range.\n */\n from, \n /**\n The end of the unmarked range.\n */\n to, \n /**\n The mark to remove.\n */\n mark) {\n super();\n this.from = from;\n this.to = to;\n this.mark = mark;\n }\n apply(doc) {\n let oldSlice = doc.slice(this.from, this.to);\n let slice = new Slice(mapFragment(oldSlice.content, node => {\n return node.mark(this.mark.removeFromSet(node.marks));\n }, doc), oldSlice.openStart, oldSlice.openEnd);\n return StepResult.fromReplace(doc, this.from, this.to, slice);\n }\n invert() {\n return new AddMarkStep(this.from, this.to, this.mark);\n }\n map(mapping) {\n let from = mapping.mapResult(this.from, 1), to = mapping.mapResult(this.to, -1);\n if (from.deleted && to.deleted || from.pos >= to.pos)\n return null;\n return new RemoveMarkStep(from.pos, to.pos, this.mark);\n }\n merge(other) {\n if (other instanceof RemoveMarkStep &&\n other.mark.eq(this.mark) &&\n this.from <= other.to && this.to >= other.from)\n return new RemoveMarkStep(Math.min(this.from, other.from), Math.max(this.to, other.to), this.mark);\n return null;\n }\n toJSON() {\n return { stepType: \"removeMark\", mark: this.mark.toJSON(),\n from: this.from, to: this.to };\n }\n /**\n @internal\n */\n static fromJSON(schema, json) {\n if (typeof json.from != \"number\" || typeof json.to != \"number\")\n throw new RangeError(\"Invalid input for RemoveMarkStep.fromJSON\");\n return new RemoveMarkStep(json.from, json.to, schema.markFromJSON(json.mark));\n }\n}\nStep.jsonID(\"removeMark\", RemoveMarkStep);\n/**\nAdd a mark to a specific node.\n*/\nclass AddNodeMarkStep extends Step {\n /**\n Create a node mark step.\n */\n constructor(\n /**\n The position of the target node.\n */\n pos, \n /**\n The mark to add.\n */\n mark) {\n super();\n this.pos = pos;\n this.mark = mark;\n }\n apply(doc) {\n let node = doc.nodeAt(this.pos);\n if (!node)\n return StepResult.fail(\"No node at mark step's position\");\n let updated = node.type.create(node.attrs, null, this.mark.addToSet(node.marks));\n return StepResult.fromReplace(doc, this.pos, this.pos + 1, new Slice(Fragment.from(updated), 0, node.isLeaf ? 0 : 1));\n }\n invert(doc) {\n let node = doc.nodeAt(this.pos);\n if (node) {\n let newSet = this.mark.addToSet(node.marks);\n if (newSet.length == node.marks.length) {\n for (let i = 0; i < node.marks.length; i++)\n if (!node.marks[i].isInSet(newSet))\n return new AddNodeMarkStep(this.pos, node.marks[i]);\n return new AddNodeMarkStep(this.pos, this.mark);\n }\n }\n return new RemoveNodeMarkStep(this.pos, this.mark);\n }\n map(mapping) {\n let pos = mapping.mapResult(this.pos, 1);\n return pos.deletedAfter ? null : new AddNodeMarkStep(pos.pos, this.mark);\n }\n toJSON() {\n return { stepType: \"addNodeMark\", pos: this.pos, mark: this.mark.toJSON() };\n }\n /**\n @internal\n */\n static fromJSON(schema, json) {\n if (typeof json.pos != \"number\")\n throw new RangeError(\"Invalid input for AddNodeMarkStep.fromJSON\");\n return new AddNodeMarkStep(json.pos, schema.markFromJSON(json.mark));\n }\n}\nStep.jsonID(\"addNodeMark\", AddNodeMarkStep);\n/**\nRemove a mark from a specific node.\n*/\nclass RemoveNodeMarkStep extends Step {\n /**\n Create a mark-removing step.\n */\n constructor(\n /**\n The position of the target node.\n */\n pos, \n /**\n The mark to remove.\n */\n mark) {\n super();\n this.pos = pos;\n this.mark = mark;\n }\n apply(doc) {\n let node = doc.nodeAt(this.pos);\n if (!node)\n return StepResult.fail(\"No node at mark step's position\");\n let updated = node.type.create(node.attrs, null, this.mark.removeFromSet(node.marks));\n return StepResult.fromReplace(doc, this.pos, this.pos + 1, new Slice(Fragment.from(updated), 0, node.isLeaf ? 0 : 1));\n }\n invert(doc) {\n let node = doc.nodeAt(this.pos);\n if (!node || !this.mark.isInSet(node.marks))\n return this;\n return new AddNodeMarkStep(this.pos, this.mark);\n }\n map(mapping) {\n let pos = mapping.mapResult(this.pos, 1);\n return pos.deletedAfter ? null : new RemoveNodeMarkStep(pos.pos, this.mark);\n }\n toJSON() {\n return { stepType: \"removeNodeMark\", pos: this.pos, mark: this.mark.toJSON() };\n }\n /**\n @internal\n */\n static fromJSON(schema, json) {\n if (typeof json.pos != \"number\")\n throw new RangeError(\"Invalid input for RemoveNodeMarkStep.fromJSON\");\n return new RemoveNodeMarkStep(json.pos, schema.markFromJSON(json.mark));\n }\n}\nStep.jsonID(\"removeNodeMark\", RemoveNodeMarkStep);\n\n/**\nReplace a part of the document with a slice of new content.\n*/\nclass ReplaceStep extends Step {\n /**\n The given `slice` should fit the 'gap' between `from` and\n `to`—the depths must line up, and the surrounding nodes must be\n able to be joined with the open sides of the slice. When\n `structure` is true, the step will fail if the content between\n from and to is not just a sequence of closing and then opening\n tokens (this is to guard against rebased replace steps\n overwriting something they weren't supposed to).\n */\n constructor(\n /**\n The start position of the replaced range.\n */\n from, \n /**\n The end position of the replaced range.\n */\n to, \n /**\n The slice to insert.\n */\n slice, \n /**\n @internal\n */\n structure = false) {\n super();\n this.from = from;\n this.to = to;\n this.slice = slice;\n this.structure = structure;\n }\n apply(doc) {\n if (this.structure && contentBetween(doc, this.from, this.to))\n return StepResult.fail(\"Structure replace would overwrite content\");\n return StepResult.fromReplace(doc, this.from, this.to, this.slice);\n }\n getMap() {\n return new StepMap([this.from, this.to - this.from, this.slice.size]);\n }\n invert(doc) {\n return new ReplaceStep(this.from, this.from + this.slice.size, doc.slice(this.from, this.to));\n }\n map(mapping) {\n let from = mapping.mapResult(this.from, 1), to = mapping.mapResult(this.to, -1);\n if (from.deletedAcross && to.deletedAcross)\n return null;\n return new ReplaceStep(from.pos, Math.max(from.pos, to.pos), this.slice);\n }\n merge(other) {\n if (!(other instanceof ReplaceStep) || other.structure || this.structure)\n return null;\n if (this.from + this.slice.size == other.from && !this.slice.openEnd && !other.slice.openStart) {\n let slice = this.slice.size + other.slice.size == 0 ? Slice.empty\n : new Slice(this.slice.content.append(other.slice.content), this.slice.openStart, other.slice.openEnd);\n return new ReplaceStep(this.from, this.to + (other.to - other.from), slice, this.structure);\n }\n else if (other.to == this.from && !this.slice.openStart && !other.slice.openEnd) {\n let slice = this.slice.size + other.slice.size == 0 ? Slice.empty\n : new Slice(other.slice.content.append(this.slice.content), other.slice.openStart, this.slice.openEnd);\n return new ReplaceStep(other.from, this.to, slice, this.structure);\n }\n else {\n return null;\n }\n }\n toJSON() {\n let json = { stepType: \"replace\", from: this.from, to: this.to };\n if (this.slice.size)\n json.slice = this.slice.toJSON();\n if (this.structure)\n json.structure = true;\n return json;\n }\n /**\n @internal\n */\n static fromJSON(schema, json) {\n if (typeof json.from != \"number\" || typeof json.to != \"number\")\n throw new RangeError(\"Invalid input for ReplaceStep.fromJSON\");\n return new ReplaceStep(json.from, json.to, Slice.fromJSON(schema, json.slice), !!json.structure);\n }\n}\nStep.jsonID(\"replace\", ReplaceStep);\n/**\nReplace a part of the document with a slice of content, but\npreserve a range of the replaced content by moving it into the\nslice.\n*/\nclass ReplaceAroundStep extends Step {\n /**\n Create a replace-around step with the given range and gap.\n `insert` should be the point in the slice into which the content\n of the gap should be moved. `structure` has the same meaning as\n it has in the [`ReplaceStep`](https://prosemirror.net/docs/ref/#transform.ReplaceStep) class.\n */\n constructor(\n /**\n The start position of the replaced range.\n */\n from, \n /**\n The end position of the replaced range.\n */\n to, \n /**\n The start of preserved range.\n */\n gapFrom, \n /**\n The end of preserved range.\n */\n gapTo, \n /**\n The slice to insert.\n */\n slice, \n /**\n The position in the slice where the preserved range should be\n inserted.\n */\n insert, \n /**\n @internal\n */\n structure = false) {\n super();\n this.from = from;\n this.to = to;\n this.gapFrom = gapFrom;\n this.gapTo = gapTo;\n this.slice = slice;\n this.insert = insert;\n this.structure = structure;\n }\n apply(doc) {\n if (this.structure && (contentBetween(doc, this.from, this.gapFrom) ||\n contentBetween(doc, this.gapTo, this.to)))\n return StepResult.fail(\"Structure gap-replace would overwrite content\");\n let gap = doc.slice(this.gapFrom, this.gapTo);\n if (gap.openStart || gap.openEnd)\n return StepResult.fail(\"Gap is not a flat range\");\n let inserted = this.slice.insertAt(this.insert, gap.content);\n if (!inserted)\n return StepResult.fail(\"Content does not fit in gap\");\n return StepResult.fromReplace(doc, this.from, this.to, inserted);\n }\n getMap() {\n return new StepMap([this.from, this.gapFrom - this.from, this.insert,\n this.gapTo, this.to - this.gapTo, this.slice.size - this.insert]);\n }\n invert(doc) {\n let gap = this.gapTo - this.gapFrom;\n return new ReplaceAroundStep(this.from, this.from + this.slice.size + gap, this.from + this.insert, this.from + this.insert + gap, doc.slice(this.from, this.to).removeBetween(this.gapFrom - this.from, this.gapTo - this.from), this.gapFrom - this.from, this.structure);\n }\n map(mapping) {\n let from = mapping.mapResult(this.from, 1), to = mapping.mapResult(this.to, -1);\n let gapFrom = mapping.map(this.gapFrom, -1), gapTo = mapping.map(this.gapTo, 1);\n if ((from.deletedAcross && to.deletedAcross) || gapFrom < from.pos || gapTo > to.pos)\n return null;\n return new ReplaceAroundStep(from.pos, to.pos, gapFrom, gapTo, this.slice, this.insert, this.structure);\n }\n toJSON() {\n let json = { stepType: \"replaceAround\", from: this.from, to: this.to,\n gapFrom: this.gapFrom, gapTo: this.gapTo, insert: this.insert };\n if (this.slice.size)\n json.slice = this.slice.toJSON();\n if (this.structure)\n json.structure = true;\n return json;\n }\n /**\n @internal\n */\n static fromJSON(schema, json) {\n if (typeof json.from != \"number\" || typeof json.to != \"number\" ||\n typeof json.gapFrom != \"number\" || typeof json.gapTo != \"number\" || typeof json.insert != \"number\")\n throw new RangeError(\"Invalid input for ReplaceAroundStep.fromJSON\");\n return new ReplaceAroundStep(json.from, json.to, json.gapFrom, json.gapTo, Slice.fromJSON(schema, json.slice), json.insert, !!json.structure);\n }\n}\nStep.jsonID(\"replaceAround\", ReplaceAroundStep);\nfunction contentBetween(doc, from, to) {\n let $from = doc.resolve(from), dist = to - from, depth = $from.depth;\n while (dist > 0 && depth > 0 && $from.indexAfter(depth) == $from.node(depth).childCount) {\n depth--;\n dist--;\n }\n if (dist > 0) {\n let next = $from.node(depth).maybeChild($from.indexAfter(depth));\n while (dist > 0) {\n if (!next || next.isLeaf)\n return true;\n next = next.firstChild;\n dist--;\n }\n }\n return false;\n}\n\nfunction addMark(tr, from, to, mark) {\n let removed = [], added = [];\n let removing, adding;\n tr.doc.nodesBetween(from, to, (node, pos, parent) => {\n if (!node.isInline)\n return;\n let marks = node.marks;\n if (!mark.isInSet(marks) && parent.type.allowsMarkType(mark.type)) {\n let start = Math.max(pos, from), end = Math.min(pos + node.nodeSize, to);\n let newSet = mark.addToSet(marks);\n for (let i = 0; i < marks.length; i++) {\n if (!marks[i].isInSet(newSet)) {\n if (removing && removing.to == start && removing.mark.eq(marks[i]))\n removing.to = end;\n else\n removed.push(removing = new RemoveMarkStep(start, end, marks[i]));\n }\n }\n if (adding && adding.to == start)\n adding.to = end;\n else\n added.push(adding = new AddMarkStep(start, end, mark));\n }\n });\n removed.forEach(s => tr.step(s));\n added.forEach(s => tr.step(s));\n}\nfunction removeMark(tr, from, to, mark) {\n let matched = [], step = 0;\n tr.doc.nodesBetween(from, to, (node, pos) => {\n if (!node.isInline)\n return;\n step++;\n let toRemove = null;\n if (mark instanceof MarkType) {\n let set = node.marks, found;\n while (found = mark.isInSet(set)) {\n (toRemove || (toRemove = [])).push(found);\n set = found.removeFromSet(set);\n }\n }\n else if (mark) {\n if (mark.isInSet(node.marks))\n toRemove = [mark];\n }\n else {\n toRemove = node.marks;\n }\n if (toRemove && toRemove.length) {\n let end = Math.min(pos + node.nodeSize, to);\n for (let i = 0; i < toRemove.length; i++) {\n let style = toRemove[i], found;\n for (let j = 0; j < matched.length; j++) {\n let m = matched[j];\n if (m.step == step - 1 && style.eq(matched[j].style))\n found = m;\n }\n if (found) {\n found.to = end;\n found.step = step;\n }\n else {\n matched.push({ style, from: Math.max(pos, from), to: end, step });\n }\n }\n }\n });\n matched.forEach(m => tr.step(new RemoveMarkStep(m.from, m.to, m.style)));\n}\nfunction clearIncompatible(tr, pos, parentType, match = parentType.contentMatch) {\n let node = tr.doc.nodeAt(pos);\n let replSteps = [], cur = pos + 1;\n for (let i = 0; i < node.childCount; i++) {\n let child = node.child(i), end = cur + child.nodeSize;\n let allowed = match.matchType(child.type);\n if (!allowed) {\n replSteps.push(new ReplaceStep(cur, end, Slice.empty));\n }\n else {\n match = allowed;\n for (let j = 0; j < child.marks.length; j++)\n if (!parentType.allowsMarkType(child.marks[j].type))\n tr.step(new RemoveMarkStep(cur, end, child.marks[j]));\n if (child.isText && !parentType.spec.code) {\n let m, newline = /\\r?\\n|\\r/g, slice;\n while (m = newline.exec(child.text)) {\n if (!slice)\n slice = new Slice(Fragment.from(parentType.schema.text(\" \", parentType.allowedMarks(child.marks))), 0, 0);\n replSteps.push(new ReplaceStep(cur + m.index, cur + m.index + m[0].length, slice));\n }\n }\n }\n cur = end;\n }\n if (!match.validEnd) {\n let fill = match.fillBefore(Fragment.empty, true);\n tr.replace(cur, cur, new Slice(fill, 0, 0));\n }\n for (let i = replSteps.length - 1; i >= 0; i--)\n tr.step(replSteps[i]);\n}\n\nfunction canCut(node, start, end) {\n return (start == 0 || node.canReplace(start, node.childCount)) &&\n (end == node.childCount || node.canReplace(0, end));\n}\n/**\nTry to find a target depth to which the content in the given range\ncan be lifted. Will not go across\n[isolating](https://prosemirror.net/docs/ref/#model.NodeSpec.isolating) parent nodes.\n*/\nfunction liftTarget(range) {\n let parent = range.parent;\n let content = parent.content.cutByIndex(range.startIndex, range.endIndex);\n for (let depth = range.depth;; --depth) {\n let node = range.$from.node(depth);\n let index = range.$from.index(depth), endIndex = range.$to.indexAfter(depth);\n if (depth < range.depth && node.canReplace(index, endIndex, content))\n return depth;\n if (depth == 0 || node.type.spec.isolating || !canCut(node, index, endIndex))\n break;\n }\n return null;\n}\nfunction lift(tr, range, target) {\n let { $from, $to, depth } = range;\n let gapStart = $from.before(depth + 1), gapEnd = $to.after(depth + 1);\n let start = gapStart, end = gapEnd;\n let before = Fragment.empty, openStart = 0;\n for (let d = depth, splitting = false; d > target; d--)\n if (splitting || $from.index(d) > 0) {\n splitting = true;\n before = Fragment.from($from.node(d).copy(before));\n openStart++;\n }\n else {\n start--;\n }\n let after = Fragment.empty, openEnd = 0;\n for (let d = depth, splitting = false; d > target; d--)\n if (splitting || $to.after(d + 1) < $to.end(d)) {\n splitting = true;\n after = Fragment.from($to.node(d).copy(after));\n openEnd++;\n }\n else {\n end++;\n }\n tr.step(new ReplaceAroundStep(start, end, gapStart, gapEnd, new Slice(before.append(after), openStart, openEnd), before.size - openStart, true));\n}\n/**\nTry to find a valid way to wrap the content in the given range in a\nnode of the given type. May introduce extra nodes around and inside\nthe wrapper node, if necessary. Returns null if no valid wrapping\ncould be found. When `innerRange` is given, that range's content is\nused as the content to fit into the wrapping, instead of the\ncontent of `range`.\n*/\nfunction findWrapping(range, nodeType, attrs = null, innerRange = range) {\n let around = findWrappingOutside(range, nodeType);\n let inner = around && findWrappingInside(innerRange, nodeType);\n if (!inner)\n return null;\n return around.map(withAttrs)\n .concat({ type: nodeType, attrs }).concat(inner.map(withAttrs));\n}\nfunction withAttrs(type) { return { type, attrs: null }; }\nfunction findWrappingOutside(range, type) {\n let { parent, startIndex, endIndex } = range;\n let around = parent.contentMatchAt(startIndex).findWrapping(type);\n if (!around)\n return null;\n let outer = around.length ? around[0] : type;\n return parent.canReplaceWith(startIndex, endIndex, outer) ? around : null;\n}\nfunction findWrappingInside(range, type) {\n let { parent, startIndex, endIndex } = range;\n let inner = parent.child(startIndex);\n let inside = type.contentMatch.findWrapping(inner.type);\n if (!inside)\n return null;\n let lastType = inside.length ? inside[inside.length - 1] : type;\n let innerMatch = lastType.contentMatch;\n for (let i = startIndex; innerMatch && i < endIndex; i++)\n innerMatch = innerMatch.matchType(parent.child(i).type);\n if (!innerMatch || !innerMatch.validEnd)\n return null;\n return inside;\n}\nfunction wrap(tr, range, wrappers) {\n let content = Fragment.empty;\n for (let i = wrappers.length - 1; i >= 0; i--) {\n if (content.size) {\n let match = wrappers[i].type.contentMatch.matchFragment(content);\n if (!match || !match.validEnd)\n throw new RangeError(\"Wrapper type given to Transform.wrap does not form valid content of its parent wrapper\");\n }\n content = Fragment.from(wrappers[i].type.create(wrappers[i].attrs, content));\n }\n let start = range.start, end = range.end;\n tr.step(new ReplaceAroundStep(start, end, start, end, new Slice(content, 0, 0), wrappers.length, true));\n}\nfunction setBlockType(tr, from, to, type, attrs) {\n if (!type.isTextblock)\n throw new RangeError(\"Type given to setBlockType should be a textblock\");\n let mapFrom = tr.steps.length;\n tr.doc.nodesBetween(from, to, (node, pos) => {\n if (node.isTextblock && !node.hasMarkup(type, attrs) && canChangeType(tr.doc, tr.mapping.slice(mapFrom).map(pos), type)) {\n // Ensure all markup that isn't allowed in the new node type is cleared\n tr.clearIncompatible(tr.mapping.slice(mapFrom).map(pos, 1), type);\n let mapping = tr.mapping.slice(mapFrom);\n let startM = mapping.map(pos, 1), endM = mapping.map(pos + node.nodeSize, 1);\n tr.step(new ReplaceAroundStep(startM, endM, startM + 1, endM - 1, new Slice(Fragment.from(type.create(attrs, null, node.marks)), 0, 0), 1, true));\n return false;\n }\n });\n}\nfunction canChangeType(doc, pos, type) {\n let $pos = doc.resolve(pos), index = $pos.index();\n return $pos.parent.canReplaceWith(index, index + 1, type);\n}\n/**\nChange the type, attributes, and/or marks of the node at `pos`.\nWhen `type` isn't given, the existing node type is preserved,\n*/\nfunction setNodeMarkup(tr, pos, type, attrs, marks) {\n let node = tr.doc.nodeAt(pos);\n if (!node)\n throw new RangeError(\"No node at given position\");\n if (!type)\n type = node.type;\n let newNode = type.create(attrs, null, marks || node.marks);\n if (node.isLeaf)\n return tr.replaceWith(pos, pos + node.nodeSize, newNode);\n if (!type.validContent(node.content))\n throw new RangeError(\"Invalid content for node type \" + type.name);\n tr.step(new ReplaceAroundStep(pos, pos + node.nodeSize, pos + 1, pos + node.nodeSize - 1, new Slice(Fragment.from(newNode), 0, 0), 1, true));\n}\n/**\nCheck whether splitting at the given position is allowed.\n*/\nfunction canSplit(doc, pos, depth = 1, typesAfter) {\n let $pos = doc.resolve(pos), base = $pos.depth - depth;\n let innerType = (typesAfter && typesAfter[typesAfter.length - 1]) || $pos.parent;\n if (base < 0 || $pos.parent.type.spec.isolating ||\n !$pos.parent.canReplace($pos.index(), $pos.parent.childCount) ||\n !innerType.type.validContent($pos.parent.content.cutByIndex($pos.index(), $pos.parent.childCount)))\n return false;\n for (let d = $pos.depth - 1, i = depth - 2; d > base; d--, i--) {\n let node = $pos.node(d), index = $pos.index(d);\n if (node.type.spec.isolating)\n return false;\n let rest = node.content.cutByIndex(index, node.childCount);\n let overrideChild = typesAfter && typesAfter[i + 1];\n if (overrideChild)\n rest = rest.replaceChild(0, overrideChild.type.create(overrideChild.attrs));\n let after = (typesAfter && typesAfter[i]) || node;\n if (!node.canReplace(index + 1, node.childCount) || !after.type.validContent(rest))\n return false;\n }\n let index = $pos.indexAfter(base);\n let baseType = typesAfter && typesAfter[0];\n return $pos.node(base).canReplaceWith(index, index, baseType ? baseType.type : $pos.node(base + 1).type);\n}\nfunction split(tr, pos, depth = 1, typesAfter) {\n let $pos = tr.doc.resolve(pos), before = Fragment.empty, after = Fragment.empty;\n for (let d = $pos.depth, e = $pos.depth - depth, i = depth - 1; d > e; d--, i--) {\n before = Fragment.from($pos.node(d).copy(before));\n let typeAfter = typesAfter && typesAfter[i];\n after = Fragment.from(typeAfter ? typeAfter.type.create(typeAfter.attrs, after) : $pos.node(d).copy(after));\n }\n tr.step(new ReplaceStep(pos, pos, new Slice(before.append(after), depth, depth), true));\n}\n/**\nTest whether the blocks before and after a given position can be\njoined.\n*/\nfunction canJoin(doc, pos) {\n let $pos = doc.resolve(pos), index = $pos.index();\n return joinable($pos.nodeBefore, $pos.nodeAfter) &&\n $pos.parent.canReplace(index, index + 1);\n}\nfunction joinable(a, b) {\n return !!(a && b && !a.isLeaf && a.canAppend(b));\n}\n/**\nFind an ancestor of the given position that can be joined to the\nblock before (or after if `dir` is positive). Returns the joinable\npoint, if any.\n*/\nfunction joinPoint(doc, pos, dir = -1) {\n let $pos = doc.resolve(pos);\n for (let d = $pos.depth;; d--) {\n let before, after, index = $pos.index(d);\n if (d == $pos.depth) {\n before = $pos.nodeBefore;\n after = $pos.nodeAfter;\n }\n else if (dir > 0) {\n before = $pos.node(d + 1);\n index++;\n after = $pos.node(d).maybeChild(index);\n }\n else {\n before = $pos.node(d).maybeChild(index - 1);\n after = $pos.node(d + 1);\n }\n if (before && !before.isTextblock && joinable(before, after) &&\n $pos.node(d).canReplace(index, index + 1))\n return pos;\n if (d == 0)\n break;\n pos = dir < 0 ? $pos.before(d) : $pos.after(d);\n }\n}\nfunction join(tr, pos, depth) {\n let step = new ReplaceStep(pos - depth, pos + depth, Slice.empty, true);\n tr.step(step);\n}\n/**\nTry to find a point where a node of the given type can be inserted\nnear `pos`, by searching up the node hierarchy when `pos` itself\nisn't a valid place but is at the start or end of a node. Return\nnull if no position was found.\n*/\nfunction insertPoint(doc, pos, nodeType) {\n let $pos = doc.resolve(pos);\n if ($pos.parent.canReplaceWith($pos.index(), $pos.index(), nodeType))\n return pos;\n if ($pos.parentOffset == 0)\n for (let d = $pos.depth - 1; d >= 0; d--) {\n let index = $pos.index(d);\n if ($pos.node(d).canReplaceWith(index, index, nodeType))\n return $pos.before(d + 1);\n if (index > 0)\n return null;\n }\n if ($pos.parentOffset == $pos.parent.content.size)\n for (let d = $pos.depth - 1; d >= 0; d--) {\n let index = $pos.indexAfter(d);\n if ($pos.node(d).canReplaceWith(index, index, nodeType))\n return $pos.after(d + 1);\n if (index < $pos.node(d).childCount)\n return null;\n }\n return null;\n}\n/**\nFinds a position at or around the given position where the given\nslice can be inserted. Will look at parent nodes' nearest boundary\nand try there, even if the original position wasn't directly at the\nstart or end of that node. Returns null when no position was found.\n*/\nfunction dropPoint(doc, pos, slice) {\n let $pos = doc.resolve(pos);\n if (!slice.content.size)\n return pos;\n let content = slice.content;\n for (let i = 0; i < slice.openStart; i++)\n content = content.firstChild.content;\n for (let pass = 1; pass <= (slice.openStart == 0 && slice.size ? 2 : 1); pass++) {\n for (let d = $pos.depth; d >= 0; d--) {\n let bias = d == $pos.depth ? 0 : $pos.pos <= ($pos.start(d + 1) + $pos.end(d + 1)) / 2 ? -1 : 1;\n let insertPos = $pos.index(d) + (bias > 0 ? 1 : 0);\n let parent = $pos.node(d), fits = false;\n if (pass == 1) {\n fits = parent.canReplace(insertPos, insertPos, content);\n }\n else {\n let wrapping = parent.contentMatchAt(insertPos).findWrapping(content.firstChild.type);\n fits = wrapping && parent.canReplaceWith(insertPos, insertPos, wrapping[0]);\n }\n if (fits)\n return bias == 0 ? $pos.pos : bias < 0 ? $pos.before(d + 1) : $pos.after(d + 1);\n }\n }\n return null;\n}\n\n/**\n‘Fit’ a slice into a given position in the document, producing a\n[step](https://prosemirror.net/docs/ref/#transform.Step) that inserts it. Will return null if\nthere's no meaningful way to insert the slice here, or inserting it\nwould be a no-op (an empty slice over an empty range).\n*/\nfunction replaceStep(doc, from, to = from, slice = Slice.empty) {\n if (from == to && !slice.size)\n return null;\n let $from = doc.resolve(from), $to = doc.resolve(to);\n // Optimization -- avoid work if it's obvious that it's not needed.\n if (fitsTrivially($from, $to, slice))\n return new ReplaceStep(from, to, slice);\n return new Fitter($from, $to, slice).fit();\n}\nfunction fitsTrivially($from, $to, slice) {\n return !slice.openStart && !slice.openEnd && $from.start() == $to.start() &&\n $from.parent.canReplace($from.index(), $to.index(), slice.content);\n}\n// Algorithm for 'placing' the elements of a slice into a gap:\n//\n// We consider the content of each node that is open to the left to be\n// independently placeable. I.e. in , when the\n// paragraph on the left is open, \"foo\" can be placed (somewhere on\n// the left side of the replacement gap) independently from p(\"bar\").\n//\n// This class tracks the state of the placement progress in the\n// following properties:\n//\n// - `frontier` holds a stack of `{type, match}` objects that\n// represent the open side of the replacement. It starts at\n// `$from`, then moves forward as content is placed, and is finally\n// reconciled with `$to`.\n//\n// - `unplaced` is a slice that represents the content that hasn't\n// been placed yet.\n//\n// - `placed` is a fragment of placed content. Its open-start value\n// is implicit in `$from`, and its open-end value in `frontier`.\nclass Fitter {\n constructor($from, $to, unplaced) {\n this.$from = $from;\n this.$to = $to;\n this.unplaced = unplaced;\n this.frontier = [];\n this.placed = Fragment.empty;\n for (let i = 0; i <= $from.depth; i++) {\n let node = $from.node(i);\n this.frontier.push({\n type: node.type,\n match: node.contentMatchAt($from.indexAfter(i))\n });\n }\n for (let i = $from.depth; i > 0; i--)\n this.placed = Fragment.from($from.node(i).copy(this.placed));\n }\n get depth() { return this.frontier.length - 1; }\n fit() {\n // As long as there's unplaced content, try to place some of it.\n // If that fails, either increase the open score of the unplaced\n // slice, or drop nodes from it, and then try again.\n while (this.unplaced.size) {\n let fit = this.findFittable();\n if (fit)\n this.placeNodes(fit);\n else\n this.openMore() || this.dropNode();\n }\n // When there's inline content directly after the frontier _and_\n // directly after `this.$to`, we must generate a `ReplaceAround`\n // step that pulls that content into the node after the frontier.\n // That means the fitting must be done to the end of the textblock\n // node after `this.$to`, not `this.$to` itself.\n let moveInline = this.mustMoveInline(), placedSize = this.placed.size - this.depth - this.$from.depth;\n let $from = this.$from, $to = this.close(moveInline < 0 ? this.$to : $from.doc.resolve(moveInline));\n if (!$to)\n return null;\n // If closing to `$to` succeeded, create a step\n let content = this.placed, openStart = $from.depth, openEnd = $to.depth;\n while (openStart && openEnd && content.childCount == 1) { // Normalize by dropping open parent nodes\n content = content.firstChild.content;\n openStart--;\n openEnd--;\n }\n let slice = new Slice(content, openStart, openEnd);\n if (moveInline > -1)\n return new ReplaceAroundStep($from.pos, moveInline, this.$to.pos, this.$to.end(), slice, placedSize);\n if (slice.size || $from.pos != this.$to.pos) // Don't generate no-op steps\n return new ReplaceStep($from.pos, $to.pos, slice);\n return null;\n }\n // Find a position on the start spine of `this.unplaced` that has\n // content that can be moved somewhere on the frontier. Returns two\n // depths, one for the slice and one for the frontier.\n findFittable() {\n let startDepth = this.unplaced.openStart;\n for (let cur = this.unplaced.content, d = 0, openEnd = this.unplaced.openEnd; d < startDepth; d++) {\n let node = cur.firstChild;\n if (cur.childCount > 1)\n openEnd = 0;\n if (node.type.spec.isolating && openEnd <= d) {\n startDepth = d;\n break;\n }\n cur = node.content;\n }\n // Only try wrapping nodes (pass 2) after finding a place without\n // wrapping failed.\n for (let pass = 1; pass <= 2; pass++) {\n for (let sliceDepth = pass == 1 ? startDepth : this.unplaced.openStart; sliceDepth >= 0; sliceDepth--) {\n let fragment, parent = null;\n if (sliceDepth) {\n parent = contentAt(this.unplaced.content, sliceDepth - 1).firstChild;\n fragment = parent.content;\n }\n else {\n fragment = this.unplaced.content;\n }\n let first = fragment.firstChild;\n for (let frontierDepth = this.depth; frontierDepth >= 0; frontierDepth--) {\n let { type, match } = this.frontier[frontierDepth], wrap, inject = null;\n // In pass 1, if the next node matches, or there is no next\n // node but the parents look compatible, we've found a\n // place.\n if (pass == 1 && (first ? match.matchType(first.type) || (inject = match.fillBefore(Fragment.from(first), false))\n : parent && type.compatibleContent(parent.type)))\n return { sliceDepth, frontierDepth, parent, inject };\n // In pass 2, look for a set of wrapping nodes that make\n // `first` fit here.\n else if (pass == 2 && first && (wrap = match.findWrapping(first.type)))\n return { sliceDepth, frontierDepth, parent, wrap };\n // Don't continue looking further up if the parent node\n // would fit here.\n if (parent && match.matchType(parent.type))\n break;\n }\n }\n }\n }\n openMore() {\n let { content, openStart, openEnd } = this.unplaced;\n let inner = contentAt(content, openStart);\n if (!inner.childCount || inner.firstChild.isLeaf)\n return false;\n this.unplaced = new Slice(content, openStart + 1, Math.max(openEnd, inner.size + openStart >= content.size - openEnd ? openStart + 1 : 0));\n return true;\n }\n dropNode() {\n let { content, openStart, openEnd } = this.unplaced;\n let inner = contentAt(content, openStart);\n if (inner.childCount <= 1 && openStart > 0) {\n let openAtEnd = content.size - openStart <= openStart + inner.size;\n this.unplaced = new Slice(dropFromFragment(content, openStart - 1, 1), openStart - 1, openAtEnd ? openStart - 1 : openEnd);\n }\n else {\n this.unplaced = new Slice(dropFromFragment(content, openStart, 1), openStart, openEnd);\n }\n }\n // Move content from the unplaced slice at `sliceDepth` to the\n // frontier node at `frontierDepth`. Close that frontier node when\n // applicable.\n placeNodes({ sliceDepth, frontierDepth, parent, inject, wrap }) {\n while (this.depth > frontierDepth)\n this.closeFrontierNode();\n if (wrap)\n for (let i = 0; i < wrap.length; i++)\n this.openFrontierNode(wrap[i]);\n let slice = this.unplaced, fragment = parent ? parent.content : slice.content;\n let openStart = slice.openStart - sliceDepth;\n let taken = 0, add = [];\n let { match, type } = this.frontier[frontierDepth];\n if (inject) {\n for (let i = 0; i < inject.childCount; i++)\n add.push(inject.child(i));\n match = match.matchFragment(inject);\n }\n // Computes the amount of (end) open nodes at the end of the\n // fragment. When 0, the parent is open, but no more. When\n // negative, nothing is open.\n let openEndCount = (fragment.size + sliceDepth) - (slice.content.size - slice.openEnd);\n // Scan over the fragment, fitting as many child nodes as\n // possible.\n while (taken < fragment.childCount) {\n let next = fragment.child(taken), matches = match.matchType(next.type);\n if (!matches)\n break;\n taken++;\n if (taken > 1 || openStart == 0 || next.content.size) { // Drop empty open nodes\n match = matches;\n add.push(closeNodeStart(next.mark(type.allowedMarks(next.marks)), taken == 1 ? openStart : 0, taken == fragment.childCount ? openEndCount : -1));\n }\n }\n let toEnd = taken == fragment.childCount;\n if (!toEnd)\n openEndCount = -1;\n this.placed = addToFragment(this.placed, frontierDepth, Fragment.from(add));\n this.frontier[frontierDepth].match = match;\n // If the parent types match, and the entire node was moved, and\n // it's not open, close this frontier node right away.\n if (toEnd && openEndCount < 0 && parent && parent.type == this.frontier[this.depth].type && this.frontier.length > 1)\n this.closeFrontierNode();\n // Add new frontier nodes for any open nodes at the end.\n for (let i = 0, cur = fragment; i < openEndCount; i++) {\n let node = cur.lastChild;\n this.frontier.push({ type: node.type, match: node.contentMatchAt(node.childCount) });\n cur = node.content;\n }\n // Update `this.unplaced`. Drop the entire node from which we\n // placed it we got to its end, otherwise just drop the placed\n // nodes.\n this.unplaced = !toEnd ? new Slice(dropFromFragment(slice.content, sliceDepth, taken), slice.openStart, slice.openEnd)\n : sliceDepth == 0 ? Slice.empty\n : new Slice(dropFromFragment(slice.content, sliceDepth - 1, 1), sliceDepth - 1, openEndCount < 0 ? slice.openEnd : sliceDepth - 1);\n }\n mustMoveInline() {\n if (!this.$to.parent.isTextblock)\n return -1;\n let top = this.frontier[this.depth], level;\n if (!top.type.isTextblock || !contentAfterFits(this.$to, this.$to.depth, top.type, top.match, false) ||\n (this.$to.depth == this.depth && (level = this.findCloseLevel(this.$to)) && level.depth == this.depth))\n return -1;\n let { depth } = this.$to, after = this.$to.after(depth);\n while (depth > 1 && after == this.$to.end(--depth))\n ++after;\n return after;\n }\n findCloseLevel($to) {\n scan: for (let i = Math.min(this.depth, $to.depth); i >= 0; i--) {\n let { match, type } = this.frontier[i];\n let dropInner = i < $to.depth && $to.end(i + 1) == $to.pos + ($to.depth - (i + 1));\n let fit = contentAfterFits($to, i, type, match, dropInner);\n if (!fit)\n continue;\n for (let d = i - 1; d >= 0; d--) {\n let { match, type } = this.frontier[d];\n let matches = contentAfterFits($to, d, type, match, true);\n if (!matches || matches.childCount)\n continue scan;\n }\n return { depth: i, fit, move: dropInner ? $to.doc.resolve($to.after(i + 1)) : $to };\n }\n }\n close($to) {\n let close = this.findCloseLevel($to);\n if (!close)\n return null;\n while (this.depth > close.depth)\n this.closeFrontierNode();\n if (close.fit.childCount)\n this.placed = addToFragment(this.placed, close.depth, close.fit);\n $to = close.move;\n for (let d = close.depth + 1; d <= $to.depth; d++) {\n let node = $to.node(d), add = node.type.contentMatch.fillBefore(node.content, true, $to.index(d));\n this.openFrontierNode(node.type, node.attrs, add);\n }\n return $to;\n }\n openFrontierNode(type, attrs = null, content) {\n let top = this.frontier[this.depth];\n top.match = top.match.matchType(type);\n this.placed = addToFragment(this.placed, this.depth, Fragment.from(type.create(attrs, content)));\n this.frontier.push({ type, match: type.contentMatch });\n }\n closeFrontierNode() {\n let open = this.frontier.pop();\n let add = open.match.fillBefore(Fragment.empty, true);\n if (add.childCount)\n this.placed = addToFragment(this.placed, this.frontier.length, add);\n }\n}\nfunction dropFromFragment(fragment, depth, count) {\n if (depth == 0)\n return fragment.cutByIndex(count, fragment.childCount);\n return fragment.replaceChild(0, fragment.firstChild.copy(dropFromFragment(fragment.firstChild.content, depth - 1, count)));\n}\nfunction addToFragment(fragment, depth, content) {\n if (depth == 0)\n return fragment.append(content);\n return fragment.replaceChild(fragment.childCount - 1, fragment.lastChild.copy(addToFragment(fragment.lastChild.content, depth - 1, content)));\n}\nfunction contentAt(fragment, depth) {\n for (let i = 0; i < depth; i++)\n fragment = fragment.firstChild.content;\n return fragment;\n}\nfunction closeNodeStart(node, openStart, openEnd) {\n if (openStart <= 0)\n return node;\n let frag = node.content;\n if (openStart > 1)\n frag = frag.replaceChild(0, closeNodeStart(frag.firstChild, openStart - 1, frag.childCount == 1 ? openEnd - 1 : 0));\n if (openStart > 0) {\n frag = node.type.contentMatch.fillBefore(frag).append(frag);\n if (openEnd <= 0)\n frag = frag.append(node.type.contentMatch.matchFragment(frag).fillBefore(Fragment.empty, true));\n }\n return node.copy(frag);\n}\nfunction contentAfterFits($to, depth, type, match, open) {\n let node = $to.node(depth), index = open ? $to.indexAfter(depth) : $to.index(depth);\n if (index == node.childCount && !type.compatibleContent(node.type))\n return null;\n let fit = match.fillBefore(node.content, true, index);\n return fit && !invalidMarks(type, node.content, index) ? fit : null;\n}\nfunction invalidMarks(type, fragment, start) {\n for (let i = start; i < fragment.childCount; i++)\n if (!type.allowsMarks(fragment.child(i).marks))\n return true;\n return false;\n}\nfunction definesContent(type) {\n return type.spec.defining || type.spec.definingForContent;\n}\nfunction replaceRange(tr, from, to, slice) {\n if (!slice.size)\n return tr.deleteRange(from, to);\n let $from = tr.doc.resolve(from), $to = tr.doc.resolve(to);\n if (fitsTrivially($from, $to, slice))\n return tr.step(new ReplaceStep(from, to, slice));\n let targetDepths = coveredDepths($from, tr.doc.resolve(to));\n // Can't replace the whole document, so remove 0 if it's present\n if (targetDepths[targetDepths.length - 1] == 0)\n targetDepths.pop();\n // Negative numbers represent not expansion over the whole node at\n // that depth, but replacing from $from.before(-D) to $to.pos.\n let preferredTarget = -($from.depth + 1);\n targetDepths.unshift(preferredTarget);\n // This loop picks a preferred target depth, if one of the covering\n // depths is not outside of a defining node, and adds negative\n // depths for any depth that has $from at its start and does not\n // cross a defining node.\n for (let d = $from.depth, pos = $from.pos - 1; d > 0; d--, pos--) {\n let spec = $from.node(d).type.spec;\n if (spec.defining || spec.definingAsContext || spec.isolating)\n break;\n if (targetDepths.indexOf(d) > -1)\n preferredTarget = d;\n else if ($from.before(d) == pos)\n targetDepths.splice(1, 0, -d);\n }\n // Try to fit each possible depth of the slice into each possible\n // target depth, starting with the preferred depths.\n let preferredTargetIndex = targetDepths.indexOf(preferredTarget);\n let leftNodes = [], preferredDepth = slice.openStart;\n for (let content = slice.content, i = 0;; i++) {\n let node = content.firstChild;\n leftNodes.push(node);\n if (i == slice.openStart)\n break;\n content = node.content;\n }\n // Back up preferredDepth to cover defining textblocks directly\n // above it, possibly skipping a non-defining textblock.\n for (let d = preferredDepth - 1; d >= 0; d--) {\n let leftNode = leftNodes[d], def = definesContent(leftNode.type);\n if (def && !leftNode.sameMarkup($from.node(Math.abs(preferredTarget) - 1)))\n preferredDepth = d;\n else if (def || !leftNode.type.isTextblock)\n break;\n }\n for (let j = slice.openStart; j >= 0; j--) {\n let openDepth = (j + preferredDepth + 1) % (slice.openStart + 1);\n let insert = leftNodes[openDepth];\n if (!insert)\n continue;\n for (let i = 0; i < targetDepths.length; i++) {\n // Loop over possible expansion levels, starting with the\n // preferred one\n let targetDepth = targetDepths[(i + preferredTargetIndex) % targetDepths.length], expand = true;\n if (targetDepth < 0) {\n expand = false;\n targetDepth = -targetDepth;\n }\n let parent = $from.node(targetDepth - 1), index = $from.index(targetDepth - 1);\n if (parent.canReplaceWith(index, index, insert.type, insert.marks))\n return tr.replace($from.before(targetDepth), expand ? $to.after(targetDepth) : to, new Slice(closeFragment(slice.content, 0, slice.openStart, openDepth), openDepth, slice.openEnd));\n }\n }\n let startSteps = tr.steps.length;\n for (let i = targetDepths.length - 1; i >= 0; i--) {\n tr.replace(from, to, slice);\n if (tr.steps.length > startSteps)\n break;\n let depth = targetDepths[i];\n if (depth < 0)\n continue;\n from = $from.before(depth);\n to = $to.after(depth);\n }\n}\nfunction closeFragment(fragment, depth, oldOpen, newOpen, parent) {\n if (depth < oldOpen) {\n let first = fragment.firstChild;\n fragment = fragment.replaceChild(0, first.copy(closeFragment(first.content, depth + 1, oldOpen, newOpen, first)));\n }\n if (depth > newOpen) {\n let match = parent.contentMatchAt(0);\n let start = match.fillBefore(fragment).append(fragment);\n fragment = start.append(match.matchFragment(start).fillBefore(Fragment.empty, true));\n }\n return fragment;\n}\nfunction replaceRangeWith(tr, from, to, node) {\n if (!node.isInline && from == to && tr.doc.resolve(from).parent.content.size) {\n let point = insertPoint(tr.doc, from, node.type);\n if (point != null)\n from = to = point;\n }\n tr.replaceRange(from, to, new Slice(Fragment.from(node), 0, 0));\n}\nfunction deleteRange(tr, from, to) {\n let $from = tr.doc.resolve(from), $to = tr.doc.resolve(to);\n let covered = coveredDepths($from, $to);\n for (let i = 0; i < covered.length; i++) {\n let depth = covered[i], last = i == covered.length - 1;\n if ((last && depth == 0) || $from.node(depth).type.contentMatch.validEnd)\n return tr.delete($from.start(depth), $to.end(depth));\n if (depth > 0 && (last || $from.node(depth - 1).canReplace($from.index(depth - 1), $to.indexAfter(depth - 1))))\n return tr.delete($from.before(depth), $to.after(depth));\n }\n for (let d = 1; d <= $from.depth && d <= $to.depth; d++) {\n if (from - $from.start(d) == $from.depth - d && to > $from.end(d) && $to.end(d) - to != $to.depth - d)\n return tr.delete($from.before(d), to);\n }\n tr.delete(from, to);\n}\n// Returns an array of all depths for which $from - $to spans the\n// whole content of the nodes at that depth.\nfunction coveredDepths($from, $to) {\n let result = [], minDepth = Math.min($from.depth, $to.depth);\n for (let d = minDepth; d >= 0; d--) {\n let start = $from.start(d);\n if (start < $from.pos - ($from.depth - d) ||\n $to.end(d) > $to.pos + ($to.depth - d) ||\n $from.node(d).type.spec.isolating ||\n $to.node(d).type.spec.isolating)\n break;\n if (start == $to.start(d) ||\n (d == $from.depth && d == $to.depth && $from.parent.inlineContent && $to.parent.inlineContent &&\n d && $to.start(d - 1) == start - 1))\n result.push(d);\n }\n return result;\n}\n\n/**\nUpdate an attribute in a specific node.\n*/\nclass AttrStep extends Step {\n /**\n Construct an attribute step.\n */\n constructor(\n /**\n The position of the target node.\n */\n pos, \n /**\n The attribute to set.\n */\n attr, \n // The attribute's new value.\n value) {\n super();\n this.pos = pos;\n this.attr = attr;\n this.value = value;\n }\n apply(doc) {\n let node = doc.nodeAt(this.pos);\n if (!node)\n return StepResult.fail(\"No node at attribute step's position\");\n let attrs = Object.create(null);\n for (let name in node.attrs)\n attrs[name] = node.attrs[name];\n attrs[this.attr] = this.value;\n let updated = node.type.create(attrs, null, node.marks);\n return StepResult.fromReplace(doc, this.pos, this.pos + 1, new Slice(Fragment.from(updated), 0, node.isLeaf ? 0 : 1));\n }\n getMap() {\n return StepMap.empty;\n }\n invert(doc) {\n return new AttrStep(this.pos, this.attr, doc.nodeAt(this.pos).attrs[this.attr]);\n }\n map(mapping) {\n let pos = mapping.mapResult(this.pos, 1);\n return pos.deletedAfter ? null : new AttrStep(pos.pos, this.attr, this.value);\n }\n toJSON() {\n return { stepType: \"attr\", pos: this.pos, attr: this.attr, value: this.value };\n }\n static fromJSON(schema, json) {\n if (typeof json.pos != \"number\" || typeof json.attr != \"string\")\n throw new RangeError(\"Invalid input for AttrStep.fromJSON\");\n return new AttrStep(json.pos, json.attr, json.value);\n }\n}\nStep.jsonID(\"attr\", AttrStep);\n/**\nUpdate an attribute in the doc node.\n*/\nclass DocAttrStep extends Step {\n /**\n Construct an attribute step.\n */\n constructor(\n /**\n The attribute to set.\n */\n attr, \n // The attribute's new value.\n value) {\n super();\n this.attr = attr;\n this.value = value;\n }\n apply(doc) {\n let attrs = Object.create(null);\n for (let name in doc.attrs)\n attrs[name] = doc.attrs[name];\n attrs[this.attr] = this.value;\n let updated = doc.type.create(attrs, doc.content, doc.marks);\n return StepResult.ok(updated);\n }\n getMap() {\n return StepMap.empty;\n }\n invert(doc) {\n return new DocAttrStep(this.attr, doc.attrs[this.attr]);\n }\n map(mapping) {\n return this;\n }\n toJSON() {\n return { stepType: \"docAttr\", attr: this.attr, value: this.value };\n }\n static fromJSON(schema, json) {\n if (typeof json.attr != \"string\")\n throw new RangeError(\"Invalid input for DocAttrStep.fromJSON\");\n return new DocAttrStep(json.attr, json.value);\n }\n}\nStep.jsonID(\"docAttr\", DocAttrStep);\n\n/**\n@internal\n*/\nlet TransformError = class extends Error {\n};\nTransformError = function TransformError(message) {\n let err = Error.call(this, message);\n err.__proto__ = TransformError.prototype;\n return err;\n};\nTransformError.prototype = Object.create(Error.prototype);\nTransformError.prototype.constructor = TransformError;\nTransformError.prototype.name = \"TransformError\";\n/**\nAbstraction to build up and track an array of\n[steps](https://prosemirror.net/docs/ref/#transform.Step) representing a document transformation.\n\nMost transforming methods return the `Transform` object itself, so\nthat they can be chained.\n*/\nclass Transform {\n /**\n Create a transform that starts with the given document.\n */\n constructor(\n /**\n The current document (the result of applying the steps in the\n transform).\n */\n doc) {\n this.doc = doc;\n /**\n The steps in this transform.\n */\n this.steps = [];\n /**\n The documents before each of the steps.\n */\n this.docs = [];\n /**\n A mapping with the maps for each of the steps in this transform.\n */\n this.mapping = new Mapping;\n }\n /**\n The starting document.\n */\n get before() { return this.docs.length ? this.docs[0] : this.doc; }\n /**\n Apply a new step in this transform, saving the result. Throws an\n error when the step fails.\n */\n step(step) {\n let result = this.maybeStep(step);\n if (result.failed)\n throw new TransformError(result.failed);\n return this;\n }\n /**\n Try to apply a step in this transformation, ignoring it if it\n fails. Returns the step result.\n */\n maybeStep(step) {\n let result = step.apply(this.doc);\n if (!result.failed)\n this.addStep(step, result.doc);\n return result;\n }\n /**\n True when the document has been changed (when there are any\n steps).\n */\n get docChanged() {\n return this.steps.length > 0;\n }\n /**\n @internal\n */\n addStep(step, doc) {\n this.docs.push(this.doc);\n this.steps.push(step);\n this.mapping.appendMap(step.getMap());\n this.doc = doc;\n }\n /**\n Replace the part of the document between `from` and `to` with the\n given `slice`.\n */\n replace(from, to = from, slice = Slice.empty) {\n let step = replaceStep(this.doc, from, to, slice);\n if (step)\n this.step(step);\n return this;\n }\n /**\n Replace the given range with the given content, which may be a\n fragment, node, or array of nodes.\n */\n replaceWith(from, to, content) {\n return this.replace(from, to, new Slice(Fragment.from(content), 0, 0));\n }\n /**\n Delete the content between the given positions.\n */\n delete(from, to) {\n return this.replace(from, to, Slice.empty);\n }\n /**\n Insert the given content at the given position.\n */\n insert(pos, content) {\n return this.replaceWith(pos, pos, content);\n }\n /**\n Replace a range of the document with a given slice, using\n `from`, `to`, and the slice's\n [`openStart`](https://prosemirror.net/docs/ref/#model.Slice.openStart) property as hints, rather\n than fixed start and end points. This method may grow the\n replaced area or close open nodes in the slice in order to get a\n fit that is more in line with WYSIWYG expectations, by dropping\n fully covered parent nodes of the replaced region when they are\n marked [non-defining as\n context](https://prosemirror.net/docs/ref/#model.NodeSpec.definingAsContext), or including an\n open parent node from the slice that _is_ marked as [defining\n its content](https://prosemirror.net/docs/ref/#model.NodeSpec.definingForContent).\n \n This is the method, for example, to handle paste. The similar\n [`replace`](https://prosemirror.net/docs/ref/#transform.Transform.replace) method is a more\n primitive tool which will _not_ move the start and end of its given\n range, and is useful in situations where you need more precise\n control over what happens.\n */\n replaceRange(from, to, slice) {\n replaceRange(this, from, to, slice);\n return this;\n }\n /**\n Replace the given range with a node, but use `from` and `to` as\n hints, rather than precise positions. When from and to are the same\n and are at the start or end of a parent node in which the given\n node doesn't fit, this method may _move_ them out towards a parent\n that does allow the given node to be placed. When the given range\n completely covers a parent node, this method may completely replace\n that parent node.\n */\n replaceRangeWith(from, to, node) {\n replaceRangeWith(this, from, to, node);\n return this;\n }\n /**\n Delete the given range, expanding it to cover fully covered\n parent nodes until a valid replace is found.\n */\n deleteRange(from, to) {\n deleteRange(this, from, to);\n return this;\n }\n /**\n Split the content in the given range off from its parent, if there\n is sibling content before or after it, and move it up the tree to\n the depth specified by `target`. You'll probably want to use\n [`liftTarget`](https://prosemirror.net/docs/ref/#transform.liftTarget) to compute `target`, to make\n sure the lift is valid.\n */\n lift(range, target) {\n lift(this, range, target);\n return this;\n }\n /**\n Join the blocks around the given position. If depth is 2, their\n last and first siblings are also joined, and so on.\n */\n join(pos, depth = 1) {\n join(this, pos, depth);\n return this;\n }\n /**\n Wrap the given [range](https://prosemirror.net/docs/ref/#model.NodeRange) in the given set of wrappers.\n The wrappers are assumed to be valid in this position, and should\n probably be computed with [`findWrapping`](https://prosemirror.net/docs/ref/#transform.findWrapping).\n */\n wrap(range, wrappers) {\n wrap(this, range, wrappers);\n return this;\n }\n /**\n Set the type of all textblocks (partly) between `from` and `to` to\n the given node type with the given attributes.\n */\n setBlockType(from, to = from, type, attrs = null) {\n setBlockType(this, from, to, type, attrs);\n return this;\n }\n /**\n Change the type, attributes, and/or marks of the node at `pos`.\n When `type` isn't given, the existing node type is preserved,\n */\n setNodeMarkup(pos, type, attrs = null, marks) {\n setNodeMarkup(this, pos, type, attrs, marks);\n return this;\n }\n /**\n Set a single attribute on a given node to a new value.\n The `pos` addresses the document content. Use `setDocAttribute`\n to set attributes on the document itself.\n */\n setNodeAttribute(pos, attr, value) {\n this.step(new AttrStep(pos, attr, value));\n return this;\n }\n /**\n Set a single attribute on the document to a new value.\n */\n setDocAttribute(attr, value) {\n this.step(new DocAttrStep(attr, value));\n return this;\n }\n /**\n Add a mark to the node at position `pos`.\n */\n addNodeMark(pos, mark) {\n this.step(new AddNodeMarkStep(pos, mark));\n return this;\n }\n /**\n Remove a mark (or a mark of the given type) from the node at\n position `pos`.\n */\n removeNodeMark(pos, mark) {\n if (!(mark instanceof Mark)) {\n let node = this.doc.nodeAt(pos);\n if (!node)\n throw new RangeError(\"No node at position \" + pos);\n mark = mark.isInSet(node.marks);\n if (!mark)\n return this;\n }\n this.step(new RemoveNodeMarkStep(pos, mark));\n return this;\n }\n /**\n Split the node at the given position, and optionally, if `depth` is\n greater than one, any number of nodes above that. By default, the\n parts split off will inherit the node type of the original node.\n This can be changed by passing an array of types and attributes to\n use after the split.\n */\n split(pos, depth = 1, typesAfter) {\n split(this, pos, depth, typesAfter);\n return this;\n }\n /**\n Add the given mark to the inline content between `from` and `to`.\n */\n addMark(from, to, mark) {\n addMark(this, from, to, mark);\n return this;\n }\n /**\n Remove marks from inline nodes between `from` and `to`. When\n `mark` is a single mark, remove precisely that mark. When it is\n a mark type, remove all marks of that type. When it is null,\n remove all marks of any type.\n */\n removeMark(from, to, mark) {\n removeMark(this, from, to, mark);\n return this;\n }\n /**\n Removes all marks and nodes from the content of the node at\n `pos` that don't match the given new parent node type. Accepts\n an optional starting [content match](https://prosemirror.net/docs/ref/#model.ContentMatch) as\n third argument.\n */\n clearIncompatible(pos, parentType, match) {\n clearIncompatible(this, pos, parentType, match);\n return this;\n }\n}\n\nexport { AddMarkStep, AddNodeMarkStep, AttrStep, DocAttrStep, MapResult, Mapping, RemoveMarkStep, RemoveNodeMarkStep, ReplaceAroundStep, ReplaceStep, Step, StepMap, StepResult, Transform, TransformError, canJoin, canSplit, dropPoint, findWrapping, insertPoint, joinPoint, liftTarget, replaceStep };\n","import { Slice, Fragment, Mark, Node } from 'prosemirror-model';\nimport { ReplaceStep, ReplaceAroundStep, Transform } from 'prosemirror-transform';\n\nconst classesById = Object.create(null);\n/**\nSuperclass for editor selections. Every selection type should\nextend this. Should not be instantiated directly.\n*/\nclass Selection {\n /**\n Initialize a selection with the head and anchor and ranges. If no\n ranges are given, constructs a single range across `$anchor` and\n `$head`.\n */\n constructor(\n /**\n The resolved anchor of the selection (the side that stays in\n place when the selection is modified).\n */\n $anchor, \n /**\n The resolved head of the selection (the side that moves when\n the selection is modified).\n */\n $head, ranges) {\n this.$anchor = $anchor;\n this.$head = $head;\n this.ranges = ranges || [new SelectionRange($anchor.min($head), $anchor.max($head))];\n }\n /**\n The selection's anchor, as an unresolved position.\n */\n get anchor() { return this.$anchor.pos; }\n /**\n The selection's head.\n */\n get head() { return this.$head.pos; }\n /**\n The lower bound of the selection's main range.\n */\n get from() { return this.$from.pos; }\n /**\n The upper bound of the selection's main range.\n */\n get to() { return this.$to.pos; }\n /**\n The resolved lower bound of the selection's main range.\n */\n get $from() {\n return this.ranges[0].$from;\n }\n /**\n The resolved upper bound of the selection's main range.\n */\n get $to() {\n return this.ranges[0].$to;\n }\n /**\n Indicates whether the selection contains any content.\n */\n get empty() {\n let ranges = this.ranges;\n for (let i = 0; i < ranges.length; i++)\n if (ranges[i].$from.pos != ranges[i].$to.pos)\n return false;\n return true;\n }\n /**\n Get the content of this selection as a slice.\n */\n content() {\n return this.$from.doc.slice(this.from, this.to, true);\n }\n /**\n Replace the selection with a slice or, if no slice is given,\n delete the selection. Will append to the given transaction.\n */\n replace(tr, content = Slice.empty) {\n // Put the new selection at the position after the inserted\n // content. When that ended in an inline node, search backwards,\n // to get the position after that node. If not, search forward.\n let lastNode = content.content.lastChild, lastParent = null;\n for (let i = 0; i < content.openEnd; i++) {\n lastParent = lastNode;\n lastNode = lastNode.lastChild;\n }\n let mapFrom = tr.steps.length, ranges = this.ranges;\n for (let i = 0; i < ranges.length; i++) {\n let { $from, $to } = ranges[i], mapping = tr.mapping.slice(mapFrom);\n tr.replaceRange(mapping.map($from.pos), mapping.map($to.pos), i ? Slice.empty : content);\n if (i == 0)\n selectionToInsertionEnd(tr, mapFrom, (lastNode ? lastNode.isInline : lastParent && lastParent.isTextblock) ? -1 : 1);\n }\n }\n /**\n Replace the selection with the given node, appending the changes\n to the given transaction.\n */\n replaceWith(tr, node) {\n let mapFrom = tr.steps.length, ranges = this.ranges;\n for (let i = 0; i < ranges.length; i++) {\n let { $from, $to } = ranges[i], mapping = tr.mapping.slice(mapFrom);\n let from = mapping.map($from.pos), to = mapping.map($to.pos);\n if (i) {\n tr.deleteRange(from, to);\n }\n else {\n tr.replaceRangeWith(from, to, node);\n selectionToInsertionEnd(tr, mapFrom, node.isInline ? -1 : 1);\n }\n }\n }\n /**\n Find a valid cursor or leaf node selection starting at the given\n position and searching back if `dir` is negative, and forward if\n positive. When `textOnly` is true, only consider cursor\n selections. Will return null when no valid selection position is\n found.\n */\n static findFrom($pos, dir, textOnly = false) {\n let inner = $pos.parent.inlineContent ? new TextSelection($pos)\n : findSelectionIn($pos.node(0), $pos.parent, $pos.pos, $pos.index(), dir, textOnly);\n if (inner)\n return inner;\n for (let depth = $pos.depth - 1; depth >= 0; depth--) {\n let found = dir < 0\n ? findSelectionIn($pos.node(0), $pos.node(depth), $pos.before(depth + 1), $pos.index(depth), dir, textOnly)\n : findSelectionIn($pos.node(0), $pos.node(depth), $pos.after(depth + 1), $pos.index(depth) + 1, dir, textOnly);\n if (found)\n return found;\n }\n return null;\n }\n /**\n Find a valid cursor or leaf node selection near the given\n position. Searches forward first by default, but if `bias` is\n negative, it will search backwards first.\n */\n static near($pos, bias = 1) {\n return this.findFrom($pos, bias) || this.findFrom($pos, -bias) || new AllSelection($pos.node(0));\n }\n /**\n Find the cursor or leaf node selection closest to the start of\n the given document. Will return an\n [`AllSelection`](https://prosemirror.net/docs/ref/#state.AllSelection) if no valid position\n exists.\n */\n static atStart(doc) {\n return findSelectionIn(doc, doc, 0, 0, 1) || new AllSelection(doc);\n }\n /**\n Find the cursor or leaf node selection closest to the end of the\n given document.\n */\n static atEnd(doc) {\n return findSelectionIn(doc, doc, doc.content.size, doc.childCount, -1) || new AllSelection(doc);\n }\n /**\n Deserialize the JSON representation of a selection. Must be\n implemented for custom classes (as a static class method).\n */\n static fromJSON(doc, json) {\n if (!json || !json.type)\n throw new RangeError(\"Invalid input for Selection.fromJSON\");\n let cls = classesById[json.type];\n if (!cls)\n throw new RangeError(`No selection type ${json.type} defined`);\n return cls.fromJSON(doc, json);\n }\n /**\n To be able to deserialize selections from JSON, custom selection\n classes must register themselves with an ID string, so that they\n can be disambiguated. Try to pick something that's unlikely to\n clash with classes from other modules.\n */\n static jsonID(id, selectionClass) {\n if (id in classesById)\n throw new RangeError(\"Duplicate use of selection JSON ID \" + id);\n classesById[id] = selectionClass;\n selectionClass.prototype.jsonID = id;\n return selectionClass;\n }\n /**\n Get a [bookmark](https://prosemirror.net/docs/ref/#state.SelectionBookmark) for this selection,\n which is a value that can be mapped without having access to a\n current document, and later resolved to a real selection for a\n given document again. (This is used mostly by the history to\n track and restore old selections.) The default implementation of\n this method just converts the selection to a text selection and\n returns the bookmark for that.\n */\n getBookmark() {\n return TextSelection.between(this.$anchor, this.$head).getBookmark();\n }\n}\nSelection.prototype.visible = true;\n/**\nRepresents a selected range in a document.\n*/\nclass SelectionRange {\n /**\n Create a range.\n */\n constructor(\n /**\n The lower bound of the range.\n */\n $from, \n /**\n The upper bound of the range.\n */\n $to) {\n this.$from = $from;\n this.$to = $to;\n }\n}\nlet warnedAboutTextSelection = false;\nfunction checkTextSelection($pos) {\n if (!warnedAboutTextSelection && !$pos.parent.inlineContent) {\n warnedAboutTextSelection = true;\n console[\"warn\"](\"TextSelection endpoint not pointing into a node with inline content (\" + $pos.parent.type.name + \")\");\n }\n}\n/**\nA text selection represents a classical editor selection, with a\nhead (the moving side) and anchor (immobile side), both of which\npoint into textblock nodes. It can be empty (a regular cursor\nposition).\n*/\nclass TextSelection extends Selection {\n /**\n Construct a text selection between the given points.\n */\n constructor($anchor, $head = $anchor) {\n checkTextSelection($anchor);\n checkTextSelection($head);\n super($anchor, $head);\n }\n /**\n Returns a resolved position if this is a cursor selection (an\n empty text selection), and null otherwise.\n */\n get $cursor() { return this.$anchor.pos == this.$head.pos ? this.$head : null; }\n map(doc, mapping) {\n let $head = doc.resolve(mapping.map(this.head));\n if (!$head.parent.inlineContent)\n return Selection.near($head);\n let $anchor = doc.resolve(mapping.map(this.anchor));\n return new TextSelection($anchor.parent.inlineContent ? $anchor : $head, $head);\n }\n replace(tr, content = Slice.empty) {\n super.replace(tr, content);\n if (content == Slice.empty) {\n let marks = this.$from.marksAcross(this.$to);\n if (marks)\n tr.ensureMarks(marks);\n }\n }\n eq(other) {\n return other instanceof TextSelection && other.anchor == this.anchor && other.head == this.head;\n }\n getBookmark() {\n return new TextBookmark(this.anchor, this.head);\n }\n toJSON() {\n return { type: \"text\", anchor: this.anchor, head: this.head };\n }\n /**\n @internal\n */\n static fromJSON(doc, json) {\n if (typeof json.anchor != \"number\" || typeof json.head != \"number\")\n throw new RangeError(\"Invalid input for TextSelection.fromJSON\");\n return new TextSelection(doc.resolve(json.anchor), doc.resolve(json.head));\n }\n /**\n Create a text selection from non-resolved positions.\n */\n static create(doc, anchor, head = anchor) {\n let $anchor = doc.resolve(anchor);\n return new this($anchor, head == anchor ? $anchor : doc.resolve(head));\n }\n /**\n Return a text selection that spans the given positions or, if\n they aren't text positions, find a text selection near them.\n `bias` determines whether the method searches forward (default)\n or backwards (negative number) first. Will fall back to calling\n [`Selection.near`](https://prosemirror.net/docs/ref/#state.Selection^near) when the document\n doesn't contain a valid text position.\n */\n static between($anchor, $head, bias) {\n let dPos = $anchor.pos - $head.pos;\n if (!bias || dPos)\n bias = dPos >= 0 ? 1 : -1;\n if (!$head.parent.inlineContent) {\n let found = Selection.findFrom($head, bias, true) || Selection.findFrom($head, -bias, true);\n if (found)\n $head = found.$head;\n else\n return Selection.near($head, bias);\n }\n if (!$anchor.parent.inlineContent) {\n if (dPos == 0) {\n $anchor = $head;\n }\n else {\n $anchor = (Selection.findFrom($anchor, -bias, true) || Selection.findFrom($anchor, bias, true)).$anchor;\n if (($anchor.pos < $head.pos) != (dPos < 0))\n $anchor = $head;\n }\n }\n return new TextSelection($anchor, $head);\n }\n}\nSelection.jsonID(\"text\", TextSelection);\nclass TextBookmark {\n constructor(anchor, head) {\n this.anchor = anchor;\n this.head = head;\n }\n map(mapping) {\n return new TextBookmark(mapping.map(this.anchor), mapping.map(this.head));\n }\n resolve(doc) {\n return TextSelection.between(doc.resolve(this.anchor), doc.resolve(this.head));\n }\n}\n/**\nA node selection is a selection that points at a single node. All\nnodes marked [selectable](https://prosemirror.net/docs/ref/#model.NodeSpec.selectable) can be the\ntarget of a node selection. In such a selection, `from` and `to`\npoint directly before and after the selected node, `anchor` equals\n`from`, and `head` equals `to`..\n*/\nclass NodeSelection extends Selection {\n /**\n Create a node selection. Does not verify the validity of its\n argument.\n */\n constructor($pos) {\n let node = $pos.nodeAfter;\n let $end = $pos.node(0).resolve($pos.pos + node.nodeSize);\n super($pos, $end);\n this.node = node;\n }\n map(doc, mapping) {\n let { deleted, pos } = mapping.mapResult(this.anchor);\n let $pos = doc.resolve(pos);\n if (deleted)\n return Selection.near($pos);\n return new NodeSelection($pos);\n }\n content() {\n return new Slice(Fragment.from(this.node), 0, 0);\n }\n eq(other) {\n return other instanceof NodeSelection && other.anchor == this.anchor;\n }\n toJSON() {\n return { type: \"node\", anchor: this.anchor };\n }\n getBookmark() { return new NodeBookmark(this.anchor); }\n /**\n @internal\n */\n static fromJSON(doc, json) {\n if (typeof json.anchor != \"number\")\n throw new RangeError(\"Invalid input for NodeSelection.fromJSON\");\n return new NodeSelection(doc.resolve(json.anchor));\n }\n /**\n Create a node selection from non-resolved positions.\n */\n static create(doc, from) {\n return new NodeSelection(doc.resolve(from));\n }\n /**\n Determines whether the given node may be selected as a node\n selection.\n */\n static isSelectable(node) {\n return !node.isText && node.type.spec.selectable !== false;\n }\n}\nNodeSelection.prototype.visible = false;\nSelection.jsonID(\"node\", NodeSelection);\nclass NodeBookmark {\n constructor(anchor) {\n this.anchor = anchor;\n }\n map(mapping) {\n let { deleted, pos } = mapping.mapResult(this.anchor);\n return deleted ? new TextBookmark(pos, pos) : new NodeBookmark(pos);\n }\n resolve(doc) {\n let $pos = doc.resolve(this.anchor), node = $pos.nodeAfter;\n if (node && NodeSelection.isSelectable(node))\n return new NodeSelection($pos);\n return Selection.near($pos);\n }\n}\n/**\nA selection type that represents selecting the whole document\n(which can not necessarily be expressed with a text selection, when\nthere are for example leaf block nodes at the start or end of the\ndocument).\n*/\nclass AllSelection extends Selection {\n /**\n Create an all-selection over the given document.\n */\n constructor(doc) {\n super(doc.resolve(0), doc.resolve(doc.content.size));\n }\n replace(tr, content = Slice.empty) {\n if (content == Slice.empty) {\n tr.delete(0, tr.doc.content.size);\n let sel = Selection.atStart(tr.doc);\n if (!sel.eq(tr.selection))\n tr.setSelection(sel);\n }\n else {\n super.replace(tr, content);\n }\n }\n toJSON() { return { type: \"all\" }; }\n /**\n @internal\n */\n static fromJSON(doc) { return new AllSelection(doc); }\n map(doc) { return new AllSelection(doc); }\n eq(other) { return other instanceof AllSelection; }\n getBookmark() { return AllBookmark; }\n}\nSelection.jsonID(\"all\", AllSelection);\nconst AllBookmark = {\n map() { return this; },\n resolve(doc) { return new AllSelection(doc); }\n};\n// FIXME we'll need some awareness of text direction when scanning for selections\n// Try to find a selection inside the given node. `pos` points at the\n// position where the search starts. When `text` is true, only return\n// text selections.\nfunction findSelectionIn(doc, node, pos, index, dir, text = false) {\n if (node.inlineContent)\n return TextSelection.create(doc, pos);\n for (let i = index - (dir > 0 ? 0 : 1); dir > 0 ? i < node.childCount : i >= 0; i += dir) {\n let child = node.child(i);\n if (!child.isAtom) {\n let inner = findSelectionIn(doc, child, pos + dir, dir < 0 ? child.childCount : 0, dir, text);\n if (inner)\n return inner;\n }\n else if (!text && NodeSelection.isSelectable(child)) {\n return NodeSelection.create(doc, pos - (dir < 0 ? child.nodeSize : 0));\n }\n pos += child.nodeSize * dir;\n }\n return null;\n}\nfunction selectionToInsertionEnd(tr, startLen, bias) {\n let last = tr.steps.length - 1;\n if (last < startLen)\n return;\n let step = tr.steps[last];\n if (!(step instanceof ReplaceStep || step instanceof ReplaceAroundStep))\n return;\n let map = tr.mapping.maps[last], end;\n map.forEach((_from, _to, _newFrom, newTo) => { if (end == null)\n end = newTo; });\n tr.setSelection(Selection.near(tr.doc.resolve(end), bias));\n}\n\nconst UPDATED_SEL = 1, UPDATED_MARKS = 2, UPDATED_SCROLL = 4;\n/**\nAn editor state transaction, which can be applied to a state to\ncreate an updated state. Use\n[`EditorState.tr`](https://prosemirror.net/docs/ref/#state.EditorState.tr) to create an instance.\n\nTransactions track changes to the document (they are a subclass of\n[`Transform`](https://prosemirror.net/docs/ref/#transform.Transform)), but also other state changes,\nlike selection updates and adjustments of the set of [stored\nmarks](https://prosemirror.net/docs/ref/#state.EditorState.storedMarks). In addition, you can store\nmetadata properties in a transaction, which are extra pieces of\ninformation that client code or plugins can use to describe what a\ntransaction represents, so that they can update their [own\nstate](https://prosemirror.net/docs/ref/#state.StateField) accordingly.\n\nThe [editor view](https://prosemirror.net/docs/ref/#view.EditorView) uses a few metadata\nproperties: it will attach a property `\"pointer\"` with the value\n`true` to selection transactions directly caused by mouse or touch\ninput, a `\"composition\"` property holding an ID identifying the\ncomposition that caused it to transactions caused by composed DOM\ninput, and a `\"uiEvent\"` property of that may be `\"paste\"`,\n`\"cut\"`, or `\"drop\"`.\n*/\nclass Transaction extends Transform {\n /**\n @internal\n */\n constructor(state) {\n super(state.doc);\n // The step count for which the current selection is valid.\n this.curSelectionFor = 0;\n // Bitfield to track which aspects of the state were updated by\n // this transaction.\n this.updated = 0;\n // Object used to store metadata properties for the transaction.\n this.meta = Object.create(null);\n this.time = Date.now();\n this.curSelection = state.selection;\n this.storedMarks = state.storedMarks;\n }\n /**\n The transaction's current selection. This defaults to the editor\n selection [mapped](https://prosemirror.net/docs/ref/#state.Selection.map) through the steps in the\n transaction, but can be overwritten with\n [`setSelection`](https://prosemirror.net/docs/ref/#state.Transaction.setSelection).\n */\n get selection() {\n if (this.curSelectionFor < this.steps.length) {\n this.curSelection = this.curSelection.map(this.doc, this.mapping.slice(this.curSelectionFor));\n this.curSelectionFor = this.steps.length;\n }\n return this.curSelection;\n }\n /**\n Update the transaction's current selection. Will determine the\n selection that the editor gets when the transaction is applied.\n */\n setSelection(selection) {\n if (selection.$from.doc != this.doc)\n throw new RangeError(\"Selection passed to setSelection must point at the current document\");\n this.curSelection = selection;\n this.curSelectionFor = this.steps.length;\n this.updated = (this.updated | UPDATED_SEL) & ~UPDATED_MARKS;\n this.storedMarks = null;\n return this;\n }\n /**\n Whether the selection was explicitly updated by this transaction.\n */\n get selectionSet() {\n return (this.updated & UPDATED_SEL) > 0;\n }\n /**\n Set the current stored marks.\n */\n setStoredMarks(marks) {\n this.storedMarks = marks;\n this.updated |= UPDATED_MARKS;\n return this;\n }\n /**\n Make sure the current stored marks or, if that is null, the marks\n at the selection, match the given set of marks. Does nothing if\n this is already the case.\n */\n ensureMarks(marks) {\n if (!Mark.sameSet(this.storedMarks || this.selection.$from.marks(), marks))\n this.setStoredMarks(marks);\n return this;\n }\n /**\n Add a mark to the set of stored marks.\n */\n addStoredMark(mark) {\n return this.ensureMarks(mark.addToSet(this.storedMarks || this.selection.$head.marks()));\n }\n /**\n Remove a mark or mark type from the set of stored marks.\n */\n removeStoredMark(mark) {\n return this.ensureMarks(mark.removeFromSet(this.storedMarks || this.selection.$head.marks()));\n }\n /**\n Whether the stored marks were explicitly set for this transaction.\n */\n get storedMarksSet() {\n return (this.updated & UPDATED_MARKS) > 0;\n }\n /**\n @internal\n */\n addStep(step, doc) {\n super.addStep(step, doc);\n this.updated = this.updated & ~UPDATED_MARKS;\n this.storedMarks = null;\n }\n /**\n Update the timestamp for the transaction.\n */\n setTime(time) {\n this.time = time;\n return this;\n }\n /**\n Replace the current selection with the given slice.\n */\n replaceSelection(slice) {\n this.selection.replace(this, slice);\n return this;\n }\n /**\n Replace the selection with the given node. When `inheritMarks` is\n true and the content is inline, it inherits the marks from the\n place where it is inserted.\n */\n replaceSelectionWith(node, inheritMarks = true) {\n let selection = this.selection;\n if (inheritMarks)\n node = node.mark(this.storedMarks || (selection.empty ? selection.$from.marks() : (selection.$from.marksAcross(selection.$to) || Mark.none)));\n selection.replaceWith(this, node);\n return this;\n }\n /**\n Delete the selection.\n */\n deleteSelection() {\n this.selection.replace(this);\n return this;\n }\n /**\n Replace the given range, or the selection if no range is given,\n with a text node containing the given string.\n */\n insertText(text, from, to) {\n let schema = this.doc.type.schema;\n if (from == null) {\n if (!text)\n return this.deleteSelection();\n return this.replaceSelectionWith(schema.text(text), true);\n }\n else {\n if (to == null)\n to = from;\n to = to == null ? from : to;\n if (!text)\n return this.deleteRange(from, to);\n let marks = this.storedMarks;\n if (!marks) {\n let $from = this.doc.resolve(from);\n marks = to == from ? $from.marks() : $from.marksAcross(this.doc.resolve(to));\n }\n this.replaceRangeWith(from, to, schema.text(text, marks));\n if (!this.selection.empty)\n this.setSelection(Selection.near(this.selection.$to));\n return this;\n }\n }\n /**\n Store a metadata property in this transaction, keyed either by\n name or by plugin.\n */\n setMeta(key, value) {\n this.meta[typeof key == \"string\" ? key : key.key] = value;\n return this;\n }\n /**\n Retrieve a metadata property for a given name or plugin.\n */\n getMeta(key) {\n return this.meta[typeof key == \"string\" ? key : key.key];\n }\n /**\n Returns true if this transaction doesn't contain any metadata,\n and can thus safely be extended.\n */\n get isGeneric() {\n for (let _ in this.meta)\n return false;\n return true;\n }\n /**\n Indicate that the editor should scroll the selection into view\n when updated to the state produced by this transaction.\n */\n scrollIntoView() {\n this.updated |= UPDATED_SCROLL;\n return this;\n }\n /**\n True when this transaction has had `scrollIntoView` called on it.\n */\n get scrolledIntoView() {\n return (this.updated & UPDATED_SCROLL) > 0;\n }\n}\n\nfunction bind(f, self) {\n return !self || !f ? f : f.bind(self);\n}\nclass FieldDesc {\n constructor(name, desc, self) {\n this.name = name;\n this.init = bind(desc.init, self);\n this.apply = bind(desc.apply, self);\n }\n}\nconst baseFields = [\n new FieldDesc(\"doc\", {\n init(config) { return config.doc || config.schema.topNodeType.createAndFill(); },\n apply(tr) { return tr.doc; }\n }),\n new FieldDesc(\"selection\", {\n init(config, instance) { return config.selection || Selection.atStart(instance.doc); },\n apply(tr) { return tr.selection; }\n }),\n new FieldDesc(\"storedMarks\", {\n init(config) { return config.storedMarks || null; },\n apply(tr, _marks, _old, state) { return state.selection.$cursor ? tr.storedMarks : null; }\n }),\n new FieldDesc(\"scrollToSelection\", {\n init() { return 0; },\n apply(tr, prev) { return tr.scrolledIntoView ? prev + 1 : prev; }\n })\n];\n// Object wrapping the part of a state object that stays the same\n// across transactions. Stored in the state's `config` property.\nclass Configuration {\n constructor(schema, plugins) {\n this.schema = schema;\n this.plugins = [];\n this.pluginsByKey = Object.create(null);\n this.fields = baseFields.slice();\n if (plugins)\n plugins.forEach(plugin => {\n if (this.pluginsByKey[plugin.key])\n throw new RangeError(\"Adding different instances of a keyed plugin (\" + plugin.key + \")\");\n this.plugins.push(plugin);\n this.pluginsByKey[plugin.key] = plugin;\n if (plugin.spec.state)\n this.fields.push(new FieldDesc(plugin.key, plugin.spec.state, plugin));\n });\n }\n}\n/**\nThe state of a ProseMirror editor is represented by an object of\nthis type. A state is a persistent data structure—it isn't\nupdated, but rather a new state value is computed from an old one\nusing the [`apply`](https://prosemirror.net/docs/ref/#state.EditorState.apply) method.\n\nA state holds a number of built-in fields, and plugins can\n[define](https://prosemirror.net/docs/ref/#state.PluginSpec.state) additional fields.\n*/\nclass EditorState {\n /**\n @internal\n */\n constructor(\n /**\n @internal\n */\n config) {\n this.config = config;\n }\n /**\n The schema of the state's document.\n */\n get schema() {\n return this.config.schema;\n }\n /**\n The plugins that are active in this state.\n */\n get plugins() {\n return this.config.plugins;\n }\n /**\n Apply the given transaction to produce a new state.\n */\n apply(tr) {\n return this.applyTransaction(tr).state;\n }\n /**\n @internal\n */\n filterTransaction(tr, ignore = -1) {\n for (let i = 0; i < this.config.plugins.length; i++)\n if (i != ignore) {\n let plugin = this.config.plugins[i];\n if (plugin.spec.filterTransaction && !plugin.spec.filterTransaction.call(plugin, tr, this))\n return false;\n }\n return true;\n }\n /**\n Verbose variant of [`apply`](https://prosemirror.net/docs/ref/#state.EditorState.apply) that\n returns the precise transactions that were applied (which might\n be influenced by the [transaction\n hooks](https://prosemirror.net/docs/ref/#state.PluginSpec.filterTransaction) of\n plugins) along with the new state.\n */\n applyTransaction(rootTr) {\n if (!this.filterTransaction(rootTr))\n return { state: this, transactions: [] };\n let trs = [rootTr], newState = this.applyInner(rootTr), seen = null;\n // This loop repeatedly gives plugins a chance to respond to\n // transactions as new transactions are added, making sure to only\n // pass the transactions the plugin did not see before.\n for (;;) {\n let haveNew = false;\n for (let i = 0; i < this.config.plugins.length; i++) {\n let plugin = this.config.plugins[i];\n if (plugin.spec.appendTransaction) {\n let n = seen ? seen[i].n : 0, oldState = seen ? seen[i].state : this;\n let tr = n < trs.length &&\n plugin.spec.appendTransaction.call(plugin, n ? trs.slice(n) : trs, oldState, newState);\n if (tr && newState.filterTransaction(tr, i)) {\n tr.setMeta(\"appendedTransaction\", rootTr);\n if (!seen) {\n seen = [];\n for (let j = 0; j < this.config.plugins.length; j++)\n seen.push(j < i ? { state: newState, n: trs.length } : { state: this, n: 0 });\n }\n trs.push(tr);\n newState = newState.applyInner(tr);\n haveNew = true;\n }\n if (seen)\n seen[i] = { state: newState, n: trs.length };\n }\n }\n if (!haveNew)\n return { state: newState, transactions: trs };\n }\n }\n /**\n @internal\n */\n applyInner(tr) {\n if (!tr.before.eq(this.doc))\n throw new RangeError(\"Applying a mismatched transaction\");\n let newInstance = new EditorState(this.config), fields = this.config.fields;\n for (let i = 0; i < fields.length; i++) {\n let field = fields[i];\n newInstance[field.name] = field.apply(tr, this[field.name], this, newInstance);\n }\n return newInstance;\n }\n /**\n Start a [transaction](https://prosemirror.net/docs/ref/#state.Transaction) from this state.\n */\n get tr() { return new Transaction(this); }\n /**\n Create a new state.\n */\n static create(config) {\n let $config = new Configuration(config.doc ? config.doc.type.schema : config.schema, config.plugins);\n let instance = new EditorState($config);\n for (let i = 0; i < $config.fields.length; i++)\n instance[$config.fields[i].name] = $config.fields[i].init(config, instance);\n return instance;\n }\n /**\n Create a new state based on this one, but with an adjusted set\n of active plugins. State fields that exist in both sets of\n plugins are kept unchanged. Those that no longer exist are\n dropped, and those that are new are initialized using their\n [`init`](https://prosemirror.net/docs/ref/#state.StateField.init) method, passing in the new\n configuration object..\n */\n reconfigure(config) {\n let $config = new Configuration(this.schema, config.plugins);\n let fields = $config.fields, instance = new EditorState($config);\n for (let i = 0; i < fields.length; i++) {\n let name = fields[i].name;\n instance[name] = this.hasOwnProperty(name) ? this[name] : fields[i].init(config, instance);\n }\n return instance;\n }\n /**\n Serialize this state to JSON. If you want to serialize the state\n of plugins, pass an object mapping property names to use in the\n resulting JSON object to plugin objects. The argument may also be\n a string or number, in which case it is ignored, to support the\n way `JSON.stringify` calls `toString` methods.\n */\n toJSON(pluginFields) {\n let result = { doc: this.doc.toJSON(), selection: this.selection.toJSON() };\n if (this.storedMarks)\n result.storedMarks = this.storedMarks.map(m => m.toJSON());\n if (pluginFields && typeof pluginFields == 'object')\n for (let prop in pluginFields) {\n if (prop == \"doc\" || prop == \"selection\")\n throw new RangeError(\"The JSON fields `doc` and `selection` are reserved\");\n let plugin = pluginFields[prop], state = plugin.spec.state;\n if (state && state.toJSON)\n result[prop] = state.toJSON.call(plugin, this[plugin.key]);\n }\n return result;\n }\n /**\n Deserialize a JSON representation of a state. `config` should\n have at least a `schema` field, and should contain array of\n plugins to initialize the state with. `pluginFields` can be used\n to deserialize the state of plugins, by associating plugin\n instances with the property names they use in the JSON object.\n */\n static fromJSON(config, json, pluginFields) {\n if (!json)\n throw new RangeError(\"Invalid input for EditorState.fromJSON\");\n if (!config.schema)\n throw new RangeError(\"Required config field 'schema' missing\");\n let $config = new Configuration(config.schema, config.plugins);\n let instance = new EditorState($config);\n $config.fields.forEach(field => {\n if (field.name == \"doc\") {\n instance.doc = Node.fromJSON(config.schema, json.doc);\n }\n else if (field.name == \"selection\") {\n instance.selection = Selection.fromJSON(instance.doc, json.selection);\n }\n else if (field.name == \"storedMarks\") {\n if (json.storedMarks)\n instance.storedMarks = json.storedMarks.map(config.schema.markFromJSON);\n }\n else {\n if (pluginFields)\n for (let prop in pluginFields) {\n let plugin = pluginFields[prop], state = plugin.spec.state;\n if (plugin.key == field.name && state && state.fromJSON &&\n Object.prototype.hasOwnProperty.call(json, prop)) {\n instance[field.name] = state.fromJSON.call(plugin, config, json[prop], instance);\n return;\n }\n }\n instance[field.name] = field.init(config, instance);\n }\n });\n return instance;\n }\n}\n\nfunction bindProps(obj, self, target) {\n for (let prop in obj) {\n let val = obj[prop];\n if (val instanceof Function)\n val = val.bind(self);\n else if (prop == \"handleDOMEvents\")\n val = bindProps(val, self, {});\n target[prop] = val;\n }\n return target;\n}\n/**\nPlugins bundle functionality that can be added to an editor.\nThey are part of the [editor state](https://prosemirror.net/docs/ref/#state.EditorState) and\nmay influence that state and the view that contains it.\n*/\nclass Plugin {\n /**\n Create a plugin.\n */\n constructor(\n /**\n The plugin's [spec object](https://prosemirror.net/docs/ref/#state.PluginSpec).\n */\n spec) {\n this.spec = spec;\n /**\n The [props](https://prosemirror.net/docs/ref/#view.EditorProps) exported by this plugin.\n */\n this.props = {};\n if (spec.props)\n bindProps(spec.props, this, this.props);\n this.key = spec.key ? spec.key.key : createKey(\"plugin\");\n }\n /**\n Extract the plugin's state field from an editor state.\n */\n getState(state) { return state[this.key]; }\n}\nconst keys = Object.create(null);\nfunction createKey(name) {\n if (name in keys)\n return name + \"$\" + ++keys[name];\n keys[name] = 0;\n return name + \"$\";\n}\n/**\nA key is used to [tag](https://prosemirror.net/docs/ref/#state.PluginSpec.key) plugins in a way\nthat makes it possible to find them, given an editor state.\nAssigning a key does mean only one plugin of that type can be\nactive in a state.\n*/\nclass PluginKey {\n /**\n Create a plugin key.\n */\n constructor(name = \"key\") { this.key = createKey(name); }\n /**\n Get the active plugin with this key, if any, from an editor\n state.\n */\n get(state) { return state.config.pluginsByKey[this.key]; }\n /**\n Get the plugin's state from an editor state.\n */\n getState(state) { return state[this.key]; }\n}\n\nexport { AllSelection, EditorState, NodeSelection, Plugin, PluginKey, Selection, SelectionRange, TextSelection, Transaction };\n","import { ReplaceError, Slice, Fragment, MarkType, Mark } from 'prosemirror-model';\n\n// Recovery values encode a range index and an offset. They are\n// represented as numbers, because tons of them will be created when\n// mapping, for example, a large number of decorations. The number's\n// lower 16 bits provide the index, the remaining bits the offset.\n//\n// Note: We intentionally don't use bit shift operators to en- and\n// decode these, since those clip to 32 bits, which we might in rare\n// cases want to overflow. A 64-bit float can represent 48-bit\n// integers precisely.\nconst lower16 = 0xffff;\nconst factor16 = Math.pow(2, 16);\nfunction makeRecover(index, offset) { return index + offset * factor16; }\nfunction recoverIndex(value) { return value & lower16; }\nfunction recoverOffset(value) { return (value - (value & lower16)) / factor16; }\nconst DEL_BEFORE = 1, DEL_AFTER = 2, DEL_ACROSS = 4, DEL_SIDE = 8;\n/**\nAn object representing a mapped position with extra\ninformation.\n*/\nclass MapResult {\n /**\n @internal\n */\n constructor(\n /**\n The mapped version of the position.\n */\n pos, \n /**\n @internal\n */\n delInfo, \n /**\n @internal\n */\n recover) {\n this.pos = pos;\n this.delInfo = delInfo;\n this.recover = recover;\n }\n /**\n Tells you whether the position was deleted, that is, whether the\n step removed the token on the side queried (via the `assoc`)\n argument from the document.\n */\n get deleted() { return (this.delInfo & DEL_SIDE) > 0; }\n /**\n Tells you whether the token before the mapped position was deleted.\n */\n get deletedBefore() { return (this.delInfo & (DEL_BEFORE | DEL_ACROSS)) > 0; }\n /**\n True when the token after the mapped position was deleted.\n */\n get deletedAfter() { return (this.delInfo & (DEL_AFTER | DEL_ACROSS)) > 0; }\n /**\n Tells whether any of the steps mapped through deletes across the\n position (including both the token before and after the\n position).\n */\n get deletedAcross() { return (this.delInfo & DEL_ACROSS) > 0; }\n}\n/**\nA map describing the deletions and insertions made by a step, which\ncan be used to find the correspondence between positions in the\npre-step version of a document and the same position in the\npost-step version.\n*/\nclass StepMap {\n /**\n Create a position map. The modifications to the document are\n represented as an array of numbers, in which each group of three\n represents a modified chunk as `[start, oldSize, newSize]`.\n */\n constructor(\n /**\n @internal\n */\n ranges, \n /**\n @internal\n */\n inverted = false) {\n this.ranges = ranges;\n this.inverted = inverted;\n if (!ranges.length && StepMap.empty)\n return StepMap.empty;\n }\n /**\n @internal\n */\n recover(value) {\n let diff = 0, index = recoverIndex(value);\n if (!this.inverted)\n for (let i = 0; i < index; i++)\n diff += this.ranges[i * 3 + 2] - this.ranges[i * 3 + 1];\n return this.ranges[index * 3] + diff + recoverOffset(value);\n }\n mapResult(pos, assoc = 1) { return this._map(pos, assoc, false); }\n map(pos, assoc = 1) { return this._map(pos, assoc, true); }\n /**\n @internal\n */\n _map(pos, assoc, simple) {\n let diff = 0, oldIndex = this.inverted ? 2 : 1, newIndex = this.inverted ? 1 : 2;\n for (let i = 0; i < this.ranges.length; i += 3) {\n let start = this.ranges[i] - (this.inverted ? diff : 0);\n if (start > pos)\n break;\n let oldSize = this.ranges[i + oldIndex], newSize = this.ranges[i + newIndex], end = start + oldSize;\n if (pos <= end) {\n let side = !oldSize ? assoc : pos == start ? -1 : pos == end ? 1 : assoc;\n let result = start + diff + (side < 0 ? 0 : newSize);\n if (simple)\n return result;\n let recover = pos == (assoc < 0 ? start : end) ? null : makeRecover(i / 3, pos - start);\n let del = pos == start ? DEL_AFTER : pos == end ? DEL_BEFORE : DEL_ACROSS;\n if (assoc < 0 ? pos != start : pos != end)\n del |= DEL_SIDE;\n return new MapResult(result, del, recover);\n }\n diff += newSize - oldSize;\n }\n return simple ? pos + diff : new MapResult(pos + diff, 0, null);\n }\n /**\n @internal\n */\n touches(pos, recover) {\n let diff = 0, index = recoverIndex(recover);\n let oldIndex = this.inverted ? 2 : 1, newIndex = this.inverted ? 1 : 2;\n for (let i = 0; i < this.ranges.length; i += 3) {\n let start = this.ranges[i] - (this.inverted ? diff : 0);\n if (start > pos)\n break;\n let oldSize = this.ranges[i + oldIndex], end = start + oldSize;\n if (pos <= end && i == index * 3)\n return true;\n diff += this.ranges[i + newIndex] - oldSize;\n }\n return false;\n }\n /**\n Calls the given function on each of the changed ranges included in\n this map.\n */\n forEach(f) {\n let oldIndex = this.inverted ? 2 : 1, newIndex = this.inverted ? 1 : 2;\n for (let i = 0, diff = 0; i < this.ranges.length; i += 3) {\n let start = this.ranges[i], oldStart = start - (this.inverted ? diff : 0), newStart = start + (this.inverted ? 0 : diff);\n let oldSize = this.ranges[i + oldIndex], newSize = this.ranges[i + newIndex];\n f(oldStart, oldStart + oldSize, newStart, newStart + newSize);\n diff += newSize - oldSize;\n }\n }\n /**\n Create an inverted version of this map. The result can be used to\n map positions in the post-step document to the pre-step document.\n */\n invert() {\n return new StepMap(this.ranges, !this.inverted);\n }\n /**\n @internal\n */\n toString() {\n return (this.inverted ? \"-\" : \"\") + JSON.stringify(this.ranges);\n }\n /**\n Create a map that moves all positions by offset `n` (which may be\n negative). This can be useful when applying steps meant for a\n sub-document to a larger document, or vice-versa.\n */\n static offset(n) {\n return n == 0 ? StepMap.empty : new StepMap(n < 0 ? [0, -n, 0] : [0, 0, n]);\n }\n}\n/**\nA StepMap that contains no changed ranges.\n*/\nStepMap.empty = new StepMap([]);\n/**\nA mapping represents a pipeline of zero or more [step\nmaps](https://prosemirror.net/docs/ref/#transform.StepMap). It has special provisions for losslessly\nhandling mapping positions through a series of steps in which some\nsteps are inverted versions of earlier steps. (This comes up when\n‘[rebasing](/docs/guide/#transform.rebasing)’ steps for\ncollaboration or history management.)\n*/\nclass Mapping {\n /**\n Create a new mapping with the given position maps.\n */\n constructor(\n /**\n The step maps in this mapping.\n */\n maps = [], \n /**\n @internal\n */\n mirror, \n /**\n The starting position in the `maps` array, used when `map` or\n `mapResult` is called.\n */\n from = 0, \n /**\n The end position in the `maps` array.\n */\n to = maps.length) {\n this.maps = maps;\n this.mirror = mirror;\n this.from = from;\n this.to = to;\n }\n /**\n Create a mapping that maps only through a part of this one.\n */\n slice(from = 0, to = this.maps.length) {\n return new Mapping(this.maps, this.mirror, from, to);\n }\n /**\n @internal\n */\n copy() {\n return new Mapping(this.maps.slice(), this.mirror && this.mirror.slice(), this.from, this.to);\n }\n /**\n Add a step map to the end of this mapping. If `mirrors` is\n given, it should be the index of the step map that is the mirror\n image of this one.\n */\n appendMap(map, mirrors) {\n this.to = this.maps.push(map);\n if (mirrors != null)\n this.setMirror(this.maps.length - 1, mirrors);\n }\n /**\n Add all the step maps in a given mapping to this one (preserving\n mirroring information).\n */\n appendMapping(mapping) {\n for (let i = 0, startSize = this.maps.length; i < mapping.maps.length; i++) {\n let mirr = mapping.getMirror(i);\n this.appendMap(mapping.maps[i], mirr != null && mirr < i ? startSize + mirr : undefined);\n }\n }\n /**\n Finds the offset of the step map that mirrors the map at the\n given offset, in this mapping (as per the second argument to\n `appendMap`).\n */\n getMirror(n) {\n if (this.mirror)\n for (let i = 0; i < this.mirror.length; i++)\n if (this.mirror[i] == n)\n return this.mirror[i + (i % 2 ? -1 : 1)];\n }\n /**\n @internal\n */\n setMirror(n, m) {\n if (!this.mirror)\n this.mirror = [];\n this.mirror.push(n, m);\n }\n /**\n Append the inverse of the given mapping to this one.\n */\n appendMappingInverted(mapping) {\n for (let i = mapping.maps.length - 1, totalSize = this.maps.length + mapping.maps.length; i >= 0; i--) {\n let mirr = mapping.getMirror(i);\n this.appendMap(mapping.maps[i].invert(), mirr != null && mirr > i ? totalSize - mirr - 1 : undefined);\n }\n }\n /**\n Create an inverted version of this mapping.\n */\n invert() {\n let inverse = new Mapping;\n inverse.appendMappingInverted(this);\n return inverse;\n }\n /**\n Map a position through this mapping.\n */\n map(pos, assoc = 1) {\n if (this.mirror)\n return this._map(pos, assoc, true);\n for (let i = this.from; i < this.to; i++)\n pos = this.maps[i].map(pos, assoc);\n return pos;\n }\n /**\n Map a position through this mapping, returning a mapping\n result.\n */\n mapResult(pos, assoc = 1) { return this._map(pos, assoc, false); }\n /**\n @internal\n */\n _map(pos, assoc, simple) {\n let delInfo = 0;\n for (let i = this.from; i < this.to; i++) {\n let map = this.maps[i], result = map.mapResult(pos, assoc);\n if (result.recover != null) {\n let corr = this.getMirror(i);\n if (corr != null && corr > i && corr < this.to) {\n i = corr;\n pos = this.maps[corr].recover(result.recover);\n continue;\n }\n }\n delInfo |= result.delInfo;\n pos = result.pos;\n }\n return simple ? pos : new MapResult(pos, delInfo, null);\n }\n}\n\nconst stepsByID = Object.create(null);\n/**\nA step object represents an atomic change. It generally applies\nonly to the document it was created for, since the positions\nstored in it will only make sense for that document.\n\nNew steps are defined by creating classes that extend `Step`,\noverriding the `apply`, `invert`, `map`, `getMap` and `fromJSON`\nmethods, and registering your class with a unique\nJSON-serialization identifier using\n[`Step.jsonID`](https://prosemirror.net/docs/ref/#transform.Step^jsonID).\n*/\nclass Step {\n /**\n Get the step map that represents the changes made by this step,\n and which can be used to transform between positions in the old\n and the new document.\n */\n getMap() { return StepMap.empty; }\n /**\n Try to merge this step with another one, to be applied directly\n after it. Returns the merged step when possible, null if the\n steps can't be merged.\n */\n merge(other) { return null; }\n /**\n Deserialize a step from its JSON representation. Will call\n through to the step class' own implementation of this method.\n */\n static fromJSON(schema, json) {\n if (!json || !json.stepType)\n throw new RangeError(\"Invalid input for Step.fromJSON\");\n let type = stepsByID[json.stepType];\n if (!type)\n throw new RangeError(`No step type ${json.stepType} defined`);\n return type.fromJSON(schema, json);\n }\n /**\n To be able to serialize steps to JSON, each step needs a string\n ID to attach to its JSON representation. Use this method to\n register an ID for your step classes. Try to pick something\n that's unlikely to clash with steps from other modules.\n */\n static jsonID(id, stepClass) {\n if (id in stepsByID)\n throw new RangeError(\"Duplicate use of step JSON ID \" + id);\n stepsByID[id] = stepClass;\n stepClass.prototype.jsonID = id;\n return stepClass;\n }\n}\n/**\nThe result of [applying](https://prosemirror.net/docs/ref/#transform.Step.apply) a step. Contains either a\nnew document or a failure value.\n*/\nclass StepResult {\n /**\n @internal\n */\n constructor(\n /**\n The transformed document, if successful.\n */\n doc, \n /**\n The failure message, if unsuccessful.\n */\n failed) {\n this.doc = doc;\n this.failed = failed;\n }\n /**\n Create a successful step result.\n */\n static ok(doc) { return new StepResult(doc, null); }\n /**\n Create a failed step result.\n */\n static fail(message) { return new StepResult(null, message); }\n /**\n Call [`Node.replace`](https://prosemirror.net/docs/ref/#model.Node.replace) with the given\n arguments. Create a successful result if it succeeds, and a\n failed one if it throws a `ReplaceError`.\n */\n static fromReplace(doc, from, to, slice) {\n try {\n return StepResult.ok(doc.replace(from, to, slice));\n }\n catch (e) {\n if (e instanceof ReplaceError)\n return StepResult.fail(e.message);\n throw e;\n }\n }\n}\n\nfunction mapFragment(fragment, f, parent) {\n let mapped = [];\n for (let i = 0; i < fragment.childCount; i++) {\n let child = fragment.child(i);\n if (child.content.size)\n child = child.copy(mapFragment(child.content, f, child));\n if (child.isInline)\n child = f(child, parent, i);\n mapped.push(child);\n }\n return Fragment.fromArray(mapped);\n}\n/**\nAdd a mark to all inline content between two positions.\n*/\nclass AddMarkStep extends Step {\n /**\n Create a mark step.\n */\n constructor(\n /**\n The start of the marked range.\n */\n from, \n /**\n The end of the marked range.\n */\n to, \n /**\n The mark to add.\n */\n mark) {\n super();\n this.from = from;\n this.to = to;\n this.mark = mark;\n }\n apply(doc) {\n let oldSlice = doc.slice(this.from, this.to), $from = doc.resolve(this.from);\n let parent = $from.node($from.sharedDepth(this.to));\n let slice = new Slice(mapFragment(oldSlice.content, (node, parent) => {\n if (!node.isAtom || !parent.type.allowsMarkType(this.mark.type))\n return node;\n return node.mark(this.mark.addToSet(node.marks));\n }, parent), oldSlice.openStart, oldSlice.openEnd);\n return StepResult.fromReplace(doc, this.from, this.to, slice);\n }\n invert() {\n return new RemoveMarkStep(this.from, this.to, this.mark);\n }\n map(mapping) {\n let from = mapping.mapResult(this.from, 1), to = mapping.mapResult(this.to, -1);\n if (from.deleted && to.deleted || from.pos >= to.pos)\n return null;\n return new AddMarkStep(from.pos, to.pos, this.mark);\n }\n merge(other) {\n if (other instanceof AddMarkStep &&\n other.mark.eq(this.mark) &&\n this.from <= other.to && this.to >= other.from)\n return new AddMarkStep(Math.min(this.from, other.from), Math.max(this.to, other.to), this.mark);\n return null;\n }\n toJSON() {\n return { stepType: \"addMark\", mark: this.mark.toJSON(),\n from: this.from, to: this.to };\n }\n /**\n @internal\n */\n static fromJSON(schema, json) {\n if (typeof json.from != \"number\" || typeof json.to != \"number\")\n throw new RangeError(\"Invalid input for AddMarkStep.fromJSON\");\n return new AddMarkStep(json.from, json.to, schema.markFromJSON(json.mark));\n }\n}\nStep.jsonID(\"addMark\", AddMarkStep);\n/**\nRemove a mark from all inline content between two positions.\n*/\nclass RemoveMarkStep extends Step {\n /**\n Create a mark-removing step.\n */\n constructor(\n /**\n The start of the unmarked range.\n */\n from, \n /**\n The end of the unmarked range.\n */\n to, \n /**\n The mark to remove.\n */\n mark) {\n super();\n this.from = from;\n this.to = to;\n this.mark = mark;\n }\n apply(doc) {\n let oldSlice = doc.slice(this.from, this.to);\n let slice = new Slice(mapFragment(oldSlice.content, node => {\n return node.mark(this.mark.removeFromSet(node.marks));\n }, doc), oldSlice.openStart, oldSlice.openEnd);\n return StepResult.fromReplace(doc, this.from, this.to, slice);\n }\n invert() {\n return new AddMarkStep(this.from, this.to, this.mark);\n }\n map(mapping) {\n let from = mapping.mapResult(this.from, 1), to = mapping.mapResult(this.to, -1);\n if (from.deleted && to.deleted || from.pos >= to.pos)\n return null;\n return new RemoveMarkStep(from.pos, to.pos, this.mark);\n }\n merge(other) {\n if (other instanceof RemoveMarkStep &&\n other.mark.eq(this.mark) &&\n this.from <= other.to && this.to >= other.from)\n return new RemoveMarkStep(Math.min(this.from, other.from), Math.max(this.to, other.to), this.mark);\n return null;\n }\n toJSON() {\n return { stepType: \"removeMark\", mark: this.mark.toJSON(),\n from: this.from, to: this.to };\n }\n /**\n @internal\n */\n static fromJSON(schema, json) {\n if (typeof json.from != \"number\" || typeof json.to != \"number\")\n throw new RangeError(\"Invalid input for RemoveMarkStep.fromJSON\");\n return new RemoveMarkStep(json.from, json.to, schema.markFromJSON(json.mark));\n }\n}\nStep.jsonID(\"removeMark\", RemoveMarkStep);\n/**\nAdd a mark to a specific node.\n*/\nclass AddNodeMarkStep extends Step {\n /**\n Create a node mark step.\n */\n constructor(\n /**\n The position of the target node.\n */\n pos, \n /**\n The mark to add.\n */\n mark) {\n super();\n this.pos = pos;\n this.mark = mark;\n }\n apply(doc) {\n let node = doc.nodeAt(this.pos);\n if (!node)\n return StepResult.fail(\"No node at mark step's position\");\n let updated = node.type.create(node.attrs, null, this.mark.addToSet(node.marks));\n return StepResult.fromReplace(doc, this.pos, this.pos + 1, new Slice(Fragment.from(updated), 0, node.isLeaf ? 0 : 1));\n }\n invert(doc) {\n let node = doc.nodeAt(this.pos);\n if (node) {\n let newSet = this.mark.addToSet(node.marks);\n if (newSet.length == node.marks.length) {\n for (let i = 0; i < node.marks.length; i++)\n if (!node.marks[i].isInSet(newSet))\n return new AddNodeMarkStep(this.pos, node.marks[i]);\n return new AddNodeMarkStep(this.pos, this.mark);\n }\n }\n return new RemoveNodeMarkStep(this.pos, this.mark);\n }\n map(mapping) {\n let pos = mapping.mapResult(this.pos, 1);\n return pos.deletedAfter ? null : new AddNodeMarkStep(pos.pos, this.mark);\n }\n toJSON() {\n return { stepType: \"addNodeMark\", pos: this.pos, mark: this.mark.toJSON() };\n }\n /**\n @internal\n */\n static fromJSON(schema, json) {\n if (typeof json.pos != \"number\")\n throw new RangeError(\"Invalid input for AddNodeMarkStep.fromJSON\");\n return new AddNodeMarkStep(json.pos, schema.markFromJSON(json.mark));\n }\n}\nStep.jsonID(\"addNodeMark\", AddNodeMarkStep);\n/**\nRemove a mark from a specific node.\n*/\nclass RemoveNodeMarkStep extends Step {\n /**\n Create a mark-removing step.\n */\n constructor(\n /**\n The position of the target node.\n */\n pos, \n /**\n The mark to remove.\n */\n mark) {\n super();\n this.pos = pos;\n this.mark = mark;\n }\n apply(doc) {\n let node = doc.nodeAt(this.pos);\n if (!node)\n return StepResult.fail(\"No node at mark step's position\");\n let updated = node.type.create(node.attrs, null, this.mark.removeFromSet(node.marks));\n return StepResult.fromReplace(doc, this.pos, this.pos + 1, new Slice(Fragment.from(updated), 0, node.isLeaf ? 0 : 1));\n }\n invert(doc) {\n let node = doc.nodeAt(this.pos);\n if (!node || !this.mark.isInSet(node.marks))\n return this;\n return new AddNodeMarkStep(this.pos, this.mark);\n }\n map(mapping) {\n let pos = mapping.mapResult(this.pos, 1);\n return pos.deletedAfter ? null : new RemoveNodeMarkStep(pos.pos, this.mark);\n }\n toJSON() {\n return { stepType: \"removeNodeMark\", pos: this.pos, mark: this.mark.toJSON() };\n }\n /**\n @internal\n */\n static fromJSON(schema, json) {\n if (typeof json.pos != \"number\")\n throw new RangeError(\"Invalid input for RemoveNodeMarkStep.fromJSON\");\n return new RemoveNodeMarkStep(json.pos, schema.markFromJSON(json.mark));\n }\n}\nStep.jsonID(\"removeNodeMark\", RemoveNodeMarkStep);\n\n/**\nReplace a part of the document with a slice of new content.\n*/\nclass ReplaceStep extends Step {\n /**\n The given `slice` should fit the 'gap' between `from` and\n `to`—the depths must line up, and the surrounding nodes must be\n able to be joined with the open sides of the slice. When\n `structure` is true, the step will fail if the content between\n from and to is not just a sequence of closing and then opening\n tokens (this is to guard against rebased replace steps\n overwriting something they weren't supposed to).\n */\n constructor(\n /**\n The start position of the replaced range.\n */\n from, \n /**\n The end position of the replaced range.\n */\n to, \n /**\n The slice to insert.\n */\n slice, \n /**\n @internal\n */\n structure = false) {\n super();\n this.from = from;\n this.to = to;\n this.slice = slice;\n this.structure = structure;\n }\n apply(doc) {\n if (this.structure && contentBetween(doc, this.from, this.to))\n return StepResult.fail(\"Structure replace would overwrite content\");\n return StepResult.fromReplace(doc, this.from, this.to, this.slice);\n }\n getMap() {\n return new StepMap([this.from, this.to - this.from, this.slice.size]);\n }\n invert(doc) {\n return new ReplaceStep(this.from, this.from + this.slice.size, doc.slice(this.from, this.to));\n }\n map(mapping) {\n let from = mapping.mapResult(this.from, 1), to = mapping.mapResult(this.to, -1);\n if (from.deletedAcross && to.deletedAcross)\n return null;\n return new ReplaceStep(from.pos, Math.max(from.pos, to.pos), this.slice);\n }\n merge(other) {\n if (!(other instanceof ReplaceStep) || other.structure || this.structure)\n return null;\n if (this.from + this.slice.size == other.from && !this.slice.openEnd && !other.slice.openStart) {\n let slice = this.slice.size + other.slice.size == 0 ? Slice.empty\n : new Slice(this.slice.content.append(other.slice.content), this.slice.openStart, other.slice.openEnd);\n return new ReplaceStep(this.from, this.to + (other.to - other.from), slice, this.structure);\n }\n else if (other.to == this.from && !this.slice.openStart && !other.slice.openEnd) {\n let slice = this.slice.size + other.slice.size == 0 ? Slice.empty\n : new Slice(other.slice.content.append(this.slice.content), other.slice.openStart, this.slice.openEnd);\n return new ReplaceStep(other.from, this.to, slice, this.structure);\n }\n else {\n return null;\n }\n }\n toJSON() {\n let json = { stepType: \"replace\", from: this.from, to: this.to };\n if (this.slice.size)\n json.slice = this.slice.toJSON();\n if (this.structure)\n json.structure = true;\n return json;\n }\n /**\n @internal\n */\n static fromJSON(schema, json) {\n if (typeof json.from != \"number\" || typeof json.to != \"number\")\n throw new RangeError(\"Invalid input for ReplaceStep.fromJSON\");\n return new ReplaceStep(json.from, json.to, Slice.fromJSON(schema, json.slice), !!json.structure);\n }\n}\nStep.jsonID(\"replace\", ReplaceStep);\n/**\nReplace a part of the document with a slice of content, but\npreserve a range of the replaced content by moving it into the\nslice.\n*/\nclass ReplaceAroundStep extends Step {\n /**\n Create a replace-around step with the given range and gap.\n `insert` should be the point in the slice into which the content\n of the gap should be moved. `structure` has the same meaning as\n it has in the [`ReplaceStep`](https://prosemirror.net/docs/ref/#transform.ReplaceStep) class.\n */\n constructor(\n /**\n The start position of the replaced range.\n */\n from, \n /**\n The end position of the replaced range.\n */\n to, \n /**\n The start of preserved range.\n */\n gapFrom, \n /**\n The end of preserved range.\n */\n gapTo, \n /**\n The slice to insert.\n */\n slice, \n /**\n The position in the slice where the preserved range should be\n inserted.\n */\n insert, \n /**\n @internal\n */\n structure = false) {\n super();\n this.from = from;\n this.to = to;\n this.gapFrom = gapFrom;\n this.gapTo = gapTo;\n this.slice = slice;\n this.insert = insert;\n this.structure = structure;\n }\n apply(doc) {\n if (this.structure && (contentBetween(doc, this.from, this.gapFrom) ||\n contentBetween(doc, this.gapTo, this.to)))\n return StepResult.fail(\"Structure gap-replace would overwrite content\");\n let gap = doc.slice(this.gapFrom, this.gapTo);\n if (gap.openStart || gap.openEnd)\n return StepResult.fail(\"Gap is not a flat range\");\n let inserted = this.slice.insertAt(this.insert, gap.content);\n if (!inserted)\n return StepResult.fail(\"Content does not fit in gap\");\n return StepResult.fromReplace(doc, this.from, this.to, inserted);\n }\n getMap() {\n return new StepMap([this.from, this.gapFrom - this.from, this.insert,\n this.gapTo, this.to - this.gapTo, this.slice.size - this.insert]);\n }\n invert(doc) {\n let gap = this.gapTo - this.gapFrom;\n return new ReplaceAroundStep(this.from, this.from + this.slice.size + gap, this.from + this.insert, this.from + this.insert + gap, doc.slice(this.from, this.to).removeBetween(this.gapFrom - this.from, this.gapTo - this.from), this.gapFrom - this.from, this.structure);\n }\n map(mapping) {\n let from = mapping.mapResult(this.from, 1), to = mapping.mapResult(this.to, -1);\n let gapFrom = mapping.map(this.gapFrom, -1), gapTo = mapping.map(this.gapTo, 1);\n if ((from.deletedAcross && to.deletedAcross) || gapFrom < from.pos || gapTo > to.pos)\n return null;\n return new ReplaceAroundStep(from.pos, to.pos, gapFrom, gapTo, this.slice, this.insert, this.structure);\n }\n toJSON() {\n let json = { stepType: \"replaceAround\", from: this.from, to: this.to,\n gapFrom: this.gapFrom, gapTo: this.gapTo, insert: this.insert };\n if (this.slice.size)\n json.slice = this.slice.toJSON();\n if (this.structure)\n json.structure = true;\n return json;\n }\n /**\n @internal\n */\n static fromJSON(schema, json) {\n if (typeof json.from != \"number\" || typeof json.to != \"number\" ||\n typeof json.gapFrom != \"number\" || typeof json.gapTo != \"number\" || typeof json.insert != \"number\")\n throw new RangeError(\"Invalid input for ReplaceAroundStep.fromJSON\");\n return new ReplaceAroundStep(json.from, json.to, json.gapFrom, json.gapTo, Slice.fromJSON(schema, json.slice), json.insert, !!json.structure);\n }\n}\nStep.jsonID(\"replaceAround\", ReplaceAroundStep);\nfunction contentBetween(doc, from, to) {\n let $from = doc.resolve(from), dist = to - from, depth = $from.depth;\n while (dist > 0 && depth > 0 && $from.indexAfter(depth) == $from.node(depth).childCount) {\n depth--;\n dist--;\n }\n if (dist > 0) {\n let next = $from.node(depth).maybeChild($from.indexAfter(depth));\n while (dist > 0) {\n if (!next || next.isLeaf)\n return true;\n next = next.firstChild;\n dist--;\n }\n }\n return false;\n}\n\nfunction addMark(tr, from, to, mark) {\n let removed = [], added = [];\n let removing, adding;\n tr.doc.nodesBetween(from, to, (node, pos, parent) => {\n if (!node.isInline)\n return;\n let marks = node.marks;\n if (!mark.isInSet(marks) && parent.type.allowsMarkType(mark.type)) {\n let start = Math.max(pos, from), end = Math.min(pos + node.nodeSize, to);\n let newSet = mark.addToSet(marks);\n for (let i = 0; i < marks.length; i++) {\n if (!marks[i].isInSet(newSet)) {\n if (removing && removing.to == start && removing.mark.eq(marks[i]))\n removing.to = end;\n else\n removed.push(removing = new RemoveMarkStep(start, end, marks[i]));\n }\n }\n if (adding && adding.to == start)\n adding.to = end;\n else\n added.push(adding = new AddMarkStep(start, end, mark));\n }\n });\n removed.forEach(s => tr.step(s));\n added.forEach(s => tr.step(s));\n}\nfunction removeMark(tr, from, to, mark) {\n let matched = [], step = 0;\n tr.doc.nodesBetween(from, to, (node, pos) => {\n if (!node.isInline)\n return;\n step++;\n let toRemove = null;\n if (mark instanceof MarkType) {\n let set = node.marks, found;\n while (found = mark.isInSet(set)) {\n (toRemove || (toRemove = [])).push(found);\n set = found.removeFromSet(set);\n }\n }\n else if (mark) {\n if (mark.isInSet(node.marks))\n toRemove = [mark];\n }\n else {\n toRemove = node.marks;\n }\n if (toRemove && toRemove.length) {\n let end = Math.min(pos + node.nodeSize, to);\n for (let i = 0; i < toRemove.length; i++) {\n let style = toRemove[i], found;\n for (let j = 0; j < matched.length; j++) {\n let m = matched[j];\n if (m.step == step - 1 && style.eq(matched[j].style))\n found = m;\n }\n if (found) {\n found.to = end;\n found.step = step;\n }\n else {\n matched.push({ style, from: Math.max(pos, from), to: end, step });\n }\n }\n }\n });\n matched.forEach(m => tr.step(new RemoveMarkStep(m.from, m.to, m.style)));\n}\nfunction clearIncompatible(tr, pos, parentType, match = parentType.contentMatch) {\n let node = tr.doc.nodeAt(pos);\n let replSteps = [], cur = pos + 1;\n for (let i = 0; i < node.childCount; i++) {\n let child = node.child(i), end = cur + child.nodeSize;\n let allowed = match.matchType(child.type);\n if (!allowed) {\n replSteps.push(new ReplaceStep(cur, end, Slice.empty));\n }\n else {\n match = allowed;\n for (let j = 0; j < child.marks.length; j++)\n if (!parentType.allowsMarkType(child.marks[j].type))\n tr.step(new RemoveMarkStep(cur, end, child.marks[j]));\n if (child.isText && !parentType.spec.code) {\n let m, newline = /\\r?\\n|\\r/g, slice;\n while (m = newline.exec(child.text)) {\n if (!slice)\n slice = new Slice(Fragment.from(parentType.schema.text(\" \", parentType.allowedMarks(child.marks))), 0, 0);\n replSteps.push(new ReplaceStep(cur + m.index, cur + m.index + m[0].length, slice));\n }\n }\n }\n cur = end;\n }\n if (!match.validEnd) {\n let fill = match.fillBefore(Fragment.empty, true);\n tr.replace(cur, cur, new Slice(fill, 0, 0));\n }\n for (let i = replSteps.length - 1; i >= 0; i--)\n tr.step(replSteps[i]);\n}\n\nfunction canCut(node, start, end) {\n return (start == 0 || node.canReplace(start, node.childCount)) &&\n (end == node.childCount || node.canReplace(0, end));\n}\n/**\nTry to find a target depth to which the content in the given range\ncan be lifted. Will not go across\n[isolating](https://prosemirror.net/docs/ref/#model.NodeSpec.isolating) parent nodes.\n*/\nfunction liftTarget(range) {\n let parent = range.parent;\n let content = parent.content.cutByIndex(range.startIndex, range.endIndex);\n for (let depth = range.depth;; --depth) {\n let node = range.$from.node(depth);\n let index = range.$from.index(depth), endIndex = range.$to.indexAfter(depth);\n if (depth < range.depth && node.canReplace(index, endIndex, content))\n return depth;\n if (depth == 0 || node.type.spec.isolating || !canCut(node, index, endIndex))\n break;\n }\n return null;\n}\nfunction lift(tr, range, target) {\n let { $from, $to, depth } = range;\n let gapStart = $from.before(depth + 1), gapEnd = $to.after(depth + 1);\n let start = gapStart, end = gapEnd;\n let before = Fragment.empty, openStart = 0;\n for (let d = depth, splitting = false; d > target; d--)\n if (splitting || $from.index(d) > 0) {\n splitting = true;\n before = Fragment.from($from.node(d).copy(before));\n openStart++;\n }\n else {\n start--;\n }\n let after = Fragment.empty, openEnd = 0;\n for (let d = depth, splitting = false; d > target; d--)\n if (splitting || $to.after(d + 1) < $to.end(d)) {\n splitting = true;\n after = Fragment.from($to.node(d).copy(after));\n openEnd++;\n }\n else {\n end++;\n }\n tr.step(new ReplaceAroundStep(start, end, gapStart, gapEnd, new Slice(before.append(after), openStart, openEnd), before.size - openStart, true));\n}\n/**\nTry to find a valid way to wrap the content in the given range in a\nnode of the given type. May introduce extra nodes around and inside\nthe wrapper node, if necessary. Returns null if no valid wrapping\ncould be found. When `innerRange` is given, that range's content is\nused as the content to fit into the wrapping, instead of the\ncontent of `range`.\n*/\nfunction findWrapping(range, nodeType, attrs = null, innerRange = range) {\n let around = findWrappingOutside(range, nodeType);\n let inner = around && findWrappingInside(innerRange, nodeType);\n if (!inner)\n return null;\n return around.map(withAttrs)\n .concat({ type: nodeType, attrs }).concat(inner.map(withAttrs));\n}\nfunction withAttrs(type) { return { type, attrs: null }; }\nfunction findWrappingOutside(range, type) {\n let { parent, startIndex, endIndex } = range;\n let around = parent.contentMatchAt(startIndex).findWrapping(type);\n if (!around)\n return null;\n let outer = around.length ? around[0] : type;\n return parent.canReplaceWith(startIndex, endIndex, outer) ? around : null;\n}\nfunction findWrappingInside(range, type) {\n let { parent, startIndex, endIndex } = range;\n let inner = parent.child(startIndex);\n let inside = type.contentMatch.findWrapping(inner.type);\n if (!inside)\n return null;\n let lastType = inside.length ? inside[inside.length - 1] : type;\n let innerMatch = lastType.contentMatch;\n for (let i = startIndex; innerMatch && i < endIndex; i++)\n innerMatch = innerMatch.matchType(parent.child(i).type);\n if (!innerMatch || !innerMatch.validEnd)\n return null;\n return inside;\n}\nfunction wrap(tr, range, wrappers) {\n let content = Fragment.empty;\n for (let i = wrappers.length - 1; i >= 0; i--) {\n if (content.size) {\n let match = wrappers[i].type.contentMatch.matchFragment(content);\n if (!match || !match.validEnd)\n throw new RangeError(\"Wrapper type given to Transform.wrap does not form valid content of its parent wrapper\");\n }\n content = Fragment.from(wrappers[i].type.create(wrappers[i].attrs, content));\n }\n let start = range.start, end = range.end;\n tr.step(new ReplaceAroundStep(start, end, start, end, new Slice(content, 0, 0), wrappers.length, true));\n}\nfunction setBlockType(tr, from, to, type, attrs) {\n if (!type.isTextblock)\n throw new RangeError(\"Type given to setBlockType should be a textblock\");\n let mapFrom = tr.steps.length;\n tr.doc.nodesBetween(from, to, (node, pos) => {\n if (node.isTextblock && !node.hasMarkup(type, attrs) && canChangeType(tr.doc, tr.mapping.slice(mapFrom).map(pos), type)) {\n // Ensure all markup that isn't allowed in the new node type is cleared\n tr.clearIncompatible(tr.mapping.slice(mapFrom).map(pos, 1), type);\n let mapping = tr.mapping.slice(mapFrom);\n let startM = mapping.map(pos, 1), endM = mapping.map(pos + node.nodeSize, 1);\n tr.step(new ReplaceAroundStep(startM, endM, startM + 1, endM - 1, new Slice(Fragment.from(type.create(attrs, null, node.marks)), 0, 0), 1, true));\n return false;\n }\n });\n}\nfunction canChangeType(doc, pos, type) {\n let $pos = doc.resolve(pos), index = $pos.index();\n return $pos.parent.canReplaceWith(index, index + 1, type);\n}\n/**\nChange the type, attributes, and/or marks of the node at `pos`.\nWhen `type` isn't given, the existing node type is preserved,\n*/\nfunction setNodeMarkup(tr, pos, type, attrs, marks) {\n let node = tr.doc.nodeAt(pos);\n if (!node)\n throw new RangeError(\"No node at given position\");\n if (!type)\n type = node.type;\n let newNode = type.create(attrs, null, marks || node.marks);\n if (node.isLeaf)\n return tr.replaceWith(pos, pos + node.nodeSize, newNode);\n if (!type.validContent(node.content))\n throw new RangeError(\"Invalid content for node type \" + type.name);\n tr.step(new ReplaceAroundStep(pos, pos + node.nodeSize, pos + 1, pos + node.nodeSize - 1, new Slice(Fragment.from(newNode), 0, 0), 1, true));\n}\n/**\nCheck whether splitting at the given position is allowed.\n*/\nfunction canSplit(doc, pos, depth = 1, typesAfter) {\n let $pos = doc.resolve(pos), base = $pos.depth - depth;\n let innerType = (typesAfter && typesAfter[typesAfter.length - 1]) || $pos.parent;\n if (base < 0 || $pos.parent.type.spec.isolating ||\n !$pos.parent.canReplace($pos.index(), $pos.parent.childCount) ||\n !innerType.type.validContent($pos.parent.content.cutByIndex($pos.index(), $pos.parent.childCount)))\n return false;\n for (let d = $pos.depth - 1, i = depth - 2; d > base; d--, i--) {\n let node = $pos.node(d), index = $pos.index(d);\n if (node.type.spec.isolating)\n return false;\n let rest = node.content.cutByIndex(index, node.childCount);\n let overrideChild = typesAfter && typesAfter[i + 1];\n if (overrideChild)\n rest = rest.replaceChild(0, overrideChild.type.create(overrideChild.attrs));\n let after = (typesAfter && typesAfter[i]) || node;\n if (!node.canReplace(index + 1, node.childCount) || !after.type.validContent(rest))\n return false;\n }\n let index = $pos.indexAfter(base);\n let baseType = typesAfter && typesAfter[0];\n return $pos.node(base).canReplaceWith(index, index, baseType ? baseType.type : $pos.node(base + 1).type);\n}\nfunction split(tr, pos, depth = 1, typesAfter) {\n let $pos = tr.doc.resolve(pos), before = Fragment.empty, after = Fragment.empty;\n for (let d = $pos.depth, e = $pos.depth - depth, i = depth - 1; d > e; d--, i--) {\n before = Fragment.from($pos.node(d).copy(before));\n let typeAfter = typesAfter && typesAfter[i];\n after = Fragment.from(typeAfter ? typeAfter.type.create(typeAfter.attrs, after) : $pos.node(d).copy(after));\n }\n tr.step(new ReplaceStep(pos, pos, new Slice(before.append(after), depth, depth), true));\n}\n/**\nTest whether the blocks before and after a given position can be\njoined.\n*/\nfunction canJoin(doc, pos) {\n let $pos = doc.resolve(pos), index = $pos.index();\n return joinable($pos.nodeBefore, $pos.nodeAfter) &&\n $pos.parent.canReplace(index, index + 1);\n}\nfunction joinable(a, b) {\n return !!(a && b && !a.isLeaf && a.canAppend(b));\n}\n/**\nFind an ancestor of the given position that can be joined to the\nblock before (or after if `dir` is positive). Returns the joinable\npoint, if any.\n*/\nfunction joinPoint(doc, pos, dir = -1) {\n let $pos = doc.resolve(pos);\n for (let d = $pos.depth;; d--) {\n let before, after, index = $pos.index(d);\n if (d == $pos.depth) {\n before = $pos.nodeBefore;\n after = $pos.nodeAfter;\n }\n else if (dir > 0) {\n before = $pos.node(d + 1);\n index++;\n after = $pos.node(d).maybeChild(index);\n }\n else {\n before = $pos.node(d).maybeChild(index - 1);\n after = $pos.node(d + 1);\n }\n if (before && !before.isTextblock && joinable(before, after) &&\n $pos.node(d).canReplace(index, index + 1))\n return pos;\n if (d == 0)\n break;\n pos = dir < 0 ? $pos.before(d) : $pos.after(d);\n }\n}\nfunction join(tr, pos, depth) {\n let step = new ReplaceStep(pos - depth, pos + depth, Slice.empty, true);\n tr.step(step);\n}\n/**\nTry to find a point where a node of the given type can be inserted\nnear `pos`, by searching up the node hierarchy when `pos` itself\nisn't a valid place but is at the start or end of a node. Return\nnull if no position was found.\n*/\nfunction insertPoint(doc, pos, nodeType) {\n let $pos = doc.resolve(pos);\n if ($pos.parent.canReplaceWith($pos.index(), $pos.index(), nodeType))\n return pos;\n if ($pos.parentOffset == 0)\n for (let d = $pos.depth - 1; d >= 0; d--) {\n let index = $pos.index(d);\n if ($pos.node(d).canReplaceWith(index, index, nodeType))\n return $pos.before(d + 1);\n if (index > 0)\n return null;\n }\n if ($pos.parentOffset == $pos.parent.content.size)\n for (let d = $pos.depth - 1; d >= 0; d--) {\n let index = $pos.indexAfter(d);\n if ($pos.node(d).canReplaceWith(index, index, nodeType))\n return $pos.after(d + 1);\n if (index < $pos.node(d).childCount)\n return null;\n }\n return null;\n}\n/**\nFinds a position at or around the given position where the given\nslice can be inserted. Will look at parent nodes' nearest boundary\nand try there, even if the original position wasn't directly at the\nstart or end of that node. Returns null when no position was found.\n*/\nfunction dropPoint(doc, pos, slice) {\n let $pos = doc.resolve(pos);\n if (!slice.content.size)\n return pos;\n let content = slice.content;\n for (let i = 0; i < slice.openStart; i++)\n content = content.firstChild.content;\n for (let pass = 1; pass <= (slice.openStart == 0 && slice.size ? 2 : 1); pass++) {\n for (let d = $pos.depth; d >= 0; d--) {\n let bias = d == $pos.depth ? 0 : $pos.pos <= ($pos.start(d + 1) + $pos.end(d + 1)) / 2 ? -1 : 1;\n let insertPos = $pos.index(d) + (bias > 0 ? 1 : 0);\n let parent = $pos.node(d), fits = false;\n if (pass == 1) {\n fits = parent.canReplace(insertPos, insertPos, content);\n }\n else {\n let wrapping = parent.contentMatchAt(insertPos).findWrapping(content.firstChild.type);\n fits = wrapping && parent.canReplaceWith(insertPos, insertPos, wrapping[0]);\n }\n if (fits)\n return bias == 0 ? $pos.pos : bias < 0 ? $pos.before(d + 1) : $pos.after(d + 1);\n }\n }\n return null;\n}\n\n/**\n‘Fit’ a slice into a given position in the document, producing a\n[step](https://prosemirror.net/docs/ref/#transform.Step) that inserts it. Will return null if\nthere's no meaningful way to insert the slice here, or inserting it\nwould be a no-op (an empty slice over an empty range).\n*/\nfunction replaceStep(doc, from, to = from, slice = Slice.empty) {\n if (from == to && !slice.size)\n return null;\n let $from = doc.resolve(from), $to = doc.resolve(to);\n // Optimization -- avoid work if it's obvious that it's not needed.\n if (fitsTrivially($from, $to, slice))\n return new ReplaceStep(from, to, slice);\n return new Fitter($from, $to, slice).fit();\n}\nfunction fitsTrivially($from, $to, slice) {\n return !slice.openStart && !slice.openEnd && $from.start() == $to.start() &&\n $from.parent.canReplace($from.index(), $to.index(), slice.content);\n}\n// Algorithm for 'placing' the elements of a slice into a gap:\n//\n// We consider the content of each node that is open to the left to be\n// independently placeable. I.e. in , when the\n// paragraph on the left is open, \"foo\" can be placed (somewhere on\n// the left side of the replacement gap) independently from p(\"bar\").\n//\n// This class tracks the state of the placement progress in the\n// following properties:\n//\n// - `frontier` holds a stack of `{type, match}` objects that\n// represent the open side of the replacement. It starts at\n// `$from`, then moves forward as content is placed, and is finally\n// reconciled with `$to`.\n//\n// - `unplaced` is a slice that represents the content that hasn't\n// been placed yet.\n//\n// - `placed` is a fragment of placed content. Its open-start value\n// is implicit in `$from`, and its open-end value in `frontier`.\nclass Fitter {\n constructor($from, $to, unplaced) {\n this.$from = $from;\n this.$to = $to;\n this.unplaced = unplaced;\n this.frontier = [];\n this.placed = Fragment.empty;\n for (let i = 0; i <= $from.depth; i++) {\n let node = $from.node(i);\n this.frontier.push({\n type: node.type,\n match: node.contentMatchAt($from.indexAfter(i))\n });\n }\n for (let i = $from.depth; i > 0; i--)\n this.placed = Fragment.from($from.node(i).copy(this.placed));\n }\n get depth() { return this.frontier.length - 1; }\n fit() {\n // As long as there's unplaced content, try to place some of it.\n // If that fails, either increase the open score of the unplaced\n // slice, or drop nodes from it, and then try again.\n while (this.unplaced.size) {\n let fit = this.findFittable();\n if (fit)\n this.placeNodes(fit);\n else\n this.openMore() || this.dropNode();\n }\n // When there's inline content directly after the frontier _and_\n // directly after `this.$to`, we must generate a `ReplaceAround`\n // step that pulls that content into the node after the frontier.\n // That means the fitting must be done to the end of the textblock\n // node after `this.$to`, not `this.$to` itself.\n let moveInline = this.mustMoveInline(), placedSize = this.placed.size - this.depth - this.$from.depth;\n let $from = this.$from, $to = this.close(moveInline < 0 ? this.$to : $from.doc.resolve(moveInline));\n if (!$to)\n return null;\n // If closing to `$to` succeeded, create a step\n let content = this.placed, openStart = $from.depth, openEnd = $to.depth;\n while (openStart && openEnd && content.childCount == 1) { // Normalize by dropping open parent nodes\n content = content.firstChild.content;\n openStart--;\n openEnd--;\n }\n let slice = new Slice(content, openStart, openEnd);\n if (moveInline > -1)\n return new ReplaceAroundStep($from.pos, moveInline, this.$to.pos, this.$to.end(), slice, placedSize);\n if (slice.size || $from.pos != this.$to.pos) // Don't generate no-op steps\n return new ReplaceStep($from.pos, $to.pos, slice);\n return null;\n }\n // Find a position on the start spine of `this.unplaced` that has\n // content that can be moved somewhere on the frontier. Returns two\n // depths, one for the slice and one for the frontier.\n findFittable() {\n let startDepth = this.unplaced.openStart;\n for (let cur = this.unplaced.content, d = 0, openEnd = this.unplaced.openEnd; d < startDepth; d++) {\n let node = cur.firstChild;\n if (cur.childCount > 1)\n openEnd = 0;\n if (node.type.spec.isolating && openEnd <= d) {\n startDepth = d;\n break;\n }\n cur = node.content;\n }\n // Only try wrapping nodes (pass 2) after finding a place without\n // wrapping failed.\n for (let pass = 1; pass <= 2; pass++) {\n for (let sliceDepth = pass == 1 ? startDepth : this.unplaced.openStart; sliceDepth >= 0; sliceDepth--) {\n let fragment, parent = null;\n if (sliceDepth) {\n parent = contentAt(this.unplaced.content, sliceDepth - 1).firstChild;\n fragment = parent.content;\n }\n else {\n fragment = this.unplaced.content;\n }\n let first = fragment.firstChild;\n for (let frontierDepth = this.depth; frontierDepth >= 0; frontierDepth--) {\n let { type, match } = this.frontier[frontierDepth], wrap, inject = null;\n // In pass 1, if the next node matches, or there is no next\n // node but the parents look compatible, we've found a\n // place.\n if (pass == 1 && (first ? match.matchType(first.type) || (inject = match.fillBefore(Fragment.from(first), false))\n : parent && type.compatibleContent(parent.type)))\n return { sliceDepth, frontierDepth, parent, inject };\n // In pass 2, look for a set of wrapping nodes that make\n // `first` fit here.\n else if (pass == 2 && first && (wrap = match.findWrapping(first.type)))\n return { sliceDepth, frontierDepth, parent, wrap };\n // Don't continue looking further up if the parent node\n // would fit here.\n if (parent && match.matchType(parent.type))\n break;\n }\n }\n }\n }\n openMore() {\n let { content, openStart, openEnd } = this.unplaced;\n let inner = contentAt(content, openStart);\n if (!inner.childCount || inner.firstChild.isLeaf)\n return false;\n this.unplaced = new Slice(content, openStart + 1, Math.max(openEnd, inner.size + openStart >= content.size - openEnd ? openStart + 1 : 0));\n return true;\n }\n dropNode() {\n let { content, openStart, openEnd } = this.unplaced;\n let inner = contentAt(content, openStart);\n if (inner.childCount <= 1 && openStart > 0) {\n let openAtEnd = content.size - openStart <= openStart + inner.size;\n this.unplaced = new Slice(dropFromFragment(content, openStart - 1, 1), openStart - 1, openAtEnd ? openStart - 1 : openEnd);\n }\n else {\n this.unplaced = new Slice(dropFromFragment(content, openStart, 1), openStart, openEnd);\n }\n }\n // Move content from the unplaced slice at `sliceDepth` to the\n // frontier node at `frontierDepth`. Close that frontier node when\n // applicable.\n placeNodes({ sliceDepth, frontierDepth, parent, inject, wrap }) {\n while (this.depth > frontierDepth)\n this.closeFrontierNode();\n if (wrap)\n for (let i = 0; i < wrap.length; i++)\n this.openFrontierNode(wrap[i]);\n let slice = this.unplaced, fragment = parent ? parent.content : slice.content;\n let openStart = slice.openStart - sliceDepth;\n let taken = 0, add = [];\n let { match, type } = this.frontier[frontierDepth];\n if (inject) {\n for (let i = 0; i < inject.childCount; i++)\n add.push(inject.child(i));\n match = match.matchFragment(inject);\n }\n // Computes the amount of (end) open nodes at the end of the\n // fragment. When 0, the parent is open, but no more. When\n // negative, nothing is open.\n let openEndCount = (fragment.size + sliceDepth) - (slice.content.size - slice.openEnd);\n // Scan over the fragment, fitting as many child nodes as\n // possible.\n while (taken < fragment.childCount) {\n let next = fragment.child(taken), matches = match.matchType(next.type);\n if (!matches)\n break;\n taken++;\n if (taken > 1 || openStart == 0 || next.content.size) { // Drop empty open nodes\n match = matches;\n add.push(closeNodeStart(next.mark(type.allowedMarks(next.marks)), taken == 1 ? openStart : 0, taken == fragment.childCount ? openEndCount : -1));\n }\n }\n let toEnd = taken == fragment.childCount;\n if (!toEnd)\n openEndCount = -1;\n this.placed = addToFragment(this.placed, frontierDepth, Fragment.from(add));\n this.frontier[frontierDepth].match = match;\n // If the parent types match, and the entire node was moved, and\n // it's not open, close this frontier node right away.\n if (toEnd && openEndCount < 0 && parent && parent.type == this.frontier[this.depth].type && this.frontier.length > 1)\n this.closeFrontierNode();\n // Add new frontier nodes for any open nodes at the end.\n for (let i = 0, cur = fragment; i < openEndCount; i++) {\n let node = cur.lastChild;\n this.frontier.push({ type: node.type, match: node.contentMatchAt(node.childCount) });\n cur = node.content;\n }\n // Update `this.unplaced`. Drop the entire node from which we\n // placed it we got to its end, otherwise just drop the placed\n // nodes.\n this.unplaced = !toEnd ? new Slice(dropFromFragment(slice.content, sliceDepth, taken), slice.openStart, slice.openEnd)\n : sliceDepth == 0 ? Slice.empty\n : new Slice(dropFromFragment(slice.content, sliceDepth - 1, 1), sliceDepth - 1, openEndCount < 0 ? slice.openEnd : sliceDepth - 1);\n }\n mustMoveInline() {\n if (!this.$to.parent.isTextblock)\n return -1;\n let top = this.frontier[this.depth], level;\n if (!top.type.isTextblock || !contentAfterFits(this.$to, this.$to.depth, top.type, top.match, false) ||\n (this.$to.depth == this.depth && (level = this.findCloseLevel(this.$to)) && level.depth == this.depth))\n return -1;\n let { depth } = this.$to, after = this.$to.after(depth);\n while (depth > 1 && after == this.$to.end(--depth))\n ++after;\n return after;\n }\n findCloseLevel($to) {\n scan: for (let i = Math.min(this.depth, $to.depth); i >= 0; i--) {\n let { match, type } = this.frontier[i];\n let dropInner = i < $to.depth && $to.end(i + 1) == $to.pos + ($to.depth - (i + 1));\n let fit = contentAfterFits($to, i, type, match, dropInner);\n if (!fit)\n continue;\n for (let d = i - 1; d >= 0; d--) {\n let { match, type } = this.frontier[d];\n let matches = contentAfterFits($to, d, type, match, true);\n if (!matches || matches.childCount)\n continue scan;\n }\n return { depth: i, fit, move: dropInner ? $to.doc.resolve($to.after(i + 1)) : $to };\n }\n }\n close($to) {\n let close = this.findCloseLevel($to);\n if (!close)\n return null;\n while (this.depth > close.depth)\n this.closeFrontierNode();\n if (close.fit.childCount)\n this.placed = addToFragment(this.placed, close.depth, close.fit);\n $to = close.move;\n for (let d = close.depth + 1; d <= $to.depth; d++) {\n let node = $to.node(d), add = node.type.contentMatch.fillBefore(node.content, true, $to.index(d));\n this.openFrontierNode(node.type, node.attrs, add);\n }\n return $to;\n }\n openFrontierNode(type, attrs = null, content) {\n let top = this.frontier[this.depth];\n top.match = top.match.matchType(type);\n this.placed = addToFragment(this.placed, this.depth, Fragment.from(type.create(attrs, content)));\n this.frontier.push({ type, match: type.contentMatch });\n }\n closeFrontierNode() {\n let open = this.frontier.pop();\n let add = open.match.fillBefore(Fragment.empty, true);\n if (add.childCount)\n this.placed = addToFragment(this.placed, this.frontier.length, add);\n }\n}\nfunction dropFromFragment(fragment, depth, count) {\n if (depth == 0)\n return fragment.cutByIndex(count, fragment.childCount);\n return fragment.replaceChild(0, fragment.firstChild.copy(dropFromFragment(fragment.firstChild.content, depth - 1, count)));\n}\nfunction addToFragment(fragment, depth, content) {\n if (depth == 0)\n return fragment.append(content);\n return fragment.replaceChild(fragment.childCount - 1, fragment.lastChild.copy(addToFragment(fragment.lastChild.content, depth - 1, content)));\n}\nfunction contentAt(fragment, depth) {\n for (let i = 0; i < depth; i++)\n fragment = fragment.firstChild.content;\n return fragment;\n}\nfunction closeNodeStart(node, openStart, openEnd) {\n if (openStart <= 0)\n return node;\n let frag = node.content;\n if (openStart > 1)\n frag = frag.replaceChild(0, closeNodeStart(frag.firstChild, openStart - 1, frag.childCount == 1 ? openEnd - 1 : 0));\n if (openStart > 0) {\n frag = node.type.contentMatch.fillBefore(frag).append(frag);\n if (openEnd <= 0)\n frag = frag.append(node.type.contentMatch.matchFragment(frag).fillBefore(Fragment.empty, true));\n }\n return node.copy(frag);\n}\nfunction contentAfterFits($to, depth, type, match, open) {\n let node = $to.node(depth), index = open ? $to.indexAfter(depth) : $to.index(depth);\n if (index == node.childCount && !type.compatibleContent(node.type))\n return null;\n let fit = match.fillBefore(node.content, true, index);\n return fit && !invalidMarks(type, node.content, index) ? fit : null;\n}\nfunction invalidMarks(type, fragment, start) {\n for (let i = start; i < fragment.childCount; i++)\n if (!type.allowsMarks(fragment.child(i).marks))\n return true;\n return false;\n}\nfunction definesContent(type) {\n return type.spec.defining || type.spec.definingForContent;\n}\nfunction replaceRange(tr, from, to, slice) {\n if (!slice.size)\n return tr.deleteRange(from, to);\n let $from = tr.doc.resolve(from), $to = tr.doc.resolve(to);\n if (fitsTrivially($from, $to, slice))\n return tr.step(new ReplaceStep(from, to, slice));\n let targetDepths = coveredDepths($from, tr.doc.resolve(to));\n // Can't replace the whole document, so remove 0 if it's present\n if (targetDepths[targetDepths.length - 1] == 0)\n targetDepths.pop();\n // Negative numbers represent not expansion over the whole node at\n // that depth, but replacing from $from.before(-D) to $to.pos.\n let preferredTarget = -($from.depth + 1);\n targetDepths.unshift(preferredTarget);\n // This loop picks a preferred target depth, if one of the covering\n // depths is not outside of a defining node, and adds negative\n // depths for any depth that has $from at its start and does not\n // cross a defining node.\n for (let d = $from.depth, pos = $from.pos - 1; d > 0; d--, pos--) {\n let spec = $from.node(d).type.spec;\n if (spec.defining || spec.definingAsContext || spec.isolating)\n break;\n if (targetDepths.indexOf(d) > -1)\n preferredTarget = d;\n else if ($from.before(d) == pos)\n targetDepths.splice(1, 0, -d);\n }\n // Try to fit each possible depth of the slice into each possible\n // target depth, starting with the preferred depths.\n let preferredTargetIndex = targetDepths.indexOf(preferredTarget);\n let leftNodes = [], preferredDepth = slice.openStart;\n for (let content = slice.content, i = 0;; i++) {\n let node = content.firstChild;\n leftNodes.push(node);\n if (i == slice.openStart)\n break;\n content = node.content;\n }\n // Back up preferredDepth to cover defining textblocks directly\n // above it, possibly skipping a non-defining textblock.\n for (let d = preferredDepth - 1; d >= 0; d--) {\n let leftNode = leftNodes[d], def = definesContent(leftNode.type);\n if (def && !leftNode.sameMarkup($from.node(Math.abs(preferredTarget) - 1)))\n preferredDepth = d;\n else if (def || !leftNode.type.isTextblock)\n break;\n }\n for (let j = slice.openStart; j >= 0; j--) {\n let openDepth = (j + preferredDepth + 1) % (slice.openStart + 1);\n let insert = leftNodes[openDepth];\n if (!insert)\n continue;\n for (let i = 0; i < targetDepths.length; i++) {\n // Loop over possible expansion levels, starting with the\n // preferred one\n let targetDepth = targetDepths[(i + preferredTargetIndex) % targetDepths.length], expand = true;\n if (targetDepth < 0) {\n expand = false;\n targetDepth = -targetDepth;\n }\n let parent = $from.node(targetDepth - 1), index = $from.index(targetDepth - 1);\n if (parent.canReplaceWith(index, index, insert.type, insert.marks))\n return tr.replace($from.before(targetDepth), expand ? $to.after(targetDepth) : to, new Slice(closeFragment(slice.content, 0, slice.openStart, openDepth), openDepth, slice.openEnd));\n }\n }\n let startSteps = tr.steps.length;\n for (let i = targetDepths.length - 1; i >= 0; i--) {\n tr.replace(from, to, slice);\n if (tr.steps.length > startSteps)\n break;\n let depth = targetDepths[i];\n if (depth < 0)\n continue;\n from = $from.before(depth);\n to = $to.after(depth);\n }\n}\nfunction closeFragment(fragment, depth, oldOpen, newOpen, parent) {\n if (depth < oldOpen) {\n let first = fragment.firstChild;\n fragment = fragment.replaceChild(0, first.copy(closeFragment(first.content, depth + 1, oldOpen, newOpen, first)));\n }\n if (depth > newOpen) {\n let match = parent.contentMatchAt(0);\n let start = match.fillBefore(fragment).append(fragment);\n fragment = start.append(match.matchFragment(start).fillBefore(Fragment.empty, true));\n }\n return fragment;\n}\nfunction replaceRangeWith(tr, from, to, node) {\n if (!node.isInline && from == to && tr.doc.resolve(from).parent.content.size) {\n let point = insertPoint(tr.doc, from, node.type);\n if (point != null)\n from = to = point;\n }\n tr.replaceRange(from, to, new Slice(Fragment.from(node), 0, 0));\n}\nfunction deleteRange(tr, from, to) {\n let $from = tr.doc.resolve(from), $to = tr.doc.resolve(to);\n let covered = coveredDepths($from, $to);\n for (let i = 0; i < covered.length; i++) {\n let depth = covered[i], last = i == covered.length - 1;\n if ((last && depth == 0) || $from.node(depth).type.contentMatch.validEnd)\n return tr.delete($from.start(depth), $to.end(depth));\n if (depth > 0 && (last || $from.node(depth - 1).canReplace($from.index(depth - 1), $to.indexAfter(depth - 1))))\n return tr.delete($from.before(depth), $to.after(depth));\n }\n for (let d = 1; d <= $from.depth && d <= $to.depth; d++) {\n if (from - $from.start(d) == $from.depth - d && to > $from.end(d) && $to.end(d) - to != $to.depth - d)\n return tr.delete($from.before(d), to);\n }\n tr.delete(from, to);\n}\n// Returns an array of all depths for which $from - $to spans the\n// whole content of the nodes at that depth.\nfunction coveredDepths($from, $to) {\n let result = [], minDepth = Math.min($from.depth, $to.depth);\n for (let d = minDepth; d >= 0; d--) {\n let start = $from.start(d);\n if (start < $from.pos - ($from.depth - d) ||\n $to.end(d) > $to.pos + ($to.depth - d) ||\n $from.node(d).type.spec.isolating ||\n $to.node(d).type.spec.isolating)\n break;\n if (start == $to.start(d) ||\n (d == $from.depth && d == $to.depth && $from.parent.inlineContent && $to.parent.inlineContent &&\n d && $to.start(d - 1) == start - 1))\n result.push(d);\n }\n return result;\n}\n\n/**\nUpdate an attribute in a specific node.\n*/\nclass AttrStep extends Step {\n /**\n Construct an attribute step.\n */\n constructor(\n /**\n The position of the target node.\n */\n pos, \n /**\n The attribute to set.\n */\n attr, \n // The attribute's new value.\n value) {\n super();\n this.pos = pos;\n this.attr = attr;\n this.value = value;\n }\n apply(doc) {\n let node = doc.nodeAt(this.pos);\n if (!node)\n return StepResult.fail(\"No node at attribute step's position\");\n let attrs = Object.create(null);\n for (let name in node.attrs)\n attrs[name] = node.attrs[name];\n attrs[this.attr] = this.value;\n let updated = node.type.create(attrs, null, node.marks);\n return StepResult.fromReplace(doc, this.pos, this.pos + 1, new Slice(Fragment.from(updated), 0, node.isLeaf ? 0 : 1));\n }\n getMap() {\n return StepMap.empty;\n }\n invert(doc) {\n return new AttrStep(this.pos, this.attr, doc.nodeAt(this.pos).attrs[this.attr]);\n }\n map(mapping) {\n let pos = mapping.mapResult(this.pos, 1);\n return pos.deletedAfter ? null : new AttrStep(pos.pos, this.attr, this.value);\n }\n toJSON() {\n return { stepType: \"attr\", pos: this.pos, attr: this.attr, value: this.value };\n }\n static fromJSON(schema, json) {\n if (typeof json.pos != \"number\" || typeof json.attr != \"string\")\n throw new RangeError(\"Invalid input for AttrStep.fromJSON\");\n return new AttrStep(json.pos, json.attr, json.value);\n }\n}\nStep.jsonID(\"attr\", AttrStep);\n/**\nUpdate an attribute in the doc node.\n*/\nclass DocAttrStep extends Step {\n /**\n Construct an attribute step.\n */\n constructor(\n /**\n The attribute to set.\n */\n attr, \n // The attribute's new value.\n value) {\n super();\n this.attr = attr;\n this.value = value;\n }\n apply(doc) {\n let attrs = Object.create(null);\n for (let name in doc.attrs)\n attrs[name] = doc.attrs[name];\n attrs[this.attr] = this.value;\n let updated = doc.type.create(attrs, doc.content, doc.marks);\n return StepResult.ok(updated);\n }\n getMap() {\n return StepMap.empty;\n }\n invert(doc) {\n return new DocAttrStep(this.attr, doc.attrs[this.attr]);\n }\n map(mapping) {\n return this;\n }\n toJSON() {\n return { stepType: \"docAttr\", attr: this.attr, value: this.value };\n }\n static fromJSON(schema, json) {\n if (typeof json.attr != \"string\")\n throw new RangeError(\"Invalid input for DocAttrStep.fromJSON\");\n return new DocAttrStep(json.attr, json.value);\n }\n}\nStep.jsonID(\"docAttr\", DocAttrStep);\n\n/**\n@internal\n*/\nlet TransformError = class extends Error {\n};\nTransformError = function TransformError(message) {\n let err = Error.call(this, message);\n err.__proto__ = TransformError.prototype;\n return err;\n};\nTransformError.prototype = Object.create(Error.prototype);\nTransformError.prototype.constructor = TransformError;\nTransformError.prototype.name = \"TransformError\";\n/**\nAbstraction to build up and track an array of\n[steps](https://prosemirror.net/docs/ref/#transform.Step) representing a document transformation.\n\nMost transforming methods return the `Transform` object itself, so\nthat they can be chained.\n*/\nclass Transform {\n /**\n Create a transform that starts with the given document.\n */\n constructor(\n /**\n The current document (the result of applying the steps in the\n transform).\n */\n doc) {\n this.doc = doc;\n /**\n The steps in this transform.\n */\n this.steps = [];\n /**\n The documents before each of the steps.\n */\n this.docs = [];\n /**\n A mapping with the maps for each of the steps in this transform.\n */\n this.mapping = new Mapping;\n }\n /**\n The starting document.\n */\n get before() { return this.docs.length ? this.docs[0] : this.doc; }\n /**\n Apply a new step in this transform, saving the result. Throws an\n error when the step fails.\n */\n step(step) {\n let result = this.maybeStep(step);\n if (result.failed)\n throw new TransformError(result.failed);\n return this;\n }\n /**\n Try to apply a step in this transformation, ignoring it if it\n fails. Returns the step result.\n */\n maybeStep(step) {\n let result = step.apply(this.doc);\n if (!result.failed)\n this.addStep(step, result.doc);\n return result;\n }\n /**\n True when the document has been changed (when there are any\n steps).\n */\n get docChanged() {\n return this.steps.length > 0;\n }\n /**\n @internal\n */\n addStep(step, doc) {\n this.docs.push(this.doc);\n this.steps.push(step);\n this.mapping.appendMap(step.getMap());\n this.doc = doc;\n }\n /**\n Replace the part of the document between `from` and `to` with the\n given `slice`.\n */\n replace(from, to = from, slice = Slice.empty) {\n let step = replaceStep(this.doc, from, to, slice);\n if (step)\n this.step(step);\n return this;\n }\n /**\n Replace the given range with the given content, which may be a\n fragment, node, or array of nodes.\n */\n replaceWith(from, to, content) {\n return this.replace(from, to, new Slice(Fragment.from(content), 0, 0));\n }\n /**\n Delete the content between the given positions.\n */\n delete(from, to) {\n return this.replace(from, to, Slice.empty);\n }\n /**\n Insert the given content at the given position.\n */\n insert(pos, content) {\n return this.replaceWith(pos, pos, content);\n }\n /**\n Replace a range of the document with a given slice, using\n `from`, `to`, and the slice's\n [`openStart`](https://prosemirror.net/docs/ref/#model.Slice.openStart) property as hints, rather\n than fixed start and end points. This method may grow the\n replaced area or close open nodes in the slice in order to get a\n fit that is more in line with WYSIWYG expectations, by dropping\n fully covered parent nodes of the replaced region when they are\n marked [non-defining as\n context](https://prosemirror.net/docs/ref/#model.NodeSpec.definingAsContext), or including an\n open parent node from the slice that _is_ marked as [defining\n its content](https://prosemirror.net/docs/ref/#model.NodeSpec.definingForContent).\n \n This is the method, for example, to handle paste. The similar\n [`replace`](https://prosemirror.net/docs/ref/#transform.Transform.replace) method is a more\n primitive tool which will _not_ move the start and end of its given\n range, and is useful in situations where you need more precise\n control over what happens.\n */\n replaceRange(from, to, slice) {\n replaceRange(this, from, to, slice);\n return this;\n }\n /**\n Replace the given range with a node, but use `from` and `to` as\n hints, rather than precise positions. When from and to are the same\n and are at the start or end of a parent node in which the given\n node doesn't fit, this method may _move_ them out towards a parent\n that does allow the given node to be placed. When the given range\n completely covers a parent node, this method may completely replace\n that parent node.\n */\n replaceRangeWith(from, to, node) {\n replaceRangeWith(this, from, to, node);\n return this;\n }\n /**\n Delete the given range, expanding it to cover fully covered\n parent nodes until a valid replace is found.\n */\n deleteRange(from, to) {\n deleteRange(this, from, to);\n return this;\n }\n /**\n Split the content in the given range off from its parent, if there\n is sibling content before or after it, and move it up the tree to\n the depth specified by `target`. You'll probably want to use\n [`liftTarget`](https://prosemirror.net/docs/ref/#transform.liftTarget) to compute `target`, to make\n sure the lift is valid.\n */\n lift(range, target) {\n lift(this, range, target);\n return this;\n }\n /**\n Join the blocks around the given position. If depth is 2, their\n last and first siblings are also joined, and so on.\n */\n join(pos, depth = 1) {\n join(this, pos, depth);\n return this;\n }\n /**\n Wrap the given [range](https://prosemirror.net/docs/ref/#model.NodeRange) in the given set of wrappers.\n The wrappers are assumed to be valid in this position, and should\n probably be computed with [`findWrapping`](https://prosemirror.net/docs/ref/#transform.findWrapping).\n */\n wrap(range, wrappers) {\n wrap(this, range, wrappers);\n return this;\n }\n /**\n Set the type of all textblocks (partly) between `from` and `to` to\n the given node type with the given attributes.\n */\n setBlockType(from, to = from, type, attrs = null) {\n setBlockType(this, from, to, type, attrs);\n return this;\n }\n /**\n Change the type, attributes, and/or marks of the node at `pos`.\n When `type` isn't given, the existing node type is preserved,\n */\n setNodeMarkup(pos, type, attrs = null, marks) {\n setNodeMarkup(this, pos, type, attrs, marks);\n return this;\n }\n /**\n Set a single attribute on a given node to a new value.\n The `pos` addresses the document content. Use `setDocAttribute`\n to set attributes on the document itself.\n */\n setNodeAttribute(pos, attr, value) {\n this.step(new AttrStep(pos, attr, value));\n return this;\n }\n /**\n Set a single attribute on the document to a new value.\n */\n setDocAttribute(attr, value) {\n this.step(new DocAttrStep(attr, value));\n return this;\n }\n /**\n Add a mark to the node at position `pos`.\n */\n addNodeMark(pos, mark) {\n this.step(new AddNodeMarkStep(pos, mark));\n return this;\n }\n /**\n Remove a mark (or a mark of the given type) from the node at\n position `pos`.\n */\n removeNodeMark(pos, mark) {\n if (!(mark instanceof Mark)) {\n let node = this.doc.nodeAt(pos);\n if (!node)\n throw new RangeError(\"No node at position \" + pos);\n mark = mark.isInSet(node.marks);\n if (!mark)\n return this;\n }\n this.step(new RemoveNodeMarkStep(pos, mark));\n return this;\n }\n /**\n Split the node at the given position, and optionally, if `depth` is\n greater than one, any number of nodes above that. By default, the\n parts split off will inherit the node type of the original node.\n This can be changed by passing an array of types and attributes to\n use after the split.\n */\n split(pos, depth = 1, typesAfter) {\n split(this, pos, depth, typesAfter);\n return this;\n }\n /**\n Add the given mark to the inline content between `from` and `to`.\n */\n addMark(from, to, mark) {\n addMark(this, from, to, mark);\n return this;\n }\n /**\n Remove marks from inline nodes between `from` and `to`. When\n `mark` is a single mark, remove precisely that mark. When it is\n a mark type, remove all marks of that type. When it is null,\n remove all marks of any type.\n */\n removeMark(from, to, mark) {\n removeMark(this, from, to, mark);\n return this;\n }\n /**\n Removes all marks and nodes from the content of the node at\n `pos` that don't match the given new parent node type. Accepts\n an optional starting [content match](https://prosemirror.net/docs/ref/#model.ContentMatch) as\n third argument.\n */\n clearIncompatible(pos, parentType, match) {\n clearIncompatible(this, pos, parentType, match);\n return this;\n }\n}\n\nexport { AddMarkStep, AddNodeMarkStep, AttrStep, DocAttrStep, MapResult, Mapping, RemoveMarkStep, RemoveNodeMarkStep, ReplaceAroundStep, ReplaceStep, Step, StepMap, StepResult, Transform, TransformError, canJoin, canSplit, dropPoint, findWrapping, insertPoint, joinPoint, liftTarget, replaceStep };\n","import { TextSelection, NodeSelection, AllSelection, Selection } from 'prosemirror-state';\nimport { DOMSerializer, Fragment, Mark, Slice, DOMParser } from 'prosemirror-model';\nimport { dropPoint } from 'prosemirror-transform';\n\nconst domIndex = function (node) {\n for (var index = 0;; index++) {\n node = node.previousSibling;\n if (!node)\n return index;\n }\n};\nconst parentNode = function (node) {\n let parent = node.assignedSlot || node.parentNode;\n return parent && parent.nodeType == 11 ? parent.host : parent;\n};\nlet reusedRange = null;\n// Note that this will always return the same range, because DOM range\n// objects are every expensive, and keep slowing down subsequent DOM\n// updates, for some reason.\nconst textRange = function (node, from, to) {\n let range = reusedRange || (reusedRange = document.createRange());\n range.setEnd(node, to == null ? node.nodeValue.length : to);\n range.setStart(node, from || 0);\n return range;\n};\nconst clearReusedRange = function () {\n reusedRange = null;\n};\n// Scans forward and backward through DOM positions equivalent to the\n// given one to see if the two are in the same place (i.e. after a\n// text node vs at the end of that text node)\nconst isEquivalentPosition = function (node, off, targetNode, targetOff) {\n return targetNode && (scanFor(node, off, targetNode, targetOff, -1) ||\n scanFor(node, off, targetNode, targetOff, 1));\n};\nconst atomElements = /^(img|br|input|textarea|hr)$/i;\nfunction scanFor(node, off, targetNode, targetOff, dir) {\n for (;;) {\n if (node == targetNode && off == targetOff)\n return true;\n if (off == (dir < 0 ? 0 : nodeSize(node))) {\n let parent = node.parentNode;\n if (!parent || parent.nodeType != 1 || hasBlockDesc(node) || atomElements.test(node.nodeName) ||\n node.contentEditable == \"false\")\n return false;\n off = domIndex(node) + (dir < 0 ? 0 : 1);\n node = parent;\n }\n else if (node.nodeType == 1) {\n node = node.childNodes[off + (dir < 0 ? -1 : 0)];\n if (node.contentEditable == \"false\")\n return false;\n off = dir < 0 ? nodeSize(node) : 0;\n }\n else {\n return false;\n }\n }\n}\nfunction nodeSize(node) {\n return node.nodeType == 3 ? node.nodeValue.length : node.childNodes.length;\n}\nfunction textNodeBefore$1(node, offset) {\n for (;;) {\n if (node.nodeType == 3 && offset)\n return node;\n if (node.nodeType == 1 && offset > 0) {\n if (node.contentEditable == \"false\")\n return null;\n node = node.childNodes[offset - 1];\n offset = nodeSize(node);\n }\n else if (node.parentNode && !hasBlockDesc(node)) {\n offset = domIndex(node);\n node = node.parentNode;\n }\n else {\n return null;\n }\n }\n}\nfunction textNodeAfter$1(node, offset) {\n for (;;) {\n if (node.nodeType == 3 && offset < node.nodeValue.length)\n return node;\n if (node.nodeType == 1 && offset < node.childNodes.length) {\n if (node.contentEditable == \"false\")\n return null;\n node = node.childNodes[offset];\n offset = 0;\n }\n else if (node.parentNode && !hasBlockDesc(node)) {\n offset = domIndex(node) + 1;\n node = node.parentNode;\n }\n else {\n return null;\n }\n }\n}\nfunction isOnEdge(node, offset, parent) {\n for (let atStart = offset == 0, atEnd = offset == nodeSize(node); atStart || atEnd;) {\n if (node == parent)\n return true;\n let index = domIndex(node);\n node = node.parentNode;\n if (!node)\n return false;\n atStart = atStart && index == 0;\n atEnd = atEnd && index == nodeSize(node);\n }\n}\nfunction hasBlockDesc(dom) {\n let desc;\n for (let cur = dom; cur; cur = cur.parentNode)\n if (desc = cur.pmViewDesc)\n break;\n return desc && desc.node && desc.node.isBlock && (desc.dom == dom || desc.contentDOM == dom);\n}\n// Work around Chrome issue https://bugs.chromium.org/p/chromium/issues/detail?id=447523\n// (isCollapsed inappropriately returns true in shadow dom)\nconst selectionCollapsed = function (domSel) {\n return domSel.focusNode && isEquivalentPosition(domSel.focusNode, domSel.focusOffset, domSel.anchorNode, domSel.anchorOffset);\n};\nfunction keyEvent(keyCode, key) {\n let event = document.createEvent(\"Event\");\n event.initEvent(\"keydown\", true, true);\n event.keyCode = keyCode;\n event.key = event.code = key;\n return event;\n}\nfunction deepActiveElement(doc) {\n let elt = doc.activeElement;\n while (elt && elt.shadowRoot)\n elt = elt.shadowRoot.activeElement;\n return elt;\n}\nfunction caretFromPoint(doc, x, y) {\n if (doc.caretPositionFromPoint) {\n try { // Firefox throws for this call in hard-to-predict circumstances (#994)\n let pos = doc.caretPositionFromPoint(x, y);\n if (pos)\n return { node: pos.offsetNode, offset: pos.offset };\n }\n catch (_) { }\n }\n if (doc.caretRangeFromPoint) {\n let range = doc.caretRangeFromPoint(x, y);\n if (range)\n return { node: range.startContainer, offset: range.startOffset };\n }\n}\n\nconst nav = typeof navigator != \"undefined\" ? navigator : null;\nconst doc = typeof document != \"undefined\" ? document : null;\nconst agent = (nav && nav.userAgent) || \"\";\nconst ie_edge = /Edge\\/(\\d+)/.exec(agent);\nconst ie_upto10 = /MSIE \\d/.exec(agent);\nconst ie_11up = /Trident\\/(?:[7-9]|\\d{2,})\\..*rv:(\\d+)/.exec(agent);\nconst ie = !!(ie_upto10 || ie_11up || ie_edge);\nconst ie_version = ie_upto10 ? document.documentMode : ie_11up ? +ie_11up[1] : ie_edge ? +ie_edge[1] : 0;\nconst gecko = !ie && /gecko\\/(\\d+)/i.test(agent);\ngecko && +(/Firefox\\/(\\d+)/.exec(agent) || [0, 0])[1];\nconst _chrome = !ie && /Chrome\\/(\\d+)/.exec(agent);\nconst chrome = !!_chrome;\nconst chrome_version = _chrome ? +_chrome[1] : 0;\nconst safari = !ie && !!nav && /Apple Computer/.test(nav.vendor);\n// Is true for both iOS and iPadOS for convenience\nconst ios = safari && (/Mobile\\/\\w+/.test(agent) || !!nav && nav.maxTouchPoints > 2);\nconst mac = ios || (nav ? /Mac/.test(nav.platform) : false);\nconst windows = nav ? /Win/.test(nav.platform) : false;\nconst android = /Android \\d/.test(agent);\nconst webkit = !!doc && \"webkitFontSmoothing\" in doc.documentElement.style;\nconst webkit_version = webkit ? +(/\\bAppleWebKit\\/(\\d+)/.exec(navigator.userAgent) || [0, 0])[1] : 0;\n\nfunction windowRect(doc) {\n let vp = doc.defaultView && doc.defaultView.visualViewport;\n if (vp)\n return {\n left: 0, right: vp.width,\n top: 0, bottom: vp.height\n };\n return { left: 0, right: doc.documentElement.clientWidth,\n top: 0, bottom: doc.documentElement.clientHeight };\n}\nfunction getSide(value, side) {\n return typeof value == \"number\" ? value : value[side];\n}\nfunction clientRect(node) {\n let rect = node.getBoundingClientRect();\n // Adjust for elements with style \"transform: scale()\"\n let scaleX = (rect.width / node.offsetWidth) || 1;\n let scaleY = (rect.height / node.offsetHeight) || 1;\n // Make sure scrollbar width isn't included in the rectangle\n return { left: rect.left, right: rect.left + node.clientWidth * scaleX,\n top: rect.top, bottom: rect.top + node.clientHeight * scaleY };\n}\nfunction scrollRectIntoView(view, rect, startDOM) {\n let scrollThreshold = view.someProp(\"scrollThreshold\") || 0, scrollMargin = view.someProp(\"scrollMargin\") || 5;\n let doc = view.dom.ownerDocument;\n for (let parent = startDOM || view.dom;; parent = parentNode(parent)) {\n if (!parent)\n break;\n if (parent.nodeType != 1)\n continue;\n let elt = parent;\n let atTop = elt == doc.body;\n let bounding = atTop ? windowRect(doc) : clientRect(elt);\n let moveX = 0, moveY = 0;\n if (rect.top < bounding.top + getSide(scrollThreshold, \"top\"))\n moveY = -(bounding.top - rect.top + getSide(scrollMargin, \"top\"));\n else if (rect.bottom > bounding.bottom - getSide(scrollThreshold, \"bottom\"))\n moveY = rect.bottom - rect.top > bounding.bottom - bounding.top\n ? rect.top + getSide(scrollMargin, \"top\") - bounding.top\n : rect.bottom - bounding.bottom + getSide(scrollMargin, \"bottom\");\n if (rect.left < bounding.left + getSide(scrollThreshold, \"left\"))\n moveX = -(bounding.left - rect.left + getSide(scrollMargin, \"left\"));\n else if (rect.right > bounding.right - getSide(scrollThreshold, \"right\"))\n moveX = rect.right - bounding.right + getSide(scrollMargin, \"right\");\n if (moveX || moveY) {\n if (atTop) {\n doc.defaultView.scrollBy(moveX, moveY);\n }\n else {\n let startX = elt.scrollLeft, startY = elt.scrollTop;\n if (moveY)\n elt.scrollTop += moveY;\n if (moveX)\n elt.scrollLeft += moveX;\n let dX = elt.scrollLeft - startX, dY = elt.scrollTop - startY;\n rect = { left: rect.left - dX, top: rect.top - dY, right: rect.right - dX, bottom: rect.bottom - dY };\n }\n }\n if (atTop || /^(fixed|sticky)$/.test(getComputedStyle(parent).position))\n break;\n }\n}\n// Store the scroll position of the editor's parent nodes, along with\n// the top position of an element near the top of the editor, which\n// will be used to make sure the visible viewport remains stable even\n// when the size of the content above changes.\nfunction storeScrollPos(view) {\n let rect = view.dom.getBoundingClientRect(), startY = Math.max(0, rect.top);\n let refDOM, refTop;\n for (let x = (rect.left + rect.right) / 2, y = startY + 1; y < Math.min(innerHeight, rect.bottom); y += 5) {\n let dom = view.root.elementFromPoint(x, y);\n if (!dom || dom == view.dom || !view.dom.contains(dom))\n continue;\n let localRect = dom.getBoundingClientRect();\n if (localRect.top >= startY - 20) {\n refDOM = dom;\n refTop = localRect.top;\n break;\n }\n }\n return { refDOM: refDOM, refTop: refTop, stack: scrollStack(view.dom) };\n}\nfunction scrollStack(dom) {\n let stack = [], doc = dom.ownerDocument;\n for (let cur = dom; cur; cur = parentNode(cur)) {\n stack.push({ dom: cur, top: cur.scrollTop, left: cur.scrollLeft });\n if (dom == doc)\n break;\n }\n return stack;\n}\n// Reset the scroll position of the editor's parent nodes to that what\n// it was before, when storeScrollPos was called.\nfunction resetScrollPos({ refDOM, refTop, stack }) {\n let newRefTop = refDOM ? refDOM.getBoundingClientRect().top : 0;\n restoreScrollStack(stack, newRefTop == 0 ? 0 : newRefTop - refTop);\n}\nfunction restoreScrollStack(stack, dTop) {\n for (let i = 0; i < stack.length; i++) {\n let { dom, top, left } = stack[i];\n if (dom.scrollTop != top + dTop)\n dom.scrollTop = top + dTop;\n if (dom.scrollLeft != left)\n dom.scrollLeft = left;\n }\n}\nlet preventScrollSupported = null;\n// Feature-detects support for .focus({preventScroll: true}), and uses\n// a fallback kludge when not supported.\nfunction focusPreventScroll(dom) {\n if (dom.setActive)\n return dom.setActive(); // in IE\n if (preventScrollSupported)\n return dom.focus(preventScrollSupported);\n let stored = scrollStack(dom);\n dom.focus(preventScrollSupported == null ? {\n get preventScroll() {\n preventScrollSupported = { preventScroll: true };\n return true;\n }\n } : undefined);\n if (!preventScrollSupported) {\n preventScrollSupported = false;\n restoreScrollStack(stored, 0);\n }\n}\nfunction findOffsetInNode(node, coords) {\n let closest, dxClosest = 2e8, coordsClosest, offset = 0;\n let rowBot = coords.top, rowTop = coords.top;\n let firstBelow, coordsBelow;\n for (let child = node.firstChild, childIndex = 0; child; child = child.nextSibling, childIndex++) {\n let rects;\n if (child.nodeType == 1)\n rects = child.getClientRects();\n else if (child.nodeType == 3)\n rects = textRange(child).getClientRects();\n else\n continue;\n for (let i = 0; i < rects.length; i++) {\n let rect = rects[i];\n if (rect.top <= rowBot && rect.bottom >= rowTop) {\n rowBot = Math.max(rect.bottom, rowBot);\n rowTop = Math.min(rect.top, rowTop);\n let dx = rect.left > coords.left ? rect.left - coords.left\n : rect.right < coords.left ? coords.left - rect.right : 0;\n if (dx < dxClosest) {\n closest = child;\n dxClosest = dx;\n coordsClosest = dx && closest.nodeType == 3 ? {\n left: rect.right < coords.left ? rect.right : rect.left,\n top: coords.top\n } : coords;\n if (child.nodeType == 1 && dx)\n offset = childIndex + (coords.left >= (rect.left + rect.right) / 2 ? 1 : 0);\n continue;\n }\n }\n else if (rect.top > coords.top && !firstBelow && rect.left <= coords.left && rect.right >= coords.left) {\n firstBelow = child;\n coordsBelow = { left: Math.max(rect.left, Math.min(rect.right, coords.left)), top: rect.top };\n }\n if (!closest && (coords.left >= rect.right && coords.top >= rect.top ||\n coords.left >= rect.left && coords.top >= rect.bottom))\n offset = childIndex + 1;\n }\n }\n if (!closest && firstBelow) {\n closest = firstBelow;\n coordsClosest = coordsBelow;\n dxClosest = 0;\n }\n if (closest && closest.nodeType == 3)\n return findOffsetInText(closest, coordsClosest);\n if (!closest || (dxClosest && closest.nodeType == 1))\n return { node, offset };\n return findOffsetInNode(closest, coordsClosest);\n}\nfunction findOffsetInText(node, coords) {\n let len = node.nodeValue.length;\n let range = document.createRange();\n for (let i = 0; i < len; i++) {\n range.setEnd(node, i + 1);\n range.setStart(node, i);\n let rect = singleRect(range, 1);\n if (rect.top == rect.bottom)\n continue;\n if (inRect(coords, rect))\n return { node, offset: i + (coords.left >= (rect.left + rect.right) / 2 ? 1 : 0) };\n }\n return { node, offset: 0 };\n}\nfunction inRect(coords, rect) {\n return coords.left >= rect.left - 1 && coords.left <= rect.right + 1 &&\n coords.top >= rect.top - 1 && coords.top <= rect.bottom + 1;\n}\nfunction targetKludge(dom, coords) {\n let parent = dom.parentNode;\n if (parent && /^li$/i.test(parent.nodeName) && coords.left < dom.getBoundingClientRect().left)\n return parent;\n return dom;\n}\nfunction posFromElement(view, elt, coords) {\n let { node, offset } = findOffsetInNode(elt, coords), bias = -1;\n if (node.nodeType == 1 && !node.firstChild) {\n let rect = node.getBoundingClientRect();\n bias = rect.left != rect.right && coords.left > (rect.left + rect.right) / 2 ? 1 : -1;\n }\n return view.docView.posFromDOM(node, offset, bias);\n}\nfunction posFromCaret(view, node, offset, coords) {\n // Browser (in caretPosition/RangeFromPoint) will agressively\n // normalize towards nearby inline nodes. Since we are interested in\n // positions between block nodes too, we first walk up the hierarchy\n // of nodes to see if there are block nodes that the coordinates\n // fall outside of. If so, we take the position before/after that\n // block. If not, we call `posFromDOM` on the raw node/offset.\n let outsideBlock = -1;\n for (let cur = node, sawBlock = false;;) {\n if (cur == view.dom)\n break;\n let desc = view.docView.nearestDesc(cur, true);\n if (!desc)\n return null;\n if (desc.dom.nodeType == 1 && (desc.node.isBlock && desc.parent || !desc.contentDOM)) {\n let rect = desc.dom.getBoundingClientRect();\n if (desc.node.isBlock && desc.parent) {\n // Only apply the horizontal test to the innermost block. Vertical for any parent.\n if (!sawBlock && rect.left > coords.left || rect.top > coords.top)\n outsideBlock = desc.posBefore;\n else if (!sawBlock && rect.right < coords.left || rect.bottom < coords.top)\n outsideBlock = desc.posAfter;\n sawBlock = true;\n }\n if (!desc.contentDOM && outsideBlock < 0 && !desc.node.isText) {\n // If we are inside a leaf, return the side of the leaf closer to the coords\n let before = desc.node.isBlock ? coords.top < (rect.top + rect.bottom) / 2\n : coords.left < (rect.left + rect.right) / 2;\n return before ? desc.posBefore : desc.posAfter;\n }\n }\n cur = desc.dom.parentNode;\n }\n return outsideBlock > -1 ? outsideBlock : view.docView.posFromDOM(node, offset, -1);\n}\nfunction elementFromPoint(element, coords, box) {\n let len = element.childNodes.length;\n if (len && box.top < box.bottom) {\n for (let startI = Math.max(0, Math.min(len - 1, Math.floor(len * (coords.top - box.top) / (box.bottom - box.top)) - 2)), i = startI;;) {\n let child = element.childNodes[i];\n if (child.nodeType == 1) {\n let rects = child.getClientRects();\n for (let j = 0; j < rects.length; j++) {\n let rect = rects[j];\n if (inRect(coords, rect))\n return elementFromPoint(child, coords, rect);\n }\n }\n if ((i = (i + 1) % len) == startI)\n break;\n }\n }\n return element;\n}\n// Given an x,y position on the editor, get the position in the document.\nfunction posAtCoords(view, coords) {\n let doc = view.dom.ownerDocument, node, offset = 0;\n let caret = caretFromPoint(doc, coords.left, coords.top);\n if (caret)\n ({ node, offset } = caret);\n let elt = (view.root.elementFromPoint ? view.root : doc)\n .elementFromPoint(coords.left, coords.top);\n let pos;\n if (!elt || !view.dom.contains(elt.nodeType != 1 ? elt.parentNode : elt)) {\n let box = view.dom.getBoundingClientRect();\n if (!inRect(coords, box))\n return null;\n elt = elementFromPoint(view.dom, coords, box);\n if (!elt)\n return null;\n }\n // Safari's caretRangeFromPoint returns nonsense when on a draggable element\n if (safari) {\n for (let p = elt; node && p; p = parentNode(p))\n if (p.draggable)\n node = undefined;\n }\n elt = targetKludge(elt, coords);\n if (node) {\n if (gecko && node.nodeType == 1) {\n // Firefox will sometimes return offsets into nodes, which\n // have no actual children, from caretPositionFromPoint (#953)\n offset = Math.min(offset, node.childNodes.length);\n // It'll also move the returned position before image nodes,\n // even if those are behind it.\n if (offset < node.childNodes.length) {\n let next = node.childNodes[offset], box;\n if (next.nodeName == \"IMG\" && (box = next.getBoundingClientRect()).right <= coords.left &&\n box.bottom > coords.top)\n offset++;\n }\n }\n let prev;\n // When clicking above the right side of an uneditable node, Chrome will report a cursor position after that node.\n if (webkit && offset && node.nodeType == 1 && (prev = node.childNodes[offset - 1]).nodeType == 1 &&\n prev.contentEditable == \"false\" && prev.getBoundingClientRect().top >= coords.top)\n offset--;\n // Suspiciously specific kludge to work around caret*FromPoint\n // never returning a position at the end of the document\n if (node == view.dom && offset == node.childNodes.length - 1 && node.lastChild.nodeType == 1 &&\n coords.top > node.lastChild.getBoundingClientRect().bottom)\n pos = view.state.doc.content.size;\n // Ignore positions directly after a BR, since caret*FromPoint\n // 'round up' positions that would be more accurately placed\n // before the BR node.\n else if (offset == 0 || node.nodeType != 1 || node.childNodes[offset - 1].nodeName != \"BR\")\n pos = posFromCaret(view, node, offset, coords);\n }\n if (pos == null)\n pos = posFromElement(view, elt, coords);\n let desc = view.docView.nearestDesc(elt, true);\n return { pos, inside: desc ? desc.posAtStart - desc.border : -1 };\n}\nfunction nonZero(rect) {\n return rect.top < rect.bottom || rect.left < rect.right;\n}\nfunction singleRect(target, bias) {\n let rects = target.getClientRects();\n if (rects.length) {\n let first = rects[bias < 0 ? 0 : rects.length - 1];\n if (nonZero(first))\n return first;\n }\n return Array.prototype.find.call(rects, nonZero) || target.getBoundingClientRect();\n}\nconst BIDI = /[\\u0590-\\u05f4\\u0600-\\u06ff\\u0700-\\u08ac]/;\n// Given a position in the document model, get a bounding box of the\n// character at that position, relative to the window.\nfunction coordsAtPos(view, pos, side) {\n let { node, offset, atom } = view.docView.domFromPos(pos, side < 0 ? -1 : 1);\n let supportEmptyRange = webkit || gecko;\n if (node.nodeType == 3) {\n // These browsers support querying empty text ranges. Prefer that in\n // bidi context or when at the end of a node.\n if (supportEmptyRange && (BIDI.test(node.nodeValue) || (side < 0 ? !offset : offset == node.nodeValue.length))) {\n let rect = singleRect(textRange(node, offset, offset), side);\n // Firefox returns bad results (the position before the space)\n // when querying a position directly after line-broken\n // whitespace. Detect this situation and and kludge around it\n if (gecko && offset && /\\s/.test(node.nodeValue[offset - 1]) && offset < node.nodeValue.length) {\n let rectBefore = singleRect(textRange(node, offset - 1, offset - 1), -1);\n if (rectBefore.top == rect.top) {\n let rectAfter = singleRect(textRange(node, offset, offset + 1), -1);\n if (rectAfter.top != rect.top)\n return flattenV(rectAfter, rectAfter.left < rectBefore.left);\n }\n }\n return rect;\n }\n else {\n let from = offset, to = offset, takeSide = side < 0 ? 1 : -1;\n if (side < 0 && !offset) {\n to++;\n takeSide = -1;\n }\n else if (side >= 0 && offset == node.nodeValue.length) {\n from--;\n takeSide = 1;\n }\n else if (side < 0) {\n from--;\n }\n else {\n to++;\n }\n return flattenV(singleRect(textRange(node, from, to), takeSide), takeSide < 0);\n }\n }\n let $dom = view.state.doc.resolve(pos - (atom || 0));\n // Return a horizontal line in block context\n if (!$dom.parent.inlineContent) {\n if (atom == null && offset && (side < 0 || offset == nodeSize(node))) {\n let before = node.childNodes[offset - 1];\n if (before.nodeType == 1)\n return flattenH(before.getBoundingClientRect(), false);\n }\n if (atom == null && offset < nodeSize(node)) {\n let after = node.childNodes[offset];\n if (after.nodeType == 1)\n return flattenH(after.getBoundingClientRect(), true);\n }\n return flattenH(node.getBoundingClientRect(), side >= 0);\n }\n // Inline, not in text node (this is not Bidi-safe)\n if (atom == null && offset && (side < 0 || offset == nodeSize(node))) {\n let before = node.childNodes[offset - 1];\n let target = before.nodeType == 3 ? textRange(before, nodeSize(before) - (supportEmptyRange ? 0 : 1))\n // BR nodes tend to only return the rectangle before them.\n // Only use them if they are the last element in their parent\n : before.nodeType == 1 && (before.nodeName != \"BR\" || !before.nextSibling) ? before : null;\n if (target)\n return flattenV(singleRect(target, 1), false);\n }\n if (atom == null && offset < nodeSize(node)) {\n let after = node.childNodes[offset];\n while (after.pmViewDesc && after.pmViewDesc.ignoreForCoords)\n after = after.nextSibling;\n let target = !after ? null : after.nodeType == 3 ? textRange(after, 0, (supportEmptyRange ? 0 : 1))\n : after.nodeType == 1 ? after : null;\n if (target)\n return flattenV(singleRect(target, -1), true);\n }\n // All else failed, just try to get a rectangle for the target node\n return flattenV(singleRect(node.nodeType == 3 ? textRange(node) : node, -side), side >= 0);\n}\nfunction flattenV(rect, left) {\n if (rect.width == 0)\n return rect;\n let x = left ? rect.left : rect.right;\n return { top: rect.top, bottom: rect.bottom, left: x, right: x };\n}\nfunction flattenH(rect, top) {\n if (rect.height == 0)\n return rect;\n let y = top ? rect.top : rect.bottom;\n return { top: y, bottom: y, left: rect.left, right: rect.right };\n}\nfunction withFlushedState(view, state, f) {\n let viewState = view.state, active = view.root.activeElement;\n if (viewState != state)\n view.updateState(state);\n if (active != view.dom)\n view.focus();\n try {\n return f();\n }\n finally {\n if (viewState != state)\n view.updateState(viewState);\n if (active != view.dom && active)\n active.focus();\n }\n}\n// Whether vertical position motion in a given direction\n// from a position would leave a text block.\nfunction endOfTextblockVertical(view, state, dir) {\n let sel = state.selection;\n let $pos = dir == \"up\" ? sel.$from : sel.$to;\n return withFlushedState(view, state, () => {\n let { node: dom } = view.docView.domFromPos($pos.pos, dir == \"up\" ? -1 : 1);\n for (;;) {\n let nearest = view.docView.nearestDesc(dom, true);\n if (!nearest)\n break;\n if (nearest.node.isBlock) {\n dom = nearest.contentDOM || nearest.dom;\n break;\n }\n dom = nearest.dom.parentNode;\n }\n let coords = coordsAtPos(view, $pos.pos, 1);\n for (let child = dom.firstChild; child; child = child.nextSibling) {\n let boxes;\n if (child.nodeType == 1)\n boxes = child.getClientRects();\n else if (child.nodeType == 3)\n boxes = textRange(child, 0, child.nodeValue.length).getClientRects();\n else\n continue;\n for (let i = 0; i < boxes.length; i++) {\n let box = boxes[i];\n if (box.bottom > box.top + 1 &&\n (dir == \"up\" ? coords.top - box.top > (box.bottom - coords.top) * 2\n : box.bottom - coords.bottom > (coords.bottom - box.top) * 2))\n return false;\n }\n }\n return true;\n });\n}\nconst maybeRTL = /[\\u0590-\\u08ac]/;\nfunction endOfTextblockHorizontal(view, state, dir) {\n let { $head } = state.selection;\n if (!$head.parent.isTextblock)\n return false;\n let offset = $head.parentOffset, atStart = !offset, atEnd = offset == $head.parent.content.size;\n let sel = view.domSelection();\n // If the textblock is all LTR, or the browser doesn't support\n // Selection.modify (Edge), fall back to a primitive approach\n if (!maybeRTL.test($head.parent.textContent) || !sel.modify)\n return dir == \"left\" || dir == \"backward\" ? atStart : atEnd;\n return withFlushedState(view, state, () => {\n // This is a huge hack, but appears to be the best we can\n // currently do: use `Selection.modify` to move the selection by\n // one character, and see if that moves the cursor out of the\n // textblock (or doesn't move it at all, when at the start/end of\n // the document).\n let { focusNode: oldNode, focusOffset: oldOff, anchorNode, anchorOffset } = view.domSelectionRange();\n let oldBidiLevel = sel.caretBidiLevel // Only for Firefox\n ;\n sel.modify(\"move\", dir, \"character\");\n let parentDOM = $head.depth ? view.docView.domAfterPos($head.before()) : view.dom;\n let { focusNode: newNode, focusOffset: newOff } = view.domSelectionRange();\n let result = newNode && !parentDOM.contains(newNode.nodeType == 1 ? newNode : newNode.parentNode) ||\n (oldNode == newNode && oldOff == newOff);\n // Restore the previous selection\n try {\n sel.collapse(anchorNode, anchorOffset);\n if (oldNode && (oldNode != anchorNode || oldOff != anchorOffset) && sel.extend)\n sel.extend(oldNode, oldOff);\n }\n catch (_) { }\n if (oldBidiLevel != null)\n sel.caretBidiLevel = oldBidiLevel;\n return result;\n });\n}\nlet cachedState = null;\nlet cachedDir = null;\nlet cachedResult = false;\nfunction endOfTextblock(view, state, dir) {\n if (cachedState == state && cachedDir == dir)\n return cachedResult;\n cachedState = state;\n cachedDir = dir;\n return cachedResult = dir == \"up\" || dir == \"down\"\n ? endOfTextblockVertical(view, state, dir)\n : endOfTextblockHorizontal(view, state, dir);\n}\n\n// View descriptions are data structures that describe the DOM that is\n// used to represent the editor's content. They are used for:\n//\n// - Incremental redrawing when the document changes\n//\n// - Figuring out what part of the document a given DOM position\n// corresponds to\n//\n// - Wiring in custom implementations of the editing interface for a\n// given node\n//\n// They form a doubly-linked mutable tree, starting at `view.docView`.\nconst NOT_DIRTY = 0, CHILD_DIRTY = 1, CONTENT_DIRTY = 2, NODE_DIRTY = 3;\n// Superclass for the various kinds of descriptions. Defines their\n// basic structure and shared methods.\nclass ViewDesc {\n constructor(parent, children, dom, \n // This is the node that holds the child views. It may be null for\n // descs that don't have children.\n contentDOM) {\n this.parent = parent;\n this.children = children;\n this.dom = dom;\n this.contentDOM = contentDOM;\n this.dirty = NOT_DIRTY;\n // An expando property on the DOM node provides a link back to its\n // description.\n dom.pmViewDesc = this;\n }\n // Used to check whether a given description corresponds to a\n // widget/mark/node.\n matchesWidget(widget) { return false; }\n matchesMark(mark) { return false; }\n matchesNode(node, outerDeco, innerDeco) { return false; }\n matchesHack(nodeName) { return false; }\n // When parsing in-editor content (in domchange.js), we allow\n // descriptions to determine the parse rules that should be used to\n // parse them.\n parseRule() { return null; }\n // Used by the editor's event handler to ignore events that come\n // from certain descs.\n stopEvent(event) { return false; }\n // The size of the content represented by this desc.\n get size() {\n let size = 0;\n for (let i = 0; i < this.children.length; i++)\n size += this.children[i].size;\n return size;\n }\n // For block nodes, this represents the space taken up by their\n // start/end tokens.\n get border() { return 0; }\n destroy() {\n this.parent = undefined;\n if (this.dom.pmViewDesc == this)\n this.dom.pmViewDesc = undefined;\n for (let i = 0; i < this.children.length; i++)\n this.children[i].destroy();\n }\n posBeforeChild(child) {\n for (let i = 0, pos = this.posAtStart;; i++) {\n let cur = this.children[i];\n if (cur == child)\n return pos;\n pos += cur.size;\n }\n }\n get posBefore() {\n return this.parent.posBeforeChild(this);\n }\n get posAtStart() {\n return this.parent ? this.parent.posBeforeChild(this) + this.border : 0;\n }\n get posAfter() {\n return this.posBefore + this.size;\n }\n get posAtEnd() {\n return this.posAtStart + this.size - 2 * this.border;\n }\n localPosFromDOM(dom, offset, bias) {\n // If the DOM position is in the content, use the child desc after\n // it to figure out a position.\n if (this.contentDOM && this.contentDOM.contains(dom.nodeType == 1 ? dom : dom.parentNode)) {\n if (bias < 0) {\n let domBefore, desc;\n if (dom == this.contentDOM) {\n domBefore = dom.childNodes[offset - 1];\n }\n else {\n while (dom.parentNode != this.contentDOM)\n dom = dom.parentNode;\n domBefore = dom.previousSibling;\n }\n while (domBefore && !((desc = domBefore.pmViewDesc) && desc.parent == this))\n domBefore = domBefore.previousSibling;\n return domBefore ? this.posBeforeChild(desc) + desc.size : this.posAtStart;\n }\n else {\n let domAfter, desc;\n if (dom == this.contentDOM) {\n domAfter = dom.childNodes[offset];\n }\n else {\n while (dom.parentNode != this.contentDOM)\n dom = dom.parentNode;\n domAfter = dom.nextSibling;\n }\n while (domAfter && !((desc = domAfter.pmViewDesc) && desc.parent == this))\n domAfter = domAfter.nextSibling;\n return domAfter ? this.posBeforeChild(desc) : this.posAtEnd;\n }\n }\n // Otherwise, use various heuristics, falling back on the bias\n // parameter, to determine whether to return the position at the\n // start or at the end of this view desc.\n let atEnd;\n if (dom == this.dom && this.contentDOM) {\n atEnd = offset > domIndex(this.contentDOM);\n }\n else if (this.contentDOM && this.contentDOM != this.dom && this.dom.contains(this.contentDOM)) {\n atEnd = dom.compareDocumentPosition(this.contentDOM) & 2;\n }\n else if (this.dom.firstChild) {\n if (offset == 0)\n for (let search = dom;; search = search.parentNode) {\n if (search == this.dom) {\n atEnd = false;\n break;\n }\n if (search.previousSibling)\n break;\n }\n if (atEnd == null && offset == dom.childNodes.length)\n for (let search = dom;; search = search.parentNode) {\n if (search == this.dom) {\n atEnd = true;\n break;\n }\n if (search.nextSibling)\n break;\n }\n }\n return (atEnd == null ? bias > 0 : atEnd) ? this.posAtEnd : this.posAtStart;\n }\n nearestDesc(dom, onlyNodes = false) {\n for (let first = true, cur = dom; cur; cur = cur.parentNode) {\n let desc = this.getDesc(cur), nodeDOM;\n if (desc && (!onlyNodes || desc.node)) {\n // If dom is outside of this desc's nodeDOM, don't count it.\n if (first && (nodeDOM = desc.nodeDOM) &&\n !(nodeDOM.nodeType == 1 ? nodeDOM.contains(dom.nodeType == 1 ? dom : dom.parentNode) : nodeDOM == dom))\n first = false;\n else\n return desc;\n }\n }\n }\n getDesc(dom) {\n let desc = dom.pmViewDesc;\n for (let cur = desc; cur; cur = cur.parent)\n if (cur == this)\n return desc;\n }\n posFromDOM(dom, offset, bias) {\n for (let scan = dom; scan; scan = scan.parentNode) {\n let desc = this.getDesc(scan);\n if (desc)\n return desc.localPosFromDOM(dom, offset, bias);\n }\n return -1;\n }\n // Find the desc for the node after the given pos, if any. (When a\n // parent node overrode rendering, there might not be one.)\n descAt(pos) {\n for (let i = 0, offset = 0; i < this.children.length; i++) {\n let child = this.children[i], end = offset + child.size;\n if (offset == pos && end != offset) {\n while (!child.border && child.children.length)\n child = child.children[0];\n return child;\n }\n if (pos < end)\n return child.descAt(pos - offset - child.border);\n offset = end;\n }\n }\n domFromPos(pos, side) {\n if (!this.contentDOM)\n return { node: this.dom, offset: 0, atom: pos + 1 };\n // First find the position in the child array\n let i = 0, offset = 0;\n for (let curPos = 0; i < this.children.length; i++) {\n let child = this.children[i], end = curPos + child.size;\n if (end > pos || child instanceof TrailingHackViewDesc) {\n offset = pos - curPos;\n break;\n }\n curPos = end;\n }\n // If this points into the middle of a child, call through\n if (offset)\n return this.children[i].domFromPos(offset - this.children[i].border, side);\n // Go back if there were any zero-length widgets with side >= 0 before this point\n for (let prev; i && !(prev = this.children[i - 1]).size && prev instanceof WidgetViewDesc && prev.side >= 0; i--) { }\n // Scan towards the first useable node\n if (side <= 0) {\n let prev, enter = true;\n for (;; i--, enter = false) {\n prev = i ? this.children[i - 1] : null;\n if (!prev || prev.dom.parentNode == this.contentDOM)\n break;\n }\n if (prev && side && enter && !prev.border && !prev.domAtom)\n return prev.domFromPos(prev.size, side);\n return { node: this.contentDOM, offset: prev ? domIndex(prev.dom) + 1 : 0 };\n }\n else {\n let next, enter = true;\n for (;; i++, enter = false) {\n next = i < this.children.length ? this.children[i] : null;\n if (!next || next.dom.parentNode == this.contentDOM)\n break;\n }\n if (next && enter && !next.border && !next.domAtom)\n return next.domFromPos(0, side);\n return { node: this.contentDOM, offset: next ? domIndex(next.dom) : this.contentDOM.childNodes.length };\n }\n }\n // Used to find a DOM range in a single parent for a given changed\n // range.\n parseRange(from, to, base = 0) {\n if (this.children.length == 0)\n return { node: this.contentDOM, from, to, fromOffset: 0, toOffset: this.contentDOM.childNodes.length };\n let fromOffset = -1, toOffset = -1;\n for (let offset = base, i = 0;; i++) {\n let child = this.children[i], end = offset + child.size;\n if (fromOffset == -1 && from <= end) {\n let childBase = offset + child.border;\n // FIXME maybe descend mark views to parse a narrower range?\n if (from >= childBase && to <= end - child.border && child.node &&\n child.contentDOM && this.contentDOM.contains(child.contentDOM))\n return child.parseRange(from, to, childBase);\n from = offset;\n for (let j = i; j > 0; j--) {\n let prev = this.children[j - 1];\n if (prev.size && prev.dom.parentNode == this.contentDOM && !prev.emptyChildAt(1)) {\n fromOffset = domIndex(prev.dom) + 1;\n break;\n }\n from -= prev.size;\n }\n if (fromOffset == -1)\n fromOffset = 0;\n }\n if (fromOffset > -1 && (end > to || i == this.children.length - 1)) {\n to = end;\n for (let j = i + 1; j < this.children.length; j++) {\n let next = this.children[j];\n if (next.size && next.dom.parentNode == this.contentDOM && !next.emptyChildAt(-1)) {\n toOffset = domIndex(next.dom);\n break;\n }\n to += next.size;\n }\n if (toOffset == -1)\n toOffset = this.contentDOM.childNodes.length;\n break;\n }\n offset = end;\n }\n return { node: this.contentDOM, from, to, fromOffset, toOffset };\n }\n emptyChildAt(side) {\n if (this.border || !this.contentDOM || !this.children.length)\n return false;\n let child = this.children[side < 0 ? 0 : this.children.length - 1];\n return child.size == 0 || child.emptyChildAt(side);\n }\n domAfterPos(pos) {\n let { node, offset } = this.domFromPos(pos, 0);\n if (node.nodeType != 1 || offset == node.childNodes.length)\n throw new RangeError(\"No node after pos \" + pos);\n return node.childNodes[offset];\n }\n // View descs are responsible for setting any selection that falls\n // entirely inside of them, so that custom implementations can do\n // custom things with the selection. Note that this falls apart when\n // a selection starts in such a node and ends in another, in which\n // case we just use whatever domFromPos produces as a best effort.\n setSelection(anchor, head, root, force = false) {\n // If the selection falls entirely in a child, give it to that child\n let from = Math.min(anchor, head), to = Math.max(anchor, head);\n for (let i = 0, offset = 0; i < this.children.length; i++) {\n let child = this.children[i], end = offset + child.size;\n if (from > offset && to < end)\n return child.setSelection(anchor - offset - child.border, head - offset - child.border, root, force);\n offset = end;\n }\n let anchorDOM = this.domFromPos(anchor, anchor ? -1 : 1);\n let headDOM = head == anchor ? anchorDOM : this.domFromPos(head, head ? -1 : 1);\n let domSel = root.getSelection();\n let brKludge = false;\n // On Firefox, using Selection.collapse to put the cursor after a\n // BR node for some reason doesn't always work (#1073). On Safari,\n // the cursor sometimes inexplicable visually lags behind its\n // reported position in such situations (#1092).\n if ((gecko || safari) && anchor == head) {\n let { node, offset } = anchorDOM;\n if (node.nodeType == 3) {\n brKludge = !!(offset && node.nodeValue[offset - 1] == \"\\n\");\n // Issue #1128\n if (brKludge && offset == node.nodeValue.length) {\n for (let scan = node, after; scan; scan = scan.parentNode) {\n if (after = scan.nextSibling) {\n if (after.nodeName == \"BR\")\n anchorDOM = headDOM = { node: after.parentNode, offset: domIndex(after) + 1 };\n break;\n }\n let desc = scan.pmViewDesc;\n if (desc && desc.node && desc.node.isBlock)\n break;\n }\n }\n }\n else {\n let prev = node.childNodes[offset - 1];\n brKludge = prev && (prev.nodeName == \"BR\" || prev.contentEditable == \"false\");\n }\n }\n // Firefox can act strangely when the selection is in front of an\n // uneditable node. See #1163 and https://bugzilla.mozilla.org/show_bug.cgi?id=1709536\n if (gecko && domSel.focusNode && domSel.focusNode != headDOM.node && domSel.focusNode.nodeType == 1) {\n let after = domSel.focusNode.childNodes[domSel.focusOffset];\n if (after && after.contentEditable == \"false\")\n force = true;\n }\n if (!(force || brKludge && safari) &&\n isEquivalentPosition(anchorDOM.node, anchorDOM.offset, domSel.anchorNode, domSel.anchorOffset) &&\n isEquivalentPosition(headDOM.node, headDOM.offset, domSel.focusNode, domSel.focusOffset))\n return;\n // Selection.extend can be used to create an 'inverted' selection\n // (one where the focus is before the anchor), but not all\n // browsers support it yet.\n let domSelExtended = false;\n if ((domSel.extend || anchor == head) && !brKludge) {\n domSel.collapse(anchorDOM.node, anchorDOM.offset);\n try {\n if (anchor != head)\n domSel.extend(headDOM.node, headDOM.offset);\n domSelExtended = true;\n }\n catch (_) {\n // In some cases with Chrome the selection is empty after calling\n // collapse, even when it should be valid. This appears to be a bug, but\n // it is difficult to isolate. If this happens fallback to the old path\n // without using extend.\n // Similarly, this could crash on Safari if the editor is hidden, and\n // there was no selection.\n }\n }\n if (!domSelExtended) {\n if (anchor > head) {\n let tmp = anchorDOM;\n anchorDOM = headDOM;\n headDOM = tmp;\n }\n let range = document.createRange();\n range.setEnd(headDOM.node, headDOM.offset);\n range.setStart(anchorDOM.node, anchorDOM.offset);\n domSel.removeAllRanges();\n domSel.addRange(range);\n }\n }\n ignoreMutation(mutation) {\n return !this.contentDOM && mutation.type != \"selection\";\n }\n get contentLost() {\n return this.contentDOM && this.contentDOM != this.dom && !this.dom.contains(this.contentDOM);\n }\n // Remove a subtree of the element tree that has been touched\n // by a DOM change, so that the next update will redraw it.\n markDirty(from, to) {\n for (let offset = 0, i = 0; i < this.children.length; i++) {\n let child = this.children[i], end = offset + child.size;\n if (offset == end ? from <= end && to >= offset : from < end && to > offset) {\n let startInside = offset + child.border, endInside = end - child.border;\n if (from >= startInside && to <= endInside) {\n this.dirty = from == offset || to == end ? CONTENT_DIRTY : CHILD_DIRTY;\n if (from == startInside && to == endInside &&\n (child.contentLost || child.dom.parentNode != this.contentDOM))\n child.dirty = NODE_DIRTY;\n else\n child.markDirty(from - startInside, to - startInside);\n return;\n }\n else {\n child.dirty = child.dom == child.contentDOM && child.dom.parentNode == this.contentDOM && !child.children.length\n ? CONTENT_DIRTY : NODE_DIRTY;\n }\n }\n offset = end;\n }\n this.dirty = CONTENT_DIRTY;\n }\n markParentsDirty() {\n let level = 1;\n for (let node = this.parent; node; node = node.parent, level++) {\n let dirty = level == 1 ? CONTENT_DIRTY : CHILD_DIRTY;\n if (node.dirty < dirty)\n node.dirty = dirty;\n }\n }\n get domAtom() { return false; }\n get ignoreForCoords() { return false; }\n isText(text) { return false; }\n}\n// A widget desc represents a widget decoration, which is a DOM node\n// drawn between the document nodes.\nclass WidgetViewDesc extends ViewDesc {\n constructor(parent, widget, view, pos) {\n let self, dom = widget.type.toDOM;\n if (typeof dom == \"function\")\n dom = dom(view, () => {\n if (!self)\n return pos;\n if (self.parent)\n return self.parent.posBeforeChild(self);\n });\n if (!widget.type.spec.raw) {\n if (dom.nodeType != 1) {\n let wrap = document.createElement(\"span\");\n wrap.appendChild(dom);\n dom = wrap;\n }\n dom.contentEditable = \"false\";\n dom.classList.add(\"ProseMirror-widget\");\n }\n super(parent, [], dom, null);\n this.widget = widget;\n this.widget = widget;\n self = this;\n }\n matchesWidget(widget) {\n return this.dirty == NOT_DIRTY && widget.type.eq(this.widget.type);\n }\n parseRule() { return { ignore: true }; }\n stopEvent(event) {\n let stop = this.widget.spec.stopEvent;\n return stop ? stop(event) : false;\n }\n ignoreMutation(mutation) {\n return mutation.type != \"selection\" || this.widget.spec.ignoreSelection;\n }\n destroy() {\n this.widget.type.destroy(this.dom);\n super.destroy();\n }\n get domAtom() { return true; }\n get side() { return this.widget.type.side; }\n}\nclass CompositionViewDesc extends ViewDesc {\n constructor(parent, dom, textDOM, text) {\n super(parent, [], dom, null);\n this.textDOM = textDOM;\n this.text = text;\n }\n get size() { return this.text.length; }\n localPosFromDOM(dom, offset) {\n if (dom != this.textDOM)\n return this.posAtStart + (offset ? this.size : 0);\n return this.posAtStart + offset;\n }\n domFromPos(pos) {\n return { node: this.textDOM, offset: pos };\n }\n ignoreMutation(mut) {\n return mut.type === 'characterData' && mut.target.nodeValue == mut.oldValue;\n }\n}\n// A mark desc represents a mark. May have multiple children,\n// depending on how the mark is split. Note that marks are drawn using\n// a fixed nesting order, for simplicity and predictability, so in\n// some cases they will be split more often than would appear\n// necessary.\nclass MarkViewDesc extends ViewDesc {\n constructor(parent, mark, dom, contentDOM) {\n super(parent, [], dom, contentDOM);\n this.mark = mark;\n }\n static create(parent, mark, inline, view) {\n let custom = view.nodeViews[mark.type.name];\n let spec = custom && custom(mark, view, inline);\n if (!spec || !spec.dom)\n spec = DOMSerializer.renderSpec(document, mark.type.spec.toDOM(mark, inline));\n return new MarkViewDesc(parent, mark, spec.dom, spec.contentDOM || spec.dom);\n }\n parseRule() {\n if ((this.dirty & NODE_DIRTY) || this.mark.type.spec.reparseInView)\n return null;\n return { mark: this.mark.type.name, attrs: this.mark.attrs, contentElement: this.contentDOM };\n }\n matchesMark(mark) { return this.dirty != NODE_DIRTY && this.mark.eq(mark); }\n markDirty(from, to) {\n super.markDirty(from, to);\n // Move dirty info to nearest node view\n if (this.dirty != NOT_DIRTY) {\n let parent = this.parent;\n while (!parent.node)\n parent = parent.parent;\n if (parent.dirty < this.dirty)\n parent.dirty = this.dirty;\n this.dirty = NOT_DIRTY;\n }\n }\n slice(from, to, view) {\n let copy = MarkViewDesc.create(this.parent, this.mark, true, view);\n let nodes = this.children, size = this.size;\n if (to < size)\n nodes = replaceNodes(nodes, to, size, view);\n if (from > 0)\n nodes = replaceNodes(nodes, 0, from, view);\n for (let i = 0; i < nodes.length; i++)\n nodes[i].parent = copy;\n copy.children = nodes;\n return copy;\n }\n}\n// Node view descs are the main, most common type of view desc, and\n// correspond to an actual node in the document. Unlike mark descs,\n// they populate their child array themselves.\nclass NodeViewDesc extends ViewDesc {\n constructor(parent, node, outerDeco, innerDeco, dom, contentDOM, nodeDOM, view, pos) {\n super(parent, [], dom, contentDOM);\n this.node = node;\n this.outerDeco = outerDeco;\n this.innerDeco = innerDeco;\n this.nodeDOM = nodeDOM;\n }\n // By default, a node is rendered using the `toDOM` method from the\n // node type spec. But client code can use the `nodeViews` spec to\n // supply a custom node view, which can influence various aspects of\n // the way the node works.\n //\n // (Using subclassing for this was intentionally decided against,\n // since it'd require exposing a whole slew of finicky\n // implementation details to the user code that they probably will\n // never need.)\n static create(parent, node, outerDeco, innerDeco, view, pos) {\n let custom = view.nodeViews[node.type.name], descObj;\n let spec = custom && custom(node, view, () => {\n // (This is a function that allows the custom view to find its\n // own position)\n if (!descObj)\n return pos;\n if (descObj.parent)\n return descObj.parent.posBeforeChild(descObj);\n }, outerDeco, innerDeco);\n let dom = spec && spec.dom, contentDOM = spec && spec.contentDOM;\n if (node.isText) {\n if (!dom)\n dom = document.createTextNode(node.text);\n else if (dom.nodeType != 3)\n throw new RangeError(\"Text must be rendered as a DOM text node\");\n }\n else if (!dom) {\n ({ dom, contentDOM } = DOMSerializer.renderSpec(document, node.type.spec.toDOM(node)));\n }\n if (!contentDOM && !node.isText && dom.nodeName != \"BR\") { // Chrome gets confused by
\n if (!dom.hasAttribute(\"contenteditable\"))\n dom.contentEditable = \"false\";\n if (node.type.spec.draggable)\n dom.draggable = true;\n }\n let nodeDOM = dom;\n dom = applyOuterDeco(dom, outerDeco, node);\n if (spec)\n return descObj = new CustomNodeViewDesc(parent, node, outerDeco, innerDeco, dom, contentDOM || null, nodeDOM, spec, view, pos + 1);\n else if (node.isText)\n return new TextViewDesc(parent, node, outerDeco, innerDeco, dom, nodeDOM, view);\n else\n return new NodeViewDesc(parent, node, outerDeco, innerDeco, dom, contentDOM || null, nodeDOM, view, pos + 1);\n }\n parseRule() {\n // Experimental kludge to allow opt-in re-parsing of nodes\n if (this.node.type.spec.reparseInView)\n return null;\n // FIXME the assumption that this can always return the current\n // attrs means that if the user somehow manages to change the\n // attrs in the dom, that won't be picked up. Not entirely sure\n // whether this is a problem\n let rule = { node: this.node.type.name, attrs: this.node.attrs };\n if (this.node.type.whitespace == \"pre\")\n rule.preserveWhitespace = \"full\";\n if (!this.contentDOM) {\n rule.getContent = () => this.node.content;\n }\n else if (!this.contentLost) {\n rule.contentElement = this.contentDOM;\n }\n else {\n // Chrome likes to randomly recreate parent nodes when\n // backspacing things. When that happens, this tries to find the\n // new parent.\n for (let i = this.children.length - 1; i >= 0; i--) {\n let child = this.children[i];\n if (this.dom.contains(child.dom.parentNode)) {\n rule.contentElement = child.dom.parentNode;\n break;\n }\n }\n if (!rule.contentElement)\n rule.getContent = () => Fragment.empty;\n }\n return rule;\n }\n matchesNode(node, outerDeco, innerDeco) {\n return this.dirty == NOT_DIRTY && node.eq(this.node) &&\n sameOuterDeco(outerDeco, this.outerDeco) && innerDeco.eq(this.innerDeco);\n }\n get size() { return this.node.nodeSize; }\n get border() { return this.node.isLeaf ? 0 : 1; }\n // Syncs `this.children` to match `this.node.content` and the local\n // decorations, possibly introducing nesting for marks. Then, in a\n // separate step, syncs the DOM inside `this.contentDOM` to\n // `this.children`.\n updateChildren(view, pos) {\n let inline = this.node.inlineContent, off = pos;\n let composition = view.composing ? this.localCompositionInfo(view, pos) : null;\n let localComposition = composition && composition.pos > -1 ? composition : null;\n let compositionInChild = composition && composition.pos < 0;\n let updater = new ViewTreeUpdater(this, localComposition && localComposition.node, view);\n iterDeco(this.node, this.innerDeco, (widget, i, insideNode) => {\n if (widget.spec.marks)\n updater.syncToMarks(widget.spec.marks, inline, view);\n else if (widget.type.side >= 0 && !insideNode)\n updater.syncToMarks(i == this.node.childCount ? Mark.none : this.node.child(i).marks, inline, view);\n // If the next node is a desc matching this widget, reuse it,\n // otherwise insert the widget as a new view desc.\n updater.placeWidget(widget, view, off);\n }, (child, outerDeco, innerDeco, i) => {\n // Make sure the wrapping mark descs match the node's marks.\n updater.syncToMarks(child.marks, inline, view);\n // Try several strategies for drawing this node\n let compIndex;\n if (updater.findNodeMatch(child, outerDeco, innerDeco, i)) ;\n else if (compositionInChild && view.state.selection.from > off &&\n view.state.selection.to < off + child.nodeSize &&\n (compIndex = updater.findIndexWithChild(composition.node)) > -1 &&\n updater.updateNodeAt(child, outerDeco, innerDeco, compIndex, view)) ;\n else if (updater.updateNextNode(child, outerDeco, innerDeco, view, i, off)) ;\n else {\n // Add it as a new view\n updater.addNode(child, outerDeco, innerDeco, view, off);\n }\n off += child.nodeSize;\n });\n // Drop all remaining descs after the current position.\n updater.syncToMarks([], inline, view);\n if (this.node.isTextblock)\n updater.addTextblockHacks();\n updater.destroyRest();\n // Sync the DOM if anything changed\n if (updater.changed || this.dirty == CONTENT_DIRTY) {\n // May have to protect focused DOM from being changed if a composition is active\n if (localComposition)\n this.protectLocalComposition(view, localComposition);\n renderDescs(this.contentDOM, this.children, view);\n if (ios)\n iosHacks(this.dom);\n }\n }\n localCompositionInfo(view, pos) {\n // Only do something if both the selection and a focused text node\n // are inside of this node\n let { from, to } = view.state.selection;\n if (!(view.state.selection instanceof TextSelection) || from < pos || to > pos + this.node.content.size)\n return null;\n let textNode = view.input.compositionNode;\n if (!textNode || !this.dom.contains(textNode.parentNode))\n return null;\n if (this.node.inlineContent) {\n // Find the text in the focused node in the node, stop if it's not\n // there (may have been modified through other means, in which\n // case it should overwritten)\n let text = textNode.nodeValue;\n let textPos = findTextInFragment(this.node.content, text, from - pos, to - pos);\n return textPos < 0 ? null : { node: textNode, pos: textPos, text };\n }\n else {\n return { node: textNode, pos: -1, text: \"\" };\n }\n }\n protectLocalComposition(view, { node, pos, text }) {\n // The node is already part of a local view desc, leave it there\n if (this.getDesc(node))\n return;\n // Create a composition view for the orphaned nodes\n let topNode = node;\n for (;; topNode = topNode.parentNode) {\n if (topNode.parentNode == this.contentDOM)\n break;\n while (topNode.previousSibling)\n topNode.parentNode.removeChild(topNode.previousSibling);\n while (topNode.nextSibling)\n topNode.parentNode.removeChild(topNode.nextSibling);\n if (topNode.pmViewDesc)\n topNode.pmViewDesc = undefined;\n }\n let desc = new CompositionViewDesc(this, topNode, node, text);\n view.input.compositionNodes.push(desc);\n // Patch up this.children to contain the composition view\n this.children = replaceNodes(this.children, pos, pos + text.length, view, desc);\n }\n // If this desc must be updated to match the given node decoration,\n // do so and return true.\n update(node, outerDeco, innerDeco, view) {\n if (this.dirty == NODE_DIRTY ||\n !node.sameMarkup(this.node))\n return false;\n this.updateInner(node, outerDeco, innerDeco, view);\n return true;\n }\n updateInner(node, outerDeco, innerDeco, view) {\n this.updateOuterDeco(outerDeco);\n this.node = node;\n this.innerDeco = innerDeco;\n if (this.contentDOM)\n this.updateChildren(view, this.posAtStart);\n this.dirty = NOT_DIRTY;\n }\n updateOuterDeco(outerDeco) {\n if (sameOuterDeco(outerDeco, this.outerDeco))\n return;\n let needsWrap = this.nodeDOM.nodeType != 1;\n let oldDOM = this.dom;\n this.dom = patchOuterDeco(this.dom, this.nodeDOM, computeOuterDeco(this.outerDeco, this.node, needsWrap), computeOuterDeco(outerDeco, this.node, needsWrap));\n if (this.dom != oldDOM) {\n oldDOM.pmViewDesc = undefined;\n this.dom.pmViewDesc = this;\n }\n this.outerDeco = outerDeco;\n }\n // Mark this node as being the selected node.\n selectNode() {\n if (this.nodeDOM.nodeType == 1)\n this.nodeDOM.classList.add(\"ProseMirror-selectednode\");\n if (this.contentDOM || !this.node.type.spec.draggable)\n this.dom.draggable = true;\n }\n // Remove selected node marking from this node.\n deselectNode() {\n if (this.nodeDOM.nodeType == 1) {\n this.nodeDOM.classList.remove(\"ProseMirror-selectednode\");\n if (this.contentDOM || !this.node.type.spec.draggable)\n this.dom.removeAttribute(\"draggable\");\n }\n }\n get domAtom() { return this.node.isAtom; }\n}\n// Create a view desc for the top-level document node, to be exported\n// and used by the view class.\nfunction docViewDesc(doc, outerDeco, innerDeco, dom, view) {\n applyOuterDeco(dom, outerDeco, doc);\n let docView = new NodeViewDesc(undefined, doc, outerDeco, innerDeco, dom, dom, dom, view, 0);\n if (docView.contentDOM)\n docView.updateChildren(view, 0);\n return docView;\n}\nclass TextViewDesc extends NodeViewDesc {\n constructor(parent, node, outerDeco, innerDeco, dom, nodeDOM, view) {\n super(parent, node, outerDeco, innerDeco, dom, null, nodeDOM, view, 0);\n }\n parseRule() {\n let skip = this.nodeDOM.parentNode;\n while (skip && skip != this.dom && !skip.pmIsDeco)\n skip = skip.parentNode;\n return { skip: (skip || true) };\n }\n update(node, outerDeco, innerDeco, view) {\n if (this.dirty == NODE_DIRTY || (this.dirty != NOT_DIRTY && !this.inParent()) ||\n !node.sameMarkup(this.node))\n return false;\n this.updateOuterDeco(outerDeco);\n if ((this.dirty != NOT_DIRTY || node.text != this.node.text) && node.text != this.nodeDOM.nodeValue) {\n this.nodeDOM.nodeValue = node.text;\n if (view.trackWrites == this.nodeDOM)\n view.trackWrites = null;\n }\n this.node = node;\n this.dirty = NOT_DIRTY;\n return true;\n }\n inParent() {\n let parentDOM = this.parent.contentDOM;\n for (let n = this.nodeDOM; n; n = n.parentNode)\n if (n == parentDOM)\n return true;\n return false;\n }\n domFromPos(pos) {\n return { node: this.nodeDOM, offset: pos };\n }\n localPosFromDOM(dom, offset, bias) {\n if (dom == this.nodeDOM)\n return this.posAtStart + Math.min(offset, this.node.text.length);\n return super.localPosFromDOM(dom, offset, bias);\n }\n ignoreMutation(mutation) {\n return mutation.type != \"characterData\" && mutation.type != \"selection\";\n }\n slice(from, to, view) {\n let node = this.node.cut(from, to), dom = document.createTextNode(node.text);\n return new TextViewDesc(this.parent, node, this.outerDeco, this.innerDeco, dom, dom, view);\n }\n markDirty(from, to) {\n super.markDirty(from, to);\n if (this.dom != this.nodeDOM && (from == 0 || to == this.nodeDOM.nodeValue.length))\n this.dirty = NODE_DIRTY;\n }\n get domAtom() { return false; }\n isText(text) { return this.node.text == text; }\n}\n// A dummy desc used to tag trailing BR or IMG nodes created to work\n// around contentEditable terribleness.\nclass TrailingHackViewDesc extends ViewDesc {\n parseRule() { return { ignore: true }; }\n matchesHack(nodeName) { return this.dirty == NOT_DIRTY && this.dom.nodeName == nodeName; }\n get domAtom() { return true; }\n get ignoreForCoords() { return this.dom.nodeName == \"IMG\"; }\n}\n// A separate subclass is used for customized node views, so that the\n// extra checks only have to be made for nodes that are actually\n// customized.\nclass CustomNodeViewDesc extends NodeViewDesc {\n constructor(parent, node, outerDeco, innerDeco, dom, contentDOM, nodeDOM, spec, view, pos) {\n super(parent, node, outerDeco, innerDeco, dom, contentDOM, nodeDOM, view, pos);\n this.spec = spec;\n }\n // A custom `update` method gets to decide whether the update goes\n // through. If it does, and there's a `contentDOM` node, our logic\n // updates the children.\n update(node, outerDeco, innerDeco, view) {\n if (this.dirty == NODE_DIRTY)\n return false;\n if (this.spec.update) {\n let result = this.spec.update(node, outerDeco, innerDeco);\n if (result)\n this.updateInner(node, outerDeco, innerDeco, view);\n return result;\n }\n else if (!this.contentDOM && !node.isLeaf) {\n return false;\n }\n else {\n return super.update(node, outerDeco, innerDeco, view);\n }\n }\n selectNode() {\n this.spec.selectNode ? this.spec.selectNode() : super.selectNode();\n }\n deselectNode() {\n this.spec.deselectNode ? this.spec.deselectNode() : super.deselectNode();\n }\n setSelection(anchor, head, root, force) {\n this.spec.setSelection ? this.spec.setSelection(anchor, head, root)\n : super.setSelection(anchor, head, root, force);\n }\n destroy() {\n if (this.spec.destroy)\n this.spec.destroy();\n super.destroy();\n }\n stopEvent(event) {\n return this.spec.stopEvent ? this.spec.stopEvent(event) : false;\n }\n ignoreMutation(mutation) {\n return this.spec.ignoreMutation ? this.spec.ignoreMutation(mutation) : super.ignoreMutation(mutation);\n }\n}\n// Sync the content of the given DOM node with the nodes associated\n// with the given array of view descs, recursing into mark descs\n// because this should sync the subtree for a whole node at a time.\nfunction renderDescs(parentDOM, descs, view) {\n let dom = parentDOM.firstChild, written = false;\n for (let i = 0; i < descs.length; i++) {\n let desc = descs[i], childDOM = desc.dom;\n if (childDOM.parentNode == parentDOM) {\n while (childDOM != dom) {\n dom = rm(dom);\n written = true;\n }\n dom = dom.nextSibling;\n }\n else {\n written = true;\n parentDOM.insertBefore(childDOM, dom);\n }\n if (desc instanceof MarkViewDesc) {\n let pos = dom ? dom.previousSibling : parentDOM.lastChild;\n renderDescs(desc.contentDOM, desc.children, view);\n dom = pos ? pos.nextSibling : parentDOM.firstChild;\n }\n }\n while (dom) {\n dom = rm(dom);\n written = true;\n }\n if (written && view.trackWrites == parentDOM)\n view.trackWrites = null;\n}\nconst OuterDecoLevel = function (nodeName) {\n if (nodeName)\n this.nodeName = nodeName;\n};\nOuterDecoLevel.prototype = Object.create(null);\nconst noDeco = [new OuterDecoLevel];\nfunction computeOuterDeco(outerDeco, node, needsWrap) {\n if (outerDeco.length == 0)\n return noDeco;\n let top = needsWrap ? noDeco[0] : new OuterDecoLevel, result = [top];\n for (let i = 0; i < outerDeco.length; i++) {\n let attrs = outerDeco[i].type.attrs;\n if (!attrs)\n continue;\n if (attrs.nodeName)\n result.push(top = new OuterDecoLevel(attrs.nodeName));\n for (let name in attrs) {\n let val = attrs[name];\n if (val == null)\n continue;\n if (needsWrap && result.length == 1)\n result.push(top = new OuterDecoLevel(node.isInline ? \"span\" : \"div\"));\n if (name == \"class\")\n top.class = (top.class ? top.class + \" \" : \"\") + val;\n else if (name == \"style\")\n top.style = (top.style ? top.style + \";\" : \"\") + val;\n else if (name != \"nodeName\")\n top[name] = val;\n }\n }\n return result;\n}\nfunction patchOuterDeco(outerDOM, nodeDOM, prevComputed, curComputed) {\n // Shortcut for trivial case\n if (prevComputed == noDeco && curComputed == noDeco)\n return nodeDOM;\n let curDOM = nodeDOM;\n for (let i = 0; i < curComputed.length; i++) {\n let deco = curComputed[i], prev = prevComputed[i];\n if (i) {\n let parent;\n if (prev && prev.nodeName == deco.nodeName && curDOM != outerDOM &&\n (parent = curDOM.parentNode) && parent.nodeName.toLowerCase() == deco.nodeName) {\n curDOM = parent;\n }\n else {\n parent = document.createElement(deco.nodeName);\n parent.pmIsDeco = true;\n parent.appendChild(curDOM);\n prev = noDeco[0];\n curDOM = parent;\n }\n }\n patchAttributes(curDOM, prev || noDeco[0], deco);\n }\n return curDOM;\n}\nfunction patchAttributes(dom, prev, cur) {\n for (let name in prev)\n if (name != \"class\" && name != \"style\" && name != \"nodeName\" && !(name in cur))\n dom.removeAttribute(name);\n for (let name in cur)\n if (name != \"class\" && name != \"style\" && name != \"nodeName\" && cur[name] != prev[name])\n dom.setAttribute(name, cur[name]);\n if (prev.class != cur.class) {\n let prevList = prev.class ? prev.class.split(\" \").filter(Boolean) : [];\n let curList = cur.class ? cur.class.split(\" \").filter(Boolean) : [];\n for (let i = 0; i < prevList.length; i++)\n if (curList.indexOf(prevList[i]) == -1)\n dom.classList.remove(prevList[i]);\n for (let i = 0; i < curList.length; i++)\n if (prevList.indexOf(curList[i]) == -1)\n dom.classList.add(curList[i]);\n if (dom.classList.length == 0)\n dom.removeAttribute(\"class\");\n }\n if (prev.style != cur.style) {\n if (prev.style) {\n let prop = /\\s*([\\w\\-\\xa1-\\uffff]+)\\s*:(?:\"(?:\\\\.|[^\"])*\"|'(?:\\\\.|[^'])*'|\\(.*?\\)|[^;])*/g, m;\n while (m = prop.exec(prev.style))\n dom.style.removeProperty(m[1]);\n }\n if (cur.style)\n dom.style.cssText += cur.style;\n }\n}\nfunction applyOuterDeco(dom, deco, node) {\n return patchOuterDeco(dom, dom, noDeco, computeOuterDeco(deco, node, dom.nodeType != 1));\n}\nfunction sameOuterDeco(a, b) {\n if (a.length != b.length)\n return false;\n for (let i = 0; i < a.length; i++)\n if (!a[i].type.eq(b[i].type))\n return false;\n return true;\n}\n// Remove a DOM node and return its next sibling.\nfunction rm(dom) {\n let next = dom.nextSibling;\n dom.parentNode.removeChild(dom);\n return next;\n}\n// Helper class for incrementally updating a tree of mark descs and\n// the widget and node descs inside of them.\nclass ViewTreeUpdater {\n constructor(top, lock, view) {\n this.lock = lock;\n this.view = view;\n // Index into `this.top`'s child array, represents the current\n // update position.\n this.index = 0;\n // When entering a mark, the current top and index are pushed\n // onto this.\n this.stack = [];\n // Tracks whether anything was changed\n this.changed = false;\n this.top = top;\n this.preMatch = preMatch(top.node.content, top);\n }\n // Destroy and remove the children between the given indices in\n // `this.top`.\n destroyBetween(start, end) {\n if (start == end)\n return;\n for (let i = start; i < end; i++)\n this.top.children[i].destroy();\n this.top.children.splice(start, end - start);\n this.changed = true;\n }\n // Destroy all remaining children in `this.top`.\n destroyRest() {\n this.destroyBetween(this.index, this.top.children.length);\n }\n // Sync the current stack of mark descs with the given array of\n // marks, reusing existing mark descs when possible.\n syncToMarks(marks, inline, view) {\n let keep = 0, depth = this.stack.length >> 1;\n let maxKeep = Math.min(depth, marks.length);\n while (keep < maxKeep &&\n (keep == depth - 1 ? this.top : this.stack[(keep + 1) << 1])\n .matchesMark(marks[keep]) && marks[keep].type.spec.spanning !== false)\n keep++;\n while (keep < depth) {\n this.destroyRest();\n this.top.dirty = NOT_DIRTY;\n this.index = this.stack.pop();\n this.top = this.stack.pop();\n depth--;\n }\n while (depth < marks.length) {\n this.stack.push(this.top, this.index + 1);\n let found = -1;\n for (let i = this.index; i < Math.min(this.index + 3, this.top.children.length); i++) {\n let next = this.top.children[i];\n if (next.matchesMark(marks[depth]) && !this.isLocked(next.dom)) {\n found = i;\n break;\n }\n }\n if (found > -1) {\n if (found > this.index) {\n this.changed = true;\n this.destroyBetween(this.index, found);\n }\n this.top = this.top.children[this.index];\n }\n else {\n let markDesc = MarkViewDesc.create(this.top, marks[depth], inline, view);\n this.top.children.splice(this.index, 0, markDesc);\n this.top = markDesc;\n this.changed = true;\n }\n this.index = 0;\n depth++;\n }\n }\n // Try to find a node desc matching the given data. Skip over it and\n // return true when successful.\n findNodeMatch(node, outerDeco, innerDeco, index) {\n let found = -1, targetDesc;\n if (index >= this.preMatch.index &&\n (targetDesc = this.preMatch.matches[index - this.preMatch.index]).parent == this.top &&\n targetDesc.matchesNode(node, outerDeco, innerDeco)) {\n found = this.top.children.indexOf(targetDesc, this.index);\n }\n else {\n for (let i = this.index, e = Math.min(this.top.children.length, i + 5); i < e; i++) {\n let child = this.top.children[i];\n if (child.matchesNode(node, outerDeco, innerDeco) && !this.preMatch.matched.has(child)) {\n found = i;\n break;\n }\n }\n }\n if (found < 0)\n return false;\n this.destroyBetween(this.index, found);\n this.index++;\n return true;\n }\n updateNodeAt(node, outerDeco, innerDeco, index, view) {\n let child = this.top.children[index];\n if (child.dirty == NODE_DIRTY && child.dom == child.contentDOM)\n child.dirty = CONTENT_DIRTY;\n if (!child.update(node, outerDeco, innerDeco, view))\n return false;\n this.destroyBetween(this.index, index);\n this.index++;\n return true;\n }\n findIndexWithChild(domNode) {\n for (;;) {\n let parent = domNode.parentNode;\n if (!parent)\n return -1;\n if (parent == this.top.contentDOM) {\n let desc = domNode.pmViewDesc;\n if (desc)\n for (let i = this.index; i < this.top.children.length; i++) {\n if (this.top.children[i] == desc)\n return i;\n }\n return -1;\n }\n domNode = parent;\n }\n }\n // Try to update the next node, if any, to the given data. Checks\n // pre-matches to avoid overwriting nodes that could still be used.\n updateNextNode(node, outerDeco, innerDeco, view, index, pos) {\n for (let i = this.index; i < this.top.children.length; i++) {\n let next = this.top.children[i];\n if (next instanceof NodeViewDesc) {\n let preMatch = this.preMatch.matched.get(next);\n if (preMatch != null && preMatch != index)\n return false;\n let nextDOM = next.dom, updated;\n // Can't update if nextDOM is or contains this.lock, except if\n // it's a text node whose content already matches the new text\n // and whose decorations match the new ones.\n let locked = this.isLocked(nextDOM) &&\n !(node.isText && next.node && next.node.isText && next.nodeDOM.nodeValue == node.text &&\n next.dirty != NODE_DIRTY && sameOuterDeco(outerDeco, next.outerDeco));\n if (!locked && next.update(node, outerDeco, innerDeco, view)) {\n this.destroyBetween(this.index, i);\n if (next.dom != nextDOM)\n this.changed = true;\n this.index++;\n return true;\n }\n else if (!locked && (updated = this.recreateWrapper(next, node, outerDeco, innerDeco, view, pos))) {\n this.top.children[this.index] = updated;\n if (updated.contentDOM) {\n updated.dirty = CONTENT_DIRTY;\n updated.updateChildren(view, pos + 1);\n updated.dirty = NOT_DIRTY;\n }\n this.changed = true;\n this.index++;\n return true;\n }\n break;\n }\n }\n return false;\n }\n // When a node with content is replaced by a different node with\n // identical content, move over its children.\n recreateWrapper(next, node, outerDeco, innerDeco, view, pos) {\n if (next.dirty || node.isAtom || !next.children.length ||\n !next.node.content.eq(node.content))\n return null;\n let wrapper = NodeViewDesc.create(this.top, node, outerDeco, innerDeco, view, pos);\n if (wrapper.contentDOM) {\n wrapper.children = next.children;\n next.children = [];\n for (let ch of wrapper.children)\n ch.parent = wrapper;\n }\n next.destroy();\n return wrapper;\n }\n // Insert the node as a newly created node desc.\n addNode(node, outerDeco, innerDeco, view, pos) {\n let desc = NodeViewDesc.create(this.top, node, outerDeco, innerDeco, view, pos);\n if (desc.contentDOM)\n desc.updateChildren(view, pos + 1);\n this.top.children.splice(this.index++, 0, desc);\n this.changed = true;\n }\n placeWidget(widget, view, pos) {\n let next = this.index < this.top.children.length ? this.top.children[this.index] : null;\n if (next && next.matchesWidget(widget) &&\n (widget == next.widget || !next.widget.type.toDOM.parentNode)) {\n this.index++;\n }\n else {\n let desc = new WidgetViewDesc(this.top, widget, view, pos);\n this.top.children.splice(this.index++, 0, desc);\n this.changed = true;\n }\n }\n // Make sure a textblock looks and behaves correctly in\n // contentEditable.\n addTextblockHacks() {\n let lastChild = this.top.children[this.index - 1], parent = this.top;\n while (lastChild instanceof MarkViewDesc) {\n parent = lastChild;\n lastChild = parent.children[parent.children.length - 1];\n }\n if (!lastChild || // Empty textblock\n !(lastChild instanceof TextViewDesc) ||\n /\\n$/.test(lastChild.node.text) ||\n (this.view.requiresGeckoHackNode && /\\s$/.test(lastChild.node.text))) {\n // Avoid bugs in Safari's cursor drawing (#1165) and Chrome's mouse selection (#1152)\n if ((safari || chrome) && lastChild && lastChild.dom.contentEditable == \"false\")\n this.addHackNode(\"IMG\", parent);\n this.addHackNode(\"BR\", this.top);\n }\n }\n addHackNode(nodeName, parent) {\n if (parent == this.top && this.index < parent.children.length && parent.children[this.index].matchesHack(nodeName)) {\n this.index++;\n }\n else {\n let dom = document.createElement(nodeName);\n if (nodeName == \"IMG\") {\n dom.className = \"ProseMirror-separator\";\n dom.alt = \"\";\n }\n if (nodeName == \"BR\")\n dom.className = \"ProseMirror-trailingBreak\";\n let hack = new TrailingHackViewDesc(this.top, [], dom, null);\n if (parent != this.top)\n parent.children.push(hack);\n else\n parent.children.splice(this.index++, 0, hack);\n this.changed = true;\n }\n }\n isLocked(node) {\n return this.lock && (node == this.lock || node.nodeType == 1 && node.contains(this.lock.parentNode));\n }\n}\n// Iterate from the end of the fragment and array of descs to find\n// directly matching ones, in order to avoid overeagerly reusing those\n// for other nodes. Returns the fragment index of the first node that\n// is part of the sequence of matched nodes at the end of the\n// fragment.\nfunction preMatch(frag, parentDesc) {\n let curDesc = parentDesc, descI = curDesc.children.length;\n let fI = frag.childCount, matched = new Map, matches = [];\n outer: while (fI > 0) {\n let desc;\n for (;;) {\n if (descI) {\n let next = curDesc.children[descI - 1];\n if (next instanceof MarkViewDesc) {\n curDesc = next;\n descI = next.children.length;\n }\n else {\n desc = next;\n descI--;\n break;\n }\n }\n else if (curDesc == parentDesc) {\n break outer;\n }\n else {\n // FIXME\n descI = curDesc.parent.children.indexOf(curDesc);\n curDesc = curDesc.parent;\n }\n }\n let node = desc.node;\n if (!node)\n continue;\n if (node != frag.child(fI - 1))\n break;\n --fI;\n matched.set(desc, fI);\n matches.push(desc);\n }\n return { index: fI, matched, matches: matches.reverse() };\n}\nfunction compareSide(a, b) {\n return a.type.side - b.type.side;\n}\n// This function abstracts iterating over the nodes and decorations in\n// a fragment. Calls `onNode` for each node, with its local and child\n// decorations. Splits text nodes when there is a decoration starting\n// or ending inside of them. Calls `onWidget` for each widget.\nfunction iterDeco(parent, deco, onWidget, onNode) {\n let locals = deco.locals(parent), offset = 0;\n // Simple, cheap variant for when there are no local decorations\n if (locals.length == 0) {\n for (let i = 0; i < parent.childCount; i++) {\n let child = parent.child(i);\n onNode(child, locals, deco.forChild(offset, child), i);\n offset += child.nodeSize;\n }\n return;\n }\n let decoIndex = 0, active = [], restNode = null;\n for (let parentIndex = 0;;) {\n let widget, widgets;\n while (decoIndex < locals.length && locals[decoIndex].to == offset) {\n let next = locals[decoIndex++];\n if (next.widget) {\n if (!widget)\n widget = next;\n else\n (widgets || (widgets = [widget])).push(next);\n }\n }\n if (widget) {\n if (widgets) {\n widgets.sort(compareSide);\n for (let i = 0; i < widgets.length; i++)\n onWidget(widgets[i], parentIndex, !!restNode);\n }\n else {\n onWidget(widget, parentIndex, !!restNode);\n }\n }\n let child, index;\n if (restNode) {\n index = -1;\n child = restNode;\n restNode = null;\n }\n else if (parentIndex < parent.childCount) {\n index = parentIndex;\n child = parent.child(parentIndex++);\n }\n else {\n break;\n }\n for (let i = 0; i < active.length; i++)\n if (active[i].to <= offset)\n active.splice(i--, 1);\n while (decoIndex < locals.length && locals[decoIndex].from <= offset && locals[decoIndex].to > offset)\n active.push(locals[decoIndex++]);\n let end = offset + child.nodeSize;\n if (child.isText) {\n let cutAt = end;\n if (decoIndex < locals.length && locals[decoIndex].from < cutAt)\n cutAt = locals[decoIndex].from;\n for (let i = 0; i < active.length; i++)\n if (active[i].to < cutAt)\n cutAt = active[i].to;\n if (cutAt < end) {\n restNode = child.cut(cutAt - offset);\n child = child.cut(0, cutAt - offset);\n end = cutAt;\n index = -1;\n }\n }\n else {\n while (decoIndex < locals.length && locals[decoIndex].to < end)\n decoIndex++;\n }\n let outerDeco = child.isInline && !child.isLeaf ? active.filter(d => !d.inline) : active.slice();\n onNode(child, outerDeco, deco.forChild(offset, child), index);\n offset = end;\n }\n}\n// List markers in Mobile Safari will mysteriously disappear\n// sometimes. This works around that.\nfunction iosHacks(dom) {\n if (dom.nodeName == \"UL\" || dom.nodeName == \"OL\") {\n let oldCSS = dom.style.cssText;\n dom.style.cssText = oldCSS + \"; list-style: square !important\";\n window.getComputedStyle(dom).listStyle;\n dom.style.cssText = oldCSS;\n }\n}\n// Find a piece of text in an inline fragment, overlapping from-to\nfunction findTextInFragment(frag, text, from, to) {\n for (let i = 0, pos = 0; i < frag.childCount && pos <= to;) {\n let child = frag.child(i++), childStart = pos;\n pos += child.nodeSize;\n if (!child.isText)\n continue;\n let str = child.text;\n while (i < frag.childCount) {\n let next = frag.child(i++);\n pos += next.nodeSize;\n if (!next.isText)\n break;\n str += next.text;\n }\n if (pos >= from) {\n if (pos >= to && str.slice(to - text.length - childStart, to - childStart) == text)\n return to - text.length;\n let found = childStart < to ? str.lastIndexOf(text, to - childStart - 1) : -1;\n if (found >= 0 && found + text.length + childStart >= from)\n return childStart + found;\n if (from == to && str.length >= (to + text.length) - childStart &&\n str.slice(to - childStart, to - childStart + text.length) == text)\n return to;\n }\n }\n return -1;\n}\n// Replace range from-to in an array of view descs with replacement\n// (may be null to just delete). This goes very much against the grain\n// of the rest of this code, which tends to create nodes with the\n// right shape in one go, rather than messing with them after\n// creation, but is necessary in the composition hack.\nfunction replaceNodes(nodes, from, to, view, replacement) {\n let result = [];\n for (let i = 0, off = 0; i < nodes.length; i++) {\n let child = nodes[i], start = off, end = off += child.size;\n if (start >= to || end <= from) {\n result.push(child);\n }\n else {\n if (start < from)\n result.push(child.slice(0, from - start, view));\n if (replacement) {\n result.push(replacement);\n replacement = undefined;\n }\n if (end > to)\n result.push(child.slice(to - start, child.size, view));\n }\n }\n return result;\n}\n\nfunction selectionFromDOM(view, origin = null) {\n let domSel = view.domSelectionRange(), doc = view.state.doc;\n if (!domSel.focusNode)\n return null;\n let nearestDesc = view.docView.nearestDesc(domSel.focusNode), inWidget = nearestDesc && nearestDesc.size == 0;\n let head = view.docView.posFromDOM(domSel.focusNode, domSel.focusOffset, 1);\n if (head < 0)\n return null;\n let $head = doc.resolve(head), $anchor, selection;\n if (selectionCollapsed(domSel)) {\n $anchor = $head;\n while (nearestDesc && !nearestDesc.node)\n nearestDesc = nearestDesc.parent;\n let nearestDescNode = nearestDesc.node;\n if (nearestDesc && nearestDescNode.isAtom && NodeSelection.isSelectable(nearestDescNode) && nearestDesc.parent\n && !(nearestDescNode.isInline && isOnEdge(domSel.focusNode, domSel.focusOffset, nearestDesc.dom))) {\n let pos = nearestDesc.posBefore;\n selection = new NodeSelection(head == pos ? $head : doc.resolve(pos));\n }\n }\n else {\n let anchor = view.docView.posFromDOM(domSel.anchorNode, domSel.anchorOffset, 1);\n if (anchor < 0)\n return null;\n $anchor = doc.resolve(anchor);\n }\n if (!selection) {\n let bias = origin == \"pointer\" || (view.state.selection.head < $head.pos && !inWidget) ? 1 : -1;\n selection = selectionBetween(view, $anchor, $head, bias);\n }\n return selection;\n}\nfunction editorOwnsSelection(view) {\n return view.editable ? view.hasFocus() :\n hasSelection(view) && document.activeElement && document.activeElement.contains(view.dom);\n}\nfunction selectionToDOM(view, force = false) {\n let sel = view.state.selection;\n syncNodeSelection(view, sel);\n if (!editorOwnsSelection(view))\n return;\n // The delayed drag selection causes issues with Cell Selections\n // in Safari. And the drag selection delay is to workarond issues\n // which only present in Chrome.\n if (!force && view.input.mouseDown && view.input.mouseDown.allowDefault && chrome) {\n let domSel = view.domSelectionRange(), curSel = view.domObserver.currentSelection;\n if (domSel.anchorNode && curSel.anchorNode &&\n isEquivalentPosition(domSel.anchorNode, domSel.anchorOffset, curSel.anchorNode, curSel.anchorOffset)) {\n view.input.mouseDown.delayedSelectionSync = true;\n view.domObserver.setCurSelection();\n return;\n }\n }\n view.domObserver.disconnectSelection();\n if (view.cursorWrapper) {\n selectCursorWrapper(view);\n }\n else {\n let { anchor, head } = sel, resetEditableFrom, resetEditableTo;\n if (brokenSelectBetweenUneditable && !(sel instanceof TextSelection)) {\n if (!sel.$from.parent.inlineContent)\n resetEditableFrom = temporarilyEditableNear(view, sel.from);\n if (!sel.empty && !sel.$from.parent.inlineContent)\n resetEditableTo = temporarilyEditableNear(view, sel.to);\n }\n view.docView.setSelection(anchor, head, view.root, force);\n if (brokenSelectBetweenUneditable) {\n if (resetEditableFrom)\n resetEditable(resetEditableFrom);\n if (resetEditableTo)\n resetEditable(resetEditableTo);\n }\n if (sel.visible) {\n view.dom.classList.remove(\"ProseMirror-hideselection\");\n }\n else {\n view.dom.classList.add(\"ProseMirror-hideselection\");\n if (\"onselectionchange\" in document)\n removeClassOnSelectionChange(view);\n }\n }\n view.domObserver.setCurSelection();\n view.domObserver.connectSelection();\n}\n// Kludge to work around Webkit not allowing a selection to start/end\n// between non-editable block nodes. We briefly make something\n// editable, set the selection, then set it uneditable again.\nconst brokenSelectBetweenUneditable = safari || chrome && chrome_version < 63;\nfunction temporarilyEditableNear(view, pos) {\n let { node, offset } = view.docView.domFromPos(pos, 0);\n let after = offset < node.childNodes.length ? node.childNodes[offset] : null;\n let before = offset ? node.childNodes[offset - 1] : null;\n if (safari && after && after.contentEditable == \"false\")\n return setEditable(after);\n if ((!after || after.contentEditable == \"false\") &&\n (!before || before.contentEditable == \"false\")) {\n if (after)\n return setEditable(after);\n else if (before)\n return setEditable(before);\n }\n}\nfunction setEditable(element) {\n element.contentEditable = \"true\";\n if (safari && element.draggable) {\n element.draggable = false;\n element.wasDraggable = true;\n }\n return element;\n}\nfunction resetEditable(element) {\n element.contentEditable = \"false\";\n if (element.wasDraggable) {\n element.draggable = true;\n element.wasDraggable = null;\n }\n}\nfunction removeClassOnSelectionChange(view) {\n let doc = view.dom.ownerDocument;\n doc.removeEventListener(\"selectionchange\", view.input.hideSelectionGuard);\n let domSel = view.domSelectionRange();\n let node = domSel.anchorNode, offset = domSel.anchorOffset;\n doc.addEventListener(\"selectionchange\", view.input.hideSelectionGuard = () => {\n if (domSel.anchorNode != node || domSel.anchorOffset != offset) {\n doc.removeEventListener(\"selectionchange\", view.input.hideSelectionGuard);\n setTimeout(() => {\n if (!editorOwnsSelection(view) || view.state.selection.visible)\n view.dom.classList.remove(\"ProseMirror-hideselection\");\n }, 20);\n }\n });\n}\nfunction selectCursorWrapper(view) {\n let domSel = view.domSelection(), range = document.createRange();\n let node = view.cursorWrapper.dom, img = node.nodeName == \"IMG\";\n if (img)\n range.setEnd(node.parentNode, domIndex(node) + 1);\n else\n range.setEnd(node, 0);\n range.collapse(false);\n domSel.removeAllRanges();\n domSel.addRange(range);\n // Kludge to kill 'control selection' in IE11 when selecting an\n // invisible cursor wrapper, since that would result in those weird\n // resize handles and a selection that considers the absolutely\n // positioned wrapper, rather than the root editable node, the\n // focused element.\n if (!img && !view.state.selection.visible && ie && ie_version <= 11) {\n node.disabled = true;\n node.disabled = false;\n }\n}\nfunction syncNodeSelection(view, sel) {\n if (sel instanceof NodeSelection) {\n let desc = view.docView.descAt(sel.from);\n if (desc != view.lastSelectedViewDesc) {\n clearNodeSelection(view);\n if (desc)\n desc.selectNode();\n view.lastSelectedViewDesc = desc;\n }\n }\n else {\n clearNodeSelection(view);\n }\n}\n// Clear all DOM statefulness of the last node selection.\nfunction clearNodeSelection(view) {\n if (view.lastSelectedViewDesc) {\n if (view.lastSelectedViewDesc.parent)\n view.lastSelectedViewDesc.deselectNode();\n view.lastSelectedViewDesc = undefined;\n }\n}\nfunction selectionBetween(view, $anchor, $head, bias) {\n return view.someProp(\"createSelectionBetween\", f => f(view, $anchor, $head))\n || TextSelection.between($anchor, $head, bias);\n}\nfunction hasFocusAndSelection(view) {\n if (view.editable && !view.hasFocus())\n return false;\n return hasSelection(view);\n}\nfunction hasSelection(view) {\n let sel = view.domSelectionRange();\n if (!sel.anchorNode)\n return false;\n try {\n // Firefox will raise 'permission denied' errors when accessing\n // properties of `sel.anchorNode` when it's in a generated CSS\n // element.\n return view.dom.contains(sel.anchorNode.nodeType == 3 ? sel.anchorNode.parentNode : sel.anchorNode) &&\n (view.editable || view.dom.contains(sel.focusNode.nodeType == 3 ? sel.focusNode.parentNode : sel.focusNode));\n }\n catch (_) {\n return false;\n }\n}\nfunction anchorInRightPlace(view) {\n let anchorDOM = view.docView.domFromPos(view.state.selection.anchor, 0);\n let domSel = view.domSelectionRange();\n return isEquivalentPosition(anchorDOM.node, anchorDOM.offset, domSel.anchorNode, domSel.anchorOffset);\n}\n\nfunction moveSelectionBlock(state, dir) {\n let { $anchor, $head } = state.selection;\n let $side = dir > 0 ? $anchor.max($head) : $anchor.min($head);\n let $start = !$side.parent.inlineContent ? $side : $side.depth ? state.doc.resolve(dir > 0 ? $side.after() : $side.before()) : null;\n return $start && Selection.findFrom($start, dir);\n}\nfunction apply(view, sel) {\n view.dispatch(view.state.tr.setSelection(sel).scrollIntoView());\n return true;\n}\nfunction selectHorizontally(view, dir, mods) {\n let sel = view.state.selection;\n if (sel instanceof TextSelection) {\n if (mods.indexOf(\"s\") > -1) {\n let { $head } = sel, node = $head.textOffset ? null : dir < 0 ? $head.nodeBefore : $head.nodeAfter;\n if (!node || node.isText || !node.isLeaf)\n return false;\n let $newHead = view.state.doc.resolve($head.pos + node.nodeSize * (dir < 0 ? -1 : 1));\n return apply(view, new TextSelection(sel.$anchor, $newHead));\n }\n else if (!sel.empty) {\n return false;\n }\n else if (view.endOfTextblock(dir > 0 ? \"forward\" : \"backward\")) {\n let next = moveSelectionBlock(view.state, dir);\n if (next && (next instanceof NodeSelection))\n return apply(view, next);\n return false;\n }\n else if (!(mac && mods.indexOf(\"m\") > -1)) {\n let $head = sel.$head, node = $head.textOffset ? null : dir < 0 ? $head.nodeBefore : $head.nodeAfter, desc;\n if (!node || node.isText)\n return false;\n let nodePos = dir < 0 ? $head.pos - node.nodeSize : $head.pos;\n if (!(node.isAtom || (desc = view.docView.descAt(nodePos)) && !desc.contentDOM))\n return false;\n if (NodeSelection.isSelectable(node)) {\n return apply(view, new NodeSelection(dir < 0 ? view.state.doc.resolve($head.pos - node.nodeSize) : $head));\n }\n else if (webkit) {\n // Chrome and Safari will introduce extra pointless cursor\n // positions around inline uneditable nodes, so we have to\n // take over and move the cursor past them (#937)\n return apply(view, new TextSelection(view.state.doc.resolve(dir < 0 ? nodePos : nodePos + node.nodeSize)));\n }\n else {\n return false;\n }\n }\n }\n else if (sel instanceof NodeSelection && sel.node.isInline) {\n return apply(view, new TextSelection(dir > 0 ? sel.$to : sel.$from));\n }\n else {\n let next = moveSelectionBlock(view.state, dir);\n if (next)\n return apply(view, next);\n return false;\n }\n}\nfunction nodeLen(node) {\n return node.nodeType == 3 ? node.nodeValue.length : node.childNodes.length;\n}\nfunction isIgnorable(dom, dir) {\n let desc = dom.pmViewDesc;\n return desc && desc.size == 0 && (dir < 0 || dom.nextSibling || dom.nodeName != \"BR\");\n}\nfunction skipIgnoredNodes(view, dir) {\n return dir < 0 ? skipIgnoredNodesBefore(view) : skipIgnoredNodesAfter(view);\n}\n// Make sure the cursor isn't directly after one or more ignored\n// nodes, which will confuse the browser's cursor motion logic.\nfunction skipIgnoredNodesBefore(view) {\n let sel = view.domSelectionRange();\n let node = sel.focusNode, offset = sel.focusOffset;\n if (!node)\n return;\n let moveNode, moveOffset, force = false;\n // Gecko will do odd things when the selection is directly in front\n // of a non-editable node, so in that case, move it into the next\n // node if possible. Issue prosemirror/prosemirror#832.\n if (gecko && node.nodeType == 1 && offset < nodeLen(node) && isIgnorable(node.childNodes[offset], -1))\n force = true;\n for (;;) {\n if (offset > 0) {\n if (node.nodeType != 1) {\n break;\n }\n else {\n let before = node.childNodes[offset - 1];\n if (isIgnorable(before, -1)) {\n moveNode = node;\n moveOffset = --offset;\n }\n else if (before.nodeType == 3) {\n node = before;\n offset = node.nodeValue.length;\n }\n else\n break;\n }\n }\n else if (isBlockNode(node)) {\n break;\n }\n else {\n let prev = node.previousSibling;\n while (prev && isIgnorable(prev, -1)) {\n moveNode = node.parentNode;\n moveOffset = domIndex(prev);\n prev = prev.previousSibling;\n }\n if (!prev) {\n node = node.parentNode;\n if (node == view.dom)\n break;\n offset = 0;\n }\n else {\n node = prev;\n offset = nodeLen(node);\n }\n }\n }\n if (force)\n setSelFocus(view, node, offset);\n else if (moveNode)\n setSelFocus(view, moveNode, moveOffset);\n}\n// Make sure the cursor isn't directly before one or more ignored\n// nodes.\nfunction skipIgnoredNodesAfter(view) {\n let sel = view.domSelectionRange();\n let node = sel.focusNode, offset = sel.focusOffset;\n if (!node)\n return;\n let len = nodeLen(node);\n let moveNode, moveOffset;\n for (;;) {\n if (offset < len) {\n if (node.nodeType != 1)\n break;\n let after = node.childNodes[offset];\n if (isIgnorable(after, 1)) {\n moveNode = node;\n moveOffset = ++offset;\n }\n else\n break;\n }\n else if (isBlockNode(node)) {\n break;\n }\n else {\n let next = node.nextSibling;\n while (next && isIgnorable(next, 1)) {\n moveNode = next.parentNode;\n moveOffset = domIndex(next) + 1;\n next = next.nextSibling;\n }\n if (!next) {\n node = node.parentNode;\n if (node == view.dom)\n break;\n offset = len = 0;\n }\n else {\n node = next;\n offset = 0;\n len = nodeLen(node);\n }\n }\n }\n if (moveNode)\n setSelFocus(view, moveNode, moveOffset);\n}\nfunction isBlockNode(dom) {\n let desc = dom.pmViewDesc;\n return desc && desc.node && desc.node.isBlock;\n}\nfunction textNodeAfter(node, offset) {\n while (node && offset == node.childNodes.length && !hasBlockDesc(node)) {\n offset = domIndex(node) + 1;\n node = node.parentNode;\n }\n while (node && offset < node.childNodes.length) {\n let next = node.childNodes[offset];\n if (next.nodeType == 3)\n return next;\n if (next.nodeType == 1 && next.contentEditable == \"false\")\n break;\n node = next;\n offset = 0;\n }\n}\nfunction textNodeBefore(node, offset) {\n while (node && !offset && !hasBlockDesc(node)) {\n offset = domIndex(node);\n node = node.parentNode;\n }\n while (node && offset) {\n let next = node.childNodes[offset - 1];\n if (next.nodeType == 3)\n return next;\n if (next.nodeType == 1 && next.contentEditable == \"false\")\n break;\n node = next;\n offset = node.childNodes.length;\n }\n}\nfunction setSelFocus(view, node, offset) {\n if (node.nodeType != 3) {\n let before, after;\n if (after = textNodeAfter(node, offset)) {\n node = after;\n offset = 0;\n }\n else if (before = textNodeBefore(node, offset)) {\n node = before;\n offset = before.nodeValue.length;\n }\n }\n let sel = view.domSelection();\n if (selectionCollapsed(sel)) {\n let range = document.createRange();\n range.setEnd(node, offset);\n range.setStart(node, offset);\n sel.removeAllRanges();\n sel.addRange(range);\n }\n else if (sel.extend) {\n sel.extend(node, offset);\n }\n view.domObserver.setCurSelection();\n let { state } = view;\n // If no state update ends up happening, reset the selection.\n setTimeout(() => {\n if (view.state == state)\n selectionToDOM(view);\n }, 50);\n}\nfunction findDirection(view, pos) {\n let $pos = view.state.doc.resolve(pos);\n if (!(chrome || windows) && $pos.parent.inlineContent) {\n let coords = view.coordsAtPos(pos);\n if (pos > $pos.start()) {\n let before = view.coordsAtPos(pos - 1);\n let mid = (before.top + before.bottom) / 2;\n if (mid > coords.top && mid < coords.bottom && Math.abs(before.left - coords.left) > 1)\n return before.left < coords.left ? \"ltr\" : \"rtl\";\n }\n if (pos < $pos.end()) {\n let after = view.coordsAtPos(pos + 1);\n let mid = (after.top + after.bottom) / 2;\n if (mid > coords.top && mid < coords.bottom && Math.abs(after.left - coords.left) > 1)\n return after.left > coords.left ? \"ltr\" : \"rtl\";\n }\n }\n let computed = getComputedStyle(view.dom).direction;\n return computed == \"rtl\" ? \"rtl\" : \"ltr\";\n}\n// Check whether vertical selection motion would involve node\n// selections. If so, apply it (if not, the result is left to the\n// browser)\nfunction selectVertically(view, dir, mods) {\n let sel = view.state.selection;\n if (sel instanceof TextSelection && !sel.empty || mods.indexOf(\"s\") > -1)\n return false;\n if (mac && mods.indexOf(\"m\") > -1)\n return false;\n let { $from, $to } = sel;\n if (!$from.parent.inlineContent || view.endOfTextblock(dir < 0 ? \"up\" : \"down\")) {\n let next = moveSelectionBlock(view.state, dir);\n if (next && (next instanceof NodeSelection))\n return apply(view, next);\n }\n if (!$from.parent.inlineContent) {\n let side = dir < 0 ? $from : $to;\n let beyond = sel instanceof AllSelection ? Selection.near(side, dir) : Selection.findFrom(side, dir);\n return beyond ? apply(view, beyond) : false;\n }\n return false;\n}\nfunction stopNativeHorizontalDelete(view, dir) {\n if (!(view.state.selection instanceof TextSelection))\n return true;\n let { $head, $anchor, empty } = view.state.selection;\n if (!$head.sameParent($anchor))\n return true;\n if (!empty)\n return false;\n if (view.endOfTextblock(dir > 0 ? \"forward\" : \"backward\"))\n return true;\n let nextNode = !$head.textOffset && (dir < 0 ? $head.nodeBefore : $head.nodeAfter);\n if (nextNode && !nextNode.isText) {\n let tr = view.state.tr;\n if (dir < 0)\n tr.delete($head.pos - nextNode.nodeSize, $head.pos);\n else\n tr.delete($head.pos, $head.pos + nextNode.nodeSize);\n view.dispatch(tr);\n return true;\n }\n return false;\n}\nfunction switchEditable(view, node, state) {\n view.domObserver.stop();\n node.contentEditable = state;\n view.domObserver.start();\n}\n// Issue #867 / #1090 / https://bugs.chromium.org/p/chromium/issues/detail?id=903821\n// In which Safari (and at some point in the past, Chrome) does really\n// wrong things when the down arrow is pressed when the cursor is\n// directly at the start of a textblock and has an uneditable node\n// after it\nfunction safariDownArrowBug(view) {\n if (!safari || view.state.selection.$head.parentOffset > 0)\n return false;\n let { focusNode, focusOffset } = view.domSelectionRange();\n if (focusNode && focusNode.nodeType == 1 && focusOffset == 0 &&\n focusNode.firstChild && focusNode.firstChild.contentEditable == \"false\") {\n let child = focusNode.firstChild;\n switchEditable(view, child, \"true\");\n setTimeout(() => switchEditable(view, child, \"false\"), 20);\n }\n return false;\n}\n// A backdrop key mapping used to make sure we always suppress keys\n// that have a dangerous default effect, even if the commands they are\n// bound to return false, and to make sure that cursor-motion keys\n// find a cursor (as opposed to a node selection) when pressed. For\n// cursor-motion keys, the code in the handlers also takes care of\n// block selections.\nfunction getMods(event) {\n let result = \"\";\n if (event.ctrlKey)\n result += \"c\";\n if (event.metaKey)\n result += \"m\";\n if (event.altKey)\n result += \"a\";\n if (event.shiftKey)\n result += \"s\";\n return result;\n}\nfunction captureKeyDown(view, event) {\n let code = event.keyCode, mods = getMods(event);\n if (code == 8 || (mac && code == 72 && mods == \"c\")) { // Backspace, Ctrl-h on Mac\n return stopNativeHorizontalDelete(view, -1) || skipIgnoredNodes(view, -1);\n }\n else if ((code == 46 && !event.shiftKey) || (mac && code == 68 && mods == \"c\")) { // Delete, Ctrl-d on Mac\n return stopNativeHorizontalDelete(view, 1) || skipIgnoredNodes(view, 1);\n }\n else if (code == 13 || code == 27) { // Enter, Esc\n return true;\n }\n else if (code == 37 || (mac && code == 66 && mods == \"c\")) { // Left arrow, Ctrl-b on Mac\n let dir = code == 37 ? (findDirection(view, view.state.selection.from) == \"ltr\" ? -1 : 1) : -1;\n return selectHorizontally(view, dir, mods) || skipIgnoredNodes(view, dir);\n }\n else if (code == 39 || (mac && code == 70 && mods == \"c\")) { // Right arrow, Ctrl-f on Mac\n let dir = code == 39 ? (findDirection(view, view.state.selection.from) == \"ltr\" ? 1 : -1) : 1;\n return selectHorizontally(view, dir, mods) || skipIgnoredNodes(view, dir);\n }\n else if (code == 38 || (mac && code == 80 && mods == \"c\")) { // Up arrow, Ctrl-p on Mac\n return selectVertically(view, -1, mods) || skipIgnoredNodes(view, -1);\n }\n else if (code == 40 || (mac && code == 78 && mods == \"c\")) { // Down arrow, Ctrl-n on Mac\n return safariDownArrowBug(view) || selectVertically(view, 1, mods) || skipIgnoredNodes(view, 1);\n }\n else if (mods == (mac ? \"m\" : \"c\") &&\n (code == 66 || code == 73 || code == 89 || code == 90)) { // Mod-[biyz]\n return true;\n }\n return false;\n}\n\nfunction serializeForClipboard(view, slice) {\n view.someProp(\"transformCopied\", f => { slice = f(slice, view); });\n let context = [], { content, openStart, openEnd } = slice;\n while (openStart > 1 && openEnd > 1 && content.childCount == 1 && content.firstChild.childCount == 1) {\n openStart--;\n openEnd--;\n let node = content.firstChild;\n context.push(node.type.name, node.attrs != node.type.defaultAttrs ? node.attrs : null);\n content = node.content;\n }\n let serializer = view.someProp(\"clipboardSerializer\") || DOMSerializer.fromSchema(view.state.schema);\n let doc = detachedDoc(), wrap = doc.createElement(\"div\");\n wrap.appendChild(serializer.serializeFragment(content, { document: doc }));\n let firstChild = wrap.firstChild, needsWrap, wrappers = 0;\n while (firstChild && firstChild.nodeType == 1 && (needsWrap = wrapMap[firstChild.nodeName.toLowerCase()])) {\n for (let i = needsWrap.length - 1; i >= 0; i--) {\n let wrapper = doc.createElement(needsWrap[i]);\n while (wrap.firstChild)\n wrapper.appendChild(wrap.firstChild);\n wrap.appendChild(wrapper);\n wrappers++;\n }\n firstChild = wrap.firstChild;\n }\n if (firstChild && firstChild.nodeType == 1)\n firstChild.setAttribute(\"data-pm-slice\", `${openStart} ${openEnd}${wrappers ? ` -${wrappers}` : \"\"} ${JSON.stringify(context)}`);\n let text = view.someProp(\"clipboardTextSerializer\", f => f(slice, view)) ||\n slice.content.textBetween(0, slice.content.size, \"\\n\\n\");\n return { dom: wrap, text, slice };\n}\n// Read a slice of content from the clipboard (or drop data).\nfunction parseFromClipboard(view, text, html, plainText, $context) {\n let inCode = $context.parent.type.spec.code;\n let dom, slice;\n if (!html && !text)\n return null;\n let asText = text && (plainText || inCode || !html);\n if (asText) {\n view.someProp(\"transformPastedText\", f => { text = f(text, inCode || plainText, view); });\n if (inCode)\n return text ? new Slice(Fragment.from(view.state.schema.text(text.replace(/\\r\\n?/g, \"\\n\"))), 0, 0) : Slice.empty;\n let parsed = view.someProp(\"clipboardTextParser\", f => f(text, $context, plainText, view));\n if (parsed) {\n slice = parsed;\n }\n else {\n let marks = $context.marks();\n let { schema } = view.state, serializer = DOMSerializer.fromSchema(schema);\n dom = document.createElement(\"div\");\n text.split(/(?:\\r\\n?|\\n)+/).forEach(block => {\n let p = dom.appendChild(document.createElement(\"p\"));\n if (block)\n p.appendChild(serializer.serializeNode(schema.text(block, marks)));\n });\n }\n }\n else {\n view.someProp(\"transformPastedHTML\", f => { html = f(html, view); });\n dom = readHTML(html);\n if (webkit)\n restoreReplacedSpaces(dom);\n }\n let contextNode = dom && dom.querySelector(\"[data-pm-slice]\");\n let sliceData = contextNode && /^(\\d+) (\\d+)(?: -(\\d+))? (.*)/.exec(contextNode.getAttribute(\"data-pm-slice\") || \"\");\n if (sliceData && sliceData[3])\n for (let i = +sliceData[3]; i > 0; i--) {\n let child = dom.firstChild;\n while (child && child.nodeType != 1)\n child = child.nextSibling;\n if (!child)\n break;\n dom = child;\n }\n if (!slice) {\n let parser = view.someProp(\"clipboardParser\") || view.someProp(\"domParser\") || DOMParser.fromSchema(view.state.schema);\n slice = parser.parseSlice(dom, {\n preserveWhitespace: !!(asText || sliceData),\n context: $context,\n ruleFromNode(dom) {\n if (dom.nodeName == \"BR\" && !dom.nextSibling &&\n dom.parentNode && !inlineParents.test(dom.parentNode.nodeName))\n return { ignore: true };\n return null;\n }\n });\n }\n if (sliceData) {\n slice = addContext(closeSlice(slice, +sliceData[1], +sliceData[2]), sliceData[4]);\n }\n else { // HTML wasn't created by ProseMirror. Make sure top-level siblings are coherent\n slice = Slice.maxOpen(normalizeSiblings(slice.content, $context), true);\n if (slice.openStart || slice.openEnd) {\n let openStart = 0, openEnd = 0;\n for (let node = slice.content.firstChild; openStart < slice.openStart && !node.type.spec.isolating; openStart++, node = node.firstChild) { }\n for (let node = slice.content.lastChild; openEnd < slice.openEnd && !node.type.spec.isolating; openEnd++, node = node.lastChild) { }\n slice = closeSlice(slice, openStart, openEnd);\n }\n }\n view.someProp(\"transformPasted\", f => { slice = f(slice, view); });\n return slice;\n}\nconst inlineParents = /^(a|abbr|acronym|b|cite|code|del|em|i|ins|kbd|label|output|q|ruby|s|samp|span|strong|sub|sup|time|u|tt|var)$/i;\n// Takes a slice parsed with parseSlice, which means there hasn't been\n// any content-expression checking done on the top nodes, tries to\n// find a parent node in the current context that might fit the nodes,\n// and if successful, rebuilds the slice so that it fits into that parent.\n//\n// This addresses the problem that Transform.replace expects a\n// coherent slice, and will fail to place a set of siblings that don't\n// fit anywhere in the schema.\nfunction normalizeSiblings(fragment, $context) {\n if (fragment.childCount < 2)\n return fragment;\n for (let d = $context.depth; d >= 0; d--) {\n let parent = $context.node(d);\n let match = parent.contentMatchAt($context.index(d));\n let lastWrap, result = [];\n fragment.forEach(node => {\n if (!result)\n return;\n let wrap = match.findWrapping(node.type), inLast;\n if (!wrap)\n return result = null;\n if (inLast = result.length && lastWrap.length && addToSibling(wrap, lastWrap, node, result[result.length - 1], 0)) {\n result[result.length - 1] = inLast;\n }\n else {\n if (result.length)\n result[result.length - 1] = closeRight(result[result.length - 1], lastWrap.length);\n let wrapped = withWrappers(node, wrap);\n result.push(wrapped);\n match = match.matchType(wrapped.type);\n lastWrap = wrap;\n }\n });\n if (result)\n return Fragment.from(result);\n }\n return fragment;\n}\nfunction withWrappers(node, wrap, from = 0) {\n for (let i = wrap.length - 1; i >= from; i--)\n node = wrap[i].create(null, Fragment.from(node));\n return node;\n}\n// Used to group adjacent nodes wrapped in similar parents by\n// normalizeSiblings into the same parent node\nfunction addToSibling(wrap, lastWrap, node, sibling, depth) {\n if (depth < wrap.length && depth < lastWrap.length && wrap[depth] == lastWrap[depth]) {\n let inner = addToSibling(wrap, lastWrap, node, sibling.lastChild, depth + 1);\n if (inner)\n return sibling.copy(sibling.content.replaceChild(sibling.childCount - 1, inner));\n let match = sibling.contentMatchAt(sibling.childCount);\n if (match.matchType(depth == wrap.length - 1 ? node.type : wrap[depth + 1]))\n return sibling.copy(sibling.content.append(Fragment.from(withWrappers(node, wrap, depth + 1))));\n }\n}\nfunction closeRight(node, depth) {\n if (depth == 0)\n return node;\n let fragment = node.content.replaceChild(node.childCount - 1, closeRight(node.lastChild, depth - 1));\n let fill = node.contentMatchAt(node.childCount).fillBefore(Fragment.empty, true);\n return node.copy(fragment.append(fill));\n}\nfunction closeRange(fragment, side, from, to, depth, openEnd) {\n let node = side < 0 ? fragment.firstChild : fragment.lastChild, inner = node.content;\n if (fragment.childCount > 1)\n openEnd = 0;\n if (depth < to - 1)\n inner = closeRange(inner, side, from, to, depth + 1, openEnd);\n if (depth >= from)\n inner = side < 0 ? node.contentMatchAt(0).fillBefore(inner, openEnd <= depth).append(inner)\n : inner.append(node.contentMatchAt(node.childCount).fillBefore(Fragment.empty, true));\n return fragment.replaceChild(side < 0 ? 0 : fragment.childCount - 1, node.copy(inner));\n}\nfunction closeSlice(slice, openStart, openEnd) {\n if (openStart < slice.openStart)\n slice = new Slice(closeRange(slice.content, -1, openStart, slice.openStart, 0, slice.openEnd), openStart, slice.openEnd);\n if (openEnd < slice.openEnd)\n slice = new Slice(closeRange(slice.content, 1, openEnd, slice.openEnd, 0, 0), slice.openStart, openEnd);\n return slice;\n}\n// Trick from jQuery -- some elements must be wrapped in other\n// elements for innerHTML to work. I.e. if you do `div.innerHTML =\n// \"..\"` the table cells are ignored.\nconst wrapMap = {\n thead: [\"table\"],\n tbody: [\"table\"],\n tfoot: [\"table\"],\n caption: [\"table\"],\n colgroup: [\"table\"],\n col: [\"table\", \"colgroup\"],\n tr: [\"table\", \"tbody\"],\n td: [\"table\", \"tbody\", \"tr\"],\n th: [\"table\", \"tbody\", \"tr\"]\n};\nlet _detachedDoc = null;\nfunction detachedDoc() {\n return _detachedDoc || (_detachedDoc = document.implementation.createHTMLDocument(\"title\"));\n}\nfunction readHTML(html) {\n let metas = /^(\\s*]*>)*/.exec(html);\n if (metas)\n html = html.slice(metas[0].length);\n let elt = detachedDoc().createElement(\"div\");\n let firstTag = /<([a-z][^>\\s]+)/i.exec(html), wrap;\n if (wrap = firstTag && wrapMap[firstTag[1].toLowerCase()])\n html = wrap.map(n => \"<\" + n + \">\").join(\"\") + html + wrap.map(n => \"\").reverse().join(\"\");\n elt.innerHTML = html;\n if (wrap)\n for (let i = 0; i < wrap.length; i++)\n elt = elt.querySelector(wrap[i]) || elt;\n return elt;\n}\n// Webkit browsers do some hard-to-predict replacement of regular\n// spaces with non-breaking spaces when putting content on the\n// clipboard. This tries to convert such non-breaking spaces (which\n// will be wrapped in a plain span on Chrome, a span with class\n// Apple-converted-space on Safari) back to regular spaces.\nfunction restoreReplacedSpaces(dom) {\n let nodes = dom.querySelectorAll(chrome ? \"span:not([class]):not([style])\" : \"span.Apple-converted-space\");\n for (let i = 0; i < nodes.length; i++) {\n let node = nodes[i];\n if (node.childNodes.length == 1 && node.textContent == \"\\u00a0\" && node.parentNode)\n node.parentNode.replaceChild(dom.ownerDocument.createTextNode(\" \"), node);\n }\n}\nfunction addContext(slice, context) {\n if (!slice.size)\n return slice;\n let schema = slice.content.firstChild.type.schema, array;\n try {\n array = JSON.parse(context);\n }\n catch (e) {\n return slice;\n }\n let { content, openStart, openEnd } = slice;\n for (let i = array.length - 2; i >= 0; i -= 2) {\n let type = schema.nodes[array[i]];\n if (!type || type.hasRequiredAttrs())\n break;\n content = Fragment.from(type.create(array[i + 1], content));\n openStart++;\n openEnd++;\n }\n return new Slice(content, openStart, openEnd);\n}\n\n// A collection of DOM events that occur within the editor, and callback functions\n// to invoke when the event fires.\nconst handlers = {};\nconst editHandlers = {};\nconst passiveHandlers = { touchstart: true, touchmove: true };\nclass InputState {\n constructor() {\n this.shiftKey = false;\n this.mouseDown = null;\n this.lastKeyCode = null;\n this.lastKeyCodeTime = 0;\n this.lastClick = { time: 0, x: 0, y: 0, type: \"\" };\n this.lastSelectionOrigin = null;\n this.lastSelectionTime = 0;\n this.lastIOSEnter = 0;\n this.lastIOSEnterFallbackTimeout = -1;\n this.lastFocus = 0;\n this.lastTouch = 0;\n this.lastAndroidDelete = 0;\n this.composing = false;\n this.compositionNode = null;\n this.composingTimeout = -1;\n this.compositionNodes = [];\n this.compositionEndedAt = -2e8;\n this.compositionID = 1;\n // Set to a composition ID when there are pending changes at compositionend\n this.compositionPendingChanges = 0;\n this.domChangeCount = 0;\n this.eventHandlers = Object.create(null);\n this.hideSelectionGuard = null;\n }\n}\nfunction initInput(view) {\n for (let event in handlers) {\n let handler = handlers[event];\n view.dom.addEventListener(event, view.input.eventHandlers[event] = (event) => {\n if (eventBelongsToView(view, event) && !runCustomHandler(view, event) &&\n (view.editable || !(event.type in editHandlers)))\n handler(view, event);\n }, passiveHandlers[event] ? { passive: true } : undefined);\n }\n // On Safari, for reasons beyond my understanding, adding an input\n // event handler makes an issue where the composition vanishes when\n // you press enter go away.\n if (safari)\n view.dom.addEventListener(\"input\", () => null);\n ensureListeners(view);\n}\nfunction setSelectionOrigin(view, origin) {\n view.input.lastSelectionOrigin = origin;\n view.input.lastSelectionTime = Date.now();\n}\nfunction destroyInput(view) {\n view.domObserver.stop();\n for (let type in view.input.eventHandlers)\n view.dom.removeEventListener(type, view.input.eventHandlers[type]);\n clearTimeout(view.input.composingTimeout);\n clearTimeout(view.input.lastIOSEnterFallbackTimeout);\n}\nfunction ensureListeners(view) {\n view.someProp(\"handleDOMEvents\", currentHandlers => {\n for (let type in currentHandlers)\n if (!view.input.eventHandlers[type])\n view.dom.addEventListener(type, view.input.eventHandlers[type] = event => runCustomHandler(view, event));\n });\n}\nfunction runCustomHandler(view, event) {\n return view.someProp(\"handleDOMEvents\", handlers => {\n let handler = handlers[event.type];\n return handler ? handler(view, event) || event.defaultPrevented : false;\n });\n}\nfunction eventBelongsToView(view, event) {\n if (!event.bubbles)\n return true;\n if (event.defaultPrevented)\n return false;\n for (let node = event.target; node != view.dom; node = node.parentNode)\n if (!node || node.nodeType == 11 ||\n (node.pmViewDesc && node.pmViewDesc.stopEvent(event)))\n return false;\n return true;\n}\nfunction dispatchEvent(view, event) {\n if (!runCustomHandler(view, event) && handlers[event.type] &&\n (view.editable || !(event.type in editHandlers)))\n handlers[event.type](view, event);\n}\neditHandlers.keydown = (view, _event) => {\n let event = _event;\n view.input.shiftKey = event.keyCode == 16 || event.shiftKey;\n if (inOrNearComposition(view, event))\n return;\n view.input.lastKeyCode = event.keyCode;\n view.input.lastKeyCodeTime = Date.now();\n // Suppress enter key events on Chrome Android, because those tend\n // to be part of a confused sequence of composition events fired,\n // and handling them eagerly tends to corrupt the input.\n if (android && chrome && event.keyCode == 13)\n return;\n if (event.keyCode != 229)\n view.domObserver.forceFlush();\n // On iOS, if we preventDefault enter key presses, the virtual\n // keyboard gets confused. So the hack here is to set a flag that\n // makes the DOM change code recognize that what just happens should\n // be replaced by whatever the Enter key handlers do.\n if (ios && event.keyCode == 13 && !event.ctrlKey && !event.altKey && !event.metaKey) {\n let now = Date.now();\n view.input.lastIOSEnter = now;\n view.input.lastIOSEnterFallbackTimeout = setTimeout(() => {\n if (view.input.lastIOSEnter == now) {\n view.someProp(\"handleKeyDown\", f => f(view, keyEvent(13, \"Enter\")));\n view.input.lastIOSEnter = 0;\n }\n }, 200);\n }\n else if (view.someProp(\"handleKeyDown\", f => f(view, event)) || captureKeyDown(view, event)) {\n event.preventDefault();\n }\n else {\n setSelectionOrigin(view, \"key\");\n }\n};\neditHandlers.keyup = (view, event) => {\n if (event.keyCode == 16)\n view.input.shiftKey = false;\n};\neditHandlers.keypress = (view, _event) => {\n let event = _event;\n if (inOrNearComposition(view, event) || !event.charCode ||\n event.ctrlKey && !event.altKey || mac && event.metaKey)\n return;\n if (view.someProp(\"handleKeyPress\", f => f(view, event))) {\n event.preventDefault();\n return;\n }\n let sel = view.state.selection;\n if (!(sel instanceof TextSelection) || !sel.$from.sameParent(sel.$to)) {\n let text = String.fromCharCode(event.charCode);\n if (!/[\\r\\n]/.test(text) && !view.someProp(\"handleTextInput\", f => f(view, sel.$from.pos, sel.$to.pos, text)))\n view.dispatch(view.state.tr.insertText(text).scrollIntoView());\n event.preventDefault();\n }\n};\nfunction eventCoords(event) { return { left: event.clientX, top: event.clientY }; }\nfunction isNear(event, click) {\n let dx = click.x - event.clientX, dy = click.y - event.clientY;\n return dx * dx + dy * dy < 100;\n}\nfunction runHandlerOnContext(view, propName, pos, inside, event) {\n if (inside == -1)\n return false;\n let $pos = view.state.doc.resolve(inside);\n for (let i = $pos.depth + 1; i > 0; i--) {\n if (view.someProp(propName, f => i > $pos.depth ? f(view, pos, $pos.nodeAfter, $pos.before(i), event, true)\n : f(view, pos, $pos.node(i), $pos.before(i), event, false)))\n return true;\n }\n return false;\n}\nfunction updateSelection(view, selection, origin) {\n if (!view.focused)\n view.focus();\n let tr = view.state.tr.setSelection(selection);\n if (origin == \"pointer\")\n tr.setMeta(\"pointer\", true);\n view.dispatch(tr);\n}\nfunction selectClickedLeaf(view, inside) {\n if (inside == -1)\n return false;\n let $pos = view.state.doc.resolve(inside), node = $pos.nodeAfter;\n if (node && node.isAtom && NodeSelection.isSelectable(node)) {\n updateSelection(view, new NodeSelection($pos), \"pointer\");\n return true;\n }\n return false;\n}\nfunction selectClickedNode(view, inside) {\n if (inside == -1)\n return false;\n let sel = view.state.selection, selectedNode, selectAt;\n if (sel instanceof NodeSelection)\n selectedNode = sel.node;\n let $pos = view.state.doc.resolve(inside);\n for (let i = $pos.depth + 1; i > 0; i--) {\n let node = i > $pos.depth ? $pos.nodeAfter : $pos.node(i);\n if (NodeSelection.isSelectable(node)) {\n if (selectedNode && sel.$from.depth > 0 &&\n i >= sel.$from.depth && $pos.before(sel.$from.depth + 1) == sel.$from.pos)\n selectAt = $pos.before(sel.$from.depth);\n else\n selectAt = $pos.before(i);\n break;\n }\n }\n if (selectAt != null) {\n updateSelection(view, NodeSelection.create(view.state.doc, selectAt), \"pointer\");\n return true;\n }\n else {\n return false;\n }\n}\nfunction handleSingleClick(view, pos, inside, event, selectNode) {\n return runHandlerOnContext(view, \"handleClickOn\", pos, inside, event) ||\n view.someProp(\"handleClick\", f => f(view, pos, event)) ||\n (selectNode ? selectClickedNode(view, inside) : selectClickedLeaf(view, inside));\n}\nfunction handleDoubleClick(view, pos, inside, event) {\n return runHandlerOnContext(view, \"handleDoubleClickOn\", pos, inside, event) ||\n view.someProp(\"handleDoubleClick\", f => f(view, pos, event));\n}\nfunction handleTripleClick(view, pos, inside, event) {\n return runHandlerOnContext(view, \"handleTripleClickOn\", pos, inside, event) ||\n view.someProp(\"handleTripleClick\", f => f(view, pos, event)) ||\n defaultTripleClick(view, inside, event);\n}\nfunction defaultTripleClick(view, inside, event) {\n if (event.button != 0)\n return false;\n let doc = view.state.doc;\n if (inside == -1) {\n if (doc.inlineContent) {\n updateSelection(view, TextSelection.create(doc, 0, doc.content.size), \"pointer\");\n return true;\n }\n return false;\n }\n let $pos = doc.resolve(inside);\n for (let i = $pos.depth + 1; i > 0; i--) {\n let node = i > $pos.depth ? $pos.nodeAfter : $pos.node(i);\n let nodePos = $pos.before(i);\n if (node.inlineContent)\n updateSelection(view, TextSelection.create(doc, nodePos + 1, nodePos + 1 + node.content.size), \"pointer\");\n else if (NodeSelection.isSelectable(node))\n updateSelection(view, NodeSelection.create(doc, nodePos), \"pointer\");\n else\n continue;\n return true;\n }\n}\nfunction forceDOMFlush(view) {\n return endComposition(view);\n}\nconst selectNodeModifier = mac ? \"metaKey\" : \"ctrlKey\";\nhandlers.mousedown = (view, _event) => {\n let event = _event;\n view.input.shiftKey = event.shiftKey;\n let flushed = forceDOMFlush(view);\n let now = Date.now(), type = \"singleClick\";\n if (now - view.input.lastClick.time < 500 && isNear(event, view.input.lastClick) && !event[selectNodeModifier]) {\n if (view.input.lastClick.type == \"singleClick\")\n type = \"doubleClick\";\n else if (view.input.lastClick.type == \"doubleClick\")\n type = \"tripleClick\";\n }\n view.input.lastClick = { time: now, x: event.clientX, y: event.clientY, type };\n let pos = view.posAtCoords(eventCoords(event));\n if (!pos)\n return;\n if (type == \"singleClick\") {\n if (view.input.mouseDown)\n view.input.mouseDown.done();\n view.input.mouseDown = new MouseDown(view, pos, event, !!flushed);\n }\n else if ((type == \"doubleClick\" ? handleDoubleClick : handleTripleClick)(view, pos.pos, pos.inside, event)) {\n event.preventDefault();\n }\n else {\n setSelectionOrigin(view, \"pointer\");\n }\n};\nclass MouseDown {\n constructor(view, pos, event, flushed) {\n this.view = view;\n this.pos = pos;\n this.event = event;\n this.flushed = flushed;\n this.delayedSelectionSync = false;\n this.mightDrag = null;\n this.startDoc = view.state.doc;\n this.selectNode = !!event[selectNodeModifier];\n this.allowDefault = event.shiftKey;\n let targetNode, targetPos;\n if (pos.inside > -1) {\n targetNode = view.state.doc.nodeAt(pos.inside);\n targetPos = pos.inside;\n }\n else {\n let $pos = view.state.doc.resolve(pos.pos);\n targetNode = $pos.parent;\n targetPos = $pos.depth ? $pos.before() : 0;\n }\n const target = flushed ? null : event.target;\n const targetDesc = target ? view.docView.nearestDesc(target, true) : null;\n this.target = targetDesc && targetDesc.dom.nodeType == 1 ? targetDesc.dom : null;\n let { selection } = view.state;\n if (event.button == 0 &&\n targetNode.type.spec.draggable && targetNode.type.spec.selectable !== false ||\n selection instanceof NodeSelection && selection.from <= targetPos && selection.to > targetPos)\n this.mightDrag = {\n node: targetNode,\n pos: targetPos,\n addAttr: !!(this.target && !this.target.draggable),\n setUneditable: !!(this.target && gecko && !this.target.hasAttribute(\"contentEditable\"))\n };\n if (this.target && this.mightDrag && (this.mightDrag.addAttr || this.mightDrag.setUneditable)) {\n this.view.domObserver.stop();\n if (this.mightDrag.addAttr)\n this.target.draggable = true;\n if (this.mightDrag.setUneditable)\n setTimeout(() => {\n if (this.view.input.mouseDown == this)\n this.target.setAttribute(\"contentEditable\", \"false\");\n }, 20);\n this.view.domObserver.start();\n }\n view.root.addEventListener(\"mouseup\", this.up = this.up.bind(this));\n view.root.addEventListener(\"mousemove\", this.move = this.move.bind(this));\n setSelectionOrigin(view, \"pointer\");\n }\n done() {\n this.view.root.removeEventListener(\"mouseup\", this.up);\n this.view.root.removeEventListener(\"mousemove\", this.move);\n if (this.mightDrag && this.target) {\n this.view.domObserver.stop();\n if (this.mightDrag.addAttr)\n this.target.removeAttribute(\"draggable\");\n if (this.mightDrag.setUneditable)\n this.target.removeAttribute(\"contentEditable\");\n this.view.domObserver.start();\n }\n if (this.delayedSelectionSync)\n setTimeout(() => selectionToDOM(this.view));\n this.view.input.mouseDown = null;\n }\n up(event) {\n this.done();\n if (!this.view.dom.contains(event.target))\n return;\n let pos = this.pos;\n if (this.view.state.doc != this.startDoc)\n pos = this.view.posAtCoords(eventCoords(event));\n this.updateAllowDefault(event);\n if (this.allowDefault || !pos) {\n setSelectionOrigin(this.view, \"pointer\");\n }\n else if (handleSingleClick(this.view, pos.pos, pos.inside, event, this.selectNode)) {\n event.preventDefault();\n }\n else if (event.button == 0 &&\n (this.flushed ||\n // Safari ignores clicks on draggable elements\n (safari && this.mightDrag && !this.mightDrag.node.isAtom) ||\n // Chrome will sometimes treat a node selection as a\n // cursor, but still report that the node is selected\n // when asked through getSelection. You'll then get a\n // situation where clicking at the point where that\n // (hidden) cursor is doesn't change the selection, and\n // thus doesn't get a reaction from ProseMirror. This\n // works around that.\n (chrome && !this.view.state.selection.visible &&\n Math.min(Math.abs(pos.pos - this.view.state.selection.from), Math.abs(pos.pos - this.view.state.selection.to)) <= 2))) {\n updateSelection(this.view, Selection.near(this.view.state.doc.resolve(pos.pos)), \"pointer\");\n event.preventDefault();\n }\n else {\n setSelectionOrigin(this.view, \"pointer\");\n }\n }\n move(event) {\n this.updateAllowDefault(event);\n setSelectionOrigin(this.view, \"pointer\");\n if (event.buttons == 0)\n this.done();\n }\n updateAllowDefault(event) {\n if (!this.allowDefault && (Math.abs(this.event.x - event.clientX) > 4 ||\n Math.abs(this.event.y - event.clientY) > 4))\n this.allowDefault = true;\n }\n}\nhandlers.touchstart = view => {\n view.input.lastTouch = Date.now();\n forceDOMFlush(view);\n setSelectionOrigin(view, \"pointer\");\n};\nhandlers.touchmove = view => {\n view.input.lastTouch = Date.now();\n setSelectionOrigin(view, \"pointer\");\n};\nhandlers.contextmenu = view => forceDOMFlush(view);\nfunction inOrNearComposition(view, event) {\n if (view.composing)\n return true;\n // See https://www.stum.de/2016/06/24/handling-ime-events-in-javascript/.\n // On Japanese input method editors (IMEs), the Enter key is used to confirm character\n // selection. On Safari, when Enter is pressed, compositionend and keydown events are\n // emitted. The keydown event triggers newline insertion, which we don't want.\n // This method returns true if the keydown event should be ignored.\n // We only ignore it once, as pressing Enter a second time *should* insert a newline.\n // Furthermore, the keydown event timestamp must be close to the compositionEndedAt timestamp.\n // This guards against the case where compositionend is triggered without the keyboard\n // (e.g. character confirmation may be done with the mouse), and keydown is triggered\n // afterwards- we wouldn't want to ignore the keydown event in this case.\n if (safari && Math.abs(event.timeStamp - view.input.compositionEndedAt) < 500) {\n view.input.compositionEndedAt = -2e8;\n return true;\n }\n return false;\n}\n// Drop active composition after 5 seconds of inactivity on Android\nconst timeoutComposition = android ? 5000 : -1;\neditHandlers.compositionstart = editHandlers.compositionupdate = view => {\n if (!view.composing) {\n view.domObserver.flush();\n let { state } = view, $pos = state.selection.$from;\n if (state.selection.empty &&\n (state.storedMarks ||\n (!$pos.textOffset && $pos.parentOffset && $pos.nodeBefore.marks.some(m => m.type.spec.inclusive === false)))) {\n // Need to wrap the cursor in mark nodes different from the ones in the DOM context\n view.markCursor = view.state.storedMarks || $pos.marks();\n endComposition(view, true);\n view.markCursor = null;\n }\n else {\n endComposition(view);\n // In firefox, if the cursor is after but outside a marked node,\n // the inserted text won't inherit the marks. So this moves it\n // inside if necessary.\n if (gecko && state.selection.empty && $pos.parentOffset && !$pos.textOffset && $pos.nodeBefore.marks.length) {\n let sel = view.domSelectionRange();\n for (let node = sel.focusNode, offset = sel.focusOffset; node && node.nodeType == 1 && offset != 0;) {\n let before = offset < 0 ? node.lastChild : node.childNodes[offset - 1];\n if (!before)\n break;\n if (before.nodeType == 3) {\n view.domSelection().collapse(before, before.nodeValue.length);\n break;\n }\n else {\n node = before;\n offset = -1;\n }\n }\n }\n }\n view.input.composing = true;\n }\n scheduleComposeEnd(view, timeoutComposition);\n};\neditHandlers.compositionend = (view, event) => {\n if (view.composing) {\n view.input.composing = false;\n view.input.compositionEndedAt = event.timeStamp;\n view.input.compositionPendingChanges = view.domObserver.pendingRecords().length ? view.input.compositionID : 0;\n view.input.compositionNode = null;\n if (view.input.compositionPendingChanges)\n Promise.resolve().then(() => view.domObserver.flush());\n view.input.compositionID++;\n scheduleComposeEnd(view, 20);\n }\n};\nfunction scheduleComposeEnd(view, delay) {\n clearTimeout(view.input.composingTimeout);\n if (delay > -1)\n view.input.composingTimeout = setTimeout(() => endComposition(view), delay);\n}\nfunction clearComposition(view) {\n if (view.composing) {\n view.input.composing = false;\n view.input.compositionEndedAt = timestampFromCustomEvent();\n }\n while (view.input.compositionNodes.length > 0)\n view.input.compositionNodes.pop().markParentsDirty();\n}\nfunction findCompositionNode(view) {\n let sel = view.domSelectionRange();\n if (!sel.focusNode)\n return null;\n let textBefore = textNodeBefore$1(sel.focusNode, sel.focusOffset);\n let textAfter = textNodeAfter$1(sel.focusNode, sel.focusOffset);\n if (textBefore && textAfter && textBefore != textAfter) {\n let descAfter = textAfter.pmViewDesc, lastChanged = view.domObserver.lastChangedTextNode;\n if (textBefore == lastChanged || textAfter == lastChanged)\n return lastChanged;\n if (!descAfter || !descAfter.isText(textAfter.nodeValue)) {\n return textAfter;\n }\n else if (view.input.compositionNode == textAfter) {\n let descBefore = textBefore.pmViewDesc;\n if (!(!descBefore || !descBefore.isText(textBefore.nodeValue)))\n return textAfter;\n }\n }\n return textBefore || textAfter;\n}\nfunction timestampFromCustomEvent() {\n let event = document.createEvent(\"Event\");\n event.initEvent(\"event\", true, true);\n return event.timeStamp;\n}\n/**\n@internal\n*/\nfunction endComposition(view, forceUpdate = false) {\n if (android && view.domObserver.flushingSoon >= 0)\n return;\n view.domObserver.forceFlush();\n clearComposition(view);\n if (forceUpdate || view.docView && view.docView.dirty) {\n let sel = selectionFromDOM(view);\n if (sel && !sel.eq(view.state.selection))\n view.dispatch(view.state.tr.setSelection(sel));\n else\n view.updateState(view.state);\n return true;\n }\n return false;\n}\nfunction captureCopy(view, dom) {\n // The extra wrapper is somehow necessary on IE/Edge to prevent the\n // content from being mangled when it is put onto the clipboard\n if (!view.dom.parentNode)\n return;\n let wrap = view.dom.parentNode.appendChild(document.createElement(\"div\"));\n wrap.appendChild(dom);\n wrap.style.cssText = \"position: fixed; left: -10000px; top: 10px\";\n let sel = getSelection(), range = document.createRange();\n range.selectNodeContents(dom);\n // Done because IE will fire a selectionchange moving the selection\n // to its start when removeAllRanges is called and the editor still\n // has focus (which will mess up the editor's selection state).\n view.dom.blur();\n sel.removeAllRanges();\n sel.addRange(range);\n setTimeout(() => {\n if (wrap.parentNode)\n wrap.parentNode.removeChild(wrap);\n view.focus();\n }, 50);\n}\n// This is very crude, but unfortunately both these browsers _pretend_\n// that they have a clipboard API—all the objects and methods are\n// there, they just don't work, and they are hard to test.\nconst brokenClipboardAPI = (ie && ie_version < 15) ||\n (ios && webkit_version < 604);\nhandlers.copy = editHandlers.cut = (view, _event) => {\n let event = _event;\n let sel = view.state.selection, cut = event.type == \"cut\";\n if (sel.empty)\n return;\n // IE and Edge's clipboard interface is completely broken\n let data = brokenClipboardAPI ? null : event.clipboardData;\n let slice = sel.content(), { dom, text } = serializeForClipboard(view, slice);\n if (data) {\n event.preventDefault();\n data.clearData();\n data.setData(\"text/html\", dom.innerHTML);\n data.setData(\"text/plain\", text);\n }\n else {\n captureCopy(view, dom);\n }\n if (cut)\n view.dispatch(view.state.tr.deleteSelection().scrollIntoView().setMeta(\"uiEvent\", \"cut\"));\n};\nfunction sliceSingleNode(slice) {\n return slice.openStart == 0 && slice.openEnd == 0 && slice.content.childCount == 1 ? slice.content.firstChild : null;\n}\nfunction capturePaste(view, event) {\n if (!view.dom.parentNode)\n return;\n let plainText = view.input.shiftKey || view.state.selection.$from.parent.type.spec.code;\n let target = view.dom.parentNode.appendChild(document.createElement(plainText ? \"textarea\" : \"div\"));\n if (!plainText)\n target.contentEditable = \"true\";\n target.style.cssText = \"position: fixed; left: -10000px; top: 10px\";\n target.focus();\n let plain = view.input.shiftKey && view.input.lastKeyCode != 45;\n setTimeout(() => {\n view.focus();\n if (target.parentNode)\n target.parentNode.removeChild(target);\n if (plainText)\n doPaste(view, target.value, null, plain, event);\n else\n doPaste(view, target.textContent, target.innerHTML, plain, event);\n }, 50);\n}\nfunction doPaste(view, text, html, preferPlain, event) {\n let slice = parseFromClipboard(view, text, html, preferPlain, view.state.selection.$from);\n if (view.someProp(\"handlePaste\", f => f(view, event, slice || Slice.empty)))\n return true;\n if (!slice)\n return false;\n let singleNode = sliceSingleNode(slice);\n let tr = singleNode\n ? view.state.tr.replaceSelectionWith(singleNode, preferPlain)\n : view.state.tr.replaceSelection(slice);\n view.dispatch(tr.scrollIntoView().setMeta(\"paste\", true).setMeta(\"uiEvent\", \"paste\"));\n return true;\n}\nfunction getText(clipboardData) {\n let text = clipboardData.getData(\"text/plain\") || clipboardData.getData(\"Text\");\n if (text)\n return text;\n let uris = clipboardData.getData(\"text/uri-list\");\n return uris ? uris.replace(/\\r?\\n/g, \" \") : \"\";\n}\neditHandlers.paste = (view, _event) => {\n let event = _event;\n // Handling paste from JavaScript during composition is very poorly\n // handled by browsers, so as a dodgy but preferable kludge, we just\n // let the browser do its native thing there, except on Android,\n // where the editor is almost always composing.\n if (view.composing && !android)\n return;\n let data = brokenClipboardAPI ? null : event.clipboardData;\n let plain = view.input.shiftKey && view.input.lastKeyCode != 45;\n if (data && doPaste(view, getText(data), data.getData(\"text/html\"), plain, event))\n event.preventDefault();\n else\n capturePaste(view, event);\n};\nclass Dragging {\n constructor(slice, move, node) {\n this.slice = slice;\n this.move = move;\n this.node = node;\n }\n}\nconst dragCopyModifier = mac ? \"altKey\" : \"ctrlKey\";\nhandlers.dragstart = (view, _event) => {\n let event = _event;\n let mouseDown = view.input.mouseDown;\n if (mouseDown)\n mouseDown.done();\n if (!event.dataTransfer)\n return;\n let sel = view.state.selection;\n let pos = sel.empty ? null : view.posAtCoords(eventCoords(event));\n let node;\n if (pos && pos.pos >= sel.from && pos.pos <= (sel instanceof NodeSelection ? sel.to - 1 : sel.to)) ;\n else if (mouseDown && mouseDown.mightDrag) {\n node = NodeSelection.create(view.state.doc, mouseDown.mightDrag.pos);\n }\n else if (event.target && event.target.nodeType == 1) {\n let desc = view.docView.nearestDesc(event.target, true);\n if (desc && desc.node.type.spec.draggable && desc != view.docView)\n node = NodeSelection.create(view.state.doc, desc.posBefore);\n }\n let draggedSlice = (node || view.state.selection).content();\n let { dom, text, slice } = serializeForClipboard(view, draggedSlice);\n event.dataTransfer.clearData();\n event.dataTransfer.setData(brokenClipboardAPI ? \"Text\" : \"text/html\", dom.innerHTML);\n // See https://github.com/ProseMirror/prosemirror/issues/1156\n event.dataTransfer.effectAllowed = \"copyMove\";\n if (!brokenClipboardAPI)\n event.dataTransfer.setData(\"text/plain\", text);\n view.dragging = new Dragging(slice, !event[dragCopyModifier], node);\n};\nhandlers.dragend = view => {\n let dragging = view.dragging;\n window.setTimeout(() => {\n if (view.dragging == dragging)\n view.dragging = null;\n }, 50);\n};\neditHandlers.dragover = editHandlers.dragenter = (_, e) => e.preventDefault();\neditHandlers.drop = (view, _event) => {\n let event = _event;\n let dragging = view.dragging;\n view.dragging = null;\n if (!event.dataTransfer)\n return;\n let eventPos = view.posAtCoords(eventCoords(event));\n if (!eventPos)\n return;\n let $mouse = view.state.doc.resolve(eventPos.pos);\n let slice = dragging && dragging.slice;\n if (slice) {\n view.someProp(\"transformPasted\", f => { slice = f(slice, view); });\n }\n else {\n slice = parseFromClipboard(view, getText(event.dataTransfer), brokenClipboardAPI ? null : event.dataTransfer.getData(\"text/html\"), false, $mouse);\n }\n let move = !!(dragging && !event[dragCopyModifier]);\n if (view.someProp(\"handleDrop\", f => f(view, event, slice || Slice.empty, move))) {\n event.preventDefault();\n return;\n }\n if (!slice)\n return;\n event.preventDefault();\n let insertPos = slice ? dropPoint(view.state.doc, $mouse.pos, slice) : $mouse.pos;\n if (insertPos == null)\n insertPos = $mouse.pos;\n let tr = view.state.tr;\n if (move) {\n let { node } = dragging;\n if (node)\n node.replace(tr);\n else\n tr.deleteSelection();\n }\n let pos = tr.mapping.map(insertPos);\n let isNode = slice.openStart == 0 && slice.openEnd == 0 && slice.content.childCount == 1;\n let beforeInsert = tr.doc;\n if (isNode)\n tr.replaceRangeWith(pos, pos, slice.content.firstChild);\n else\n tr.replaceRange(pos, pos, slice);\n if (tr.doc.eq(beforeInsert))\n return;\n let $pos = tr.doc.resolve(pos);\n if (isNode && NodeSelection.isSelectable(slice.content.firstChild) &&\n $pos.nodeAfter && $pos.nodeAfter.sameMarkup(slice.content.firstChild)) {\n tr.setSelection(new NodeSelection($pos));\n }\n else {\n let end = tr.mapping.map(insertPos);\n tr.mapping.maps[tr.mapping.maps.length - 1].forEach((_from, _to, _newFrom, newTo) => end = newTo);\n tr.setSelection(selectionBetween(view, $pos, tr.doc.resolve(end)));\n }\n view.focus();\n view.dispatch(tr.setMeta(\"uiEvent\", \"drop\"));\n};\nhandlers.focus = view => {\n view.input.lastFocus = Date.now();\n if (!view.focused) {\n view.domObserver.stop();\n view.dom.classList.add(\"ProseMirror-focused\");\n view.domObserver.start();\n view.focused = true;\n setTimeout(() => {\n if (view.docView && view.hasFocus() && !view.domObserver.currentSelection.eq(view.domSelectionRange()))\n selectionToDOM(view);\n }, 20);\n }\n};\nhandlers.blur = (view, _event) => {\n let event = _event;\n if (view.focused) {\n view.domObserver.stop();\n view.dom.classList.remove(\"ProseMirror-focused\");\n view.domObserver.start();\n if (event.relatedTarget && view.dom.contains(event.relatedTarget))\n view.domObserver.currentSelection.clear();\n view.focused = false;\n }\n};\nhandlers.beforeinput = (view, _event) => {\n let event = _event;\n // We should probably do more with beforeinput events, but support\n // is so spotty that I'm still waiting to see where they are going.\n // Very specific hack to deal with backspace sometimes failing on\n // Chrome Android when after an uneditable node.\n if (chrome && android && event.inputType == \"deleteContentBackward\") {\n view.domObserver.flushSoon();\n let { domChangeCount } = view.input;\n setTimeout(() => {\n if (view.input.domChangeCount != domChangeCount)\n return; // Event already had some effect\n // This bug tends to close the virtual keyboard, so we refocus\n view.dom.blur();\n view.focus();\n if (view.someProp(\"handleKeyDown\", f => f(view, keyEvent(8, \"Backspace\"))))\n return;\n let { $cursor } = view.state.selection;\n // Crude approximation of backspace behavior when no command handled it\n if ($cursor && $cursor.pos > 0)\n view.dispatch(view.state.tr.delete($cursor.pos - 1, $cursor.pos).scrollIntoView());\n }, 50);\n }\n};\n// Make sure all handlers get registered\nfor (let prop in editHandlers)\n handlers[prop] = editHandlers[prop];\n\nfunction compareObjs(a, b) {\n if (a == b)\n return true;\n for (let p in a)\n if (a[p] !== b[p])\n return false;\n for (let p in b)\n if (!(p in a))\n return false;\n return true;\n}\nclass WidgetType {\n constructor(toDOM, spec) {\n this.toDOM = toDOM;\n this.spec = spec || noSpec;\n this.side = this.spec.side || 0;\n }\n map(mapping, span, offset, oldOffset) {\n let { pos, deleted } = mapping.mapResult(span.from + oldOffset, this.side < 0 ? -1 : 1);\n return deleted ? null : new Decoration(pos - offset, pos - offset, this);\n }\n valid() { return true; }\n eq(other) {\n return this == other ||\n (other instanceof WidgetType &&\n (this.spec.key && this.spec.key == other.spec.key ||\n this.toDOM == other.toDOM && compareObjs(this.spec, other.spec)));\n }\n destroy(node) {\n if (this.spec.destroy)\n this.spec.destroy(node);\n }\n}\nclass InlineType {\n constructor(attrs, spec) {\n this.attrs = attrs;\n this.spec = spec || noSpec;\n }\n map(mapping, span, offset, oldOffset) {\n let from = mapping.map(span.from + oldOffset, this.spec.inclusiveStart ? -1 : 1) - offset;\n let to = mapping.map(span.to + oldOffset, this.spec.inclusiveEnd ? 1 : -1) - offset;\n return from >= to ? null : new Decoration(from, to, this);\n }\n valid(_, span) { return span.from < span.to; }\n eq(other) {\n return this == other ||\n (other instanceof InlineType && compareObjs(this.attrs, other.attrs) &&\n compareObjs(this.spec, other.spec));\n }\n static is(span) { return span.type instanceof InlineType; }\n destroy() { }\n}\nclass NodeType {\n constructor(attrs, spec) {\n this.attrs = attrs;\n this.spec = spec || noSpec;\n }\n map(mapping, span, offset, oldOffset) {\n let from = mapping.mapResult(span.from + oldOffset, 1);\n if (from.deleted)\n return null;\n let to = mapping.mapResult(span.to + oldOffset, -1);\n if (to.deleted || to.pos <= from.pos)\n return null;\n return new Decoration(from.pos - offset, to.pos - offset, this);\n }\n valid(node, span) {\n let { index, offset } = node.content.findIndex(span.from), child;\n return offset == span.from && !(child = node.child(index)).isText && offset + child.nodeSize == span.to;\n }\n eq(other) {\n return this == other ||\n (other instanceof NodeType && compareObjs(this.attrs, other.attrs) &&\n compareObjs(this.spec, other.spec));\n }\n destroy() { }\n}\n/**\nDecoration objects can be provided to the view through the\n[`decorations` prop](https://prosemirror.net/docs/ref/#view.EditorProps.decorations). They come in\nseveral variants—see the static members of this class for details.\n*/\nclass Decoration {\n /**\n @internal\n */\n constructor(\n /**\n The start position of the decoration.\n */\n from, \n /**\n The end position. Will be the same as `from` for [widget\n decorations](https://prosemirror.net/docs/ref/#view.Decoration^widget).\n */\n to, \n /**\n @internal\n */\n type) {\n this.from = from;\n this.to = to;\n this.type = type;\n }\n /**\n @internal\n */\n copy(from, to) {\n return new Decoration(from, to, this.type);\n }\n /**\n @internal\n */\n eq(other, offset = 0) {\n return this.type.eq(other.type) && this.from + offset == other.from && this.to + offset == other.to;\n }\n /**\n @internal\n */\n map(mapping, offset, oldOffset) {\n return this.type.map(mapping, this, offset, oldOffset);\n }\n /**\n Creates a widget decoration, which is a DOM node that's shown in\n the document at the given position. It is recommended that you\n delay rendering the widget by passing a function that will be\n called when the widget is actually drawn in a view, but you can\n also directly pass a DOM node. `getPos` can be used to find the\n widget's current document position.\n */\n static widget(pos, toDOM, spec) {\n return new Decoration(pos, pos, new WidgetType(toDOM, spec));\n }\n /**\n Creates an inline decoration, which adds the given attributes to\n each inline node between `from` and `to`.\n */\n static inline(from, to, attrs, spec) {\n return new Decoration(from, to, new InlineType(attrs, spec));\n }\n /**\n Creates a node decoration. `from` and `to` should point precisely\n before and after a node in the document. That node, and only that\n node, will receive the given attributes.\n */\n static node(from, to, attrs, spec) {\n return new Decoration(from, to, new NodeType(attrs, spec));\n }\n /**\n The spec provided when creating this decoration. Can be useful\n if you've stored extra information in that object.\n */\n get spec() { return this.type.spec; }\n /**\n @internal\n */\n get inline() { return this.type instanceof InlineType; }\n /**\n @internal\n */\n get widget() { return this.type instanceof WidgetType; }\n}\nconst none = [], noSpec = {};\n/**\nA collection of [decorations](https://prosemirror.net/docs/ref/#view.Decoration), organized in such\na way that the drawing algorithm can efficiently use and compare\nthem. This is a persistent data structure—it is not modified,\nupdates create a new value.\n*/\nclass DecorationSet {\n /**\n @internal\n */\n constructor(local, children) {\n this.local = local.length ? local : none;\n this.children = children.length ? children : none;\n }\n /**\n Create a set of decorations, using the structure of the given\n document. This will consume (modify) the `decorations` array, so\n you must make a copy if you want need to preserve that.\n */\n static create(doc, decorations) {\n return decorations.length ? buildTree(decorations, doc, 0, noSpec) : empty;\n }\n /**\n Find all decorations in this set which touch the given range\n (including decorations that start or end directly at the\n boundaries) and match the given predicate on their spec. When\n `start` and `end` are omitted, all decorations in the set are\n considered. When `predicate` isn't given, all decorations are\n assumed to match.\n */\n find(start, end, predicate) {\n let result = [];\n this.findInner(start == null ? 0 : start, end == null ? 1e9 : end, result, 0, predicate);\n return result;\n }\n findInner(start, end, result, offset, predicate) {\n for (let i = 0; i < this.local.length; i++) {\n let span = this.local[i];\n if (span.from <= end && span.to >= start && (!predicate || predicate(span.spec)))\n result.push(span.copy(span.from + offset, span.to + offset));\n }\n for (let i = 0; i < this.children.length; i += 3) {\n if (this.children[i] < end && this.children[i + 1] > start) {\n let childOff = this.children[i] + 1;\n this.children[i + 2].findInner(start - childOff, end - childOff, result, offset + childOff, predicate);\n }\n }\n }\n /**\n Map the set of decorations in response to a change in the\n document.\n */\n map(mapping, doc, options) {\n if (this == empty || mapping.maps.length == 0)\n return this;\n return this.mapInner(mapping, doc, 0, 0, options || noSpec);\n }\n /**\n @internal\n */\n mapInner(mapping, node, offset, oldOffset, options) {\n let newLocal;\n for (let i = 0; i < this.local.length; i++) {\n let mapped = this.local[i].map(mapping, offset, oldOffset);\n if (mapped && mapped.type.valid(node, mapped))\n (newLocal || (newLocal = [])).push(mapped);\n else if (options.onRemove)\n options.onRemove(this.local[i].spec);\n }\n if (this.children.length)\n return mapChildren(this.children, newLocal || [], mapping, node, offset, oldOffset, options);\n else\n return newLocal ? new DecorationSet(newLocal.sort(byPos), none) : empty;\n }\n /**\n Add the given array of decorations to the ones in the set,\n producing a new set. Consumes the `decorations` array. Needs\n access to the current document to create the appropriate tree\n structure.\n */\n add(doc, decorations) {\n if (!decorations.length)\n return this;\n if (this == empty)\n return DecorationSet.create(doc, decorations);\n return this.addInner(doc, decorations, 0);\n }\n addInner(doc, decorations, offset) {\n let children, childIndex = 0;\n doc.forEach((childNode, childOffset) => {\n let baseOffset = childOffset + offset, found;\n if (!(found = takeSpansForNode(decorations, childNode, baseOffset)))\n return;\n if (!children)\n children = this.children.slice();\n while (childIndex < children.length && children[childIndex] < childOffset)\n childIndex += 3;\n if (children[childIndex] == childOffset)\n children[childIndex + 2] = children[childIndex + 2].addInner(childNode, found, baseOffset + 1);\n else\n children.splice(childIndex, 0, childOffset, childOffset + childNode.nodeSize, buildTree(found, childNode, baseOffset + 1, noSpec));\n childIndex += 3;\n });\n let local = moveSpans(childIndex ? withoutNulls(decorations) : decorations, -offset);\n for (let i = 0; i < local.length; i++)\n if (!local[i].type.valid(doc, local[i]))\n local.splice(i--, 1);\n return new DecorationSet(local.length ? this.local.concat(local).sort(byPos) : this.local, children || this.children);\n }\n /**\n Create a new set that contains the decorations in this set, minus\n the ones in the given array.\n */\n remove(decorations) {\n if (decorations.length == 0 || this == empty)\n return this;\n return this.removeInner(decorations, 0);\n }\n removeInner(decorations, offset) {\n let children = this.children, local = this.local;\n for (let i = 0; i < children.length; i += 3) {\n let found;\n let from = children[i] + offset, to = children[i + 1] + offset;\n for (let j = 0, span; j < decorations.length; j++)\n if (span = decorations[j]) {\n if (span.from > from && span.to < to) {\n decorations[j] = null;\n (found || (found = [])).push(span);\n }\n }\n if (!found)\n continue;\n if (children == this.children)\n children = this.children.slice();\n let removed = children[i + 2].removeInner(found, from + 1);\n if (removed != empty) {\n children[i + 2] = removed;\n }\n else {\n children.splice(i, 3);\n i -= 3;\n }\n }\n if (local.length)\n for (let i = 0, span; i < decorations.length; i++)\n if (span = decorations[i]) {\n for (let j = 0; j < local.length; j++)\n if (local[j].eq(span, offset)) {\n if (local == this.local)\n local = this.local.slice();\n local.splice(j--, 1);\n }\n }\n if (children == this.children && local == this.local)\n return this;\n return local.length || children.length ? new DecorationSet(local, children) : empty;\n }\n forChild(offset, node) {\n if (this == empty)\n return this;\n if (node.isLeaf)\n return DecorationSet.empty;\n let child, local;\n for (let i = 0; i < this.children.length; i += 3)\n if (this.children[i] >= offset) {\n if (this.children[i] == offset)\n child = this.children[i + 2];\n break;\n }\n let start = offset + 1, end = start + node.content.size;\n for (let i = 0; i < this.local.length; i++) {\n let dec = this.local[i];\n if (dec.from < end && dec.to > start && (dec.type instanceof InlineType)) {\n let from = Math.max(start, dec.from) - start, to = Math.min(end, dec.to) - start;\n if (from < to)\n (local || (local = [])).push(dec.copy(from, to));\n }\n }\n if (local) {\n let localSet = new DecorationSet(local.sort(byPos), none);\n return child ? new DecorationGroup([localSet, child]) : localSet;\n }\n return child || empty;\n }\n /**\n @internal\n */\n eq(other) {\n if (this == other)\n return true;\n if (!(other instanceof DecorationSet) ||\n this.local.length != other.local.length ||\n this.children.length != other.children.length)\n return false;\n for (let i = 0; i < this.local.length; i++)\n if (!this.local[i].eq(other.local[i]))\n return false;\n for (let i = 0; i < this.children.length; i += 3)\n if (this.children[i] != other.children[i] ||\n this.children[i + 1] != other.children[i + 1] ||\n !this.children[i + 2].eq(other.children[i + 2]))\n return false;\n return true;\n }\n /**\n @internal\n */\n locals(node) {\n return removeOverlap(this.localsInner(node));\n }\n /**\n @internal\n */\n localsInner(node) {\n if (this == empty)\n return none;\n if (node.inlineContent || !this.local.some(InlineType.is))\n return this.local;\n let result = [];\n for (let i = 0; i < this.local.length; i++) {\n if (!(this.local[i].type instanceof InlineType))\n result.push(this.local[i]);\n }\n return result;\n }\n}\n/**\nThe empty set of decorations.\n*/\nDecorationSet.empty = new DecorationSet([], []);\n/**\n@internal\n*/\nDecorationSet.removeOverlap = removeOverlap;\nconst empty = DecorationSet.empty;\n// An abstraction that allows the code dealing with decorations to\n// treat multiple DecorationSet objects as if it were a single object\n// with (a subset of) the same interface.\nclass DecorationGroup {\n constructor(members) {\n this.members = members;\n }\n map(mapping, doc) {\n const mappedDecos = this.members.map(member => member.map(mapping, doc, noSpec));\n return DecorationGroup.from(mappedDecos);\n }\n forChild(offset, child) {\n if (child.isLeaf)\n return DecorationSet.empty;\n let found = [];\n for (let i = 0; i < this.members.length; i++) {\n let result = this.members[i].forChild(offset, child);\n if (result == empty)\n continue;\n if (result instanceof DecorationGroup)\n found = found.concat(result.members);\n else\n found.push(result);\n }\n return DecorationGroup.from(found);\n }\n eq(other) {\n if (!(other instanceof DecorationGroup) ||\n other.members.length != this.members.length)\n return false;\n for (let i = 0; i < this.members.length; i++)\n if (!this.members[i].eq(other.members[i]))\n return false;\n return true;\n }\n locals(node) {\n let result, sorted = true;\n for (let i = 0; i < this.members.length; i++) {\n let locals = this.members[i].localsInner(node);\n if (!locals.length)\n continue;\n if (!result) {\n result = locals;\n }\n else {\n if (sorted) {\n result = result.slice();\n sorted = false;\n }\n for (let j = 0; j < locals.length; j++)\n result.push(locals[j]);\n }\n }\n return result ? removeOverlap(sorted ? result : result.sort(byPos)) : none;\n }\n // Create a group for the given array of decoration sets, or return\n // a single set when possible.\n static from(members) {\n switch (members.length) {\n case 0: return empty;\n case 1: return members[0];\n default: return new DecorationGroup(members.every(m => m instanceof DecorationSet) ? members :\n members.reduce((r, m) => r.concat(m instanceof DecorationSet ? m : m.members), []));\n }\n }\n}\nfunction mapChildren(oldChildren, newLocal, mapping, node, offset, oldOffset, options) {\n let children = oldChildren.slice();\n // Mark the children that are directly touched by changes, and\n // move those that are after the changes.\n for (let i = 0, baseOffset = oldOffset; i < mapping.maps.length; i++) {\n let moved = 0;\n mapping.maps[i].forEach((oldStart, oldEnd, newStart, newEnd) => {\n let dSize = (newEnd - newStart) - (oldEnd - oldStart);\n for (let i = 0; i < children.length; i += 3) {\n let end = children[i + 1];\n if (end < 0 || oldStart > end + baseOffset - moved)\n continue;\n let start = children[i] + baseOffset - moved;\n if (oldEnd >= start) {\n children[i + 1] = oldStart <= start ? -2 : -1;\n }\n else if (oldStart >= baseOffset && dSize) {\n children[i] += dSize;\n children[i + 1] += dSize;\n }\n }\n moved += dSize;\n });\n baseOffset = mapping.maps[i].map(baseOffset, -1);\n }\n // Find the child nodes that still correspond to a single node,\n // recursively call mapInner on them and update their positions.\n let mustRebuild = false;\n for (let i = 0; i < children.length; i += 3)\n if (children[i + 1] < 0) { // Touched nodes\n if (children[i + 1] == -2) {\n mustRebuild = true;\n children[i + 1] = -1;\n continue;\n }\n let from = mapping.map(oldChildren[i] + oldOffset), fromLocal = from - offset;\n if (fromLocal < 0 || fromLocal >= node.content.size) {\n mustRebuild = true;\n continue;\n }\n // Must read oldChildren because children was tagged with -1\n let to = mapping.map(oldChildren[i + 1] + oldOffset, -1), toLocal = to - offset;\n let { index, offset: childOffset } = node.content.findIndex(fromLocal);\n let childNode = node.maybeChild(index);\n if (childNode && childOffset == fromLocal && childOffset + childNode.nodeSize == toLocal) {\n let mapped = children[i + 2]\n .mapInner(mapping, childNode, from + 1, oldChildren[i] + oldOffset + 1, options);\n if (mapped != empty) {\n children[i] = fromLocal;\n children[i + 1] = toLocal;\n children[i + 2] = mapped;\n }\n else {\n children[i + 1] = -2;\n mustRebuild = true;\n }\n }\n else {\n mustRebuild = true;\n }\n }\n // Remaining children must be collected and rebuilt into the appropriate structure\n if (mustRebuild) {\n let decorations = mapAndGatherRemainingDecorations(children, oldChildren, newLocal, mapping, offset, oldOffset, options);\n let built = buildTree(decorations, node, 0, options);\n newLocal = built.local;\n for (let i = 0; i < children.length; i += 3)\n if (children[i + 1] < 0) {\n children.splice(i, 3);\n i -= 3;\n }\n for (let i = 0, j = 0; i < built.children.length; i += 3) {\n let from = built.children[i];\n while (j < children.length && children[j] < from)\n j += 3;\n children.splice(j, 0, built.children[i], built.children[i + 1], built.children[i + 2]);\n }\n }\n return new DecorationSet(newLocal.sort(byPos), children);\n}\nfunction moveSpans(spans, offset) {\n if (!offset || !spans.length)\n return spans;\n let result = [];\n for (let i = 0; i < spans.length; i++) {\n let span = spans[i];\n result.push(new Decoration(span.from + offset, span.to + offset, span.type));\n }\n return result;\n}\nfunction mapAndGatherRemainingDecorations(children, oldChildren, decorations, mapping, offset, oldOffset, options) {\n // Gather all decorations from the remaining marked children\n function gather(set, oldOffset) {\n for (let i = 0; i < set.local.length; i++) {\n let mapped = set.local[i].map(mapping, offset, oldOffset);\n if (mapped)\n decorations.push(mapped);\n else if (options.onRemove)\n options.onRemove(set.local[i].spec);\n }\n for (let i = 0; i < set.children.length; i += 3)\n gather(set.children[i + 2], set.children[i] + oldOffset + 1);\n }\n for (let i = 0; i < children.length; i += 3)\n if (children[i + 1] == -1)\n gather(children[i + 2], oldChildren[i] + oldOffset + 1);\n return decorations;\n}\nfunction takeSpansForNode(spans, node, offset) {\n if (node.isLeaf)\n return null;\n let end = offset + node.nodeSize, found = null;\n for (let i = 0, span; i < spans.length; i++) {\n if ((span = spans[i]) && span.from > offset && span.to < end) {\n (found || (found = [])).push(span);\n spans[i] = null;\n }\n }\n return found;\n}\nfunction withoutNulls(array) {\n let result = [];\n for (let i = 0; i < array.length; i++)\n if (array[i] != null)\n result.push(array[i]);\n return result;\n}\n// Build up a tree that corresponds to a set of decorations. `offset`\n// is a base offset that should be subtracted from the `from` and `to`\n// positions in the spans (so that we don't have to allocate new spans\n// for recursive calls).\nfunction buildTree(spans, node, offset, options) {\n let children = [], hasNulls = false;\n node.forEach((childNode, localStart) => {\n let found = takeSpansForNode(spans, childNode, localStart + offset);\n if (found) {\n hasNulls = true;\n let subtree = buildTree(found, childNode, offset + localStart + 1, options);\n if (subtree != empty)\n children.push(localStart, localStart + childNode.nodeSize, subtree);\n }\n });\n let locals = moveSpans(hasNulls ? withoutNulls(spans) : spans, -offset).sort(byPos);\n for (let i = 0; i < locals.length; i++)\n if (!locals[i].type.valid(node, locals[i])) {\n if (options.onRemove)\n options.onRemove(locals[i].spec);\n locals.splice(i--, 1);\n }\n return locals.length || children.length ? new DecorationSet(locals, children) : empty;\n}\n// Used to sort decorations so that ones with a low start position\n// come first, and within a set with the same start position, those\n// with an smaller end position come first.\nfunction byPos(a, b) {\n return a.from - b.from || a.to - b.to;\n}\n// Scan a sorted array of decorations for partially overlapping spans,\n// and split those so that only fully overlapping spans are left (to\n// make subsequent rendering easier). Will return the input array if\n// no partially overlapping spans are found (the common case).\nfunction removeOverlap(spans) {\n let working = spans;\n for (let i = 0; i < working.length - 1; i++) {\n let span = working[i];\n if (span.from != span.to)\n for (let j = i + 1; j < working.length; j++) {\n let next = working[j];\n if (next.from == span.from) {\n if (next.to != span.to) {\n if (working == spans)\n working = spans.slice();\n // Followed by a partially overlapping larger span. Split that\n // span.\n working[j] = next.copy(next.from, span.to);\n insertAhead(working, j + 1, next.copy(span.to, next.to));\n }\n continue;\n }\n else {\n if (next.from < span.to) {\n if (working == spans)\n working = spans.slice();\n // The end of this one overlaps with a subsequent span. Split\n // this one.\n working[i] = span.copy(span.from, next.from);\n insertAhead(working, j, span.copy(next.from, span.to));\n }\n break;\n }\n }\n }\n return working;\n}\nfunction insertAhead(array, i, deco) {\n while (i < array.length && byPos(deco, array[i]) > 0)\n i++;\n array.splice(i, 0, deco);\n}\n// Get the decorations associated with the current props of a view.\nfunction viewDecorations(view) {\n let found = [];\n view.someProp(\"decorations\", f => {\n let result = f(view.state);\n if (result && result != empty)\n found.push(result);\n });\n if (view.cursorWrapper)\n found.push(DecorationSet.create(view.state.doc, [view.cursorWrapper.deco]));\n return DecorationGroup.from(found);\n}\n\nconst observeOptions = {\n childList: true,\n characterData: true,\n characterDataOldValue: true,\n attributes: true,\n attributeOldValue: true,\n subtree: true\n};\n// IE11 has very broken mutation observers, so we also listen to DOMCharacterDataModified\nconst useCharData = ie && ie_version <= 11;\nclass SelectionState {\n constructor() {\n this.anchorNode = null;\n this.anchorOffset = 0;\n this.focusNode = null;\n this.focusOffset = 0;\n }\n set(sel) {\n this.anchorNode = sel.anchorNode;\n this.anchorOffset = sel.anchorOffset;\n this.focusNode = sel.focusNode;\n this.focusOffset = sel.focusOffset;\n }\n clear() {\n this.anchorNode = this.focusNode = null;\n }\n eq(sel) {\n return sel.anchorNode == this.anchorNode && sel.anchorOffset == this.anchorOffset &&\n sel.focusNode == this.focusNode && sel.focusOffset == this.focusOffset;\n }\n}\nclass DOMObserver {\n constructor(view, handleDOMChange) {\n this.view = view;\n this.handleDOMChange = handleDOMChange;\n this.queue = [];\n this.flushingSoon = -1;\n this.observer = null;\n this.currentSelection = new SelectionState;\n this.onCharData = null;\n this.suppressingSelectionUpdates = false;\n this.lastChangedTextNode = null;\n this.observer = window.MutationObserver &&\n new window.MutationObserver(mutations => {\n for (let i = 0; i < mutations.length; i++)\n this.queue.push(mutations[i]);\n // IE11 will sometimes (on backspacing out a single character\n // text node after a BR node) call the observer callback\n // before actually updating the DOM, which will cause\n // ProseMirror to miss the change (see #930)\n if (ie && ie_version <= 11 && mutations.some(m => m.type == \"childList\" && m.removedNodes.length ||\n m.type == \"characterData\" && m.oldValue.length > m.target.nodeValue.length))\n this.flushSoon();\n else\n this.flush();\n });\n if (useCharData) {\n this.onCharData = e => {\n this.queue.push({ target: e.target, type: \"characterData\", oldValue: e.prevValue });\n this.flushSoon();\n };\n }\n this.onSelectionChange = this.onSelectionChange.bind(this);\n }\n flushSoon() {\n if (this.flushingSoon < 0)\n this.flushingSoon = window.setTimeout(() => { this.flushingSoon = -1; this.flush(); }, 20);\n }\n forceFlush() {\n if (this.flushingSoon > -1) {\n window.clearTimeout(this.flushingSoon);\n this.flushingSoon = -1;\n this.flush();\n }\n }\n start() {\n if (this.observer) {\n this.observer.takeRecords();\n this.observer.observe(this.view.dom, observeOptions);\n }\n if (this.onCharData)\n this.view.dom.addEventListener(\"DOMCharacterDataModified\", this.onCharData);\n this.connectSelection();\n }\n stop() {\n if (this.observer) {\n let take = this.observer.takeRecords();\n if (take.length) {\n for (let i = 0; i < take.length; i++)\n this.queue.push(take[i]);\n window.setTimeout(() => this.flush(), 20);\n }\n this.observer.disconnect();\n }\n if (this.onCharData)\n this.view.dom.removeEventListener(\"DOMCharacterDataModified\", this.onCharData);\n this.disconnectSelection();\n }\n connectSelection() {\n this.view.dom.ownerDocument.addEventListener(\"selectionchange\", this.onSelectionChange);\n }\n disconnectSelection() {\n this.view.dom.ownerDocument.removeEventListener(\"selectionchange\", this.onSelectionChange);\n }\n suppressSelectionUpdates() {\n this.suppressingSelectionUpdates = true;\n setTimeout(() => this.suppressingSelectionUpdates = false, 50);\n }\n onSelectionChange() {\n if (!hasFocusAndSelection(this.view))\n return;\n if (this.suppressingSelectionUpdates)\n return selectionToDOM(this.view);\n // Deletions on IE11 fire their events in the wrong order, giving\n // us a selection change event before the DOM changes are\n // reported.\n if (ie && ie_version <= 11 && !this.view.state.selection.empty) {\n let sel = this.view.domSelectionRange();\n // Selection.isCollapsed isn't reliable on IE\n if (sel.focusNode && isEquivalentPosition(sel.focusNode, sel.focusOffset, sel.anchorNode, sel.anchorOffset))\n return this.flushSoon();\n }\n this.flush();\n }\n setCurSelection() {\n this.currentSelection.set(this.view.domSelectionRange());\n }\n ignoreSelectionChange(sel) {\n if (!sel.focusNode)\n return true;\n let ancestors = new Set, container;\n for (let scan = sel.focusNode; scan; scan = parentNode(scan))\n ancestors.add(scan);\n for (let scan = sel.anchorNode; scan; scan = parentNode(scan))\n if (ancestors.has(scan)) {\n container = scan;\n break;\n }\n let desc = container && this.view.docView.nearestDesc(container);\n if (desc && desc.ignoreMutation({\n type: \"selection\",\n target: container.nodeType == 3 ? container.parentNode : container\n })) {\n this.setCurSelection();\n return true;\n }\n }\n pendingRecords() {\n if (this.observer)\n for (let mut of this.observer.takeRecords())\n this.queue.push(mut);\n return this.queue;\n }\n flush() {\n let { view } = this;\n if (!view.docView || this.flushingSoon > -1)\n return;\n let mutations = this.pendingRecords();\n if (mutations.length)\n this.queue = [];\n let sel = view.domSelectionRange();\n let newSel = !this.suppressingSelectionUpdates && !this.currentSelection.eq(sel) && hasFocusAndSelection(view) && !this.ignoreSelectionChange(sel);\n let from = -1, to = -1, typeOver = false, added = [];\n if (view.editable) {\n for (let i = 0; i < mutations.length; i++) {\n let result = this.registerMutation(mutations[i], added);\n if (result) {\n from = from < 0 ? result.from : Math.min(result.from, from);\n to = to < 0 ? result.to : Math.max(result.to, to);\n if (result.typeOver)\n typeOver = true;\n }\n }\n }\n if (gecko && added.length) {\n let brs = added.filter(n => n.nodeName == \"BR\");\n if (brs.length == 2) {\n let [a, b] = brs;\n if (a.parentNode && a.parentNode.parentNode == b.parentNode)\n b.remove();\n else\n a.remove();\n }\n else {\n let { focusNode } = this.currentSelection;\n for (let br of brs) {\n let parent = br.parentNode;\n if (parent && parent.nodeName == \"LI\" && (!focusNode || blockParent(view, focusNode) != parent))\n br.remove();\n }\n }\n }\n let readSel = null;\n // If it looks like the browser has reset the selection to the\n // start of the document after focus, restore the selection from\n // the state\n if (from < 0 && newSel && view.input.lastFocus > Date.now() - 200 &&\n Math.max(view.input.lastTouch, view.input.lastClick.time) < Date.now() - 300 &&\n selectionCollapsed(sel) && (readSel = selectionFromDOM(view)) &&\n readSel.eq(Selection.near(view.state.doc.resolve(0), 1))) {\n view.input.lastFocus = 0;\n selectionToDOM(view);\n this.currentSelection.set(sel);\n view.scrollToSelection();\n }\n else if (from > -1 || newSel) {\n if (from > -1) {\n view.docView.markDirty(from, to);\n checkCSS(view);\n }\n this.handleDOMChange(from, to, typeOver, added);\n if (view.docView && view.docView.dirty)\n view.updateState(view.state);\n else if (!this.currentSelection.eq(sel))\n selectionToDOM(view);\n this.currentSelection.set(sel);\n }\n }\n registerMutation(mut, added) {\n // Ignore mutations inside nodes that were already noted as inserted\n if (added.indexOf(mut.target) > -1)\n return null;\n let desc = this.view.docView.nearestDesc(mut.target);\n if (mut.type == \"attributes\" &&\n (desc == this.view.docView || mut.attributeName == \"contenteditable\" ||\n // Firefox sometimes fires spurious events for null/empty styles\n (mut.attributeName == \"style\" && !mut.oldValue && !mut.target.getAttribute(\"style\"))))\n return null;\n if (!desc || desc.ignoreMutation(mut))\n return null;\n if (mut.type == \"childList\") {\n for (let i = 0; i < mut.addedNodes.length; i++) {\n let node = mut.addedNodes[i];\n added.push(node);\n if (node.nodeType == 3)\n this.lastChangedTextNode = node;\n }\n if (desc.contentDOM && desc.contentDOM != desc.dom && !desc.contentDOM.contains(mut.target))\n return { from: desc.posBefore, to: desc.posAfter };\n let prev = mut.previousSibling, next = mut.nextSibling;\n if (ie && ie_version <= 11 && mut.addedNodes.length) {\n // IE11 gives us incorrect next/prev siblings for some\n // insertions, so if there are added nodes, recompute those\n for (let i = 0; i < mut.addedNodes.length; i++) {\n let { previousSibling, nextSibling } = mut.addedNodes[i];\n if (!previousSibling || Array.prototype.indexOf.call(mut.addedNodes, previousSibling) < 0)\n prev = previousSibling;\n if (!nextSibling || Array.prototype.indexOf.call(mut.addedNodes, nextSibling) < 0)\n next = nextSibling;\n }\n }\n let fromOffset = prev && prev.parentNode == mut.target\n ? domIndex(prev) + 1 : 0;\n let from = desc.localPosFromDOM(mut.target, fromOffset, -1);\n let toOffset = next && next.parentNode == mut.target\n ? domIndex(next) : mut.target.childNodes.length;\n let to = desc.localPosFromDOM(mut.target, toOffset, 1);\n return { from, to };\n }\n else if (mut.type == \"attributes\") {\n return { from: desc.posAtStart - desc.border, to: desc.posAtEnd + desc.border };\n }\n else { // \"characterData\"\n this.lastChangedTextNode = mut.target;\n return {\n from: desc.posAtStart,\n to: desc.posAtEnd,\n // An event was generated for a text change that didn't change\n // any text. Mark the dom change to fall back to assuming the\n // selection was typed over with an identical value if it can't\n // find another change.\n typeOver: mut.target.nodeValue == mut.oldValue\n };\n }\n }\n}\nlet cssChecked = new WeakMap();\nlet cssCheckWarned = false;\nfunction checkCSS(view) {\n if (cssChecked.has(view))\n return;\n cssChecked.set(view, null);\n if (['normal', 'nowrap', 'pre-line'].indexOf(getComputedStyle(view.dom).whiteSpace) !== -1) {\n view.requiresGeckoHackNode = gecko;\n if (cssCheckWarned)\n return;\n console[\"warn\"](\"ProseMirror expects the CSS white-space property to be set, preferably to 'pre-wrap'. It is recommended to load style/prosemirror.css from the prosemirror-view package.\");\n cssCheckWarned = true;\n }\n}\nfunction rangeToSelectionRange(view, range) {\n let anchorNode = range.startContainer, anchorOffset = range.startOffset;\n let focusNode = range.endContainer, focusOffset = range.endOffset;\n let currentAnchor = view.domAtPos(view.state.selection.anchor);\n // Since such a range doesn't distinguish between anchor and head,\n // use a heuristic that flips it around if its end matches the\n // current anchor.\n if (isEquivalentPosition(currentAnchor.node, currentAnchor.offset, focusNode, focusOffset))\n [anchorNode, anchorOffset, focusNode, focusOffset] = [focusNode, focusOffset, anchorNode, anchorOffset];\n return { anchorNode, anchorOffset, focusNode, focusOffset };\n}\n// Used to work around a Safari Selection/shadow DOM bug\n// Based on https://github.com/codemirror/dev/issues/414 fix\nfunction safariShadowSelectionRange(view, selection) {\n if (selection.getComposedRanges) {\n let range = selection.getComposedRanges(view.root)[0];\n if (range)\n return rangeToSelectionRange(view, range);\n }\n let found;\n function read(event) {\n event.preventDefault();\n event.stopImmediatePropagation();\n found = event.getTargetRanges()[0];\n }\n // Because Safari (at least in 2018-2022) doesn't provide regular\n // access to the selection inside a shadowRoot, we have to perform a\n // ridiculous hack to get at it—using `execCommand` to trigger a\n // `beforeInput` event so that we can read the target range from the\n // event.\n view.dom.addEventListener(\"beforeinput\", read, true);\n document.execCommand(\"indent\");\n view.dom.removeEventListener(\"beforeinput\", read, true);\n return found ? rangeToSelectionRange(view, found) : null;\n}\nfunction blockParent(view, node) {\n for (let p = node.parentNode; p && p != view.dom; p = p.parentNode) {\n let desc = view.docView.nearestDesc(p, true);\n if (desc && desc.node.isBlock)\n return p;\n }\n return null;\n}\n\n// Note that all referencing and parsing is done with the\n// start-of-operation selection and document, since that's the one\n// that the DOM represents. If any changes came in in the meantime,\n// the modification is mapped over those before it is applied, in\n// readDOMChange.\nfunction parseBetween(view, from_, to_) {\n let { node: parent, fromOffset, toOffset, from, to } = view.docView.parseRange(from_, to_);\n let domSel = view.domSelectionRange();\n let find;\n let anchor = domSel.anchorNode;\n if (anchor && view.dom.contains(anchor.nodeType == 1 ? anchor : anchor.parentNode)) {\n find = [{ node: anchor, offset: domSel.anchorOffset }];\n if (!selectionCollapsed(domSel))\n find.push({ node: domSel.focusNode, offset: domSel.focusOffset });\n }\n // Work around issue in Chrome where backspacing sometimes replaces\n // the deleted content with a random BR node (issues #799, #831)\n if (chrome && view.input.lastKeyCode === 8) {\n for (let off = toOffset; off > fromOffset; off--) {\n let node = parent.childNodes[off - 1], desc = node.pmViewDesc;\n if (node.nodeName == \"BR\" && !desc) {\n toOffset = off;\n break;\n }\n if (!desc || desc.size)\n break;\n }\n }\n let startDoc = view.state.doc;\n let parser = view.someProp(\"domParser\") || DOMParser.fromSchema(view.state.schema);\n let $from = startDoc.resolve(from);\n let sel = null, doc = parser.parse(parent, {\n topNode: $from.parent,\n topMatch: $from.parent.contentMatchAt($from.index()),\n topOpen: true,\n from: fromOffset,\n to: toOffset,\n preserveWhitespace: $from.parent.type.whitespace == \"pre\" ? \"full\" : true,\n findPositions: find,\n ruleFromNode,\n context: $from\n });\n if (find && find[0].pos != null) {\n let anchor = find[0].pos, head = find[1] && find[1].pos;\n if (head == null)\n head = anchor;\n sel = { anchor: anchor + from, head: head + from };\n }\n return { doc, sel, from, to };\n}\nfunction ruleFromNode(dom) {\n let desc = dom.pmViewDesc;\n if (desc) {\n return desc.parseRule();\n }\n else if (dom.nodeName == \"BR\" && dom.parentNode) {\n // Safari replaces the list item or table cell with a BR\n // directly in the list node (?!) if you delete the last\n // character in a list item or table cell (#708, #862)\n if (safari && /^(ul|ol)$/i.test(dom.parentNode.nodeName)) {\n let skip = document.createElement(\"div\");\n skip.appendChild(document.createElement(\"li\"));\n return { skip };\n }\n else if (dom.parentNode.lastChild == dom || safari && /^(tr|table)$/i.test(dom.parentNode.nodeName)) {\n return { ignore: true };\n }\n }\n else if (dom.nodeName == \"IMG\" && dom.getAttribute(\"mark-placeholder\")) {\n return { ignore: true };\n }\n return null;\n}\nconst isInline = /^(a|abbr|acronym|b|bd[io]|big|br|button|cite|code|data(list)?|del|dfn|em|i|ins|kbd|label|map|mark|meter|output|q|ruby|s|samp|small|span|strong|su[bp]|time|u|tt|var)$/i;\nfunction readDOMChange(view, from, to, typeOver, addedNodes) {\n let compositionID = view.input.compositionPendingChanges || (view.composing ? view.input.compositionID : 0);\n view.input.compositionPendingChanges = 0;\n if (from < 0) {\n let origin = view.input.lastSelectionTime > Date.now() - 50 ? view.input.lastSelectionOrigin : null;\n let newSel = selectionFromDOM(view, origin);\n if (newSel && !view.state.selection.eq(newSel)) {\n if (chrome && android &&\n view.input.lastKeyCode === 13 && Date.now() - 100 < view.input.lastKeyCodeTime &&\n view.someProp(\"handleKeyDown\", f => f(view, keyEvent(13, \"Enter\"))))\n return;\n let tr = view.state.tr.setSelection(newSel);\n if (origin == \"pointer\")\n tr.setMeta(\"pointer\", true);\n else if (origin == \"key\")\n tr.scrollIntoView();\n if (compositionID)\n tr.setMeta(\"composition\", compositionID);\n view.dispatch(tr);\n }\n return;\n }\n let $before = view.state.doc.resolve(from);\n let shared = $before.sharedDepth(to);\n from = $before.before(shared + 1);\n to = view.state.doc.resolve(to).after(shared + 1);\n let sel = view.state.selection;\n let parse = parseBetween(view, from, to);\n let doc = view.state.doc, compare = doc.slice(parse.from, parse.to);\n let preferredPos, preferredSide;\n // Prefer anchoring to end when Backspace is pressed\n if (view.input.lastKeyCode === 8 && Date.now() - 100 < view.input.lastKeyCodeTime) {\n preferredPos = view.state.selection.to;\n preferredSide = \"end\";\n }\n else {\n preferredPos = view.state.selection.from;\n preferredSide = \"start\";\n }\n view.input.lastKeyCode = null;\n let change = findDiff(compare.content, parse.doc.content, parse.from, preferredPos, preferredSide);\n if ((ios && view.input.lastIOSEnter > Date.now() - 225 || android) &&\n addedNodes.some(n => n.nodeType == 1 && !isInline.test(n.nodeName)) &&\n (!change || change.endA >= change.endB) &&\n view.someProp(\"handleKeyDown\", f => f(view, keyEvent(13, \"Enter\")))) {\n view.input.lastIOSEnter = 0;\n return;\n }\n if (!change) {\n if (typeOver && sel instanceof TextSelection && !sel.empty && sel.$head.sameParent(sel.$anchor) &&\n !view.composing && !(parse.sel && parse.sel.anchor != parse.sel.head)) {\n change = { start: sel.from, endA: sel.to, endB: sel.to };\n }\n else {\n if (parse.sel) {\n let sel = resolveSelection(view, view.state.doc, parse.sel);\n if (sel && !sel.eq(view.state.selection)) {\n let tr = view.state.tr.setSelection(sel);\n if (compositionID)\n tr.setMeta(\"composition\", compositionID);\n view.dispatch(tr);\n }\n }\n return;\n }\n }\n view.input.domChangeCount++;\n // Handle the case where overwriting a selection by typing matches\n // the start or end of the selected content, creating a change\n // that's smaller than what was actually overwritten.\n if (view.state.selection.from < view.state.selection.to &&\n change.start == change.endB &&\n view.state.selection instanceof TextSelection) {\n if (change.start > view.state.selection.from && change.start <= view.state.selection.from + 2 &&\n view.state.selection.from >= parse.from) {\n change.start = view.state.selection.from;\n }\n else if (change.endA < view.state.selection.to && change.endA >= view.state.selection.to - 2 &&\n view.state.selection.to <= parse.to) {\n change.endB += (view.state.selection.to - change.endA);\n change.endA = view.state.selection.to;\n }\n }\n // IE11 will insert a non-breaking space _ahead_ of the space after\n // the cursor space when adding a space before another space. When\n // that happened, adjust the change to cover the space instead.\n if (ie && ie_version <= 11 && change.endB == change.start + 1 &&\n change.endA == change.start && change.start > parse.from &&\n parse.doc.textBetween(change.start - parse.from - 1, change.start - parse.from + 1) == \" \\u00a0\") {\n change.start--;\n change.endA--;\n change.endB--;\n }\n let $from = parse.doc.resolveNoCache(change.start - parse.from);\n let $to = parse.doc.resolveNoCache(change.endB - parse.from);\n let $fromA = doc.resolve(change.start);\n let inlineChange = $from.sameParent($to) && $from.parent.inlineContent && $fromA.end() >= change.endA;\n let nextSel;\n // If this looks like the effect of pressing Enter (or was recorded\n // as being an iOS enter press), just dispatch an Enter key instead.\n if (((ios && view.input.lastIOSEnter > Date.now() - 225 &&\n (!inlineChange || addedNodes.some(n => n.nodeName == \"DIV\" || n.nodeName == \"P\"))) ||\n (!inlineChange && $from.pos < parse.doc.content.size && !$from.sameParent($to) &&\n (nextSel = Selection.findFrom(parse.doc.resolve($from.pos + 1), 1, true)) &&\n nextSel.head == $to.pos)) &&\n view.someProp(\"handleKeyDown\", f => f(view, keyEvent(13, \"Enter\")))) {\n view.input.lastIOSEnter = 0;\n return;\n }\n // Same for backspace\n if (view.state.selection.anchor > change.start &&\n looksLikeBackspace(doc, change.start, change.endA, $from, $to) &&\n view.someProp(\"handleKeyDown\", f => f(view, keyEvent(8, \"Backspace\")))) {\n if (android && chrome)\n view.domObserver.suppressSelectionUpdates(); // #820\n return;\n }\n // Chrome Android will occasionally, during composition, delete the\n // entire composition and then immediately insert it again. This is\n // used to detect that situation.\n if (chrome && android && change.endB == change.start)\n view.input.lastAndroidDelete = Date.now();\n // This tries to detect Android virtual keyboard\n // enter-and-pick-suggestion action. That sometimes (see issue\n // #1059) first fires a DOM mutation, before moving the selection to\n // the newly created block. And then, because ProseMirror cleans up\n // the DOM selection, it gives up moving the selection entirely,\n // leaving the cursor in the wrong place. When that happens, we drop\n // the new paragraph from the initial change, and fire a simulated\n // enter key afterwards.\n if (android && !inlineChange && $from.start() != $to.start() && $to.parentOffset == 0 && $from.depth == $to.depth &&\n parse.sel && parse.sel.anchor == parse.sel.head && parse.sel.head == change.endA) {\n change.endB -= 2;\n $to = parse.doc.resolveNoCache(change.endB - parse.from);\n setTimeout(() => {\n view.someProp(\"handleKeyDown\", function (f) { return f(view, keyEvent(13, \"Enter\")); });\n }, 20);\n }\n let chFrom = change.start, chTo = change.endA;\n let tr, storedMarks, markChange;\n if (inlineChange) {\n if ($from.pos == $to.pos) { // Deletion\n // IE11 sometimes weirdly moves the DOM selection around after\n // backspacing out the first element in a textblock\n if (ie && ie_version <= 11 && $from.parentOffset == 0) {\n view.domObserver.suppressSelectionUpdates();\n setTimeout(() => selectionToDOM(view), 20);\n }\n tr = view.state.tr.delete(chFrom, chTo);\n storedMarks = doc.resolve(change.start).marksAcross(doc.resolve(change.endA));\n }\n else if ( // Adding or removing a mark\n change.endA == change.endB &&\n (markChange = isMarkChange($from.parent.content.cut($from.parentOffset, $to.parentOffset), $fromA.parent.content.cut($fromA.parentOffset, change.endA - $fromA.start())))) {\n tr = view.state.tr;\n if (markChange.type == \"add\")\n tr.addMark(chFrom, chTo, markChange.mark);\n else\n tr.removeMark(chFrom, chTo, markChange.mark);\n }\n else if ($from.parent.child($from.index()).isText && $from.index() == $to.index() - ($to.textOffset ? 0 : 1)) {\n // Both positions in the same text node -- simply insert text\n let text = $from.parent.textBetween($from.parentOffset, $to.parentOffset);\n if (view.someProp(\"handleTextInput\", f => f(view, chFrom, chTo, text)))\n return;\n tr = view.state.tr.insertText(text, chFrom, chTo);\n }\n }\n if (!tr)\n tr = view.state.tr.replace(chFrom, chTo, parse.doc.slice(change.start - parse.from, change.endB - parse.from));\n if (parse.sel) {\n let sel = resolveSelection(view, tr.doc, parse.sel);\n // Chrome Android will sometimes, during composition, report the\n // selection in the wrong place. If it looks like that is\n // happening, don't update the selection.\n // Edge just doesn't move the cursor forward when you start typing\n // in an empty block or between br nodes.\n if (sel && !(chrome && android && view.composing && sel.empty &&\n (change.start != change.endB || view.input.lastAndroidDelete < Date.now() - 100) &&\n (sel.head == chFrom || sel.head == tr.mapping.map(chTo) - 1) ||\n ie && sel.empty && sel.head == chFrom))\n tr.setSelection(sel);\n }\n if (storedMarks)\n tr.ensureMarks(storedMarks);\n if (compositionID)\n tr.setMeta(\"composition\", compositionID);\n view.dispatch(tr.scrollIntoView());\n}\nfunction resolveSelection(view, doc, parsedSel) {\n if (Math.max(parsedSel.anchor, parsedSel.head) > doc.content.size)\n return null;\n return selectionBetween(view, doc.resolve(parsedSel.anchor), doc.resolve(parsedSel.head));\n}\n// Given two same-length, non-empty fragments of inline content,\n// determine whether the first could be created from the second by\n// removing or adding a single mark type.\nfunction isMarkChange(cur, prev) {\n let curMarks = cur.firstChild.marks, prevMarks = prev.firstChild.marks;\n let added = curMarks, removed = prevMarks, type, mark, update;\n for (let i = 0; i < prevMarks.length; i++)\n added = prevMarks[i].removeFromSet(added);\n for (let i = 0; i < curMarks.length; i++)\n removed = curMarks[i].removeFromSet(removed);\n if (added.length == 1 && removed.length == 0) {\n mark = added[0];\n type = \"add\";\n update = (node) => node.mark(mark.addToSet(node.marks));\n }\n else if (added.length == 0 && removed.length == 1) {\n mark = removed[0];\n type = \"remove\";\n update = (node) => node.mark(mark.removeFromSet(node.marks));\n }\n else {\n return null;\n }\n let updated = [];\n for (let i = 0; i < prev.childCount; i++)\n updated.push(update(prev.child(i)));\n if (Fragment.from(updated).eq(cur))\n return { mark, type };\n}\nfunction looksLikeBackspace(old, start, end, $newStart, $newEnd) {\n if ( // The content must have shrunk\n end - start <= $newEnd.pos - $newStart.pos ||\n // newEnd must point directly at or after the end of the block that newStart points into\n skipClosingAndOpening($newStart, true, false) < $newEnd.pos)\n return false;\n let $start = old.resolve(start);\n // Handle the case where, rather than joining blocks, the change just removed an entire block\n if (!$newStart.parent.isTextblock) {\n let after = $start.nodeAfter;\n return after != null && end == start + after.nodeSize;\n }\n // Start must be at the end of a block\n if ($start.parentOffset < $start.parent.content.size || !$start.parent.isTextblock)\n return false;\n let $next = old.resolve(skipClosingAndOpening($start, true, true));\n // The next textblock must start before end and end near it\n if (!$next.parent.isTextblock || $next.pos > end ||\n skipClosingAndOpening($next, true, false) < end)\n return false;\n // The fragments after the join point must match\n return $newStart.parent.content.cut($newStart.parentOffset).eq($next.parent.content);\n}\nfunction skipClosingAndOpening($pos, fromEnd, mayOpen) {\n let depth = $pos.depth, end = fromEnd ? $pos.end() : $pos.pos;\n while (depth > 0 && (fromEnd || $pos.indexAfter(depth) == $pos.node(depth).childCount)) {\n depth--;\n end++;\n fromEnd = false;\n }\n if (mayOpen) {\n let next = $pos.node(depth).maybeChild($pos.indexAfter(depth));\n while (next && !next.isLeaf) {\n next = next.firstChild;\n end++;\n }\n }\n return end;\n}\nfunction findDiff(a, b, pos, preferredPos, preferredSide) {\n let start = a.findDiffStart(b, pos);\n if (start == null)\n return null;\n let { a: endA, b: endB } = a.findDiffEnd(b, pos + a.size, pos + b.size);\n if (preferredSide == \"end\") {\n let adjust = Math.max(0, start - Math.min(endA, endB));\n preferredPos -= endA + adjust - start;\n }\n if (endA < start && a.size < b.size) {\n let move = preferredPos <= start && preferredPos >= endA ? start - preferredPos : 0;\n start -= move;\n if (start && start < b.size && isSurrogatePair(b.textBetween(start - 1, start + 1)))\n start += move ? 1 : -1;\n endB = start + (endB - endA);\n endA = start;\n }\n else if (endB < start) {\n let move = preferredPos <= start && preferredPos >= endB ? start - preferredPos : 0;\n start -= move;\n if (start && start < a.size && isSurrogatePair(a.textBetween(start - 1, start + 1)))\n start += move ? 1 : -1;\n endA = start + (endA - endB);\n endB = start;\n }\n return { start, endA, endB };\n}\nfunction isSurrogatePair(str) {\n if (str.length != 2)\n return false;\n let a = str.charCodeAt(0), b = str.charCodeAt(1);\n return a >= 0xDC00 && a <= 0xDFFF && b >= 0xD800 && b <= 0xDBFF;\n}\n\n/**\n@internal\n*/\nconst __serializeForClipboard = serializeForClipboard;\n/**\n@internal\n*/\nconst __parseFromClipboard = parseFromClipboard;\n/**\n@internal\n*/\nconst __endComposition = endComposition;\n/**\nAn editor view manages the DOM structure that represents an\neditable document. Its state and behavior are determined by its\n[props](https://prosemirror.net/docs/ref/#view.DirectEditorProps).\n*/\nclass EditorView {\n /**\n Create a view. `place` may be a DOM node that the editor should\n be appended to, a function that will place it into the document,\n or an object whose `mount` property holds the node to use as the\n document container. If it is `null`, the editor will not be\n added to the document.\n */\n constructor(place, props) {\n this._root = null;\n /**\n @internal\n */\n this.focused = false;\n /**\n Kludge used to work around a Chrome bug @internal\n */\n this.trackWrites = null;\n this.mounted = false;\n /**\n @internal\n */\n this.markCursor = null;\n /**\n @internal\n */\n this.cursorWrapper = null;\n /**\n @internal\n */\n this.lastSelectedViewDesc = undefined;\n /**\n @internal\n */\n this.input = new InputState;\n this.prevDirectPlugins = [];\n this.pluginViews = [];\n /**\n Holds `true` when a hack node is needed in Firefox to prevent the\n [space is eaten issue](https://github.com/ProseMirror/prosemirror/issues/651)\n @internal\n */\n this.requiresGeckoHackNode = false;\n /**\n When editor content is being dragged, this object contains\n information about the dragged slice and whether it is being\n copied or moved. At any other time, it is null.\n */\n this.dragging = null;\n this._props = props;\n this.state = props.state;\n this.directPlugins = props.plugins || [];\n this.directPlugins.forEach(checkStateComponent);\n this.dispatch = this.dispatch.bind(this);\n this.dom = (place && place.mount) || document.createElement(\"div\");\n if (place) {\n if (place.appendChild)\n place.appendChild(this.dom);\n else if (typeof place == \"function\")\n place(this.dom);\n else if (place.mount)\n this.mounted = true;\n }\n this.editable = getEditable(this);\n updateCursorWrapper(this);\n this.nodeViews = buildNodeViews(this);\n this.docView = docViewDesc(this.state.doc, computeDocDeco(this), viewDecorations(this), this.dom, this);\n this.domObserver = new DOMObserver(this, (from, to, typeOver, added) => readDOMChange(this, from, to, typeOver, added));\n this.domObserver.start();\n initInput(this);\n this.updatePluginViews();\n }\n /**\n Holds `true` when a\n [composition](https://w3c.github.io/uievents/#events-compositionevents)\n is active.\n */\n get composing() { return this.input.composing; }\n /**\n The view's current [props](https://prosemirror.net/docs/ref/#view.EditorProps).\n */\n get props() {\n if (this._props.state != this.state) {\n let prev = this._props;\n this._props = {};\n for (let name in prev)\n this._props[name] = prev[name];\n this._props.state = this.state;\n }\n return this._props;\n }\n /**\n Update the view's props. Will immediately cause an update to\n the DOM.\n */\n update(props) {\n if (props.handleDOMEvents != this._props.handleDOMEvents)\n ensureListeners(this);\n let prevProps = this._props;\n this._props = props;\n if (props.plugins) {\n props.plugins.forEach(checkStateComponent);\n this.directPlugins = props.plugins;\n }\n this.updateStateInner(props.state, prevProps);\n }\n /**\n Update the view by updating existing props object with the object\n given as argument. Equivalent to `view.update(Object.assign({},\n view.props, props))`.\n */\n setProps(props) {\n let updated = {};\n for (let name in this._props)\n updated[name] = this._props[name];\n updated.state = this.state;\n for (let name in props)\n updated[name] = props[name];\n this.update(updated);\n }\n /**\n Update the editor's `state` prop, without touching any of the\n other props.\n */\n updateState(state) {\n this.updateStateInner(state, this._props);\n }\n updateStateInner(state, prevProps) {\n var _a;\n let prev = this.state, redraw = false, updateSel = false;\n // When stored marks are added, stop composition, so that they can\n // be displayed.\n if (state.storedMarks && this.composing) {\n clearComposition(this);\n updateSel = true;\n }\n this.state = state;\n let pluginsChanged = prev.plugins != state.plugins || this._props.plugins != prevProps.plugins;\n if (pluginsChanged || this._props.plugins != prevProps.plugins || this._props.nodeViews != prevProps.nodeViews) {\n let nodeViews = buildNodeViews(this);\n if (changedNodeViews(nodeViews, this.nodeViews)) {\n this.nodeViews = nodeViews;\n redraw = true;\n }\n }\n if (pluginsChanged || prevProps.handleDOMEvents != this._props.handleDOMEvents) {\n ensureListeners(this);\n }\n this.editable = getEditable(this);\n updateCursorWrapper(this);\n let innerDeco = viewDecorations(this), outerDeco = computeDocDeco(this);\n let scroll = prev.plugins != state.plugins && !prev.doc.eq(state.doc) ? \"reset\"\n : state.scrollToSelection > prev.scrollToSelection ? \"to selection\" : \"preserve\";\n let updateDoc = redraw || !this.docView.matchesNode(state.doc, outerDeco, innerDeco);\n if (updateDoc || !state.selection.eq(prev.selection))\n updateSel = true;\n let oldScrollPos = scroll == \"preserve\" && updateSel && this.dom.style.overflowAnchor == null && storeScrollPos(this);\n if (updateSel) {\n this.domObserver.stop();\n // Work around an issue in Chrome, IE, and Edge where changing\n // the DOM around an active selection puts it into a broken\n // state where the thing the user sees differs from the\n // selection reported by the Selection object (#710, #973,\n // #1011, #1013, #1035).\n let forceSelUpdate = updateDoc && (ie || chrome) && !this.composing &&\n !prev.selection.empty && !state.selection.empty && selectionContextChanged(prev.selection, state.selection);\n if (updateDoc) {\n // If the node that the selection points into is written to,\n // Chrome sometimes starts misreporting the selection, so this\n // tracks that and forces a selection reset when our update\n // did write to the node.\n let chromeKludge = chrome ? (this.trackWrites = this.domSelectionRange().focusNode) : null;\n if (this.composing)\n this.input.compositionNode = findCompositionNode(this);\n if (redraw || !this.docView.update(state.doc, outerDeco, innerDeco, this)) {\n this.docView.updateOuterDeco(outerDeco);\n this.docView.destroy();\n this.docView = docViewDesc(state.doc, outerDeco, innerDeco, this.dom, this);\n }\n if (chromeKludge && !this.trackWrites)\n forceSelUpdate = true;\n }\n // Work around for an issue where an update arriving right between\n // a DOM selection change and the \"selectionchange\" event for it\n // can cause a spurious DOM selection update, disrupting mouse\n // drag selection.\n if (forceSelUpdate ||\n !(this.input.mouseDown && this.domObserver.currentSelection.eq(this.domSelectionRange()) &&\n anchorInRightPlace(this))) {\n selectionToDOM(this, forceSelUpdate);\n }\n else {\n syncNodeSelection(this, state.selection);\n this.domObserver.setCurSelection();\n }\n this.domObserver.start();\n }\n this.updatePluginViews(prev);\n if (((_a = this.dragging) === null || _a === void 0 ? void 0 : _a.node) && !prev.doc.eq(state.doc))\n this.updateDraggedNode(this.dragging, prev);\n if (scroll == \"reset\") {\n this.dom.scrollTop = 0;\n }\n else if (scroll == \"to selection\") {\n this.scrollToSelection();\n }\n else if (oldScrollPos) {\n resetScrollPos(oldScrollPos);\n }\n }\n /**\n @internal\n */\n scrollToSelection() {\n let startDOM = this.domSelectionRange().focusNode;\n if (this.someProp(\"handleScrollToSelection\", f => f(this))) ;\n else if (this.state.selection instanceof NodeSelection) {\n let target = this.docView.domAfterPos(this.state.selection.from);\n if (target.nodeType == 1)\n scrollRectIntoView(this, target.getBoundingClientRect(), startDOM);\n }\n else {\n scrollRectIntoView(this, this.coordsAtPos(this.state.selection.head, 1), startDOM);\n }\n }\n destroyPluginViews() {\n let view;\n while (view = this.pluginViews.pop())\n if (view.destroy)\n view.destroy();\n }\n updatePluginViews(prevState) {\n if (!prevState || prevState.plugins != this.state.plugins || this.directPlugins != this.prevDirectPlugins) {\n this.prevDirectPlugins = this.directPlugins;\n this.destroyPluginViews();\n for (let i = 0; i < this.directPlugins.length; i++) {\n let plugin = this.directPlugins[i];\n if (plugin.spec.view)\n this.pluginViews.push(plugin.spec.view(this));\n }\n for (let i = 0; i < this.state.plugins.length; i++) {\n let plugin = this.state.plugins[i];\n if (plugin.spec.view)\n this.pluginViews.push(plugin.spec.view(this));\n }\n }\n else {\n for (let i = 0; i < this.pluginViews.length; i++) {\n let pluginView = this.pluginViews[i];\n if (pluginView.update)\n pluginView.update(this, prevState);\n }\n }\n }\n updateDraggedNode(dragging, prev) {\n let sel = dragging.node, found = -1;\n if (this.state.doc.nodeAt(sel.from) == sel.node) {\n found = sel.from;\n }\n else {\n let movedPos = sel.from + (this.state.doc.content.size - prev.doc.content.size);\n let moved = movedPos > 0 && this.state.doc.nodeAt(movedPos);\n if (moved == sel.node)\n found = movedPos;\n }\n this.dragging = new Dragging(dragging.slice, dragging.move, found < 0 ? undefined : NodeSelection.create(this.state.doc, found));\n }\n someProp(propName, f) {\n let prop = this._props && this._props[propName], value;\n if (prop != null && (value = f ? f(prop) : prop))\n return value;\n for (let i = 0; i < this.directPlugins.length; i++) {\n let prop = this.directPlugins[i].props[propName];\n if (prop != null && (value = f ? f(prop) : prop))\n return value;\n }\n let plugins = this.state.plugins;\n if (plugins)\n for (let i = 0; i < plugins.length; i++) {\n let prop = plugins[i].props[propName];\n if (prop != null && (value = f ? f(prop) : prop))\n return value;\n }\n }\n /**\n Query whether the view has focus.\n */\n hasFocus() {\n // Work around IE not handling focus correctly if resize handles are shown.\n // If the cursor is inside an element with resize handles, activeElement\n // will be that element instead of this.dom.\n if (ie) {\n // If activeElement is within this.dom, and there are no other elements\n // setting `contenteditable` to false in between, treat it as focused.\n let node = this.root.activeElement;\n if (node == this.dom)\n return true;\n if (!node || !this.dom.contains(node))\n return false;\n while (node && this.dom != node && this.dom.contains(node)) {\n if (node.contentEditable == 'false')\n return false;\n node = node.parentElement;\n }\n return true;\n }\n return this.root.activeElement == this.dom;\n }\n /**\n Focus the editor.\n */\n focus() {\n this.domObserver.stop();\n if (this.editable)\n focusPreventScroll(this.dom);\n selectionToDOM(this);\n this.domObserver.start();\n }\n /**\n Get the document root in which the editor exists. This will\n usually be the top-level `document`, but might be a [shadow\n DOM](https://developer.mozilla.org/en-US/docs/Web/Web_Components/Shadow_DOM)\n root if the editor is inside one.\n */\n get root() {\n let cached = this._root;\n if (cached == null)\n for (let search = this.dom.parentNode; search; search = search.parentNode) {\n if (search.nodeType == 9 || (search.nodeType == 11 && search.host)) {\n if (!search.getSelection)\n Object.getPrototypeOf(search).getSelection = () => search.ownerDocument.getSelection();\n return this._root = search;\n }\n }\n return cached || document;\n }\n /**\n When an existing editor view is moved to a new document or\n shadow tree, call this to make it recompute its root.\n */\n updateRoot() {\n this._root = null;\n }\n /**\n Given a pair of viewport coordinates, return the document\n position that corresponds to them. May return null if the given\n coordinates aren't inside of the editor. When an object is\n returned, its `pos` property is the position nearest to the\n coordinates, and its `inside` property holds the position of the\n inner node that the position falls inside of, or -1 if it is at\n the top level, not in any node.\n */\n posAtCoords(coords) {\n return posAtCoords(this, coords);\n }\n /**\n Returns the viewport rectangle at a given document position.\n `left` and `right` will be the same number, as this returns a\n flat cursor-ish rectangle. If the position is between two things\n that aren't directly adjacent, `side` determines which element\n is used. When < 0, the element before the position is used,\n otherwise the element after.\n */\n coordsAtPos(pos, side = 1) {\n return coordsAtPos(this, pos, side);\n }\n /**\n Find the DOM position that corresponds to the given document\n position. When `side` is negative, find the position as close as\n possible to the content before the position. When positive,\n prefer positions close to the content after the position. When\n zero, prefer as shallow a position as possible.\n \n Note that you should **not** mutate the editor's internal DOM,\n only inspect it (and even that is usually not necessary).\n */\n domAtPos(pos, side = 0) {\n return this.docView.domFromPos(pos, side);\n }\n /**\n Find the DOM node that represents the document node after the\n given position. May return `null` when the position doesn't point\n in front of a node or if the node is inside an opaque node view.\n \n This is intended to be able to call things like\n `getBoundingClientRect` on that DOM node. Do **not** mutate the\n editor DOM directly, or add styling this way, since that will be\n immediately overriden by the editor as it redraws the node.\n */\n nodeDOM(pos) {\n let desc = this.docView.descAt(pos);\n return desc ? desc.nodeDOM : null;\n }\n /**\n Find the document position that corresponds to a given DOM\n position. (Whenever possible, it is preferable to inspect the\n document structure directly, rather than poking around in the\n DOM, but sometimes—for example when interpreting an event\n target—you don't have a choice.)\n \n The `bias` parameter can be used to influence which side of a DOM\n node to use when the position is inside a leaf node.\n */\n posAtDOM(node, offset, bias = -1) {\n let pos = this.docView.posFromDOM(node, offset, bias);\n if (pos == null)\n throw new RangeError(\"DOM position not inside the editor\");\n return pos;\n }\n /**\n Find out whether the selection is at the end of a textblock when\n moving in a given direction. When, for example, given `\"left\"`,\n it will return true if moving left from the current cursor\n position would leave that position's parent textblock. Will apply\n to the view's current state by default, but it is possible to\n pass a different state.\n */\n endOfTextblock(dir, state) {\n return endOfTextblock(this, state || this.state, dir);\n }\n /**\n Run the editor's paste logic with the given HTML string. The\n `event`, if given, will be passed to the\n [`handlePaste`](https://prosemirror.net/docs/ref/#view.EditorProps.handlePaste) hook.\n */\n pasteHTML(html, event) {\n return doPaste(this, \"\", html, false, event || new ClipboardEvent(\"paste\"));\n }\n /**\n Run the editor's paste logic with the given plain-text input.\n */\n pasteText(text, event) {\n return doPaste(this, text, null, true, event || new ClipboardEvent(\"paste\"));\n }\n /**\n Removes the editor from the DOM and destroys all [node\n views](https://prosemirror.net/docs/ref/#view.NodeView).\n */\n destroy() {\n if (!this.docView)\n return;\n destroyInput(this);\n this.destroyPluginViews();\n if (this.mounted) {\n this.docView.update(this.state.doc, [], viewDecorations(this), this);\n this.dom.textContent = \"\";\n }\n else if (this.dom.parentNode) {\n this.dom.parentNode.removeChild(this.dom);\n }\n this.docView.destroy();\n this.docView = null;\n clearReusedRange();\n }\n /**\n This is true when the view has been\n [destroyed](https://prosemirror.net/docs/ref/#view.EditorView.destroy) (and thus should not be\n used anymore).\n */\n get isDestroyed() {\n return this.docView == null;\n }\n /**\n Used for testing.\n */\n dispatchEvent(event) {\n return dispatchEvent(this, event);\n }\n /**\n Dispatch a transaction. Will call\n [`dispatchTransaction`](https://prosemirror.net/docs/ref/#view.DirectEditorProps.dispatchTransaction)\n when given, and otherwise defaults to applying the transaction to\n the current state and calling\n [`updateState`](https://prosemirror.net/docs/ref/#view.EditorView.updateState) with the result.\n This method is bound to the view instance, so that it can be\n easily passed around.\n */\n dispatch(tr) {\n let dispatchTransaction = this._props.dispatchTransaction;\n if (dispatchTransaction)\n dispatchTransaction.call(this, tr);\n else\n this.updateState(this.state.apply(tr));\n }\n /**\n @internal\n */\n domSelectionRange() {\n let sel = this.domSelection();\n return safari && this.root.nodeType === 11 &&\n deepActiveElement(this.dom.ownerDocument) == this.dom && safariShadowSelectionRange(this, sel) || sel;\n }\n /**\n @internal\n */\n domSelection() {\n return this.root.getSelection();\n }\n}\nfunction computeDocDeco(view) {\n let attrs = Object.create(null);\n attrs.class = \"ProseMirror\";\n attrs.contenteditable = String(view.editable);\n view.someProp(\"attributes\", value => {\n if (typeof value == \"function\")\n value = value(view.state);\n if (value)\n for (let attr in value) {\n if (attr == \"class\")\n attrs.class += \" \" + value[attr];\n else if (attr == \"style\")\n attrs.style = (attrs.style ? attrs.style + \";\" : \"\") + value[attr];\n else if (!attrs[attr] && attr != \"contenteditable\" && attr != \"nodeName\")\n attrs[attr] = String(value[attr]);\n }\n });\n if (!attrs.translate)\n attrs.translate = \"no\";\n return [Decoration.node(0, view.state.doc.content.size, attrs)];\n}\nfunction updateCursorWrapper(view) {\n if (view.markCursor) {\n let dom = document.createElement(\"img\");\n dom.className = \"ProseMirror-separator\";\n dom.setAttribute(\"mark-placeholder\", \"true\");\n dom.setAttribute(\"alt\", \"\");\n view.cursorWrapper = { dom, deco: Decoration.widget(view.state.selection.head, dom, { raw: true, marks: view.markCursor }) };\n }\n else {\n view.cursorWrapper = null;\n }\n}\nfunction getEditable(view) {\n return !view.someProp(\"editable\", value => value(view.state) === false);\n}\nfunction selectionContextChanged(sel1, sel2) {\n let depth = Math.min(sel1.$anchor.sharedDepth(sel1.head), sel2.$anchor.sharedDepth(sel2.head));\n return sel1.$anchor.start(depth) != sel2.$anchor.start(depth);\n}\nfunction buildNodeViews(view) {\n let result = Object.create(null);\n function add(obj) {\n for (let prop in obj)\n if (!Object.prototype.hasOwnProperty.call(result, prop))\n result[prop] = obj[prop];\n }\n view.someProp(\"nodeViews\", add);\n view.someProp(\"markViews\", add);\n return result;\n}\nfunction changedNodeViews(a, b) {\n let nA = 0, nB = 0;\n for (let prop in a) {\n if (a[prop] != b[prop])\n return true;\n nA++;\n }\n for (let _ in b)\n nB++;\n return nA != nB;\n}\nfunction checkStateComponent(plugin) {\n if (plugin.spec.state || plugin.spec.filterTransaction || plugin.spec.appendTransaction)\n throw new RangeError(\"Plugins passed directly to the view must not have a state component\");\n}\n\nexport { Decoration, DecorationSet, EditorView, __endComposition, __parseFromClipboard, __serializeForClipboard };\n","export var base = {\n 8: \"Backspace\",\n 9: \"Tab\",\n 10: \"Enter\",\n 12: \"NumLock\",\n 13: \"Enter\",\n 16: \"Shift\",\n 17: \"Control\",\n 18: \"Alt\",\n 20: \"CapsLock\",\n 27: \"Escape\",\n 32: \" \",\n 33: \"PageUp\",\n 34: \"PageDown\",\n 35: \"End\",\n 36: \"Home\",\n 37: \"ArrowLeft\",\n 38: \"ArrowUp\",\n 39: \"ArrowRight\",\n 40: \"ArrowDown\",\n 44: \"PrintScreen\",\n 45: \"Insert\",\n 46: \"Delete\",\n 59: \";\",\n 61: \"=\",\n 91: \"Meta\",\n 92: \"Meta\",\n 106: \"*\",\n 107: \"+\",\n 108: \",\",\n 109: \"-\",\n 110: \".\",\n 111: \"/\",\n 144: \"NumLock\",\n 145: \"ScrollLock\",\n 160: \"Shift\",\n 161: \"Shift\",\n 162: \"Control\",\n 163: \"Control\",\n 164: \"Alt\",\n 165: \"Alt\",\n 173: \"-\",\n 186: \";\",\n 187: \"=\",\n 188: \",\",\n 189: \"-\",\n 190: \".\",\n 191: \"/\",\n 192: \"`\",\n 219: \"[\",\n 220: \"\\\\\",\n 221: \"]\",\n 222: \"'\"\n}\n\nexport var shift = {\n 48: \")\",\n 49: \"!\",\n 50: \"@\",\n 51: \"#\",\n 52: \"$\",\n 53: \"%\",\n 54: \"^\",\n 55: \"&\",\n 56: \"*\",\n 57: \"(\",\n 59: \":\",\n 61: \"+\",\n 173: \"_\",\n 186: \":\",\n 187: \"+\",\n 188: \"<\",\n 189: \"_\",\n 190: \">\",\n 191: \"?\",\n 192: \"~\",\n 219: \"{\",\n 220: \"|\",\n 221: \"}\",\n 222: \"\\\"\"\n}\n\nvar mac = typeof navigator != \"undefined\" && /Mac/.test(navigator.platform)\nvar ie = typeof navigator != \"undefined\" && /MSIE \\d|Trident\\/(?:[7-9]|\\d{2,})\\..*rv:(\\d+)/.exec(navigator.userAgent)\n\n// Fill in the digit keys\nfor (var i = 0; i < 10; i++) base[48 + i] = base[96 + i] = String(i)\n\n// The function keys\nfor (var i = 1; i <= 24; i++) base[i + 111] = \"F\" + i\n\n// And the alphabetic keys\nfor (var i = 65; i <= 90; i++) {\n base[i] = String.fromCharCode(i + 32)\n shift[i] = String.fromCharCode(i)\n}\n\n// For each code that doesn't have a shift-equivalent, copy the base name\nfor (var code in base) if (!shift.hasOwnProperty(code)) shift[code] = base[code]\n\nexport function keyName(event) {\n // On macOS, keys held with Shift and Cmd don't reflect the effect of Shift in `.key`.\n // On IE, shift effect is never included in `.key`.\n var ignoreKey = mac && event.metaKey && event.shiftKey && !event.ctrlKey && !event.altKey ||\n ie && event.shiftKey && event.key && event.key.length == 1 ||\n event.key == \"Unidentified\"\n var name = (!ignoreKey && event.key) ||\n (event.shiftKey ? shift : base)[event.keyCode] ||\n event.key || \"Unidentified\"\n // Edge sometimes produces wrong names (Issue #3)\n if (name == \"Esc\") name = \"Escape\"\n if (name == \"Del\") name = \"Delete\"\n // https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/8860571/\n if (name == \"Left\") name = \"ArrowLeft\"\n if (name == \"Up\") name = \"ArrowUp\"\n if (name == \"Right\") name = \"ArrowRight\"\n if (name == \"Down\") name = \"ArrowDown\"\n return name\n}\n","import { keyName, base } from 'w3c-keyname';\nimport { Plugin } from 'prosemirror-state';\n\nconst mac = typeof navigator != \"undefined\" ? /Mac|iP(hone|[oa]d)/.test(navigator.platform) : false;\nfunction normalizeKeyName(name) {\n let parts = name.split(/-(?!$)/), result = parts[parts.length - 1];\n if (result == \"Space\")\n result = \" \";\n let alt, ctrl, shift, meta;\n for (let i = 0; i < parts.length - 1; i++) {\n let mod = parts[i];\n if (/^(cmd|meta|m)$/i.test(mod))\n meta = true;\n else if (/^a(lt)?$/i.test(mod))\n alt = true;\n else if (/^(c|ctrl|control)$/i.test(mod))\n ctrl = true;\n else if (/^s(hift)?$/i.test(mod))\n shift = true;\n else if (/^mod$/i.test(mod)) {\n if (mac)\n meta = true;\n else\n ctrl = true;\n }\n else\n throw new Error(\"Unrecognized modifier name: \" + mod);\n }\n if (alt)\n result = \"Alt-\" + result;\n if (ctrl)\n result = \"Ctrl-\" + result;\n if (meta)\n result = \"Meta-\" + result;\n if (shift)\n result = \"Shift-\" + result;\n return result;\n}\nfunction normalize(map) {\n let copy = Object.create(null);\n for (let prop in map)\n copy[normalizeKeyName(prop)] = map[prop];\n return copy;\n}\nfunction modifiers(name, event, shift = true) {\n if (event.altKey)\n name = \"Alt-\" + name;\n if (event.ctrlKey)\n name = \"Ctrl-\" + name;\n if (event.metaKey)\n name = \"Meta-\" + name;\n if (shift && event.shiftKey)\n name = \"Shift-\" + name;\n return name;\n}\n/**\nCreate a keymap plugin for the given set of bindings.\n\nBindings should map key names to [command](https://prosemirror.net/docs/ref/#commands)-style\nfunctions, which will be called with `(EditorState, dispatch,\nEditorView)` arguments, and should return true when they've handled\nthe key. Note that the view argument isn't part of the command\nprotocol, but can be used as an escape hatch if a binding needs to\ndirectly interact with the UI.\n\nKey names may be strings like `\"Shift-Ctrl-Enter\"`—a key\nidentifier prefixed with zero or more modifiers. Key identifiers\nare based on the strings that can appear in\n[`KeyEvent.key`](https:developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/key).\nUse lowercase letters to refer to letter keys (or uppercase letters\nif you want shift to be held). You may use `\"Space\"` as an alias\nfor the `\" \"` name.\n\nModifiers can be given in any order. `Shift-` (or `s-`), `Alt-` (or\n`a-`), `Ctrl-` (or `c-` or `Control-`) and `Cmd-` (or `m-` or\n`Meta-`) are recognized. For characters that are created by holding\nshift, the `Shift-` prefix is implied, and should not be added\nexplicitly.\n\nYou can use `Mod-` as a shorthand for `Cmd-` on Mac and `Ctrl-` on\nother platforms.\n\nYou can add multiple keymap plugins to an editor. The order in\nwhich they appear determines their precedence (the ones early in\nthe array get to dispatch first).\n*/\nfunction keymap(bindings) {\n return new Plugin({ props: { handleKeyDown: keydownHandler(bindings) } });\n}\n/**\nGiven a set of bindings (using the same format as\n[`keymap`](https://prosemirror.net/docs/ref/#keymap.keymap)), return a [keydown\nhandler](https://prosemirror.net/docs/ref/#view.EditorProps.handleKeyDown) that handles them.\n*/\nfunction keydownHandler(bindings) {\n let map = normalize(bindings);\n return function (view, event) {\n let name = keyName(event), baseName, direct = map[modifiers(name, event)];\n if (direct && direct(view.state, view.dispatch, view))\n return true;\n // A character key\n if (name.length == 1 && name != \" \") {\n if (event.shiftKey) {\n // In case the name was already modified by shift, try looking\n // it up without its shift modifier\n let noShift = map[modifiers(name, event, false)];\n if (noShift && noShift(view.state, view.dispatch, view))\n return true;\n }\n if ((event.shiftKey || event.altKey || event.metaKey || name.charCodeAt(0) > 127) &&\n (baseName = base[event.keyCode]) && baseName != name) {\n // Try falling back to the keyCode when there's a modifier\n // active or the character produced isn't ASCII, and our table\n // produces a different name from the the keyCode. See #668,\n // #1060\n let fromCode = map[modifiers(baseName, event)];\n if (fromCode && fromCode(view.state, view.dispatch, view))\n return true;\n }\n }\n return false;\n };\n}\n\nexport { keydownHandler, keymap };\n","import { ReplaceError, Slice, Fragment, MarkType, Mark } from 'prosemirror-model';\n\n// Recovery values encode a range index and an offset. They are\n// represented as numbers, because tons of them will be created when\n// mapping, for example, a large number of decorations. The number's\n// lower 16 bits provide the index, the remaining bits the offset.\n//\n// Note: We intentionally don't use bit shift operators to en- and\n// decode these, since those clip to 32 bits, which we might in rare\n// cases want to overflow. A 64-bit float can represent 48-bit\n// integers precisely.\nconst lower16 = 0xffff;\nconst factor16 = Math.pow(2, 16);\nfunction makeRecover(index, offset) { return index + offset * factor16; }\nfunction recoverIndex(value) { return value & lower16; }\nfunction recoverOffset(value) { return (value - (value & lower16)) / factor16; }\nconst DEL_BEFORE = 1, DEL_AFTER = 2, DEL_ACROSS = 4, DEL_SIDE = 8;\n/**\nAn object representing a mapped position with extra\ninformation.\n*/\nclass MapResult {\n /**\n @internal\n */\n constructor(\n /**\n The mapped version of the position.\n */\n pos, \n /**\n @internal\n */\n delInfo, \n /**\n @internal\n */\n recover) {\n this.pos = pos;\n this.delInfo = delInfo;\n this.recover = recover;\n }\n /**\n Tells you whether the position was deleted, that is, whether the\n step removed the token on the side queried (via the `assoc`)\n argument from the document.\n */\n get deleted() { return (this.delInfo & DEL_SIDE) > 0; }\n /**\n Tells you whether the token before the mapped position was deleted.\n */\n get deletedBefore() { return (this.delInfo & (DEL_BEFORE | DEL_ACROSS)) > 0; }\n /**\n True when the token after the mapped position was deleted.\n */\n get deletedAfter() { return (this.delInfo & (DEL_AFTER | DEL_ACROSS)) > 0; }\n /**\n Tells whether any of the steps mapped through deletes across the\n position (including both the token before and after the\n position).\n */\n get deletedAcross() { return (this.delInfo & DEL_ACROSS) > 0; }\n}\n/**\nA map describing the deletions and insertions made by a step, which\ncan be used to find the correspondence between positions in the\npre-step version of a document and the same position in the\npost-step version.\n*/\nclass StepMap {\n /**\n Create a position map. The modifications to the document are\n represented as an array of numbers, in which each group of three\n represents a modified chunk as `[start, oldSize, newSize]`.\n */\n constructor(\n /**\n @internal\n */\n ranges, \n /**\n @internal\n */\n inverted = false) {\n this.ranges = ranges;\n this.inverted = inverted;\n if (!ranges.length && StepMap.empty)\n return StepMap.empty;\n }\n /**\n @internal\n */\n recover(value) {\n let diff = 0, index = recoverIndex(value);\n if (!this.inverted)\n for (let i = 0; i < index; i++)\n diff += this.ranges[i * 3 + 2] - this.ranges[i * 3 + 1];\n return this.ranges[index * 3] + diff + recoverOffset(value);\n }\n mapResult(pos, assoc = 1) { return this._map(pos, assoc, false); }\n map(pos, assoc = 1) { return this._map(pos, assoc, true); }\n /**\n @internal\n */\n _map(pos, assoc, simple) {\n let diff = 0, oldIndex = this.inverted ? 2 : 1, newIndex = this.inverted ? 1 : 2;\n for (let i = 0; i < this.ranges.length; i += 3) {\n let start = this.ranges[i] - (this.inverted ? diff : 0);\n if (start > pos)\n break;\n let oldSize = this.ranges[i + oldIndex], newSize = this.ranges[i + newIndex], end = start + oldSize;\n if (pos <= end) {\n let side = !oldSize ? assoc : pos == start ? -1 : pos == end ? 1 : assoc;\n let result = start + diff + (side < 0 ? 0 : newSize);\n if (simple)\n return result;\n let recover = pos == (assoc < 0 ? start : end) ? null : makeRecover(i / 3, pos - start);\n let del = pos == start ? DEL_AFTER : pos == end ? DEL_BEFORE : DEL_ACROSS;\n if (assoc < 0 ? pos != start : pos != end)\n del |= DEL_SIDE;\n return new MapResult(result, del, recover);\n }\n diff += newSize - oldSize;\n }\n return simple ? pos + diff : new MapResult(pos + diff, 0, null);\n }\n /**\n @internal\n */\n touches(pos, recover) {\n let diff = 0, index = recoverIndex(recover);\n let oldIndex = this.inverted ? 2 : 1, newIndex = this.inverted ? 1 : 2;\n for (let i = 0; i < this.ranges.length; i += 3) {\n let start = this.ranges[i] - (this.inverted ? diff : 0);\n if (start > pos)\n break;\n let oldSize = this.ranges[i + oldIndex], end = start + oldSize;\n if (pos <= end && i == index * 3)\n return true;\n diff += this.ranges[i + newIndex] - oldSize;\n }\n return false;\n }\n /**\n Calls the given function on each of the changed ranges included in\n this map.\n */\n forEach(f) {\n let oldIndex = this.inverted ? 2 : 1, newIndex = this.inverted ? 1 : 2;\n for (let i = 0, diff = 0; i < this.ranges.length; i += 3) {\n let start = this.ranges[i], oldStart = start - (this.inverted ? diff : 0), newStart = start + (this.inverted ? 0 : diff);\n let oldSize = this.ranges[i + oldIndex], newSize = this.ranges[i + newIndex];\n f(oldStart, oldStart + oldSize, newStart, newStart + newSize);\n diff += newSize - oldSize;\n }\n }\n /**\n Create an inverted version of this map. The result can be used to\n map positions in the post-step document to the pre-step document.\n */\n invert() {\n return new StepMap(this.ranges, !this.inverted);\n }\n /**\n @internal\n */\n toString() {\n return (this.inverted ? \"-\" : \"\") + JSON.stringify(this.ranges);\n }\n /**\n Create a map that moves all positions by offset `n` (which may be\n negative). This can be useful when applying steps meant for a\n sub-document to a larger document, or vice-versa.\n */\n static offset(n) {\n return n == 0 ? StepMap.empty : new StepMap(n < 0 ? [0, -n, 0] : [0, 0, n]);\n }\n}\n/**\nA StepMap that contains no changed ranges.\n*/\nStepMap.empty = new StepMap([]);\n/**\nA mapping represents a pipeline of zero or more [step\nmaps](https://prosemirror.net/docs/ref/#transform.StepMap). It has special provisions for losslessly\nhandling mapping positions through a series of steps in which some\nsteps are inverted versions of earlier steps. (This comes up when\n‘[rebasing](/docs/guide/#transform.rebasing)’ steps for\ncollaboration or history management.)\n*/\nclass Mapping {\n /**\n Create a new mapping with the given position maps.\n */\n constructor(\n /**\n The step maps in this mapping.\n */\n maps = [], \n /**\n @internal\n */\n mirror, \n /**\n The starting position in the `maps` array, used when `map` or\n `mapResult` is called.\n */\n from = 0, \n /**\n The end position in the `maps` array.\n */\n to = maps.length) {\n this.maps = maps;\n this.mirror = mirror;\n this.from = from;\n this.to = to;\n }\n /**\n Create a mapping that maps only through a part of this one.\n */\n slice(from = 0, to = this.maps.length) {\n return new Mapping(this.maps, this.mirror, from, to);\n }\n /**\n @internal\n */\n copy() {\n return new Mapping(this.maps.slice(), this.mirror && this.mirror.slice(), this.from, this.to);\n }\n /**\n Add a step map to the end of this mapping. If `mirrors` is\n given, it should be the index of the step map that is the mirror\n image of this one.\n */\n appendMap(map, mirrors) {\n this.to = this.maps.push(map);\n if (mirrors != null)\n this.setMirror(this.maps.length - 1, mirrors);\n }\n /**\n Add all the step maps in a given mapping to this one (preserving\n mirroring information).\n */\n appendMapping(mapping) {\n for (let i = 0, startSize = this.maps.length; i < mapping.maps.length; i++) {\n let mirr = mapping.getMirror(i);\n this.appendMap(mapping.maps[i], mirr != null && mirr < i ? startSize + mirr : undefined);\n }\n }\n /**\n Finds the offset of the step map that mirrors the map at the\n given offset, in this mapping (as per the second argument to\n `appendMap`).\n */\n getMirror(n) {\n if (this.mirror)\n for (let i = 0; i < this.mirror.length; i++)\n if (this.mirror[i] == n)\n return this.mirror[i + (i % 2 ? -1 : 1)];\n }\n /**\n @internal\n */\n setMirror(n, m) {\n if (!this.mirror)\n this.mirror = [];\n this.mirror.push(n, m);\n }\n /**\n Append the inverse of the given mapping to this one.\n */\n appendMappingInverted(mapping) {\n for (let i = mapping.maps.length - 1, totalSize = this.maps.length + mapping.maps.length; i >= 0; i--) {\n let mirr = mapping.getMirror(i);\n this.appendMap(mapping.maps[i].invert(), mirr != null && mirr > i ? totalSize - mirr - 1 : undefined);\n }\n }\n /**\n Create an inverted version of this mapping.\n */\n invert() {\n let inverse = new Mapping;\n inverse.appendMappingInverted(this);\n return inverse;\n }\n /**\n Map a position through this mapping.\n */\n map(pos, assoc = 1) {\n if (this.mirror)\n return this._map(pos, assoc, true);\n for (let i = this.from; i < this.to; i++)\n pos = this.maps[i].map(pos, assoc);\n return pos;\n }\n /**\n Map a position through this mapping, returning a mapping\n result.\n */\n mapResult(pos, assoc = 1) { return this._map(pos, assoc, false); }\n /**\n @internal\n */\n _map(pos, assoc, simple) {\n let delInfo = 0;\n for (let i = this.from; i < this.to; i++) {\n let map = this.maps[i], result = map.mapResult(pos, assoc);\n if (result.recover != null) {\n let corr = this.getMirror(i);\n if (corr != null && corr > i && corr < this.to) {\n i = corr;\n pos = this.maps[corr].recover(result.recover);\n continue;\n }\n }\n delInfo |= result.delInfo;\n pos = result.pos;\n }\n return simple ? pos : new MapResult(pos, delInfo, null);\n }\n}\n\nconst stepsByID = Object.create(null);\n/**\nA step object represents an atomic change. It generally applies\nonly to the document it was created for, since the positions\nstored in it will only make sense for that document.\n\nNew steps are defined by creating classes that extend `Step`,\noverriding the `apply`, `invert`, `map`, `getMap` and `fromJSON`\nmethods, and registering your class with a unique\nJSON-serialization identifier using\n[`Step.jsonID`](https://prosemirror.net/docs/ref/#transform.Step^jsonID).\n*/\nclass Step {\n /**\n Get the step map that represents the changes made by this step,\n and which can be used to transform between positions in the old\n and the new document.\n */\n getMap() { return StepMap.empty; }\n /**\n Try to merge this step with another one, to be applied directly\n after it. Returns the merged step when possible, null if the\n steps can't be merged.\n */\n merge(other) { return null; }\n /**\n Deserialize a step from its JSON representation. Will call\n through to the step class' own implementation of this method.\n */\n static fromJSON(schema, json) {\n if (!json || !json.stepType)\n throw new RangeError(\"Invalid input for Step.fromJSON\");\n let type = stepsByID[json.stepType];\n if (!type)\n throw new RangeError(`No step type ${json.stepType} defined`);\n return type.fromJSON(schema, json);\n }\n /**\n To be able to serialize steps to JSON, each step needs a string\n ID to attach to its JSON representation. Use this method to\n register an ID for your step classes. Try to pick something\n that's unlikely to clash with steps from other modules.\n */\n static jsonID(id, stepClass) {\n if (id in stepsByID)\n throw new RangeError(\"Duplicate use of step JSON ID \" + id);\n stepsByID[id] = stepClass;\n stepClass.prototype.jsonID = id;\n return stepClass;\n }\n}\n/**\nThe result of [applying](https://prosemirror.net/docs/ref/#transform.Step.apply) a step. Contains either a\nnew document or a failure value.\n*/\nclass StepResult {\n /**\n @internal\n */\n constructor(\n /**\n The transformed document, if successful.\n */\n doc, \n /**\n The failure message, if unsuccessful.\n */\n failed) {\n this.doc = doc;\n this.failed = failed;\n }\n /**\n Create a successful step result.\n */\n static ok(doc) { return new StepResult(doc, null); }\n /**\n Create a failed step result.\n */\n static fail(message) { return new StepResult(null, message); }\n /**\n Call [`Node.replace`](https://prosemirror.net/docs/ref/#model.Node.replace) with the given\n arguments. Create a successful result if it succeeds, and a\n failed one if it throws a `ReplaceError`.\n */\n static fromReplace(doc, from, to, slice) {\n try {\n return StepResult.ok(doc.replace(from, to, slice));\n }\n catch (e) {\n if (e instanceof ReplaceError)\n return StepResult.fail(e.message);\n throw e;\n }\n }\n}\n\nfunction mapFragment(fragment, f, parent) {\n let mapped = [];\n for (let i = 0; i < fragment.childCount; i++) {\n let child = fragment.child(i);\n if (child.content.size)\n child = child.copy(mapFragment(child.content, f, child));\n if (child.isInline)\n child = f(child, parent, i);\n mapped.push(child);\n }\n return Fragment.fromArray(mapped);\n}\n/**\nAdd a mark to all inline content between two positions.\n*/\nclass AddMarkStep extends Step {\n /**\n Create a mark step.\n */\n constructor(\n /**\n The start of the marked range.\n */\n from, \n /**\n The end of the marked range.\n */\n to, \n /**\n The mark to add.\n */\n mark) {\n super();\n this.from = from;\n this.to = to;\n this.mark = mark;\n }\n apply(doc) {\n let oldSlice = doc.slice(this.from, this.to), $from = doc.resolve(this.from);\n let parent = $from.node($from.sharedDepth(this.to));\n let slice = new Slice(mapFragment(oldSlice.content, (node, parent) => {\n if (!node.isAtom || !parent.type.allowsMarkType(this.mark.type))\n return node;\n return node.mark(this.mark.addToSet(node.marks));\n }, parent), oldSlice.openStart, oldSlice.openEnd);\n return StepResult.fromReplace(doc, this.from, this.to, slice);\n }\n invert() {\n return new RemoveMarkStep(this.from, this.to, this.mark);\n }\n map(mapping) {\n let from = mapping.mapResult(this.from, 1), to = mapping.mapResult(this.to, -1);\n if (from.deleted && to.deleted || from.pos >= to.pos)\n return null;\n return new AddMarkStep(from.pos, to.pos, this.mark);\n }\n merge(other) {\n if (other instanceof AddMarkStep &&\n other.mark.eq(this.mark) &&\n this.from <= other.to && this.to >= other.from)\n return new AddMarkStep(Math.min(this.from, other.from), Math.max(this.to, other.to), this.mark);\n return null;\n }\n toJSON() {\n return { stepType: \"addMark\", mark: this.mark.toJSON(),\n from: this.from, to: this.to };\n }\n /**\n @internal\n */\n static fromJSON(schema, json) {\n if (typeof json.from != \"number\" || typeof json.to != \"number\")\n throw new RangeError(\"Invalid input for AddMarkStep.fromJSON\");\n return new AddMarkStep(json.from, json.to, schema.markFromJSON(json.mark));\n }\n}\nStep.jsonID(\"addMark\", AddMarkStep);\n/**\nRemove a mark from all inline content between two positions.\n*/\nclass RemoveMarkStep extends Step {\n /**\n Create a mark-removing step.\n */\n constructor(\n /**\n The start of the unmarked range.\n */\n from, \n /**\n The end of the unmarked range.\n */\n to, \n /**\n The mark to remove.\n */\n mark) {\n super();\n this.from = from;\n this.to = to;\n this.mark = mark;\n }\n apply(doc) {\n let oldSlice = doc.slice(this.from, this.to);\n let slice = new Slice(mapFragment(oldSlice.content, node => {\n return node.mark(this.mark.removeFromSet(node.marks));\n }, doc), oldSlice.openStart, oldSlice.openEnd);\n return StepResult.fromReplace(doc, this.from, this.to, slice);\n }\n invert() {\n return new AddMarkStep(this.from, this.to, this.mark);\n }\n map(mapping) {\n let from = mapping.mapResult(this.from, 1), to = mapping.mapResult(this.to, -1);\n if (from.deleted && to.deleted || from.pos >= to.pos)\n return null;\n return new RemoveMarkStep(from.pos, to.pos, this.mark);\n }\n merge(other) {\n if (other instanceof RemoveMarkStep &&\n other.mark.eq(this.mark) &&\n this.from <= other.to && this.to >= other.from)\n return new RemoveMarkStep(Math.min(this.from, other.from), Math.max(this.to, other.to), this.mark);\n return null;\n }\n toJSON() {\n return { stepType: \"removeMark\", mark: this.mark.toJSON(),\n from: this.from, to: this.to };\n }\n /**\n @internal\n */\n static fromJSON(schema, json) {\n if (typeof json.from != \"number\" || typeof json.to != \"number\")\n throw new RangeError(\"Invalid input for RemoveMarkStep.fromJSON\");\n return new RemoveMarkStep(json.from, json.to, schema.markFromJSON(json.mark));\n }\n}\nStep.jsonID(\"removeMark\", RemoveMarkStep);\n/**\nAdd a mark to a specific node.\n*/\nclass AddNodeMarkStep extends Step {\n /**\n Create a node mark step.\n */\n constructor(\n /**\n The position of the target node.\n */\n pos, \n /**\n The mark to add.\n */\n mark) {\n super();\n this.pos = pos;\n this.mark = mark;\n }\n apply(doc) {\n let node = doc.nodeAt(this.pos);\n if (!node)\n return StepResult.fail(\"No node at mark step's position\");\n let updated = node.type.create(node.attrs, null, this.mark.addToSet(node.marks));\n return StepResult.fromReplace(doc, this.pos, this.pos + 1, new Slice(Fragment.from(updated), 0, node.isLeaf ? 0 : 1));\n }\n invert(doc) {\n let node = doc.nodeAt(this.pos);\n if (node) {\n let newSet = this.mark.addToSet(node.marks);\n if (newSet.length == node.marks.length) {\n for (let i = 0; i < node.marks.length; i++)\n if (!node.marks[i].isInSet(newSet))\n return new AddNodeMarkStep(this.pos, node.marks[i]);\n return new AddNodeMarkStep(this.pos, this.mark);\n }\n }\n return new RemoveNodeMarkStep(this.pos, this.mark);\n }\n map(mapping) {\n let pos = mapping.mapResult(this.pos, 1);\n return pos.deletedAfter ? null : new AddNodeMarkStep(pos.pos, this.mark);\n }\n toJSON() {\n return { stepType: \"addNodeMark\", pos: this.pos, mark: this.mark.toJSON() };\n }\n /**\n @internal\n */\n static fromJSON(schema, json) {\n if (typeof json.pos != \"number\")\n throw new RangeError(\"Invalid input for AddNodeMarkStep.fromJSON\");\n return new AddNodeMarkStep(json.pos, schema.markFromJSON(json.mark));\n }\n}\nStep.jsonID(\"addNodeMark\", AddNodeMarkStep);\n/**\nRemove a mark from a specific node.\n*/\nclass RemoveNodeMarkStep extends Step {\n /**\n Create a mark-removing step.\n */\n constructor(\n /**\n The position of the target node.\n */\n pos, \n /**\n The mark to remove.\n */\n mark) {\n super();\n this.pos = pos;\n this.mark = mark;\n }\n apply(doc) {\n let node = doc.nodeAt(this.pos);\n if (!node)\n return StepResult.fail(\"No node at mark step's position\");\n let updated = node.type.create(node.attrs, null, this.mark.removeFromSet(node.marks));\n return StepResult.fromReplace(doc, this.pos, this.pos + 1, new Slice(Fragment.from(updated), 0, node.isLeaf ? 0 : 1));\n }\n invert(doc) {\n let node = doc.nodeAt(this.pos);\n if (!node || !this.mark.isInSet(node.marks))\n return this;\n return new AddNodeMarkStep(this.pos, this.mark);\n }\n map(mapping) {\n let pos = mapping.mapResult(this.pos, 1);\n return pos.deletedAfter ? null : new RemoveNodeMarkStep(pos.pos, this.mark);\n }\n toJSON() {\n return { stepType: \"removeNodeMark\", pos: this.pos, mark: this.mark.toJSON() };\n }\n /**\n @internal\n */\n static fromJSON(schema, json) {\n if (typeof json.pos != \"number\")\n throw new RangeError(\"Invalid input for RemoveNodeMarkStep.fromJSON\");\n return new RemoveNodeMarkStep(json.pos, schema.markFromJSON(json.mark));\n }\n}\nStep.jsonID(\"removeNodeMark\", RemoveNodeMarkStep);\n\n/**\nReplace a part of the document with a slice of new content.\n*/\nclass ReplaceStep extends Step {\n /**\n The given `slice` should fit the 'gap' between `from` and\n `to`—the depths must line up, and the surrounding nodes must be\n able to be joined with the open sides of the slice. When\n `structure` is true, the step will fail if the content between\n from and to is not just a sequence of closing and then opening\n tokens (this is to guard against rebased replace steps\n overwriting something they weren't supposed to).\n */\n constructor(\n /**\n The start position of the replaced range.\n */\n from, \n /**\n The end position of the replaced range.\n */\n to, \n /**\n The slice to insert.\n */\n slice, \n /**\n @internal\n */\n structure = false) {\n super();\n this.from = from;\n this.to = to;\n this.slice = slice;\n this.structure = structure;\n }\n apply(doc) {\n if (this.structure && contentBetween(doc, this.from, this.to))\n return StepResult.fail(\"Structure replace would overwrite content\");\n return StepResult.fromReplace(doc, this.from, this.to, this.slice);\n }\n getMap() {\n return new StepMap([this.from, this.to - this.from, this.slice.size]);\n }\n invert(doc) {\n return new ReplaceStep(this.from, this.from + this.slice.size, doc.slice(this.from, this.to));\n }\n map(mapping) {\n let from = mapping.mapResult(this.from, 1), to = mapping.mapResult(this.to, -1);\n if (from.deletedAcross && to.deletedAcross)\n return null;\n return new ReplaceStep(from.pos, Math.max(from.pos, to.pos), this.slice);\n }\n merge(other) {\n if (!(other instanceof ReplaceStep) || other.structure || this.structure)\n return null;\n if (this.from + this.slice.size == other.from && !this.slice.openEnd && !other.slice.openStart) {\n let slice = this.slice.size + other.slice.size == 0 ? Slice.empty\n : new Slice(this.slice.content.append(other.slice.content), this.slice.openStart, other.slice.openEnd);\n return new ReplaceStep(this.from, this.to + (other.to - other.from), slice, this.structure);\n }\n else if (other.to == this.from && !this.slice.openStart && !other.slice.openEnd) {\n let slice = this.slice.size + other.slice.size == 0 ? Slice.empty\n : new Slice(other.slice.content.append(this.slice.content), other.slice.openStart, this.slice.openEnd);\n return new ReplaceStep(other.from, this.to, slice, this.structure);\n }\n else {\n return null;\n }\n }\n toJSON() {\n let json = { stepType: \"replace\", from: this.from, to: this.to };\n if (this.slice.size)\n json.slice = this.slice.toJSON();\n if (this.structure)\n json.structure = true;\n return json;\n }\n /**\n @internal\n */\n static fromJSON(schema, json) {\n if (typeof json.from != \"number\" || typeof json.to != \"number\")\n throw new RangeError(\"Invalid input for ReplaceStep.fromJSON\");\n return new ReplaceStep(json.from, json.to, Slice.fromJSON(schema, json.slice), !!json.structure);\n }\n}\nStep.jsonID(\"replace\", ReplaceStep);\n/**\nReplace a part of the document with a slice of content, but\npreserve a range of the replaced content by moving it into the\nslice.\n*/\nclass ReplaceAroundStep extends Step {\n /**\n Create a replace-around step with the given range and gap.\n `insert` should be the point in the slice into which the content\n of the gap should be moved. `structure` has the same meaning as\n it has in the [`ReplaceStep`](https://prosemirror.net/docs/ref/#transform.ReplaceStep) class.\n */\n constructor(\n /**\n The start position of the replaced range.\n */\n from, \n /**\n The end position of the replaced range.\n */\n to, \n /**\n The start of preserved range.\n */\n gapFrom, \n /**\n The end of preserved range.\n */\n gapTo, \n /**\n The slice to insert.\n */\n slice, \n /**\n The position in the slice where the preserved range should be\n inserted.\n */\n insert, \n /**\n @internal\n */\n structure = false) {\n super();\n this.from = from;\n this.to = to;\n this.gapFrom = gapFrom;\n this.gapTo = gapTo;\n this.slice = slice;\n this.insert = insert;\n this.structure = structure;\n }\n apply(doc) {\n if (this.structure && (contentBetween(doc, this.from, this.gapFrom) ||\n contentBetween(doc, this.gapTo, this.to)))\n return StepResult.fail(\"Structure gap-replace would overwrite content\");\n let gap = doc.slice(this.gapFrom, this.gapTo);\n if (gap.openStart || gap.openEnd)\n return StepResult.fail(\"Gap is not a flat range\");\n let inserted = this.slice.insertAt(this.insert, gap.content);\n if (!inserted)\n return StepResult.fail(\"Content does not fit in gap\");\n return StepResult.fromReplace(doc, this.from, this.to, inserted);\n }\n getMap() {\n return new StepMap([this.from, this.gapFrom - this.from, this.insert,\n this.gapTo, this.to - this.gapTo, this.slice.size - this.insert]);\n }\n invert(doc) {\n let gap = this.gapTo - this.gapFrom;\n return new ReplaceAroundStep(this.from, this.from + this.slice.size + gap, this.from + this.insert, this.from + this.insert + gap, doc.slice(this.from, this.to).removeBetween(this.gapFrom - this.from, this.gapTo - this.from), this.gapFrom - this.from, this.structure);\n }\n map(mapping) {\n let from = mapping.mapResult(this.from, 1), to = mapping.mapResult(this.to, -1);\n let gapFrom = this.from == this.gapFrom ? from.pos : mapping.map(this.gapFrom, -1);\n let gapTo = this.to == this.gapTo ? to.pos : mapping.map(this.gapTo, 1);\n if ((from.deletedAcross && to.deletedAcross) || gapFrom < from.pos || gapTo > to.pos)\n return null;\n return new ReplaceAroundStep(from.pos, to.pos, gapFrom, gapTo, this.slice, this.insert, this.structure);\n }\n toJSON() {\n let json = { stepType: \"replaceAround\", from: this.from, to: this.to,\n gapFrom: this.gapFrom, gapTo: this.gapTo, insert: this.insert };\n if (this.slice.size)\n json.slice = this.slice.toJSON();\n if (this.structure)\n json.structure = true;\n return json;\n }\n /**\n @internal\n */\n static fromJSON(schema, json) {\n if (typeof json.from != \"number\" || typeof json.to != \"number\" ||\n typeof json.gapFrom != \"number\" || typeof json.gapTo != \"number\" || typeof json.insert != \"number\")\n throw new RangeError(\"Invalid input for ReplaceAroundStep.fromJSON\");\n return new ReplaceAroundStep(json.from, json.to, json.gapFrom, json.gapTo, Slice.fromJSON(schema, json.slice), json.insert, !!json.structure);\n }\n}\nStep.jsonID(\"replaceAround\", ReplaceAroundStep);\nfunction contentBetween(doc, from, to) {\n let $from = doc.resolve(from), dist = to - from, depth = $from.depth;\n while (dist > 0 && depth > 0 && $from.indexAfter(depth) == $from.node(depth).childCount) {\n depth--;\n dist--;\n }\n if (dist > 0) {\n let next = $from.node(depth).maybeChild($from.indexAfter(depth));\n while (dist > 0) {\n if (!next || next.isLeaf)\n return true;\n next = next.firstChild;\n dist--;\n }\n }\n return false;\n}\n\nfunction addMark(tr, from, to, mark) {\n let removed = [], added = [];\n let removing, adding;\n tr.doc.nodesBetween(from, to, (node, pos, parent) => {\n if (!node.isInline)\n return;\n let marks = node.marks;\n if (!mark.isInSet(marks) && parent.type.allowsMarkType(mark.type)) {\n let start = Math.max(pos, from), end = Math.min(pos + node.nodeSize, to);\n let newSet = mark.addToSet(marks);\n for (let i = 0; i < marks.length; i++) {\n if (!marks[i].isInSet(newSet)) {\n if (removing && removing.to == start && removing.mark.eq(marks[i]))\n removing.to = end;\n else\n removed.push(removing = new RemoveMarkStep(start, end, marks[i]));\n }\n }\n if (adding && adding.to == start)\n adding.to = end;\n else\n added.push(adding = new AddMarkStep(start, end, mark));\n }\n });\n removed.forEach(s => tr.step(s));\n added.forEach(s => tr.step(s));\n}\nfunction removeMark(tr, from, to, mark) {\n let matched = [], step = 0;\n tr.doc.nodesBetween(from, to, (node, pos) => {\n if (!node.isInline)\n return;\n step++;\n let toRemove = null;\n if (mark instanceof MarkType) {\n let set = node.marks, found;\n while (found = mark.isInSet(set)) {\n (toRemove || (toRemove = [])).push(found);\n set = found.removeFromSet(set);\n }\n }\n else if (mark) {\n if (mark.isInSet(node.marks))\n toRemove = [mark];\n }\n else {\n toRemove = node.marks;\n }\n if (toRemove && toRemove.length) {\n let end = Math.min(pos + node.nodeSize, to);\n for (let i = 0; i < toRemove.length; i++) {\n let style = toRemove[i], found;\n for (let j = 0; j < matched.length; j++) {\n let m = matched[j];\n if (m.step == step - 1 && style.eq(matched[j].style))\n found = m;\n }\n if (found) {\n found.to = end;\n found.step = step;\n }\n else {\n matched.push({ style, from: Math.max(pos, from), to: end, step });\n }\n }\n }\n });\n matched.forEach(m => tr.step(new RemoveMarkStep(m.from, m.to, m.style)));\n}\nfunction clearIncompatible(tr, pos, parentType, match = parentType.contentMatch, clearNewlines = true) {\n let node = tr.doc.nodeAt(pos);\n let replSteps = [], cur = pos + 1;\n for (let i = 0; i < node.childCount; i++) {\n let child = node.child(i), end = cur + child.nodeSize;\n let allowed = match.matchType(child.type);\n if (!allowed) {\n replSteps.push(new ReplaceStep(cur, end, Slice.empty));\n }\n else {\n match = allowed;\n for (let j = 0; j < child.marks.length; j++)\n if (!parentType.allowsMarkType(child.marks[j].type))\n tr.step(new RemoveMarkStep(cur, end, child.marks[j]));\n if (clearNewlines && child.isText && parentType.whitespace != \"pre\") {\n let m, newline = /\\r?\\n|\\r/g, slice;\n while (m = newline.exec(child.text)) {\n if (!slice)\n slice = new Slice(Fragment.from(parentType.schema.text(\" \", parentType.allowedMarks(child.marks))), 0, 0);\n replSteps.push(new ReplaceStep(cur + m.index, cur + m.index + m[0].length, slice));\n }\n }\n }\n cur = end;\n }\n if (!match.validEnd) {\n let fill = match.fillBefore(Fragment.empty, true);\n tr.replace(cur, cur, new Slice(fill, 0, 0));\n }\n for (let i = replSteps.length - 1; i >= 0; i--)\n tr.step(replSteps[i]);\n}\n\nfunction canCut(node, start, end) {\n return (start == 0 || node.canReplace(start, node.childCount)) &&\n (end == node.childCount || node.canReplace(0, end));\n}\n/**\nTry to find a target depth to which the content in the given range\ncan be lifted. Will not go across\n[isolating](https://prosemirror.net/docs/ref/#model.NodeSpec.isolating) parent nodes.\n*/\nfunction liftTarget(range) {\n let parent = range.parent;\n let content = parent.content.cutByIndex(range.startIndex, range.endIndex);\n for (let depth = range.depth;; --depth) {\n let node = range.$from.node(depth);\n let index = range.$from.index(depth), endIndex = range.$to.indexAfter(depth);\n if (depth < range.depth && node.canReplace(index, endIndex, content))\n return depth;\n if (depth == 0 || node.type.spec.isolating || !canCut(node, index, endIndex))\n break;\n }\n return null;\n}\nfunction lift(tr, range, target) {\n let { $from, $to, depth } = range;\n let gapStart = $from.before(depth + 1), gapEnd = $to.after(depth + 1);\n let start = gapStart, end = gapEnd;\n let before = Fragment.empty, openStart = 0;\n for (let d = depth, splitting = false; d > target; d--)\n if (splitting || $from.index(d) > 0) {\n splitting = true;\n before = Fragment.from($from.node(d).copy(before));\n openStart++;\n }\n else {\n start--;\n }\n let after = Fragment.empty, openEnd = 0;\n for (let d = depth, splitting = false; d > target; d--)\n if (splitting || $to.after(d + 1) < $to.end(d)) {\n splitting = true;\n after = Fragment.from($to.node(d).copy(after));\n openEnd++;\n }\n else {\n end++;\n }\n tr.step(new ReplaceAroundStep(start, end, gapStart, gapEnd, new Slice(before.append(after), openStart, openEnd), before.size - openStart, true));\n}\n/**\nTry to find a valid way to wrap the content in the given range in a\nnode of the given type. May introduce extra nodes around and inside\nthe wrapper node, if necessary. Returns null if no valid wrapping\ncould be found. When `innerRange` is given, that range's content is\nused as the content to fit into the wrapping, instead of the\ncontent of `range`.\n*/\nfunction findWrapping(range, nodeType, attrs = null, innerRange = range) {\n let around = findWrappingOutside(range, nodeType);\n let inner = around && findWrappingInside(innerRange, nodeType);\n if (!inner)\n return null;\n return around.map(withAttrs)\n .concat({ type: nodeType, attrs }).concat(inner.map(withAttrs));\n}\nfunction withAttrs(type) { return { type, attrs: null }; }\nfunction findWrappingOutside(range, type) {\n let { parent, startIndex, endIndex } = range;\n let around = parent.contentMatchAt(startIndex).findWrapping(type);\n if (!around)\n return null;\n let outer = around.length ? around[0] : type;\n return parent.canReplaceWith(startIndex, endIndex, outer) ? around : null;\n}\nfunction findWrappingInside(range, type) {\n let { parent, startIndex, endIndex } = range;\n let inner = parent.child(startIndex);\n let inside = type.contentMatch.findWrapping(inner.type);\n if (!inside)\n return null;\n let lastType = inside.length ? inside[inside.length - 1] : type;\n let innerMatch = lastType.contentMatch;\n for (let i = startIndex; innerMatch && i < endIndex; i++)\n innerMatch = innerMatch.matchType(parent.child(i).type);\n if (!innerMatch || !innerMatch.validEnd)\n return null;\n return inside;\n}\nfunction wrap(tr, range, wrappers) {\n let content = Fragment.empty;\n for (let i = wrappers.length - 1; i >= 0; i--) {\n if (content.size) {\n let match = wrappers[i].type.contentMatch.matchFragment(content);\n if (!match || !match.validEnd)\n throw new RangeError(\"Wrapper type given to Transform.wrap does not form valid content of its parent wrapper\");\n }\n content = Fragment.from(wrappers[i].type.create(wrappers[i].attrs, content));\n }\n let start = range.start, end = range.end;\n tr.step(new ReplaceAroundStep(start, end, start, end, new Slice(content, 0, 0), wrappers.length, true));\n}\nfunction setBlockType(tr, from, to, type, attrs) {\n if (!type.isTextblock)\n throw new RangeError(\"Type given to setBlockType should be a textblock\");\n let mapFrom = tr.steps.length;\n tr.doc.nodesBetween(from, to, (node, pos) => {\n if (node.isTextblock && !node.hasMarkup(type, attrs) && canChangeType(tr.doc, tr.mapping.slice(mapFrom).map(pos), type)) {\n let convertNewlines = null;\n if (type.schema.linebreakReplacement) {\n let pre = type.whitespace == \"pre\", supportLinebreak = !!type.contentMatch.matchType(type.schema.linebreakReplacement);\n if (pre && !supportLinebreak)\n convertNewlines = false;\n else if (!pre && supportLinebreak)\n convertNewlines = true;\n }\n // Ensure all markup that isn't allowed in the new node type is cleared\n if (convertNewlines === false)\n replaceLinebreaks(tr, node, pos, mapFrom);\n clearIncompatible(tr, tr.mapping.slice(mapFrom).map(pos, 1), type, undefined, convertNewlines === null);\n let mapping = tr.mapping.slice(mapFrom);\n let startM = mapping.map(pos, 1), endM = mapping.map(pos + node.nodeSize, 1);\n tr.step(new ReplaceAroundStep(startM, endM, startM + 1, endM - 1, new Slice(Fragment.from(type.create(attrs, null, node.marks)), 0, 0), 1, true));\n if (convertNewlines === true)\n replaceNewlines(tr, node, pos, mapFrom);\n return false;\n }\n });\n}\nfunction replaceNewlines(tr, node, pos, mapFrom) {\n node.forEach((child, offset) => {\n if (child.isText) {\n let m, newline = /\\r?\\n|\\r/g;\n while (m = newline.exec(child.text)) {\n let start = tr.mapping.slice(mapFrom).map(pos + 1 + offset + m.index);\n tr.replaceWith(start, start + 1, node.type.schema.linebreakReplacement.create());\n }\n }\n });\n}\nfunction replaceLinebreaks(tr, node, pos, mapFrom) {\n node.forEach((child, offset) => {\n if (child.type == child.type.schema.linebreakReplacement) {\n let start = tr.mapping.slice(mapFrom).map(pos + 1 + offset);\n tr.replaceWith(start, start + 1, node.type.schema.text(\"\\n\"));\n }\n });\n}\nfunction canChangeType(doc, pos, type) {\n let $pos = doc.resolve(pos), index = $pos.index();\n return $pos.parent.canReplaceWith(index, index + 1, type);\n}\n/**\nChange the type, attributes, and/or marks of the node at `pos`.\nWhen `type` isn't given, the existing node type is preserved,\n*/\nfunction setNodeMarkup(tr, pos, type, attrs, marks) {\n let node = tr.doc.nodeAt(pos);\n if (!node)\n throw new RangeError(\"No node at given position\");\n if (!type)\n type = node.type;\n let newNode = type.create(attrs, null, marks || node.marks);\n if (node.isLeaf)\n return tr.replaceWith(pos, pos + node.nodeSize, newNode);\n if (!type.validContent(node.content))\n throw new RangeError(\"Invalid content for node type \" + type.name);\n tr.step(new ReplaceAroundStep(pos, pos + node.nodeSize, pos + 1, pos + node.nodeSize - 1, new Slice(Fragment.from(newNode), 0, 0), 1, true));\n}\n/**\nCheck whether splitting at the given position is allowed.\n*/\nfunction canSplit(doc, pos, depth = 1, typesAfter) {\n let $pos = doc.resolve(pos), base = $pos.depth - depth;\n let innerType = (typesAfter && typesAfter[typesAfter.length - 1]) || $pos.parent;\n if (base < 0 || $pos.parent.type.spec.isolating ||\n !$pos.parent.canReplace($pos.index(), $pos.parent.childCount) ||\n !innerType.type.validContent($pos.parent.content.cutByIndex($pos.index(), $pos.parent.childCount)))\n return false;\n for (let d = $pos.depth - 1, i = depth - 2; d > base; d--, i--) {\n let node = $pos.node(d), index = $pos.index(d);\n if (node.type.spec.isolating)\n return false;\n let rest = node.content.cutByIndex(index, node.childCount);\n let overrideChild = typesAfter && typesAfter[i + 1];\n if (overrideChild)\n rest = rest.replaceChild(0, overrideChild.type.create(overrideChild.attrs));\n let after = (typesAfter && typesAfter[i]) || node;\n if (!node.canReplace(index + 1, node.childCount) || !after.type.validContent(rest))\n return false;\n }\n let index = $pos.indexAfter(base);\n let baseType = typesAfter && typesAfter[0];\n return $pos.node(base).canReplaceWith(index, index, baseType ? baseType.type : $pos.node(base + 1).type);\n}\nfunction split(tr, pos, depth = 1, typesAfter) {\n let $pos = tr.doc.resolve(pos), before = Fragment.empty, after = Fragment.empty;\n for (let d = $pos.depth, e = $pos.depth - depth, i = depth - 1; d > e; d--, i--) {\n before = Fragment.from($pos.node(d).copy(before));\n let typeAfter = typesAfter && typesAfter[i];\n after = Fragment.from(typeAfter ? typeAfter.type.create(typeAfter.attrs, after) : $pos.node(d).copy(after));\n }\n tr.step(new ReplaceStep(pos, pos, new Slice(before.append(after), depth, depth), true));\n}\n/**\nTest whether the blocks before and after a given position can be\njoined.\n*/\nfunction canJoin(doc, pos) {\n let $pos = doc.resolve(pos), index = $pos.index();\n return joinable($pos.nodeBefore, $pos.nodeAfter) &&\n $pos.parent.canReplace(index, index + 1);\n}\nfunction joinable(a, b) {\n return !!(a && b && !a.isLeaf && a.canAppend(b));\n}\n/**\nFind an ancestor of the given position that can be joined to the\nblock before (or after if `dir` is positive). Returns the joinable\npoint, if any.\n*/\nfunction joinPoint(doc, pos, dir = -1) {\n let $pos = doc.resolve(pos);\n for (let d = $pos.depth;; d--) {\n let before, after, index = $pos.index(d);\n if (d == $pos.depth) {\n before = $pos.nodeBefore;\n after = $pos.nodeAfter;\n }\n else if (dir > 0) {\n before = $pos.node(d + 1);\n index++;\n after = $pos.node(d).maybeChild(index);\n }\n else {\n before = $pos.node(d).maybeChild(index - 1);\n after = $pos.node(d + 1);\n }\n if (before && !before.isTextblock && joinable(before, after) &&\n $pos.node(d).canReplace(index, index + 1))\n return pos;\n if (d == 0)\n break;\n pos = dir < 0 ? $pos.before(d) : $pos.after(d);\n }\n}\nfunction join(tr, pos, depth) {\n let step = new ReplaceStep(pos - depth, pos + depth, Slice.empty, true);\n tr.step(step);\n}\n/**\nTry to find a point where a node of the given type can be inserted\nnear `pos`, by searching up the node hierarchy when `pos` itself\nisn't a valid place but is at the start or end of a node. Return\nnull if no position was found.\n*/\nfunction insertPoint(doc, pos, nodeType) {\n let $pos = doc.resolve(pos);\n if ($pos.parent.canReplaceWith($pos.index(), $pos.index(), nodeType))\n return pos;\n if ($pos.parentOffset == 0)\n for (let d = $pos.depth - 1; d >= 0; d--) {\n let index = $pos.index(d);\n if ($pos.node(d).canReplaceWith(index, index, nodeType))\n return $pos.before(d + 1);\n if (index > 0)\n return null;\n }\n if ($pos.parentOffset == $pos.parent.content.size)\n for (let d = $pos.depth - 1; d >= 0; d--) {\n let index = $pos.indexAfter(d);\n if ($pos.node(d).canReplaceWith(index, index, nodeType))\n return $pos.after(d + 1);\n if (index < $pos.node(d).childCount)\n return null;\n }\n return null;\n}\n/**\nFinds a position at or around the given position where the given\nslice can be inserted. Will look at parent nodes' nearest boundary\nand try there, even if the original position wasn't directly at the\nstart or end of that node. Returns null when no position was found.\n*/\nfunction dropPoint(doc, pos, slice) {\n let $pos = doc.resolve(pos);\n if (!slice.content.size)\n return pos;\n let content = slice.content;\n for (let i = 0; i < slice.openStart; i++)\n content = content.firstChild.content;\n for (let pass = 1; pass <= (slice.openStart == 0 && slice.size ? 2 : 1); pass++) {\n for (let d = $pos.depth; d >= 0; d--) {\n let bias = d == $pos.depth ? 0 : $pos.pos <= ($pos.start(d + 1) + $pos.end(d + 1)) / 2 ? -1 : 1;\n let insertPos = $pos.index(d) + (bias > 0 ? 1 : 0);\n let parent = $pos.node(d), fits = false;\n if (pass == 1) {\n fits = parent.canReplace(insertPos, insertPos, content);\n }\n else {\n let wrapping = parent.contentMatchAt(insertPos).findWrapping(content.firstChild.type);\n fits = wrapping && parent.canReplaceWith(insertPos, insertPos, wrapping[0]);\n }\n if (fits)\n return bias == 0 ? $pos.pos : bias < 0 ? $pos.before(d + 1) : $pos.after(d + 1);\n }\n }\n return null;\n}\n\n/**\n‘Fit’ a slice into a given position in the document, producing a\n[step](https://prosemirror.net/docs/ref/#transform.Step) that inserts it. Will return null if\nthere's no meaningful way to insert the slice here, or inserting it\nwould be a no-op (an empty slice over an empty range).\n*/\nfunction replaceStep(doc, from, to = from, slice = Slice.empty) {\n if (from == to && !slice.size)\n return null;\n let $from = doc.resolve(from), $to = doc.resolve(to);\n // Optimization -- avoid work if it's obvious that it's not needed.\n if (fitsTrivially($from, $to, slice))\n return new ReplaceStep(from, to, slice);\n return new Fitter($from, $to, slice).fit();\n}\nfunction fitsTrivially($from, $to, slice) {\n return !slice.openStart && !slice.openEnd && $from.start() == $to.start() &&\n $from.parent.canReplace($from.index(), $to.index(), slice.content);\n}\n// Algorithm for 'placing' the elements of a slice into a gap:\n//\n// We consider the content of each node that is open to the left to be\n// independently placeable. I.e. in , when the\n// paragraph on the left is open, \"foo\" can be placed (somewhere on\n// the left side of the replacement gap) independently from p(\"bar\").\n//\n// This class tracks the state of the placement progress in the\n// following properties:\n//\n// - `frontier` holds a stack of `{type, match}` objects that\n// represent the open side of the replacement. It starts at\n// `$from`, then moves forward as content is placed, and is finally\n// reconciled with `$to`.\n//\n// - `unplaced` is a slice that represents the content that hasn't\n// been placed yet.\n//\n// - `placed` is a fragment of placed content. Its open-start value\n// is implicit in `$from`, and its open-end value in `frontier`.\nclass Fitter {\n constructor($from, $to, unplaced) {\n this.$from = $from;\n this.$to = $to;\n this.unplaced = unplaced;\n this.frontier = [];\n this.placed = Fragment.empty;\n for (let i = 0; i <= $from.depth; i++) {\n let node = $from.node(i);\n this.frontier.push({\n type: node.type,\n match: node.contentMatchAt($from.indexAfter(i))\n });\n }\n for (let i = $from.depth; i > 0; i--)\n this.placed = Fragment.from($from.node(i).copy(this.placed));\n }\n get depth() { return this.frontier.length - 1; }\n fit() {\n // As long as there's unplaced content, try to place some of it.\n // If that fails, either increase the open score of the unplaced\n // slice, or drop nodes from it, and then try again.\n while (this.unplaced.size) {\n let fit = this.findFittable();\n if (fit)\n this.placeNodes(fit);\n else\n this.openMore() || this.dropNode();\n }\n // When there's inline content directly after the frontier _and_\n // directly after `this.$to`, we must generate a `ReplaceAround`\n // step that pulls that content into the node after the frontier.\n // That means the fitting must be done to the end of the textblock\n // node after `this.$to`, not `this.$to` itself.\n let moveInline = this.mustMoveInline(), placedSize = this.placed.size - this.depth - this.$from.depth;\n let $from = this.$from, $to = this.close(moveInline < 0 ? this.$to : $from.doc.resolve(moveInline));\n if (!$to)\n return null;\n // If closing to `$to` succeeded, create a step\n let content = this.placed, openStart = $from.depth, openEnd = $to.depth;\n while (openStart && openEnd && content.childCount == 1) { // Normalize by dropping open parent nodes\n content = content.firstChild.content;\n openStart--;\n openEnd--;\n }\n let slice = new Slice(content, openStart, openEnd);\n if (moveInline > -1)\n return new ReplaceAroundStep($from.pos, moveInline, this.$to.pos, this.$to.end(), slice, placedSize);\n if (slice.size || $from.pos != this.$to.pos) // Don't generate no-op steps\n return new ReplaceStep($from.pos, $to.pos, slice);\n return null;\n }\n // Find a position on the start spine of `this.unplaced` that has\n // content that can be moved somewhere on the frontier. Returns two\n // depths, one for the slice and one for the frontier.\n findFittable() {\n let startDepth = this.unplaced.openStart;\n for (let cur = this.unplaced.content, d = 0, openEnd = this.unplaced.openEnd; d < startDepth; d++) {\n let node = cur.firstChild;\n if (cur.childCount > 1)\n openEnd = 0;\n if (node.type.spec.isolating && openEnd <= d) {\n startDepth = d;\n break;\n }\n cur = node.content;\n }\n // Only try wrapping nodes (pass 2) after finding a place without\n // wrapping failed.\n for (let pass = 1; pass <= 2; pass++) {\n for (let sliceDepth = pass == 1 ? startDepth : this.unplaced.openStart; sliceDepth >= 0; sliceDepth--) {\n let fragment, parent = null;\n if (sliceDepth) {\n parent = contentAt(this.unplaced.content, sliceDepth - 1).firstChild;\n fragment = parent.content;\n }\n else {\n fragment = this.unplaced.content;\n }\n let first = fragment.firstChild;\n for (let frontierDepth = this.depth; frontierDepth >= 0; frontierDepth--) {\n let { type, match } = this.frontier[frontierDepth], wrap, inject = null;\n // In pass 1, if the next node matches, or there is no next\n // node but the parents look compatible, we've found a\n // place.\n if (pass == 1 && (first ? match.matchType(first.type) || (inject = match.fillBefore(Fragment.from(first), false))\n : parent && type.compatibleContent(parent.type)))\n return { sliceDepth, frontierDepth, parent, inject };\n // In pass 2, look for a set of wrapping nodes that make\n // `first` fit here.\n else if (pass == 2 && first && (wrap = match.findWrapping(first.type)))\n return { sliceDepth, frontierDepth, parent, wrap };\n // Don't continue looking further up if the parent node\n // would fit here.\n if (parent && match.matchType(parent.type))\n break;\n }\n }\n }\n }\n openMore() {\n let { content, openStart, openEnd } = this.unplaced;\n let inner = contentAt(content, openStart);\n if (!inner.childCount || inner.firstChild.isLeaf)\n return false;\n this.unplaced = new Slice(content, openStart + 1, Math.max(openEnd, inner.size + openStart >= content.size - openEnd ? openStart + 1 : 0));\n return true;\n }\n dropNode() {\n let { content, openStart, openEnd } = this.unplaced;\n let inner = contentAt(content, openStart);\n if (inner.childCount <= 1 && openStart > 0) {\n let openAtEnd = content.size - openStart <= openStart + inner.size;\n this.unplaced = new Slice(dropFromFragment(content, openStart - 1, 1), openStart - 1, openAtEnd ? openStart - 1 : openEnd);\n }\n else {\n this.unplaced = new Slice(dropFromFragment(content, openStart, 1), openStart, openEnd);\n }\n }\n // Move content from the unplaced slice at `sliceDepth` to the\n // frontier node at `frontierDepth`. Close that frontier node when\n // applicable.\n placeNodes({ sliceDepth, frontierDepth, parent, inject, wrap }) {\n while (this.depth > frontierDepth)\n this.closeFrontierNode();\n if (wrap)\n for (let i = 0; i < wrap.length; i++)\n this.openFrontierNode(wrap[i]);\n let slice = this.unplaced, fragment = parent ? parent.content : slice.content;\n let openStart = slice.openStart - sliceDepth;\n let taken = 0, add = [];\n let { match, type } = this.frontier[frontierDepth];\n if (inject) {\n for (let i = 0; i < inject.childCount; i++)\n add.push(inject.child(i));\n match = match.matchFragment(inject);\n }\n // Computes the amount of (end) open nodes at the end of the\n // fragment. When 0, the parent is open, but no more. When\n // negative, nothing is open.\n let openEndCount = (fragment.size + sliceDepth) - (slice.content.size - slice.openEnd);\n // Scan over the fragment, fitting as many child nodes as\n // possible.\n while (taken < fragment.childCount) {\n let next = fragment.child(taken), matches = match.matchType(next.type);\n if (!matches)\n break;\n taken++;\n if (taken > 1 || openStart == 0 || next.content.size) { // Drop empty open nodes\n match = matches;\n add.push(closeNodeStart(next.mark(type.allowedMarks(next.marks)), taken == 1 ? openStart : 0, taken == fragment.childCount ? openEndCount : -1));\n }\n }\n let toEnd = taken == fragment.childCount;\n if (!toEnd)\n openEndCount = -1;\n this.placed = addToFragment(this.placed, frontierDepth, Fragment.from(add));\n this.frontier[frontierDepth].match = match;\n // If the parent types match, and the entire node was moved, and\n // it's not open, close this frontier node right away.\n if (toEnd && openEndCount < 0 && parent && parent.type == this.frontier[this.depth].type && this.frontier.length > 1)\n this.closeFrontierNode();\n // Add new frontier nodes for any open nodes at the end.\n for (let i = 0, cur = fragment; i < openEndCount; i++) {\n let node = cur.lastChild;\n this.frontier.push({ type: node.type, match: node.contentMatchAt(node.childCount) });\n cur = node.content;\n }\n // Update `this.unplaced`. Drop the entire node from which we\n // placed it we got to its end, otherwise just drop the placed\n // nodes.\n this.unplaced = !toEnd ? new Slice(dropFromFragment(slice.content, sliceDepth, taken), slice.openStart, slice.openEnd)\n : sliceDepth == 0 ? Slice.empty\n : new Slice(dropFromFragment(slice.content, sliceDepth - 1, 1), sliceDepth - 1, openEndCount < 0 ? slice.openEnd : sliceDepth - 1);\n }\n mustMoveInline() {\n if (!this.$to.parent.isTextblock)\n return -1;\n let top = this.frontier[this.depth], level;\n if (!top.type.isTextblock || !contentAfterFits(this.$to, this.$to.depth, top.type, top.match, false) ||\n (this.$to.depth == this.depth && (level = this.findCloseLevel(this.$to)) && level.depth == this.depth))\n return -1;\n let { depth } = this.$to, after = this.$to.after(depth);\n while (depth > 1 && after == this.$to.end(--depth))\n ++after;\n return after;\n }\n findCloseLevel($to) {\n scan: for (let i = Math.min(this.depth, $to.depth); i >= 0; i--) {\n let { match, type } = this.frontier[i];\n let dropInner = i < $to.depth && $to.end(i + 1) == $to.pos + ($to.depth - (i + 1));\n let fit = contentAfterFits($to, i, type, match, dropInner);\n if (!fit)\n continue;\n for (let d = i - 1; d >= 0; d--) {\n let { match, type } = this.frontier[d];\n let matches = contentAfterFits($to, d, type, match, true);\n if (!matches || matches.childCount)\n continue scan;\n }\n return { depth: i, fit, move: dropInner ? $to.doc.resolve($to.after(i + 1)) : $to };\n }\n }\n close($to) {\n let close = this.findCloseLevel($to);\n if (!close)\n return null;\n while (this.depth > close.depth)\n this.closeFrontierNode();\n if (close.fit.childCount)\n this.placed = addToFragment(this.placed, close.depth, close.fit);\n $to = close.move;\n for (let d = close.depth + 1; d <= $to.depth; d++) {\n let node = $to.node(d), add = node.type.contentMatch.fillBefore(node.content, true, $to.index(d));\n this.openFrontierNode(node.type, node.attrs, add);\n }\n return $to;\n }\n openFrontierNode(type, attrs = null, content) {\n let top = this.frontier[this.depth];\n top.match = top.match.matchType(type);\n this.placed = addToFragment(this.placed, this.depth, Fragment.from(type.create(attrs, content)));\n this.frontier.push({ type, match: type.contentMatch });\n }\n closeFrontierNode() {\n let open = this.frontier.pop();\n let add = open.match.fillBefore(Fragment.empty, true);\n if (add.childCount)\n this.placed = addToFragment(this.placed, this.frontier.length, add);\n }\n}\nfunction dropFromFragment(fragment, depth, count) {\n if (depth == 0)\n return fragment.cutByIndex(count, fragment.childCount);\n return fragment.replaceChild(0, fragment.firstChild.copy(dropFromFragment(fragment.firstChild.content, depth - 1, count)));\n}\nfunction addToFragment(fragment, depth, content) {\n if (depth == 0)\n return fragment.append(content);\n return fragment.replaceChild(fragment.childCount - 1, fragment.lastChild.copy(addToFragment(fragment.lastChild.content, depth - 1, content)));\n}\nfunction contentAt(fragment, depth) {\n for (let i = 0; i < depth; i++)\n fragment = fragment.firstChild.content;\n return fragment;\n}\nfunction closeNodeStart(node, openStart, openEnd) {\n if (openStart <= 0)\n return node;\n let frag = node.content;\n if (openStart > 1)\n frag = frag.replaceChild(0, closeNodeStart(frag.firstChild, openStart - 1, frag.childCount == 1 ? openEnd - 1 : 0));\n if (openStart > 0) {\n frag = node.type.contentMatch.fillBefore(frag).append(frag);\n if (openEnd <= 0)\n frag = frag.append(node.type.contentMatch.matchFragment(frag).fillBefore(Fragment.empty, true));\n }\n return node.copy(frag);\n}\nfunction contentAfterFits($to, depth, type, match, open) {\n let node = $to.node(depth), index = open ? $to.indexAfter(depth) : $to.index(depth);\n if (index == node.childCount && !type.compatibleContent(node.type))\n return null;\n let fit = match.fillBefore(node.content, true, index);\n return fit && !invalidMarks(type, node.content, index) ? fit : null;\n}\nfunction invalidMarks(type, fragment, start) {\n for (let i = start; i < fragment.childCount; i++)\n if (!type.allowsMarks(fragment.child(i).marks))\n return true;\n return false;\n}\nfunction definesContent(type) {\n return type.spec.defining || type.spec.definingForContent;\n}\nfunction replaceRange(tr, from, to, slice) {\n if (!slice.size)\n return tr.deleteRange(from, to);\n let $from = tr.doc.resolve(from), $to = tr.doc.resolve(to);\n if (fitsTrivially($from, $to, slice))\n return tr.step(new ReplaceStep(from, to, slice));\n let targetDepths = coveredDepths($from, tr.doc.resolve(to));\n // Can't replace the whole document, so remove 0 if it's present\n if (targetDepths[targetDepths.length - 1] == 0)\n targetDepths.pop();\n // Negative numbers represent not expansion over the whole node at\n // that depth, but replacing from $from.before(-D) to $to.pos.\n let preferredTarget = -($from.depth + 1);\n targetDepths.unshift(preferredTarget);\n // This loop picks a preferred target depth, if one of the covering\n // depths is not outside of a defining node, and adds negative\n // depths for any depth that has $from at its start and does not\n // cross a defining node.\n for (let d = $from.depth, pos = $from.pos - 1; d > 0; d--, pos--) {\n let spec = $from.node(d).type.spec;\n if (spec.defining || spec.definingAsContext || spec.isolating)\n break;\n if (targetDepths.indexOf(d) > -1)\n preferredTarget = d;\n else if ($from.before(d) == pos)\n targetDepths.splice(1, 0, -d);\n }\n // Try to fit each possible depth of the slice into each possible\n // target depth, starting with the preferred depths.\n let preferredTargetIndex = targetDepths.indexOf(preferredTarget);\n let leftNodes = [], preferredDepth = slice.openStart;\n for (let content = slice.content, i = 0;; i++) {\n let node = content.firstChild;\n leftNodes.push(node);\n if (i == slice.openStart)\n break;\n content = node.content;\n }\n // Back up preferredDepth to cover defining textblocks directly\n // above it, possibly skipping a non-defining textblock.\n for (let d = preferredDepth - 1; d >= 0; d--) {\n let leftNode = leftNodes[d], def = definesContent(leftNode.type);\n if (def && !leftNode.sameMarkup($from.node(Math.abs(preferredTarget) - 1)))\n preferredDepth = d;\n else if (def || !leftNode.type.isTextblock)\n break;\n }\n for (let j = slice.openStart; j >= 0; j--) {\n let openDepth = (j + preferredDepth + 1) % (slice.openStart + 1);\n let insert = leftNodes[openDepth];\n if (!insert)\n continue;\n for (let i = 0; i < targetDepths.length; i++) {\n // Loop over possible expansion levels, starting with the\n // preferred one\n let targetDepth = targetDepths[(i + preferredTargetIndex) % targetDepths.length], expand = true;\n if (targetDepth < 0) {\n expand = false;\n targetDepth = -targetDepth;\n }\n let parent = $from.node(targetDepth - 1), index = $from.index(targetDepth - 1);\n if (parent.canReplaceWith(index, index, insert.type, insert.marks))\n return tr.replace($from.before(targetDepth), expand ? $to.after(targetDepth) : to, new Slice(closeFragment(slice.content, 0, slice.openStart, openDepth), openDepth, slice.openEnd));\n }\n }\n let startSteps = tr.steps.length;\n for (let i = targetDepths.length - 1; i >= 0; i--) {\n tr.replace(from, to, slice);\n if (tr.steps.length > startSteps)\n break;\n let depth = targetDepths[i];\n if (depth < 0)\n continue;\n from = $from.before(depth);\n to = $to.after(depth);\n }\n}\nfunction closeFragment(fragment, depth, oldOpen, newOpen, parent) {\n if (depth < oldOpen) {\n let first = fragment.firstChild;\n fragment = fragment.replaceChild(0, first.copy(closeFragment(first.content, depth + 1, oldOpen, newOpen, first)));\n }\n if (depth > newOpen) {\n let match = parent.contentMatchAt(0);\n let start = match.fillBefore(fragment).append(fragment);\n fragment = start.append(match.matchFragment(start).fillBefore(Fragment.empty, true));\n }\n return fragment;\n}\nfunction replaceRangeWith(tr, from, to, node) {\n if (!node.isInline && from == to && tr.doc.resolve(from).parent.content.size) {\n let point = insertPoint(tr.doc, from, node.type);\n if (point != null)\n from = to = point;\n }\n tr.replaceRange(from, to, new Slice(Fragment.from(node), 0, 0));\n}\nfunction deleteRange(tr, from, to) {\n let $from = tr.doc.resolve(from), $to = tr.doc.resolve(to);\n let covered = coveredDepths($from, $to);\n for (let i = 0; i < covered.length; i++) {\n let depth = covered[i], last = i == covered.length - 1;\n if ((last && depth == 0) || $from.node(depth).type.contentMatch.validEnd)\n return tr.delete($from.start(depth), $to.end(depth));\n if (depth > 0 && (last || $from.node(depth - 1).canReplace($from.index(depth - 1), $to.indexAfter(depth - 1))))\n return tr.delete($from.before(depth), $to.after(depth));\n }\n for (let d = 1; d <= $from.depth && d <= $to.depth; d++) {\n if (from - $from.start(d) == $from.depth - d && to > $from.end(d) && $to.end(d) - to != $to.depth - d)\n return tr.delete($from.before(d), to);\n }\n tr.delete(from, to);\n}\n// Returns an array of all depths for which $from - $to spans the\n// whole content of the nodes at that depth.\nfunction coveredDepths($from, $to) {\n let result = [], minDepth = Math.min($from.depth, $to.depth);\n for (let d = minDepth; d >= 0; d--) {\n let start = $from.start(d);\n if (start < $from.pos - ($from.depth - d) ||\n $to.end(d) > $to.pos + ($to.depth - d) ||\n $from.node(d).type.spec.isolating ||\n $to.node(d).type.spec.isolating)\n break;\n if (start == $to.start(d) ||\n (d == $from.depth && d == $to.depth && $from.parent.inlineContent && $to.parent.inlineContent &&\n d && $to.start(d - 1) == start - 1))\n result.push(d);\n }\n return result;\n}\n\n/**\nUpdate an attribute in a specific node.\n*/\nclass AttrStep extends Step {\n /**\n Construct an attribute step.\n */\n constructor(\n /**\n The position of the target node.\n */\n pos, \n /**\n The attribute to set.\n */\n attr, \n // The attribute's new value.\n value) {\n super();\n this.pos = pos;\n this.attr = attr;\n this.value = value;\n }\n apply(doc) {\n let node = doc.nodeAt(this.pos);\n if (!node)\n return StepResult.fail(\"No node at attribute step's position\");\n let attrs = Object.create(null);\n for (let name in node.attrs)\n attrs[name] = node.attrs[name];\n attrs[this.attr] = this.value;\n let updated = node.type.create(attrs, null, node.marks);\n return StepResult.fromReplace(doc, this.pos, this.pos + 1, new Slice(Fragment.from(updated), 0, node.isLeaf ? 0 : 1));\n }\n getMap() {\n return StepMap.empty;\n }\n invert(doc) {\n return new AttrStep(this.pos, this.attr, doc.nodeAt(this.pos).attrs[this.attr]);\n }\n map(mapping) {\n let pos = mapping.mapResult(this.pos, 1);\n return pos.deletedAfter ? null : new AttrStep(pos.pos, this.attr, this.value);\n }\n toJSON() {\n return { stepType: \"attr\", pos: this.pos, attr: this.attr, value: this.value };\n }\n static fromJSON(schema, json) {\n if (typeof json.pos != \"number\" || typeof json.attr != \"string\")\n throw new RangeError(\"Invalid input for AttrStep.fromJSON\");\n return new AttrStep(json.pos, json.attr, json.value);\n }\n}\nStep.jsonID(\"attr\", AttrStep);\n/**\nUpdate an attribute in the doc node.\n*/\nclass DocAttrStep extends Step {\n /**\n Construct an attribute step.\n */\n constructor(\n /**\n The attribute to set.\n */\n attr, \n // The attribute's new value.\n value) {\n super();\n this.attr = attr;\n this.value = value;\n }\n apply(doc) {\n let attrs = Object.create(null);\n for (let name in doc.attrs)\n attrs[name] = doc.attrs[name];\n attrs[this.attr] = this.value;\n let updated = doc.type.create(attrs, doc.content, doc.marks);\n return StepResult.ok(updated);\n }\n getMap() {\n return StepMap.empty;\n }\n invert(doc) {\n return new DocAttrStep(this.attr, doc.attrs[this.attr]);\n }\n map(mapping) {\n return this;\n }\n toJSON() {\n return { stepType: \"docAttr\", attr: this.attr, value: this.value };\n }\n static fromJSON(schema, json) {\n if (typeof json.attr != \"string\")\n throw new RangeError(\"Invalid input for DocAttrStep.fromJSON\");\n return new DocAttrStep(json.attr, json.value);\n }\n}\nStep.jsonID(\"docAttr\", DocAttrStep);\n\n/**\n@internal\n*/\nlet TransformError = class extends Error {\n};\nTransformError = function TransformError(message) {\n let err = Error.call(this, message);\n err.__proto__ = TransformError.prototype;\n return err;\n};\nTransformError.prototype = Object.create(Error.prototype);\nTransformError.prototype.constructor = TransformError;\nTransformError.prototype.name = \"TransformError\";\n/**\nAbstraction to build up and track an array of\n[steps](https://prosemirror.net/docs/ref/#transform.Step) representing a document transformation.\n\nMost transforming methods return the `Transform` object itself, so\nthat they can be chained.\n*/\nclass Transform {\n /**\n Create a transform that starts with the given document.\n */\n constructor(\n /**\n The current document (the result of applying the steps in the\n transform).\n */\n doc) {\n this.doc = doc;\n /**\n The steps in this transform.\n */\n this.steps = [];\n /**\n The documents before each of the steps.\n */\n this.docs = [];\n /**\n A mapping with the maps for each of the steps in this transform.\n */\n this.mapping = new Mapping;\n }\n /**\n The starting document.\n */\n get before() { return this.docs.length ? this.docs[0] : this.doc; }\n /**\n Apply a new step in this transform, saving the result. Throws an\n error when the step fails.\n */\n step(step) {\n let result = this.maybeStep(step);\n if (result.failed)\n throw new TransformError(result.failed);\n return this;\n }\n /**\n Try to apply a step in this transformation, ignoring it if it\n fails. Returns the step result.\n */\n maybeStep(step) {\n let result = step.apply(this.doc);\n if (!result.failed)\n this.addStep(step, result.doc);\n return result;\n }\n /**\n True when the document has been changed (when there are any\n steps).\n */\n get docChanged() {\n return this.steps.length > 0;\n }\n /**\n @internal\n */\n addStep(step, doc) {\n this.docs.push(this.doc);\n this.steps.push(step);\n this.mapping.appendMap(step.getMap());\n this.doc = doc;\n }\n /**\n Replace the part of the document between `from` and `to` with the\n given `slice`.\n */\n replace(from, to = from, slice = Slice.empty) {\n let step = replaceStep(this.doc, from, to, slice);\n if (step)\n this.step(step);\n return this;\n }\n /**\n Replace the given range with the given content, which may be a\n fragment, node, or array of nodes.\n */\n replaceWith(from, to, content) {\n return this.replace(from, to, new Slice(Fragment.from(content), 0, 0));\n }\n /**\n Delete the content between the given positions.\n */\n delete(from, to) {\n return this.replace(from, to, Slice.empty);\n }\n /**\n Insert the given content at the given position.\n */\n insert(pos, content) {\n return this.replaceWith(pos, pos, content);\n }\n /**\n Replace a range of the document with a given slice, using\n `from`, `to`, and the slice's\n [`openStart`](https://prosemirror.net/docs/ref/#model.Slice.openStart) property as hints, rather\n than fixed start and end points. This method may grow the\n replaced area or close open nodes in the slice in order to get a\n fit that is more in line with WYSIWYG expectations, by dropping\n fully covered parent nodes of the replaced region when they are\n marked [non-defining as\n context](https://prosemirror.net/docs/ref/#model.NodeSpec.definingAsContext), or including an\n open parent node from the slice that _is_ marked as [defining\n its content](https://prosemirror.net/docs/ref/#model.NodeSpec.definingForContent).\n \n This is the method, for example, to handle paste. The similar\n [`replace`](https://prosemirror.net/docs/ref/#transform.Transform.replace) method is a more\n primitive tool which will _not_ move the start and end of its given\n range, and is useful in situations where you need more precise\n control over what happens.\n */\n replaceRange(from, to, slice) {\n replaceRange(this, from, to, slice);\n return this;\n }\n /**\n Replace the given range with a node, but use `from` and `to` as\n hints, rather than precise positions. When from and to are the same\n and are at the start or end of a parent node in which the given\n node doesn't fit, this method may _move_ them out towards a parent\n that does allow the given node to be placed. When the given range\n completely covers a parent node, this method may completely replace\n that parent node.\n */\n replaceRangeWith(from, to, node) {\n replaceRangeWith(this, from, to, node);\n return this;\n }\n /**\n Delete the given range, expanding it to cover fully covered\n parent nodes until a valid replace is found.\n */\n deleteRange(from, to) {\n deleteRange(this, from, to);\n return this;\n }\n /**\n Split the content in the given range off from its parent, if there\n is sibling content before or after it, and move it up the tree to\n the depth specified by `target`. You'll probably want to use\n [`liftTarget`](https://prosemirror.net/docs/ref/#transform.liftTarget) to compute `target`, to make\n sure the lift is valid.\n */\n lift(range, target) {\n lift(this, range, target);\n return this;\n }\n /**\n Join the blocks around the given position. If depth is 2, their\n last and first siblings are also joined, and so on.\n */\n join(pos, depth = 1) {\n join(this, pos, depth);\n return this;\n }\n /**\n Wrap the given [range](https://prosemirror.net/docs/ref/#model.NodeRange) in the given set of wrappers.\n The wrappers are assumed to be valid in this position, and should\n probably be computed with [`findWrapping`](https://prosemirror.net/docs/ref/#transform.findWrapping).\n */\n wrap(range, wrappers) {\n wrap(this, range, wrappers);\n return this;\n }\n /**\n Set the type of all textblocks (partly) between `from` and `to` to\n the given node type with the given attributes.\n */\n setBlockType(from, to = from, type, attrs = null) {\n setBlockType(this, from, to, type, attrs);\n return this;\n }\n /**\n Change the type, attributes, and/or marks of the node at `pos`.\n When `type` isn't given, the existing node type is preserved,\n */\n setNodeMarkup(pos, type, attrs = null, marks) {\n setNodeMarkup(this, pos, type, attrs, marks);\n return this;\n }\n /**\n Set a single attribute on a given node to a new value.\n The `pos` addresses the document content. Use `setDocAttribute`\n to set attributes on the document itself.\n */\n setNodeAttribute(pos, attr, value) {\n this.step(new AttrStep(pos, attr, value));\n return this;\n }\n /**\n Set a single attribute on the document to a new value.\n */\n setDocAttribute(attr, value) {\n this.step(new DocAttrStep(attr, value));\n return this;\n }\n /**\n Add a mark to the node at position `pos`.\n */\n addNodeMark(pos, mark) {\n this.step(new AddNodeMarkStep(pos, mark));\n return this;\n }\n /**\n Remove a mark (or a mark of the given type) from the node at\n position `pos`.\n */\n removeNodeMark(pos, mark) {\n if (!(mark instanceof Mark)) {\n let node = this.doc.nodeAt(pos);\n if (!node)\n throw new RangeError(\"No node at position \" + pos);\n mark = mark.isInSet(node.marks);\n if (!mark)\n return this;\n }\n this.step(new RemoveNodeMarkStep(pos, mark));\n return this;\n }\n /**\n Split the node at the given position, and optionally, if `depth` is\n greater than one, any number of nodes above that. By default, the\n parts split off will inherit the node type of the original node.\n This can be changed by passing an array of types and attributes to\n use after the split.\n */\n split(pos, depth = 1, typesAfter) {\n split(this, pos, depth, typesAfter);\n return this;\n }\n /**\n Add the given mark to the inline content between `from` and `to`.\n */\n addMark(from, to, mark) {\n addMark(this, from, to, mark);\n return this;\n }\n /**\n Remove marks from inline nodes between `from` and `to`. When\n `mark` is a single mark, remove precisely that mark. When it is\n a mark type, remove all marks of that type. When it is null,\n remove all marks of any type.\n */\n removeMark(from, to, mark) {\n removeMark(this, from, to, mark);\n return this;\n }\n /**\n Removes all marks and nodes from the content of the node at\n `pos` that don't match the given new parent node type. Accepts\n an optional starting [content match](https://prosemirror.net/docs/ref/#model.ContentMatch) as\n third argument.\n */\n clearIncompatible(pos, parentType, match) {\n clearIncompatible(this, pos, parentType, match);\n return this;\n }\n}\n\nexport { AddMarkStep, AddNodeMarkStep, AttrStep, DocAttrStep, MapResult, Mapping, RemoveMarkStep, RemoveNodeMarkStep, ReplaceAroundStep, ReplaceStep, Step, StepMap, StepResult, Transform, TransformError, canJoin, canSplit, dropPoint, findWrapping, insertPoint, joinPoint, liftTarget, replaceStep };\n","import { liftTarget, replaceStep, ReplaceStep, canJoin, joinPoint, canSplit, ReplaceAroundStep, findWrapping } from 'prosemirror-transform';\nimport { Slice, Fragment } from 'prosemirror-model';\nimport { NodeSelection, Selection, TextSelection, AllSelection } from 'prosemirror-state';\n\n/**\nDelete the selection, if there is one.\n*/\nconst deleteSelection = (state, dispatch) => {\n if (state.selection.empty)\n return false;\n if (dispatch)\n dispatch(state.tr.deleteSelection().scrollIntoView());\n return true;\n};\nfunction atBlockStart(state, view) {\n let { $cursor } = state.selection;\n if (!$cursor || (view ? !view.endOfTextblock(\"backward\", state)\n : $cursor.parentOffset > 0))\n return null;\n return $cursor;\n}\n/**\nIf the selection is empty and at the start of a textblock, try to\nreduce the distance between that block and the one before it—if\nthere's a block directly before it that can be joined, join them.\nIf not, try to move the selected block closer to the next one in\nthe document structure by lifting it out of its parent or moving it\ninto a parent of the previous block. Will use the view for accurate\n(bidi-aware) start-of-textblock detection if given.\n*/\nconst joinBackward = (state, dispatch, view) => {\n let $cursor = atBlockStart(state, view);\n if (!$cursor)\n return false;\n let $cut = findCutBefore($cursor);\n // If there is no node before this, try to lift\n if (!$cut) {\n let range = $cursor.blockRange(), target = range && liftTarget(range);\n if (target == null)\n return false;\n if (dispatch)\n dispatch(state.tr.lift(range, target).scrollIntoView());\n return true;\n }\n let before = $cut.nodeBefore;\n // Apply the joining algorithm\n if (!before.type.spec.isolating && deleteBarrier(state, $cut, dispatch))\n return true;\n // If the node below has no content and the node above is\n // selectable, delete the node below and select the one above.\n if ($cursor.parent.content.size == 0 &&\n (textblockAt(before, \"end\") || NodeSelection.isSelectable(before))) {\n let delStep = replaceStep(state.doc, $cursor.before(), $cursor.after(), Slice.empty);\n if (delStep && delStep.slice.size < delStep.to - delStep.from) {\n if (dispatch) {\n let tr = state.tr.step(delStep);\n tr.setSelection(textblockAt(before, \"end\") ? Selection.findFrom(tr.doc.resolve(tr.mapping.map($cut.pos, -1)), -1)\n : NodeSelection.create(tr.doc, $cut.pos - before.nodeSize));\n dispatch(tr.scrollIntoView());\n }\n return true;\n }\n }\n // If the node before is an atom, delete it\n if (before.isAtom && $cut.depth == $cursor.depth - 1) {\n if (dispatch)\n dispatch(state.tr.delete($cut.pos - before.nodeSize, $cut.pos).scrollIntoView());\n return true;\n }\n return false;\n};\n/**\nA more limited form of [`joinBackward`]($commands.joinBackward)\nthat only tries to join the current textblock to the one before\nit, if the cursor is at the start of a textblock.\n*/\nconst joinTextblockBackward = (state, dispatch, view) => {\n let $cursor = atBlockStart(state, view);\n if (!$cursor)\n return false;\n let $cut = findCutBefore($cursor);\n return $cut ? joinTextblocksAround(state, $cut, dispatch) : false;\n};\n/**\nA more limited form of [`joinForward`]($commands.joinForward)\nthat only tries to join the current textblock to the one after\nit, if the cursor is at the end of a textblock.\n*/\nconst joinTextblockForward = (state, dispatch, view) => {\n let $cursor = atBlockEnd(state, view);\n if (!$cursor)\n return false;\n let $cut = findCutAfter($cursor);\n return $cut ? joinTextblocksAround(state, $cut, dispatch) : false;\n};\nfunction joinTextblocksAround(state, $cut, dispatch) {\n let before = $cut.nodeBefore, beforeText = before, beforePos = $cut.pos - 1;\n for (; !beforeText.isTextblock; beforePos--) {\n if (beforeText.type.spec.isolating)\n return false;\n let child = beforeText.lastChild;\n if (!child)\n return false;\n beforeText = child;\n }\n let after = $cut.nodeAfter, afterText = after, afterPos = $cut.pos + 1;\n for (; !afterText.isTextblock; afterPos++) {\n if (afterText.type.spec.isolating)\n return false;\n let child = afterText.firstChild;\n if (!child)\n return false;\n afterText = child;\n }\n let step = replaceStep(state.doc, beforePos, afterPos, Slice.empty);\n if (!step || step.from != beforePos ||\n step instanceof ReplaceStep && step.slice.size >= afterPos - beforePos)\n return false;\n if (dispatch) {\n let tr = state.tr.step(step);\n tr.setSelection(TextSelection.create(tr.doc, beforePos));\n dispatch(tr.scrollIntoView());\n }\n return true;\n}\nfunction textblockAt(node, side, only = false) {\n for (let scan = node; scan; scan = (side == \"start\" ? scan.firstChild : scan.lastChild)) {\n if (scan.isTextblock)\n return true;\n if (only && scan.childCount != 1)\n return false;\n }\n return false;\n}\n/**\nWhen the selection is empty and at the start of a textblock, select\nthe node before that textblock, if possible. This is intended to be\nbound to keys like backspace, after\n[`joinBackward`](https://prosemirror.net/docs/ref/#commands.joinBackward) or other deleting\ncommands, as a fall-back behavior when the schema doesn't allow\ndeletion at the selected point.\n*/\nconst selectNodeBackward = (state, dispatch, view) => {\n let { $head, empty } = state.selection, $cut = $head;\n if (!empty)\n return false;\n if ($head.parent.isTextblock) {\n if (view ? !view.endOfTextblock(\"backward\", state) : $head.parentOffset > 0)\n return false;\n $cut = findCutBefore($head);\n }\n let node = $cut && $cut.nodeBefore;\n if (!node || !NodeSelection.isSelectable(node))\n return false;\n if (dispatch)\n dispatch(state.tr.setSelection(NodeSelection.create(state.doc, $cut.pos - node.nodeSize)).scrollIntoView());\n return true;\n};\nfunction findCutBefore($pos) {\n if (!$pos.parent.type.spec.isolating)\n for (let i = $pos.depth - 1; i >= 0; i--) {\n if ($pos.index(i) > 0)\n return $pos.doc.resolve($pos.before(i + 1));\n if ($pos.node(i).type.spec.isolating)\n break;\n }\n return null;\n}\nfunction atBlockEnd(state, view) {\n let { $cursor } = state.selection;\n if (!$cursor || (view ? !view.endOfTextblock(\"forward\", state)\n : $cursor.parentOffset < $cursor.parent.content.size))\n return null;\n return $cursor;\n}\n/**\nIf the selection is empty and the cursor is at the end of a\ntextblock, try to reduce or remove the boundary between that block\nand the one after it, either by joining them or by moving the other\nblock closer to this one in the tree structure. Will use the view\nfor accurate start-of-textblock detection if given.\n*/\nconst joinForward = (state, dispatch, view) => {\n let $cursor = atBlockEnd(state, view);\n if (!$cursor)\n return false;\n let $cut = findCutAfter($cursor);\n // If there is no node after this, there's nothing to do\n if (!$cut)\n return false;\n let after = $cut.nodeAfter;\n // Try the joining algorithm\n if (deleteBarrier(state, $cut, dispatch))\n return true;\n // If the node above has no content and the node below is\n // selectable, delete the node above and select the one below.\n if ($cursor.parent.content.size == 0 &&\n (textblockAt(after, \"start\") || NodeSelection.isSelectable(after))) {\n let delStep = replaceStep(state.doc, $cursor.before(), $cursor.after(), Slice.empty);\n if (delStep && delStep.slice.size < delStep.to - delStep.from) {\n if (dispatch) {\n let tr = state.tr.step(delStep);\n tr.setSelection(textblockAt(after, \"start\") ? Selection.findFrom(tr.doc.resolve(tr.mapping.map($cut.pos)), 1)\n : NodeSelection.create(tr.doc, tr.mapping.map($cut.pos)));\n dispatch(tr.scrollIntoView());\n }\n return true;\n }\n }\n // If the next node is an atom, delete it\n if (after.isAtom && $cut.depth == $cursor.depth - 1) {\n if (dispatch)\n dispatch(state.tr.delete($cut.pos, $cut.pos + after.nodeSize).scrollIntoView());\n return true;\n }\n return false;\n};\n/**\nWhen the selection is empty and at the end of a textblock, select\nthe node coming after that textblock, if possible. This is intended\nto be bound to keys like delete, after\n[`joinForward`](https://prosemirror.net/docs/ref/#commands.joinForward) and similar deleting\ncommands, to provide a fall-back behavior when the schema doesn't\nallow deletion at the selected point.\n*/\nconst selectNodeForward = (state, dispatch, view) => {\n let { $head, empty } = state.selection, $cut = $head;\n if (!empty)\n return false;\n if ($head.parent.isTextblock) {\n if (view ? !view.endOfTextblock(\"forward\", state) : $head.parentOffset < $head.parent.content.size)\n return false;\n $cut = findCutAfter($head);\n }\n let node = $cut && $cut.nodeAfter;\n if (!node || !NodeSelection.isSelectable(node))\n return false;\n if (dispatch)\n dispatch(state.tr.setSelection(NodeSelection.create(state.doc, $cut.pos)).scrollIntoView());\n return true;\n};\nfunction findCutAfter($pos) {\n if (!$pos.parent.type.spec.isolating)\n for (let i = $pos.depth - 1; i >= 0; i--) {\n let parent = $pos.node(i);\n if ($pos.index(i) + 1 < parent.childCount)\n return $pos.doc.resolve($pos.after(i + 1));\n if (parent.type.spec.isolating)\n break;\n }\n return null;\n}\n/**\nJoin the selected block or, if there is a text selection, the\nclosest ancestor block of the selection that can be joined, with\nthe sibling above it.\n*/\nconst joinUp = (state, dispatch) => {\n let sel = state.selection, nodeSel = sel instanceof NodeSelection, point;\n if (nodeSel) {\n if (sel.node.isTextblock || !canJoin(state.doc, sel.from))\n return false;\n point = sel.from;\n }\n else {\n point = joinPoint(state.doc, sel.from, -1);\n if (point == null)\n return false;\n }\n if (dispatch) {\n let tr = state.tr.join(point);\n if (nodeSel)\n tr.setSelection(NodeSelection.create(tr.doc, point - state.doc.resolve(point).nodeBefore.nodeSize));\n dispatch(tr.scrollIntoView());\n }\n return true;\n};\n/**\nJoin the selected block, or the closest ancestor of the selection\nthat can be joined, with the sibling after it.\n*/\nconst joinDown = (state, dispatch) => {\n let sel = state.selection, point;\n if (sel instanceof NodeSelection) {\n if (sel.node.isTextblock || !canJoin(state.doc, sel.to))\n return false;\n point = sel.to;\n }\n else {\n point = joinPoint(state.doc, sel.to, 1);\n if (point == null)\n return false;\n }\n if (dispatch)\n dispatch(state.tr.join(point).scrollIntoView());\n return true;\n};\n/**\nLift the selected block, or the closest ancestor block of the\nselection that can be lifted, out of its parent node.\n*/\nconst lift = (state, dispatch) => {\n let { $from, $to } = state.selection;\n let range = $from.blockRange($to), target = range && liftTarget(range);\n if (target == null)\n return false;\n if (dispatch)\n dispatch(state.tr.lift(range, target).scrollIntoView());\n return true;\n};\n/**\nIf the selection is in a node whose type has a truthy\n[`code`](https://prosemirror.net/docs/ref/#model.NodeSpec.code) property in its spec, replace the\nselection with a newline character.\n*/\nconst newlineInCode = (state, dispatch) => {\n let { $head, $anchor } = state.selection;\n if (!$head.parent.type.spec.code || !$head.sameParent($anchor))\n return false;\n if (dispatch)\n dispatch(state.tr.insertText(\"\\n\").scrollIntoView());\n return true;\n};\nfunction defaultBlockAt(match) {\n for (let i = 0; i < match.edgeCount; i++) {\n let { type } = match.edge(i);\n if (type.isTextblock && !type.hasRequiredAttrs())\n return type;\n }\n return null;\n}\n/**\nWhen the selection is in a node with a truthy\n[`code`](https://prosemirror.net/docs/ref/#model.NodeSpec.code) property in its spec, create a\ndefault block after the code block, and move the cursor there.\n*/\nconst exitCode = (state, dispatch) => {\n let { $head, $anchor } = state.selection;\n if (!$head.parent.type.spec.code || !$head.sameParent($anchor))\n return false;\n let above = $head.node(-1), after = $head.indexAfter(-1), type = defaultBlockAt(above.contentMatchAt(after));\n if (!type || !above.canReplaceWith(after, after, type))\n return false;\n if (dispatch) {\n let pos = $head.after(), tr = state.tr.replaceWith(pos, pos, type.createAndFill());\n tr.setSelection(Selection.near(tr.doc.resolve(pos), 1));\n dispatch(tr.scrollIntoView());\n }\n return true;\n};\n/**\nIf a block node is selected, create an empty paragraph before (if\nit is its parent's first child) or after it.\n*/\nconst createParagraphNear = (state, dispatch) => {\n let sel = state.selection, { $from, $to } = sel;\n if (sel instanceof AllSelection || $from.parent.inlineContent || $to.parent.inlineContent)\n return false;\n let type = defaultBlockAt($to.parent.contentMatchAt($to.indexAfter()));\n if (!type || !type.isTextblock)\n return false;\n if (dispatch) {\n let side = (!$from.parentOffset && $to.index() < $to.parent.childCount ? $from : $to).pos;\n let tr = state.tr.insert(side, type.createAndFill());\n tr.setSelection(TextSelection.create(tr.doc, side + 1));\n dispatch(tr.scrollIntoView());\n }\n return true;\n};\n/**\nIf the cursor is in an empty textblock that can be lifted, lift the\nblock.\n*/\nconst liftEmptyBlock = (state, dispatch) => {\n let { $cursor } = state.selection;\n if (!$cursor || $cursor.parent.content.size)\n return false;\n if ($cursor.depth > 1 && $cursor.after() != $cursor.end(-1)) {\n let before = $cursor.before();\n if (canSplit(state.doc, before)) {\n if (dispatch)\n dispatch(state.tr.split(before).scrollIntoView());\n return true;\n }\n }\n let range = $cursor.blockRange(), target = range && liftTarget(range);\n if (target == null)\n return false;\n if (dispatch)\n dispatch(state.tr.lift(range, target).scrollIntoView());\n return true;\n};\n/**\nCreate a variant of [`splitBlock`](https://prosemirror.net/docs/ref/#commands.splitBlock) that uses\na custom function to determine the type of the newly split off block.\n*/\nfunction splitBlockAs(splitNode) {\n return (state, dispatch) => {\n let { $from, $to } = state.selection;\n if (state.selection instanceof NodeSelection && state.selection.node.isBlock) {\n if (!$from.parentOffset || !canSplit(state.doc, $from.pos))\n return false;\n if (dispatch)\n dispatch(state.tr.split($from.pos).scrollIntoView());\n return true;\n }\n if (!$from.parent.isBlock)\n return false;\n if (dispatch) {\n let atEnd = $to.parentOffset == $to.parent.content.size;\n let tr = state.tr;\n if (state.selection instanceof TextSelection || state.selection instanceof AllSelection)\n tr.deleteSelection();\n let deflt = $from.depth == 0 ? null : defaultBlockAt($from.node(-1).contentMatchAt($from.indexAfter(-1)));\n let splitType = splitNode && splitNode($to.parent, atEnd);\n let types = splitType ? [splitType] : atEnd && deflt ? [{ type: deflt }] : undefined;\n let can = canSplit(tr.doc, tr.mapping.map($from.pos), 1, types);\n if (!types && !can && canSplit(tr.doc, tr.mapping.map($from.pos), 1, deflt ? [{ type: deflt }] : undefined)) {\n if (deflt)\n types = [{ type: deflt }];\n can = true;\n }\n if (can) {\n tr.split(tr.mapping.map($from.pos), 1, types);\n if (!atEnd && !$from.parentOffset && $from.parent.type != deflt) {\n let first = tr.mapping.map($from.before()), $first = tr.doc.resolve(first);\n if (deflt && $from.node(-1).canReplaceWith($first.index(), $first.index() + 1, deflt))\n tr.setNodeMarkup(tr.mapping.map($from.before()), deflt);\n }\n }\n dispatch(tr.scrollIntoView());\n }\n return true;\n };\n}\n/**\nSplit the parent block of the selection. If the selection is a text\nselection, also delete its content.\n*/\nconst splitBlock = splitBlockAs();\n/**\nActs like [`splitBlock`](https://prosemirror.net/docs/ref/#commands.splitBlock), but without\nresetting the set of active marks at the cursor.\n*/\nconst splitBlockKeepMarks = (state, dispatch) => {\n return splitBlock(state, dispatch && (tr => {\n let marks = state.storedMarks || (state.selection.$to.parentOffset && state.selection.$from.marks());\n if (marks)\n tr.ensureMarks(marks);\n dispatch(tr);\n }));\n};\n/**\nMove the selection to the node wrapping the current selection, if\nany. (Will not select the document node.)\n*/\nconst selectParentNode = (state, dispatch) => {\n let { $from, to } = state.selection, pos;\n let same = $from.sharedDepth(to);\n if (same == 0)\n return false;\n pos = $from.before(same);\n if (dispatch)\n dispatch(state.tr.setSelection(NodeSelection.create(state.doc, pos)));\n return true;\n};\n/**\nSelect the whole document.\n*/\nconst selectAll = (state, dispatch) => {\n if (dispatch)\n dispatch(state.tr.setSelection(new AllSelection(state.doc)));\n return true;\n};\nfunction joinMaybeClear(state, $pos, dispatch) {\n let before = $pos.nodeBefore, after = $pos.nodeAfter, index = $pos.index();\n if (!before || !after || !before.type.compatibleContent(after.type))\n return false;\n if (!before.content.size && $pos.parent.canReplace(index - 1, index)) {\n if (dispatch)\n dispatch(state.tr.delete($pos.pos - before.nodeSize, $pos.pos).scrollIntoView());\n return true;\n }\n if (!$pos.parent.canReplace(index, index + 1) || !(after.isTextblock || canJoin(state.doc, $pos.pos)))\n return false;\n if (dispatch)\n dispatch(state.tr\n .clearIncompatible($pos.pos, before.type, before.contentMatchAt(before.childCount))\n .join($pos.pos)\n .scrollIntoView());\n return true;\n}\nfunction deleteBarrier(state, $cut, dispatch) {\n let before = $cut.nodeBefore, after = $cut.nodeAfter, conn, match;\n if (before.type.spec.isolating || after.type.spec.isolating)\n return false;\n if (joinMaybeClear(state, $cut, dispatch))\n return true;\n let canDelAfter = $cut.parent.canReplace($cut.index(), $cut.index() + 1);\n if (canDelAfter &&\n (conn = (match = before.contentMatchAt(before.childCount)).findWrapping(after.type)) &&\n match.matchType(conn[0] || after.type).validEnd) {\n if (dispatch) {\n let end = $cut.pos + after.nodeSize, wrap = Fragment.empty;\n for (let i = conn.length - 1; i >= 0; i--)\n wrap = Fragment.from(conn[i].create(null, wrap));\n wrap = Fragment.from(before.copy(wrap));\n let tr = state.tr.step(new ReplaceAroundStep($cut.pos - 1, end, $cut.pos, end, new Slice(wrap, 1, 0), conn.length, true));\n let joinAt = end + 2 * conn.length;\n if (canJoin(tr.doc, joinAt))\n tr.join(joinAt);\n dispatch(tr.scrollIntoView());\n }\n return true;\n }\n let selAfter = Selection.findFrom($cut, 1);\n let range = selAfter && selAfter.$from.blockRange(selAfter.$to), target = range && liftTarget(range);\n if (target != null && target >= $cut.depth) {\n if (dispatch)\n dispatch(state.tr.lift(range, target).scrollIntoView());\n return true;\n }\n if (canDelAfter && textblockAt(after, \"start\", true) && textblockAt(before, \"end\")) {\n let at = before, wrap = [];\n for (;;) {\n wrap.push(at);\n if (at.isTextblock)\n break;\n at = at.lastChild;\n }\n let afterText = after, afterDepth = 1;\n for (; !afterText.isTextblock; afterText = afterText.firstChild)\n afterDepth++;\n if (at.canReplace(at.childCount, at.childCount, afterText.content)) {\n if (dispatch) {\n let end = Fragment.empty;\n for (let i = wrap.length - 1; i >= 0; i--)\n end = Fragment.from(wrap[i].copy(end));\n let tr = state.tr.step(new ReplaceAroundStep($cut.pos - wrap.length, $cut.pos + after.nodeSize, $cut.pos + afterDepth, $cut.pos + after.nodeSize - afterDepth, new Slice(end, wrap.length, 0), 0, true));\n dispatch(tr.scrollIntoView());\n }\n return true;\n }\n }\n return false;\n}\nfunction selectTextblockSide(side) {\n return function (state, dispatch) {\n let sel = state.selection, $pos = side < 0 ? sel.$from : sel.$to;\n let depth = $pos.depth;\n while ($pos.node(depth).isInline) {\n if (!depth)\n return false;\n depth--;\n }\n if (!$pos.node(depth).isTextblock)\n return false;\n if (dispatch)\n dispatch(state.tr.setSelection(TextSelection.create(state.doc, side < 0 ? $pos.start(depth) : $pos.end(depth))));\n return true;\n };\n}\n/**\nMoves the cursor to the start of current text block.\n*/\nconst selectTextblockStart = selectTextblockSide(-1);\n/**\nMoves the cursor to the end of current text block.\n*/\nconst selectTextblockEnd = selectTextblockSide(1);\n// Parameterized commands\n/**\nWrap the selection in a node of the given type with the given\nattributes.\n*/\nfunction wrapIn(nodeType, attrs = null) {\n return function (state, dispatch) {\n let { $from, $to } = state.selection;\n let range = $from.blockRange($to), wrapping = range && findWrapping(range, nodeType, attrs);\n if (!wrapping)\n return false;\n if (dispatch)\n dispatch(state.tr.wrap(range, wrapping).scrollIntoView());\n return true;\n };\n}\n/**\nReturns a command that tries to set the selected textblocks to the\ngiven node type with the given attributes.\n*/\nfunction setBlockType(nodeType, attrs = null) {\n return function (state, dispatch) {\n let applicable = false;\n for (let i = 0; i < state.selection.ranges.length && !applicable; i++) {\n let { $from: { pos: from }, $to: { pos: to } } = state.selection.ranges[i];\n state.doc.nodesBetween(from, to, (node, pos) => {\n if (applicable)\n return false;\n if (!node.isTextblock || node.hasMarkup(nodeType, attrs))\n return;\n if (node.type == nodeType) {\n applicable = true;\n }\n else {\n let $pos = state.doc.resolve(pos), index = $pos.index();\n applicable = $pos.parent.canReplaceWith(index, index + 1, nodeType);\n }\n });\n }\n if (!applicable)\n return false;\n if (dispatch) {\n let tr = state.tr;\n for (let i = 0; i < state.selection.ranges.length; i++) {\n let { $from: { pos: from }, $to: { pos: to } } = state.selection.ranges[i];\n tr.setBlockType(from, to, nodeType, attrs);\n }\n dispatch(tr.scrollIntoView());\n }\n return true;\n };\n}\nfunction markApplies(doc, ranges, type) {\n for (let i = 0; i < ranges.length; i++) {\n let { $from, $to } = ranges[i];\n let can = $from.depth == 0 ? doc.inlineContent && doc.type.allowsMarkType(type) : false;\n doc.nodesBetween($from.pos, $to.pos, node => {\n if (can)\n return false;\n can = node.inlineContent && node.type.allowsMarkType(type);\n });\n if (can)\n return true;\n }\n return false;\n}\n/**\nCreate a command function that toggles the given mark with the\ngiven attributes. Will return `false` when the current selection\ndoesn't support that mark. This will remove the mark if any marks\nof that type exist in the selection, or add it otherwise. If the\nselection is empty, this applies to the [stored\nmarks](https://prosemirror.net/docs/ref/#state.EditorState.storedMarks) instead of a range of the\ndocument.\n*/\nfunction toggleMark(markType, attrs = null) {\n return function (state, dispatch) {\n let { empty, $cursor, ranges } = state.selection;\n if ((empty && !$cursor) || !markApplies(state.doc, ranges, markType))\n return false;\n if (dispatch) {\n if ($cursor) {\n if (markType.isInSet(state.storedMarks || $cursor.marks()))\n dispatch(state.tr.removeStoredMark(markType));\n else\n dispatch(state.tr.addStoredMark(markType.create(attrs)));\n }\n else {\n let has = false, tr = state.tr;\n for (let i = 0; !has && i < ranges.length; i++) {\n let { $from, $to } = ranges[i];\n has = state.doc.rangeHasMark($from.pos, $to.pos, markType);\n }\n for (let i = 0; i < ranges.length; i++) {\n let { $from, $to } = ranges[i];\n if (has) {\n tr.removeMark($from.pos, $to.pos, markType);\n }\n else {\n let from = $from.pos, to = $to.pos, start = $from.nodeAfter, end = $to.nodeBefore;\n let spaceStart = start && start.isText ? /^\\s*/.exec(start.text)[0].length : 0;\n let spaceEnd = end && end.isText ? /\\s*$/.exec(end.text)[0].length : 0;\n if (from + spaceStart < to) {\n from += spaceStart;\n to -= spaceEnd;\n }\n tr.addMark(from, to, markType.create(attrs));\n }\n }\n dispatch(tr.scrollIntoView());\n }\n }\n return true;\n };\n}\nfunction wrapDispatchForJoin(dispatch, isJoinable) {\n return (tr) => {\n if (!tr.isGeneric)\n return dispatch(tr);\n let ranges = [];\n for (let i = 0; i < tr.mapping.maps.length; i++) {\n let map = tr.mapping.maps[i];\n for (let j = 0; j < ranges.length; j++)\n ranges[j] = map.map(ranges[j]);\n map.forEach((_s, _e, from, to) => ranges.push(from, to));\n }\n // Figure out which joinable points exist inside those ranges,\n // by checking all node boundaries in their parent nodes.\n let joinable = [];\n for (let i = 0; i < ranges.length; i += 2) {\n let from = ranges[i], to = ranges[i + 1];\n let $from = tr.doc.resolve(from), depth = $from.sharedDepth(to), parent = $from.node(depth);\n for (let index = $from.indexAfter(depth), pos = $from.after(depth + 1); pos <= to; ++index) {\n let after = parent.maybeChild(index);\n if (!after)\n break;\n if (index && joinable.indexOf(pos) == -1) {\n let before = parent.child(index - 1);\n if (before.type == after.type && isJoinable(before, after))\n joinable.push(pos);\n }\n pos += after.nodeSize;\n }\n }\n // Join the joinable points\n joinable.sort((a, b) => a - b);\n for (let i = joinable.length - 1; i >= 0; i--) {\n if (canJoin(tr.doc, joinable[i]))\n tr.join(joinable[i]);\n }\n dispatch(tr);\n };\n}\n/**\nWrap a command so that, when it produces a transform that causes\ntwo joinable nodes to end up next to each other, those are joined.\nNodes are considered joinable when they are of the same type and\nwhen the `isJoinable` predicate returns true for them or, if an\narray of strings was passed, if their node type name is in that\narray.\n*/\nfunction autoJoin(command, isJoinable) {\n let canJoin = Array.isArray(isJoinable) ? (node) => isJoinable.indexOf(node.type.name) > -1\n : isJoinable;\n return (state, dispatch, view) => command(state, dispatch && wrapDispatchForJoin(dispatch, canJoin), view);\n}\n/**\nCombine a number of command functions into a single function (which\ncalls them one by one until one returns true).\n*/\nfunction chainCommands(...commands) {\n return function (state, dispatch, view) {\n for (let i = 0; i < commands.length; i++)\n if (commands[i](state, dispatch, view))\n return true;\n return false;\n };\n}\nlet backspace = chainCommands(deleteSelection, joinBackward, selectNodeBackward);\nlet del = chainCommands(deleteSelection, joinForward, selectNodeForward);\n/**\nA basic keymap containing bindings not specific to any schema.\nBinds the following keys (when multiple commands are listed, they\nare chained with [`chainCommands`](https://prosemirror.net/docs/ref/#commands.chainCommands)):\n\n* **Enter** to `newlineInCode`, `createParagraphNear`, `liftEmptyBlock`, `splitBlock`\n* **Mod-Enter** to `exitCode`\n* **Backspace** and **Mod-Backspace** to `deleteSelection`, `joinBackward`, `selectNodeBackward`\n* **Delete** and **Mod-Delete** to `deleteSelection`, `joinForward`, `selectNodeForward`\n* **Mod-Delete** to `deleteSelection`, `joinForward`, `selectNodeForward`\n* **Mod-a** to `selectAll`\n*/\nconst pcBaseKeymap = {\n \"Enter\": chainCommands(newlineInCode, createParagraphNear, liftEmptyBlock, splitBlock),\n \"Mod-Enter\": exitCode,\n \"Backspace\": backspace,\n \"Mod-Backspace\": backspace,\n \"Shift-Backspace\": backspace,\n \"Delete\": del,\n \"Mod-Delete\": del,\n \"Mod-a\": selectAll\n};\n/**\nA copy of `pcBaseKeymap` that also binds **Ctrl-h** like Backspace,\n**Ctrl-d** like Delete, **Alt-Backspace** like Ctrl-Backspace, and\n**Ctrl-Alt-Backspace**, **Alt-Delete**, and **Alt-d** like\nCtrl-Delete.\n*/\nconst macBaseKeymap = {\n \"Ctrl-h\": pcBaseKeymap[\"Backspace\"],\n \"Alt-Backspace\": pcBaseKeymap[\"Mod-Backspace\"],\n \"Ctrl-d\": pcBaseKeymap[\"Delete\"],\n \"Ctrl-Alt-Backspace\": pcBaseKeymap[\"Mod-Delete\"],\n \"Alt-Delete\": pcBaseKeymap[\"Mod-Delete\"],\n \"Alt-d\": pcBaseKeymap[\"Mod-Delete\"],\n \"Ctrl-a\": selectTextblockStart,\n \"Ctrl-e\": selectTextblockEnd\n};\nfor (let key in pcBaseKeymap)\n macBaseKeymap[key] = pcBaseKeymap[key];\nconst mac = typeof navigator != \"undefined\" ? /Mac|iP(hone|[oa]d)/.test(navigator.platform)\n // @ts-ignore\n : typeof os != \"undefined\" && os.platform ? os.platform() == \"darwin\" : false;\n/**\nDepending on the detected platform, this will hold\n[`pcBasekeymap`](https://prosemirror.net/docs/ref/#commands.pcBaseKeymap) or\n[`macBaseKeymap`](https://prosemirror.net/docs/ref/#commands.macBaseKeymap).\n*/\nconst baseKeymap = mac ? macBaseKeymap : pcBaseKeymap;\n\nexport { autoJoin, baseKeymap, chainCommands, createParagraphNear, deleteSelection, exitCode, joinBackward, joinDown, joinForward, joinTextblockBackward, joinTextblockForward, joinUp, lift, liftEmptyBlock, macBaseKeymap, newlineInCode, pcBaseKeymap, selectAll, selectNodeBackward, selectNodeForward, selectParentNode, selectTextblockEnd, selectTextblockStart, setBlockType, splitBlock, splitBlockAs, splitBlockKeepMarks, toggleMark, wrapIn };\n","import { findWrapping, ReplaceAroundStep, canSplit, liftTarget, canJoin } from 'prosemirror-transform';\nimport { NodeRange, Fragment, Slice } from 'prosemirror-model';\nimport { Selection } from 'prosemirror-state';\n\nconst olDOM = [\"ol\", 0], ulDOM = [\"ul\", 0], liDOM = [\"li\", 0];\n/**\nAn ordered list [node spec](https://prosemirror.net/docs/ref/#model.NodeSpec). Has a single\nattribute, `order`, which determines the number at which the list\nstarts counting, and defaults to 1. Represented as an `
    `\nelement.\n*/\nconst orderedList = {\n attrs: { order: { default: 1, validate: \"number\" } },\n parseDOM: [{ tag: \"ol\", getAttrs(dom) {\n return { order: dom.hasAttribute(\"start\") ? +dom.getAttribute(\"start\") : 1 };\n } }],\n toDOM(node) {\n return node.attrs.order == 1 ? olDOM : [\"ol\", { start: node.attrs.order }, 0];\n }\n};\n/**\nA bullet list node spec, represented in the DOM as `
      `.\n*/\nconst bulletList = {\n parseDOM: [{ tag: \"ul\" }],\n toDOM() { return ulDOM; }\n};\n/**\nA list item (`
    • `) spec.\n*/\nconst listItem = {\n parseDOM: [{ tag: \"li\" }],\n toDOM() { return liDOM; },\n defining: true\n};\nfunction add(obj, props) {\n let copy = {};\n for (let prop in obj)\n copy[prop] = obj[prop];\n for (let prop in props)\n copy[prop] = props[prop];\n return copy;\n}\n/**\nConvenience function for adding list-related node types to a map\nspecifying the nodes for a schema. Adds\n[`orderedList`](https://prosemirror.net/docs/ref/#schema-list.orderedList) as `\"ordered_list\"`,\n[`bulletList`](https://prosemirror.net/docs/ref/#schema-list.bulletList) as `\"bullet_list\"`, and\n[`listItem`](https://prosemirror.net/docs/ref/#schema-list.listItem) as `\"list_item\"`.\n\n`itemContent` determines the content expression for the list items.\nIf you want the commands defined in this module to apply to your\nlist structure, it should have a shape like `\"paragraph block*\"` or\n`\"paragraph (ordered_list | bullet_list)*\"`. `listGroup` can be\ngiven to assign a group name to the list node types, for example\n`\"block\"`.\n*/\nfunction addListNodes(nodes, itemContent, listGroup) {\n return nodes.append({\n ordered_list: add(orderedList, { content: \"list_item+\", group: listGroup }),\n bullet_list: add(bulletList, { content: \"list_item+\", group: listGroup }),\n list_item: add(listItem, { content: itemContent })\n });\n}\n/**\nReturns a command function that wraps the selection in a list with\nthe given type an attributes. If `dispatch` is null, only return a\nvalue to indicate whether this is possible, but don't actually\nperform the change.\n*/\nfunction wrapInList(listType, attrs = null) {\n return function (state, dispatch) {\n let { $from, $to } = state.selection;\n let range = $from.blockRange($to), doJoin = false, outerRange = range;\n if (!range)\n return false;\n // This is at the top of an existing list item\n if (range.depth >= 2 && $from.node(range.depth - 1).type.compatibleContent(listType) && range.startIndex == 0) {\n // Don't do anything if this is the top of the list\n if ($from.index(range.depth - 1) == 0)\n return false;\n let $insert = state.doc.resolve(range.start - 2);\n outerRange = new NodeRange($insert, $insert, range.depth);\n if (range.endIndex < range.parent.childCount)\n range = new NodeRange($from, state.doc.resolve($to.end(range.depth)), range.depth);\n doJoin = true;\n }\n let wrap = findWrapping(outerRange, listType, attrs, range);\n if (!wrap)\n return false;\n if (dispatch)\n dispatch(doWrapInList(state.tr, range, wrap, doJoin, listType).scrollIntoView());\n return true;\n };\n}\nfunction doWrapInList(tr, range, wrappers, joinBefore, listType) {\n let content = Fragment.empty;\n for (let i = wrappers.length - 1; i >= 0; i--)\n content = Fragment.from(wrappers[i].type.create(wrappers[i].attrs, content));\n tr.step(new ReplaceAroundStep(range.start - (joinBefore ? 2 : 0), range.end, range.start, range.end, new Slice(content, 0, 0), wrappers.length, true));\n let found = 0;\n for (let i = 0; i < wrappers.length; i++)\n if (wrappers[i].type == listType)\n found = i + 1;\n let splitDepth = wrappers.length - found;\n let splitPos = range.start + wrappers.length - (joinBefore ? 2 : 0), parent = range.parent;\n for (let i = range.startIndex, e = range.endIndex, first = true; i < e; i++, first = false) {\n if (!first && canSplit(tr.doc, splitPos, splitDepth)) {\n tr.split(splitPos, splitDepth);\n splitPos += 2 * splitDepth;\n }\n splitPos += parent.child(i).nodeSize;\n }\n return tr;\n}\n/**\nBuild a command that splits a non-empty textblock at the top level\nof a list item by also splitting that list item.\n*/\nfunction splitListItem(itemType, itemAttrs) {\n return function (state, dispatch) {\n let { $from, $to, node } = state.selection;\n if ((node && node.isBlock) || $from.depth < 2 || !$from.sameParent($to))\n return false;\n let grandParent = $from.node(-1);\n if (grandParent.type != itemType)\n return false;\n if ($from.parent.content.size == 0 && $from.node(-1).childCount == $from.indexAfter(-1)) {\n // In an empty block. If this is a nested list, the wrapping\n // list item should be split. Otherwise, bail out and let next\n // command handle lifting.\n if ($from.depth == 3 || $from.node(-3).type != itemType ||\n $from.index(-2) != $from.node(-2).childCount - 1)\n return false;\n if (dispatch) {\n let wrap = Fragment.empty;\n let depthBefore = $from.index(-1) ? 1 : $from.index(-2) ? 2 : 3;\n // Build a fragment containing empty versions of the structure\n // from the outer list item to the parent node of the cursor\n for (let d = $from.depth - depthBefore; d >= $from.depth - 3; d--)\n wrap = Fragment.from($from.node(d).copy(wrap));\n let depthAfter = $from.indexAfter(-1) < $from.node(-2).childCount ? 1\n : $from.indexAfter(-2) < $from.node(-3).childCount ? 2 : 3;\n // Add a second list item with an empty default start node\n wrap = wrap.append(Fragment.from(itemType.createAndFill()));\n let start = $from.before($from.depth - (depthBefore - 1));\n let tr = state.tr.replace(start, $from.after(-depthAfter), new Slice(wrap, 4 - depthBefore, 0));\n let sel = -1;\n tr.doc.nodesBetween(start, tr.doc.content.size, (node, pos) => {\n if (sel > -1)\n return false;\n if (node.isTextblock && node.content.size == 0)\n sel = pos + 1;\n });\n if (sel > -1)\n tr.setSelection(Selection.near(tr.doc.resolve(sel)));\n dispatch(tr.scrollIntoView());\n }\n return true;\n }\n let nextType = $to.pos == $from.end() ? grandParent.contentMatchAt(0).defaultType : null;\n let tr = state.tr.delete($from.pos, $to.pos);\n let types = nextType ? [itemAttrs ? { type: itemType, attrs: itemAttrs } : null, { type: nextType }] : undefined;\n if (!canSplit(tr.doc, $from.pos, 2, types))\n return false;\n if (dispatch)\n dispatch(tr.split($from.pos, 2, types).scrollIntoView());\n return true;\n };\n}\n/**\nActs like [`splitListItem`](https://prosemirror.net/docs/ref/#schema-list.splitListItem), but\nwithout resetting the set of active marks at the cursor.\n*/\nfunction splitListItemKeepMarks(itemType, itemAttrs) {\n let split = splitListItem(itemType, itemAttrs);\n return (state, dispatch) => {\n return split(state, dispatch && (tr => {\n let marks = state.storedMarks || (state.selection.$to.parentOffset && state.selection.$from.marks());\n if (marks)\n tr.ensureMarks(marks);\n dispatch(tr);\n }));\n };\n}\n/**\nCreate a command to lift the list item around the selection up into\na wrapping list.\n*/\nfunction liftListItem(itemType) {\n return function (state, dispatch) {\n let { $from, $to } = state.selection;\n let range = $from.blockRange($to, node => node.childCount > 0 && node.firstChild.type == itemType);\n if (!range)\n return false;\n if (!dispatch)\n return true;\n if ($from.node(range.depth - 1).type == itemType) // Inside a parent list\n return liftToOuterList(state, dispatch, itemType, range);\n else // Outer list node\n return liftOutOfList(state, dispatch, range);\n };\n}\nfunction liftToOuterList(state, dispatch, itemType, range) {\n let tr = state.tr, end = range.end, endOfList = range.$to.end(range.depth);\n if (end < endOfList) {\n // There are siblings after the lifted items, which must become\n // children of the last item\n tr.step(new ReplaceAroundStep(end - 1, endOfList, end, endOfList, new Slice(Fragment.from(itemType.create(null, range.parent.copy())), 1, 0), 1, true));\n range = new NodeRange(tr.doc.resolve(range.$from.pos), tr.doc.resolve(endOfList), range.depth);\n }\n const target = liftTarget(range);\n if (target == null)\n return false;\n tr.lift(range, target);\n let after = tr.mapping.map(end, -1) - 1;\n if (canJoin(tr.doc, after))\n tr.join(after);\n dispatch(tr.scrollIntoView());\n return true;\n}\nfunction liftOutOfList(state, dispatch, range) {\n let tr = state.tr, list = range.parent;\n // Merge the list items into a single big item\n for (let pos = range.end, i = range.endIndex - 1, e = range.startIndex; i > e; i--) {\n pos -= list.child(i).nodeSize;\n tr.delete(pos - 1, pos + 1);\n }\n let $start = tr.doc.resolve(range.start), item = $start.nodeAfter;\n if (tr.mapping.map(range.end) != range.start + $start.nodeAfter.nodeSize)\n return false;\n let atStart = range.startIndex == 0, atEnd = range.endIndex == list.childCount;\n let parent = $start.node(-1), indexBefore = $start.index(-1);\n if (!parent.canReplace(indexBefore + (atStart ? 0 : 1), indexBefore + 1, item.content.append(atEnd ? Fragment.empty : Fragment.from(list))))\n return false;\n let start = $start.pos, end = start + item.nodeSize;\n // Strip off the surrounding list. At the sides where we're not at\n // the end of the list, the existing list is closed. At sides where\n // this is the end, it is overwritten to its end.\n tr.step(new ReplaceAroundStep(start - (atStart ? 1 : 0), end + (atEnd ? 1 : 0), start + 1, end - 1, new Slice((atStart ? Fragment.empty : Fragment.from(list.copy(Fragment.empty)))\n .append(atEnd ? Fragment.empty : Fragment.from(list.copy(Fragment.empty))), atStart ? 0 : 1, atEnd ? 0 : 1), atStart ? 0 : 1));\n dispatch(tr.scrollIntoView());\n return true;\n}\n/**\nCreate a command to sink the list item around the selection down\ninto an inner list.\n*/\nfunction sinkListItem(itemType) {\n return function (state, dispatch) {\n let { $from, $to } = state.selection;\n let range = $from.blockRange($to, node => node.childCount > 0 && node.firstChild.type == itemType);\n if (!range)\n return false;\n let startIndex = range.startIndex;\n if (startIndex == 0)\n return false;\n let parent = range.parent, nodeBefore = parent.child(startIndex - 1);\n if (nodeBefore.type != itemType)\n return false;\n if (dispatch) {\n let nestedBefore = nodeBefore.lastChild && nodeBefore.lastChild.type == parent.type;\n let inner = Fragment.from(nestedBefore ? itemType.create() : null);\n let slice = new Slice(Fragment.from(itemType.create(null, Fragment.from(parent.type.create(null, inner)))), nestedBefore ? 3 : 1, 0);\n let before = range.start, after = range.end;\n dispatch(state.tr.step(new ReplaceAroundStep(before - (nestedBefore ? 3 : 1), after, before, after, slice, 1, true))\n .scrollIntoView());\n }\n return true;\n };\n}\n\nexport { addListNodes, bulletList, liftListItem, listItem, orderedList, sinkListItem, splitListItem, splitListItemKeepMarks, wrapInList };\n","import { Plugin, PluginKey, TextSelection, Selection, NodeSelection, EditorState } from '@tiptap/pm/state';\nimport { EditorView } from '@tiptap/pm/view';\nimport { keymap } from '@tiptap/pm/keymap';\nimport { Schema, Fragment, DOMParser, DOMSerializer, Node as Node$1, Slice } from '@tiptap/pm/model';\nimport { liftTarget, ReplaceStep, ReplaceAroundStep, joinPoint, Transform, canSplit, canJoin, findWrapping } from '@tiptap/pm/transform';\nimport { createParagraphNear as createParagraphNear$1, deleteSelection as deleteSelection$1, exitCode as exitCode$1, joinUp as joinUp$1, joinDown as joinDown$1, joinBackward as joinBackward$1, joinForward as joinForward$1, joinTextblockBackward as joinTextblockBackward$1, joinTextblockForward as joinTextblockForward$1, lift as lift$1, liftEmptyBlock as liftEmptyBlock$1, newlineInCode as newlineInCode$1, selectNodeBackward as selectNodeBackward$1, selectNodeForward as selectNodeForward$1, selectParentNode as selectParentNode$1, selectTextblockEnd as selectTextblockEnd$1, selectTextblockStart as selectTextblockStart$1, setBlockType, wrapIn as wrapIn$1 } from '@tiptap/pm/commands';\nimport { liftListItem as liftListItem$1, sinkListItem as sinkListItem$1, wrapInList as wrapInList$1 } from '@tiptap/pm/schema-list';\n\n/**\n * Takes a Transaction & Editor State and turns it into a chainable state object\n * @param config The transaction and state to create the chainable state from\n * @returns A chainable Editor state object\n */\nfunction createChainableState(config) {\n const { state, transaction } = config;\n let { selection } = transaction;\n let { doc } = transaction;\n let { storedMarks } = transaction;\n return {\n ...state,\n apply: state.apply.bind(state),\n applyTransaction: state.applyTransaction.bind(state),\n plugins: state.plugins,\n schema: state.schema,\n reconfigure: state.reconfigure.bind(state),\n toJSON: state.toJSON.bind(state),\n get storedMarks() {\n return storedMarks;\n },\n get selection() {\n return selection;\n },\n get doc() {\n return doc;\n },\n get tr() {\n selection = transaction.selection;\n doc = transaction.doc;\n storedMarks = transaction.storedMarks;\n return transaction;\n },\n };\n}\n\nclass CommandManager {\n constructor(props) {\n this.editor = props.editor;\n this.rawCommands = this.editor.extensionManager.commands;\n this.customState = props.state;\n }\n get hasCustomState() {\n return !!this.customState;\n }\n get state() {\n return this.customState || this.editor.state;\n }\n get commands() {\n const { rawCommands, editor, state } = this;\n const { view } = editor;\n const { tr } = state;\n const props = this.buildProps(tr);\n return Object.fromEntries(Object.entries(rawCommands).map(([name, command]) => {\n const method = (...args) => {\n const callback = command(...args)(props);\n if (!tr.getMeta('preventDispatch') && !this.hasCustomState) {\n view.dispatch(tr);\n }\n return callback;\n };\n return [name, method];\n }));\n }\n get chain() {\n return () => this.createChain();\n }\n get can() {\n return () => this.createCan();\n }\n createChain(startTr, shouldDispatch = true) {\n const { rawCommands, editor, state } = this;\n const { view } = editor;\n const callbacks = [];\n const hasStartTransaction = !!startTr;\n const tr = startTr || state.tr;\n const run = () => {\n if (!hasStartTransaction\n && shouldDispatch\n && !tr.getMeta('preventDispatch')\n && !this.hasCustomState) {\n view.dispatch(tr);\n }\n return callbacks.every(callback => callback === true);\n };\n const chain = {\n ...Object.fromEntries(Object.entries(rawCommands).map(([name, command]) => {\n const chainedCommand = (...args) => {\n const props = this.buildProps(tr, shouldDispatch);\n const callback = command(...args)(props);\n callbacks.push(callback);\n return chain;\n };\n return [name, chainedCommand];\n })),\n run,\n };\n return chain;\n }\n createCan(startTr) {\n const { rawCommands, state } = this;\n const dispatch = false;\n const tr = startTr || state.tr;\n const props = this.buildProps(tr, dispatch);\n const formattedCommands = Object.fromEntries(Object.entries(rawCommands).map(([name, command]) => {\n return [name, (...args) => command(...args)({ ...props, dispatch: undefined })];\n }));\n return {\n ...formattedCommands,\n chain: () => this.createChain(tr, dispatch),\n };\n }\n buildProps(tr, shouldDispatch = true) {\n const { rawCommands, editor, state } = this;\n const { view } = editor;\n const props = {\n tr,\n editor,\n view,\n state: createChainableState({\n state,\n transaction: tr,\n }),\n dispatch: shouldDispatch ? () => undefined : undefined,\n chain: () => this.createChain(tr, shouldDispatch),\n can: () => this.createCan(tr),\n get commands() {\n return Object.fromEntries(Object.entries(rawCommands).map(([name, command]) => {\n return [name, (...args) => command(...args)(props)];\n }));\n },\n };\n return props;\n }\n}\n\nclass EventEmitter {\n constructor() {\n this.callbacks = {};\n }\n on(event, fn) {\n if (!this.callbacks[event]) {\n this.callbacks[event] = [];\n }\n this.callbacks[event].push(fn);\n return this;\n }\n emit(event, ...args) {\n const callbacks = this.callbacks[event];\n if (callbacks) {\n callbacks.forEach(callback => callback.apply(this, args));\n }\n return this;\n }\n off(event, fn) {\n const callbacks = this.callbacks[event];\n if (callbacks) {\n if (fn) {\n this.callbacks[event] = callbacks.filter(callback => callback !== fn);\n }\n else {\n delete this.callbacks[event];\n }\n }\n return this;\n }\n removeAllListeners() {\n this.callbacks = {};\n }\n}\n\n/**\n * Returns a field from an extension\n * @param extension The Tiptap extension\n * @param field The field, for example `renderHTML` or `priority`\n * @param context The context object that should be passed as `this` into the function\n * @returns The field value\n */\nfunction getExtensionField(extension, field, context) {\n if (extension.config[field] === undefined && extension.parent) {\n return getExtensionField(extension.parent, field, context);\n }\n if (typeof extension.config[field] === 'function') {\n const value = extension.config[field].bind({\n ...context,\n parent: extension.parent\n ? getExtensionField(extension.parent, field, context)\n : null,\n });\n return value;\n }\n return extension.config[field];\n}\n\nfunction splitExtensions(extensions) {\n const baseExtensions = extensions.filter(extension => extension.type === 'extension');\n const nodeExtensions = extensions.filter(extension => extension.type === 'node');\n const markExtensions = extensions.filter(extension => extension.type === 'mark');\n return {\n baseExtensions,\n nodeExtensions,\n markExtensions,\n };\n}\n\n/**\n * Get a list of all extension attributes defined in `addAttribute` and `addGlobalAttribute`.\n * @param extensions List of extensions\n */\nfunction getAttributesFromExtensions(extensions) {\n const extensionAttributes = [];\n const { nodeExtensions, markExtensions } = splitExtensions(extensions);\n const nodeAndMarkExtensions = [...nodeExtensions, ...markExtensions];\n const defaultAttribute = {\n default: null,\n rendered: true,\n renderHTML: null,\n parseHTML: null,\n keepOnSplit: true,\n isRequired: false,\n };\n extensions.forEach(extension => {\n const context = {\n name: extension.name,\n options: extension.options,\n storage: extension.storage,\n extensions: nodeAndMarkExtensions,\n };\n const addGlobalAttributes = getExtensionField(extension, 'addGlobalAttributes', context);\n if (!addGlobalAttributes) {\n return;\n }\n const globalAttributes = addGlobalAttributes();\n globalAttributes.forEach(globalAttribute => {\n globalAttribute.types.forEach(type => {\n Object\n .entries(globalAttribute.attributes)\n .forEach(([name, attribute]) => {\n extensionAttributes.push({\n type,\n name,\n attribute: {\n ...defaultAttribute,\n ...attribute,\n },\n });\n });\n });\n });\n });\n nodeAndMarkExtensions.forEach(extension => {\n const context = {\n name: extension.name,\n options: extension.options,\n storage: extension.storage,\n };\n const addAttributes = getExtensionField(extension, 'addAttributes', context);\n if (!addAttributes) {\n return;\n }\n // TODO: remove `as Attributes`\n const attributes = addAttributes();\n Object\n .entries(attributes)\n .forEach(([name, attribute]) => {\n const mergedAttr = {\n ...defaultAttribute,\n ...attribute,\n };\n if (typeof (mergedAttr === null || mergedAttr === void 0 ? void 0 : mergedAttr.default) === 'function') {\n mergedAttr.default = mergedAttr.default();\n }\n if ((mergedAttr === null || mergedAttr === void 0 ? void 0 : mergedAttr.isRequired) && (mergedAttr === null || mergedAttr === void 0 ? void 0 : mergedAttr.default) === undefined) {\n delete mergedAttr.default;\n }\n extensionAttributes.push({\n type: extension.name,\n name,\n attribute: mergedAttr,\n });\n });\n });\n return extensionAttributes;\n}\n\nfunction getNodeType(nameOrType, schema) {\n if (typeof nameOrType === 'string') {\n if (!schema.nodes[nameOrType]) {\n throw Error(`There is no node type named '${nameOrType}'. Maybe you forgot to add the extension?`);\n }\n return schema.nodes[nameOrType];\n }\n return nameOrType;\n}\n\nfunction mergeAttributes(...objects) {\n return objects\n .filter(item => !!item)\n .reduce((items, item) => {\n const mergedAttributes = { ...items };\n Object.entries(item).forEach(([key, value]) => {\n const exists = mergedAttributes[key];\n if (!exists) {\n mergedAttributes[key] = value;\n return;\n }\n if (key === 'class') {\n const valueClasses = value ? value.split(' ') : [];\n const existingClasses = mergedAttributes[key] ? mergedAttributes[key].split(' ') : [];\n const insertClasses = valueClasses.filter(valueClass => !existingClasses.includes(valueClass));\n mergedAttributes[key] = [...existingClasses, ...insertClasses].join(' ');\n }\n else if (key === 'style') {\n mergedAttributes[key] = [mergedAttributes[key], value].join('; ');\n }\n else {\n mergedAttributes[key] = value;\n }\n });\n return mergedAttributes;\n }, {});\n}\n\nfunction getRenderedAttributes(nodeOrMark, extensionAttributes) {\n return extensionAttributes\n .filter(item => item.attribute.rendered)\n .map(item => {\n if (!item.attribute.renderHTML) {\n return {\n [item.name]: nodeOrMark.attrs[item.name],\n };\n }\n return item.attribute.renderHTML(nodeOrMark.attrs) || {};\n })\n .reduce((attributes, attribute) => mergeAttributes(attributes, attribute), {});\n}\n\nfunction isFunction(value) {\n return typeof value === 'function';\n}\n\n/**\n * Optionally calls `value` as a function.\n * Otherwise it is returned directly.\n * @param value Function or any value.\n * @param context Optional context to bind to function.\n * @param props Optional props to pass to function.\n */\nfunction callOrReturn(value, context = undefined, ...props) {\n if (isFunction(value)) {\n if (context) {\n return value.bind(context)(...props);\n }\n return value(...props);\n }\n return value;\n}\n\nfunction isEmptyObject(value = {}) {\n return Object.keys(value).length === 0 && value.constructor === Object;\n}\n\nfunction fromString(value) {\n if (typeof value !== 'string') {\n return value;\n }\n if (value.match(/^[+-]?(?:\\d*\\.)?\\d+$/)) {\n return Number(value);\n }\n if (value === 'true') {\n return true;\n }\n if (value === 'false') {\n return false;\n }\n return value;\n}\n\n/**\n * This function merges extension attributes into parserule attributes (`attrs` or `getAttrs`).\n * Cancels when `getAttrs` returned `false`.\n * @param parseRule ProseMirror ParseRule\n * @param extensionAttributes List of attributes to inject\n */\nfunction injectExtensionAttributesToParseRule(parseRule, extensionAttributes) {\n if ('style' in parseRule) {\n return parseRule;\n }\n return {\n ...parseRule,\n getAttrs: (node) => {\n const oldAttributes = parseRule.getAttrs ? parseRule.getAttrs(node) : parseRule.attrs;\n if (oldAttributes === false) {\n return false;\n }\n const newAttributes = extensionAttributes.reduce((items, item) => {\n const value = item.attribute.parseHTML\n ? item.attribute.parseHTML(node)\n : fromString((node).getAttribute(item.name));\n if (value === null || value === undefined) {\n return items;\n }\n return {\n ...items,\n [item.name]: value,\n };\n }, {});\n return { ...oldAttributes, ...newAttributes };\n },\n };\n}\n\nfunction cleanUpSchemaItem(data) {\n return Object.fromEntries(\n // @ts-ignore\n Object.entries(data).filter(([key, value]) => {\n if (key === 'attrs' && isEmptyObject(value)) {\n return false;\n }\n return value !== null && value !== undefined;\n }));\n}\n/**\n * Creates a new Prosemirror schema based on the given extensions.\n * @param extensions An array of Tiptap extensions\n * @param editor The editor instance\n * @returns A Prosemirror schema\n */\nfunction getSchemaByResolvedExtensions(extensions, editor) {\n var _a;\n const allAttributes = getAttributesFromExtensions(extensions);\n const { nodeExtensions, markExtensions } = splitExtensions(extensions);\n const topNode = (_a = nodeExtensions.find(extension => getExtensionField(extension, 'topNode'))) === null || _a === void 0 ? void 0 : _a.name;\n const nodes = Object.fromEntries(nodeExtensions.map(extension => {\n const extensionAttributes = allAttributes.filter(attribute => attribute.type === extension.name);\n const context = {\n name: extension.name,\n options: extension.options,\n storage: extension.storage,\n editor,\n };\n const extraNodeFields = extensions.reduce((fields, e) => {\n const extendNodeSchema = getExtensionField(e, 'extendNodeSchema', context);\n return {\n ...fields,\n ...(extendNodeSchema ? extendNodeSchema(extension) : {}),\n };\n }, {});\n const schema = cleanUpSchemaItem({\n ...extraNodeFields,\n content: callOrReturn(getExtensionField(extension, 'content', context)),\n marks: callOrReturn(getExtensionField(extension, 'marks', context)),\n group: callOrReturn(getExtensionField(extension, 'group', context)),\n inline: callOrReturn(getExtensionField(extension, 'inline', context)),\n atom: callOrReturn(getExtensionField(extension, 'atom', context)),\n selectable: callOrReturn(getExtensionField(extension, 'selectable', context)),\n draggable: callOrReturn(getExtensionField(extension, 'draggable', context)),\n code: callOrReturn(getExtensionField(extension, 'code', context)),\n whitespace: callOrReturn(getExtensionField(extension, 'whitespace', context)),\n defining: callOrReturn(getExtensionField(extension, 'defining', context)),\n isolating: callOrReturn(getExtensionField(extension, 'isolating', context)),\n attrs: Object.fromEntries(extensionAttributes.map(extensionAttribute => {\n var _a;\n return [extensionAttribute.name, { default: (_a = extensionAttribute === null || extensionAttribute === void 0 ? void 0 : extensionAttribute.attribute) === null || _a === void 0 ? void 0 : _a.default }];\n })),\n });\n const parseHTML = callOrReturn(getExtensionField(extension, 'parseHTML', context));\n if (parseHTML) {\n schema.parseDOM = parseHTML.map(parseRule => injectExtensionAttributesToParseRule(parseRule, extensionAttributes));\n }\n const renderHTML = getExtensionField(extension, 'renderHTML', context);\n if (renderHTML) {\n schema.toDOM = node => renderHTML({\n node,\n HTMLAttributes: getRenderedAttributes(node, extensionAttributes),\n });\n }\n const renderText = getExtensionField(extension, 'renderText', context);\n if (renderText) {\n schema.toText = renderText;\n }\n return [extension.name, schema];\n }));\n const marks = Object.fromEntries(markExtensions.map(extension => {\n const extensionAttributes = allAttributes.filter(attribute => attribute.type === extension.name);\n const context = {\n name: extension.name,\n options: extension.options,\n storage: extension.storage,\n editor,\n };\n const extraMarkFields = extensions.reduce((fields, e) => {\n const extendMarkSchema = getExtensionField(e, 'extendMarkSchema', context);\n return {\n ...fields,\n ...(extendMarkSchema ? extendMarkSchema(extension) : {}),\n };\n }, {});\n const schema = cleanUpSchemaItem({\n ...extraMarkFields,\n inclusive: callOrReturn(getExtensionField(extension, 'inclusive', context)),\n excludes: callOrReturn(getExtensionField(extension, 'excludes', context)),\n group: callOrReturn(getExtensionField(extension, 'group', context)),\n spanning: callOrReturn(getExtensionField(extension, 'spanning', context)),\n code: callOrReturn(getExtensionField(extension, 'code', context)),\n attrs: Object.fromEntries(extensionAttributes.map(extensionAttribute => {\n var _a;\n return [extensionAttribute.name, { default: (_a = extensionAttribute === null || extensionAttribute === void 0 ? void 0 : extensionAttribute.attribute) === null || _a === void 0 ? void 0 : _a.default }];\n })),\n });\n const parseHTML = callOrReturn(getExtensionField(extension, 'parseHTML', context));\n if (parseHTML) {\n schema.parseDOM = parseHTML.map(parseRule => injectExtensionAttributesToParseRule(parseRule, extensionAttributes));\n }\n const renderHTML = getExtensionField(extension, 'renderHTML', context);\n if (renderHTML) {\n schema.toDOM = mark => renderHTML({\n mark,\n HTMLAttributes: getRenderedAttributes(mark, extensionAttributes),\n });\n }\n return [extension.name, schema];\n }));\n return new Schema({\n topNode,\n nodes,\n marks,\n });\n}\n\n/**\n * Tries to get a node or mark type by its name.\n * @param name The name of the node or mark type\n * @param schema The Prosemiror schema to search in\n * @returns The node or mark type, or null if it doesn't exist\n */\nfunction getSchemaTypeByName(name, schema) {\n return schema.nodes[name] || schema.marks[name] || null;\n}\n\nfunction isExtensionRulesEnabled(extension, enabled) {\n if (Array.isArray(enabled)) {\n return enabled.some(enabledExtension => {\n const name = typeof enabledExtension === 'string'\n ? enabledExtension\n : enabledExtension.name;\n return name === extension.name;\n });\n }\n return enabled;\n}\n\n/**\n * Returns the text content of a resolved prosemirror position\n * @param $from The resolved position to get the text content from\n * @param maxMatch The maximum number of characters to match\n * @returns The text content\n */\nconst getTextContentFromNodes = ($from, maxMatch = 500) => {\n let textBefore = '';\n const sliceEndPos = $from.parentOffset;\n $from.parent.nodesBetween(Math.max(0, sliceEndPos - maxMatch), sliceEndPos, (node, pos, parent, index) => {\n var _a, _b;\n const chunk = ((_b = (_a = node.type.spec).toText) === null || _b === void 0 ? void 0 : _b.call(_a, {\n node,\n pos,\n parent,\n index,\n }))\n || node.textContent\n || '%leaf%';\n textBefore += chunk.slice(0, Math.max(0, sliceEndPos - pos));\n });\n return textBefore;\n};\n\nfunction isRegExp(value) {\n return Object.prototype.toString.call(value) === '[object RegExp]';\n}\n\nclass InputRule {\n constructor(config) {\n this.find = config.find;\n this.handler = config.handler;\n }\n}\nconst inputRuleMatcherHandler = (text, find) => {\n if (isRegExp(find)) {\n return find.exec(text);\n }\n const inputRuleMatch = find(text);\n if (!inputRuleMatch) {\n return null;\n }\n const result = [inputRuleMatch.text];\n result.index = inputRuleMatch.index;\n result.input = text;\n result.data = inputRuleMatch.data;\n if (inputRuleMatch.replaceWith) {\n if (!inputRuleMatch.text.includes(inputRuleMatch.replaceWith)) {\n console.warn('[tiptap warn]: \"inputRuleMatch.replaceWith\" must be part of \"inputRuleMatch.text\".');\n }\n result.push(inputRuleMatch.replaceWith);\n }\n return result;\n};\nfunction run$1(config) {\n var _a;\n const { editor, from, to, text, rules, plugin, } = config;\n const { view } = editor;\n if (view.composing) {\n return false;\n }\n const $from = view.state.doc.resolve(from);\n if (\n // check for code node\n $from.parent.type.spec.code\n // check for code mark\n || !!((_a = ($from.nodeBefore || $from.nodeAfter)) === null || _a === void 0 ? void 0 : _a.marks.find(mark => mark.type.spec.code))) {\n return false;\n }\n let matched = false;\n const textBefore = getTextContentFromNodes($from) + text;\n rules.forEach(rule => {\n if (matched) {\n return;\n }\n const match = inputRuleMatcherHandler(textBefore, rule.find);\n if (!match) {\n return;\n }\n const tr = view.state.tr;\n const state = createChainableState({\n state: view.state,\n transaction: tr,\n });\n const range = {\n from: from - (match[0].length - text.length),\n to,\n };\n const { commands, chain, can } = new CommandManager({\n editor,\n state,\n });\n const handler = rule.handler({\n state,\n range,\n match,\n commands,\n chain,\n can,\n });\n // stop if there are no changes\n if (handler === null || !tr.steps.length) {\n return;\n }\n // store transform as meta data\n // so we can undo input rules within the `undoInputRules` command\n tr.setMeta(plugin, {\n transform: tr,\n from,\n to,\n text,\n });\n view.dispatch(tr);\n matched = true;\n });\n return matched;\n}\n/**\n * Create an input rules plugin. When enabled, it will cause text\n * input that matches any of the given rules to trigger the rule’s\n * action.\n */\nfunction inputRulesPlugin(props) {\n const { editor, rules } = props;\n const plugin = new Plugin({\n state: {\n init() {\n return null;\n },\n apply(tr, prev) {\n const stored = tr.getMeta(plugin);\n if (stored) {\n return stored;\n }\n // if InputRule is triggered by insertContent()\n const simulatedInputMeta = tr.getMeta('applyInputRules');\n const isSimulatedInput = !!simulatedInputMeta;\n if (isSimulatedInput) {\n setTimeout(() => {\n const { from, text } = simulatedInputMeta;\n const to = from + text.length;\n run$1({\n editor,\n from,\n to,\n text,\n rules,\n plugin,\n });\n });\n }\n return tr.selectionSet || tr.docChanged ? null : prev;\n },\n },\n props: {\n handleTextInput(view, from, to, text) {\n return run$1({\n editor,\n from,\n to,\n text,\n rules,\n plugin,\n });\n },\n handleDOMEvents: {\n compositionend: view => {\n setTimeout(() => {\n const { $cursor } = view.state.selection;\n if ($cursor) {\n run$1({\n editor,\n from: $cursor.pos,\n to: $cursor.pos,\n text: '',\n rules,\n plugin,\n });\n }\n });\n return false;\n },\n },\n // add support for input rules to trigger on enter\n // this is useful for example for code blocks\n handleKeyDown(view, event) {\n if (event.key !== 'Enter') {\n return false;\n }\n const { $cursor } = view.state.selection;\n if ($cursor) {\n return run$1({\n editor,\n from: $cursor.pos,\n to: $cursor.pos,\n text: '\\n',\n rules,\n plugin,\n });\n }\n return false;\n },\n },\n // @ts-ignore\n isInputRules: true,\n });\n return plugin;\n}\n\nfunction isNumber(value) {\n return typeof value === 'number';\n}\n\n/**\n * Paste rules are used to react to pasted content.\n * @see https://tiptap.dev/guide/custom-extensions/#paste-rules\n */\nclass PasteRule {\n constructor(config) {\n this.find = config.find;\n this.handler = config.handler;\n }\n}\nconst pasteRuleMatcherHandler = (text, find, event) => {\n if (isRegExp(find)) {\n return [...text.matchAll(find)];\n }\n const matches = find(text, event);\n if (!matches) {\n return [];\n }\n return matches.map(pasteRuleMatch => {\n const result = [pasteRuleMatch.text];\n result.index = pasteRuleMatch.index;\n result.input = text;\n result.data = pasteRuleMatch.data;\n if (pasteRuleMatch.replaceWith) {\n if (!pasteRuleMatch.text.includes(pasteRuleMatch.replaceWith)) {\n console.warn('[tiptap warn]: \"pasteRuleMatch.replaceWith\" must be part of \"pasteRuleMatch.text\".');\n }\n result.push(pasteRuleMatch.replaceWith);\n }\n return result;\n });\n};\nfunction run(config) {\n const { editor, state, from, to, rule, pasteEvent, dropEvent, } = config;\n const { commands, chain, can } = new CommandManager({\n editor,\n state,\n });\n const handlers = [];\n state.doc.nodesBetween(from, to, (node, pos) => {\n if (!node.isTextblock || node.type.spec.code) {\n return;\n }\n const resolvedFrom = Math.max(from, pos);\n const resolvedTo = Math.min(to, pos + node.content.size);\n const textToMatch = node.textBetween(resolvedFrom - pos, resolvedTo - pos, undefined, '\\ufffc');\n const matches = pasteRuleMatcherHandler(textToMatch, rule.find, pasteEvent);\n matches.forEach(match => {\n if (match.index === undefined) {\n return;\n }\n const start = resolvedFrom + match.index + 1;\n const end = start + match[0].length;\n const range = {\n from: state.tr.mapping.map(start),\n to: state.tr.mapping.map(end),\n };\n const handler = rule.handler({\n state,\n range,\n match,\n commands,\n chain,\n can,\n pasteEvent,\n dropEvent,\n });\n handlers.push(handler);\n });\n });\n const success = handlers.every(handler => handler !== null);\n return success;\n}\nconst createClipboardPasteEvent = (text) => {\n var _a;\n const event = new ClipboardEvent('paste', {\n clipboardData: new DataTransfer(),\n });\n (_a = event.clipboardData) === null || _a === void 0 ? void 0 : _a.setData('text/html', text);\n return event;\n};\n/**\n * Create an paste rules plugin. When enabled, it will cause pasted\n * text that matches any of the given rules to trigger the rule’s\n * action.\n */\nfunction pasteRulesPlugin(props) {\n const { editor, rules } = props;\n let dragSourceElement = null;\n let isPastedFromProseMirror = false;\n let isDroppedFromProseMirror = false;\n let pasteEvent = typeof ClipboardEvent !== 'undefined' ? new ClipboardEvent('paste') : null;\n let dropEvent = typeof DragEvent !== 'undefined' ? new DragEvent('drop') : null;\n const processEvent = ({ state, from, to, rule, pasteEvt, }) => {\n const tr = state.tr;\n const chainableState = createChainableState({\n state,\n transaction: tr,\n });\n const handler = run({\n editor,\n state: chainableState,\n from: Math.max(from - 1, 0),\n to: to.b - 1,\n rule,\n pasteEvent: pasteEvt,\n dropEvent,\n });\n if (!handler || !tr.steps.length) {\n return;\n }\n dropEvent = typeof DragEvent !== 'undefined' ? new DragEvent('drop') : null;\n pasteEvent = typeof ClipboardEvent !== 'undefined' ? new ClipboardEvent('paste') : null;\n return tr;\n };\n const plugins = rules.map(rule => {\n return new Plugin({\n // we register a global drag handler to track the current drag source element\n view(view) {\n const handleDragstart = (event) => {\n var _a;\n dragSourceElement = ((_a = view.dom.parentElement) === null || _a === void 0 ? void 0 : _a.contains(event.target))\n ? view.dom.parentElement\n : null;\n };\n window.addEventListener('dragstart', handleDragstart);\n return {\n destroy() {\n window.removeEventListener('dragstart', handleDragstart);\n },\n };\n },\n props: {\n handleDOMEvents: {\n drop: (view, event) => {\n isDroppedFromProseMirror = dragSourceElement === view.dom.parentElement;\n dropEvent = event;\n return false;\n },\n paste: (_view, event) => {\n var _a;\n const html = (_a = event.clipboardData) === null || _a === void 0 ? void 0 : _a.getData('text/html');\n pasteEvent = event;\n isPastedFromProseMirror = !!(html === null || html === void 0 ? void 0 : html.includes('data-pm-slice'));\n return false;\n },\n },\n },\n appendTransaction: (transactions, oldState, state) => {\n const transaction = transactions[0];\n const isPaste = transaction.getMeta('uiEvent') === 'paste' && !isPastedFromProseMirror;\n const isDrop = transaction.getMeta('uiEvent') === 'drop' && !isDroppedFromProseMirror;\n // if PasteRule is triggered by insertContent()\n const simulatedPasteMeta = transaction.getMeta('applyPasteRules');\n const isSimulatedPaste = !!simulatedPasteMeta;\n if (!isPaste && !isDrop && !isSimulatedPaste) {\n return;\n }\n // Handle simulated paste\n if (isSimulatedPaste) {\n const { from, text } = simulatedPasteMeta;\n const to = from + text.length;\n const pasteEvt = createClipboardPasteEvent(text);\n return processEvent({\n rule,\n state,\n from,\n to: { b: to },\n pasteEvt,\n });\n }\n // handle actual paste/drop\n const from = oldState.doc.content.findDiffStart(state.doc.content);\n const to = oldState.doc.content.findDiffEnd(state.doc.content);\n // stop if there is no changed range\n if (!isNumber(from) || !to || from === to.b) {\n return;\n }\n return processEvent({\n rule,\n state,\n from,\n to,\n pasteEvt: pasteEvent,\n });\n },\n });\n });\n return plugins;\n}\n\nfunction findDuplicates(items) {\n const filtered = items.filter((el, index) => items.indexOf(el) !== index);\n return [...new Set(filtered)];\n}\n\nclass ExtensionManager {\n constructor(extensions, editor) {\n this.splittableMarks = [];\n this.editor = editor;\n this.extensions = ExtensionManager.resolve(extensions);\n this.schema = getSchemaByResolvedExtensions(this.extensions, editor);\n this.setupExtensions();\n }\n /**\n * Returns a flattened and sorted extension list while\n * also checking for duplicated extensions and warns the user.\n * @param extensions An array of Tiptap extensions\n * @returns An flattened and sorted array of Tiptap extensions\n */\n static resolve(extensions) {\n const resolvedExtensions = ExtensionManager.sort(ExtensionManager.flatten(extensions));\n const duplicatedNames = findDuplicates(resolvedExtensions.map(extension => extension.name));\n if (duplicatedNames.length) {\n console.warn(`[tiptap warn]: Duplicate extension names found: [${duplicatedNames\n .map(item => `'${item}'`)\n .join(', ')}]. This can lead to issues.`);\n }\n return resolvedExtensions;\n }\n /**\n * Create a flattened array of extensions by traversing the `addExtensions` field.\n * @param extensions An array of Tiptap extensions\n * @returns A flattened array of Tiptap extensions\n */\n static flatten(extensions) {\n return (extensions\n .map(extension => {\n const context = {\n name: extension.name,\n options: extension.options,\n storage: extension.storage,\n };\n const addExtensions = getExtensionField(extension, 'addExtensions', context);\n if (addExtensions) {\n return [extension, ...this.flatten(addExtensions())];\n }\n return extension;\n })\n // `Infinity` will break TypeScript so we set a number that is probably high enough\n .flat(10));\n }\n /**\n * Sort extensions by priority.\n * @param extensions An array of Tiptap extensions\n * @returns A sorted array of Tiptap extensions by priority\n */\n static sort(extensions) {\n const defaultPriority = 100;\n return extensions.sort((a, b) => {\n const priorityA = getExtensionField(a, 'priority') || defaultPriority;\n const priorityB = getExtensionField(b, 'priority') || defaultPriority;\n if (priorityA > priorityB) {\n return -1;\n }\n if (priorityA < priorityB) {\n return 1;\n }\n return 0;\n });\n }\n /**\n * Get all commands from the extensions.\n * @returns An object with all commands where the key is the command name and the value is the command function\n */\n get commands() {\n return this.extensions.reduce((commands, extension) => {\n const context = {\n name: extension.name,\n options: extension.options,\n storage: extension.storage,\n editor: this.editor,\n type: getSchemaTypeByName(extension.name, this.schema),\n };\n const addCommands = getExtensionField(extension, 'addCommands', context);\n if (!addCommands) {\n return commands;\n }\n return {\n ...commands,\n ...addCommands(),\n };\n }, {});\n }\n /**\n * Get all registered Prosemirror plugins from the extensions.\n * @returns An array of Prosemirror plugins\n */\n get plugins() {\n const { editor } = this;\n // With ProseMirror, first plugins within an array are executed first.\n // In Tiptap, we provide the ability to override plugins,\n // so it feels more natural to run plugins at the end of an array first.\n // That’s why we have to reverse the `extensions` array and sort again\n // based on the `priority` option.\n const extensions = ExtensionManager.sort([...this.extensions].reverse());\n const inputRules = [];\n const pasteRules = [];\n const allPlugins = extensions\n .map(extension => {\n const context = {\n name: extension.name,\n options: extension.options,\n storage: extension.storage,\n editor,\n type: getSchemaTypeByName(extension.name, this.schema),\n };\n const plugins = [];\n const addKeyboardShortcuts = getExtensionField(extension, 'addKeyboardShortcuts', context);\n let defaultBindings = {};\n // bind exit handling\n if (extension.type === 'mark' && getExtensionField(extension, 'exitable', context)) {\n defaultBindings.ArrowRight = () => Mark.handleExit({ editor, mark: extension });\n }\n if (addKeyboardShortcuts) {\n const bindings = Object.fromEntries(Object.entries(addKeyboardShortcuts()).map(([shortcut, method]) => {\n return [shortcut, () => method({ editor })];\n }));\n defaultBindings = { ...defaultBindings, ...bindings };\n }\n const keyMapPlugin = keymap(defaultBindings);\n plugins.push(keyMapPlugin);\n const addInputRules = getExtensionField(extension, 'addInputRules', context);\n if (isExtensionRulesEnabled(extension, editor.options.enableInputRules) && addInputRules) {\n inputRules.push(...addInputRules());\n }\n const addPasteRules = getExtensionField(extension, 'addPasteRules', context);\n if (isExtensionRulesEnabled(extension, editor.options.enablePasteRules) && addPasteRules) {\n pasteRules.push(...addPasteRules());\n }\n const addProseMirrorPlugins = getExtensionField(extension, 'addProseMirrorPlugins', context);\n if (addProseMirrorPlugins) {\n const proseMirrorPlugins = addProseMirrorPlugins();\n plugins.push(...proseMirrorPlugins);\n }\n return plugins;\n })\n .flat();\n return [\n inputRulesPlugin({\n editor,\n rules: inputRules,\n }),\n ...pasteRulesPlugin({\n editor,\n rules: pasteRules,\n }),\n ...allPlugins,\n ];\n }\n /**\n * Get all attributes from the extensions.\n * @returns An array of attributes\n */\n get attributes() {\n return getAttributesFromExtensions(this.extensions);\n }\n /**\n * Get all node views from the extensions.\n * @returns An object with all node views where the key is the node name and the value is the node view function\n */\n get nodeViews() {\n const { editor } = this;\n const { nodeExtensions } = splitExtensions(this.extensions);\n return Object.fromEntries(nodeExtensions\n .filter(extension => !!getExtensionField(extension, 'addNodeView'))\n .map(extension => {\n const extensionAttributes = this.attributes.filter(attribute => attribute.type === extension.name);\n const context = {\n name: extension.name,\n options: extension.options,\n storage: extension.storage,\n editor,\n type: getNodeType(extension.name, this.schema),\n };\n const addNodeView = getExtensionField(extension, 'addNodeView', context);\n if (!addNodeView) {\n return [];\n }\n const nodeview = (node, view, getPos, decorations) => {\n const HTMLAttributes = getRenderedAttributes(node, extensionAttributes);\n return addNodeView()({\n editor,\n node,\n getPos,\n decorations,\n HTMLAttributes,\n extension,\n });\n };\n return [extension.name, nodeview];\n }));\n }\n /**\n * Go through all extensions, create extension storages & setup marks\n * & bind editor event listener.\n */\n setupExtensions() {\n this.extensions.forEach(extension => {\n var _a;\n // store extension storage in editor\n this.editor.extensionStorage[extension.name] = extension.storage;\n const context = {\n name: extension.name,\n options: extension.options,\n storage: extension.storage,\n editor: this.editor,\n type: getSchemaTypeByName(extension.name, this.schema),\n };\n if (extension.type === 'mark') {\n const keepOnSplit = (_a = callOrReturn(getExtensionField(extension, 'keepOnSplit', context))) !== null && _a !== void 0 ? _a : true;\n if (keepOnSplit) {\n this.splittableMarks.push(extension.name);\n }\n }\n const onBeforeCreate = getExtensionField(extension, 'onBeforeCreate', context);\n const onCreate = getExtensionField(extension, 'onCreate', context);\n const onUpdate = getExtensionField(extension, 'onUpdate', context);\n const onSelectionUpdate = getExtensionField(extension, 'onSelectionUpdate', context);\n const onTransaction = getExtensionField(extension, 'onTransaction', context);\n const onFocus = getExtensionField(extension, 'onFocus', context);\n const onBlur = getExtensionField(extension, 'onBlur', context);\n const onDestroy = getExtensionField(extension, 'onDestroy', context);\n if (onBeforeCreate) {\n this.editor.on('beforeCreate', onBeforeCreate);\n }\n if (onCreate) {\n this.editor.on('create', onCreate);\n }\n if (onUpdate) {\n this.editor.on('update', onUpdate);\n }\n if (onSelectionUpdate) {\n this.editor.on('selectionUpdate', onSelectionUpdate);\n }\n if (onTransaction) {\n this.editor.on('transaction', onTransaction);\n }\n if (onFocus) {\n this.editor.on('focus', onFocus);\n }\n if (onBlur) {\n this.editor.on('blur', onBlur);\n }\n if (onDestroy) {\n this.editor.on('destroy', onDestroy);\n }\n });\n }\n}\n\n// see: https://github.com/mesqueeb/is-what/blob/88d6e4ca92fb2baab6003c54e02eedf4e729e5ab/src/index.ts\nfunction getType(value) {\n return Object.prototype.toString.call(value).slice(8, -1);\n}\nfunction isPlainObject(value) {\n if (getType(value) !== 'Object') {\n return false;\n }\n return value.constructor === Object && Object.getPrototypeOf(value) === Object.prototype;\n}\n\nfunction mergeDeep(target, source) {\n const output = { ...target };\n if (isPlainObject(target) && isPlainObject(source)) {\n Object.keys(source).forEach(key => {\n if (isPlainObject(source[key]) && isPlainObject(target[key])) {\n output[key] = mergeDeep(target[key], source[key]);\n }\n else {\n output[key] = source[key];\n }\n });\n }\n return output;\n}\n\n/**\n * The Extension class is the base class for all extensions.\n * @see https://tiptap.dev/api/extensions#create-a-new-extension\n */\nclass Extension {\n constructor(config = {}) {\n this.type = 'extension';\n this.name = 'extension';\n this.parent = null;\n this.child = null;\n this.config = {\n name: this.name,\n defaultOptions: {},\n };\n this.config = {\n ...this.config,\n ...config,\n };\n this.name = this.config.name;\n if (config.defaultOptions && Object.keys(config.defaultOptions).length > 0) {\n console.warn(`[tiptap warn]: BREAKING CHANGE: \"defaultOptions\" is deprecated. Please use \"addOptions\" instead. Found in extension: \"${this.name}\".`);\n }\n // TODO: remove `addOptions` fallback\n this.options = this.config.defaultOptions;\n if (this.config.addOptions) {\n this.options = callOrReturn(getExtensionField(this, 'addOptions', {\n name: this.name,\n }));\n }\n this.storage = callOrReturn(getExtensionField(this, 'addStorage', {\n name: this.name,\n options: this.options,\n })) || {};\n }\n static create(config = {}) {\n return new Extension(config);\n }\n configure(options = {}) {\n // return a new instance so we can use the same extension\n // with different calls of `configure`\n const extension = this.extend({\n ...this.config,\n addOptions() {\n var _a;\n return mergeDeep(((_a = this.parent) === null || _a === void 0 ? void 0 : _a.call(this)) || {}, options);\n },\n });\n // Always preserve the current name\n extension.name = this.name;\n // Set the parent to be our parent\n extension.parent = this.parent;\n return extension;\n }\n extend(extendedConfig = {}) {\n const extension = new Extension({ ...this.config, ...extendedConfig });\n extension.parent = this;\n this.child = extension;\n extension.name = extendedConfig.name ? extendedConfig.name : extension.parent.name;\n if (extendedConfig.defaultOptions && Object.keys(extendedConfig.defaultOptions).length > 0) {\n console.warn(`[tiptap warn]: BREAKING CHANGE: \"defaultOptions\" is deprecated. Please use \"addOptions\" instead. Found in extension: \"${extension.name}\".`);\n }\n extension.options = callOrReturn(getExtensionField(extension, 'addOptions', {\n name: extension.name,\n }));\n extension.storage = callOrReturn(getExtensionField(extension, 'addStorage', {\n name: extension.name,\n options: extension.options,\n }));\n return extension;\n }\n}\n\n/**\n * Gets the text between two positions in a Prosemirror node\n * and serializes it using the given text serializers and block separator (see getText)\n * @param startNode The Prosemirror node to start from\n * @param range The range of the text to get\n * @param options Options for the text serializer & block separator\n * @returns The text between the two positions\n */\nfunction getTextBetween(startNode, range, options) {\n const { from, to } = range;\n const { blockSeparator = '\\n\\n', textSerializers = {} } = options || {};\n let text = '';\n startNode.nodesBetween(from, to, (node, pos, parent, index) => {\n var _a;\n if (node.isBlock && pos > from) {\n text += blockSeparator;\n }\n const textSerializer = textSerializers === null || textSerializers === void 0 ? void 0 : textSerializers[node.type.name];\n if (textSerializer) {\n if (parent) {\n text += textSerializer({\n node,\n pos,\n parent,\n index,\n range,\n });\n }\n // do not descend into child nodes when there exists a serializer\n return false;\n }\n if (node.isText) {\n text += (_a = node === null || node === void 0 ? void 0 : node.text) === null || _a === void 0 ? void 0 : _a.slice(Math.max(from, pos) - pos, to - pos); // eslint-disable-line\n }\n });\n return text;\n}\n\n/**\n * Find text serializers `toText` in a Prosemirror schema\n * @param schema The Prosemirror schema to search in\n * @returns A record of text serializers by node name\n */\nfunction getTextSerializersFromSchema(schema) {\n return Object.fromEntries(Object.entries(schema.nodes)\n .filter(([, node]) => node.spec.toText)\n .map(([name, node]) => [name, node.spec.toText]));\n}\n\nconst ClipboardTextSerializer = Extension.create({\n name: 'clipboardTextSerializer',\n addOptions() {\n return {\n blockSeparator: undefined,\n };\n },\n addProseMirrorPlugins() {\n return [\n new Plugin({\n key: new PluginKey('clipboardTextSerializer'),\n props: {\n clipboardTextSerializer: () => {\n const { editor } = this;\n const { state, schema } = editor;\n const { doc, selection } = state;\n const { ranges } = selection;\n const from = Math.min(...ranges.map(range => range.$from.pos));\n const to = Math.max(...ranges.map(range => range.$to.pos));\n const textSerializers = getTextSerializersFromSchema(schema);\n const range = { from, to };\n return getTextBetween(doc, range, {\n ...(this.options.blockSeparator !== undefined\n ? { blockSeparator: this.options.blockSeparator }\n : {}),\n textSerializers,\n });\n },\n },\n }),\n ];\n },\n});\n\nconst blur = () => ({ editor, view }) => {\n requestAnimationFrame(() => {\n var _a;\n if (!editor.isDestroyed) {\n view.dom.blur();\n // Browsers should remove the caret on blur but safari does not.\n // See: https://github.com/ueberdosis/tiptap/issues/2405\n (_a = window === null || window === void 0 ? void 0 : window.getSelection()) === null || _a === void 0 ? void 0 : _a.removeAllRanges();\n }\n });\n return true;\n};\n\nconst clearContent = (emitUpdate = false) => ({ commands }) => {\n return commands.setContent('', emitUpdate);\n};\n\nconst clearNodes = () => ({ state, tr, dispatch }) => {\n const { selection } = tr;\n const { ranges } = selection;\n if (!dispatch) {\n return true;\n }\n ranges.forEach(({ $from, $to }) => {\n state.doc.nodesBetween($from.pos, $to.pos, (node, pos) => {\n if (node.type.isText) {\n return;\n }\n const { doc, mapping } = tr;\n const $mappedFrom = doc.resolve(mapping.map(pos));\n const $mappedTo = doc.resolve(mapping.map(pos + node.nodeSize));\n const nodeRange = $mappedFrom.blockRange($mappedTo);\n if (!nodeRange) {\n return;\n }\n const targetLiftDepth = liftTarget(nodeRange);\n if (node.type.isTextblock) {\n const { defaultType } = $mappedFrom.parent.contentMatchAt($mappedFrom.index());\n tr.setNodeMarkup(nodeRange.start, defaultType);\n }\n if (targetLiftDepth || targetLiftDepth === 0) {\n tr.lift(nodeRange, targetLiftDepth);\n }\n });\n });\n return true;\n};\n\nconst command = fn => props => {\n return fn(props);\n};\n\nconst createParagraphNear = () => ({ state, dispatch }) => {\n return createParagraphNear$1(state, dispatch);\n};\n\nconst cut = (originRange, targetPos) => ({ editor, tr }) => {\n const { state } = editor;\n const contentSlice = state.doc.slice(originRange.from, originRange.to);\n tr.deleteRange(originRange.from, originRange.to);\n const newPos = tr.mapping.map(targetPos);\n tr.insert(newPos, contentSlice.content);\n tr.setSelection(new TextSelection(tr.doc.resolve(newPos - 1)));\n return true;\n};\n\nconst deleteCurrentNode = () => ({ tr, dispatch }) => {\n const { selection } = tr;\n const currentNode = selection.$anchor.node();\n // if there is content inside the current node, break out of this command\n if (currentNode.content.size > 0) {\n return false;\n }\n const $pos = tr.selection.$anchor;\n for (let depth = $pos.depth; depth > 0; depth -= 1) {\n const node = $pos.node(depth);\n if (node.type === currentNode.type) {\n if (dispatch) {\n const from = $pos.before(depth);\n const to = $pos.after(depth);\n tr.delete(from, to).scrollIntoView();\n }\n return true;\n }\n }\n return false;\n};\n\nconst deleteNode = typeOrName => ({ tr, state, dispatch }) => {\n const type = getNodeType(typeOrName, state.schema);\n const $pos = tr.selection.$anchor;\n for (let depth = $pos.depth; depth > 0; depth -= 1) {\n const node = $pos.node(depth);\n if (node.type === type) {\n if (dispatch) {\n const from = $pos.before(depth);\n const to = $pos.after(depth);\n tr.delete(from, to).scrollIntoView();\n }\n return true;\n }\n }\n return false;\n};\n\nconst deleteRange = range => ({ tr, dispatch }) => {\n const { from, to } = range;\n if (dispatch) {\n tr.delete(from, to);\n }\n return true;\n};\n\nconst deleteSelection = () => ({ state, dispatch }) => {\n return deleteSelection$1(state, dispatch);\n};\n\nconst enter = () => ({ commands }) => {\n return commands.keyboardShortcut('Enter');\n};\n\nconst exitCode = () => ({ state, dispatch }) => {\n return exitCode$1(state, dispatch);\n};\n\n/**\n * Check if object1 includes object2\n * @param object1 Object\n * @param object2 Object\n */\nfunction objectIncludes(object1, object2, options = { strict: true }) {\n const keys = Object.keys(object2);\n if (!keys.length) {\n return true;\n }\n return keys.every(key => {\n if (options.strict) {\n return object2[key] === object1[key];\n }\n if (isRegExp(object2[key])) {\n return object2[key].test(object1[key]);\n }\n return object2[key] === object1[key];\n });\n}\n\nfunction findMarkInSet(marks, type, attributes = {}) {\n return marks.find(item => {\n return item.type === type && objectIncludes(item.attrs, attributes);\n });\n}\nfunction isMarkInSet(marks, type, attributes = {}) {\n return !!findMarkInSet(marks, type, attributes);\n}\nfunction getMarkRange($pos, type, attributes = {}) {\n if (!$pos || !type) {\n return;\n }\n let start = $pos.parent.childAfter($pos.parentOffset);\n if ($pos.parentOffset === start.offset && start.offset !== 0) {\n start = $pos.parent.childBefore($pos.parentOffset);\n }\n if (!start.node) {\n return;\n }\n const mark = findMarkInSet([...start.node.marks], type, attributes);\n if (!mark) {\n return;\n }\n let startIndex = start.index;\n let startPos = $pos.start() + start.offset;\n let endIndex = startIndex + 1;\n let endPos = startPos + start.node.nodeSize;\n findMarkInSet([...start.node.marks], type, attributes);\n while (startIndex > 0 && mark.isInSet($pos.parent.child(startIndex - 1).marks)) {\n startIndex -= 1;\n startPos -= $pos.parent.child(startIndex).nodeSize;\n }\n while (endIndex < $pos.parent.childCount\n && isMarkInSet([...$pos.parent.child(endIndex).marks], type, attributes)) {\n endPos += $pos.parent.child(endIndex).nodeSize;\n endIndex += 1;\n }\n return {\n from: startPos,\n to: endPos,\n };\n}\n\nfunction getMarkType(nameOrType, schema) {\n if (typeof nameOrType === 'string') {\n if (!schema.marks[nameOrType]) {\n throw Error(`There is no mark type named '${nameOrType}'. Maybe you forgot to add the extension?`);\n }\n return schema.marks[nameOrType];\n }\n return nameOrType;\n}\n\nconst extendMarkRange = (typeOrName, attributes = {}) => ({ tr, state, dispatch }) => {\n const type = getMarkType(typeOrName, state.schema);\n const { doc, selection } = tr;\n const { $from, from, to } = selection;\n if (dispatch) {\n const range = getMarkRange($from, type, attributes);\n if (range && range.from <= from && range.to >= to) {\n const newSelection = TextSelection.create(doc, range.from, range.to);\n tr.setSelection(newSelection);\n }\n }\n return true;\n};\n\nconst first = commands => props => {\n const items = typeof commands === 'function'\n ? commands(props)\n : commands;\n for (let i = 0; i < items.length; i += 1) {\n if (items[i](props)) {\n return true;\n }\n }\n return false;\n};\n\nfunction isTextSelection(value) {\n return value instanceof TextSelection;\n}\n\nfunction minMax(value = 0, min = 0, max = 0) {\n return Math.min(Math.max(value, min), max);\n}\n\nfunction resolveFocusPosition(doc, position = null) {\n if (!position) {\n return null;\n }\n const selectionAtStart = Selection.atStart(doc);\n const selectionAtEnd = Selection.atEnd(doc);\n if (position === 'start' || position === true) {\n return selectionAtStart;\n }\n if (position === 'end') {\n return selectionAtEnd;\n }\n const minPos = selectionAtStart.from;\n const maxPos = selectionAtEnd.to;\n if (position === 'all') {\n return TextSelection.create(doc, minMax(0, minPos, maxPos), minMax(doc.content.size, minPos, maxPos));\n }\n return TextSelection.create(doc, minMax(position, minPos, maxPos), minMax(position, minPos, maxPos));\n}\n\nfunction isiOS() {\n return [\n 'iPad Simulator',\n 'iPhone Simulator',\n 'iPod Simulator',\n 'iPad',\n 'iPhone',\n 'iPod',\n ].includes(navigator.platform)\n // iPad on iOS 13 detection\n || (navigator.userAgent.includes('Mac') && 'ontouchend' in document);\n}\n\nconst focus = (position = null, options = {}) => ({ editor, view, tr, dispatch, }) => {\n options = {\n scrollIntoView: true,\n ...options,\n };\n const delayedFocus = () => {\n // focus within `requestAnimationFrame` breaks focus on iOS\n // so we have to call this\n if (isiOS()) {\n view.dom.focus();\n }\n // For React we have to focus asynchronously. Otherwise wild things happen.\n // see: https://github.com/ueberdosis/tiptap/issues/1520\n requestAnimationFrame(() => {\n if (!editor.isDestroyed) {\n view.focus();\n if (options === null || options === void 0 ? void 0 : options.scrollIntoView) {\n editor.commands.scrollIntoView();\n }\n }\n });\n };\n if ((view.hasFocus() && position === null) || position === false) {\n return true;\n }\n // we don’t try to resolve a NodeSelection or CellSelection\n if (dispatch && position === null && !isTextSelection(editor.state.selection)) {\n delayedFocus();\n return true;\n }\n // pass through tr.doc instead of editor.state.doc\n // since transactions could change the editors state before this command has been run\n const selection = resolveFocusPosition(tr.doc, position) || editor.state.selection;\n const isSameSelection = editor.state.selection.eq(selection);\n if (dispatch) {\n if (!isSameSelection) {\n tr.setSelection(selection);\n }\n // `tr.setSelection` resets the stored marks\n // so we’ll restore them if the selection is the same as before\n if (isSameSelection && tr.storedMarks) {\n tr.setStoredMarks(tr.storedMarks);\n }\n delayedFocus();\n }\n return true;\n};\n\nconst forEach = (items, fn) => props => {\n return items.every((item, index) => fn(item, { ...props, index }));\n};\n\nconst insertContent = (value, options) => ({ tr, commands }) => {\n return commands.insertContentAt({ from: tr.selection.from, to: tr.selection.to }, value, options);\n};\n\nconst removeWhitespaces = (node) => {\n const children = node.childNodes;\n for (let i = children.length - 1; i >= 0; i -= 1) {\n const child = children[i];\n if (child.nodeType === 3 && child.nodeValue && /^(\\n\\s\\s|\\n)$/.test(child.nodeValue)) {\n node.removeChild(child);\n }\n else if (child.nodeType === 1) {\n removeWhitespaces(child);\n }\n }\n return node;\n};\nfunction elementFromString(value) {\n // add a wrapper to preserve leading and trailing whitespace\n const wrappedValue = `${value}`;\n const html = new window.DOMParser().parseFromString(wrappedValue, 'text/html').body;\n return removeWhitespaces(html);\n}\n\n/**\n * Takes a JSON or HTML content and creates a Prosemirror node or fragment from it.\n * @param content The JSON or HTML content to create the node from\n * @param schema The Prosemirror schema to use for the node\n * @param options Options for the parser\n * @returns The created Prosemirror node or fragment\n */\nfunction createNodeFromContent(content, schema, options) {\n options = {\n slice: true,\n parseOptions: {},\n ...options,\n };\n const isJSONContent = typeof content === 'object' && content !== null;\n const isTextContent = typeof content === 'string';\n if (isJSONContent) {\n try {\n const isArrayContent = Array.isArray(content) && content.length > 0;\n // if the JSON Content is an array of nodes, create a fragment for each node\n if (isArrayContent) {\n return Fragment.fromArray(content.map(item => schema.nodeFromJSON(item)));\n }\n return schema.nodeFromJSON(content);\n }\n catch (error) {\n if (options.errorOnInvalidContent) {\n throw new Error('[tiptap error]: Invalid JSON content', { cause: error });\n }\n console.warn('[tiptap warn]: Invalid content.', 'Passed value:', content, 'Error:', error);\n return createNodeFromContent('', schema, options);\n }\n }\n if (isTextContent) {\n let schemaToUse = schema;\n let hasInvalidContent = false;\n let invalidContent = '';\n // Only ever check for invalid content if we're supposed to throw an error\n if (options.errorOnInvalidContent) {\n schemaToUse = new Schema({\n topNode: schema.spec.topNode,\n marks: schema.spec.marks,\n // Prosemirror's schemas are executed such that: the last to execute, matches last\n // This means that we can add a catch-all node at the end of the schema to catch any content that we don't know how to handle\n nodes: schema.spec.nodes.append({\n __tiptap__private__unknown__catch__all__node: {\n content: 'inline*',\n group: 'block',\n parseDOM: [\n {\n tag: '*',\n getAttrs: e => {\n // If this is ever called, we know that the content has something that we don't know how to handle in the schema\n hasInvalidContent = true;\n // Try to stringify the element for a more helpful error message\n invalidContent = typeof e === 'string' ? e : e.outerHTML;\n return null;\n },\n },\n ],\n },\n }),\n });\n }\n const parser = DOMParser.fromSchema(schemaToUse);\n const response = options.slice\n ? parser.parseSlice(elementFromString(content), options.parseOptions).content\n : parser.parse(elementFromString(content), options.parseOptions);\n if (options.errorOnInvalidContent && hasInvalidContent) {\n throw new Error('[tiptap error]: Invalid HTML content', { cause: new Error(`Invalid element found: ${invalidContent}`) });\n }\n return response;\n }\n return createNodeFromContent('', schema, options);\n}\n\n// source: https://github.com/ProseMirror/prosemirror-state/blob/master/src/selection.js#L466\nfunction selectionToInsertionEnd(tr, startLen, bias) {\n const last = tr.steps.length - 1;\n if (last < startLen) {\n return;\n }\n const step = tr.steps[last];\n if (!(step instanceof ReplaceStep || step instanceof ReplaceAroundStep)) {\n return;\n }\n const map = tr.mapping.maps[last];\n let end = 0;\n map.forEach((_from, _to, _newFrom, newTo) => {\n if (end === 0) {\n end = newTo;\n }\n });\n tr.setSelection(Selection.near(tr.doc.resolve(end), bias));\n}\n\nconst isFragment = (nodeOrFragment) => {\n return !('type' in nodeOrFragment);\n};\nconst insertContentAt = (position, value, options) => ({ tr, dispatch, editor }) => {\n var _a;\n if (dispatch) {\n options = {\n parseOptions: {},\n updateSelection: true,\n applyInputRules: false,\n applyPasteRules: false,\n ...options,\n };\n let content;\n try {\n content = createNodeFromContent(value, editor.schema, {\n parseOptions: {\n preserveWhitespace: 'full',\n ...options.parseOptions,\n },\n errorOnInvalidContent: (_a = options.errorOnInvalidContent) !== null && _a !== void 0 ? _a : editor.options.enableContentCheck,\n });\n }\n catch (e) {\n return false;\n }\n let { from, to } = typeof position === 'number' ? { from: position, to: position } : { from: position.from, to: position.to };\n let isOnlyTextContent = true;\n let isOnlyBlockContent = true;\n const nodes = isFragment(content) ? content : [content];\n nodes.forEach(node => {\n // check if added node is valid\n node.check();\n isOnlyTextContent = isOnlyTextContent ? node.isText && node.marks.length === 0 : false;\n isOnlyBlockContent = isOnlyBlockContent ? node.isBlock : false;\n });\n // check if we can replace the wrapping node by\n // the newly inserted content\n // example:\n // replace an empty paragraph by an inserted image\n // instead of inserting the image below the paragraph\n if (from === to && isOnlyBlockContent) {\n const { parent } = tr.doc.resolve(from);\n const isEmptyTextBlock = parent.isTextblock && !parent.type.spec.code && !parent.childCount;\n if (isEmptyTextBlock) {\n from -= 1;\n to += 1;\n }\n }\n let newContent;\n // if there is only plain text we have to use `insertText`\n // because this will keep the current marks\n if (isOnlyTextContent) {\n // if value is string, we can use it directly\n // otherwise if it is an array, we have to join it\n if (Array.isArray(value)) {\n newContent = value.map(v => v.text || '').join('');\n }\n else if (typeof value === 'object' && !!value && !!value.text) {\n newContent = value.text;\n }\n else {\n newContent = value;\n }\n tr.insertText(newContent, from, to);\n }\n else {\n newContent = content;\n tr.replaceWith(from, to, newContent);\n }\n // set cursor at end of inserted content\n if (options.updateSelection) {\n selectionToInsertionEnd(tr, tr.steps.length - 1, -1);\n }\n if (options.applyInputRules) {\n tr.setMeta('applyInputRules', { from, text: newContent });\n }\n if (options.applyPasteRules) {\n tr.setMeta('applyPasteRules', { from, text: newContent });\n }\n }\n return true;\n};\n\nconst joinUp = () => ({ state, dispatch }) => {\n return joinUp$1(state, dispatch);\n};\nconst joinDown = () => ({ state, dispatch }) => {\n return joinDown$1(state, dispatch);\n};\nconst joinBackward = () => ({ state, dispatch }) => {\n return joinBackward$1(state, dispatch);\n};\nconst joinForward = () => ({ state, dispatch }) => {\n return joinForward$1(state, dispatch);\n};\n\nconst joinItemBackward = () => ({ state, dispatch, tr, }) => {\n try {\n const point = joinPoint(state.doc, state.selection.$from.pos, -1);\n if (point === null || point === undefined) {\n return false;\n }\n tr.join(point, 2);\n if (dispatch) {\n dispatch(tr);\n }\n return true;\n }\n catch (e) {\n return false;\n }\n};\n\nconst joinItemForward = () => ({ state, dispatch, tr, }) => {\n try {\n const point = joinPoint(state.doc, state.selection.$from.pos, +1);\n if (point === null || point === undefined) {\n return false;\n }\n tr.join(point, 2);\n if (dispatch) {\n dispatch(tr);\n }\n return true;\n }\n catch (e) {\n return false;\n }\n};\n\nconst joinTextblockBackward = () => ({ state, dispatch }) => {\n return joinTextblockBackward$1(state, dispatch);\n};\n\nconst joinTextblockForward = () => ({ state, dispatch }) => {\n return joinTextblockForward$1(state, dispatch);\n};\n\nfunction isMacOS() {\n return typeof navigator !== 'undefined'\n ? /Mac/.test(navigator.platform)\n : false;\n}\n\nfunction normalizeKeyName(name) {\n const parts = name.split(/-(?!$)/);\n let result = parts[parts.length - 1];\n if (result === 'Space') {\n result = ' ';\n }\n let alt;\n let ctrl;\n let shift;\n let meta;\n for (let i = 0; i < parts.length - 1; i += 1) {\n const mod = parts[i];\n if (/^(cmd|meta|m)$/i.test(mod)) {\n meta = true;\n }\n else if (/^a(lt)?$/i.test(mod)) {\n alt = true;\n }\n else if (/^(c|ctrl|control)$/i.test(mod)) {\n ctrl = true;\n }\n else if (/^s(hift)?$/i.test(mod)) {\n shift = true;\n }\n else if (/^mod$/i.test(mod)) {\n if (isiOS() || isMacOS()) {\n meta = true;\n }\n else {\n ctrl = true;\n }\n }\n else {\n throw new Error(`Unrecognized modifier name: ${mod}`);\n }\n }\n if (alt) {\n result = `Alt-${result}`;\n }\n if (ctrl) {\n result = `Ctrl-${result}`;\n }\n if (meta) {\n result = `Meta-${result}`;\n }\n if (shift) {\n result = `Shift-${result}`;\n }\n return result;\n}\nconst keyboardShortcut = name => ({ editor, view, tr, dispatch, }) => {\n const keys = normalizeKeyName(name).split(/-(?!$)/);\n const key = keys.find(item => !['Alt', 'Ctrl', 'Meta', 'Shift'].includes(item));\n const event = new KeyboardEvent('keydown', {\n key: key === 'Space'\n ? ' '\n : key,\n altKey: keys.includes('Alt'),\n ctrlKey: keys.includes('Ctrl'),\n metaKey: keys.includes('Meta'),\n shiftKey: keys.includes('Shift'),\n bubbles: true,\n cancelable: true,\n });\n const capturedTransaction = editor.captureTransaction(() => {\n view.someProp('handleKeyDown', f => f(view, event));\n });\n capturedTransaction === null || capturedTransaction === void 0 ? void 0 : capturedTransaction.steps.forEach(step => {\n const newStep = step.map(tr.mapping);\n if (newStep && dispatch) {\n tr.maybeStep(newStep);\n }\n });\n return true;\n};\n\nfunction isNodeActive(state, typeOrName, attributes = {}) {\n const { from, to, empty } = state.selection;\n const type = typeOrName ? getNodeType(typeOrName, state.schema) : null;\n const nodeRanges = [];\n state.doc.nodesBetween(from, to, (node, pos) => {\n if (node.isText) {\n return;\n }\n const relativeFrom = Math.max(from, pos);\n const relativeTo = Math.min(to, pos + node.nodeSize);\n nodeRanges.push({\n node,\n from: relativeFrom,\n to: relativeTo,\n });\n });\n const selectionRange = to - from;\n const matchedNodeRanges = nodeRanges\n .filter(nodeRange => {\n if (!type) {\n return true;\n }\n return type.name === nodeRange.node.type.name;\n })\n .filter(nodeRange => objectIncludes(nodeRange.node.attrs, attributes, { strict: false }));\n if (empty) {\n return !!matchedNodeRanges.length;\n }\n const range = matchedNodeRanges.reduce((sum, nodeRange) => sum + nodeRange.to - nodeRange.from, 0);\n return range >= selectionRange;\n}\n\nconst lift = (typeOrName, attributes = {}) => ({ state, dispatch }) => {\n const type = getNodeType(typeOrName, state.schema);\n const isActive = isNodeActive(state, type, attributes);\n if (!isActive) {\n return false;\n }\n return lift$1(state, dispatch);\n};\n\nconst liftEmptyBlock = () => ({ state, dispatch }) => {\n return liftEmptyBlock$1(state, dispatch);\n};\n\nconst liftListItem = typeOrName => ({ state, dispatch }) => {\n const type = getNodeType(typeOrName, state.schema);\n return liftListItem$1(type)(state, dispatch);\n};\n\nconst newlineInCode = () => ({ state, dispatch }) => {\n return newlineInCode$1(state, dispatch);\n};\n\n/**\n * Get the type of a schema item by its name.\n * @param name The name of the schema item\n * @param schema The Prosemiror schema to search in\n * @returns The type of the schema item (`node` or `mark`), or null if it doesn't exist\n */\nfunction getSchemaTypeNameByName(name, schema) {\n if (schema.nodes[name]) {\n return 'node';\n }\n if (schema.marks[name]) {\n return 'mark';\n }\n return null;\n}\n\n/**\n * Remove a property or an array of properties from an object\n * @param obj Object\n * @param key Key to remove\n */\nfunction deleteProps(obj, propOrProps) {\n const props = typeof propOrProps === 'string'\n ? [propOrProps]\n : propOrProps;\n return Object\n .keys(obj)\n .reduce((newObj, prop) => {\n if (!props.includes(prop)) {\n newObj[prop] = obj[prop];\n }\n return newObj;\n }, {});\n}\n\nconst resetAttributes = (typeOrName, attributes) => ({ tr, state, dispatch }) => {\n let nodeType = null;\n let markType = null;\n const schemaType = getSchemaTypeNameByName(typeof typeOrName === 'string' ? typeOrName : typeOrName.name, state.schema);\n if (!schemaType) {\n return false;\n }\n if (schemaType === 'node') {\n nodeType = getNodeType(typeOrName, state.schema);\n }\n if (schemaType === 'mark') {\n markType = getMarkType(typeOrName, state.schema);\n }\n if (dispatch) {\n tr.selection.ranges.forEach(range => {\n state.doc.nodesBetween(range.$from.pos, range.$to.pos, (node, pos) => {\n if (nodeType && nodeType === node.type) {\n tr.setNodeMarkup(pos, undefined, deleteProps(node.attrs, attributes));\n }\n if (markType && node.marks.length) {\n node.marks.forEach(mark => {\n if (markType === mark.type) {\n tr.addMark(pos, pos + node.nodeSize, markType.create(deleteProps(mark.attrs, attributes)));\n }\n });\n }\n });\n });\n }\n return true;\n};\n\nconst scrollIntoView = () => ({ tr, dispatch }) => {\n if (dispatch) {\n tr.scrollIntoView();\n }\n return true;\n};\n\nconst selectAll = () => ({ tr, commands }) => {\n return commands.setTextSelection({\n from: 0,\n to: tr.doc.content.size,\n });\n};\n\nconst selectNodeBackward = () => ({ state, dispatch }) => {\n return selectNodeBackward$1(state, dispatch);\n};\n\nconst selectNodeForward = () => ({ state, dispatch }) => {\n return selectNodeForward$1(state, dispatch);\n};\n\nconst selectParentNode = () => ({ state, dispatch }) => {\n return selectParentNode$1(state, dispatch);\n};\n\n// @ts-ignore\n// TODO: add types to @types/prosemirror-commands\nconst selectTextblockEnd = () => ({ state, dispatch }) => {\n return selectTextblockEnd$1(state, dispatch);\n};\n\n// @ts-ignore\n// TODO: add types to @types/prosemirror-commands\nconst selectTextblockStart = () => ({ state, dispatch }) => {\n return selectTextblockStart$1(state, dispatch);\n};\n\n/**\n * Create a new Prosemirror document node from content.\n * @param content The JSON or HTML content to create the document from\n * @param schema The Prosemirror schema to use for the document\n * @param parseOptions Options for the parser\n * @returns The created Prosemirror document node\n */\nfunction createDocument(content, schema, parseOptions = {}, options = {}) {\n return createNodeFromContent(content, schema, {\n slice: false,\n parseOptions,\n errorOnInvalidContent: options.errorOnInvalidContent,\n });\n}\n\nconst setContent = (content, emitUpdate = false, parseOptions = {}, options = {}) => ({ editor, tr, dispatch, commands, }) => {\n var _a, _b;\n const { doc } = tr;\n // This is to keep backward compatibility with the previous behavior\n // TODO remove this in the next major version\n if (parseOptions.preserveWhitespace !== 'full') {\n const document = createDocument(content, editor.schema, parseOptions, {\n errorOnInvalidContent: (_a = options.errorOnInvalidContent) !== null && _a !== void 0 ? _a : editor.options.enableContentCheck,\n });\n if (dispatch) {\n tr.replaceWith(0, doc.content.size, document).setMeta('preventUpdate', !emitUpdate);\n }\n return true;\n }\n if (dispatch) {\n tr.setMeta('preventUpdate', !emitUpdate);\n }\n return commands.insertContentAt({ from: 0, to: doc.content.size }, content, {\n parseOptions,\n errorOnInvalidContent: (_b = options.errorOnInvalidContent) !== null && _b !== void 0 ? _b : editor.options.enableContentCheck,\n });\n};\n\nfunction getMarkAttributes(state, typeOrName) {\n const type = getMarkType(typeOrName, state.schema);\n const { from, to, empty } = state.selection;\n const marks = [];\n if (empty) {\n if (state.storedMarks) {\n marks.push(...state.storedMarks);\n }\n marks.push(...state.selection.$head.marks());\n }\n else {\n state.doc.nodesBetween(from, to, node => {\n marks.push(...node.marks);\n });\n }\n const mark = marks.find(markItem => markItem.type.name === type.name);\n if (!mark) {\n return {};\n }\n return { ...mark.attrs };\n}\n\n/**\n * Returns a new `Transform` based on all steps of the passed transactions.\n * @param oldDoc The Prosemirror node to start from\n * @param transactions The transactions to combine\n * @returns A new `Transform` with all steps of the passed transactions\n */\nfunction combineTransactionSteps(oldDoc, transactions) {\n const transform = new Transform(oldDoc);\n transactions.forEach(transaction => {\n transaction.steps.forEach(step => {\n transform.step(step);\n });\n });\n return transform;\n}\n\n/**\n * Gets the default block type at a given match\n * @param match The content match to get the default block type from\n * @returns The default block type or null\n */\nfunction defaultBlockAt(match) {\n for (let i = 0; i < match.edgeCount; i += 1) {\n const { type } = match.edge(i);\n if (type.isTextblock && !type.hasRequiredAttrs()) {\n return type;\n }\n }\n return null;\n}\n\n/**\n * Find children inside a Prosemirror node that match a predicate.\n * @param node The Prosemirror node to search in\n * @param predicate The predicate to match\n * @returns An array of nodes with their positions\n */\nfunction findChildren(node, predicate) {\n const nodesWithPos = [];\n node.descendants((child, pos) => {\n if (predicate(child)) {\n nodesWithPos.push({\n node: child,\n pos,\n });\n }\n });\n return nodesWithPos;\n}\n\n/**\n * Same as `findChildren` but searches only within a `range`.\n * @param node The Prosemirror node to search in\n * @param range The range to search in\n * @param predicate The predicate to match\n * @returns An array of nodes with their positions\n */\nfunction findChildrenInRange(node, range, predicate) {\n const nodesWithPos = [];\n // if (range.from === range.to) {\n // const nodeAt = node.nodeAt(range.from)\n // if (nodeAt) {\n // nodesWithPos.push({\n // node: nodeAt,\n // pos: range.from,\n // })\n // }\n // }\n node.nodesBetween(range.from, range.to, (child, pos) => {\n if (predicate(child)) {\n nodesWithPos.push({\n node: child,\n pos,\n });\n }\n });\n return nodesWithPos;\n}\n\n/**\n * Finds the closest parent node to a resolved position that matches a predicate.\n * @param $pos The resolved position to search from\n * @param predicate The predicate to match\n * @returns The closest parent node to the resolved position that matches the predicate\n * @example ```js\n * findParentNodeClosestToPos($from, node => node.type.name === 'paragraph')\n * ```\n */\nfunction findParentNodeClosestToPos($pos, predicate) {\n for (let i = $pos.depth; i > 0; i -= 1) {\n const node = $pos.node(i);\n if (predicate(node)) {\n return {\n pos: i > 0 ? $pos.before(i) : 0,\n start: $pos.start(i),\n depth: i,\n node,\n };\n }\n }\n}\n\n/**\n * Finds the closest parent node to the current selection that matches a predicate.\n * @param predicate The predicate to match\n * @returns A command that finds the closest parent node to the current selection that matches the predicate\n * @example ```js\n * findParentNode(node => node.type.name === 'paragraph')\n * ```\n */\nfunction findParentNode(predicate) {\n return (selection) => findParentNodeClosestToPos(selection.$from, predicate);\n}\n\nfunction getHTMLFromFragment(fragment, schema) {\n const documentFragment = DOMSerializer.fromSchema(schema).serializeFragment(fragment);\n const temporaryDocument = document.implementation.createHTMLDocument();\n const container = temporaryDocument.createElement('div');\n container.appendChild(documentFragment);\n return container.innerHTML;\n}\n\nfunction getSchema(extensions, editor) {\n const resolvedExtensions = ExtensionManager.resolve(extensions);\n return getSchemaByResolvedExtensions(resolvedExtensions, editor);\n}\n\n/**\n * Generate HTML from a JSONContent\n * @param doc The JSONContent to generate HTML from\n * @param extensions The extensions to use for the schema\n * @returns The generated HTML\n */\nfunction generateHTML(doc, extensions) {\n const schema = getSchema(extensions);\n const contentNode = Node$1.fromJSON(schema, doc);\n return getHTMLFromFragment(contentNode.content, schema);\n}\n\n/**\n * Generate JSONContent from HTML\n * @param html The HTML to generate JSONContent from\n * @param extensions The extensions to use for the schema\n * @returns The generated JSONContent\n */\nfunction generateJSON(html, extensions) {\n const schema = getSchema(extensions);\n const dom = elementFromString(html);\n return DOMParser.fromSchema(schema).parse(dom).toJSON();\n}\n\n/**\n * Gets the text of a Prosemirror node\n * @param node The Prosemirror node\n * @param options Options for the text serializer & block separator\n * @returns The text of the node\n * @example ```js\n * const text = getText(node, { blockSeparator: '\\n' })\n * ```\n */\nfunction getText(node, options) {\n const range = {\n from: 0,\n to: node.content.size,\n };\n return getTextBetween(node, range, options);\n}\n\n/**\n * Generate raw text from a JSONContent\n * @param doc The JSONContent to generate text from\n * @param extensions The extensions to use for the schema\n * @param options Options for the text generation f.e. blockSeparator or textSerializers\n * @returns The generated text\n */\nfunction generateText(doc, extensions, options) {\n const { blockSeparator = '\\n\\n', textSerializers = {} } = options || {};\n const schema = getSchema(extensions);\n const contentNode = Node$1.fromJSON(schema, doc);\n return getText(contentNode, {\n blockSeparator,\n textSerializers: {\n ...getTextSerializersFromSchema(schema),\n ...textSerializers,\n },\n });\n}\n\nfunction getNodeAttributes(state, typeOrName) {\n const type = getNodeType(typeOrName, state.schema);\n const { from, to } = state.selection;\n const nodes = [];\n state.doc.nodesBetween(from, to, node => {\n nodes.push(node);\n });\n const node = nodes.reverse().find(nodeItem => nodeItem.type.name === type.name);\n if (!node) {\n return {};\n }\n return { ...node.attrs };\n}\n\n/**\n * Get node or mark attributes by type or name on the current editor state\n * @param state The current editor state\n * @param typeOrName The node or mark type or name\n * @returns The attributes of the node or mark or an empty object\n */\nfunction getAttributes(state, typeOrName) {\n const schemaType = getSchemaTypeNameByName(typeof typeOrName === 'string' ? typeOrName : typeOrName.name, state.schema);\n if (schemaType === 'node') {\n return getNodeAttributes(state, typeOrName);\n }\n if (schemaType === 'mark') {\n return getMarkAttributes(state, typeOrName);\n }\n return {};\n}\n\n/**\n * Removes duplicated values within an array.\n * Supports numbers, strings and objects.\n */\nfunction removeDuplicates(array, by = JSON.stringify) {\n const seen = {};\n return array.filter(item => {\n const key = by(item);\n return Object.prototype.hasOwnProperty.call(seen, key)\n ? false\n : (seen[key] = true);\n });\n}\n\n/**\n * Removes duplicated ranges and ranges that are\n * fully captured by other ranges.\n */\nfunction simplifyChangedRanges(changes) {\n const uniqueChanges = removeDuplicates(changes);\n return uniqueChanges.length === 1\n ? uniqueChanges\n : uniqueChanges.filter((change, index) => {\n const rest = uniqueChanges.filter((_, i) => i !== index);\n return !rest.some(otherChange => {\n return change.oldRange.from >= otherChange.oldRange.from\n && change.oldRange.to <= otherChange.oldRange.to\n && change.newRange.from >= otherChange.newRange.from\n && change.newRange.to <= otherChange.newRange.to;\n });\n });\n}\n/**\n * Returns a list of changed ranges\n * based on the first and last state of all steps.\n */\nfunction getChangedRanges(transform) {\n const { mapping, steps } = transform;\n const changes = [];\n mapping.maps.forEach((stepMap, index) => {\n const ranges = [];\n // This accounts for step changes where no range was actually altered\n // e.g. when setting a mark, node attribute, etc.\n // @ts-ignore\n if (!stepMap.ranges.length) {\n const { from, to } = steps[index];\n if (from === undefined || to === undefined) {\n return;\n }\n ranges.push({ from, to });\n }\n else {\n stepMap.forEach((from, to) => {\n ranges.push({ from, to });\n });\n }\n ranges.forEach(({ from, to }) => {\n const newStart = mapping.slice(index).map(from, -1);\n const newEnd = mapping.slice(index).map(to);\n const oldStart = mapping.invert().map(newStart, -1);\n const oldEnd = mapping.invert().map(newEnd);\n changes.push({\n oldRange: {\n from: oldStart,\n to: oldEnd,\n },\n newRange: {\n from: newStart,\n to: newEnd,\n },\n });\n });\n });\n return simplifyChangedRanges(changes);\n}\n\nfunction getDebugJSON(node, startOffset = 0) {\n const isTopNode = node.type === node.type.schema.topNodeType;\n const increment = isTopNode ? 0 : 1;\n const from = startOffset;\n const to = from + node.nodeSize;\n const marks = node.marks.map(mark => {\n const output = {\n type: mark.type.name,\n };\n if (Object.keys(mark.attrs).length) {\n output.attrs = { ...mark.attrs };\n }\n return output;\n });\n const attrs = { ...node.attrs };\n const output = {\n type: node.type.name,\n from,\n to,\n };\n if (Object.keys(attrs).length) {\n output.attrs = attrs;\n }\n if (marks.length) {\n output.marks = marks;\n }\n if (node.content.childCount) {\n output.content = [];\n node.forEach((child, offset) => {\n var _a;\n (_a = output.content) === null || _a === void 0 ? void 0 : _a.push(getDebugJSON(child, startOffset + offset + increment));\n });\n }\n if (node.text) {\n output.text = node.text;\n }\n return output;\n}\n\nfunction getMarksBetween(from, to, doc) {\n const marks = [];\n // get all inclusive marks on empty selection\n if (from === to) {\n doc\n .resolve(from)\n .marks()\n .forEach(mark => {\n const $pos = doc.resolve(from - 1);\n const range = getMarkRange($pos, mark.type);\n if (!range) {\n return;\n }\n marks.push({\n mark,\n ...range,\n });\n });\n }\n else {\n doc.nodesBetween(from, to, (node, pos) => {\n if (!node || (node === null || node === void 0 ? void 0 : node.nodeSize) === undefined) {\n return;\n }\n marks.push(...node.marks.map(mark => ({\n from: pos,\n to: pos + node.nodeSize,\n mark,\n })));\n });\n }\n return marks;\n}\n\n/**\n * Finds the first node of a given type or name in the current selection.\n * @param state The editor state.\n * @param typeOrName The node type or name.\n * @param pos The position to start searching from.\n * @param maxDepth The maximum depth to search.\n * @returns The node and the depth as an array.\n */\nconst getNodeAtPosition = (state, typeOrName, pos, maxDepth = 20) => {\n const $pos = state.doc.resolve(pos);\n let currentDepth = maxDepth;\n let node = null;\n while (currentDepth > 0 && node === null) {\n const currentNode = $pos.node(currentDepth);\n if ((currentNode === null || currentNode === void 0 ? void 0 : currentNode.type.name) === typeOrName) {\n node = currentNode;\n }\n else {\n currentDepth -= 1;\n }\n }\n return [node, currentDepth];\n};\n\n/**\n * Return attributes of an extension that should be splitted by keepOnSplit flag\n * @param extensionAttributes Array of extension attributes\n * @param typeName The type of the extension\n * @param attributes The attributes of the extension\n * @returns The splitted attributes\n */\nfunction getSplittedAttributes(extensionAttributes, typeName, attributes) {\n return Object.fromEntries(Object\n .entries(attributes)\n .filter(([name]) => {\n const extensionAttribute = extensionAttributes.find(item => {\n return item.type === typeName && item.name === name;\n });\n if (!extensionAttribute) {\n return false;\n }\n return extensionAttribute.attribute.keepOnSplit;\n }));\n}\n\nfunction isMarkActive(state, typeOrName, attributes = {}) {\n const { empty, ranges } = state.selection;\n const type = typeOrName ? getMarkType(typeOrName, state.schema) : null;\n if (empty) {\n return !!(state.storedMarks || state.selection.$from.marks())\n .filter(mark => {\n if (!type) {\n return true;\n }\n return type.name === mark.type.name;\n })\n .find(mark => objectIncludes(mark.attrs, attributes, { strict: false }));\n }\n let selectionRange = 0;\n const markRanges = [];\n ranges.forEach(({ $from, $to }) => {\n const from = $from.pos;\n const to = $to.pos;\n state.doc.nodesBetween(from, to, (node, pos) => {\n if (!node.isText && !node.marks.length) {\n return;\n }\n const relativeFrom = Math.max(from, pos);\n const relativeTo = Math.min(to, pos + node.nodeSize);\n const range = relativeTo - relativeFrom;\n selectionRange += range;\n markRanges.push(...node.marks.map(mark => ({\n mark,\n from: relativeFrom,\n to: relativeTo,\n })));\n });\n });\n if (selectionRange === 0) {\n return false;\n }\n // calculate range of matched mark\n const matchedRange = markRanges\n .filter(markRange => {\n if (!type) {\n return true;\n }\n return type.name === markRange.mark.type.name;\n })\n .filter(markRange => objectIncludes(markRange.mark.attrs, attributes, { strict: false }))\n .reduce((sum, markRange) => sum + markRange.to - markRange.from, 0);\n // calculate range of marks that excludes the searched mark\n // for example `code` doesn’t allow any other marks\n const excludedRange = markRanges\n .filter(markRange => {\n if (!type) {\n return true;\n }\n return markRange.mark.type !== type && markRange.mark.type.excludes(type);\n })\n .reduce((sum, markRange) => sum + markRange.to - markRange.from, 0);\n // we only include the result of `excludedRange`\n // if there is a match at all\n const range = matchedRange > 0 ? matchedRange + excludedRange : matchedRange;\n return range >= selectionRange;\n}\n\nfunction isActive(state, name, attributes = {}) {\n if (!name) {\n return isNodeActive(state, null, attributes) || isMarkActive(state, null, attributes);\n }\n const schemaType = getSchemaTypeNameByName(name, state.schema);\n if (schemaType === 'node') {\n return isNodeActive(state, name, attributes);\n }\n if (schemaType === 'mark') {\n return isMarkActive(state, name, attributes);\n }\n return false;\n}\n\nconst isAtEndOfNode = (state, nodeType) => {\n const { $from, $to, $anchor } = state.selection;\n if (nodeType) {\n const parentNode = findParentNode(node => node.type.name === nodeType)(state.selection);\n if (!parentNode) {\n return false;\n }\n const $parentPos = state.doc.resolve(parentNode.pos + 1);\n if ($anchor.pos + 1 === $parentPos.end()) {\n return true;\n }\n return false;\n }\n if ($to.parentOffset < $to.parent.nodeSize - 2 || $from.pos !== $to.pos) {\n return false;\n }\n return true;\n};\n\nconst isAtStartOfNode = (state) => {\n const { $from, $to } = state.selection;\n if ($from.parentOffset > 0 || $from.pos !== $to.pos) {\n return false;\n }\n return true;\n};\n\nfunction isList(name, extensions) {\n const { nodeExtensions } = splitExtensions(extensions);\n const extension = nodeExtensions.find(item => item.name === name);\n if (!extension) {\n return false;\n }\n const context = {\n name: extension.name,\n options: extension.options,\n storage: extension.storage,\n };\n const group = callOrReturn(getExtensionField(extension, 'group', context));\n if (typeof group !== 'string') {\n return false;\n }\n return group.split(' ').includes('list');\n}\n\nfunction isNodeEmpty(node) {\n const defaultContent = node.type.createAndFill();\n if (!defaultContent) {\n return false;\n }\n return node.eq(defaultContent);\n}\n\nfunction isNodeSelection(value) {\n return value instanceof NodeSelection;\n}\n\nfunction posToDOMRect(view, from, to) {\n const minPos = 0;\n const maxPos = view.state.doc.content.size;\n const resolvedFrom = minMax(from, minPos, maxPos);\n const resolvedEnd = minMax(to, minPos, maxPos);\n const start = view.coordsAtPos(resolvedFrom);\n const end = view.coordsAtPos(resolvedEnd, -1);\n const top = Math.min(start.top, end.top);\n const bottom = Math.max(start.bottom, end.bottom);\n const left = Math.min(start.left, end.left);\n const right = Math.max(start.right, end.right);\n const width = right - left;\n const height = bottom - top;\n const x = left;\n const y = top;\n const data = {\n top,\n bottom,\n left,\n right,\n width,\n height,\n x,\n y,\n };\n return {\n ...data,\n toJSON: () => data,\n };\n}\n\nfunction canSetMark(state, tr, newMarkType) {\n var _a;\n const { selection } = tr;\n let cursor = null;\n if (isTextSelection(selection)) {\n cursor = selection.$cursor;\n }\n if (cursor) {\n const currentMarks = (_a = state.storedMarks) !== null && _a !== void 0 ? _a : cursor.marks();\n // There can be no current marks that exclude the new mark\n return (!!newMarkType.isInSet(currentMarks)\n || !currentMarks.some(mark => mark.type.excludes(newMarkType)));\n }\n const { ranges } = selection;\n return ranges.some(({ $from, $to }) => {\n let someNodeSupportsMark = $from.depth === 0\n ? state.doc.inlineContent && state.doc.type.allowsMarkType(newMarkType)\n : false;\n state.doc.nodesBetween($from.pos, $to.pos, (node, _pos, parent) => {\n // If we already found a mark that we can enable, return false to bypass the remaining search\n if (someNodeSupportsMark) {\n return false;\n }\n if (node.isInline) {\n const parentAllowsMarkType = !parent || parent.type.allowsMarkType(newMarkType);\n const currentMarksAllowMarkType = !!newMarkType.isInSet(node.marks)\n || !node.marks.some(otherMark => otherMark.type.excludes(newMarkType));\n someNodeSupportsMark = parentAllowsMarkType && currentMarksAllowMarkType;\n }\n return !someNodeSupportsMark;\n });\n return someNodeSupportsMark;\n });\n}\nconst setMark = (typeOrName, attributes = {}) => ({ tr, state, dispatch }) => {\n const { selection } = tr;\n const { empty, ranges } = selection;\n const type = getMarkType(typeOrName, state.schema);\n if (dispatch) {\n if (empty) {\n const oldAttributes = getMarkAttributes(state, type);\n tr.addStoredMark(type.create({\n ...oldAttributes,\n ...attributes,\n }));\n }\n else {\n ranges.forEach(range => {\n const from = range.$from.pos;\n const to = range.$to.pos;\n state.doc.nodesBetween(from, to, (node, pos) => {\n const trimmedFrom = Math.max(pos, from);\n const trimmedTo = Math.min(pos + node.nodeSize, to);\n const someHasMark = node.marks.find(mark => mark.type === type);\n // if there is already a mark of this type\n // we know that we have to merge its attributes\n // otherwise we add a fresh new mark\n if (someHasMark) {\n node.marks.forEach(mark => {\n if (type === mark.type) {\n tr.addMark(trimmedFrom, trimmedTo, type.create({\n ...mark.attrs,\n ...attributes,\n }));\n }\n });\n }\n else {\n tr.addMark(trimmedFrom, trimmedTo, type.create(attributes));\n }\n });\n });\n }\n }\n return canSetMark(state, tr, type);\n};\n\nconst setMeta = (key, value) => ({ tr }) => {\n tr.setMeta(key, value);\n return true;\n};\n\nconst setNode = (typeOrName, attributes = {}) => ({ state, dispatch, chain }) => {\n const type = getNodeType(typeOrName, state.schema);\n // TODO: use a fallback like insertContent?\n if (!type.isTextblock) {\n console.warn('[tiptap warn]: Currently \"setNode()\" only supports text block nodes.');\n return false;\n }\n return (chain()\n // try to convert node to default node if needed\n .command(({ commands }) => {\n const canSetBlock = setBlockType(type, attributes)(state);\n if (canSetBlock) {\n return true;\n }\n return commands.clearNodes();\n })\n .command(({ state: updatedState }) => {\n return setBlockType(type, attributes)(updatedState, dispatch);\n })\n .run());\n};\n\nconst setNodeSelection = position => ({ tr, dispatch }) => {\n if (dispatch) {\n const { doc } = tr;\n const from = minMax(position, 0, doc.content.size);\n const selection = NodeSelection.create(doc, from);\n tr.setSelection(selection);\n }\n return true;\n};\n\nconst setTextSelection = position => ({ tr, dispatch }) => {\n if (dispatch) {\n const { doc } = tr;\n const { from, to } = typeof position === 'number' ? { from: position, to: position } : position;\n const minPos = TextSelection.atStart(doc).from;\n const maxPos = TextSelection.atEnd(doc).to;\n const resolvedFrom = minMax(from, minPos, maxPos);\n const resolvedEnd = minMax(to, minPos, maxPos);\n const selection = TextSelection.create(doc, resolvedFrom, resolvedEnd);\n tr.setSelection(selection);\n }\n return true;\n};\n\nconst sinkListItem = typeOrName => ({ state, dispatch }) => {\n const type = getNodeType(typeOrName, state.schema);\n return sinkListItem$1(type)(state, dispatch);\n};\n\nfunction ensureMarks(state, splittableMarks) {\n const marks = state.storedMarks || (state.selection.$to.parentOffset && state.selection.$from.marks());\n if (marks) {\n const filteredMarks = marks.filter(mark => splittableMarks === null || splittableMarks === void 0 ? void 0 : splittableMarks.includes(mark.type.name));\n state.tr.ensureMarks(filteredMarks);\n }\n}\nconst splitBlock = ({ keepMarks = true } = {}) => ({ tr, state, dispatch, editor, }) => {\n const { selection, doc } = tr;\n const { $from, $to } = selection;\n const extensionAttributes = editor.extensionManager.attributes;\n const newAttributes = getSplittedAttributes(extensionAttributes, $from.node().type.name, $from.node().attrs);\n if (selection instanceof NodeSelection && selection.node.isBlock) {\n if (!$from.parentOffset || !canSplit(doc, $from.pos)) {\n return false;\n }\n if (dispatch) {\n if (keepMarks) {\n ensureMarks(state, editor.extensionManager.splittableMarks);\n }\n tr.split($from.pos).scrollIntoView();\n }\n return true;\n }\n if (!$from.parent.isBlock) {\n return false;\n }\n if (dispatch) {\n const atEnd = $to.parentOffset === $to.parent.content.size;\n if (selection instanceof TextSelection) {\n tr.deleteSelection();\n }\n const deflt = $from.depth === 0\n ? undefined\n : defaultBlockAt($from.node(-1).contentMatchAt($from.indexAfter(-1)));\n let types = atEnd && deflt\n ? [\n {\n type: deflt,\n attrs: newAttributes,\n },\n ]\n : undefined;\n let can = canSplit(tr.doc, tr.mapping.map($from.pos), 1, types);\n if (!types\n && !can\n && canSplit(tr.doc, tr.mapping.map($from.pos), 1, deflt ? [{ type: deflt }] : undefined)) {\n can = true;\n types = deflt\n ? [\n {\n type: deflt,\n attrs: newAttributes,\n },\n ]\n : undefined;\n }\n if (can) {\n tr.split(tr.mapping.map($from.pos), 1, types);\n if (deflt && !atEnd && !$from.parentOffset && $from.parent.type !== deflt) {\n const first = tr.mapping.map($from.before());\n const $first = tr.doc.resolve(first);\n if ($from.node(-1).canReplaceWith($first.index(), $first.index() + 1, deflt)) {\n tr.setNodeMarkup(tr.mapping.map($from.before()), deflt);\n }\n }\n }\n if (keepMarks) {\n ensureMarks(state, editor.extensionManager.splittableMarks);\n }\n tr.scrollIntoView();\n }\n return true;\n};\n\nconst splitListItem = typeOrName => ({ tr, state, dispatch, editor, }) => {\n var _a;\n const type = getNodeType(typeOrName, state.schema);\n const { $from, $to } = state.selection;\n // @ts-ignore\n // eslint-disable-next-line\n const node = state.selection.node;\n if ((node && node.isBlock) || $from.depth < 2 || !$from.sameParent($to)) {\n return false;\n }\n const grandParent = $from.node(-1);\n if (grandParent.type !== type) {\n return false;\n }\n const extensionAttributes = editor.extensionManager.attributes;\n if ($from.parent.content.size === 0 && $from.node(-1).childCount === $from.indexAfter(-1)) {\n // In an empty block. If this is a nested list, the wrapping\n // list item should be split. Otherwise, bail out and let next\n // command handle lifting.\n if ($from.depth === 2\n || $from.node(-3).type !== type\n || $from.index(-2) !== $from.node(-2).childCount - 1) {\n return false;\n }\n if (dispatch) {\n let wrap = Fragment.empty;\n // eslint-disable-next-line\n const depthBefore = $from.index(-1) ? 1 : $from.index(-2) ? 2 : 3;\n // Build a fragment containing empty versions of the structure\n // from the outer list item to the parent node of the cursor\n for (let d = $from.depth - depthBefore; d >= $from.depth - 3; d -= 1) {\n wrap = Fragment.from($from.node(d).copy(wrap));\n }\n // eslint-disable-next-line\n const depthAfter = $from.indexAfter(-1) < $from.node(-2).childCount ? 1 : $from.indexAfter(-2) < $from.node(-3).childCount ? 2 : 3;\n // Add a second list item with an empty default start node\n const newNextTypeAttributes = getSplittedAttributes(extensionAttributes, $from.node().type.name, $from.node().attrs);\n const nextType = ((_a = type.contentMatch.defaultType) === null || _a === void 0 ? void 0 : _a.createAndFill(newNextTypeAttributes)) || undefined;\n wrap = wrap.append(Fragment.from(type.createAndFill(null, nextType) || undefined));\n const start = $from.before($from.depth - (depthBefore - 1));\n tr.replace(start, $from.after(-depthAfter), new Slice(wrap, 4 - depthBefore, 0));\n let sel = -1;\n tr.doc.nodesBetween(start, tr.doc.content.size, (n, pos) => {\n if (sel > -1) {\n return false;\n }\n if (n.isTextblock && n.content.size === 0) {\n sel = pos + 1;\n }\n });\n if (sel > -1) {\n tr.setSelection(TextSelection.near(tr.doc.resolve(sel)));\n }\n tr.scrollIntoView();\n }\n return true;\n }\n const nextType = $to.pos === $from.end() ? grandParent.contentMatchAt(0).defaultType : null;\n const newTypeAttributes = getSplittedAttributes(extensionAttributes, grandParent.type.name, grandParent.attrs);\n const newNextTypeAttributes = getSplittedAttributes(extensionAttributes, $from.node().type.name, $from.node().attrs);\n tr.delete($from.pos, $to.pos);\n const types = nextType\n ? [\n { type, attrs: newTypeAttributes },\n { type: nextType, attrs: newNextTypeAttributes },\n ]\n : [{ type, attrs: newTypeAttributes }];\n if (!canSplit(tr.doc, $from.pos, 2)) {\n return false;\n }\n if (dispatch) {\n const { selection, storedMarks } = state;\n const { splittableMarks } = editor.extensionManager;\n const marks = storedMarks || (selection.$to.parentOffset && selection.$from.marks());\n tr.split($from.pos, 2, types).scrollIntoView();\n if (!marks || !dispatch) {\n return true;\n }\n const filteredMarks = marks.filter(mark => splittableMarks.includes(mark.type.name));\n tr.ensureMarks(filteredMarks);\n }\n return true;\n};\n\nconst joinListBackwards = (tr, listType) => {\n const list = findParentNode(node => node.type === listType)(tr.selection);\n if (!list) {\n return true;\n }\n const before = tr.doc.resolve(Math.max(0, list.pos - 1)).before(list.depth);\n if (before === undefined) {\n return true;\n }\n const nodeBefore = tr.doc.nodeAt(before);\n const canJoinBackwards = list.node.type === (nodeBefore === null || nodeBefore === void 0 ? void 0 : nodeBefore.type) && canJoin(tr.doc, list.pos);\n if (!canJoinBackwards) {\n return true;\n }\n tr.join(list.pos);\n return true;\n};\nconst joinListForwards = (tr, listType) => {\n const list = findParentNode(node => node.type === listType)(tr.selection);\n if (!list) {\n return true;\n }\n const after = tr.doc.resolve(list.start).after(list.depth);\n if (after === undefined) {\n return true;\n }\n const nodeAfter = tr.doc.nodeAt(after);\n const canJoinForwards = list.node.type === (nodeAfter === null || nodeAfter === void 0 ? void 0 : nodeAfter.type) && canJoin(tr.doc, after);\n if (!canJoinForwards) {\n return true;\n }\n tr.join(after);\n return true;\n};\nconst toggleList = (listTypeOrName, itemTypeOrName, keepMarks, attributes = {}) => ({ editor, tr, state, dispatch, chain, commands, can, }) => {\n const { extensions, splittableMarks } = editor.extensionManager;\n const listType = getNodeType(listTypeOrName, state.schema);\n const itemType = getNodeType(itemTypeOrName, state.schema);\n const { selection, storedMarks } = state;\n const { $from, $to } = selection;\n const range = $from.blockRange($to);\n const marks = storedMarks || (selection.$to.parentOffset && selection.$from.marks());\n if (!range) {\n return false;\n }\n const parentList = findParentNode(node => isList(node.type.name, extensions))(selection);\n if (range.depth >= 1 && parentList && range.depth - parentList.depth <= 1) {\n // remove list\n if (parentList.node.type === listType) {\n return commands.liftListItem(itemType);\n }\n // change list type\n if (isList(parentList.node.type.name, extensions)\n && listType.validContent(parentList.node.content)\n && dispatch) {\n return chain()\n .command(() => {\n tr.setNodeMarkup(parentList.pos, listType);\n return true;\n })\n .command(() => joinListBackwards(tr, listType))\n .command(() => joinListForwards(tr, listType))\n .run();\n }\n }\n if (!keepMarks || !marks || !dispatch) {\n return chain()\n // try to convert node to default node if needed\n .command(() => {\n const canWrapInList = can().wrapInList(listType, attributes);\n if (canWrapInList) {\n return true;\n }\n return commands.clearNodes();\n })\n .wrapInList(listType, attributes)\n .command(() => joinListBackwards(tr, listType))\n .command(() => joinListForwards(tr, listType))\n .run();\n }\n return (chain()\n // try to convert node to default node if needed\n .command(() => {\n const canWrapInList = can().wrapInList(listType, attributes);\n const filteredMarks = marks.filter(mark => splittableMarks.includes(mark.type.name));\n tr.ensureMarks(filteredMarks);\n if (canWrapInList) {\n return true;\n }\n return commands.clearNodes();\n })\n .wrapInList(listType, attributes)\n .command(() => joinListBackwards(tr, listType))\n .command(() => joinListForwards(tr, listType))\n .run());\n};\n\nconst toggleMark = (typeOrName, attributes = {}, options = {}) => ({ state, commands }) => {\n const { extendEmptyMarkRange = false } = options;\n const type = getMarkType(typeOrName, state.schema);\n const isActive = isMarkActive(state, type, attributes);\n if (isActive) {\n return commands.unsetMark(type, { extendEmptyMarkRange });\n }\n return commands.setMark(type, attributes);\n};\n\nconst toggleNode = (typeOrName, toggleTypeOrName, attributes = {}) => ({ state, commands }) => {\n const type = getNodeType(typeOrName, state.schema);\n const toggleType = getNodeType(toggleTypeOrName, state.schema);\n const isActive = isNodeActive(state, type, attributes);\n if (isActive) {\n return commands.setNode(toggleType);\n }\n return commands.setNode(type, attributes);\n};\n\nconst toggleWrap = (typeOrName, attributes = {}) => ({ state, commands }) => {\n const type = getNodeType(typeOrName, state.schema);\n const isActive = isNodeActive(state, type, attributes);\n if (isActive) {\n return commands.lift(type);\n }\n return commands.wrapIn(type, attributes);\n};\n\nconst undoInputRule = () => ({ state, dispatch }) => {\n const plugins = state.plugins;\n for (let i = 0; i < plugins.length; i += 1) {\n const plugin = plugins[i];\n let undoable;\n // @ts-ignore\n // eslint-disable-next-line\n if (plugin.spec.isInputRules && (undoable = plugin.getState(state))) {\n if (dispatch) {\n const tr = state.tr;\n const toUndo = undoable.transform;\n for (let j = toUndo.steps.length - 1; j >= 0; j -= 1) {\n tr.step(toUndo.steps[j].invert(toUndo.docs[j]));\n }\n if (undoable.text) {\n const marks = tr.doc.resolve(undoable.from).marks();\n tr.replaceWith(undoable.from, undoable.to, state.schema.text(undoable.text, marks));\n }\n else {\n tr.delete(undoable.from, undoable.to);\n }\n }\n return true;\n }\n }\n return false;\n};\n\nconst unsetAllMarks = () => ({ tr, dispatch }) => {\n const { selection } = tr;\n const { empty, ranges } = selection;\n if (empty) {\n return true;\n }\n if (dispatch) {\n ranges.forEach(range => {\n tr.removeMark(range.$from.pos, range.$to.pos);\n });\n }\n return true;\n};\n\nconst unsetMark = (typeOrName, options = {}) => ({ tr, state, dispatch }) => {\n var _a;\n const { extendEmptyMarkRange = false } = options;\n const { selection } = tr;\n const type = getMarkType(typeOrName, state.schema);\n const { $from, empty, ranges } = selection;\n if (!dispatch) {\n return true;\n }\n if (empty && extendEmptyMarkRange) {\n let { from, to } = selection;\n const attrs = (_a = $from.marks().find(mark => mark.type === type)) === null || _a === void 0 ? void 0 : _a.attrs;\n const range = getMarkRange($from, type, attrs);\n if (range) {\n from = range.from;\n to = range.to;\n }\n tr.removeMark(from, to, type);\n }\n else {\n ranges.forEach(range => {\n tr.removeMark(range.$from.pos, range.$to.pos, type);\n });\n }\n tr.removeStoredMark(type);\n return true;\n};\n\nconst updateAttributes = (typeOrName, attributes = {}) => ({ tr, state, dispatch }) => {\n let nodeType = null;\n let markType = null;\n const schemaType = getSchemaTypeNameByName(typeof typeOrName === 'string' ? typeOrName : typeOrName.name, state.schema);\n if (!schemaType) {\n return false;\n }\n if (schemaType === 'node') {\n nodeType = getNodeType(typeOrName, state.schema);\n }\n if (schemaType === 'mark') {\n markType = getMarkType(typeOrName, state.schema);\n }\n if (dispatch) {\n tr.selection.ranges.forEach(range => {\n const from = range.$from.pos;\n const to = range.$to.pos;\n state.doc.nodesBetween(from, to, (node, pos) => {\n if (nodeType && nodeType === node.type) {\n tr.setNodeMarkup(pos, undefined, {\n ...node.attrs,\n ...attributes,\n });\n }\n if (markType && node.marks.length) {\n node.marks.forEach(mark => {\n if (markType === mark.type) {\n const trimmedFrom = Math.max(pos, from);\n const trimmedTo = Math.min(pos + node.nodeSize, to);\n tr.addMark(trimmedFrom, trimmedTo, markType.create({\n ...mark.attrs,\n ...attributes,\n }));\n }\n });\n }\n });\n });\n }\n return true;\n};\n\nconst wrapIn = (typeOrName, attributes = {}) => ({ state, dispatch }) => {\n const type = getNodeType(typeOrName, state.schema);\n return wrapIn$1(type, attributes)(state, dispatch);\n};\n\nconst wrapInList = (typeOrName, attributes = {}) => ({ state, dispatch }) => {\n const type = getNodeType(typeOrName, state.schema);\n return wrapInList$1(type, attributes)(state, dispatch);\n};\n\nvar commands = /*#__PURE__*/Object.freeze({\n __proto__: null,\n blur: blur,\n clearContent: clearContent,\n clearNodes: clearNodes,\n command: command,\n createParagraphNear: createParagraphNear,\n cut: cut,\n deleteCurrentNode: deleteCurrentNode,\n deleteNode: deleteNode,\n deleteRange: deleteRange,\n deleteSelection: deleteSelection,\n enter: enter,\n exitCode: exitCode,\n extendMarkRange: extendMarkRange,\n first: first,\n focus: focus,\n forEach: forEach,\n insertContent: insertContent,\n insertContentAt: insertContentAt,\n joinBackward: joinBackward,\n joinDown: joinDown,\n joinForward: joinForward,\n joinItemBackward: joinItemBackward,\n joinItemForward: joinItemForward,\n joinTextblockBackward: joinTextblockBackward,\n joinTextblockForward: joinTextblockForward,\n joinUp: joinUp,\n keyboardShortcut: keyboardShortcut,\n lift: lift,\n liftEmptyBlock: liftEmptyBlock,\n liftListItem: liftListItem,\n newlineInCode: newlineInCode,\n resetAttributes: resetAttributes,\n scrollIntoView: scrollIntoView,\n selectAll: selectAll,\n selectNodeBackward: selectNodeBackward,\n selectNodeForward: selectNodeForward,\n selectParentNode: selectParentNode,\n selectTextblockEnd: selectTextblockEnd,\n selectTextblockStart: selectTextblockStart,\n setContent: setContent,\n setMark: setMark,\n setMeta: setMeta,\n setNode: setNode,\n setNodeSelection: setNodeSelection,\n setTextSelection: setTextSelection,\n sinkListItem: sinkListItem,\n splitBlock: splitBlock,\n splitListItem: splitListItem,\n toggleList: toggleList,\n toggleMark: toggleMark,\n toggleNode: toggleNode,\n toggleWrap: toggleWrap,\n undoInputRule: undoInputRule,\n unsetAllMarks: unsetAllMarks,\n unsetMark: unsetMark,\n updateAttributes: updateAttributes,\n wrapIn: wrapIn,\n wrapInList: wrapInList\n});\n\nconst Commands = Extension.create({\n name: 'commands',\n addCommands() {\n return {\n ...commands,\n };\n },\n});\n\nconst Editable = Extension.create({\n name: 'editable',\n addProseMirrorPlugins() {\n return [\n new Plugin({\n key: new PluginKey('editable'),\n props: {\n editable: () => this.editor.options.editable,\n },\n }),\n ];\n },\n});\n\nconst FocusEvents = Extension.create({\n name: 'focusEvents',\n addProseMirrorPlugins() {\n const { editor } = this;\n return [\n new Plugin({\n key: new PluginKey('focusEvents'),\n props: {\n handleDOMEvents: {\n focus: (view, event) => {\n editor.isFocused = true;\n const transaction = editor.state.tr\n .setMeta('focus', { event })\n .setMeta('addToHistory', false);\n view.dispatch(transaction);\n return false;\n },\n blur: (view, event) => {\n editor.isFocused = false;\n const transaction = editor.state.tr\n .setMeta('blur', { event })\n .setMeta('addToHistory', false);\n view.dispatch(transaction);\n return false;\n },\n },\n },\n }),\n ];\n },\n});\n\nconst Keymap = Extension.create({\n name: 'keymap',\n addKeyboardShortcuts() {\n const handleBackspace = () => this.editor.commands.first(({ commands }) => [\n () => commands.undoInputRule(),\n // maybe convert first text block node to default node\n () => commands.command(({ tr }) => {\n const { selection, doc } = tr;\n const { empty, $anchor } = selection;\n const { pos, parent } = $anchor;\n const $parentPos = $anchor.parent.isTextblock && pos > 0 ? tr.doc.resolve(pos - 1) : $anchor;\n const parentIsIsolating = $parentPos.parent.type.spec.isolating;\n const parentPos = $anchor.pos - $anchor.parentOffset;\n const isAtStart = (parentIsIsolating && $parentPos.parent.childCount === 1)\n ? parentPos === $anchor.pos\n : Selection.atStart(doc).from === pos;\n if (!empty\n || !parent.type.isTextblock\n || parent.textContent.length\n || !isAtStart\n || (isAtStart && $anchor.parent.type.name === 'paragraph') // prevent clearNodes when no nodes to clear, otherwise history stack is appended\n ) {\n return false;\n }\n return commands.clearNodes();\n }),\n () => commands.deleteSelection(),\n () => commands.joinBackward(),\n () => commands.selectNodeBackward(),\n ]);\n const handleDelete = () => this.editor.commands.first(({ commands }) => [\n () => commands.deleteSelection(),\n () => commands.deleteCurrentNode(),\n () => commands.joinForward(),\n () => commands.selectNodeForward(),\n ]);\n const handleEnter = () => this.editor.commands.first(({ commands }) => [\n () => commands.newlineInCode(),\n () => commands.createParagraphNear(),\n () => commands.liftEmptyBlock(),\n () => commands.splitBlock(),\n ]);\n const baseKeymap = {\n Enter: handleEnter,\n 'Mod-Enter': () => this.editor.commands.exitCode(),\n Backspace: handleBackspace,\n 'Mod-Backspace': handleBackspace,\n 'Shift-Backspace': handleBackspace,\n Delete: handleDelete,\n 'Mod-Delete': handleDelete,\n 'Mod-a': () => this.editor.commands.selectAll(),\n };\n const pcKeymap = {\n ...baseKeymap,\n };\n const macKeymap = {\n ...baseKeymap,\n 'Ctrl-h': handleBackspace,\n 'Alt-Backspace': handleBackspace,\n 'Ctrl-d': handleDelete,\n 'Ctrl-Alt-Backspace': handleDelete,\n 'Alt-Delete': handleDelete,\n 'Alt-d': handleDelete,\n 'Ctrl-a': () => this.editor.commands.selectTextblockStart(),\n 'Ctrl-e': () => this.editor.commands.selectTextblockEnd(),\n };\n if (isiOS() || isMacOS()) {\n return macKeymap;\n }\n return pcKeymap;\n },\n addProseMirrorPlugins() {\n return [\n // With this plugin we check if the whole document was selected and deleted.\n // In this case we will additionally call `clearNodes()` to convert e.g. a heading\n // to a paragraph if necessary.\n // This is an alternative to ProseMirror's `AllSelection`, which doesn’t work well\n // with many other commands.\n new Plugin({\n key: new PluginKey('clearDocument'),\n appendTransaction: (transactions, oldState, newState) => {\n const docChanges = transactions.some(transaction => transaction.docChanged)\n && !oldState.doc.eq(newState.doc);\n if (!docChanges) {\n return;\n }\n const { empty, from, to } = oldState.selection;\n const allFrom = Selection.atStart(oldState.doc).from;\n const allEnd = Selection.atEnd(oldState.doc).to;\n const allWasSelected = from === allFrom && to === allEnd;\n if (empty || !allWasSelected) {\n return;\n }\n const isEmpty = newState.doc.textBetween(0, newState.doc.content.size, ' ', ' ').length === 0;\n if (!isEmpty) {\n return;\n }\n const tr = newState.tr;\n const state = createChainableState({\n state: newState,\n transaction: tr,\n });\n const { commands } = new CommandManager({\n editor: this.editor,\n state,\n });\n commands.clearNodes();\n if (!tr.steps.length) {\n return;\n }\n return tr;\n },\n }),\n ];\n },\n});\n\nconst Tabindex = Extension.create({\n name: 'tabindex',\n addProseMirrorPlugins() {\n return [\n new Plugin({\n key: new PluginKey('tabindex'),\n props: {\n attributes: () => (this.editor.isEditable ? { tabindex: '0' } : {}),\n },\n }),\n ];\n },\n});\n\nvar index = /*#__PURE__*/Object.freeze({\n __proto__: null,\n ClipboardTextSerializer: ClipboardTextSerializer,\n Commands: Commands,\n Editable: Editable,\n FocusEvents: FocusEvents,\n Keymap: Keymap,\n Tabindex: Tabindex\n});\n\nclass NodePos {\n get name() {\n return this.node.type.name;\n }\n constructor(pos, editor, isBlock = false, node = null) {\n this.currentNode = null;\n this.actualDepth = null;\n this.isBlock = isBlock;\n this.resolvedPos = pos;\n this.editor = editor;\n this.currentNode = node;\n }\n get node() {\n return this.currentNode || this.resolvedPos.node();\n }\n get element() {\n return this.editor.view.domAtPos(this.pos).node;\n }\n get depth() {\n var _a;\n return (_a = this.actualDepth) !== null && _a !== void 0 ? _a : this.resolvedPos.depth;\n }\n get pos() {\n return this.resolvedPos.pos;\n }\n get content() {\n return this.node.content;\n }\n set content(content) {\n let from = this.from;\n let to = this.to;\n if (this.isBlock) {\n if (this.content.size === 0) {\n console.error(`You can’t set content on a block node. Tried to set content on ${this.name} at ${this.pos}`);\n return;\n }\n from = this.from + 1;\n to = this.to - 1;\n }\n this.editor.commands.insertContentAt({ from, to }, content);\n }\n get attributes() {\n return this.node.attrs;\n }\n get textContent() {\n return this.node.textContent;\n }\n get size() {\n return this.node.nodeSize;\n }\n get from() {\n if (this.isBlock) {\n return this.pos;\n }\n return this.resolvedPos.start(this.resolvedPos.depth);\n }\n get range() {\n return {\n from: this.from,\n to: this.to,\n };\n }\n get to() {\n if (this.isBlock) {\n return this.pos + this.size;\n }\n return this.resolvedPos.end(this.resolvedPos.depth) + (this.node.isText ? 0 : 1);\n }\n get parent() {\n if (this.depth === 0) {\n return null;\n }\n const parentPos = this.resolvedPos.start(this.resolvedPos.depth - 1);\n const $pos = this.resolvedPos.doc.resolve(parentPos);\n return new NodePos($pos, this.editor);\n }\n get before() {\n let $pos = this.resolvedPos.doc.resolve(this.from - (this.isBlock ? 1 : 2));\n if ($pos.depth !== this.depth) {\n $pos = this.resolvedPos.doc.resolve(this.from - 3);\n }\n return new NodePos($pos, this.editor);\n }\n get after() {\n let $pos = this.resolvedPos.doc.resolve(this.to + (this.isBlock ? 2 : 1));\n if ($pos.depth !== this.depth) {\n $pos = this.resolvedPos.doc.resolve(this.to + 3);\n }\n return new NodePos($pos, this.editor);\n }\n get children() {\n const children = [];\n this.node.content.forEach((node, offset) => {\n const isBlock = node.isBlock && !node.isTextblock;\n const targetPos = this.pos + offset + 1;\n const $pos = this.resolvedPos.doc.resolve(targetPos);\n if (!isBlock && $pos.depth <= this.depth) {\n return;\n }\n const childNodePos = new NodePos($pos, this.editor, isBlock, isBlock ? node : null);\n if (isBlock) {\n childNodePos.actualDepth = this.depth + 1;\n }\n children.push(new NodePos($pos, this.editor, isBlock, isBlock ? node : null));\n });\n return children;\n }\n get firstChild() {\n return this.children[0] || null;\n }\n get lastChild() {\n const children = this.children;\n return children[children.length - 1] || null;\n }\n closest(selector, attributes = {}) {\n let node = null;\n let currentNode = this.parent;\n while (currentNode && !node) {\n if (currentNode.node.type.name === selector) {\n if (Object.keys(attributes).length > 0) {\n const nodeAttributes = currentNode.node.attrs;\n const attrKeys = Object.keys(attributes);\n for (let index = 0; index < attrKeys.length; index += 1) {\n const key = attrKeys[index];\n if (nodeAttributes[key] !== attributes[key]) {\n break;\n }\n }\n }\n else {\n node = currentNode;\n }\n }\n currentNode = currentNode.parent;\n }\n return node;\n }\n querySelector(selector, attributes = {}) {\n return this.querySelectorAll(selector, attributes, true)[0] || null;\n }\n querySelectorAll(selector, attributes = {}, firstItemOnly = false) {\n let nodes = [];\n if (!this.children || this.children.length === 0) {\n return nodes;\n }\n const attrKeys = Object.keys(attributes);\n /**\n * Finds all children recursively that match the selector and attributes\n * If firstItemOnly is true, it will return the first item found\n */\n this.children.forEach(childPos => {\n // If we already found a node and we only want the first item, we dont need to keep going\n if (firstItemOnly && nodes.length > 0) {\n return;\n }\n if (childPos.node.type.name === selector) {\n const doesAllAttributesMatch = attrKeys.every(key => attributes[key] === childPos.node.attrs[key]);\n if (doesAllAttributesMatch) {\n nodes.push(childPos);\n }\n }\n // If we already found a node and we only want the first item, we can stop here and skip the recursion\n if (firstItemOnly && nodes.length > 0) {\n return;\n }\n nodes = nodes.concat(childPos.querySelectorAll(selector, attributes, firstItemOnly));\n });\n return nodes;\n }\n setAttribute(attributes) {\n const oldSelection = this.editor.state.selection;\n this.editor.chain().setTextSelection(this.from).updateAttributes(this.node.type.name, attributes).setTextSelection(oldSelection.from)\n .run();\n }\n}\n\nconst style = `.ProseMirror {\n position: relative;\n}\n\n.ProseMirror {\n word-wrap: break-word;\n white-space: pre-wrap;\n white-space: break-spaces;\n -webkit-font-variant-ligatures: none;\n font-variant-ligatures: none;\n font-feature-settings: \"liga\" 0; /* the above doesn't seem to work in Edge */\n}\n\n.ProseMirror [contenteditable=\"false\"] {\n white-space: normal;\n}\n\n.ProseMirror [contenteditable=\"false\"] [contenteditable=\"true\"] {\n white-space: pre-wrap;\n}\n\n.ProseMirror pre {\n white-space: pre-wrap;\n}\n\nimg.ProseMirror-separator {\n display: inline !important;\n border: none !important;\n margin: 0 !important;\n width: 1px !important;\n height: 1px !important;\n}\n\n.ProseMirror-gapcursor {\n display: none;\n pointer-events: none;\n position: absolute;\n margin: 0;\n}\n\n.ProseMirror-gapcursor:after {\n content: \"\";\n display: block;\n position: absolute;\n top: -2px;\n width: 20px;\n border-top: 1px solid black;\n animation: ProseMirror-cursor-blink 1.1s steps(2, start) infinite;\n}\n\n@keyframes ProseMirror-cursor-blink {\n to {\n visibility: hidden;\n }\n}\n\n.ProseMirror-hideselection *::selection {\n background: transparent;\n}\n\n.ProseMirror-hideselection *::-moz-selection {\n background: transparent;\n}\n\n.ProseMirror-hideselection * {\n caret-color: transparent;\n}\n\n.ProseMirror-focused .ProseMirror-gapcursor {\n display: block;\n}\n\n.tippy-box[data-animation=fade][data-state=hidden] {\n opacity: 0\n}`;\n\nfunction createStyleTag(style, nonce, suffix) {\n const tiptapStyleTag = document.querySelector(`style[data-tiptap-style${suffix ? `-${suffix}` : ''}]`);\n if (tiptapStyleTag !== null) {\n return tiptapStyleTag;\n }\n const styleNode = document.createElement('style');\n if (nonce) {\n styleNode.setAttribute('nonce', nonce);\n }\n styleNode.setAttribute(`data-tiptap-style${suffix ? `-${suffix}` : ''}`, '');\n styleNode.innerHTML = style;\n document.getElementsByTagName('head')[0].appendChild(styleNode);\n return styleNode;\n}\n\nclass Editor extends EventEmitter {\n constructor(options = {}) {\n super();\n this.isFocused = false;\n this.extensionStorage = {};\n this.options = {\n element: document.createElement('div'),\n content: '',\n injectCSS: true,\n injectNonce: undefined,\n extensions: [],\n autofocus: false,\n editable: true,\n editorProps: {},\n parseOptions: {},\n coreExtensionOptions: {},\n enableInputRules: true,\n enablePasteRules: true,\n enableCoreExtensions: true,\n enableContentCheck: false,\n onBeforeCreate: () => null,\n onCreate: () => null,\n onUpdate: () => null,\n onSelectionUpdate: () => null,\n onTransaction: () => null,\n onFocus: () => null,\n onBlur: () => null,\n onDestroy: () => null,\n onContentError: ({ error }) => { throw error; },\n };\n this.isCapturingTransaction = false;\n this.capturedTransaction = null;\n this.setOptions(options);\n this.createExtensionManager();\n this.createCommandManager();\n this.createSchema();\n this.on('beforeCreate', this.options.onBeforeCreate);\n this.emit('beforeCreate', { editor: this });\n this.on('contentError', this.options.onContentError);\n this.createView();\n this.injectCSS();\n this.on('create', this.options.onCreate);\n this.on('update', this.options.onUpdate);\n this.on('selectionUpdate', this.options.onSelectionUpdate);\n this.on('transaction', this.options.onTransaction);\n this.on('focus', this.options.onFocus);\n this.on('blur', this.options.onBlur);\n this.on('destroy', this.options.onDestroy);\n window.setTimeout(() => {\n if (this.isDestroyed) {\n return;\n }\n this.commands.focus(this.options.autofocus);\n this.emit('create', { editor: this });\n }, 0);\n }\n /**\n * Returns the editor storage.\n */\n get storage() {\n return this.extensionStorage;\n }\n /**\n * An object of all registered commands.\n */\n get commands() {\n return this.commandManager.commands;\n }\n /**\n * Create a command chain to call multiple commands at once.\n */\n chain() {\n return this.commandManager.chain();\n }\n /**\n * Check if a command or a command chain can be executed. Without executing it.\n */\n can() {\n return this.commandManager.can();\n }\n /**\n * Inject CSS styles.\n */\n injectCSS() {\n if (this.options.injectCSS && document) {\n this.css = createStyleTag(style, this.options.injectNonce);\n }\n }\n /**\n * Update editor options.\n *\n * @param options A list of options\n */\n setOptions(options = {}) {\n this.options = {\n ...this.options,\n ...options,\n };\n if (!this.view || !this.state || this.isDestroyed) {\n return;\n }\n if (this.options.editorProps) {\n this.view.setProps(this.options.editorProps);\n }\n this.view.updateState(this.state);\n }\n /**\n * Update editable state of the editor.\n */\n setEditable(editable, emitUpdate = true) {\n this.setOptions({ editable });\n if (emitUpdate) {\n this.emit('update', { editor: this, transaction: this.state.tr });\n }\n }\n /**\n * Returns whether the editor is editable.\n */\n get isEditable() {\n // since plugins are applied after creating the view\n // `editable` is always `true` for one tick.\n // that’s why we also have to check for `options.editable`\n return this.options.editable && this.view && this.view.editable;\n }\n /**\n * Returns the editor state.\n */\n get state() {\n return this.view.state;\n }\n /**\n * Register a ProseMirror plugin.\n *\n * @param plugin A ProseMirror plugin\n * @param handlePlugins Control how to merge the plugin into the existing plugins.\n */\n registerPlugin(plugin, handlePlugins) {\n const plugins = isFunction(handlePlugins)\n ? handlePlugins(plugin, [...this.state.plugins])\n : [...this.state.plugins, plugin];\n const state = this.state.reconfigure({ plugins });\n this.view.updateState(state);\n }\n /**\n * Unregister a ProseMirror plugin.\n *\n * @param nameOrPluginKey The plugins name\n */\n unregisterPlugin(nameOrPluginKey) {\n if (this.isDestroyed) {\n return;\n }\n // @ts-ignore\n const name = typeof nameOrPluginKey === 'string' ? `${nameOrPluginKey}$` : nameOrPluginKey.key;\n const state = this.state.reconfigure({\n // @ts-ignore\n plugins: this.state.plugins.filter(plugin => !plugin.key.startsWith(name)),\n });\n this.view.updateState(state);\n }\n /**\n * Creates an extension manager.\n */\n createExtensionManager() {\n var _a, _b;\n const coreExtensions = this.options.enableCoreExtensions ? [\n Editable,\n ClipboardTextSerializer.configure({\n blockSeparator: (_b = (_a = this.options.coreExtensionOptions) === null || _a === void 0 ? void 0 : _a.clipboardTextSerializer) === null || _b === void 0 ? void 0 : _b.blockSeparator,\n }),\n Commands,\n FocusEvents,\n Keymap,\n Tabindex,\n ] : [];\n const allExtensions = [...coreExtensions, ...this.options.extensions].filter(extension => {\n return ['extension', 'node', 'mark'].includes(extension === null || extension === void 0 ? void 0 : extension.type);\n });\n this.extensionManager = new ExtensionManager(allExtensions, this);\n }\n /**\n * Creates an command manager.\n */\n createCommandManager() {\n this.commandManager = new CommandManager({\n editor: this,\n });\n }\n /**\n * Creates a ProseMirror schema.\n */\n createSchema() {\n this.schema = this.extensionManager.schema;\n }\n /**\n * Creates a ProseMirror view.\n */\n createView() {\n let doc;\n try {\n doc = createDocument(this.options.content, this.schema, this.options.parseOptions, { errorOnInvalidContent: this.options.enableContentCheck });\n }\n catch (e) {\n if (!(e instanceof Error) || !['[tiptap error]: Invalid JSON content', '[tiptap error]: Invalid HTML content'].includes(e.message)) {\n // Not the content error we were expecting\n throw e;\n }\n this.emit('contentError', {\n editor: this,\n error: e,\n disableCollaboration: () => {\n // To avoid syncing back invalid content, reinitialize the extensions without the collaboration extension\n this.options.extensions = this.options.extensions.filter(extension => extension.name !== 'collaboration');\n // Restart the initialization process by recreating the extension manager with the new set of extensions\n this.createExtensionManager();\n },\n });\n // Content is invalid, but attempt to create it anyway, stripping out the invalid parts\n doc = createDocument(this.options.content, this.schema, this.options.parseOptions, { errorOnInvalidContent: false });\n }\n const selection = resolveFocusPosition(doc, this.options.autofocus);\n this.view = new EditorView(this.options.element, {\n ...this.options.editorProps,\n dispatchTransaction: this.dispatchTransaction.bind(this),\n state: EditorState.create({\n doc,\n selection: selection || undefined,\n }),\n });\n // `editor.view` is not yet available at this time.\n // Therefore we will add all plugins and node views directly afterwards.\n const newState = this.state.reconfigure({\n plugins: this.extensionManager.plugins,\n });\n this.view.updateState(newState);\n this.createNodeViews();\n this.prependClass();\n // Let’s store the editor instance in the DOM element.\n // So we’ll have access to it for tests.\n const dom = this.view.dom;\n dom.editor = this;\n }\n /**\n * Creates all node views.\n */\n createNodeViews() {\n this.view.setProps({\n nodeViews: this.extensionManager.nodeViews,\n });\n }\n /**\n * Prepend class name to element.\n */\n prependClass() {\n this.view.dom.className = `tiptap ${this.view.dom.className}`;\n }\n captureTransaction(fn) {\n this.isCapturingTransaction = true;\n fn();\n this.isCapturingTransaction = false;\n const tr = this.capturedTransaction;\n this.capturedTransaction = null;\n return tr;\n }\n /**\n * The callback over which to send transactions (state updates) produced by the view.\n *\n * @param transaction An editor state transaction\n */\n dispatchTransaction(transaction) {\n // if the editor / the view of the editor was destroyed\n // the transaction should not be dispatched as there is no view anymore.\n if (this.view.isDestroyed) {\n return;\n }\n if (this.isCapturingTransaction) {\n if (!this.capturedTransaction) {\n this.capturedTransaction = transaction;\n return;\n }\n transaction.steps.forEach(step => { var _a; return (_a = this.capturedTransaction) === null || _a === void 0 ? void 0 : _a.step(step); });\n return;\n }\n const state = this.state.apply(transaction);\n const selectionHasChanged = !this.state.selection.eq(state.selection);\n this.view.updateState(state);\n this.emit('transaction', {\n editor: this,\n transaction,\n });\n if (selectionHasChanged) {\n this.emit('selectionUpdate', {\n editor: this,\n transaction,\n });\n }\n const focus = transaction.getMeta('focus');\n const blur = transaction.getMeta('blur');\n if (focus) {\n this.emit('focus', {\n editor: this,\n event: focus.event,\n transaction,\n });\n }\n if (blur) {\n this.emit('blur', {\n editor: this,\n event: blur.event,\n transaction,\n });\n }\n if (!transaction.docChanged || transaction.getMeta('preventUpdate')) {\n return;\n }\n this.emit('update', {\n editor: this,\n transaction,\n });\n }\n /**\n * Get attributes of the currently selected node or mark.\n */\n getAttributes(nameOrType) {\n return getAttributes(this.state, nameOrType);\n }\n isActive(nameOrAttributes, attributesOrUndefined) {\n const name = typeof nameOrAttributes === 'string' ? nameOrAttributes : null;\n const attributes = typeof nameOrAttributes === 'string' ? attributesOrUndefined : nameOrAttributes;\n return isActive(this.state, name, attributes);\n }\n /**\n * Get the document as JSON.\n */\n getJSON() {\n return this.state.doc.toJSON();\n }\n /**\n * Get the document as HTML.\n */\n getHTML() {\n return getHTMLFromFragment(this.state.doc.content, this.schema);\n }\n /**\n * Get the document as text.\n */\n getText(options) {\n const { blockSeparator = '\\n\\n', textSerializers = {} } = options || {};\n return getText(this.state.doc, {\n blockSeparator,\n textSerializers: {\n ...getTextSerializersFromSchema(this.schema),\n ...textSerializers,\n },\n });\n }\n /**\n * Check if there is no content.\n */\n get isEmpty() {\n return isNodeEmpty(this.state.doc);\n }\n /**\n * Get the number of characters for the current document.\n *\n * @deprecated\n */\n getCharacterCount() {\n console.warn('[tiptap warn]: \"editor.getCharacterCount()\" is deprecated. Please use \"editor.storage.characterCount.characters()\" instead.');\n return this.state.doc.content.size - 2;\n }\n /**\n * Destroy the editor.\n */\n destroy() {\n this.emit('destroy');\n if (this.view) {\n this.view.destroy();\n }\n this.removeAllListeners();\n }\n /**\n * Check if the editor is already destroyed.\n */\n get isDestroyed() {\n var _a;\n // @ts-ignore\n return !((_a = this.view) === null || _a === void 0 ? void 0 : _a.docView);\n }\n $node(selector, attributes) {\n var _a;\n return ((_a = this.$doc) === null || _a === void 0 ? void 0 : _a.querySelector(selector, attributes)) || null;\n }\n $nodes(selector, attributes) {\n var _a;\n return ((_a = this.$doc) === null || _a === void 0 ? void 0 : _a.querySelectorAll(selector, attributes)) || null;\n }\n $pos(pos) {\n const $pos = this.state.doc.resolve(pos);\n return new NodePos($pos, this);\n }\n get $doc() {\n return this.$pos(0);\n }\n}\n\n/**\n * Build an input rule that adds a mark when the\n * matched text is typed into it.\n * @see https://tiptap.dev/guide/custom-extensions/#input-rules\n */\nfunction markInputRule(config) {\n return new InputRule({\n find: config.find,\n handler: ({ state, range, match }) => {\n const attributes = callOrReturn(config.getAttributes, undefined, match);\n if (attributes === false || attributes === null) {\n return null;\n }\n const { tr } = state;\n const captureGroup = match[match.length - 1];\n const fullMatch = match[0];\n if (captureGroup) {\n const startSpaces = fullMatch.search(/\\S/);\n const textStart = range.from + fullMatch.indexOf(captureGroup);\n const textEnd = textStart + captureGroup.length;\n const excludedMarks = getMarksBetween(range.from, range.to, state.doc)\n .filter(item => {\n // @ts-ignore\n const excluded = item.mark.type.excluded;\n return excluded.find(type => type === config.type && type !== item.mark.type);\n })\n .filter(item => item.to > textStart);\n if (excludedMarks.length) {\n return null;\n }\n if (textEnd < range.to) {\n tr.delete(textEnd, range.to);\n }\n if (textStart > range.from) {\n tr.delete(range.from + startSpaces, textStart);\n }\n const markEnd = range.from + startSpaces + captureGroup.length;\n tr.addMark(range.from + startSpaces, markEnd, config.type.create(attributes || {}));\n tr.removeStoredMark(config.type);\n }\n },\n });\n}\n\n/**\n * Build an input rule that adds a node when the\n * matched text is typed into it.\n * @see https://tiptap.dev/guide/custom-extensions/#input-rules\n */\nfunction nodeInputRule(config) {\n return new InputRule({\n find: config.find,\n handler: ({ state, range, match }) => {\n const attributes = callOrReturn(config.getAttributes, undefined, match) || {};\n const { tr } = state;\n const start = range.from;\n let end = range.to;\n const newNode = config.type.create(attributes);\n if (match[1]) {\n const offset = match[0].lastIndexOf(match[1]);\n let matchStart = start + offset;\n if (matchStart > end) {\n matchStart = end;\n }\n else {\n end = matchStart + match[1].length;\n }\n // insert last typed character\n const lastChar = match[0][match[0].length - 1];\n tr.insertText(lastChar, start + match[0].length - 1);\n // insert node from input rule\n tr.replaceWith(matchStart, end, newNode);\n }\n else if (match[0]) {\n const insertionStart = config.type.isInline ? start : start - 1;\n tr.insert(insertionStart, config.type.create(attributes)).delete(tr.mapping.map(start), tr.mapping.map(end));\n }\n tr.scrollIntoView();\n },\n });\n}\n\n/**\n * Build an input rule that changes the type of a textblock when the\n * matched text is typed into it. When using a regular expresion you’ll\n * probably want the regexp to start with `^`, so that the pattern can\n * only occur at the start of a textblock.\n * @see https://tiptap.dev/guide/custom-extensions/#input-rules\n */\nfunction textblockTypeInputRule(config) {\n return new InputRule({\n find: config.find,\n handler: ({ state, range, match }) => {\n const $start = state.doc.resolve(range.from);\n const attributes = callOrReturn(config.getAttributes, undefined, match) || {};\n if (!$start.node(-1).canReplaceWith($start.index(-1), $start.indexAfter(-1), config.type)) {\n return null;\n }\n state.tr\n .delete(range.from, range.to)\n .setBlockType(range.from, range.from, config.type, attributes);\n },\n });\n}\n\n/**\n * Build an input rule that replaces text when the\n * matched text is typed into it.\n * @see https://tiptap.dev/guide/custom-extensions/#input-rules\n */\nfunction textInputRule(config) {\n return new InputRule({\n find: config.find,\n handler: ({ state, range, match }) => {\n let insert = config.replace;\n let start = range.from;\n const end = range.to;\n if (match[1]) {\n const offset = match[0].lastIndexOf(match[1]);\n insert += match[0].slice(offset + match[1].length);\n start += offset;\n const cutOff = start - end;\n if (cutOff > 0) {\n insert = match[0].slice(offset - cutOff, offset) + insert;\n start = end;\n }\n }\n state.tr.insertText(insert, start, end);\n },\n });\n}\n\n/**\n * Build an input rule for automatically wrapping a textblock when a\n * given string is typed. When using a regular expresion you’ll\n * probably want the regexp to start with `^`, so that the pattern can\n * only occur at the start of a textblock.\n *\n * `type` is the type of node to wrap in.\n *\n * By default, if there’s a node with the same type above the newly\n * wrapped node, the rule will try to join those\n * two nodes. You can pass a join predicate, which takes a regular\n * expression match and the node before the wrapped node, and can\n * return a boolean to indicate whether a join should happen.\n * @see https://tiptap.dev/guide/custom-extensions/#input-rules\n */\nfunction wrappingInputRule(config) {\n return new InputRule({\n find: config.find,\n handler: ({ state, range, match, chain, }) => {\n const attributes = callOrReturn(config.getAttributes, undefined, match) || {};\n const tr = state.tr.delete(range.from, range.to);\n const $start = tr.doc.resolve(range.from);\n const blockRange = $start.blockRange();\n const wrapping = blockRange && findWrapping(blockRange, config.type, attributes);\n if (!wrapping) {\n return null;\n }\n tr.wrap(blockRange, wrapping);\n if (config.keepMarks && config.editor) {\n const { selection, storedMarks } = state;\n const { splittableMarks } = config.editor.extensionManager;\n const marks = storedMarks || (selection.$to.parentOffset && selection.$from.marks());\n if (marks) {\n const filteredMarks = marks.filter(mark => splittableMarks.includes(mark.type.name));\n tr.ensureMarks(filteredMarks);\n }\n }\n if (config.keepAttributes) {\n /** If the nodeType is `bulletList` or `orderedList` set the `nodeType` as `listItem` */\n const nodeType = config.type.name === 'bulletList' || config.type.name === 'orderedList' ? 'listItem' : 'taskList';\n chain().updateAttributes(nodeType, attributes).run();\n }\n const before = tr.doc.resolve(range.from - 1).nodeBefore;\n if (before\n && before.type === config.type\n && canJoin(tr.doc, range.from - 1)\n && (!config.joinPredicate || config.joinPredicate(match, before))) {\n tr.join(range.from - 1);\n }\n },\n });\n}\n\n/**\n * The Mark class is used to create custom mark extensions.\n * @see https://tiptap.dev/api/extensions#create-a-new-extension\n */\nclass Mark {\n constructor(config = {}) {\n this.type = 'mark';\n this.name = 'mark';\n this.parent = null;\n this.child = null;\n this.config = {\n name: this.name,\n defaultOptions: {},\n };\n this.config = {\n ...this.config,\n ...config,\n };\n this.name = this.config.name;\n if (config.defaultOptions && Object.keys(config.defaultOptions).length > 0) {\n console.warn(`[tiptap warn]: BREAKING CHANGE: \"defaultOptions\" is deprecated. Please use \"addOptions\" instead. Found in extension: \"${this.name}\".`);\n }\n // TODO: remove `addOptions` fallback\n this.options = this.config.defaultOptions;\n if (this.config.addOptions) {\n this.options = callOrReturn(getExtensionField(this, 'addOptions', {\n name: this.name,\n }));\n }\n this.storage = callOrReturn(getExtensionField(this, 'addStorage', {\n name: this.name,\n options: this.options,\n })) || {};\n }\n static create(config = {}) {\n return new Mark(config);\n }\n configure(options = {}) {\n // return a new instance so we can use the same extension\n // with different calls of `configure`\n const extension = this.extend({\n ...this.config,\n addOptions() {\n var _a;\n return mergeDeep(((_a = this.parent) === null || _a === void 0 ? void 0 : _a.call(this)) || {}, options);\n },\n });\n // Always preserve the current name\n extension.name = this.name;\n // Set the parent to be our parent\n extension.parent = this.parent;\n return extension;\n }\n extend(extendedConfig = {}) {\n const extension = new Mark(extendedConfig);\n extension.parent = this;\n this.child = extension;\n extension.name = extendedConfig.name ? extendedConfig.name : extension.parent.name;\n if (extendedConfig.defaultOptions && Object.keys(extendedConfig.defaultOptions).length > 0) {\n console.warn(`[tiptap warn]: BREAKING CHANGE: \"defaultOptions\" is deprecated. Please use \"addOptions\" instead. Found in extension: \"${extension.name}\".`);\n }\n extension.options = callOrReturn(getExtensionField(extension, 'addOptions', {\n name: extension.name,\n }));\n extension.storage = callOrReturn(getExtensionField(extension, 'addStorage', {\n name: extension.name,\n options: extension.options,\n }));\n return extension;\n }\n static handleExit({ editor, mark }) {\n const { tr } = editor.state;\n const currentPos = editor.state.selection.$from;\n const isAtEnd = currentPos.pos === currentPos.end();\n if (isAtEnd) {\n const currentMarks = currentPos.marks();\n const isInMark = !!currentMarks.find(m => (m === null || m === void 0 ? void 0 : m.type.name) === mark.name);\n if (!isInMark) {\n return false;\n }\n const removeMark = currentMarks.find(m => (m === null || m === void 0 ? void 0 : m.type.name) === mark.name);\n if (removeMark) {\n tr.removeStoredMark(removeMark);\n }\n tr.insertText(' ', currentPos.pos);\n editor.view.dispatch(tr);\n return true;\n }\n return false;\n }\n}\n\n/**\n * The Node class is used to create custom node extensions.\n * @see https://tiptap.dev/api/extensions#create-a-new-extension\n */\nclass Node {\n constructor(config = {}) {\n this.type = 'node';\n this.name = 'node';\n this.parent = null;\n this.child = null;\n this.config = {\n name: this.name,\n defaultOptions: {},\n };\n this.config = {\n ...this.config,\n ...config,\n };\n this.name = this.config.name;\n if (config.defaultOptions && Object.keys(config.defaultOptions).length > 0) {\n console.warn(`[tiptap warn]: BREAKING CHANGE: \"defaultOptions\" is deprecated. Please use \"addOptions\" instead. Found in extension: \"${this.name}\".`);\n }\n // TODO: remove `addOptions` fallback\n this.options = this.config.defaultOptions;\n if (this.config.addOptions) {\n this.options = callOrReturn(getExtensionField(this, 'addOptions', {\n name: this.name,\n }));\n }\n this.storage = callOrReturn(getExtensionField(this, 'addStorage', {\n name: this.name,\n options: this.options,\n })) || {};\n }\n static create(config = {}) {\n return new Node(config);\n }\n configure(options = {}) {\n // return a new instance so we can use the same extension\n // with different calls of `configure`\n const extension = this.extend({\n ...this.config,\n addOptions() {\n var _a;\n return mergeDeep(((_a = this.parent) === null || _a === void 0 ? void 0 : _a.call(this)) || {}, options);\n },\n });\n // Always preserve the current name\n extension.name = this.name;\n // Set the parent to be our parent\n extension.parent = this.parent;\n return extension;\n }\n extend(extendedConfig = {}) {\n const extension = new Node(extendedConfig);\n extension.parent = this;\n this.child = extension;\n extension.name = extendedConfig.name ? extendedConfig.name : extension.parent.name;\n if (extendedConfig.defaultOptions && Object.keys(extendedConfig.defaultOptions).length > 0) {\n console.warn(`[tiptap warn]: BREAKING CHANGE: \"defaultOptions\" is deprecated. Please use \"addOptions\" instead. Found in extension: \"${extension.name}\".`);\n }\n extension.options = callOrReturn(getExtensionField(extension, 'addOptions', {\n name: extension.name,\n }));\n extension.storage = callOrReturn(getExtensionField(extension, 'addStorage', {\n name: extension.name,\n options: extension.options,\n }));\n return extension;\n }\n}\n\nfunction isAndroid() {\n return navigator.platform === 'Android' || /android/i.test(navigator.userAgent);\n}\n\n/**\n * Node views are used to customize the rendered DOM structure of a node.\n * @see https://tiptap.dev/guide/node-views\n */\nclass NodeView {\n constructor(component, props, options) {\n this.isDragging = false;\n this.component = component;\n this.editor = props.editor;\n this.options = {\n stopEvent: null,\n ignoreMutation: null,\n ...options,\n };\n this.extension = props.extension;\n this.node = props.node;\n this.decorations = props.decorations;\n this.getPos = props.getPos;\n this.mount();\n }\n mount() {\n // eslint-disable-next-line\n return;\n }\n get dom() {\n return this.editor.view.dom;\n }\n get contentDOM() {\n return null;\n }\n onDragStart(event) {\n var _a, _b, _c, _d, _e, _f, _g;\n const { view } = this.editor;\n const target = event.target;\n // get the drag handle element\n // `closest` is not available for text nodes so we may have to use its parent\n const dragHandle = target.nodeType === 3\n ? (_a = target.parentElement) === null || _a === void 0 ? void 0 : _a.closest('[data-drag-handle]')\n : target.closest('[data-drag-handle]');\n if (!this.dom || ((_b = this.contentDOM) === null || _b === void 0 ? void 0 : _b.contains(target)) || !dragHandle) {\n return;\n }\n let x = 0;\n let y = 0;\n // calculate offset for drag element if we use a different drag handle element\n if (this.dom !== dragHandle) {\n const domBox = this.dom.getBoundingClientRect();\n const handleBox = dragHandle.getBoundingClientRect();\n // In React, we have to go through nativeEvent to reach offsetX/offsetY.\n const offsetX = (_c = event.offsetX) !== null && _c !== void 0 ? _c : (_d = event.nativeEvent) === null || _d === void 0 ? void 0 : _d.offsetX;\n const offsetY = (_e = event.offsetY) !== null && _e !== void 0 ? _e : (_f = event.nativeEvent) === null || _f === void 0 ? void 0 : _f.offsetY;\n x = handleBox.x - domBox.x + offsetX;\n y = handleBox.y - domBox.y + offsetY;\n }\n (_g = event.dataTransfer) === null || _g === void 0 ? void 0 : _g.setDragImage(this.dom, x, y);\n // we need to tell ProseMirror that we want to move the whole node\n // so we create a NodeSelection\n const selection = NodeSelection.create(view.state.doc, this.getPos());\n const transaction = view.state.tr.setSelection(selection);\n view.dispatch(transaction);\n }\n stopEvent(event) {\n var _a;\n if (!this.dom) {\n return false;\n }\n if (typeof this.options.stopEvent === 'function') {\n return this.options.stopEvent({ event });\n }\n const target = event.target;\n const isInElement = this.dom.contains(target) && !((_a = this.contentDOM) === null || _a === void 0 ? void 0 : _a.contains(target));\n // any event from child nodes should be handled by ProseMirror\n if (!isInElement) {\n return false;\n }\n const isDragEvent = event.type.startsWith('drag');\n const isDropEvent = event.type === 'drop';\n const isInput = ['INPUT', 'BUTTON', 'SELECT', 'TEXTAREA'].includes(target.tagName) || target.isContentEditable;\n // any input event within node views should be ignored by ProseMirror\n if (isInput && !isDropEvent && !isDragEvent) {\n return true;\n }\n const { isEditable } = this.editor;\n const { isDragging } = this;\n const isDraggable = !!this.node.type.spec.draggable;\n const isSelectable = NodeSelection.isSelectable(this.node);\n const isCopyEvent = event.type === 'copy';\n const isPasteEvent = event.type === 'paste';\n const isCutEvent = event.type === 'cut';\n const isClickEvent = event.type === 'mousedown';\n // ProseMirror tries to drag selectable nodes\n // even if `draggable` is set to `false`\n // this fix prevents that\n if (!isDraggable && isSelectable && isDragEvent) {\n event.preventDefault();\n }\n if (isDraggable && isDragEvent && !isDragging) {\n event.preventDefault();\n return false;\n }\n // we have to store that dragging started\n if (isDraggable && isEditable && !isDragging && isClickEvent) {\n const dragHandle = target.closest('[data-drag-handle]');\n const isValidDragHandle = dragHandle && (this.dom === dragHandle || this.dom.contains(dragHandle));\n if (isValidDragHandle) {\n this.isDragging = true;\n document.addEventListener('dragend', () => {\n this.isDragging = false;\n }, { once: true });\n document.addEventListener('drop', () => {\n this.isDragging = false;\n }, { once: true });\n document.addEventListener('mouseup', () => {\n this.isDragging = false;\n }, { once: true });\n }\n }\n // these events are handled by prosemirror\n if (isDragging\n || isDropEvent\n || isCopyEvent\n || isPasteEvent\n || isCutEvent\n || (isClickEvent && isSelectable)) {\n return false;\n }\n return true;\n }\n ignoreMutation(mutation) {\n if (!this.dom || !this.contentDOM) {\n return true;\n }\n if (typeof this.options.ignoreMutation === 'function') {\n return this.options.ignoreMutation({ mutation });\n }\n // a leaf/atom node is like a black box for ProseMirror\n // and should be fully handled by the node view\n if (this.node.isLeaf || this.node.isAtom) {\n return true;\n }\n // ProseMirror should handle any selections\n if (mutation.type === 'selection') {\n return false;\n }\n // try to prevent a bug on iOS and Android that will break node views on enter\n // this is because ProseMirror can’t preventDispatch on enter\n // this will lead to a re-render of the node view on enter\n // see: https://github.com/ueberdosis/tiptap/issues/1214\n // see: https://github.com/ueberdosis/tiptap/issues/2534\n if (this.dom.contains(mutation.target)\n && mutation.type === 'childList'\n && (isiOS() || isAndroid())\n && this.editor.isFocused) {\n const changedNodes = [\n ...Array.from(mutation.addedNodes),\n ...Array.from(mutation.removedNodes),\n ];\n // we’ll check if every changed node is contentEditable\n // to make sure it’s probably mutated by ProseMirror\n if (changedNodes.every(node => node.isContentEditable)) {\n return false;\n }\n }\n // we will allow mutation contentDOM with attributes\n // so we can for example adding classes within our node view\n if (this.contentDOM === mutation.target && mutation.type === 'attributes') {\n return true;\n }\n // ProseMirror should handle any changes within contentDOM\n if (this.contentDOM.contains(mutation.target)) {\n return false;\n }\n return true;\n }\n updateAttributes(attributes) {\n this.editor.commands.command(({ tr }) => {\n const pos = this.getPos();\n tr.setNodeMarkup(pos, undefined, {\n ...this.node.attrs,\n ...attributes,\n });\n return true;\n });\n }\n deleteNode() {\n const from = this.getPos();\n const to = from + this.node.nodeSize;\n this.editor.commands.deleteRange({ from, to });\n }\n}\n\n/**\n * Build an paste rule that adds a mark when the\n * matched text is pasted into it.\n * @see https://tiptap.dev/guide/custom-extensions/#paste-rules\n */\nfunction markPasteRule(config) {\n return new PasteRule({\n find: config.find,\n handler: ({ state, range, match, pasteEvent, }) => {\n const attributes = callOrReturn(config.getAttributes, undefined, match, pasteEvent);\n if (attributes === false || attributes === null) {\n return null;\n }\n const { tr } = state;\n const captureGroup = match[match.length - 1];\n const fullMatch = match[0];\n let markEnd = range.to;\n if (captureGroup) {\n const startSpaces = fullMatch.search(/\\S/);\n const textStart = range.from + fullMatch.indexOf(captureGroup);\n const textEnd = textStart + captureGroup.length;\n const excludedMarks = getMarksBetween(range.from, range.to, state.doc)\n .filter(item => {\n // @ts-ignore\n const excluded = item.mark.type.excluded;\n return excluded.find(type => type === config.type && type !== item.mark.type);\n })\n .filter(item => item.to > textStart);\n if (excludedMarks.length) {\n return null;\n }\n if (textEnd < range.to) {\n tr.delete(textEnd, range.to);\n }\n if (textStart > range.from) {\n tr.delete(range.from + startSpaces, textStart);\n }\n markEnd = range.from + startSpaces + captureGroup.length;\n tr.addMark(range.from + startSpaces, markEnd, config.type.create(attributes || {}));\n tr.removeStoredMark(config.type);\n }\n },\n });\n}\n\n// source: https://stackoverflow.com/a/6969486\nfunction escapeForRegEx(string) {\n return string.replace(/[-/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n}\n\nfunction isString(value) {\n return typeof value === 'string';\n}\n\n/**\n * Build an paste rule that adds a node when the\n * matched text is pasted into it.\n * @see https://tiptap.dev/guide/custom-extensions/#paste-rules\n */\nfunction nodePasteRule(config) {\n return new PasteRule({\n find: config.find,\n handler({ match, chain, range, pasteEvent, }) {\n const attributes = callOrReturn(config.getAttributes, undefined, match, pasteEvent);\n if (attributes === false || attributes === null) {\n return null;\n }\n if (match.input) {\n chain().deleteRange(range).insertContentAt(range.from, {\n type: config.type.name,\n attrs: attributes,\n });\n }\n },\n });\n}\n\n/**\n * Build an paste rule that replaces text when the\n * matched text is pasted into it.\n * @see https://tiptap.dev/guide/custom-extensions/#paste-rules\n */\nfunction textPasteRule(config) {\n return new PasteRule({\n find: config.find,\n handler: ({ state, range, match }) => {\n let insert = config.replace;\n let start = range.from;\n const end = range.to;\n if (match[1]) {\n const offset = match[0].lastIndexOf(match[1]);\n insert += match[0].slice(offset + match[1].length);\n start += offset;\n const cutOff = start - end;\n if (cutOff > 0) {\n insert = match[0].slice(offset - cutOff, offset) + insert;\n start = end;\n }\n }\n state.tr.insertText(insert, start, end);\n },\n });\n}\n\nclass Tracker {\n constructor(transaction) {\n this.transaction = transaction;\n this.currentStep = this.transaction.steps.length;\n }\n map(position) {\n let deleted = false;\n const mappedPosition = this.transaction.steps\n .slice(this.currentStep)\n .reduce((newPosition, step) => {\n const mapResult = step.getMap().mapResult(newPosition);\n if (mapResult.deleted) {\n deleted = true;\n }\n return mapResult.pos;\n }, position);\n return {\n position: mappedPosition,\n deleted,\n };\n }\n}\n\nexport { CommandManager, Editor, Extension, InputRule, Mark, Node, NodePos, NodeView, PasteRule, Tracker, callOrReturn, combineTransactionSteps, createChainableState, createDocument, createNodeFromContent, createStyleTag, defaultBlockAt, deleteProps, elementFromString, escapeForRegEx, index as extensions, findChildren, findChildrenInRange, findDuplicates, findParentNode, findParentNodeClosestToPos, fromString, generateHTML, generateJSON, generateText, getAttributes, getAttributesFromExtensions, getChangedRanges, getDebugJSON, getExtensionField, getHTMLFromFragment, getMarkAttributes, getMarkRange, getMarkType, getMarksBetween, getNodeAtPosition, getNodeAttributes, getNodeType, getRenderedAttributes, getSchema, getSchemaByResolvedExtensions, getSchemaTypeByName, getSchemaTypeNameByName, getSplittedAttributes, getText, getTextBetween, getTextContentFromNodes, getTextSerializersFromSchema, injectExtensionAttributesToParseRule, inputRulesPlugin, isActive, isAtEndOfNode, isAtStartOfNode, isEmptyObject, isExtensionRulesEnabled, isFunction, isList, isMacOS, isMarkActive, isNodeActive, isNodeEmpty, isNodeSelection, isNumber, isPlainObject, isRegExp, isString, isTextSelection, isiOS, markInputRule, markPasteRule, mergeAttributes, mergeDeep, minMax, nodeInputRule, nodePasteRule, objectIncludes, pasteRulesPlugin, posToDOMRect, removeDuplicates, resolveFocusPosition, selectionToInsertionEnd, splitExtensions, textInputRule, textPasteRule, textblockTypeInputRule, wrappingInputRule };\n//# sourceMappingURL=index.js.map\n","import { Node, mergeAttributes, nodeInputRule } from '@tiptap/core';\n\n/**\n * Matches an image to a ![image](src \"title\") on input.\n */\nconst inputRegex = /(?:^|\\s)(!\\[(.+|:?)]\\((\\S+)(?:(?:\\s+)[\"'](\\S+)[\"'])?\\))$/;\n/**\n * This extension allows you to insert images.\n * @see https://www.tiptap.dev/api/nodes/image\n */\nconst Image = Node.create({\n name: 'image',\n addOptions() {\n return {\n inline: false,\n allowBase64: false,\n HTMLAttributes: {},\n };\n },\n inline() {\n return this.options.inline;\n },\n group() {\n return this.options.inline ? 'inline' : 'block';\n },\n draggable: true,\n addAttributes() {\n return {\n src: {\n default: null,\n },\n alt: {\n default: null,\n },\n title: {\n default: null,\n },\n };\n },\n parseHTML() {\n return [\n {\n tag: this.options.allowBase64\n ? 'img[src]'\n : 'img[src]:not([src^=\"data:\"])',\n },\n ];\n },\n renderHTML({ HTMLAttributes }) {\n return ['img', mergeAttributes(this.options.HTMLAttributes, HTMLAttributes)];\n },\n addCommands() {\n return {\n setImage: options => ({ commands }) => {\n return commands.insertContent({\n type: this.name,\n attrs: options,\n });\n },\n };\n },\n addInputRules() {\n return [\n nodeInputRule({\n find: inputRegex,\n type: this.type,\n getAttributes: match => {\n const [, , alt, src, title] = match;\n return { src, alt, title };\n },\n }),\n ];\n },\n});\n\nexport { Image, Image as default, inputRegex };\n//# sourceMappingURL=index.js.map\n","// THIS FILE IS AUTOMATICALLY GENERATED DO NOT EDIT DIRECTLY\n// See update-tlds.js for encoding/decoding format\n// https://data.iana.org/TLD/tlds-alpha-by-domain.txt\nconst encodedTlds = 'aaa1rp3bb0ott3vie4c1le2ogado5udhabi7c0ademy5centure6ountant0s9o1tor4d0s1ult4e0g1ro2tna4f0l1rica5g0akhan5ency5i0g1rbus3force5tel5kdn3l0ibaba4pay4lfinanz6state5y2sace3tom5m0azon4ericanexpress7family11x2fam3ica3sterdam8nalytics7droid5quan4z2o0l2partments8p0le4q0uarelle8r0ab1mco4chi3my2pa2t0e3s0da2ia2sociates9t0hleta5torney7u0ction5di0ble3o3spost5thor3o0s4vianca6w0s2x0a2z0ure5ba0by2idu3namex3narepublic11d1k2r0celona5laycard4s5efoot5gains6seball5ketball8uhaus5yern5b0c1t1va3cg1n2d1e0ats2uty4er2ntley5rlin4st0buy5t2f1g1h0arti5i0ble3d1ke2ng0o3o1z2j1lack0friday9ockbuster8g1omberg7ue3m0s1w2n0pparibas9o0ats3ehringer8fa2m1nd2o0k0ing5sch2tik2on4t1utique6x2r0adesco6idgestone9oadway5ker3ther5ussels7s1t1uild0ers6siness6y1zz3v1w1y1z0h3ca0b1fe2l0l1vinklein9m0era3p2non3petown5ital0one8r0avan4ds2e0er0s4s2sa1e1h1ino4t0ering5holic7ba1n1re3c1d1enter4o1rn3f0a1d2g1h0anel2nel4rity4se2t2eap3intai5ristmas6ome4urch5i0priani6rcle4sco3tadel4i0c2y3k1l0aims4eaning6ick2nic1que6othing5ud3ub0med6m1n1o0ach3des3ffee4llege4ogne5m0cast4mbank4unity6pany2re3uter5sec4ndos3struction8ulting7tact3ractors9oking4l1p2rsica5untry4pon0s4rses6pa2r0edit0card4union9icket5own3s1uise0s6u0isinella9v1w1x1y0mru3ou3z2dabur3d1nce3ta1e1ing3sun4y2clk3ds2e0al0er2s3gree4livery5l1oitte5ta3mocrat6ntal2ist5si0gn4v2hl2iamonds6et2gital5rect0ory7scount3ver5h2y2j1k1m1np2o0cs1tor4g1mains5t1wnload7rive4tv2ubai3nlop4pont4rban5vag2r2z2earth3t2c0o2deka3u0cation8e1g1mail3erck5nergy4gineer0ing9terprises10pson4quipment8r0icsson6ni3s0q1tate5t1u0rovision8s2vents5xchange6pert3osed4ress5traspace10fage2il1rwinds6th3mily4n0s2rm0ers5shion4t3edex3edback6rrari3ero6i0delity5o2lm2nal1nce1ial7re0stone6mdale6sh0ing5t0ness6j1k1lickr3ghts4r2orist4wers5y2m1o0o0d1tball6rd1ex2sale4um3undation8x2r0ee1senius7l1ogans4ntier7tr2ujitsu5n0d2rniture7tbol5yi3ga0l0lery3o1up4me0s3p1rden4y2b0iz3d0n2e0a1nt0ing5orge5f1g0ee3h1i0ft0s3ves2ing5l0ass3e1obal2o4m0ail3bh2o1x2n1odaddy5ld0point6f2o0dyear5g0le4p1t1v2p1q1r0ainger5phics5tis4een3ipe3ocery4up4s1t1u0ardian6cci3ge2ide2tars5ru3w1y2hair2mburg5ngout5us3bo2dfc0bank7ealth0care8lp1sinki6re1mes5iphop4samitsu7tachi5v2k0t2m1n1ockey4ldings5iday5medepot5goods5s0ense7nda3rse3spital5t0ing5t0els3mail5use3w2r1sbc3t1u0ghes5yatt3undai7ibm2cbc2e1u2d1e0ee3fm2kano4l1m0amat4db2mo0bilien9n0c1dustries8finiti5o2g1k1stitute6urance4e4t0ernational10uit4vestments10o1piranga7q1r0ish4s0maili5t0anbul7t0au2v3jaguar4va3cb2e0ep2tzt3welry6io2ll2m0p2nj2o0bs1urg4t1y2p0morgan6rs3uegos4niper7kaufen5ddi3e0rryhotels6logistics9properties14fh2g1h1i0a1ds2m1ndle4tchen5wi3m1n1oeln3matsu5sher5p0mg2n2r0d1ed3uokgroup8w1y0oto4z2la0caixa5mborghini8er3ncaster6d0rover6xess5salle5t0ino3robe5w0yer5b1c1ds2ease3clerc5frak4gal2o2xus4gbt3i0dl2fe0insurance9style7ghting6ke2lly3mited4o2ncoln4k2psy3ve1ing5k1lc1p2oan0s3cker3us3l1ndon4tte1o3ve3pl0financial11r1s1t0d0a3u0ndbeck6xe1ury5v1y2ma0drid4if1son4keup4n0agement7go3p1rket0ing3s4riott5shalls7ttel5ba2c0kinsey7d1e0d0ia3et2lbourne7me1orial6n0u2rckmsd7g1h1iami3crosoft7l1ni1t2t0subishi9k1l0b1s2m0a2n1o0bi0le4da2e1i1m1nash3ey2ster5rmon3tgage6scow4to0rcycles9v0ie4p1q1r1s0d2t0n1r2u0seum3ic4v1w1x1y1z2na0b1goya4me2tura4vy3ba2c1e0c1t0bank4flix4work5ustar5w0s2xt0direct7us4f0l2g0o2hk2i0co2ke1on3nja3ssan1y5l1o0kia3rton4w0ruz3tv4p1r0a1w2tt2u1yc2z2obi1server7ffice5kinawa6layan0group9dnavy5lo3m0ega4ne1g1l0ine5oo2pen3racle3nge4g0anic5igins6saka4tsuka4t2vh3pa0ge2nasonic7ris2s1tners4s1y3y2ccw3e0t2f0izer5g1h0armacy6d1ilips5one2to0graphy6s4ysio5ics1tet2ures6d1n0g1k2oneer5zza4k1l0ace2y0station9umbing5s3m1n0c2ohl2ker3litie5rn2st3r0america6xi3ess3ime3o0d0uctions8f1gressive8mo2perties3y5tection8u0dential9s1t1ub2w0c2y2qa1pon3uebec3st5racing4dio4e0ad1lestate6tor2y4cipes5d0stone5umbrella9hab3ise0n3t2liance6n0t0als5pair3ort3ublican8st0aurant8view0s5xroth6ich0ardli6oh3l1o1p2o0cks3deo3gers4om3s0vp3u0gby3hr2n2w0e2yukyu6sa0arland6fe0ty4kura4le1on3msclub4ung5ndvik0coromant12ofi4p1rl2s1ve2xo3b0i1s2c0a1b1haeffler7midt4olarships8ol3ule3warz5ience5ot3d1e0arch3t2cure1ity6ek2lect4ner3rvices6ven3w1x0y3fr2g1h0angrila6rp2w2ell3ia1ksha5oes2p0ping5uji3w3i0lk2na1gles5te3j1k0i0n2y0pe4l0ing4m0art3ile4n0cf3o0ccer3ial4ftbank4ware6hu2lar2utions7ng1y2y2pa0ce3ort2t3r0l2s1t0ada2ples4r1tebank4farm7c0group6ockholm6rage3e3ream4udio2y3yle4u0cks3pplies3y2ort5rf1gery5zuki5v1watch4iss4x1y0dney4stems6z2tab1ipei4lk2obao4rget4tamotors6r2too4x0i3c0i2d0k2eam2ch0nology8l1masek5nnis4va3f1g1h0d1eater2re6iaa2ckets5enda4ps2res2ol4j0maxx4x2k0maxx5l1m0all4n1o0day3kyo3ols3p1ray3shiba5tal3urs3wn2yota3s3r0ade1ing4ining5vel0ers0insurance16ust3v2t1ube2i1nes3shu4v0s2w1z2ua1bank3s2g1k1nicom3versity8o2ol2ps2s1y1z2va0cations7na1guard7c1e0gas3ntures6risign5mögensberater2ung14sicherung10t2g1i0ajes4deo3g1king4llas4n1p1rgin4sa1ion4va1o3laanderen9n1odka3lvo3te1ing3o2yage5u2wales2mart4ter4ng0gou5tch0es6eather0channel12bcam3er2site5d0ding5ibo2r3f1hoswho6ien2ki2lliamhill9n0dows4e1ners6me2olterskluwer11odside6rk0s2ld3w2s1tc1f3xbox3erox4finity6ihuan4n2xx2yz3yachts4hoo3maxun5ndex5e1odobashi7ga2kohama6u0tube6t1un3za0ppos4ra3ero3ip2m1one3uerich6w2';\n// Internationalized domain names containing non-ASCII\nconst encodedUtlds = 'ελ1υ2бг1ел3дети4ею2католик6ом3мкд2он1сква6онлайн5рг3рус2ф2сайт3рб3укр3қаз3հայ3ישראל5קום3ابوظبي5رامكو5لاردن4بحرين5جزائر5سعودية6عليان5مغرب5مارات5یران5بارت2زار4يتك3ھارت5تونس4سودان3رية5شبكة4عراق2ب2مان4فلسطين6قطر3كاثوليك6وم3مصر2ليسيا5وريتانيا7قع4همراه5پاکستان7ڀارت4कॉम3नेट3भारत0म्3ोत5संगठन5বাংলা5ভারত2ৰত4ਭਾਰਤ4ભારત4ଭାରତ4இந்தியா6லங்கை6சிங்கப்பூர்11భారత్5ಭಾರತ4ഭാരതം5ලංකා4คอม3ไทย3ລາວ3გე2みんな3アマゾン4クラウド4グーグル4コム2ストア3セール3ファッション6ポイント4世界2中信1国1國1文网3亚马逊3企业2佛山2信息2健康2八卦2公司1益2台湾1灣2商城1店1标2嘉里0大酒店5在线2大拿2天主教3娱乐2家電2广东2微博2慈善2我爱你3手机2招聘2政务1府2新加坡2闻2时尚2書籍2机构2淡马锡3游戏2澳門2点看2移动2组织机构4网址1店1站1络2联通2谷歌2购物2通販2集团2電訊盈科4飞利浦3食品2餐厅2香格里拉3港2닷넷1컴2삼성2한국2';\n\n/**\n * @template A\n * @template B\n * @param {A} target\n * @param {B} properties\n * @return {A & B}\n */\nconst assign = (target, properties) => {\n for (const key in properties) {\n target[key] = properties[key];\n }\n return target;\n};\n\n/**\n * Finite State Machine generation utilities\n */\n\n/**\n * @template T\n * @typedef {{ [group: string]: T[] }} Collections\n */\n\n/**\n * @typedef {{ [group: string]: true }} Flags\n */\n\n// Keys in scanner Collections instances\nconst numeric = 'numeric';\nconst ascii = 'ascii';\nconst alpha = 'alpha';\nconst asciinumeric = 'asciinumeric';\nconst alphanumeric = 'alphanumeric';\nconst domain = 'domain';\nconst emoji = 'emoji';\nconst scheme = 'scheme';\nconst slashscheme = 'slashscheme';\nconst whitespace = 'whitespace';\n\n/**\n * @template T\n * @param {string} name\n * @param {Collections} groups to register in\n * @returns {T[]} Current list of tokens in the given collection\n */\nfunction registerGroup(name, groups) {\n if (!(name in groups)) {\n groups[name] = [];\n }\n return groups[name];\n}\n\n/**\n * @template T\n * @param {T} t token to add\n * @param {Collections} groups\n * @param {Flags} flags\n */\nfunction addToGroups(t, flags, groups) {\n if (flags[numeric]) {\n flags[asciinumeric] = true;\n flags[alphanumeric] = true;\n }\n if (flags[ascii]) {\n flags[asciinumeric] = true;\n flags[alpha] = true;\n }\n if (flags[asciinumeric]) {\n flags[alphanumeric] = true;\n }\n if (flags[alpha]) {\n flags[alphanumeric] = true;\n }\n if (flags[alphanumeric]) {\n flags[domain] = true;\n }\n if (flags[emoji]) {\n flags[domain] = true;\n }\n for (const k in flags) {\n const group = registerGroup(k, groups);\n if (group.indexOf(t) < 0) {\n group.push(t);\n }\n }\n}\n\n/**\n * @template T\n * @param {T} t token to check\n * @param {Collections} groups\n * @returns {Flags} group flags that contain this token\n */\nfunction flagsForToken(t, groups) {\n const result = {};\n for (const c in groups) {\n if (groups[c].indexOf(t) >= 0) {\n result[c] = true;\n }\n }\n return result;\n}\n\n/**\n * @template T\n * @typedef {null | T } Transition\n */\n\n/**\n * Define a basic state machine state. j is the list of character transitions,\n * jr is the list of regex-match transitions, jd is the default state to\n * transition to t is the accepting token type, if any. If this is the terminal\n * state, then it does not emit a token.\n *\n * The template type T represents the type of the token this state accepts. This\n * should be a string (such as of the token exports in `text.js`) or a\n * MultiToken subclass (from `multi.js`)\n *\n * @template T\n * @param {T} [token] Token that this state emits\n */\nfunction State(token) {\n if (token === void 0) {\n token = null;\n }\n // this.n = null; // DEBUG: State name\n /** @type {{ [input: string]: State }} j */\n this.j = {}; // IMPLEMENTATION 1\n // this.j = []; // IMPLEMENTATION 2\n /** @type {[RegExp, State][]} jr */\n this.jr = [];\n /** @type {?State} jd */\n this.jd = null;\n /** @type {?T} t */\n this.t = token;\n}\n\n/**\n * Scanner token groups\n * @type Collections\n */\nState.groups = {};\nState.prototype = {\n accepts() {\n return !!this.t;\n },\n /**\n * Follow an existing transition from the given input to the next state.\n * Does not mutate.\n * @param {string} input character or token type to transition on\n * @returns {?State} the next state, if any\n */\n go(input) {\n const state = this;\n const nextState = state.j[input];\n if (nextState) {\n return nextState;\n }\n for (let i = 0; i < state.jr.length; i++) {\n const regex = state.jr[i][0];\n const nextState = state.jr[i][1]; // note: might be empty to prevent default jump\n if (nextState && regex.test(input)) {\n return nextState;\n }\n }\n // Nowhere left to jump! Return default, if any\n return state.jd;\n },\n /**\n * Whether the state has a transition for the given input. Set the second\n * argument to true to only look for an exact match (and not a default or\n * regular-expression-based transition)\n * @param {string} input\n * @param {boolean} exactOnly\n */\n has(input, exactOnly) {\n if (exactOnly === void 0) {\n exactOnly = false;\n }\n return exactOnly ? input in this.j : !!this.go(input);\n },\n /**\n * Short for \"transition all\"; create a transition from the array of items\n * in the given list to the same final resulting state.\n * @param {string | string[]} inputs Group of inputs to transition on\n * @param {Transition | State} [next] Transition options\n * @param {Flags} [flags] Collections flags to add token to\n * @param {Collections} [groups] Master list of token groups\n */\n ta(inputs, next, flags, groups) {\n for (let i = 0; i < inputs.length; i++) {\n this.tt(inputs[i], next, flags, groups);\n }\n },\n /**\n * Short for \"take regexp transition\"; defines a transition for this state\n * when it encounters a token which matches the given regular expression\n * @param {RegExp} regexp Regular expression transition (populate first)\n * @param {T | State} [next] Transition options\n * @param {Flags} [flags] Collections flags to add token to\n * @param {Collections} [groups] Master list of token groups\n * @returns {State} taken after the given input\n */\n tr(regexp, next, flags, groups) {\n groups = groups || State.groups;\n let nextState;\n if (next && next.j) {\n nextState = next;\n } else {\n // Token with maybe token groups\n nextState = new State(next);\n if (flags && groups) {\n addToGroups(next, flags, groups);\n }\n }\n this.jr.push([regexp, nextState]);\n return nextState;\n },\n /**\n * Short for \"take transitions\", will take as many sequential transitions as\n * the length of the given input and returns the\n * resulting final state.\n * @param {string | string[]} input\n * @param {T | State} [next] Transition options\n * @param {Flags} [flags] Collections flags to add token to\n * @param {Collections} [groups] Master list of token groups\n * @returns {State} taken after the given input\n */\n ts(input, next, flags, groups) {\n let state = this;\n const len = input.length;\n if (!len) {\n return state;\n }\n for (let i = 0; i < len - 1; i++) {\n state = state.tt(input[i]);\n }\n return state.tt(input[len - 1], next, flags, groups);\n },\n /**\n * Short for \"take transition\", this is a method for building/working with\n * state machines.\n *\n * If a state already exists for the given input, returns it.\n *\n * If a token is specified, that state will emit that token when reached by\n * the linkify engine.\n *\n * If no state exists, it will be initialized with some default transitions\n * that resemble existing default transitions.\n *\n * If a state is given for the second argument, that state will be\n * transitioned to on the given input regardless of what that input\n * previously did.\n *\n * Specify a token group flags to define groups that this token belongs to.\n * The token will be added to corresponding entires in the given groups\n * object.\n *\n * @param {string} input character, token type to transition on\n * @param {T | State} [next] Transition options\n * @param {Flags} [flags] Collections flags to add token to\n * @param {Collections} [groups] Master list of groups\n * @returns {State} taken after the given input\n */\n tt(input, next, flags, groups) {\n groups = groups || State.groups;\n const state = this;\n\n // Check if existing state given, just a basic transition\n if (next && next.j) {\n state.j[input] = next;\n return next;\n }\n const t = next;\n\n // Take the transition with the usual default mechanisms and use that as\n // a template for creating the next state\n let nextState,\n templateState = state.go(input);\n if (templateState) {\n nextState = new State();\n assign(nextState.j, templateState.j);\n nextState.jr.push.apply(nextState.jr, templateState.jr);\n nextState.jd = templateState.jd;\n nextState.t = templateState.t;\n } else {\n nextState = new State();\n }\n if (t) {\n // Ensure newly token is in the same groups as the old token\n if (groups) {\n if (nextState.t && typeof nextState.t === 'string') {\n const allFlags = assign(flagsForToken(nextState.t, groups), flags);\n addToGroups(t, allFlags, groups);\n } else if (flags) {\n addToGroups(t, flags, groups);\n }\n }\n nextState.t = t; // overwrite anything that was previously there\n }\n\n state.j[input] = nextState;\n return nextState;\n }\n};\n\n// Helper functions to improve minification (not exported outside linkifyjs module)\n\n/**\n * @template T\n * @param {State} state\n * @param {string | string[]} input\n * @param {Flags} [flags]\n * @param {Collections} [groups]\n */\nconst ta = (state, input, next, flags, groups) => state.ta(input, next, flags, groups);\n\n/**\n * @template T\n * @param {State} state\n * @param {RegExp} regexp\n * @param {T | State} [next]\n * @param {Flags} [flags]\n * @param {Collections} [groups]\n */\nconst tr = (state, regexp, next, flags, groups) => state.tr(regexp, next, flags, groups);\n\n/**\n * @template T\n * @param {State} state\n * @param {string | string[]} input\n * @param {T | State} [next]\n * @param {Flags} [flags]\n * @param {Collections} [groups]\n */\nconst ts = (state, input, next, flags, groups) => state.ts(input, next, flags, groups);\n\n/**\n * @template T\n * @param {State} state\n * @param {string} input\n * @param {T | State} [next]\n * @param {Collections} [groups]\n * @param {Flags} [flags]\n */\nconst tt = (state, input, next, flags, groups) => state.tt(input, next, flags, groups);\n\n/******************************************************************************\nText Tokens\nIdentifiers for token outputs from the regexp scanner\n******************************************************************************/\n\n// A valid web domain token\nconst WORD = 'WORD'; // only contains a-z\nconst UWORD = 'UWORD'; // contains letters other than a-z, used for IDN\n\n// Special case of word\nconst LOCALHOST = 'LOCALHOST';\n\n// Valid top-level domain, special case of WORD (see tlds.js)\nconst TLD = 'TLD';\n\n// Valid IDN TLD, special case of UWORD (see tlds.js)\nconst UTLD = 'UTLD';\n\n// The scheme portion of a web URI protocol. Supported types include: `mailto`,\n// `file`, and user-defined custom protocols. Limited to schemes that contain\n// only letters\nconst SCHEME = 'SCHEME';\n\n// Similar to SCHEME, except makes distinction for schemes that must always be\n// followed by `://`, not just `:`. Supported types include `http`, `https`,\n// `ftp`, `ftps`\nconst SLASH_SCHEME = 'SLASH_SCHEME';\n\n// Any sequence of digits 0-9\nconst NUM = 'NUM';\n\n// Any number of consecutive whitespace characters that are not newline\nconst WS = 'WS';\n\n// New line (unix style)\nconst NL$1 = 'NL'; // \\n\n\n// Opening/closing bracket classes\n// TODO: Rename OPEN -> LEFT and CLOSE -> RIGHT in v5 to fit with Unicode names\n// Also rename angle brackes to LESSTHAN and GREATER THAN\nconst OPENBRACE = 'OPENBRACE'; // {\nconst CLOSEBRACE = 'CLOSEBRACE'; // }\nconst OPENBRACKET = 'OPENBRACKET'; // [\nconst CLOSEBRACKET = 'CLOSEBRACKET'; // ]\nconst OPENPAREN = 'OPENPAREN'; // (\nconst CLOSEPAREN = 'CLOSEPAREN'; // )\nconst OPENANGLEBRACKET = 'OPENANGLEBRACKET'; // <\nconst CLOSEANGLEBRACKET = 'CLOSEANGLEBRACKET'; // >\nconst FULLWIDTHLEFTPAREN = 'FULLWIDTHLEFTPAREN'; // (\nconst FULLWIDTHRIGHTPAREN = 'FULLWIDTHRIGHTPAREN'; // )\nconst LEFTCORNERBRACKET = 'LEFTCORNERBRACKET'; // 「\nconst RIGHTCORNERBRACKET = 'RIGHTCORNERBRACKET'; // 」\nconst LEFTWHITECORNERBRACKET = 'LEFTWHITECORNERBRACKET'; // 『\nconst RIGHTWHITECORNERBRACKET = 'RIGHTWHITECORNERBRACKET'; // 』\nconst FULLWIDTHLESSTHAN = 'FULLWIDTHLESSTHAN'; // <\nconst FULLWIDTHGREATERTHAN = 'FULLWIDTHGREATERTHAN'; // >\n\n// Various symbols\nconst AMPERSAND = 'AMPERSAND'; // &\nconst APOSTROPHE = 'APOSTROPHE'; // '\nconst ASTERISK = 'ASTERISK'; // *\nconst AT = 'AT'; // @\nconst BACKSLASH = 'BACKSLASH'; // \\\nconst BACKTICK = 'BACKTICK'; // `\nconst CARET = 'CARET'; // ^\nconst COLON = 'COLON'; // :\nconst COMMA = 'COMMA'; // ,\nconst DOLLAR = 'DOLLAR'; // $\nconst DOT = 'DOT'; // .\nconst EQUALS = 'EQUALS'; // =\nconst EXCLAMATION = 'EXCLAMATION'; // !\nconst HYPHEN = 'HYPHEN'; // -\nconst PERCENT = 'PERCENT'; // %\nconst PIPE = 'PIPE'; // |\nconst PLUS = 'PLUS'; // +\nconst POUND = 'POUND'; // #\nconst QUERY = 'QUERY'; // ?\nconst QUOTE = 'QUOTE'; // \"\n\nconst SEMI = 'SEMI'; // ;\nconst SLASH = 'SLASH'; // /\nconst TILDE = 'TILDE'; // ~\nconst UNDERSCORE = 'UNDERSCORE'; // _\n\n// Emoji symbol\nconst EMOJI$1 = 'EMOJI';\n\n// Default token - anything that is not one of the above\nconst SYM = 'SYM';\n\nvar tk = /*#__PURE__*/Object.freeze({\n\t__proto__: null,\n\tWORD: WORD,\n\tUWORD: UWORD,\n\tLOCALHOST: LOCALHOST,\n\tTLD: TLD,\n\tUTLD: UTLD,\n\tSCHEME: SCHEME,\n\tSLASH_SCHEME: SLASH_SCHEME,\n\tNUM: NUM,\n\tWS: WS,\n\tNL: NL$1,\n\tOPENBRACE: OPENBRACE,\n\tCLOSEBRACE: CLOSEBRACE,\n\tOPENBRACKET: OPENBRACKET,\n\tCLOSEBRACKET: CLOSEBRACKET,\n\tOPENPAREN: OPENPAREN,\n\tCLOSEPAREN: CLOSEPAREN,\n\tOPENANGLEBRACKET: OPENANGLEBRACKET,\n\tCLOSEANGLEBRACKET: CLOSEANGLEBRACKET,\n\tFULLWIDTHLEFTPAREN: FULLWIDTHLEFTPAREN,\n\tFULLWIDTHRIGHTPAREN: FULLWIDTHRIGHTPAREN,\n\tLEFTCORNERBRACKET: LEFTCORNERBRACKET,\n\tRIGHTCORNERBRACKET: RIGHTCORNERBRACKET,\n\tLEFTWHITECORNERBRACKET: LEFTWHITECORNERBRACKET,\n\tRIGHTWHITECORNERBRACKET: RIGHTWHITECORNERBRACKET,\n\tFULLWIDTHLESSTHAN: FULLWIDTHLESSTHAN,\n\tFULLWIDTHGREATERTHAN: FULLWIDTHGREATERTHAN,\n\tAMPERSAND: AMPERSAND,\n\tAPOSTROPHE: APOSTROPHE,\n\tASTERISK: ASTERISK,\n\tAT: AT,\n\tBACKSLASH: BACKSLASH,\n\tBACKTICK: BACKTICK,\n\tCARET: CARET,\n\tCOLON: COLON,\n\tCOMMA: COMMA,\n\tDOLLAR: DOLLAR,\n\tDOT: DOT,\n\tEQUALS: EQUALS,\n\tEXCLAMATION: EXCLAMATION,\n\tHYPHEN: HYPHEN,\n\tPERCENT: PERCENT,\n\tPIPE: PIPE,\n\tPLUS: PLUS,\n\tPOUND: POUND,\n\tQUERY: QUERY,\n\tQUOTE: QUOTE,\n\tSEMI: SEMI,\n\tSLASH: SLASH,\n\tTILDE: TILDE,\n\tUNDERSCORE: UNDERSCORE,\n\tEMOJI: EMOJI$1,\n\tSYM: SYM\n});\n\n// Note that these two Unicode ones expand into a really big one with Babel\nconst ASCII_LETTER = /[a-z]/;\nconst LETTER = /\\p{L}/u; // Any Unicode character with letter data type\nconst EMOJI = /\\p{Emoji}/u; // Any Unicode emoji character\nconst EMOJI_VARIATION$1 = /\\ufe0f/;\nconst DIGIT = /\\d/;\nconst SPACE = /\\s/;\n\nvar regexp = /*#__PURE__*/Object.freeze({\n\t__proto__: null,\n\tASCII_LETTER: ASCII_LETTER,\n\tLETTER: LETTER,\n\tEMOJI: EMOJI,\n\tEMOJI_VARIATION: EMOJI_VARIATION$1,\n\tDIGIT: DIGIT,\n\tSPACE: SPACE\n});\n\n/**\n\tThe scanner provides an interface that takes a string of text as input, and\n\toutputs an array of tokens instances that can be used for easy URL parsing.\n*/\nconst NL = '\\n'; // New line character\nconst EMOJI_VARIATION = '\\ufe0f'; // Variation selector, follows heart and others\nconst EMOJI_JOINER = '\\u200d'; // zero-width joiner\n\nlet tlds = null,\n utlds = null; // don't change so only have to be computed once\n\n/**\n * Scanner output token:\n * - `t` is the token name (e.g., 'NUM', 'EMOJI', 'TLD')\n * - `v` is the value of the token (e.g., '123', '❤️', 'com')\n * - `s` is the start index of the token in the original string\n * - `e` is the end index of the token in the original string\n * @typedef {{t: string, v: string, s: number, e: number}} Token\n */\n\n/**\n * @template T\n * @typedef {{ [collection: string]: T[] }} Collections\n */\n\n/**\n * Initialize the scanner character-based state machine for the given start\n * state\n * @param {[string, boolean][]} customSchemes List of custom schemes, where each\n * item is a length-2 tuple with the first element set to the string scheme, and\n * the second element set to `true` if the `://` after the scheme is optional\n */\nfunction init$2(customSchemes) {\n if (customSchemes === void 0) {\n customSchemes = [];\n }\n // Frequently used states (name argument removed during minification)\n /** @type Collections */\n const groups = {}; // of tokens\n State.groups = groups;\n /** @type State */\n const Start = new State();\n if (tlds == null) {\n tlds = decodeTlds(encodedTlds);\n }\n if (utlds == null) {\n utlds = decodeTlds(encodedUtlds);\n }\n\n // States for special URL symbols that accept immediately after start\n tt(Start, \"'\", APOSTROPHE);\n tt(Start, '{', OPENBRACE);\n tt(Start, '}', CLOSEBRACE);\n tt(Start, '[', OPENBRACKET);\n tt(Start, ']', CLOSEBRACKET);\n tt(Start, '(', OPENPAREN);\n tt(Start, ')', CLOSEPAREN);\n tt(Start, '<', OPENANGLEBRACKET);\n tt(Start, '>', CLOSEANGLEBRACKET);\n tt(Start, '(', FULLWIDTHLEFTPAREN);\n tt(Start, ')', FULLWIDTHRIGHTPAREN);\n tt(Start, '「', LEFTCORNERBRACKET);\n tt(Start, '」', RIGHTCORNERBRACKET);\n tt(Start, '『', LEFTWHITECORNERBRACKET);\n tt(Start, '』', RIGHTWHITECORNERBRACKET);\n tt(Start, '<', FULLWIDTHLESSTHAN);\n tt(Start, '>', FULLWIDTHGREATERTHAN);\n tt(Start, '&', AMPERSAND);\n tt(Start, '*', ASTERISK);\n tt(Start, '@', AT);\n tt(Start, '`', BACKTICK);\n tt(Start, '^', CARET);\n tt(Start, ':', COLON);\n tt(Start, ',', COMMA);\n tt(Start, '$', DOLLAR);\n tt(Start, '.', DOT);\n tt(Start, '=', EQUALS);\n tt(Start, '!', EXCLAMATION);\n tt(Start, '-', HYPHEN);\n tt(Start, '%', PERCENT);\n tt(Start, '|', PIPE);\n tt(Start, '+', PLUS);\n tt(Start, '#', POUND);\n tt(Start, '?', QUERY);\n tt(Start, '\"', QUOTE);\n tt(Start, '/', SLASH);\n tt(Start, ';', SEMI);\n tt(Start, '~', TILDE);\n tt(Start, '_', UNDERSCORE);\n tt(Start, '\\\\', BACKSLASH);\n const Num = tr(Start, DIGIT, NUM, {\n [numeric]: true\n });\n tr(Num, DIGIT, Num);\n\n // State which emits a word token\n const Word = tr(Start, ASCII_LETTER, WORD, {\n [ascii]: true\n });\n tr(Word, ASCII_LETTER, Word);\n\n // Same as previous, but specific to non-fsm.ascii alphabet words\n const UWord = tr(Start, LETTER, UWORD, {\n [alpha]: true\n });\n tr(UWord, ASCII_LETTER); // Non-accepting\n tr(UWord, LETTER, UWord);\n\n // Whitespace jumps\n // Tokens of only non-newline whitespace are arbitrarily long\n // If any whitespace except newline, more whitespace!\n const Ws = tr(Start, SPACE, WS, {\n [whitespace]: true\n });\n tt(Start, NL, NL$1, {\n [whitespace]: true\n });\n tt(Ws, NL); // non-accepting state to avoid mixing whitespaces\n tr(Ws, SPACE, Ws);\n\n // Emoji tokens. They are not grouped by the scanner except in cases where a\n // zero-width joiner is present\n const Emoji = tr(Start, EMOJI, EMOJI$1, {\n [emoji]: true\n });\n tr(Emoji, EMOJI, Emoji);\n tt(Emoji, EMOJI_VARIATION, Emoji);\n // tt(Start, EMOJI_VARIATION, Emoji); // This one is sketchy\n\n const EmojiJoiner = tt(Emoji, EMOJI_JOINER);\n tr(EmojiJoiner, EMOJI, Emoji);\n // tt(EmojiJoiner, EMOJI_VARIATION, Emoji); // also sketchy\n\n // Generates states for top-level domains\n // Note that this is most accurate when tlds are in alphabetical order\n const wordjr = [[ASCII_LETTER, Word]];\n const uwordjr = [[ASCII_LETTER, null], [LETTER, UWord]];\n for (let i = 0; i < tlds.length; i++) {\n fastts(Start, tlds[i], TLD, WORD, wordjr);\n }\n for (let i = 0; i < utlds.length; i++) {\n fastts(Start, utlds[i], UTLD, UWORD, uwordjr);\n }\n addToGroups(TLD, {\n tld: true,\n ascii: true\n }, groups);\n addToGroups(UTLD, {\n utld: true,\n alpha: true\n }, groups);\n\n // Collect the states generated by different protocols. NOTE: If any new TLDs\n // get added that are also protocols, set the token to be the same as the\n // protocol to ensure parsing works as expected.\n fastts(Start, 'file', SCHEME, WORD, wordjr);\n fastts(Start, 'mailto', SCHEME, WORD, wordjr);\n fastts(Start, 'http', SLASH_SCHEME, WORD, wordjr);\n fastts(Start, 'https', SLASH_SCHEME, WORD, wordjr);\n fastts(Start, 'ftp', SLASH_SCHEME, WORD, wordjr);\n fastts(Start, 'ftps', SLASH_SCHEME, WORD, wordjr);\n addToGroups(SCHEME, {\n scheme: true,\n ascii: true\n }, groups);\n addToGroups(SLASH_SCHEME, {\n slashscheme: true,\n ascii: true\n }, groups);\n\n // Register custom schemes. Assumes each scheme is asciinumeric with hyphens\n customSchemes = customSchemes.sort((a, b) => a[0] > b[0] ? 1 : -1);\n for (let i = 0; i < customSchemes.length; i++) {\n const sch = customSchemes[i][0];\n const optionalSlashSlash = customSchemes[i][1];\n const flags = optionalSlashSlash ? {\n [scheme]: true\n } : {\n [slashscheme]: true\n };\n if (sch.indexOf('-') >= 0) {\n flags[domain] = true;\n } else if (!ASCII_LETTER.test(sch)) {\n flags[numeric] = true; // numbers only\n } else if (DIGIT.test(sch)) {\n flags[asciinumeric] = true;\n } else {\n flags[ascii] = true;\n }\n ts(Start, sch, sch, flags);\n }\n\n // Localhost token\n ts(Start, 'localhost', LOCALHOST, {\n ascii: true\n });\n\n // Set default transition for start state (some symbol)\n Start.jd = new State(SYM);\n return {\n start: Start,\n tokens: assign({\n groups\n }, tk)\n };\n}\n\n/**\n\tGiven a string, returns an array of TOKEN instances representing the\n\tcomposition of that string.\n\n\t@method run\n\t@param {State} start scanner starting state\n\t@param {string} str input string to scan\n\t@return {Token[]} list of tokens, each with a type and value\n*/\nfunction run$1(start, str) {\n // State machine is not case sensitive, so input is tokenized in lowercased\n // form (still returns regular case). Uses selective `toLowerCase` because\n // lowercasing the entire string causes the length and character position to\n // vary in some non-English strings with V8-based runtimes.\n const iterable = stringToArray(str.replace(/[A-Z]/g, c => c.toLowerCase()));\n const charCount = iterable.length; // <= len if there are emojis, etc\n const tokens = []; // return value\n\n // cursor through the string itself, accounting for characters that have\n // width with length 2 such as emojis\n let cursor = 0;\n\n // Cursor through the array-representation of the string\n let charCursor = 0;\n\n // Tokenize the string\n while (charCursor < charCount) {\n let state = start;\n let nextState = null;\n let tokenLength = 0;\n let latestAccepting = null;\n let sinceAccepts = -1;\n let charsSinceAccepts = -1;\n while (charCursor < charCount && (nextState = state.go(iterable[charCursor]))) {\n state = nextState;\n\n // Keep track of the latest accepting state\n if (state.accepts()) {\n sinceAccepts = 0;\n charsSinceAccepts = 0;\n latestAccepting = state;\n } else if (sinceAccepts >= 0) {\n sinceAccepts += iterable[charCursor].length;\n charsSinceAccepts++;\n }\n tokenLength += iterable[charCursor].length;\n cursor += iterable[charCursor].length;\n charCursor++;\n }\n\n // Roll back to the latest accepting state\n cursor -= sinceAccepts;\n charCursor -= charsSinceAccepts;\n tokenLength -= sinceAccepts;\n\n // No more jumps, just make a new token from the last accepting one\n tokens.push({\n t: latestAccepting.t,\n // token type/name\n v: str.slice(cursor - tokenLength, cursor),\n // string value\n s: cursor - tokenLength,\n // start index\n e: cursor // end index (excluding)\n });\n }\n\n return tokens;\n}\n\n/**\n * Convert a String to an Array of characters, taking into account that some\n * characters like emojis take up two string indexes.\n *\n * Adapted from core-js (MIT license)\n * https://github.com/zloirock/core-js/blob/2d69cf5f99ab3ea3463c395df81e5a15b68f49d9/packages/core-js/internals/string-multibyte.js\n *\n * @function stringToArray\n * @param {string} str\n * @returns {string[]}\n */\nfunction stringToArray(str) {\n const result = [];\n const len = str.length;\n let index = 0;\n while (index < len) {\n let first = str.charCodeAt(index);\n let second;\n let char = first < 0xd800 || first > 0xdbff || index + 1 === len || (second = str.charCodeAt(index + 1)) < 0xdc00 || second > 0xdfff ? str[index] // single character\n : str.slice(index, index + 2); // two-index characters\n result.push(char);\n index += char.length;\n }\n return result;\n}\n\n/**\n * Fast version of ts function for when transition defaults are well known\n * @param {State} state\n * @param {string} input\n * @param {string} t\n * @param {string} defaultt\n * @param {[RegExp, State][]} jr\n * @returns {State}\n */\nfunction fastts(state, input, t, defaultt, jr) {\n let next;\n const len = input.length;\n for (let i = 0; i < len - 1; i++) {\n const char = input[i];\n if (state.j[char]) {\n next = state.j[char];\n } else {\n next = new State(defaultt);\n next.jr = jr.slice();\n state.j[char] = next;\n }\n state = next;\n }\n next = new State(t);\n next.jr = jr.slice();\n state.j[input[len - 1]] = next;\n return next;\n}\n\n/**\n * Converts a string of Top-Level Domain names encoded in update-tlds.js back\n * into a list of strings.\n * @param {str} encoded encoded TLDs string\n * @returns {str[]} original TLDs list\n */\nfunction decodeTlds(encoded) {\n const words = [];\n const stack = [];\n let i = 0;\n let digits = '0123456789';\n while (i < encoded.length) {\n let popDigitCount = 0;\n while (digits.indexOf(encoded[i + popDigitCount]) >= 0) {\n popDigitCount++; // encountered some digits, have to pop to go one level up trie\n }\n\n if (popDigitCount > 0) {\n words.push(stack.join('')); // whatever preceded the pop digits must be a word\n for (let popCount = parseInt(encoded.substring(i, i + popDigitCount), 10); popCount > 0; popCount--) {\n stack.pop();\n }\n i += popDigitCount;\n } else {\n stack.push(encoded[i]); // drop down a level into the trie\n i++;\n }\n }\n return words;\n}\n\n/**\n * An object where each key is a valid DOM Event Name such as `click` or `focus`\n * and each value is an event handler function.\n *\n * https://developer.mozilla.org/en-US/docs/Web/API/Element#events\n * @typedef {?{ [event: string]: Function }} EventListeners\n */\n\n/**\n * All formatted properties required to render a link, including `tagName`,\n * `attributes`, `content` and `eventListeners`.\n * @typedef {{ tagName: any, attributes: {[attr: string]: any}, content: string,\n * eventListeners: EventListeners }} IntermediateRepresentation\n */\n\n/**\n * Specify either an object described by the template type `O` or a function.\n *\n * The function takes a string value (usually the link's href attribute), the\n * link type (`'url'`, `'hashtag`', etc.) and an internal token representation\n * of the link. It should return an object of the template type `O`\n * @template O\n * @typedef {O | ((value: string, type: string, token: MultiToken) => O)} OptObj\n */\n\n/**\n * Specify either a function described by template type `F` or an object.\n *\n * Each key in the object should be a link type (`'url'`, `'hashtag`', etc.). Each\n * value should be a function with template type `F` that is called when the\n * corresponding link type is encountered.\n * @template F\n * @typedef {F | { [type: string]: F}} OptFn\n */\n\n/**\n * Specify either a value with template type `V`, a function that returns `V` or\n * an object where each value resolves to `V`.\n *\n * The function takes a string value (usually the link's href attribute), the\n * link type (`'url'`, `'hashtag`', etc.) and an internal token representation\n * of the link. It should return an object of the template type `V`\n *\n * For the object, each key should be a link type (`'url'`, `'hashtag`', etc.).\n * Each value should either have type `V` or a function that returns V. This\n * function similarly takes a string value and a token.\n *\n * Example valid types for `Opt`:\n *\n * ```js\n * 'hello'\n * (value, type, token) => 'world'\n * { url: 'hello', email: (value, token) => 'world'}\n * ```\n * @template V\n * @typedef {V | ((value: string, type: string, token: MultiToken) => V) | { [type: string]: V | ((value: string, token: MultiToken) => V) }} Opt\n */\n\n/**\n * See available options: https://linkify.js.org/docs/options.html\n * @typedef {{\n * \tdefaultProtocol?: string,\n * events?: OptObj,\n * \tformat?: Opt,\n * \tformatHref?: Opt,\n * \tnl2br?: boolean,\n * \ttagName?: Opt,\n * \ttarget?: Opt,\n * \trel?: Opt,\n * \tvalidate?: Opt,\n * \ttruncate?: Opt,\n * \tclassName?: Opt,\n * \tattributes?: OptObj<({ [attr: string]: any })>,\n * ignoreTags?: string[],\n * \trender?: OptFn<((ir: IntermediateRepresentation) => any)>\n * }} Opts\n */\n\n/**\n * @type Required\n */\nconst defaults = {\n defaultProtocol: 'http',\n events: null,\n format: noop,\n formatHref: noop,\n nl2br: false,\n tagName: 'a',\n target: null,\n rel: null,\n validate: true,\n truncate: Infinity,\n className: null,\n attributes: null,\n ignoreTags: [],\n render: null\n};\n\n/**\n * Utility class for linkify interfaces to apply specified\n * {@link Opts formatting and rendering options}.\n *\n * @param {Opts | Options} [opts] Option value overrides.\n * @param {(ir: IntermediateRepresentation) => any} [defaultRender] (For\n * internal use) default render function that determines how to generate an\n * HTML element based on a link token's derived tagName, attributes and HTML.\n * Similar to render option\n */\nfunction Options(opts, defaultRender) {\n if (defaultRender === void 0) {\n defaultRender = null;\n }\n let o = assign({}, defaults);\n if (opts) {\n o = assign(o, opts instanceof Options ? opts.o : opts);\n }\n\n // Ensure all ignored tags are uppercase\n const ignoredTags = o.ignoreTags;\n const uppercaseIgnoredTags = [];\n for (let i = 0; i < ignoredTags.length; i++) {\n uppercaseIgnoredTags.push(ignoredTags[i].toUpperCase());\n }\n /** @protected */\n this.o = o;\n if (defaultRender) {\n this.defaultRender = defaultRender;\n }\n this.ignoreTags = uppercaseIgnoredTags;\n}\nOptions.prototype = {\n o: defaults,\n /**\n * @type string[]\n */\n ignoreTags: [],\n /**\n * @param {IntermediateRepresentation} ir\n * @returns {any}\n */\n defaultRender(ir) {\n return ir;\n },\n /**\n * Returns true or false based on whether a token should be displayed as a\n * link based on the user options.\n * @param {MultiToken} token\n * @returns {boolean}\n */\n check(token) {\n return this.get('validate', token.toString(), token);\n },\n // Private methods\n\n /**\n * Resolve an option's value based on the value of the option and the given\n * params. If operator and token are specified and the target option is\n * callable, automatically calls the function with the given argument.\n * @template {keyof Opts} K\n * @param {K} key Name of option to use\n * @param {string} [operator] will be passed to the target option if it's a\n * function. If not specified, RAW function value gets returned\n * @param {MultiToken} [token] The token from linkify.tokenize\n * @returns {Opts[K] | any}\n */\n get(key, operator, token) {\n const isCallable = operator != null;\n let option = this.o[key];\n if (!option) {\n return option;\n }\n if (typeof option === 'object') {\n option = token.t in option ? option[token.t] : defaults[key];\n if (typeof option === 'function' && isCallable) {\n option = option(operator, token);\n }\n } else if (typeof option === 'function' && isCallable) {\n option = option(operator, token.t, token);\n }\n return option;\n },\n /**\n * @template {keyof Opts} L\n * @param {L} key Name of options object to use\n * @param {string} [operator]\n * @param {MultiToken} [token]\n * @returns {Opts[L] | any}\n */\n getObj(key, operator, token) {\n let obj = this.o[key];\n if (typeof obj === 'function' && operator != null) {\n obj = obj(operator, token.t, token);\n }\n return obj;\n },\n /**\n * Convert the given token to a rendered element that may be added to the\n * calling-interface's DOM\n * @param {MultiToken} token Token to render to an HTML element\n * @returns {any} Render result; e.g., HTML string, DOM element, React\n * Component, etc.\n */\n render(token) {\n const ir = token.render(this); // intermediate representation\n const renderFn = this.get('render', null, token) || this.defaultRender;\n return renderFn(ir, token.t, token);\n }\n};\nfunction noop(val) {\n return val;\n}\n\nvar options = /*#__PURE__*/Object.freeze({\n\t__proto__: null,\n\tdefaults: defaults,\n\tOptions: Options,\n\tassign: assign\n});\n\n/******************************************************************************\n\tMulti-Tokens\n\tTokens composed of arrays of TextTokens\n******************************************************************************/\n\n/**\n * @param {string} value\n * @param {Token[]} tokens\n */\nfunction MultiToken(value, tokens) {\n this.t = 'token';\n this.v = value;\n this.tk = tokens;\n}\n\n/**\n * Abstract class used for manufacturing tokens of text tokens. That is rather\n * than the value for a token being a small string of text, it's value an array\n * of text tokens.\n *\n * Used for grouping together URLs, emails, hashtags, and other potential\n * creations.\n * @class MultiToken\n * @property {string} t\n * @property {string} v\n * @property {Token[]} tk\n * @abstract\n */\nMultiToken.prototype = {\n isLink: false,\n /**\n * Return the string this token represents.\n * @return {string}\n */\n toString() {\n return this.v;\n },\n /**\n * What should the value for this token be in the `href` HTML attribute?\n * Returns the `.toString` value by default.\n * @param {string} [scheme]\n * @return {string}\n */\n toHref(scheme) {\n return this.toString();\n },\n /**\n * @param {Options} options Formatting options\n * @returns {string}\n */\n toFormattedString(options) {\n const val = this.toString();\n const truncate = options.get('truncate', val, this);\n const formatted = options.get('format', val, this);\n return truncate && formatted.length > truncate ? formatted.substring(0, truncate) + '…' : formatted;\n },\n /**\n *\n * @param {Options} options\n * @returns {string}\n */\n toFormattedHref(options) {\n return options.get('formatHref', this.toHref(options.get('defaultProtocol')), this);\n },\n /**\n * The start index of this token in the original input string\n * @returns {number}\n */\n startIndex() {\n return this.tk[0].s;\n },\n /**\n * The end index of this token in the original input string (up to this\n * index but not including it)\n * @returns {number}\n */\n endIndex() {\n return this.tk[this.tk.length - 1].e;\n },\n /**\n \tReturns an object of relevant values for this token, which includes keys\n \t* type - Kind of token ('url', 'email', etc.)\n \t* value - Original text\n \t* href - The value that should be added to the anchor tag's href\n \t\tattribute\n \t\t@method toObject\n \t@param {string} [protocol] `'http'` by default\n */\n toObject(protocol) {\n if (protocol === void 0) {\n protocol = defaults.defaultProtocol;\n }\n return {\n type: this.t,\n value: this.toString(),\n isLink: this.isLink,\n href: this.toHref(protocol),\n start: this.startIndex(),\n end: this.endIndex()\n };\n },\n /**\n *\n * @param {Options} options Formatting option\n */\n toFormattedObject(options) {\n return {\n type: this.t,\n value: this.toFormattedString(options),\n isLink: this.isLink,\n href: this.toFormattedHref(options),\n start: this.startIndex(),\n end: this.endIndex()\n };\n },\n /**\n * Whether this token should be rendered as a link according to the given options\n * @param {Options} options\n * @returns {boolean}\n */\n validate(options) {\n return options.get('validate', this.toString(), this);\n },\n /**\n * Return an object that represents how this link should be rendered.\n * @param {Options} options Formattinng options\n */\n render(options) {\n const token = this;\n const href = this.toHref(options.get('defaultProtocol'));\n const formattedHref = options.get('formatHref', href, this);\n const tagName = options.get('tagName', href, token);\n const content = this.toFormattedString(options);\n const attributes = {};\n const className = options.get('className', href, token);\n const target = options.get('target', href, token);\n const rel = options.get('rel', href, token);\n const attrs = options.getObj('attributes', href, token);\n const eventListeners = options.getObj('events', href, token);\n attributes.href = formattedHref;\n if (className) {\n attributes.class = className;\n }\n if (target) {\n attributes.target = target;\n }\n if (rel) {\n attributes.rel = rel;\n }\n if (attrs) {\n assign(attributes, attrs);\n }\n return {\n tagName,\n attributes,\n content,\n eventListeners\n };\n }\n};\n\n/**\n * Create a new token that can be emitted by the parser state machine\n * @param {string} type readable type of the token\n * @param {object} props properties to assign or override, including isLink = true or false\n * @returns {new (value: string, tokens: Token[]) => MultiToken} new token class\n */\nfunction createTokenClass(type, props) {\n class Token extends MultiToken {\n constructor(value, tokens) {\n super(value, tokens);\n this.t = type;\n }\n }\n for (const p in props) {\n Token.prototype[p] = props[p];\n }\n Token.t = type;\n return Token;\n}\n\n/**\n\tRepresents a list of tokens making up a valid email address\n*/\nconst Email = createTokenClass('email', {\n isLink: true,\n toHref() {\n return 'mailto:' + this.toString();\n }\n});\n\n/**\n\tRepresents some plain text\n*/\nconst Text = createTokenClass('text');\n\n/**\n\tMulti-linebreak token - represents a line break\n\t@class Nl\n*/\nconst Nl = createTokenClass('nl');\n\n/**\n\tRepresents a list of text tokens making up a valid URL\n\t@class Url\n*/\nconst Url = createTokenClass('url', {\n isLink: true,\n /**\n \tLowercases relevant parts of the domain and adds the protocol if\n \trequired. Note that this will not escape unsafe HTML characters in the\n \tURL.\n \t\t@param {string} [scheme] default scheme (e.g., 'https')\n \t@return {string} the full href\n */\n toHref(scheme) {\n if (scheme === void 0) {\n scheme = defaults.defaultProtocol;\n }\n // Check if already has a prefix scheme\n return this.hasProtocol() ? this.v : `${scheme}://${this.v}`;\n },\n /**\n * Check whether this URL token has a protocol\n * @return {boolean}\n */\n hasProtocol() {\n const tokens = this.tk;\n return tokens.length >= 2 && tokens[0].t !== LOCALHOST && tokens[1].t === COLON;\n }\n});\n\nvar multi = /*#__PURE__*/Object.freeze({\n\t__proto__: null,\n\tMultiToken: MultiToken,\n\tBase: MultiToken,\n\tcreateTokenClass: createTokenClass,\n\tEmail: Email,\n\tText: Text,\n\tNl: Nl,\n\tUrl: Url\n});\n\n/**\n\tNot exactly parser, more like the second-stage scanner (although we can\n\ttheoretically hotswap the code here with a real parser in the future... but\n\tfor a little URL-finding utility abstract syntax trees may be a little\n\toverkill).\n\n\tURL format: http://en.wikipedia.org/wiki/URI_scheme\n\tEmail format: http://en.wikipedia.org/wiki/EmailAddress (links to RFC in\n\treference)\n\n\t@module linkify\n\t@submodule parser\n\t@main run\n*/\nconst makeState = arg => new State(arg);\n\n/**\n * Generate the parser multi token-based state machine\n * @param {{ groups: Collections }} tokens\n */\nfunction init$1(_ref) {\n let {\n groups\n } = _ref;\n // Types of characters the URL can definitely end in\n const qsAccepting = groups.domain.concat([AMPERSAND, ASTERISK, AT, BACKSLASH, BACKTICK, CARET, DOLLAR, EQUALS, HYPHEN, NUM, PERCENT, PIPE, PLUS, POUND, SLASH, SYM, TILDE, UNDERSCORE]);\n\n // Types of tokens that can follow a URL and be part of the query string\n // but cannot be the very last characters\n // Characters that cannot appear in the URL at all should be excluded\n const qsNonAccepting = [APOSTROPHE, COLON, COMMA, DOT, EXCLAMATION, QUERY, QUOTE, SEMI, OPENANGLEBRACKET, CLOSEANGLEBRACKET, OPENBRACE, CLOSEBRACE, CLOSEBRACKET, OPENBRACKET, OPENPAREN, CLOSEPAREN, FULLWIDTHLEFTPAREN, FULLWIDTHRIGHTPAREN, LEFTCORNERBRACKET, RIGHTCORNERBRACKET, LEFTWHITECORNERBRACKET, RIGHTWHITECORNERBRACKET, FULLWIDTHLESSTHAN, FULLWIDTHGREATERTHAN];\n\n // For addresses without the mailto prefix\n // Tokens allowed in the localpart of the email\n const localpartAccepting = [AMPERSAND, APOSTROPHE, ASTERISK, BACKSLASH, BACKTICK, CARET, DOLLAR, EQUALS, HYPHEN, OPENBRACE, CLOSEBRACE, PERCENT, PIPE, PLUS, POUND, QUERY, SLASH, SYM, TILDE, UNDERSCORE];\n\n // The universal starting state.\n /**\n * @type State\n */\n const Start = makeState();\n const Localpart = tt(Start, TILDE); // Local part of the email address\n ta(Localpart, localpartAccepting, Localpart);\n ta(Localpart, groups.domain, Localpart);\n const Domain = makeState(),\n Scheme = makeState(),\n SlashScheme = makeState();\n ta(Start, groups.domain, Domain); // parsed string ends with a potential domain name (A)\n ta(Start, groups.scheme, Scheme); // e.g., 'mailto'\n ta(Start, groups.slashscheme, SlashScheme); // e.g., 'http'\n\n ta(Domain, localpartAccepting, Localpart);\n ta(Domain, groups.domain, Domain);\n const LocalpartAt = tt(Domain, AT); // Local part of the email address plus @\n\n tt(Localpart, AT, LocalpartAt); // close to an email address now\n\n // Local part of an email address can be e.g. 'http' or 'mailto'\n tt(Scheme, AT, LocalpartAt);\n tt(SlashScheme, AT, LocalpartAt);\n const LocalpartDot = tt(Localpart, DOT); // Local part of the email address plus '.' (localpart cannot end in .)\n ta(LocalpartDot, localpartAccepting, Localpart);\n ta(LocalpartDot, groups.domain, Localpart);\n const EmailDomain = makeState();\n ta(LocalpartAt, groups.domain, EmailDomain); // parsed string starts with local email info + @ with a potential domain name\n ta(EmailDomain, groups.domain, EmailDomain);\n const EmailDomainDot = tt(EmailDomain, DOT); // domain followed by DOT\n ta(EmailDomainDot, groups.domain, EmailDomain);\n const Email$1 = makeState(Email); // Possible email address (could have more tlds)\n ta(EmailDomainDot, groups.tld, Email$1);\n ta(EmailDomainDot, groups.utld, Email$1);\n tt(LocalpartAt, LOCALHOST, Email$1);\n\n // Hyphen can jump back to a domain name\n const EmailDomainHyphen = tt(EmailDomain, HYPHEN); // parsed string starts with local email info + @ with a potential domain name\n ta(EmailDomainHyphen, groups.domain, EmailDomain);\n ta(Email$1, groups.domain, EmailDomain);\n tt(Email$1, DOT, EmailDomainDot);\n tt(Email$1, HYPHEN, EmailDomainHyphen);\n\n // Final possible email states\n const EmailColon = tt(Email$1, COLON); // URL followed by colon (potential port number here)\n /*const EmailColonPort = */\n ta(EmailColon, groups.numeric, Email); // URL followed by colon and port number\n\n // Account for dots and hyphens. Hyphens are usually parts of domain names\n // (but not TLDs)\n const DomainHyphen = tt(Domain, HYPHEN); // domain followed by hyphen\n const DomainDot = tt(Domain, DOT); // domain followed by DOT\n ta(DomainHyphen, groups.domain, Domain);\n ta(DomainDot, localpartAccepting, Localpart);\n ta(DomainDot, groups.domain, Domain);\n const DomainDotTld = makeState(Url); // Simplest possible URL with no query string\n ta(DomainDot, groups.tld, DomainDotTld);\n ta(DomainDot, groups.utld, DomainDotTld);\n ta(DomainDotTld, groups.domain, Domain);\n ta(DomainDotTld, localpartAccepting, Localpart);\n tt(DomainDotTld, DOT, DomainDot);\n tt(DomainDotTld, HYPHEN, DomainHyphen);\n tt(DomainDotTld, AT, LocalpartAt);\n const DomainDotTldColon = tt(DomainDotTld, COLON); // URL followed by colon (potential port number here)\n const DomainDotTldColonPort = makeState(Url); // TLD followed by a port number\n ta(DomainDotTldColon, groups.numeric, DomainDotTldColonPort);\n\n // Long URL with optional port and maybe query string\n const Url$1 = makeState(Url);\n\n // URL with extra symbols at the end, followed by an opening bracket\n const UrlNonaccept = makeState(); // URL followed by some symbols (will not be part of the final URL)\n\n // Query strings\n ta(Url$1, qsAccepting, Url$1);\n ta(Url$1, qsNonAccepting, UrlNonaccept);\n ta(UrlNonaccept, qsAccepting, Url$1);\n ta(UrlNonaccept, qsNonAccepting, UrlNonaccept);\n\n // Become real URLs after `SLASH` or `COLON NUM SLASH`\n // Here works with or without scheme:// prefix\n tt(DomainDotTld, SLASH, Url$1);\n tt(DomainDotTldColonPort, SLASH, Url$1);\n\n // Note that domains that begin with schemes are treated slighly differently\n const SchemeColon = tt(Scheme, COLON); // e.g., 'mailto:'\n const SlashSchemeColon = tt(SlashScheme, COLON); // e.g., 'http:'\n const SlashSchemeColonSlash = tt(SlashSchemeColon, SLASH); // e.g., 'http:/'\n\n const UriPrefix = tt(SlashSchemeColonSlash, SLASH); // e.g., 'http://'\n\n // Scheme states can transition to domain states\n ta(Scheme, groups.domain, Domain);\n tt(Scheme, DOT, DomainDot);\n tt(Scheme, HYPHEN, DomainHyphen);\n ta(SlashScheme, groups.domain, Domain);\n tt(SlashScheme, DOT, DomainDot);\n tt(SlashScheme, HYPHEN, DomainHyphen);\n\n // Force URL with scheme prefix followed by anything sane\n ta(SchemeColon, groups.domain, Url$1);\n tt(SchemeColon, SLASH, Url$1);\n ta(UriPrefix, groups.domain, Url$1);\n ta(UriPrefix, qsAccepting, Url$1);\n tt(UriPrefix, SLASH, Url$1);\n const bracketPairs = [[OPENBRACE, CLOSEBRACE],\n // {}\n [OPENBRACKET, CLOSEBRACKET],\n // []\n [OPENPAREN, CLOSEPAREN],\n // ()\n [OPENANGLEBRACKET, CLOSEANGLEBRACKET],\n // <>\n [FULLWIDTHLEFTPAREN, FULLWIDTHRIGHTPAREN],\n // ()\n [LEFTCORNERBRACKET, RIGHTCORNERBRACKET],\n // 「」\n [LEFTWHITECORNERBRACKET, RIGHTWHITECORNERBRACKET],\n // 『』\n [FULLWIDTHLESSTHAN, FULLWIDTHGREATERTHAN] // <>\n ];\n\n for (let i = 0; i < bracketPairs.length; i++) {\n const [OPEN, CLOSE] = bracketPairs[i];\n const UrlOpen = tt(Url$1, OPEN); // URL followed by open bracket\n\n // Continue not accepting for open brackets\n tt(UrlNonaccept, OPEN, UrlOpen);\n\n // Closing bracket component. This character WILL be included in the URL\n tt(UrlOpen, CLOSE, Url$1);\n\n // URL that beings with an opening bracket, followed by a symbols.\n // Note that the final state can still be `UrlOpen` (if the URL has a\n // single opening bracket for some reason).\n const UrlOpenQ = makeState(Url);\n ta(UrlOpen, qsAccepting, UrlOpenQ);\n const UrlOpenSyms = makeState(); // UrlOpen followed by some symbols it cannot end it\n ta(UrlOpen, qsNonAccepting);\n\n // URL that begins with an opening bracket, followed by some symbols\n ta(UrlOpenQ, qsAccepting, UrlOpenQ);\n ta(UrlOpenQ, qsNonAccepting, UrlOpenSyms);\n ta(UrlOpenSyms, qsAccepting, UrlOpenQ);\n ta(UrlOpenSyms, qsNonAccepting, UrlOpenSyms);\n\n // Close brace/bracket to become regular URL\n tt(UrlOpenQ, CLOSE, Url$1);\n tt(UrlOpenSyms, CLOSE, Url$1);\n }\n tt(Start, LOCALHOST, DomainDotTld); // localhost is a valid URL state\n tt(Start, NL$1, Nl); // single new line\n\n return {\n start: Start,\n tokens: tk\n };\n}\n\n/**\n * Run the parser state machine on a list of scanned string-based tokens to\n * create a list of multi tokens, each of which represents a URL, email address,\n * plain text, etc.\n *\n * @param {State} start parser start state\n * @param {string} input the original input used to generate the given tokens\n * @param {Token[]} tokens list of scanned tokens\n * @returns {MultiToken[]}\n */\nfunction run(start, input, tokens) {\n let len = tokens.length;\n let cursor = 0;\n let multis = [];\n let textTokens = [];\n while (cursor < len) {\n let state = start;\n let secondState = null;\n let nextState = null;\n let multiLength = 0;\n let latestAccepting = null;\n let sinceAccepts = -1;\n while (cursor < len && !(secondState = state.go(tokens[cursor].t))) {\n // Starting tokens with nowhere to jump to.\n // Consider these to be just plain text\n textTokens.push(tokens[cursor++]);\n }\n while (cursor < len && (nextState = secondState || state.go(tokens[cursor].t))) {\n // Get the next state\n secondState = null;\n state = nextState;\n\n // Keep track of the latest accepting state\n if (state.accepts()) {\n sinceAccepts = 0;\n latestAccepting = state;\n } else if (sinceAccepts >= 0) {\n sinceAccepts++;\n }\n cursor++;\n multiLength++;\n }\n if (sinceAccepts < 0) {\n // No accepting state was found, part of a regular text token add\n // the first text token to the text tokens array and try again from\n // the next\n cursor -= multiLength;\n if (cursor < len) {\n textTokens.push(tokens[cursor]);\n cursor++;\n }\n } else {\n // Accepting state!\n // First close off the textTokens (if available)\n if (textTokens.length > 0) {\n multis.push(initMultiToken(Text, input, textTokens));\n textTokens = [];\n }\n\n // Roll back to the latest accepting state\n cursor -= sinceAccepts;\n multiLength -= sinceAccepts;\n\n // Create a new multitoken\n const Multi = latestAccepting.t;\n const subtokens = tokens.slice(cursor - multiLength, cursor);\n multis.push(initMultiToken(Multi, input, subtokens));\n }\n }\n\n // Finally close off the textTokens (if available)\n if (textTokens.length > 0) {\n multis.push(initMultiToken(Text, input, textTokens));\n }\n return multis;\n}\n\n/**\n * Utility function for instantiating a new multitoken with all the relevant\n * fields during parsing.\n * @param {new (value: string, tokens: Token[]) => MultiToken} Multi class to instantiate\n * @param {string} input original input string\n * @param {Token[]} tokens consecutive tokens scanned from input string\n * @returns {MultiToken}\n */\nfunction initMultiToken(Multi, input, tokens) {\n const startIdx = tokens[0].s;\n const endIdx = tokens[tokens.length - 1].e;\n const value = input.slice(startIdx, endIdx);\n return new Multi(value, tokens);\n}\n\nconst warn = typeof console !== 'undefined' && console && console.warn || (() => {});\nconst warnAdvice = 'until manual call of linkify.init(). Register all schemes and plugins before invoking linkify the first time.';\n\n// Side-effect initialization state\nconst INIT = {\n scanner: null,\n parser: null,\n tokenQueue: [],\n pluginQueue: [],\n customSchemes: [],\n initialized: false\n};\n\n/**\n * @typedef {{\n * \tstart: State,\n * \ttokens: { groups: Collections } & typeof tk\n * }} ScannerInit\n */\n\n/**\n * @typedef {{\n * \tstart: State,\n * \ttokens: typeof multi\n * }} ParserInit\n */\n\n/**\n * @typedef {(arg: { scanner: ScannerInit }) => void} TokenPlugin\n */\n\n/**\n * @typedef {(arg: { scanner: ScannerInit, parser: ParserInit }) => void} Plugin\n */\n\n/**\n * De-register all plugins and reset the internal state-machine. Used for\n * testing; not required in practice.\n * @private\n */\nfunction reset() {\n State.groups = {};\n INIT.scanner = null;\n INIT.parser = null;\n INIT.tokenQueue = [];\n INIT.pluginQueue = [];\n INIT.customSchemes = [];\n INIT.initialized = false;\n}\n\n/**\n * Register a token plugin to allow the scanner to recognize additional token\n * types before the parser state machine is constructed from the results.\n * @param {string} name of plugin to register\n * @param {TokenPlugin} plugin function that accepts the scanner state machine\n * and available scanner tokens and collections and extends the state machine to\n * recognize additional tokens or groups.\n */\nfunction registerTokenPlugin(name, plugin) {\n if (typeof plugin !== 'function') {\n throw new Error(`linkifyjs: Invalid token plugin ${plugin} (expects function)`);\n }\n for (let i = 0; i < INIT.tokenQueue.length; i++) {\n if (name === INIT.tokenQueue[i][0]) {\n warn(`linkifyjs: token plugin \"${name}\" already registered - will be overwritten`);\n INIT.tokenQueue[i] = [name, plugin];\n return;\n }\n }\n INIT.tokenQueue.push([name, plugin]);\n if (INIT.initialized) {\n warn(`linkifyjs: already initialized - will not register token plugin \"${name}\" ${warnAdvice}`);\n }\n}\n\n/**\n * Register a linkify plugin\n * @param {string} name of plugin to register\n * @param {Plugin} plugin function that accepts the parser state machine and\n * extends the parser to recognize additional link types\n */\nfunction registerPlugin(name, plugin) {\n if (typeof plugin !== 'function') {\n throw new Error(`linkifyjs: Invalid plugin ${plugin} (expects function)`);\n }\n for (let i = 0; i < INIT.pluginQueue.length; i++) {\n if (name === INIT.pluginQueue[i][0]) {\n warn(`linkifyjs: plugin \"${name}\" already registered - will be overwritten`);\n INIT.pluginQueue[i] = [name, plugin];\n return;\n }\n }\n INIT.pluginQueue.push([name, plugin]);\n if (INIT.initialized) {\n warn(`linkifyjs: already initialized - will not register plugin \"${name}\" ${warnAdvice}`);\n }\n}\n\n/**\n * Detect URLs with the following additional protocol. Anything with format\n * \"protocol://...\" will be considered a link. If `optionalSlashSlash` is set to\n * `true`, anything with format \"protocol:...\" will be considered a link.\n * @param {string} protocol\n * @param {boolean} [optionalSlashSlash]\n */\nfunction registerCustomProtocol(scheme, optionalSlashSlash) {\n if (optionalSlashSlash === void 0) {\n optionalSlashSlash = false;\n }\n if (INIT.initialized) {\n warn(`linkifyjs: already initialized - will not register custom scheme \"${scheme}\" ${warnAdvice}`);\n }\n if (!/^[0-9a-z]+(-[0-9a-z]+)*$/.test(scheme)) {\n throw new Error(`linkifyjs: incorrect scheme format.\n1. Must only contain digits, lowercase ASCII letters or \"-\"\n2. Cannot start or end with \"-\"\n3. \"-\" cannot repeat`);\n }\n INIT.customSchemes.push([scheme, optionalSlashSlash]);\n}\n\n/**\n * Initialize the linkify state machine. Called automatically the first time\n * linkify is called on a string, but may be called manually as well.\n */\nfunction init() {\n // Initialize scanner state machine and plugins\n INIT.scanner = init$2(INIT.customSchemes);\n for (let i = 0; i < INIT.tokenQueue.length; i++) {\n INIT.tokenQueue[i][1]({\n scanner: INIT.scanner\n });\n }\n\n // Initialize parser state machine and plugins\n INIT.parser = init$1(INIT.scanner.tokens);\n for (let i = 0; i < INIT.pluginQueue.length; i++) {\n INIT.pluginQueue[i][1]({\n scanner: INIT.scanner,\n parser: INIT.parser\n });\n }\n INIT.initialized = true;\n}\n\n/**\n * Parse a string into tokens that represent linkable and non-linkable sub-components\n * @param {string} str\n * @return {MultiToken[]} tokens\n */\nfunction tokenize(str) {\n if (!INIT.initialized) {\n init();\n }\n return run(INIT.parser.start, str, run$1(INIT.scanner.start, str));\n}\n\n/**\n * Find a list of linkable items in the given string.\n * @param {string} str string to find links in\n * @param {string | Opts} [type] either formatting options or specific type of\n * links to find, e.g., 'url' or 'email'\n * @param {Opts} [opts] formatting options for final output. Cannot be specified\n * if opts already provided in `type` argument\n */\nfunction find(str, type, opts) {\n if (type === void 0) {\n type = null;\n }\n if (opts === void 0) {\n opts = null;\n }\n if (type && typeof type === 'object') {\n if (opts) {\n throw Error(`linkifyjs: Invalid link type ${type}; must be a string`);\n }\n opts = type;\n type = null;\n }\n const options = new Options(opts);\n const tokens = tokenize(str);\n const filtered = [];\n for (let i = 0; i < tokens.length; i++) {\n const token = tokens[i];\n if (token.isLink && (!type || token.t === type) && options.check(token)) {\n filtered.push(token.toFormattedObject(options));\n }\n }\n return filtered;\n}\n\n/**\n * Is the given string valid linkable text of some sort. Note that this does not\n * trim the text for you.\n *\n * Optionally pass in a second `type` param, which is the type of link to test\n * for.\n *\n * For example,\n *\n * linkify.test(str, 'email');\n *\n * Returns `true` if str is a valid email.\n * @param {string} str string to test for links\n * @param {string} [type] optional specific link type to look for\n * @returns boolean true/false\n */\nfunction test(str, type) {\n if (type === void 0) {\n type = null;\n }\n const tokens = tokenize(str);\n return tokens.length === 1 && tokens[0].isLink && (!type || tokens[0].t === type);\n}\n\nexport { MultiToken, Options, State, createTokenClass, find, init, multi, options, regexp, registerCustomProtocol, registerPlugin, registerTokenPlugin, reset, stringToArray, test, tokenize };\n","import { combineTransactionSteps, getChangedRanges, findChildrenInRange, getMarksBetween, getAttributes, Mark, mergeAttributes, markPasteRule } from '@tiptap/core';\nimport { tokenize, find, registerCustomProtocol, reset } from 'linkifyjs';\nimport { Plugin, PluginKey } from '@tiptap/pm/state';\n\n/**\n * Check if the provided tokens form a valid link structure, which can either be a single link token\n * or a link token surrounded by parentheses or square brackets.\n *\n * This ensures that only complete and valid text is hyperlinked, preventing cases where a valid\n * top-level domain (TLD) is immediately followed by an invalid character, like a number. For\n * example, with the `find` method from Linkify, entering `example.com1` would result in\n * `example.com` being linked and the trailing `1` left as plain text. By using the `tokenize`\n * method, we can perform more comprehensive validation on the input text.\n */\nfunction isValidLinkStructure(tokens) {\n if (tokens.length === 1) {\n return tokens[0].isLink;\n }\n if (tokens.length === 3 && tokens[1].isLink) {\n return ['()', '[]'].includes(tokens[0].value + tokens[2].value);\n }\n return false;\n}\n/**\n * This plugin allows you to automatically add links to your editor.\n * @param options The plugin options\n * @returns The plugin instance\n */\nfunction autolink(options) {\n return new Plugin({\n key: new PluginKey('autolink'),\n appendTransaction: (transactions, oldState, newState) => {\n /**\n * Does the transaction change the document?\n */\n const docChanges = transactions.some(transaction => transaction.docChanged) && !oldState.doc.eq(newState.doc);\n /**\n * Prevent autolink if the transaction is not a document change or if the transaction has the meta `preventAutolink`.\n */\n const preventAutolink = transactions.some(transaction => transaction.getMeta('preventAutolink'));\n /**\n * Prevent autolink if the transaction is not a document change\n * or if the transaction has the meta `preventAutolink`.\n */\n if (!docChanges || preventAutolink) {\n return;\n }\n const { tr } = newState;\n const transform = combineTransactionSteps(oldState.doc, [...transactions]);\n const changes = getChangedRanges(transform);\n changes.forEach(({ newRange }) => {\n // Now let’s see if we can add new links.\n const nodesInChangedRanges = findChildrenInRange(newState.doc, newRange, node => node.isTextblock);\n let textBlock;\n let textBeforeWhitespace;\n if (nodesInChangedRanges.length > 1) {\n // Grab the first node within the changed ranges (ex. the first of two paragraphs when hitting enter).\n textBlock = nodesInChangedRanges[0];\n textBeforeWhitespace = newState.doc.textBetween(textBlock.pos, textBlock.pos + textBlock.node.nodeSize, undefined, ' ');\n }\n else if (nodesInChangedRanges.length\n // We want to make sure to include the block seperator argument to treat hard breaks like spaces.\n && newState.doc.textBetween(newRange.from, newRange.to, ' ', ' ').endsWith(' ')) {\n textBlock = nodesInChangedRanges[0];\n textBeforeWhitespace = newState.doc.textBetween(textBlock.pos, newRange.to, undefined, ' ');\n }\n if (textBlock && textBeforeWhitespace) {\n const wordsBeforeWhitespace = textBeforeWhitespace.split(' ').filter(s => s !== '');\n if (wordsBeforeWhitespace.length <= 0) {\n return false;\n }\n const lastWordBeforeSpace = wordsBeforeWhitespace[wordsBeforeWhitespace.length - 1];\n const lastWordAndBlockOffset = textBlock.pos + textBeforeWhitespace.lastIndexOf(lastWordBeforeSpace);\n if (!lastWordBeforeSpace) {\n return false;\n }\n const linksBeforeSpace = tokenize(lastWordBeforeSpace).map(t => t.toObject(options.defaultProtocol));\n if (!isValidLinkStructure(linksBeforeSpace)) {\n return false;\n }\n linksBeforeSpace\n .filter(link => link.isLink)\n // Calculate link position.\n .map(link => ({\n ...link,\n from: lastWordAndBlockOffset + link.start + 1,\n to: lastWordAndBlockOffset + link.end + 1,\n }))\n // ignore link inside code mark\n .filter(link => {\n if (!newState.schema.marks.code) {\n return true;\n }\n return !newState.doc.rangeHasMark(link.from, link.to, newState.schema.marks.code);\n })\n // validate link\n .filter(link => options.validate(link.value))\n // Add link mark.\n .forEach(link => {\n if (getMarksBetween(link.from, link.to, newState.doc).some(item => item.mark.type === options.type)) {\n return;\n }\n tr.addMark(link.from, link.to, options.type.create({\n href: link.href,\n }));\n });\n }\n });\n if (!tr.steps.length) {\n return;\n }\n return tr;\n },\n });\n}\n\nfunction clickHandler(options) {\n return new Plugin({\n key: new PluginKey('handleClickLink'),\n props: {\n handleClick: (view, pos, event) => {\n var _a, _b;\n if (event.button !== 0) {\n return false;\n }\n let a = event.target;\n const els = [];\n while (a.nodeName !== 'DIV') {\n els.push(a);\n a = a.parentNode;\n }\n if (!els.find(value => value.nodeName === 'A')) {\n return false;\n }\n const attrs = getAttributes(view.state, options.type.name);\n const link = event.target;\n const href = (_a = link === null || link === void 0 ? void 0 : link.href) !== null && _a !== void 0 ? _a : attrs.href;\n const target = (_b = link === null || link === void 0 ? void 0 : link.target) !== null && _b !== void 0 ? _b : attrs.target;\n if (link && href) {\n window.open(href, target);\n return true;\n }\n return false;\n },\n },\n });\n}\n\nfunction pasteHandler(options) {\n return new Plugin({\n key: new PluginKey('handlePasteLink'),\n props: {\n handlePaste: (view, event, slice) => {\n const { state } = view;\n const { selection } = state;\n const { empty } = selection;\n if (empty) {\n return false;\n }\n let textContent = '';\n slice.content.forEach(node => {\n textContent += node.textContent;\n });\n const link = find(textContent, { defaultProtocol: options.defaultProtocol }).find(item => item.isLink && item.value === textContent);\n if (!textContent || !link) {\n return false;\n }\n options.editor.commands.setMark(options.type, {\n href: link.href,\n });\n return true;\n },\n },\n });\n}\n\nconst pasteRegex = /https?:\\/\\/(?:www\\.)?[-a-zA-Z0-9@:%._+~#=]{1,256}\\.[a-zA-Z]{2,}\\b(?:[-a-zA-Z0-9@:%._+~#=?!&/]*)(?:[-a-zA-Z0-9@:%._+~#=?!&/]*)/gi;\n// From DOMPurify\n// https://github.com/cure53/DOMPurify/blob/main/src/regexp.js\nconst ATTR_WHITESPACE = /[\\u0000-\\u0020\\u00A0\\u1680\\u180E\\u2000-\\u2029\\u205F\\u3000]/g; // eslint-disable-line no-control-regex\nconst IS_ALLOWED_URI = /^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp):|[^a-z]|[a-z+.\\-]+(?:[^a-z+.\\-:]|$))/i; // eslint-disable-line no-useless-escape\nfunction isAllowedUri(uri) {\n return !uri || uri.replace(ATTR_WHITESPACE, '').match(IS_ALLOWED_URI);\n}\n/**\n * This extension allows you to create links.\n * @see https://www.tiptap.dev/api/marks/link\n */\nconst Link = Mark.create({\n name: 'link',\n priority: 1000,\n keepOnSplit: false,\n exitable: true,\n onCreate() {\n this.options.protocols.forEach(protocol => {\n if (typeof protocol === 'string') {\n registerCustomProtocol(protocol);\n return;\n }\n registerCustomProtocol(protocol.scheme, protocol.optionalSlashes);\n });\n },\n onDestroy() {\n reset();\n },\n inclusive() {\n return this.options.autolink;\n },\n addOptions() {\n return {\n openOnClick: true,\n linkOnPaste: true,\n autolink: true,\n protocols: [],\n defaultProtocol: 'http',\n HTMLAttributes: {\n target: '_blank',\n rel: 'noopener noreferrer nofollow',\n class: null,\n },\n validate: url => !!url,\n };\n },\n addAttributes() {\n return {\n href: {\n default: null,\n },\n target: {\n default: this.options.HTMLAttributes.target,\n },\n rel: {\n default: this.options.HTMLAttributes.rel,\n },\n class: {\n default: this.options.HTMLAttributes.class,\n },\n };\n },\n parseHTML() {\n return [{\n tag: 'a[href]',\n getAttrs: dom => {\n const href = dom.getAttribute('href');\n // prevent XSS attacks\n if (!href || !isAllowedUri(href)) {\n return false;\n }\n return { href };\n },\n }];\n },\n renderHTML({ HTMLAttributes }) {\n // prevent XSS attacks\n if (!isAllowedUri(HTMLAttributes.href)) {\n // strip out the href\n return ['a', mergeAttributes(this.options.HTMLAttributes, { ...HTMLAttributes, href: '' }), 0];\n }\n return ['a', mergeAttributes(this.options.HTMLAttributes, HTMLAttributes), 0];\n },\n addCommands() {\n return {\n setLink: attributes => ({ chain }) => {\n return chain().setMark(this.name, attributes).setMeta('preventAutolink', true).run();\n },\n toggleLink: attributes => ({ chain }) => {\n return chain()\n .toggleMark(this.name, attributes, { extendEmptyMarkRange: true })\n .setMeta('preventAutolink', true)\n .run();\n },\n unsetLink: () => ({ chain }) => {\n return chain()\n .unsetMark(this.name, { extendEmptyMarkRange: true })\n .setMeta('preventAutolink', true)\n .run();\n },\n };\n },\n addPasteRules() {\n return [\n markPasteRule({\n find: text => {\n const foundLinks = [];\n if (text) {\n const { validate } = this.options;\n const links = find(text).filter(item => item.isLink && validate(item.value));\n if (links.length) {\n links.forEach(link => (foundLinks.push({\n text: link.value,\n data: {\n href: link.href,\n },\n index: link.start,\n })));\n }\n }\n return foundLinks;\n },\n type: this.type,\n getAttributes: match => {\n var _a;\n return {\n href: (_a = match.data) === null || _a === void 0 ? void 0 : _a.href,\n };\n },\n }),\n ];\n },\n addProseMirrorPlugins() {\n const plugins = [];\n if (this.options.autolink) {\n plugins.push(autolink({\n type: this.type,\n defaultProtocol: this.options.defaultProtocol,\n validate: this.options.validate,\n }));\n }\n if (this.options.openOnClick) {\n plugins.push(clickHandler({\n type: this.type,\n }));\n }\n if (this.options.linkOnPaste) {\n plugins.push(pasteHandler({\n editor: this.editor,\n defaultProtocol: this.options.defaultProtocol,\n type: this.type,\n }));\n }\n return plugins;\n },\n});\n\nexport { Link, Link as default, pasteRegex };\n//# sourceMappingURL=index.js.map\n","import { Extension, textInputRule } from '@tiptap/core';\n\nconst emDash = (override) => textInputRule({\n find: /--$/,\n replace: override !== null && override !== void 0 ? override : '—',\n});\nconst ellipsis = (override) => textInputRule({\n find: /\\.\\.\\.$/,\n replace: override !== null && override !== void 0 ? override : '…',\n});\nconst openDoubleQuote = (override) => textInputRule({\n find: /(?:^|[\\s{[(<'\"\\u2018\\u201C])(\")$/,\n replace: override !== null && override !== void 0 ? override : '“',\n});\nconst closeDoubleQuote = (override) => textInputRule({\n find: /\"$/,\n replace: override !== null && override !== void 0 ? override : '”',\n});\nconst openSingleQuote = (override) => textInputRule({\n find: /(?:^|[\\s{[(<'\"\\u2018\\u201C])(')$/,\n replace: override !== null && override !== void 0 ? override : '‘',\n});\nconst closeSingleQuote = (override) => textInputRule({\n find: /'$/,\n replace: override !== null && override !== void 0 ? override : '’',\n});\nconst leftArrow = (override) => textInputRule({\n find: /<-$/,\n replace: override !== null && override !== void 0 ? override : '←',\n});\nconst rightArrow = (override) => textInputRule({\n find: /->$/,\n replace: override !== null && override !== void 0 ? override : '→',\n});\nconst copyright = (override) => textInputRule({\n find: /\\(c\\)$/,\n replace: override !== null && override !== void 0 ? override : '©',\n});\nconst trademark = (override) => textInputRule({\n find: /\\(tm\\)$/,\n replace: override !== null && override !== void 0 ? override : '™',\n});\nconst servicemark = (override) => textInputRule({\n find: /\\(sm\\)$/,\n replace: override !== null && override !== void 0 ? override : '℠',\n});\nconst registeredTrademark = (override) => textInputRule({\n find: /\\(r\\)$/,\n replace: override !== null && override !== void 0 ? override : '®',\n});\nconst oneHalf = (override) => textInputRule({\n find: /(?:^|\\s)(1\\/2)\\s$/,\n replace: override !== null && override !== void 0 ? override : '½',\n});\nconst plusMinus = (override) => textInputRule({\n find: /\\+\\/-$/,\n replace: override !== null && override !== void 0 ? override : '±',\n});\nconst notEqual = (override) => textInputRule({\n find: /!=$/,\n replace: override !== null && override !== void 0 ? override : '≠',\n});\nconst laquo = (override) => textInputRule({\n find: /<<$/,\n replace: override !== null && override !== void 0 ? override : '«',\n});\nconst raquo = (override) => textInputRule({\n find: />>$/,\n replace: override !== null && override !== void 0 ? override : '»',\n});\nconst multiplication = (override) => textInputRule({\n find: /\\d+\\s?([*x])\\s?\\d+$/,\n replace: override !== null && override !== void 0 ? override : '×',\n});\nconst superscriptTwo = (override) => textInputRule({\n find: /\\^2$/,\n replace: override !== null && override !== void 0 ? override : '²',\n});\nconst superscriptThree = (override) => textInputRule({\n find: /\\^3$/,\n replace: override !== null && override !== void 0 ? override : '³',\n});\nconst oneQuarter = (override) => textInputRule({\n find: /(?:^|\\s)(1\\/4)\\s$/,\n replace: override !== null && override !== void 0 ? override : '¼',\n});\nconst threeQuarters = (override) => textInputRule({\n find: /(?:^|\\s)(3\\/4)\\s$/,\n replace: override !== null && override !== void 0 ? override : '¾',\n});\n/**\n * This extension allows you to add typography replacements for specific characters.\n * @see https://www.tiptap.dev/api/extensions/typography\n */\nconst Typography = Extension.create({\n name: 'typography',\n addOptions() {\n return {\n closeDoubleQuote: '”',\n closeSingleQuote: '’',\n copyright: '©',\n ellipsis: '…',\n emDash: '—',\n laquo: '«',\n leftArrow: '←',\n multiplication: '×',\n notEqual: '≠',\n oneHalf: '½',\n oneQuarter: '¼',\n openDoubleQuote: '“',\n openSingleQuote: '‘',\n plusMinus: '±',\n raquo: '»',\n registeredTrademark: '®',\n rightArrow: '→',\n servicemark: '℠',\n superscriptThree: '³',\n superscriptTwo: '²',\n threeQuarters: '¾',\n trademark: '™',\n };\n },\n addInputRules() {\n const rules = [];\n if (this.options.emDash !== false) {\n rules.push(emDash(this.options.emDash));\n }\n if (this.options.ellipsis !== false) {\n rules.push(ellipsis(this.options.ellipsis));\n }\n if (this.options.openDoubleQuote !== false) {\n rules.push(openDoubleQuote(this.options.openDoubleQuote));\n }\n if (this.options.closeDoubleQuote !== false) {\n rules.push(closeDoubleQuote(this.options.closeDoubleQuote));\n }\n if (this.options.openSingleQuote !== false) {\n rules.push(openSingleQuote(this.options.openSingleQuote));\n }\n if (this.options.closeSingleQuote !== false) {\n rules.push(closeSingleQuote(this.options.closeSingleQuote));\n }\n if (this.options.leftArrow !== false) {\n rules.push(leftArrow(this.options.leftArrow));\n }\n if (this.options.rightArrow !== false) {\n rules.push(rightArrow(this.options.rightArrow));\n }\n if (this.options.copyright !== false) {\n rules.push(copyright(this.options.copyright));\n }\n if (this.options.trademark !== false) {\n rules.push(trademark(this.options.trademark));\n }\n if (this.options.servicemark !== false) {\n rules.push(servicemark(this.options.servicemark));\n }\n if (this.options.registeredTrademark !== false) {\n rules.push(registeredTrademark(this.options.registeredTrademark));\n }\n if (this.options.oneHalf !== false) {\n rules.push(oneHalf(this.options.oneHalf));\n }\n if (this.options.plusMinus !== false) {\n rules.push(plusMinus(this.options.plusMinus));\n }\n if (this.options.notEqual !== false) {\n rules.push(notEqual(this.options.notEqual));\n }\n if (this.options.laquo !== false) {\n rules.push(laquo(this.options.laquo));\n }\n if (this.options.raquo !== false) {\n rules.push(raquo(this.options.raquo));\n }\n if (this.options.multiplication !== false) {\n rules.push(multiplication(this.options.multiplication));\n }\n if (this.options.superscriptTwo !== false) {\n rules.push(superscriptTwo(this.options.superscriptTwo));\n }\n if (this.options.superscriptThree !== false) {\n rules.push(superscriptThree(this.options.superscriptThree));\n }\n if (this.options.oneQuarter !== false) {\n rules.push(oneQuarter(this.options.oneQuarter));\n }\n if (this.options.threeQuarters !== false) {\n rules.push(threeQuarters(this.options.threeQuarters));\n }\n return rules;\n },\n});\n\nexport { Typography, closeDoubleQuote, closeSingleQuote, copyright, Typography as default, ellipsis, emDash, laquo, leftArrow, multiplication, notEqual, oneHalf, oneQuarter, openDoubleQuote, openSingleQuote, plusMinus, raquo, registeredTrademark, rightArrow, servicemark, superscriptThree, superscriptTwo, threeQuarters, trademark };\n//# sourceMappingURL=index.js.map\n","import { Mark, mergeAttributes } from '@tiptap/core';\n\n/**\n * This extension allows you to create underline text.\n * @see https://www.tiptap.dev/api/marks/underline\n */\nconst Underline = Mark.create({\n name: 'underline',\n addOptions() {\n return {\n HTMLAttributes: {},\n };\n },\n parseHTML() {\n return [\n {\n tag: 'u',\n },\n {\n style: 'text-decoration',\n consuming: false,\n getAttrs: style => (style.includes('underline') ? {} : false),\n },\n ];\n },\n renderHTML({ HTMLAttributes }) {\n return ['u', mergeAttributes(this.options.HTMLAttributes, HTMLAttributes), 0];\n },\n addCommands() {\n return {\n setUnderline: () => ({ commands }) => {\n return commands.setMark(this.name);\n },\n toggleUnderline: () => ({ commands }) => {\n return commands.toggleMark(this.name);\n },\n unsetUnderline: () => ({ commands }) => {\n return commands.unsetMark(this.name);\n },\n };\n },\n addKeyboardShortcuts() {\n return {\n 'Mod-u': () => this.editor.commands.toggleUnderline(),\n 'Mod-U': () => this.editor.commands.toggleUnderline(),\n };\n },\n});\n\nexport { Underline, Underline as default };\n//# sourceMappingURL=index.js.map\n","import { Node, mergeAttributes, wrappingInputRule } from '@tiptap/core';\n\n/**\n * Matches a blockquote to a `>` as input.\n */\nconst inputRegex = /^\\s*>\\s$/;\n/**\n * This extension allows you to create blockquotes.\n * @see https://tiptap.dev/api/nodes/blockquote\n */\nconst Blockquote = Node.create({\n name: 'blockquote',\n addOptions() {\n return {\n HTMLAttributes: {},\n };\n },\n content: 'block+',\n group: 'block',\n defining: true,\n parseHTML() {\n return [\n { tag: 'blockquote' },\n ];\n },\n renderHTML({ HTMLAttributes }) {\n return ['blockquote', mergeAttributes(this.options.HTMLAttributes, HTMLAttributes), 0];\n },\n addCommands() {\n return {\n setBlockquote: () => ({ commands }) => {\n return commands.wrapIn(this.name);\n },\n toggleBlockquote: () => ({ commands }) => {\n return commands.toggleWrap(this.name);\n },\n unsetBlockquote: () => ({ commands }) => {\n return commands.lift(this.name);\n },\n };\n },\n addKeyboardShortcuts() {\n return {\n 'Mod-Shift-b': () => this.editor.commands.toggleBlockquote(),\n };\n },\n addInputRules() {\n return [\n wrappingInputRule({\n find: inputRegex,\n type: this.type,\n }),\n ];\n },\n});\n\nexport { Blockquote, Blockquote as default, inputRegex };\n//# sourceMappingURL=index.js.map\n","import { Mark, mergeAttributes, markInputRule, markPasteRule } from '@tiptap/core';\n\n/**\n * Matches bold text via `**` as input.\n */\nconst starInputRegex = /(?:^|\\s)(\\*\\*(?!\\s+\\*\\*)((?:[^*]+))\\*\\*(?!\\s+\\*\\*))$/;\n/**\n * Matches bold text via `**` while pasting.\n */\nconst starPasteRegex = /(?:^|\\s)(\\*\\*(?!\\s+\\*\\*)((?:[^*]+))\\*\\*(?!\\s+\\*\\*))/g;\n/**\n * Matches bold text via `__` as input.\n */\nconst underscoreInputRegex = /(?:^|\\s)(__(?!\\s+__)((?:[^_]+))__(?!\\s+__))$/;\n/**\n * Matches bold text via `__` while pasting.\n */\nconst underscorePasteRegex = /(?:^|\\s)(__(?!\\s+__)((?:[^_]+))__(?!\\s+__))/g;\n/**\n * This extension allows you to mark text as bold.\n * @see https://tiptap.dev/api/marks/bold\n */\nconst Bold = Mark.create({\n name: 'bold',\n addOptions() {\n return {\n HTMLAttributes: {},\n };\n },\n parseHTML() {\n return [\n {\n tag: 'strong',\n },\n {\n tag: 'b',\n getAttrs: node => node.style.fontWeight !== 'normal' && null,\n },\n {\n style: 'font-weight',\n getAttrs: value => /^(bold(er)?|[5-9]\\d{2,})$/.test(value) && null,\n },\n ];\n },\n renderHTML({ HTMLAttributes }) {\n return ['strong', mergeAttributes(this.options.HTMLAttributes, HTMLAttributes), 0];\n },\n addCommands() {\n return {\n setBold: () => ({ commands }) => {\n return commands.setMark(this.name);\n },\n toggleBold: () => ({ commands }) => {\n return commands.toggleMark(this.name);\n },\n unsetBold: () => ({ commands }) => {\n return commands.unsetMark(this.name);\n },\n };\n },\n addKeyboardShortcuts() {\n return {\n 'Mod-b': () => this.editor.commands.toggleBold(),\n 'Mod-B': () => this.editor.commands.toggleBold(),\n };\n },\n addInputRules() {\n return [\n markInputRule({\n find: starInputRegex,\n type: this.type,\n }),\n markInputRule({\n find: underscoreInputRegex,\n type: this.type,\n }),\n ];\n },\n addPasteRules() {\n return [\n markPasteRule({\n find: starPasteRegex,\n type: this.type,\n }),\n markPasteRule({\n find: underscorePasteRegex,\n type: this.type,\n }),\n ];\n },\n});\n\nexport { Bold, Bold as default, starInputRegex, starPasteRegex, underscoreInputRegex, underscorePasteRegex };\n//# sourceMappingURL=index.js.map\n","import { Node, mergeAttributes, Mark, getMarkAttributes, wrappingInputRule } from '@tiptap/core';\n\n/**\n * This extension allows you to create list items.\n * @see https://www.tiptap.dev/api/nodes/list-item\n */\nconst ListItem = Node.create({\n name: 'listItem',\n addOptions() {\n return {\n HTMLAttributes: {},\n bulletListTypeName: 'bulletList',\n orderedListTypeName: 'orderedList',\n };\n },\n content: 'paragraph block*',\n defining: true,\n parseHTML() {\n return [\n {\n tag: 'li',\n },\n ];\n },\n renderHTML({ HTMLAttributes }) {\n return ['li', mergeAttributes(this.options.HTMLAttributes, HTMLAttributes), 0];\n },\n addKeyboardShortcuts() {\n return {\n Enter: () => this.editor.commands.splitListItem(this.name),\n Tab: () => this.editor.commands.sinkListItem(this.name),\n 'Shift-Tab': () => this.editor.commands.liftListItem(this.name),\n };\n },\n});\n\n/**\n * This extension allows you to create text styles. It is required by default\n * for the `textColor` and `backgroundColor` extensions.\n * @see https://www.tiptap.dev/api/marks/text-style\n */\nconst TextStyle = Mark.create({\n name: 'textStyle',\n addOptions() {\n return {\n HTMLAttributes: {},\n };\n },\n parseHTML() {\n return [\n {\n tag: 'span',\n getAttrs: element => {\n const hasStyles = element.hasAttribute('style');\n if (!hasStyles) {\n return false;\n }\n return {};\n },\n },\n ];\n },\n renderHTML({ HTMLAttributes }) {\n return ['span', mergeAttributes(this.options.HTMLAttributes, HTMLAttributes), 0];\n },\n addCommands() {\n return {\n removeEmptyTextStyle: () => ({ state, commands }) => {\n const attributes = getMarkAttributes(state, this.type);\n const hasStyles = Object.entries(attributes).some(([, value]) => !!value);\n if (hasStyles) {\n return true;\n }\n return commands.unsetMark(this.name);\n },\n };\n },\n});\n\n/**\n * Matches a bullet list to a dash or asterisk.\n */\nconst inputRegex = /^\\s*([-+*])\\s$/;\n/**\n * This extension allows you to create bullet lists.\n * This requires the ListItem extension\n * @see https://tiptap.dev/api/nodes/bullet-list\n * @see https://tiptap.dev/api/nodes/list-item.\n */\nconst BulletList = Node.create({\n name: 'bulletList',\n addOptions() {\n return {\n itemTypeName: 'listItem',\n HTMLAttributes: {},\n keepMarks: false,\n keepAttributes: false,\n };\n },\n group: 'block list',\n content() {\n return `${this.options.itemTypeName}+`;\n },\n parseHTML() {\n return [\n { tag: 'ul' },\n ];\n },\n renderHTML({ HTMLAttributes }) {\n return ['ul', mergeAttributes(this.options.HTMLAttributes, HTMLAttributes), 0];\n },\n addCommands() {\n return {\n toggleBulletList: () => ({ commands, chain }) => {\n if (this.options.keepAttributes) {\n return chain().toggleList(this.name, this.options.itemTypeName, this.options.keepMarks).updateAttributes(ListItem.name, this.editor.getAttributes(TextStyle.name)).run();\n }\n return commands.toggleList(this.name, this.options.itemTypeName, this.options.keepMarks);\n },\n };\n },\n addKeyboardShortcuts() {\n return {\n 'Mod-Shift-8': () => this.editor.commands.toggleBulletList(),\n };\n },\n addInputRules() {\n let inputRule = wrappingInputRule({\n find: inputRegex,\n type: this.type,\n });\n if (this.options.keepMarks || this.options.keepAttributes) {\n inputRule = wrappingInputRule({\n find: inputRegex,\n type: this.type,\n keepMarks: this.options.keepMarks,\n keepAttributes: this.options.keepAttributes,\n getAttributes: () => { return this.editor.getAttributes(TextStyle.name); },\n editor: this.editor,\n });\n }\n return [\n inputRule,\n ];\n },\n});\n\nexport { BulletList, BulletList as default, inputRegex };\n//# sourceMappingURL=index.js.map\n","import { Mark, mergeAttributes, markInputRule, markPasteRule } from '@tiptap/core';\n\n/**\n * Matches inline code.\n */\nconst inputRegex = /(?:^|\\s)(`(?!\\s+`)((?:[^`]+))`(?!\\s+`))$/;\n/**\n * Matches inline code while pasting.\n */\nconst pasteRegex = /(?:^|\\s)(`(?!\\s+`)((?:[^`]+))`(?!\\s+`))/g;\n/**\n * This extension allows you to mark text as inline code.\n * @see https://tiptap.dev/api/marks/code\n */\nconst Code = Mark.create({\n name: 'code',\n addOptions() {\n return {\n HTMLAttributes: {},\n };\n },\n excludes: '_',\n code: true,\n exitable: true,\n parseHTML() {\n return [\n { tag: 'code' },\n ];\n },\n renderHTML({ HTMLAttributes }) {\n return ['code', mergeAttributes(this.options.HTMLAttributes, HTMLAttributes), 0];\n },\n addCommands() {\n return {\n setCode: () => ({ commands }) => {\n return commands.setMark(this.name);\n },\n toggleCode: () => ({ commands }) => {\n return commands.toggleMark(this.name);\n },\n unsetCode: () => ({ commands }) => {\n return commands.unsetMark(this.name);\n },\n };\n },\n addKeyboardShortcuts() {\n return {\n 'Mod-e': () => this.editor.commands.toggleCode(),\n };\n },\n addInputRules() {\n return [\n markInputRule({\n find: inputRegex,\n type: this.type,\n }),\n ];\n },\n addPasteRules() {\n return [\n markPasteRule({\n find: pasteRegex,\n type: this.type,\n }),\n ];\n },\n});\n\nexport { Code, Code as default, inputRegex, pasteRegex };\n//# sourceMappingURL=index.js.map\n","import { Node, mergeAttributes, textblockTypeInputRule } from '@tiptap/core';\nimport { Plugin, PluginKey, TextSelection } from '@tiptap/pm/state';\n\n/**\n * Matches a code block with backticks.\n */\nconst backtickInputRegex = /^```([a-z]+)?[\\s\\n]$/;\n/**\n * Matches a code block with tildes.\n */\nconst tildeInputRegex = /^~~~([a-z]+)?[\\s\\n]$/;\n/**\n * This extension allows you to create code blocks.\n * @see https://tiptap.dev/api/nodes/code-block\n */\nconst CodeBlock = Node.create({\n name: 'codeBlock',\n addOptions() {\n return {\n languageClassPrefix: 'language-',\n exitOnTripleEnter: true,\n exitOnArrowDown: true,\n HTMLAttributes: {},\n };\n },\n content: 'text*',\n marks: '',\n group: 'block',\n code: true,\n defining: true,\n addAttributes() {\n return {\n language: {\n default: null,\n parseHTML: element => {\n var _a;\n const { languageClassPrefix } = this.options;\n const classNames = [...(((_a = element.firstElementChild) === null || _a === void 0 ? void 0 : _a.classList) || [])];\n const languages = classNames\n .filter(className => className.startsWith(languageClassPrefix))\n .map(className => className.replace(languageClassPrefix, ''));\n const language = languages[0];\n if (!language) {\n return null;\n }\n return language;\n },\n rendered: false,\n },\n };\n },\n parseHTML() {\n return [\n {\n tag: 'pre',\n preserveWhitespace: 'full',\n },\n ];\n },\n renderHTML({ node, HTMLAttributes }) {\n return [\n 'pre',\n mergeAttributes(this.options.HTMLAttributes, HTMLAttributes),\n [\n 'code',\n {\n class: node.attrs.language\n ? this.options.languageClassPrefix + node.attrs.language\n : null,\n },\n 0,\n ],\n ];\n },\n addCommands() {\n return {\n setCodeBlock: attributes => ({ commands }) => {\n return commands.setNode(this.name, attributes);\n },\n toggleCodeBlock: attributes => ({ commands }) => {\n return commands.toggleNode(this.name, 'paragraph', attributes);\n },\n };\n },\n addKeyboardShortcuts() {\n return {\n 'Mod-Alt-c': () => this.editor.commands.toggleCodeBlock(),\n // remove code block when at start of document or code block is empty\n Backspace: () => {\n const { empty, $anchor } = this.editor.state.selection;\n const isAtStart = $anchor.pos === 1;\n if (!empty || $anchor.parent.type.name !== this.name) {\n return false;\n }\n if (isAtStart || !$anchor.parent.textContent.length) {\n return this.editor.commands.clearNodes();\n }\n return false;\n },\n // exit node on triple enter\n Enter: ({ editor }) => {\n if (!this.options.exitOnTripleEnter) {\n return false;\n }\n const { state } = editor;\n const { selection } = state;\n const { $from, empty } = selection;\n if (!empty || $from.parent.type !== this.type) {\n return false;\n }\n const isAtEnd = $from.parentOffset === $from.parent.nodeSize - 2;\n const endsWithDoubleNewline = $from.parent.textContent.endsWith('\\n\\n');\n if (!isAtEnd || !endsWithDoubleNewline) {\n return false;\n }\n return editor\n .chain()\n .command(({ tr }) => {\n tr.delete($from.pos - 2, $from.pos);\n return true;\n })\n .exitCode()\n .run();\n },\n // exit node on arrow down\n ArrowDown: ({ editor }) => {\n if (!this.options.exitOnArrowDown) {\n return false;\n }\n const { state } = editor;\n const { selection, doc } = state;\n const { $from, empty } = selection;\n if (!empty || $from.parent.type !== this.type) {\n return false;\n }\n const isAtEnd = $from.parentOffset === $from.parent.nodeSize - 2;\n if (!isAtEnd) {\n return false;\n }\n const after = $from.after();\n if (after === undefined) {\n return false;\n }\n const nodeAfter = doc.nodeAt(after);\n if (nodeAfter) {\n return false;\n }\n return editor.commands.exitCode();\n },\n };\n },\n addInputRules() {\n return [\n textblockTypeInputRule({\n find: backtickInputRegex,\n type: this.type,\n getAttributes: match => ({\n language: match[1],\n }),\n }),\n textblockTypeInputRule({\n find: tildeInputRegex,\n type: this.type,\n getAttributes: match => ({\n language: match[1],\n }),\n }),\n ];\n },\n addProseMirrorPlugins() {\n return [\n // this plugin creates a code block for pasted content from VS Code\n // we can also detect the copied code language\n new Plugin({\n key: new PluginKey('codeBlockVSCodeHandler'),\n props: {\n handlePaste: (view, event) => {\n if (!event.clipboardData) {\n return false;\n }\n // don’t create a new code block within code blocks\n if (this.editor.isActive(this.type.name)) {\n return false;\n }\n const text = event.clipboardData.getData('text/plain');\n const vscode = event.clipboardData.getData('vscode-editor-data');\n const vscodeData = vscode ? JSON.parse(vscode) : undefined;\n const language = vscodeData === null || vscodeData === void 0 ? void 0 : vscodeData.mode;\n if (!text || !language) {\n return false;\n }\n const { tr, schema } = view.state;\n // prepare a text node\n // strip carriage return chars from text pasted as code\n // see: https://github.com/ProseMirror/prosemirror-view/commit/a50a6bcceb4ce52ac8fcc6162488d8875613aacd\n const textNode = schema.text(text.replace(/\\r\\n?/g, '\\n'));\n // create a code block with the text node\n // replace selection with the code block\n tr.replaceSelectionWith(this.type.create({ language }, textNode));\n if (tr.selection.$from.parent.type !== this.type) {\n // put cursor inside the newly created code block\n tr.setSelection(TextSelection.near(tr.doc.resolve(Math.max(0, tr.selection.from - 2))));\n }\n // store meta information\n // this is useful for other plugins that depends on the paste event\n // like the paste rule plugin\n tr.setMeta('paste', true);\n view.dispatch(tr);\n return true;\n },\n },\n }),\n ];\n },\n});\n\nexport { CodeBlock, backtickInputRegex, CodeBlock as default, tildeInputRegex };\n//# sourceMappingURL=index.js.map\n","import { Node } from '@tiptap/core';\n\n/**\n * The default document node which represents the top level node of the editor.\n * @see https://tiptap.dev/api/nodes/document\n */\nconst Document = Node.create({\n name: 'doc',\n topNode: true,\n content: 'block+',\n});\n\nexport { Document, Document as default };\n//# sourceMappingURL=index.js.map\n","import { Plugin } from 'prosemirror-state';\nimport { dropPoint } from 'prosemirror-transform';\n\n/**\nCreate a plugin that, when added to a ProseMirror instance,\ncauses a decoration to show up at the drop position when something\nis dragged over the editor.\n\nNodes may add a `disableDropCursor` property to their spec to\ncontrol the showing of a drop cursor inside them. This may be a\nboolean or a function, which will be called with a view and a\nposition, and should return a boolean.\n*/\nfunction dropCursor(options = {}) {\n return new Plugin({\n view(editorView) { return new DropCursorView(editorView, options); }\n });\n}\nclass DropCursorView {\n constructor(editorView, options) {\n var _a;\n this.editorView = editorView;\n this.cursorPos = null;\n this.element = null;\n this.timeout = -1;\n this.width = (_a = options.width) !== null && _a !== void 0 ? _a : 1;\n this.color = options.color === false ? undefined : (options.color || \"black\");\n this.class = options.class;\n this.handlers = [\"dragover\", \"dragend\", \"drop\", \"dragleave\"].map(name => {\n let handler = (e) => { this[name](e); };\n editorView.dom.addEventListener(name, handler);\n return { name, handler };\n });\n }\n destroy() {\n this.handlers.forEach(({ name, handler }) => this.editorView.dom.removeEventListener(name, handler));\n }\n update(editorView, prevState) {\n if (this.cursorPos != null && prevState.doc != editorView.state.doc) {\n if (this.cursorPos > editorView.state.doc.content.size)\n this.setCursor(null);\n else\n this.updateOverlay();\n }\n }\n setCursor(pos) {\n if (pos == this.cursorPos)\n return;\n this.cursorPos = pos;\n if (pos == null) {\n this.element.parentNode.removeChild(this.element);\n this.element = null;\n }\n else {\n this.updateOverlay();\n }\n }\n updateOverlay() {\n let $pos = this.editorView.state.doc.resolve(this.cursorPos);\n let isBlock = !$pos.parent.inlineContent, rect;\n if (isBlock) {\n let before = $pos.nodeBefore, after = $pos.nodeAfter;\n if (before || after) {\n let node = this.editorView.nodeDOM(this.cursorPos - (before ? before.nodeSize : 0));\n if (node) {\n let nodeRect = node.getBoundingClientRect();\n let top = before ? nodeRect.bottom : nodeRect.top;\n if (before && after)\n top = (top + this.editorView.nodeDOM(this.cursorPos).getBoundingClientRect().top) / 2;\n rect = { left: nodeRect.left, right: nodeRect.right, top: top - this.width / 2, bottom: top + this.width / 2 };\n }\n }\n }\n if (!rect) {\n let coords = this.editorView.coordsAtPos(this.cursorPos);\n rect = { left: coords.left - this.width / 2, right: coords.left + this.width / 2, top: coords.top, bottom: coords.bottom };\n }\n let parent = this.editorView.dom.offsetParent;\n if (!this.element) {\n this.element = parent.appendChild(document.createElement(\"div\"));\n if (this.class)\n this.element.className = this.class;\n this.element.style.cssText = \"position: absolute; z-index: 50; pointer-events: none;\";\n if (this.color) {\n this.element.style.backgroundColor = this.color;\n }\n }\n this.element.classList.toggle(\"prosemirror-dropcursor-block\", isBlock);\n this.element.classList.toggle(\"prosemirror-dropcursor-inline\", !isBlock);\n let parentLeft, parentTop;\n if (!parent || parent == document.body && getComputedStyle(parent).position == \"static\") {\n parentLeft = -pageXOffset;\n parentTop = -pageYOffset;\n }\n else {\n let rect = parent.getBoundingClientRect();\n parentLeft = rect.left - parent.scrollLeft;\n parentTop = rect.top - parent.scrollTop;\n }\n this.element.style.left = (rect.left - parentLeft) + \"px\";\n this.element.style.top = (rect.top - parentTop) + \"px\";\n this.element.style.width = (rect.right - rect.left) + \"px\";\n this.element.style.height = (rect.bottom - rect.top) + \"px\";\n }\n scheduleRemoval(timeout) {\n clearTimeout(this.timeout);\n this.timeout = setTimeout(() => this.setCursor(null), timeout);\n }\n dragover(event) {\n if (!this.editorView.editable)\n return;\n let pos = this.editorView.posAtCoords({ left: event.clientX, top: event.clientY });\n let node = pos && pos.inside >= 0 && this.editorView.state.doc.nodeAt(pos.inside);\n let disableDropCursor = node && node.type.spec.disableDropCursor;\n let disabled = typeof disableDropCursor == \"function\" ? disableDropCursor(this.editorView, pos, event) : disableDropCursor;\n if (pos && !disabled) {\n let target = pos.pos;\n if (this.editorView.dragging && this.editorView.dragging.slice) {\n let point = dropPoint(this.editorView.state.doc, target, this.editorView.dragging.slice);\n if (point != null)\n target = point;\n }\n this.setCursor(target);\n this.scheduleRemoval(5000);\n }\n }\n dragend() {\n this.scheduleRemoval(20);\n }\n drop() {\n this.scheduleRemoval(20);\n }\n dragleave(event) {\n if (event.target == this.editorView.dom || !this.editorView.dom.contains(event.relatedTarget))\n this.setCursor(null);\n }\n}\n\nexport { dropCursor };\n","import { Extension } from '@tiptap/core';\nimport { dropCursor } from '@tiptap/pm/dropcursor';\n\n/**\n * This extension allows you to add a drop cursor to your editor.\n * A drop cursor is a line that appears when you drag and drop content\n * inbetween nodes.\n * @see https://tiptap.dev/api/extensions/dropcursor\n */\nconst Dropcursor = Extension.create({\n name: 'dropCursor',\n addOptions() {\n return {\n color: 'currentColor',\n width: 1,\n class: undefined,\n };\n },\n addProseMirrorPlugins() {\n return [\n dropCursor(this.options),\n ];\n },\n});\n\nexport { Dropcursor, Dropcursor as default };\n//# sourceMappingURL=index.js.map\n","import { TextSelection, NodeSelection, AllSelection, Selection } from 'prosemirror-state';\nimport { DOMSerializer, Fragment, Mark, Slice, DOMParser } from 'prosemirror-model';\nimport { dropPoint } from 'prosemirror-transform';\n\nconst domIndex = function (node) {\n for (var index = 0;; index++) {\n node = node.previousSibling;\n if (!node)\n return index;\n }\n};\nconst parentNode = function (node) {\n let parent = node.assignedSlot || node.parentNode;\n return parent && parent.nodeType == 11 ? parent.host : parent;\n};\nlet reusedRange = null;\n// Note that this will always return the same range, because DOM range\n// objects are every expensive, and keep slowing down subsequent DOM\n// updates, for some reason.\nconst textRange = function (node, from, to) {\n let range = reusedRange || (reusedRange = document.createRange());\n range.setEnd(node, to == null ? node.nodeValue.length : to);\n range.setStart(node, from || 0);\n return range;\n};\nconst clearReusedRange = function () {\n reusedRange = null;\n};\n// Scans forward and backward through DOM positions equivalent to the\n// given one to see if the two are in the same place (i.e. after a\n// text node vs at the end of that text node)\nconst isEquivalentPosition = function (node, off, targetNode, targetOff) {\n return targetNode && (scanFor(node, off, targetNode, targetOff, -1) ||\n scanFor(node, off, targetNode, targetOff, 1));\n};\nconst atomElements = /^(img|br|input|textarea|hr)$/i;\nfunction scanFor(node, off, targetNode, targetOff, dir) {\n for (;;) {\n if (node == targetNode && off == targetOff)\n return true;\n if (off == (dir < 0 ? 0 : nodeSize(node))) {\n let parent = node.parentNode;\n if (!parent || parent.nodeType != 1 || hasBlockDesc(node) || atomElements.test(node.nodeName) ||\n node.contentEditable == \"false\")\n return false;\n off = domIndex(node) + (dir < 0 ? 0 : 1);\n node = parent;\n }\n else if (node.nodeType == 1) {\n node = node.childNodes[off + (dir < 0 ? -1 : 0)];\n if (node.contentEditable == \"false\")\n return false;\n off = dir < 0 ? nodeSize(node) : 0;\n }\n else {\n return false;\n }\n }\n}\nfunction nodeSize(node) {\n return node.nodeType == 3 ? node.nodeValue.length : node.childNodes.length;\n}\nfunction textNodeBefore$1(node, offset) {\n for (;;) {\n if (node.nodeType == 3 && offset)\n return node;\n if (node.nodeType == 1 && offset > 0) {\n if (node.contentEditable == \"false\")\n return null;\n node = node.childNodes[offset - 1];\n offset = nodeSize(node);\n }\n else if (node.parentNode && !hasBlockDesc(node)) {\n offset = domIndex(node);\n node = node.parentNode;\n }\n else {\n return null;\n }\n }\n}\nfunction textNodeAfter$1(node, offset) {\n for (;;) {\n if (node.nodeType == 3 && offset < node.nodeValue.length)\n return node;\n if (node.nodeType == 1 && offset < node.childNodes.length) {\n if (node.contentEditable == \"false\")\n return null;\n node = node.childNodes[offset];\n offset = 0;\n }\n else if (node.parentNode && !hasBlockDesc(node)) {\n offset = domIndex(node) + 1;\n node = node.parentNode;\n }\n else {\n return null;\n }\n }\n}\nfunction isOnEdge(node, offset, parent) {\n for (let atStart = offset == 0, atEnd = offset == nodeSize(node); atStart || atEnd;) {\n if (node == parent)\n return true;\n let index = domIndex(node);\n node = node.parentNode;\n if (!node)\n return false;\n atStart = atStart && index == 0;\n atEnd = atEnd && index == nodeSize(node);\n }\n}\nfunction hasBlockDesc(dom) {\n let desc;\n for (let cur = dom; cur; cur = cur.parentNode)\n if (desc = cur.pmViewDesc)\n break;\n return desc && desc.node && desc.node.isBlock && (desc.dom == dom || desc.contentDOM == dom);\n}\n// Work around Chrome issue https://bugs.chromium.org/p/chromium/issues/detail?id=447523\n// (isCollapsed inappropriately returns true in shadow dom)\nconst selectionCollapsed = function (domSel) {\n return domSel.focusNode && isEquivalentPosition(domSel.focusNode, domSel.focusOffset, domSel.anchorNode, domSel.anchorOffset);\n};\nfunction keyEvent(keyCode, key) {\n let event = document.createEvent(\"Event\");\n event.initEvent(\"keydown\", true, true);\n event.keyCode = keyCode;\n event.key = event.code = key;\n return event;\n}\nfunction deepActiveElement(doc) {\n let elt = doc.activeElement;\n while (elt && elt.shadowRoot)\n elt = elt.shadowRoot.activeElement;\n return elt;\n}\nfunction caretFromPoint(doc, x, y) {\n if (doc.caretPositionFromPoint) {\n try { // Firefox throws for this call in hard-to-predict circumstances (#994)\n let pos = doc.caretPositionFromPoint(x, y);\n if (pos)\n return { node: pos.offsetNode, offset: pos.offset };\n }\n catch (_) { }\n }\n if (doc.caretRangeFromPoint) {\n let range = doc.caretRangeFromPoint(x, y);\n if (range)\n return { node: range.startContainer, offset: range.startOffset };\n }\n}\n\nconst nav = typeof navigator != \"undefined\" ? navigator : null;\nconst doc = typeof document != \"undefined\" ? document : null;\nconst agent = (nav && nav.userAgent) || \"\";\nconst ie_edge = /Edge\\/(\\d+)/.exec(agent);\nconst ie_upto10 = /MSIE \\d/.exec(agent);\nconst ie_11up = /Trident\\/(?:[7-9]|\\d{2,})\\..*rv:(\\d+)/.exec(agent);\nconst ie = !!(ie_upto10 || ie_11up || ie_edge);\nconst ie_version = ie_upto10 ? document.documentMode : ie_11up ? +ie_11up[1] : ie_edge ? +ie_edge[1] : 0;\nconst gecko = !ie && /gecko\\/(\\d+)/i.test(agent);\ngecko && +(/Firefox\\/(\\d+)/.exec(agent) || [0, 0])[1];\nconst _chrome = !ie && /Chrome\\/(\\d+)/.exec(agent);\nconst chrome = !!_chrome;\nconst chrome_version = _chrome ? +_chrome[1] : 0;\nconst safari = !ie && !!nav && /Apple Computer/.test(nav.vendor);\n// Is true for both iOS and iPadOS for convenience\nconst ios = safari && (/Mobile\\/\\w+/.test(agent) || !!nav && nav.maxTouchPoints > 2);\nconst mac = ios || (nav ? /Mac/.test(nav.platform) : false);\nconst windows = nav ? /Win/.test(nav.platform) : false;\nconst android = /Android \\d/.test(agent);\nconst webkit = !!doc && \"webkitFontSmoothing\" in doc.documentElement.style;\nconst webkit_version = webkit ? +(/\\bAppleWebKit\\/(\\d+)/.exec(navigator.userAgent) || [0, 0])[1] : 0;\n\nfunction windowRect(doc) {\n let vp = doc.defaultView && doc.defaultView.visualViewport;\n if (vp)\n return {\n left: 0, right: vp.width,\n top: 0, bottom: vp.height\n };\n return { left: 0, right: doc.documentElement.clientWidth,\n top: 0, bottom: doc.documentElement.clientHeight };\n}\nfunction getSide(value, side) {\n return typeof value == \"number\" ? value : value[side];\n}\nfunction clientRect(node) {\n let rect = node.getBoundingClientRect();\n // Adjust for elements with style \"transform: scale()\"\n let scaleX = (rect.width / node.offsetWidth) || 1;\n let scaleY = (rect.height / node.offsetHeight) || 1;\n // Make sure scrollbar width isn't included in the rectangle\n return { left: rect.left, right: rect.left + node.clientWidth * scaleX,\n top: rect.top, bottom: rect.top + node.clientHeight * scaleY };\n}\nfunction scrollRectIntoView(view, rect, startDOM) {\n let scrollThreshold = view.someProp(\"scrollThreshold\") || 0, scrollMargin = view.someProp(\"scrollMargin\") || 5;\n let doc = view.dom.ownerDocument;\n for (let parent = startDOM || view.dom;; parent = parentNode(parent)) {\n if (!parent)\n break;\n if (parent.nodeType != 1)\n continue;\n let elt = parent;\n let atTop = elt == doc.body;\n let bounding = atTop ? windowRect(doc) : clientRect(elt);\n let moveX = 0, moveY = 0;\n if (rect.top < bounding.top + getSide(scrollThreshold, \"top\"))\n moveY = -(bounding.top - rect.top + getSide(scrollMargin, \"top\"));\n else if (rect.bottom > bounding.bottom - getSide(scrollThreshold, \"bottom\"))\n moveY = rect.bottom - rect.top > bounding.bottom - bounding.top\n ? rect.top + getSide(scrollMargin, \"top\") - bounding.top\n : rect.bottom - bounding.bottom + getSide(scrollMargin, \"bottom\");\n if (rect.left < bounding.left + getSide(scrollThreshold, \"left\"))\n moveX = -(bounding.left - rect.left + getSide(scrollMargin, \"left\"));\n else if (rect.right > bounding.right - getSide(scrollThreshold, \"right\"))\n moveX = rect.right - bounding.right + getSide(scrollMargin, \"right\");\n if (moveX || moveY) {\n if (atTop) {\n doc.defaultView.scrollBy(moveX, moveY);\n }\n else {\n let startX = elt.scrollLeft, startY = elt.scrollTop;\n if (moveY)\n elt.scrollTop += moveY;\n if (moveX)\n elt.scrollLeft += moveX;\n let dX = elt.scrollLeft - startX, dY = elt.scrollTop - startY;\n rect = { left: rect.left - dX, top: rect.top - dY, right: rect.right - dX, bottom: rect.bottom - dY };\n }\n }\n if (atTop || /^(fixed|sticky)$/.test(getComputedStyle(parent).position))\n break;\n }\n}\n// Store the scroll position of the editor's parent nodes, along with\n// the top position of an element near the top of the editor, which\n// will be used to make sure the visible viewport remains stable even\n// when the size of the content above changes.\nfunction storeScrollPos(view) {\n let rect = view.dom.getBoundingClientRect(), startY = Math.max(0, rect.top);\n let refDOM, refTop;\n for (let x = (rect.left + rect.right) / 2, y = startY + 1; y < Math.min(innerHeight, rect.bottom); y += 5) {\n let dom = view.root.elementFromPoint(x, y);\n if (!dom || dom == view.dom || !view.dom.contains(dom))\n continue;\n let localRect = dom.getBoundingClientRect();\n if (localRect.top >= startY - 20) {\n refDOM = dom;\n refTop = localRect.top;\n break;\n }\n }\n return { refDOM: refDOM, refTop: refTop, stack: scrollStack(view.dom) };\n}\nfunction scrollStack(dom) {\n let stack = [], doc = dom.ownerDocument;\n for (let cur = dom; cur; cur = parentNode(cur)) {\n stack.push({ dom: cur, top: cur.scrollTop, left: cur.scrollLeft });\n if (dom == doc)\n break;\n }\n return stack;\n}\n// Reset the scroll position of the editor's parent nodes to that what\n// it was before, when storeScrollPos was called.\nfunction resetScrollPos({ refDOM, refTop, stack }) {\n let newRefTop = refDOM ? refDOM.getBoundingClientRect().top : 0;\n restoreScrollStack(stack, newRefTop == 0 ? 0 : newRefTop - refTop);\n}\nfunction restoreScrollStack(stack, dTop) {\n for (let i = 0; i < stack.length; i++) {\n let { dom, top, left } = stack[i];\n if (dom.scrollTop != top + dTop)\n dom.scrollTop = top + dTop;\n if (dom.scrollLeft != left)\n dom.scrollLeft = left;\n }\n}\nlet preventScrollSupported = null;\n// Feature-detects support for .focus({preventScroll: true}), and uses\n// a fallback kludge when not supported.\nfunction focusPreventScroll(dom) {\n if (dom.setActive)\n return dom.setActive(); // in IE\n if (preventScrollSupported)\n return dom.focus(preventScrollSupported);\n let stored = scrollStack(dom);\n dom.focus(preventScrollSupported == null ? {\n get preventScroll() {\n preventScrollSupported = { preventScroll: true };\n return true;\n }\n } : undefined);\n if (!preventScrollSupported) {\n preventScrollSupported = false;\n restoreScrollStack(stored, 0);\n }\n}\nfunction findOffsetInNode(node, coords) {\n let closest, dxClosest = 2e8, coordsClosest, offset = 0;\n let rowBot = coords.top, rowTop = coords.top;\n let firstBelow, coordsBelow;\n for (let child = node.firstChild, childIndex = 0; child; child = child.nextSibling, childIndex++) {\n let rects;\n if (child.nodeType == 1)\n rects = child.getClientRects();\n else if (child.nodeType == 3)\n rects = textRange(child).getClientRects();\n else\n continue;\n for (let i = 0; i < rects.length; i++) {\n let rect = rects[i];\n if (rect.top <= rowBot && rect.bottom >= rowTop) {\n rowBot = Math.max(rect.bottom, rowBot);\n rowTop = Math.min(rect.top, rowTop);\n let dx = rect.left > coords.left ? rect.left - coords.left\n : rect.right < coords.left ? coords.left - rect.right : 0;\n if (dx < dxClosest) {\n closest = child;\n dxClosest = dx;\n coordsClosest = dx && closest.nodeType == 3 ? {\n left: rect.right < coords.left ? rect.right : rect.left,\n top: coords.top\n } : coords;\n if (child.nodeType == 1 && dx)\n offset = childIndex + (coords.left >= (rect.left + rect.right) / 2 ? 1 : 0);\n continue;\n }\n }\n else if (rect.top > coords.top && !firstBelow && rect.left <= coords.left && rect.right >= coords.left) {\n firstBelow = child;\n coordsBelow = { left: Math.max(rect.left, Math.min(rect.right, coords.left)), top: rect.top };\n }\n if (!closest && (coords.left >= rect.right && coords.top >= rect.top ||\n coords.left >= rect.left && coords.top >= rect.bottom))\n offset = childIndex + 1;\n }\n }\n if (!closest && firstBelow) {\n closest = firstBelow;\n coordsClosest = coordsBelow;\n dxClosest = 0;\n }\n if (closest && closest.nodeType == 3)\n return findOffsetInText(closest, coordsClosest);\n if (!closest || (dxClosest && closest.nodeType == 1))\n return { node, offset };\n return findOffsetInNode(closest, coordsClosest);\n}\nfunction findOffsetInText(node, coords) {\n let len = node.nodeValue.length;\n let range = document.createRange();\n for (let i = 0; i < len; i++) {\n range.setEnd(node, i + 1);\n range.setStart(node, i);\n let rect = singleRect(range, 1);\n if (rect.top == rect.bottom)\n continue;\n if (inRect(coords, rect))\n return { node, offset: i + (coords.left >= (rect.left + rect.right) / 2 ? 1 : 0) };\n }\n return { node, offset: 0 };\n}\nfunction inRect(coords, rect) {\n return coords.left >= rect.left - 1 && coords.left <= rect.right + 1 &&\n coords.top >= rect.top - 1 && coords.top <= rect.bottom + 1;\n}\nfunction targetKludge(dom, coords) {\n let parent = dom.parentNode;\n if (parent && /^li$/i.test(parent.nodeName) && coords.left < dom.getBoundingClientRect().left)\n return parent;\n return dom;\n}\nfunction posFromElement(view, elt, coords) {\n let { node, offset } = findOffsetInNode(elt, coords), bias = -1;\n if (node.nodeType == 1 && !node.firstChild) {\n let rect = node.getBoundingClientRect();\n bias = rect.left != rect.right && coords.left > (rect.left + rect.right) / 2 ? 1 : -1;\n }\n return view.docView.posFromDOM(node, offset, bias);\n}\nfunction posFromCaret(view, node, offset, coords) {\n // Browser (in caretPosition/RangeFromPoint) will agressively\n // normalize towards nearby inline nodes. Since we are interested in\n // positions between block nodes too, we first walk up the hierarchy\n // of nodes to see if there are block nodes that the coordinates\n // fall outside of. If so, we take the position before/after that\n // block. If not, we call `posFromDOM` on the raw node/offset.\n let outsideBlock = -1;\n for (let cur = node, sawBlock = false;;) {\n if (cur == view.dom)\n break;\n let desc = view.docView.nearestDesc(cur, true);\n if (!desc)\n return null;\n if (desc.dom.nodeType == 1 && (desc.node.isBlock && desc.parent && !sawBlock || !desc.contentDOM)) {\n let rect = desc.dom.getBoundingClientRect();\n if (desc.node.isBlock && desc.parent && !sawBlock) {\n sawBlock = true;\n if (rect.left > coords.left || rect.top > coords.top)\n outsideBlock = desc.posBefore;\n else if (rect.right < coords.left || rect.bottom < coords.top)\n outsideBlock = desc.posAfter;\n }\n if (!desc.contentDOM && outsideBlock < 0 && !desc.node.isText) {\n // If we are inside a leaf, return the side of the leaf closer to the coords\n let before = desc.node.isBlock ? coords.top < (rect.top + rect.bottom) / 2\n : coords.left < (rect.left + rect.right) / 2;\n return before ? desc.posBefore : desc.posAfter;\n }\n }\n cur = desc.dom.parentNode;\n }\n return outsideBlock > -1 ? outsideBlock : view.docView.posFromDOM(node, offset, -1);\n}\nfunction elementFromPoint(element, coords, box) {\n let len = element.childNodes.length;\n if (len && box.top < box.bottom) {\n for (let startI = Math.max(0, Math.min(len - 1, Math.floor(len * (coords.top - box.top) / (box.bottom - box.top)) - 2)), i = startI;;) {\n let child = element.childNodes[i];\n if (child.nodeType == 1) {\n let rects = child.getClientRects();\n for (let j = 0; j < rects.length; j++) {\n let rect = rects[j];\n if (inRect(coords, rect))\n return elementFromPoint(child, coords, rect);\n }\n }\n if ((i = (i + 1) % len) == startI)\n break;\n }\n }\n return element;\n}\n// Given an x,y position on the editor, get the position in the document.\nfunction posAtCoords(view, coords) {\n let doc = view.dom.ownerDocument, node, offset = 0;\n let caret = caretFromPoint(doc, coords.left, coords.top);\n if (caret)\n ({ node, offset } = caret);\n let elt = (view.root.elementFromPoint ? view.root : doc)\n .elementFromPoint(coords.left, coords.top);\n let pos;\n if (!elt || !view.dom.contains(elt.nodeType != 1 ? elt.parentNode : elt)) {\n let box = view.dom.getBoundingClientRect();\n if (!inRect(coords, box))\n return null;\n elt = elementFromPoint(view.dom, coords, box);\n if (!elt)\n return null;\n }\n // Safari's caretRangeFromPoint returns nonsense when on a draggable element\n if (safari) {\n for (let p = elt; node && p; p = parentNode(p))\n if (p.draggable)\n node = undefined;\n }\n elt = targetKludge(elt, coords);\n if (node) {\n if (gecko && node.nodeType == 1) {\n // Firefox will sometimes return offsets into nodes, which\n // have no actual children, from caretPositionFromPoint (#953)\n offset = Math.min(offset, node.childNodes.length);\n // It'll also move the returned position before image nodes,\n // even if those are behind it.\n if (offset < node.childNodes.length) {\n let next = node.childNodes[offset], box;\n if (next.nodeName == \"IMG\" && (box = next.getBoundingClientRect()).right <= coords.left &&\n box.bottom > coords.top)\n offset++;\n }\n }\n let prev;\n // When clicking above the right side of an uneditable node, Chrome will report a cursor position after that node.\n if (webkit && offset && node.nodeType == 1 && (prev = node.childNodes[offset - 1]).nodeType == 1 &&\n prev.contentEditable == \"false\" && prev.getBoundingClientRect().top >= coords.top)\n offset--;\n // Suspiciously specific kludge to work around caret*FromPoint\n // never returning a position at the end of the document\n if (node == view.dom && offset == node.childNodes.length - 1 && node.lastChild.nodeType == 1 &&\n coords.top > node.lastChild.getBoundingClientRect().bottom)\n pos = view.state.doc.content.size;\n // Ignore positions directly after a BR, since caret*FromPoint\n // 'round up' positions that would be more accurately placed\n // before the BR node.\n else if (offset == 0 || node.nodeType != 1 || node.childNodes[offset - 1].nodeName != \"BR\")\n pos = posFromCaret(view, node, offset, coords);\n }\n if (pos == null)\n pos = posFromElement(view, elt, coords);\n let desc = view.docView.nearestDesc(elt, true);\n return { pos, inside: desc ? desc.posAtStart - desc.border : -1 };\n}\nfunction nonZero(rect) {\n return rect.top < rect.bottom || rect.left < rect.right;\n}\nfunction singleRect(target, bias) {\n let rects = target.getClientRects();\n if (rects.length) {\n let first = rects[bias < 0 ? 0 : rects.length - 1];\n if (nonZero(first))\n return first;\n }\n return Array.prototype.find.call(rects, nonZero) || target.getBoundingClientRect();\n}\nconst BIDI = /[\\u0590-\\u05f4\\u0600-\\u06ff\\u0700-\\u08ac]/;\n// Given a position in the document model, get a bounding box of the\n// character at that position, relative to the window.\nfunction coordsAtPos(view, pos, side) {\n let { node, offset, atom } = view.docView.domFromPos(pos, side < 0 ? -1 : 1);\n let supportEmptyRange = webkit || gecko;\n if (node.nodeType == 3) {\n // These browsers support querying empty text ranges. Prefer that in\n // bidi context or when at the end of a node.\n if (supportEmptyRange && (BIDI.test(node.nodeValue) || (side < 0 ? !offset : offset == node.nodeValue.length))) {\n let rect = singleRect(textRange(node, offset, offset), side);\n // Firefox returns bad results (the position before the space)\n // when querying a position directly after line-broken\n // whitespace. Detect this situation and and kludge around it\n if (gecko && offset && /\\s/.test(node.nodeValue[offset - 1]) && offset < node.nodeValue.length) {\n let rectBefore = singleRect(textRange(node, offset - 1, offset - 1), -1);\n if (rectBefore.top == rect.top) {\n let rectAfter = singleRect(textRange(node, offset, offset + 1), -1);\n if (rectAfter.top != rect.top)\n return flattenV(rectAfter, rectAfter.left < rectBefore.left);\n }\n }\n return rect;\n }\n else {\n let from = offset, to = offset, takeSide = side < 0 ? 1 : -1;\n if (side < 0 && !offset) {\n to++;\n takeSide = -1;\n }\n else if (side >= 0 && offset == node.nodeValue.length) {\n from--;\n takeSide = 1;\n }\n else if (side < 0) {\n from--;\n }\n else {\n to++;\n }\n return flattenV(singleRect(textRange(node, from, to), takeSide), takeSide < 0);\n }\n }\n let $dom = view.state.doc.resolve(pos - (atom || 0));\n // Return a horizontal line in block context\n if (!$dom.parent.inlineContent) {\n if (atom == null && offset && (side < 0 || offset == nodeSize(node))) {\n let before = node.childNodes[offset - 1];\n if (before.nodeType == 1)\n return flattenH(before.getBoundingClientRect(), false);\n }\n if (atom == null && offset < nodeSize(node)) {\n let after = node.childNodes[offset];\n if (after.nodeType == 1)\n return flattenH(after.getBoundingClientRect(), true);\n }\n return flattenH(node.getBoundingClientRect(), side >= 0);\n }\n // Inline, not in text node (this is not Bidi-safe)\n if (atom == null && offset && (side < 0 || offset == nodeSize(node))) {\n let before = node.childNodes[offset - 1];\n let target = before.nodeType == 3 ? textRange(before, nodeSize(before) - (supportEmptyRange ? 0 : 1))\n // BR nodes tend to only return the rectangle before them.\n // Only use them if they are the last element in their parent\n : before.nodeType == 1 && (before.nodeName != \"BR\" || !before.nextSibling) ? before : null;\n if (target)\n return flattenV(singleRect(target, 1), false);\n }\n if (atom == null && offset < nodeSize(node)) {\n let after = node.childNodes[offset];\n while (after.pmViewDesc && after.pmViewDesc.ignoreForCoords)\n after = after.nextSibling;\n let target = !after ? null : after.nodeType == 3 ? textRange(after, 0, (supportEmptyRange ? 0 : 1))\n : after.nodeType == 1 ? after : null;\n if (target)\n return flattenV(singleRect(target, -1), true);\n }\n // All else failed, just try to get a rectangle for the target node\n return flattenV(singleRect(node.nodeType == 3 ? textRange(node) : node, -side), side >= 0);\n}\nfunction flattenV(rect, left) {\n if (rect.width == 0)\n return rect;\n let x = left ? rect.left : rect.right;\n return { top: rect.top, bottom: rect.bottom, left: x, right: x };\n}\nfunction flattenH(rect, top) {\n if (rect.height == 0)\n return rect;\n let y = top ? rect.top : rect.bottom;\n return { top: y, bottom: y, left: rect.left, right: rect.right };\n}\nfunction withFlushedState(view, state, f) {\n let viewState = view.state, active = view.root.activeElement;\n if (viewState != state)\n view.updateState(state);\n if (active != view.dom)\n view.focus();\n try {\n return f();\n }\n finally {\n if (viewState != state)\n view.updateState(viewState);\n if (active != view.dom && active)\n active.focus();\n }\n}\n// Whether vertical position motion in a given direction\n// from a position would leave a text block.\nfunction endOfTextblockVertical(view, state, dir) {\n let sel = state.selection;\n let $pos = dir == \"up\" ? sel.$from : sel.$to;\n return withFlushedState(view, state, () => {\n let { node: dom } = view.docView.domFromPos($pos.pos, dir == \"up\" ? -1 : 1);\n for (;;) {\n let nearest = view.docView.nearestDesc(dom, true);\n if (!nearest)\n break;\n if (nearest.node.isBlock) {\n dom = nearest.contentDOM || nearest.dom;\n break;\n }\n dom = nearest.dom.parentNode;\n }\n let coords = coordsAtPos(view, $pos.pos, 1);\n for (let child = dom.firstChild; child; child = child.nextSibling) {\n let boxes;\n if (child.nodeType == 1)\n boxes = child.getClientRects();\n else if (child.nodeType == 3)\n boxes = textRange(child, 0, child.nodeValue.length).getClientRects();\n else\n continue;\n for (let i = 0; i < boxes.length; i++) {\n let box = boxes[i];\n if (box.bottom > box.top + 1 &&\n (dir == \"up\" ? coords.top - box.top > (box.bottom - coords.top) * 2\n : box.bottom - coords.bottom > (coords.bottom - box.top) * 2))\n return false;\n }\n }\n return true;\n });\n}\nconst maybeRTL = /[\\u0590-\\u08ac]/;\nfunction endOfTextblockHorizontal(view, state, dir) {\n let { $head } = state.selection;\n if (!$head.parent.isTextblock)\n return false;\n let offset = $head.parentOffset, atStart = !offset, atEnd = offset == $head.parent.content.size;\n let sel = view.domSelection();\n // If the textblock is all LTR, or the browser doesn't support\n // Selection.modify (Edge), fall back to a primitive approach\n if (!maybeRTL.test($head.parent.textContent) || !sel.modify)\n return dir == \"left\" || dir == \"backward\" ? atStart : atEnd;\n return withFlushedState(view, state, () => {\n // This is a huge hack, but appears to be the best we can\n // currently do: use `Selection.modify` to move the selection by\n // one character, and see if that moves the cursor out of the\n // textblock (or doesn't move it at all, when at the start/end of\n // the document).\n let { focusNode: oldNode, focusOffset: oldOff, anchorNode, anchorOffset } = view.domSelectionRange();\n let oldBidiLevel = sel.caretBidiLevel // Only for Firefox\n ;\n sel.modify(\"move\", dir, \"character\");\n let parentDOM = $head.depth ? view.docView.domAfterPos($head.before()) : view.dom;\n let { focusNode: newNode, focusOffset: newOff } = view.domSelectionRange();\n let result = newNode && !parentDOM.contains(newNode.nodeType == 1 ? newNode : newNode.parentNode) ||\n (oldNode == newNode && oldOff == newOff);\n // Restore the previous selection\n try {\n sel.collapse(anchorNode, anchorOffset);\n if (oldNode && (oldNode != anchorNode || oldOff != anchorOffset) && sel.extend)\n sel.extend(oldNode, oldOff);\n }\n catch (_) { }\n if (oldBidiLevel != null)\n sel.caretBidiLevel = oldBidiLevel;\n return result;\n });\n}\nlet cachedState = null;\nlet cachedDir = null;\nlet cachedResult = false;\nfunction endOfTextblock(view, state, dir) {\n if (cachedState == state && cachedDir == dir)\n return cachedResult;\n cachedState = state;\n cachedDir = dir;\n return cachedResult = dir == \"up\" || dir == \"down\"\n ? endOfTextblockVertical(view, state, dir)\n : endOfTextblockHorizontal(view, state, dir);\n}\n\n// View descriptions are data structures that describe the DOM that is\n// used to represent the editor's content. They are used for:\n//\n// - Incremental redrawing when the document changes\n//\n// - Figuring out what part of the document a given DOM position\n// corresponds to\n//\n// - Wiring in custom implementations of the editing interface for a\n// given node\n//\n// They form a doubly-linked mutable tree, starting at `view.docView`.\nconst NOT_DIRTY = 0, CHILD_DIRTY = 1, CONTENT_DIRTY = 2, NODE_DIRTY = 3;\n// Superclass for the various kinds of descriptions. Defines their\n// basic structure and shared methods.\nclass ViewDesc {\n constructor(parent, children, dom, \n // This is the node that holds the child views. It may be null for\n // descs that don't have children.\n contentDOM) {\n this.parent = parent;\n this.children = children;\n this.dom = dom;\n this.contentDOM = contentDOM;\n this.dirty = NOT_DIRTY;\n // An expando property on the DOM node provides a link back to its\n // description.\n dom.pmViewDesc = this;\n }\n // Used to check whether a given description corresponds to a\n // widget/mark/node.\n matchesWidget(widget) { return false; }\n matchesMark(mark) { return false; }\n matchesNode(node, outerDeco, innerDeco) { return false; }\n matchesHack(nodeName) { return false; }\n // When parsing in-editor content (in domchange.js), we allow\n // descriptions to determine the parse rules that should be used to\n // parse them.\n parseRule() { return null; }\n // Used by the editor's event handler to ignore events that come\n // from certain descs.\n stopEvent(event) { return false; }\n // The size of the content represented by this desc.\n get size() {\n let size = 0;\n for (let i = 0; i < this.children.length; i++)\n size += this.children[i].size;\n return size;\n }\n // For block nodes, this represents the space taken up by their\n // start/end tokens.\n get border() { return 0; }\n destroy() {\n this.parent = undefined;\n if (this.dom.pmViewDesc == this)\n this.dom.pmViewDesc = undefined;\n for (let i = 0; i < this.children.length; i++)\n this.children[i].destroy();\n }\n posBeforeChild(child) {\n for (let i = 0, pos = this.posAtStart;; i++) {\n let cur = this.children[i];\n if (cur == child)\n return pos;\n pos += cur.size;\n }\n }\n get posBefore() {\n return this.parent.posBeforeChild(this);\n }\n get posAtStart() {\n return this.parent ? this.parent.posBeforeChild(this) + this.border : 0;\n }\n get posAfter() {\n return this.posBefore + this.size;\n }\n get posAtEnd() {\n return this.posAtStart + this.size - 2 * this.border;\n }\n localPosFromDOM(dom, offset, bias) {\n // If the DOM position is in the content, use the child desc after\n // it to figure out a position.\n if (this.contentDOM && this.contentDOM.contains(dom.nodeType == 1 ? dom : dom.parentNode)) {\n if (bias < 0) {\n let domBefore, desc;\n if (dom == this.contentDOM) {\n domBefore = dom.childNodes[offset - 1];\n }\n else {\n while (dom.parentNode != this.contentDOM)\n dom = dom.parentNode;\n domBefore = dom.previousSibling;\n }\n while (domBefore && !((desc = domBefore.pmViewDesc) && desc.parent == this))\n domBefore = domBefore.previousSibling;\n return domBefore ? this.posBeforeChild(desc) + desc.size : this.posAtStart;\n }\n else {\n let domAfter, desc;\n if (dom == this.contentDOM) {\n domAfter = dom.childNodes[offset];\n }\n else {\n while (dom.parentNode != this.contentDOM)\n dom = dom.parentNode;\n domAfter = dom.nextSibling;\n }\n while (domAfter && !((desc = domAfter.pmViewDesc) && desc.parent == this))\n domAfter = domAfter.nextSibling;\n return domAfter ? this.posBeforeChild(desc) : this.posAtEnd;\n }\n }\n // Otherwise, use various heuristics, falling back on the bias\n // parameter, to determine whether to return the position at the\n // start or at the end of this view desc.\n let atEnd;\n if (dom == this.dom && this.contentDOM) {\n atEnd = offset > domIndex(this.contentDOM);\n }\n else if (this.contentDOM && this.contentDOM != this.dom && this.dom.contains(this.contentDOM)) {\n atEnd = dom.compareDocumentPosition(this.contentDOM) & 2;\n }\n else if (this.dom.firstChild) {\n if (offset == 0)\n for (let search = dom;; search = search.parentNode) {\n if (search == this.dom) {\n atEnd = false;\n break;\n }\n if (search.previousSibling)\n break;\n }\n if (atEnd == null && offset == dom.childNodes.length)\n for (let search = dom;; search = search.parentNode) {\n if (search == this.dom) {\n atEnd = true;\n break;\n }\n if (search.nextSibling)\n break;\n }\n }\n return (atEnd == null ? bias > 0 : atEnd) ? this.posAtEnd : this.posAtStart;\n }\n nearestDesc(dom, onlyNodes = false) {\n for (let first = true, cur = dom; cur; cur = cur.parentNode) {\n let desc = this.getDesc(cur), nodeDOM;\n if (desc && (!onlyNodes || desc.node)) {\n // If dom is outside of this desc's nodeDOM, don't count it.\n if (first && (nodeDOM = desc.nodeDOM) &&\n !(nodeDOM.nodeType == 1 ? nodeDOM.contains(dom.nodeType == 1 ? dom : dom.parentNode) : nodeDOM == dom))\n first = false;\n else\n return desc;\n }\n }\n }\n getDesc(dom) {\n let desc = dom.pmViewDesc;\n for (let cur = desc; cur; cur = cur.parent)\n if (cur == this)\n return desc;\n }\n posFromDOM(dom, offset, bias) {\n for (let scan = dom; scan; scan = scan.parentNode) {\n let desc = this.getDesc(scan);\n if (desc)\n return desc.localPosFromDOM(dom, offset, bias);\n }\n return -1;\n }\n // Find the desc for the node after the given pos, if any. (When a\n // parent node overrode rendering, there might not be one.)\n descAt(pos) {\n for (let i = 0, offset = 0; i < this.children.length; i++) {\n let child = this.children[i], end = offset + child.size;\n if (offset == pos && end != offset) {\n while (!child.border && child.children.length)\n child = child.children[0];\n return child;\n }\n if (pos < end)\n return child.descAt(pos - offset - child.border);\n offset = end;\n }\n }\n domFromPos(pos, side) {\n if (!this.contentDOM)\n return { node: this.dom, offset: 0, atom: pos + 1 };\n // First find the position in the child array\n let i = 0, offset = 0;\n for (let curPos = 0; i < this.children.length; i++) {\n let child = this.children[i], end = curPos + child.size;\n if (end > pos || child instanceof TrailingHackViewDesc) {\n offset = pos - curPos;\n break;\n }\n curPos = end;\n }\n // If this points into the middle of a child, call through\n if (offset)\n return this.children[i].domFromPos(offset - this.children[i].border, side);\n // Go back if there were any zero-length widgets with side >= 0 before this point\n for (let prev; i && !(prev = this.children[i - 1]).size && prev instanceof WidgetViewDesc && prev.side >= 0; i--) { }\n // Scan towards the first useable node\n if (side <= 0) {\n let prev, enter = true;\n for (;; i--, enter = false) {\n prev = i ? this.children[i - 1] : null;\n if (!prev || prev.dom.parentNode == this.contentDOM)\n break;\n }\n if (prev && side && enter && !prev.border && !prev.domAtom)\n return prev.domFromPos(prev.size, side);\n return { node: this.contentDOM, offset: prev ? domIndex(prev.dom) + 1 : 0 };\n }\n else {\n let next, enter = true;\n for (;; i++, enter = false) {\n next = i < this.children.length ? this.children[i] : null;\n if (!next || next.dom.parentNode == this.contentDOM)\n break;\n }\n if (next && enter && !next.border && !next.domAtom)\n return next.domFromPos(0, side);\n return { node: this.contentDOM, offset: next ? domIndex(next.dom) : this.contentDOM.childNodes.length };\n }\n }\n // Used to find a DOM range in a single parent for a given changed\n // range.\n parseRange(from, to, base = 0) {\n if (this.children.length == 0)\n return { node: this.contentDOM, from, to, fromOffset: 0, toOffset: this.contentDOM.childNodes.length };\n let fromOffset = -1, toOffset = -1;\n for (let offset = base, i = 0;; i++) {\n let child = this.children[i], end = offset + child.size;\n if (fromOffset == -1 && from <= end) {\n let childBase = offset + child.border;\n // FIXME maybe descend mark views to parse a narrower range?\n if (from >= childBase && to <= end - child.border && child.node &&\n child.contentDOM && this.contentDOM.contains(child.contentDOM))\n return child.parseRange(from, to, childBase);\n from = offset;\n for (let j = i; j > 0; j--) {\n let prev = this.children[j - 1];\n if (prev.size && prev.dom.parentNode == this.contentDOM && !prev.emptyChildAt(1)) {\n fromOffset = domIndex(prev.dom) + 1;\n break;\n }\n from -= prev.size;\n }\n if (fromOffset == -1)\n fromOffset = 0;\n }\n if (fromOffset > -1 && (end > to || i == this.children.length - 1)) {\n to = end;\n for (let j = i + 1; j < this.children.length; j++) {\n let next = this.children[j];\n if (next.size && next.dom.parentNode == this.contentDOM && !next.emptyChildAt(-1)) {\n toOffset = domIndex(next.dom);\n break;\n }\n to += next.size;\n }\n if (toOffset == -1)\n toOffset = this.contentDOM.childNodes.length;\n break;\n }\n offset = end;\n }\n return { node: this.contentDOM, from, to, fromOffset, toOffset };\n }\n emptyChildAt(side) {\n if (this.border || !this.contentDOM || !this.children.length)\n return false;\n let child = this.children[side < 0 ? 0 : this.children.length - 1];\n return child.size == 0 || child.emptyChildAt(side);\n }\n domAfterPos(pos) {\n let { node, offset } = this.domFromPos(pos, 0);\n if (node.nodeType != 1 || offset == node.childNodes.length)\n throw new RangeError(\"No node after pos \" + pos);\n return node.childNodes[offset];\n }\n // View descs are responsible for setting any selection that falls\n // entirely inside of them, so that custom implementations can do\n // custom things with the selection. Note that this falls apart when\n // a selection starts in such a node and ends in another, in which\n // case we just use whatever domFromPos produces as a best effort.\n setSelection(anchor, head, root, force = false) {\n // If the selection falls entirely in a child, give it to that child\n let from = Math.min(anchor, head), to = Math.max(anchor, head);\n for (let i = 0, offset = 0; i < this.children.length; i++) {\n let child = this.children[i], end = offset + child.size;\n if (from > offset && to < end)\n return child.setSelection(anchor - offset - child.border, head - offset - child.border, root, force);\n offset = end;\n }\n let anchorDOM = this.domFromPos(anchor, anchor ? -1 : 1);\n let headDOM = head == anchor ? anchorDOM : this.domFromPos(head, head ? -1 : 1);\n let domSel = root.getSelection();\n let brKludge = false;\n // On Firefox, using Selection.collapse to put the cursor after a\n // BR node for some reason doesn't always work (#1073). On Safari,\n // the cursor sometimes inexplicable visually lags behind its\n // reported position in such situations (#1092).\n if ((gecko || safari) && anchor == head) {\n let { node, offset } = anchorDOM;\n if (node.nodeType == 3) {\n brKludge = !!(offset && node.nodeValue[offset - 1] == \"\\n\");\n // Issue #1128\n if (brKludge && offset == node.nodeValue.length) {\n for (let scan = node, after; scan; scan = scan.parentNode) {\n if (after = scan.nextSibling) {\n if (after.nodeName == \"BR\")\n anchorDOM = headDOM = { node: after.parentNode, offset: domIndex(after) + 1 };\n break;\n }\n let desc = scan.pmViewDesc;\n if (desc && desc.node && desc.node.isBlock)\n break;\n }\n }\n }\n else {\n let prev = node.childNodes[offset - 1];\n brKludge = prev && (prev.nodeName == \"BR\" || prev.contentEditable == \"false\");\n }\n }\n // Firefox can act strangely when the selection is in front of an\n // uneditable node. See #1163 and https://bugzilla.mozilla.org/show_bug.cgi?id=1709536\n if (gecko && domSel.focusNode && domSel.focusNode != headDOM.node && domSel.focusNode.nodeType == 1) {\n let after = domSel.focusNode.childNodes[domSel.focusOffset];\n if (after && after.contentEditable == \"false\")\n force = true;\n }\n if (!(force || brKludge && safari) &&\n isEquivalentPosition(anchorDOM.node, anchorDOM.offset, domSel.anchorNode, domSel.anchorOffset) &&\n isEquivalentPosition(headDOM.node, headDOM.offset, domSel.focusNode, domSel.focusOffset))\n return;\n // Selection.extend can be used to create an 'inverted' selection\n // (one where the focus is before the anchor), but not all\n // browsers support it yet.\n let domSelExtended = false;\n if ((domSel.extend || anchor == head) && !brKludge) {\n domSel.collapse(anchorDOM.node, anchorDOM.offset);\n try {\n if (anchor != head)\n domSel.extend(headDOM.node, headDOM.offset);\n domSelExtended = true;\n }\n catch (_) {\n // In some cases with Chrome the selection is empty after calling\n // collapse, even when it should be valid. This appears to be a bug, but\n // it is difficult to isolate. If this happens fallback to the old path\n // without using extend.\n // Similarly, this could crash on Safari if the editor is hidden, and\n // there was no selection.\n }\n }\n if (!domSelExtended) {\n if (anchor > head) {\n let tmp = anchorDOM;\n anchorDOM = headDOM;\n headDOM = tmp;\n }\n let range = document.createRange();\n range.setEnd(headDOM.node, headDOM.offset);\n range.setStart(anchorDOM.node, anchorDOM.offset);\n domSel.removeAllRanges();\n domSel.addRange(range);\n }\n }\n ignoreMutation(mutation) {\n return !this.contentDOM && mutation.type != \"selection\";\n }\n get contentLost() {\n return this.contentDOM && this.contentDOM != this.dom && !this.dom.contains(this.contentDOM);\n }\n // Remove a subtree of the element tree that has been touched\n // by a DOM change, so that the next update will redraw it.\n markDirty(from, to) {\n for (let offset = 0, i = 0; i < this.children.length; i++) {\n let child = this.children[i], end = offset + child.size;\n if (offset == end ? from <= end && to >= offset : from < end && to > offset) {\n let startInside = offset + child.border, endInside = end - child.border;\n if (from >= startInside && to <= endInside) {\n this.dirty = from == offset || to == end ? CONTENT_DIRTY : CHILD_DIRTY;\n if (from == startInside && to == endInside &&\n (child.contentLost || child.dom.parentNode != this.contentDOM))\n child.dirty = NODE_DIRTY;\n else\n child.markDirty(from - startInside, to - startInside);\n return;\n }\n else {\n child.dirty = child.dom == child.contentDOM && child.dom.parentNode == this.contentDOM && !child.children.length\n ? CONTENT_DIRTY : NODE_DIRTY;\n }\n }\n offset = end;\n }\n this.dirty = CONTENT_DIRTY;\n }\n markParentsDirty() {\n let level = 1;\n for (let node = this.parent; node; node = node.parent, level++) {\n let dirty = level == 1 ? CONTENT_DIRTY : CHILD_DIRTY;\n if (node.dirty < dirty)\n node.dirty = dirty;\n }\n }\n get domAtom() { return false; }\n get ignoreForCoords() { return false; }\n isText(text) { return false; }\n}\n// A widget desc represents a widget decoration, which is a DOM node\n// drawn between the document nodes.\nclass WidgetViewDesc extends ViewDesc {\n constructor(parent, widget, view, pos) {\n let self, dom = widget.type.toDOM;\n if (typeof dom == \"function\")\n dom = dom(view, () => {\n if (!self)\n return pos;\n if (self.parent)\n return self.parent.posBeforeChild(self);\n });\n if (!widget.type.spec.raw) {\n if (dom.nodeType != 1) {\n let wrap = document.createElement(\"span\");\n wrap.appendChild(dom);\n dom = wrap;\n }\n dom.contentEditable = \"false\";\n dom.classList.add(\"ProseMirror-widget\");\n }\n super(parent, [], dom, null);\n this.widget = widget;\n this.widget = widget;\n self = this;\n }\n matchesWidget(widget) {\n return this.dirty == NOT_DIRTY && widget.type.eq(this.widget.type);\n }\n parseRule() { return { ignore: true }; }\n stopEvent(event) {\n let stop = this.widget.spec.stopEvent;\n return stop ? stop(event) : false;\n }\n ignoreMutation(mutation) {\n return mutation.type != \"selection\" || this.widget.spec.ignoreSelection;\n }\n destroy() {\n this.widget.type.destroy(this.dom);\n super.destroy();\n }\n get domAtom() { return true; }\n get side() { return this.widget.type.side; }\n}\nclass CompositionViewDesc extends ViewDesc {\n constructor(parent, dom, textDOM, text) {\n super(parent, [], dom, null);\n this.textDOM = textDOM;\n this.text = text;\n }\n get size() { return this.text.length; }\n localPosFromDOM(dom, offset) {\n if (dom != this.textDOM)\n return this.posAtStart + (offset ? this.size : 0);\n return this.posAtStart + offset;\n }\n domFromPos(pos) {\n return { node: this.textDOM, offset: pos };\n }\n ignoreMutation(mut) {\n return mut.type === 'characterData' && mut.target.nodeValue == mut.oldValue;\n }\n}\n// A mark desc represents a mark. May have multiple children,\n// depending on how the mark is split. Note that marks are drawn using\n// a fixed nesting order, for simplicity and predictability, so in\n// some cases they will be split more often than would appear\n// necessary.\nclass MarkViewDesc extends ViewDesc {\n constructor(parent, mark, dom, contentDOM) {\n super(parent, [], dom, contentDOM);\n this.mark = mark;\n }\n static create(parent, mark, inline, view) {\n let custom = view.nodeViews[mark.type.name];\n let spec = custom && custom(mark, view, inline);\n if (!spec || !spec.dom)\n spec = DOMSerializer.renderSpec(document, mark.type.spec.toDOM(mark, inline));\n return new MarkViewDesc(parent, mark, spec.dom, spec.contentDOM || spec.dom);\n }\n parseRule() {\n if ((this.dirty & NODE_DIRTY) || this.mark.type.spec.reparseInView)\n return null;\n return { mark: this.mark.type.name, attrs: this.mark.attrs, contentElement: this.contentDOM };\n }\n matchesMark(mark) { return this.dirty != NODE_DIRTY && this.mark.eq(mark); }\n markDirty(from, to) {\n super.markDirty(from, to);\n // Move dirty info to nearest node view\n if (this.dirty != NOT_DIRTY) {\n let parent = this.parent;\n while (!parent.node)\n parent = parent.parent;\n if (parent.dirty < this.dirty)\n parent.dirty = this.dirty;\n this.dirty = NOT_DIRTY;\n }\n }\n slice(from, to, view) {\n let copy = MarkViewDesc.create(this.parent, this.mark, true, view);\n let nodes = this.children, size = this.size;\n if (to < size)\n nodes = replaceNodes(nodes, to, size, view);\n if (from > 0)\n nodes = replaceNodes(nodes, 0, from, view);\n for (let i = 0; i < nodes.length; i++)\n nodes[i].parent = copy;\n copy.children = nodes;\n return copy;\n }\n}\n// Node view descs are the main, most common type of view desc, and\n// correspond to an actual node in the document. Unlike mark descs,\n// they populate their child array themselves.\nclass NodeViewDesc extends ViewDesc {\n constructor(parent, node, outerDeco, innerDeco, dom, contentDOM, nodeDOM, view, pos) {\n super(parent, [], dom, contentDOM);\n this.node = node;\n this.outerDeco = outerDeco;\n this.innerDeco = innerDeco;\n this.nodeDOM = nodeDOM;\n }\n // By default, a node is rendered using the `toDOM` method from the\n // node type spec. But client code can use the `nodeViews` spec to\n // supply a custom node view, which can influence various aspects of\n // the way the node works.\n //\n // (Using subclassing for this was intentionally decided against,\n // since it'd require exposing a whole slew of finicky\n // implementation details to the user code that they probably will\n // never need.)\n static create(parent, node, outerDeco, innerDeco, view, pos) {\n let custom = view.nodeViews[node.type.name], descObj;\n let spec = custom && custom(node, view, () => {\n // (This is a function that allows the custom view to find its\n // own position)\n if (!descObj)\n return pos;\n if (descObj.parent)\n return descObj.parent.posBeforeChild(descObj);\n }, outerDeco, innerDeco);\n let dom = spec && spec.dom, contentDOM = spec && spec.contentDOM;\n if (node.isText) {\n if (!dom)\n dom = document.createTextNode(node.text);\n else if (dom.nodeType != 3)\n throw new RangeError(\"Text must be rendered as a DOM text node\");\n }\n else if (!dom) {\n ({ dom, contentDOM } = DOMSerializer.renderSpec(document, node.type.spec.toDOM(node)));\n }\n if (!contentDOM && !node.isText && dom.nodeName != \"BR\") { // Chrome gets confused by
      \n if (!dom.hasAttribute(\"contenteditable\"))\n dom.contentEditable = \"false\";\n if (node.type.spec.draggable)\n dom.draggable = true;\n }\n let nodeDOM = dom;\n dom = applyOuterDeco(dom, outerDeco, node);\n if (spec)\n return descObj = new CustomNodeViewDesc(parent, node, outerDeco, innerDeco, dom, contentDOM || null, nodeDOM, spec, view, pos + 1);\n else if (node.isText)\n return new TextViewDesc(parent, node, outerDeco, innerDeco, dom, nodeDOM, view);\n else\n return new NodeViewDesc(parent, node, outerDeco, innerDeco, dom, contentDOM || null, nodeDOM, view, pos + 1);\n }\n parseRule() {\n // Experimental kludge to allow opt-in re-parsing of nodes\n if (this.node.type.spec.reparseInView)\n return null;\n // FIXME the assumption that this can always return the current\n // attrs means that if the user somehow manages to change the\n // attrs in the dom, that won't be picked up. Not entirely sure\n // whether this is a problem\n let rule = { node: this.node.type.name, attrs: this.node.attrs };\n if (this.node.type.whitespace == \"pre\")\n rule.preserveWhitespace = \"full\";\n if (!this.contentDOM) {\n rule.getContent = () => this.node.content;\n }\n else if (!this.contentLost) {\n rule.contentElement = this.contentDOM;\n }\n else {\n // Chrome likes to randomly recreate parent nodes when\n // backspacing things. When that happens, this tries to find the\n // new parent.\n for (let i = this.children.length - 1; i >= 0; i--) {\n let child = this.children[i];\n if (this.dom.contains(child.dom.parentNode)) {\n rule.contentElement = child.dom.parentNode;\n break;\n }\n }\n if (!rule.contentElement)\n rule.getContent = () => Fragment.empty;\n }\n return rule;\n }\n matchesNode(node, outerDeco, innerDeco) {\n return this.dirty == NOT_DIRTY && node.eq(this.node) &&\n sameOuterDeco(outerDeco, this.outerDeco) && innerDeco.eq(this.innerDeco);\n }\n get size() { return this.node.nodeSize; }\n get border() { return this.node.isLeaf ? 0 : 1; }\n // Syncs `this.children` to match `this.node.content` and the local\n // decorations, possibly introducing nesting for marks. Then, in a\n // separate step, syncs the DOM inside `this.contentDOM` to\n // `this.children`.\n updateChildren(view, pos) {\n let inline = this.node.inlineContent, off = pos;\n let composition = view.composing ? this.localCompositionInfo(view, pos) : null;\n let localComposition = composition && composition.pos > -1 ? composition : null;\n let compositionInChild = composition && composition.pos < 0;\n let updater = new ViewTreeUpdater(this, localComposition && localComposition.node, view);\n iterDeco(this.node, this.innerDeco, (widget, i, insideNode) => {\n if (widget.spec.marks)\n updater.syncToMarks(widget.spec.marks, inline, view);\n else if (widget.type.side >= 0 && !insideNode)\n updater.syncToMarks(i == this.node.childCount ? Mark.none : this.node.child(i).marks, inline, view);\n // If the next node is a desc matching this widget, reuse it,\n // otherwise insert the widget as a new view desc.\n updater.placeWidget(widget, view, off);\n }, (child, outerDeco, innerDeco, i) => {\n // Make sure the wrapping mark descs match the node's marks.\n updater.syncToMarks(child.marks, inline, view);\n // Try several strategies for drawing this node\n let compIndex;\n if (updater.findNodeMatch(child, outerDeco, innerDeco, i)) ;\n else if (compositionInChild && view.state.selection.from > off &&\n view.state.selection.to < off + child.nodeSize &&\n (compIndex = updater.findIndexWithChild(composition.node)) > -1 &&\n updater.updateNodeAt(child, outerDeco, innerDeco, compIndex, view)) ;\n else if (updater.updateNextNode(child, outerDeco, innerDeco, view, i, off)) ;\n else {\n // Add it as a new view\n updater.addNode(child, outerDeco, innerDeco, view, off);\n }\n off += child.nodeSize;\n });\n // Drop all remaining descs after the current position.\n updater.syncToMarks([], inline, view);\n if (this.node.isTextblock)\n updater.addTextblockHacks();\n updater.destroyRest();\n // Sync the DOM if anything changed\n if (updater.changed || this.dirty == CONTENT_DIRTY) {\n // May have to protect focused DOM from being changed if a composition is active\n if (localComposition)\n this.protectLocalComposition(view, localComposition);\n renderDescs(this.contentDOM, this.children, view);\n if (ios)\n iosHacks(this.dom);\n }\n }\n localCompositionInfo(view, pos) {\n // Only do something if both the selection and a focused text node\n // are inside of this node\n let { from, to } = view.state.selection;\n if (!(view.state.selection instanceof TextSelection) || from < pos || to > pos + this.node.content.size)\n return null;\n let textNode = view.input.compositionNode;\n if (!textNode || !this.dom.contains(textNode.parentNode))\n return null;\n if (this.node.inlineContent) {\n // Find the text in the focused node in the node, stop if it's not\n // there (may have been modified through other means, in which\n // case it should overwritten)\n let text = textNode.nodeValue;\n let textPos = findTextInFragment(this.node.content, text, from - pos, to - pos);\n return textPos < 0 ? null : { node: textNode, pos: textPos, text };\n }\n else {\n return { node: textNode, pos: -1, text: \"\" };\n }\n }\n protectLocalComposition(view, { node, pos, text }) {\n // The node is already part of a local view desc, leave it there\n if (this.getDesc(node))\n return;\n // Create a composition view for the orphaned nodes\n let topNode = node;\n for (;; topNode = topNode.parentNode) {\n if (topNode.parentNode == this.contentDOM)\n break;\n while (topNode.previousSibling)\n topNode.parentNode.removeChild(topNode.previousSibling);\n while (topNode.nextSibling)\n topNode.parentNode.removeChild(topNode.nextSibling);\n if (topNode.pmViewDesc)\n topNode.pmViewDesc = undefined;\n }\n let desc = new CompositionViewDesc(this, topNode, node, text);\n view.input.compositionNodes.push(desc);\n // Patch up this.children to contain the composition view\n this.children = replaceNodes(this.children, pos, pos + text.length, view, desc);\n }\n // If this desc must be updated to match the given node decoration,\n // do so and return true.\n update(node, outerDeco, innerDeco, view) {\n if (this.dirty == NODE_DIRTY ||\n !node.sameMarkup(this.node))\n return false;\n this.updateInner(node, outerDeco, innerDeco, view);\n return true;\n }\n updateInner(node, outerDeco, innerDeco, view) {\n this.updateOuterDeco(outerDeco);\n this.node = node;\n this.innerDeco = innerDeco;\n if (this.contentDOM)\n this.updateChildren(view, this.posAtStart);\n this.dirty = NOT_DIRTY;\n }\n updateOuterDeco(outerDeco) {\n if (sameOuterDeco(outerDeco, this.outerDeco))\n return;\n let needsWrap = this.nodeDOM.nodeType != 1;\n let oldDOM = this.dom;\n this.dom = patchOuterDeco(this.dom, this.nodeDOM, computeOuterDeco(this.outerDeco, this.node, needsWrap), computeOuterDeco(outerDeco, this.node, needsWrap));\n if (this.dom != oldDOM) {\n oldDOM.pmViewDesc = undefined;\n this.dom.pmViewDesc = this;\n }\n this.outerDeco = outerDeco;\n }\n // Mark this node as being the selected node.\n selectNode() {\n if (this.nodeDOM.nodeType == 1)\n this.nodeDOM.classList.add(\"ProseMirror-selectednode\");\n if (this.contentDOM || !this.node.type.spec.draggable)\n this.dom.draggable = true;\n }\n // Remove selected node marking from this node.\n deselectNode() {\n if (this.nodeDOM.nodeType == 1)\n this.nodeDOM.classList.remove(\"ProseMirror-selectednode\");\n if (this.contentDOM || !this.node.type.spec.draggable)\n this.dom.removeAttribute(\"draggable\");\n }\n get domAtom() { return this.node.isAtom; }\n}\n// Create a view desc for the top-level document node, to be exported\n// and used by the view class.\nfunction docViewDesc(doc, outerDeco, innerDeco, dom, view) {\n applyOuterDeco(dom, outerDeco, doc);\n let docView = new NodeViewDesc(undefined, doc, outerDeco, innerDeco, dom, dom, dom, view, 0);\n if (docView.contentDOM)\n docView.updateChildren(view, 0);\n return docView;\n}\nclass TextViewDesc extends NodeViewDesc {\n constructor(parent, node, outerDeco, innerDeco, dom, nodeDOM, view) {\n super(parent, node, outerDeco, innerDeco, dom, null, nodeDOM, view, 0);\n }\n parseRule() {\n let skip = this.nodeDOM.parentNode;\n while (skip && skip != this.dom && !skip.pmIsDeco)\n skip = skip.parentNode;\n return { skip: (skip || true) };\n }\n update(node, outerDeco, innerDeco, view) {\n if (this.dirty == NODE_DIRTY || (this.dirty != NOT_DIRTY && !this.inParent()) ||\n !node.sameMarkup(this.node))\n return false;\n this.updateOuterDeco(outerDeco);\n if ((this.dirty != NOT_DIRTY || node.text != this.node.text) && node.text != this.nodeDOM.nodeValue) {\n this.nodeDOM.nodeValue = node.text;\n if (view.trackWrites == this.nodeDOM)\n view.trackWrites = null;\n }\n this.node = node;\n this.dirty = NOT_DIRTY;\n return true;\n }\n inParent() {\n let parentDOM = this.parent.contentDOM;\n for (let n = this.nodeDOM; n; n = n.parentNode)\n if (n == parentDOM)\n return true;\n return false;\n }\n domFromPos(pos) {\n return { node: this.nodeDOM, offset: pos };\n }\n localPosFromDOM(dom, offset, bias) {\n if (dom == this.nodeDOM)\n return this.posAtStart + Math.min(offset, this.node.text.length);\n return super.localPosFromDOM(dom, offset, bias);\n }\n ignoreMutation(mutation) {\n return mutation.type != \"characterData\" && mutation.type != \"selection\";\n }\n slice(from, to, view) {\n let node = this.node.cut(from, to), dom = document.createTextNode(node.text);\n return new TextViewDesc(this.parent, node, this.outerDeco, this.innerDeco, dom, dom, view);\n }\n markDirty(from, to) {\n super.markDirty(from, to);\n if (this.dom != this.nodeDOM && (from == 0 || to == this.nodeDOM.nodeValue.length))\n this.dirty = NODE_DIRTY;\n }\n get domAtom() { return false; }\n isText(text) { return this.node.text == text; }\n}\n// A dummy desc used to tag trailing BR or IMG nodes created to work\n// around contentEditable terribleness.\nclass TrailingHackViewDesc extends ViewDesc {\n parseRule() { return { ignore: true }; }\n matchesHack(nodeName) { return this.dirty == NOT_DIRTY && this.dom.nodeName == nodeName; }\n get domAtom() { return true; }\n get ignoreForCoords() { return this.dom.nodeName == \"IMG\"; }\n}\n// A separate subclass is used for customized node views, so that the\n// extra checks only have to be made for nodes that are actually\n// customized.\nclass CustomNodeViewDesc extends NodeViewDesc {\n constructor(parent, node, outerDeco, innerDeco, dom, contentDOM, nodeDOM, spec, view, pos) {\n super(parent, node, outerDeco, innerDeco, dom, contentDOM, nodeDOM, view, pos);\n this.spec = spec;\n }\n // A custom `update` method gets to decide whether the update goes\n // through. If it does, and there's a `contentDOM` node, our logic\n // updates the children.\n update(node, outerDeco, innerDeco, view) {\n if (this.dirty == NODE_DIRTY)\n return false;\n if (this.spec.update) {\n let result = this.spec.update(node, outerDeco, innerDeco);\n if (result)\n this.updateInner(node, outerDeco, innerDeco, view);\n return result;\n }\n else if (!this.contentDOM && !node.isLeaf) {\n return false;\n }\n else {\n return super.update(node, outerDeco, innerDeco, view);\n }\n }\n selectNode() {\n this.spec.selectNode ? this.spec.selectNode() : super.selectNode();\n }\n deselectNode() {\n this.spec.deselectNode ? this.spec.deselectNode() : super.deselectNode();\n }\n setSelection(anchor, head, root, force) {\n this.spec.setSelection ? this.spec.setSelection(anchor, head, root)\n : super.setSelection(anchor, head, root, force);\n }\n destroy() {\n if (this.spec.destroy)\n this.spec.destroy();\n super.destroy();\n }\n stopEvent(event) {\n return this.spec.stopEvent ? this.spec.stopEvent(event) : false;\n }\n ignoreMutation(mutation) {\n return this.spec.ignoreMutation ? this.spec.ignoreMutation(mutation) : super.ignoreMutation(mutation);\n }\n}\n// Sync the content of the given DOM node with the nodes associated\n// with the given array of view descs, recursing into mark descs\n// because this should sync the subtree for a whole node at a time.\nfunction renderDescs(parentDOM, descs, view) {\n let dom = parentDOM.firstChild, written = false;\n for (let i = 0; i < descs.length; i++) {\n let desc = descs[i], childDOM = desc.dom;\n if (childDOM.parentNode == parentDOM) {\n while (childDOM != dom) {\n dom = rm(dom);\n written = true;\n }\n dom = dom.nextSibling;\n }\n else {\n written = true;\n parentDOM.insertBefore(childDOM, dom);\n }\n if (desc instanceof MarkViewDesc) {\n let pos = dom ? dom.previousSibling : parentDOM.lastChild;\n renderDescs(desc.contentDOM, desc.children, view);\n dom = pos ? pos.nextSibling : parentDOM.firstChild;\n }\n }\n while (dom) {\n dom = rm(dom);\n written = true;\n }\n if (written && view.trackWrites == parentDOM)\n view.trackWrites = null;\n}\nconst OuterDecoLevel = function (nodeName) {\n if (nodeName)\n this.nodeName = nodeName;\n};\nOuterDecoLevel.prototype = Object.create(null);\nconst noDeco = [new OuterDecoLevel];\nfunction computeOuterDeco(outerDeco, node, needsWrap) {\n if (outerDeco.length == 0)\n return noDeco;\n let top = needsWrap ? noDeco[0] : new OuterDecoLevel, result = [top];\n for (let i = 0; i < outerDeco.length; i++) {\n let attrs = outerDeco[i].type.attrs;\n if (!attrs)\n continue;\n if (attrs.nodeName)\n result.push(top = new OuterDecoLevel(attrs.nodeName));\n for (let name in attrs) {\n let val = attrs[name];\n if (val == null)\n continue;\n if (needsWrap && result.length == 1)\n result.push(top = new OuterDecoLevel(node.isInline ? \"span\" : \"div\"));\n if (name == \"class\")\n top.class = (top.class ? top.class + \" \" : \"\") + val;\n else if (name == \"style\")\n top.style = (top.style ? top.style + \";\" : \"\") + val;\n else if (name != \"nodeName\")\n top[name] = val;\n }\n }\n return result;\n}\nfunction patchOuterDeco(outerDOM, nodeDOM, prevComputed, curComputed) {\n // Shortcut for trivial case\n if (prevComputed == noDeco && curComputed == noDeco)\n return nodeDOM;\n let curDOM = nodeDOM;\n for (let i = 0; i < curComputed.length; i++) {\n let deco = curComputed[i], prev = prevComputed[i];\n if (i) {\n let parent;\n if (prev && prev.nodeName == deco.nodeName && curDOM != outerDOM &&\n (parent = curDOM.parentNode) && parent.nodeName.toLowerCase() == deco.nodeName) {\n curDOM = parent;\n }\n else {\n parent = document.createElement(deco.nodeName);\n parent.pmIsDeco = true;\n parent.appendChild(curDOM);\n prev = noDeco[0];\n curDOM = parent;\n }\n }\n patchAttributes(curDOM, prev || noDeco[0], deco);\n }\n return curDOM;\n}\nfunction patchAttributes(dom, prev, cur) {\n for (let name in prev)\n if (name != \"class\" && name != \"style\" && name != \"nodeName\" && !(name in cur))\n dom.removeAttribute(name);\n for (let name in cur)\n if (name != \"class\" && name != \"style\" && name != \"nodeName\" && cur[name] != prev[name])\n dom.setAttribute(name, cur[name]);\n if (prev.class != cur.class) {\n let prevList = prev.class ? prev.class.split(\" \").filter(Boolean) : [];\n let curList = cur.class ? cur.class.split(\" \").filter(Boolean) : [];\n for (let i = 0; i < prevList.length; i++)\n if (curList.indexOf(prevList[i]) == -1)\n dom.classList.remove(prevList[i]);\n for (let i = 0; i < curList.length; i++)\n if (prevList.indexOf(curList[i]) == -1)\n dom.classList.add(curList[i]);\n if (dom.classList.length == 0)\n dom.removeAttribute(\"class\");\n }\n if (prev.style != cur.style) {\n if (prev.style) {\n let prop = /\\s*([\\w\\-\\xa1-\\uffff]+)\\s*:(?:\"(?:\\\\.|[^\"])*\"|'(?:\\\\.|[^'])*'|\\(.*?\\)|[^;])*/g, m;\n while (m = prop.exec(prev.style))\n dom.style.removeProperty(m[1]);\n }\n if (cur.style)\n dom.style.cssText += cur.style;\n }\n}\nfunction applyOuterDeco(dom, deco, node) {\n return patchOuterDeco(dom, dom, noDeco, computeOuterDeco(deco, node, dom.nodeType != 1));\n}\nfunction sameOuterDeco(a, b) {\n if (a.length != b.length)\n return false;\n for (let i = 0; i < a.length; i++)\n if (!a[i].type.eq(b[i].type))\n return false;\n return true;\n}\n// Remove a DOM node and return its next sibling.\nfunction rm(dom) {\n let next = dom.nextSibling;\n dom.parentNode.removeChild(dom);\n return next;\n}\n// Helper class for incrementally updating a tree of mark descs and\n// the widget and node descs inside of them.\nclass ViewTreeUpdater {\n constructor(top, lock, view) {\n this.lock = lock;\n this.view = view;\n // Index into `this.top`'s child array, represents the current\n // update position.\n this.index = 0;\n // When entering a mark, the current top and index are pushed\n // onto this.\n this.stack = [];\n // Tracks whether anything was changed\n this.changed = false;\n this.top = top;\n this.preMatch = preMatch(top.node.content, top);\n }\n // Destroy and remove the children between the given indices in\n // `this.top`.\n destroyBetween(start, end) {\n if (start == end)\n return;\n for (let i = start; i < end; i++)\n this.top.children[i].destroy();\n this.top.children.splice(start, end - start);\n this.changed = true;\n }\n // Destroy all remaining children in `this.top`.\n destroyRest() {\n this.destroyBetween(this.index, this.top.children.length);\n }\n // Sync the current stack of mark descs with the given array of\n // marks, reusing existing mark descs when possible.\n syncToMarks(marks, inline, view) {\n let keep = 0, depth = this.stack.length >> 1;\n let maxKeep = Math.min(depth, marks.length);\n while (keep < maxKeep &&\n (keep == depth - 1 ? this.top : this.stack[(keep + 1) << 1])\n .matchesMark(marks[keep]) && marks[keep].type.spec.spanning !== false)\n keep++;\n while (keep < depth) {\n this.destroyRest();\n this.top.dirty = NOT_DIRTY;\n this.index = this.stack.pop();\n this.top = this.stack.pop();\n depth--;\n }\n while (depth < marks.length) {\n this.stack.push(this.top, this.index + 1);\n let found = -1;\n for (let i = this.index; i < Math.min(this.index + 3, this.top.children.length); i++) {\n let next = this.top.children[i];\n if (next.matchesMark(marks[depth]) && !this.isLocked(next.dom)) {\n found = i;\n break;\n }\n }\n if (found > -1) {\n if (found > this.index) {\n this.changed = true;\n this.destroyBetween(this.index, found);\n }\n this.top = this.top.children[this.index];\n }\n else {\n let markDesc = MarkViewDesc.create(this.top, marks[depth], inline, view);\n this.top.children.splice(this.index, 0, markDesc);\n this.top = markDesc;\n this.changed = true;\n }\n this.index = 0;\n depth++;\n }\n }\n // Try to find a node desc matching the given data. Skip over it and\n // return true when successful.\n findNodeMatch(node, outerDeco, innerDeco, index) {\n let found = -1, targetDesc;\n if (index >= this.preMatch.index &&\n (targetDesc = this.preMatch.matches[index - this.preMatch.index]).parent == this.top &&\n targetDesc.matchesNode(node, outerDeco, innerDeco)) {\n found = this.top.children.indexOf(targetDesc, this.index);\n }\n else {\n for (let i = this.index, e = Math.min(this.top.children.length, i + 5); i < e; i++) {\n let child = this.top.children[i];\n if (child.matchesNode(node, outerDeco, innerDeco) && !this.preMatch.matched.has(child)) {\n found = i;\n break;\n }\n }\n }\n if (found < 0)\n return false;\n this.destroyBetween(this.index, found);\n this.index++;\n return true;\n }\n updateNodeAt(node, outerDeco, innerDeco, index, view) {\n let child = this.top.children[index];\n if (child.dirty == NODE_DIRTY && child.dom == child.contentDOM)\n child.dirty = CONTENT_DIRTY;\n if (!child.update(node, outerDeco, innerDeco, view))\n return false;\n this.destroyBetween(this.index, index);\n this.index++;\n return true;\n }\n findIndexWithChild(domNode) {\n for (;;) {\n let parent = domNode.parentNode;\n if (!parent)\n return -1;\n if (parent == this.top.contentDOM) {\n let desc = domNode.pmViewDesc;\n if (desc)\n for (let i = this.index; i < this.top.children.length; i++) {\n if (this.top.children[i] == desc)\n return i;\n }\n return -1;\n }\n domNode = parent;\n }\n }\n // Try to update the next node, if any, to the given data. Checks\n // pre-matches to avoid overwriting nodes that could still be used.\n updateNextNode(node, outerDeco, innerDeco, view, index, pos) {\n for (let i = this.index; i < this.top.children.length; i++) {\n let next = this.top.children[i];\n if (next instanceof NodeViewDesc) {\n let preMatch = this.preMatch.matched.get(next);\n if (preMatch != null && preMatch != index)\n return false;\n let nextDOM = next.dom, updated;\n // Can't update if nextDOM is or contains this.lock, except if\n // it's a text node whose content already matches the new text\n // and whose decorations match the new ones.\n let locked = this.isLocked(nextDOM) &&\n !(node.isText && next.node && next.node.isText && next.nodeDOM.nodeValue == node.text &&\n next.dirty != NODE_DIRTY && sameOuterDeco(outerDeco, next.outerDeco));\n if (!locked && next.update(node, outerDeco, innerDeco, view)) {\n this.destroyBetween(this.index, i);\n if (next.dom != nextDOM)\n this.changed = true;\n this.index++;\n return true;\n }\n else if (!locked && (updated = this.recreateWrapper(next, node, outerDeco, innerDeco, view, pos))) {\n this.top.children[this.index] = updated;\n if (updated.contentDOM) {\n updated.dirty = CONTENT_DIRTY;\n updated.updateChildren(view, pos + 1);\n updated.dirty = NOT_DIRTY;\n }\n this.changed = true;\n this.index++;\n return true;\n }\n break;\n }\n }\n return false;\n }\n // When a node with content is replaced by a different node with\n // identical content, move over its children.\n recreateWrapper(next, node, outerDeco, innerDeco, view, pos) {\n if (next.dirty || node.isAtom || !next.children.length ||\n !next.node.content.eq(node.content))\n return null;\n let wrapper = NodeViewDesc.create(this.top, node, outerDeco, innerDeco, view, pos);\n if (wrapper.contentDOM) {\n wrapper.children = next.children;\n next.children = [];\n for (let ch of wrapper.children)\n ch.parent = wrapper;\n }\n next.destroy();\n return wrapper;\n }\n // Insert the node as a newly created node desc.\n addNode(node, outerDeco, innerDeco, view, pos) {\n let desc = NodeViewDesc.create(this.top, node, outerDeco, innerDeco, view, pos);\n if (desc.contentDOM)\n desc.updateChildren(view, pos + 1);\n this.top.children.splice(this.index++, 0, desc);\n this.changed = true;\n }\n placeWidget(widget, view, pos) {\n let next = this.index < this.top.children.length ? this.top.children[this.index] : null;\n if (next && next.matchesWidget(widget) &&\n (widget == next.widget || !next.widget.type.toDOM.parentNode)) {\n this.index++;\n }\n else {\n let desc = new WidgetViewDesc(this.top, widget, view, pos);\n this.top.children.splice(this.index++, 0, desc);\n this.changed = true;\n }\n }\n // Make sure a textblock looks and behaves correctly in\n // contentEditable.\n addTextblockHacks() {\n let lastChild = this.top.children[this.index - 1], parent = this.top;\n while (lastChild instanceof MarkViewDesc) {\n parent = lastChild;\n lastChild = parent.children[parent.children.length - 1];\n }\n if (!lastChild || // Empty textblock\n !(lastChild instanceof TextViewDesc) ||\n /\\n$/.test(lastChild.node.text) ||\n (this.view.requiresGeckoHackNode && /\\s$/.test(lastChild.node.text))) {\n // Avoid bugs in Safari's cursor drawing (#1165) and Chrome's mouse selection (#1152)\n if ((safari || chrome) && lastChild && lastChild.dom.contentEditable == \"false\")\n this.addHackNode(\"IMG\", parent);\n this.addHackNode(\"BR\", this.top);\n }\n }\n addHackNode(nodeName, parent) {\n if (parent == this.top && this.index < parent.children.length && parent.children[this.index].matchesHack(nodeName)) {\n this.index++;\n }\n else {\n let dom = document.createElement(nodeName);\n if (nodeName == \"IMG\") {\n dom.className = \"ProseMirror-separator\";\n dom.alt = \"\";\n }\n if (nodeName == \"BR\")\n dom.className = \"ProseMirror-trailingBreak\";\n let hack = new TrailingHackViewDesc(this.top, [], dom, null);\n if (parent != this.top)\n parent.children.push(hack);\n else\n parent.children.splice(this.index++, 0, hack);\n this.changed = true;\n }\n }\n isLocked(node) {\n return this.lock && (node == this.lock || node.nodeType == 1 && node.contains(this.lock.parentNode));\n }\n}\n// Iterate from the end of the fragment and array of descs to find\n// directly matching ones, in order to avoid overeagerly reusing those\n// for other nodes. Returns the fragment index of the first node that\n// is part of the sequence of matched nodes at the end of the\n// fragment.\nfunction preMatch(frag, parentDesc) {\n let curDesc = parentDesc, descI = curDesc.children.length;\n let fI = frag.childCount, matched = new Map, matches = [];\n outer: while (fI > 0) {\n let desc;\n for (;;) {\n if (descI) {\n let next = curDesc.children[descI - 1];\n if (next instanceof MarkViewDesc) {\n curDesc = next;\n descI = next.children.length;\n }\n else {\n desc = next;\n descI--;\n break;\n }\n }\n else if (curDesc == parentDesc) {\n break outer;\n }\n else {\n // FIXME\n descI = curDesc.parent.children.indexOf(curDesc);\n curDesc = curDesc.parent;\n }\n }\n let node = desc.node;\n if (!node)\n continue;\n if (node != frag.child(fI - 1))\n break;\n --fI;\n matched.set(desc, fI);\n matches.push(desc);\n }\n return { index: fI, matched, matches: matches.reverse() };\n}\nfunction compareSide(a, b) {\n return a.type.side - b.type.side;\n}\n// This function abstracts iterating over the nodes and decorations in\n// a fragment. Calls `onNode` for each node, with its local and child\n// decorations. Splits text nodes when there is a decoration starting\n// or ending inside of them. Calls `onWidget` for each widget.\nfunction iterDeco(parent, deco, onWidget, onNode) {\n let locals = deco.locals(parent), offset = 0;\n // Simple, cheap variant for when there are no local decorations\n if (locals.length == 0) {\n for (let i = 0; i < parent.childCount; i++) {\n let child = parent.child(i);\n onNode(child, locals, deco.forChild(offset, child), i);\n offset += child.nodeSize;\n }\n return;\n }\n let decoIndex = 0, active = [], restNode = null;\n for (let parentIndex = 0;;) {\n let widget, widgets;\n while (decoIndex < locals.length && locals[decoIndex].to == offset) {\n let next = locals[decoIndex++];\n if (next.widget) {\n if (!widget)\n widget = next;\n else\n (widgets || (widgets = [widget])).push(next);\n }\n }\n if (widget) {\n if (widgets) {\n widgets.sort(compareSide);\n for (let i = 0; i < widgets.length; i++)\n onWidget(widgets[i], parentIndex, !!restNode);\n }\n else {\n onWidget(widget, parentIndex, !!restNode);\n }\n }\n let child, index;\n if (restNode) {\n index = -1;\n child = restNode;\n restNode = null;\n }\n else if (parentIndex < parent.childCount) {\n index = parentIndex;\n child = parent.child(parentIndex++);\n }\n else {\n break;\n }\n for (let i = 0; i < active.length; i++)\n if (active[i].to <= offset)\n active.splice(i--, 1);\n while (decoIndex < locals.length && locals[decoIndex].from <= offset && locals[decoIndex].to > offset)\n active.push(locals[decoIndex++]);\n let end = offset + child.nodeSize;\n if (child.isText) {\n let cutAt = end;\n if (decoIndex < locals.length && locals[decoIndex].from < cutAt)\n cutAt = locals[decoIndex].from;\n for (let i = 0; i < active.length; i++)\n if (active[i].to < cutAt)\n cutAt = active[i].to;\n if (cutAt < end) {\n restNode = child.cut(cutAt - offset);\n child = child.cut(0, cutAt - offset);\n end = cutAt;\n index = -1;\n }\n }\n else {\n while (decoIndex < locals.length && locals[decoIndex].to < end)\n decoIndex++;\n }\n let outerDeco = child.isInline && !child.isLeaf ? active.filter(d => !d.inline) : active.slice();\n onNode(child, outerDeco, deco.forChild(offset, child), index);\n offset = end;\n }\n}\n// List markers in Mobile Safari will mysteriously disappear\n// sometimes. This works around that.\nfunction iosHacks(dom) {\n if (dom.nodeName == \"UL\" || dom.nodeName == \"OL\") {\n let oldCSS = dom.style.cssText;\n dom.style.cssText = oldCSS + \"; list-style: square !important\";\n window.getComputedStyle(dom).listStyle;\n dom.style.cssText = oldCSS;\n }\n}\n// Find a piece of text in an inline fragment, overlapping from-to\nfunction findTextInFragment(frag, text, from, to) {\n for (let i = 0, pos = 0; i < frag.childCount && pos <= to;) {\n let child = frag.child(i++), childStart = pos;\n pos += child.nodeSize;\n if (!child.isText)\n continue;\n let str = child.text;\n while (i < frag.childCount) {\n let next = frag.child(i++);\n pos += next.nodeSize;\n if (!next.isText)\n break;\n str += next.text;\n }\n if (pos >= from) {\n if (pos >= to && str.slice(to - text.length - childStart, to - childStart) == text)\n return to - text.length;\n let found = childStart < to ? str.lastIndexOf(text, to - childStart - 1) : -1;\n if (found >= 0 && found + text.length + childStart >= from)\n return childStart + found;\n if (from == to && str.length >= (to + text.length) - childStart &&\n str.slice(to - childStart, to - childStart + text.length) == text)\n return to;\n }\n }\n return -1;\n}\n// Replace range from-to in an array of view descs with replacement\n// (may be null to just delete). This goes very much against the grain\n// of the rest of this code, which tends to create nodes with the\n// right shape in one go, rather than messing with them after\n// creation, but is necessary in the composition hack.\nfunction replaceNodes(nodes, from, to, view, replacement) {\n let result = [];\n for (let i = 0, off = 0; i < nodes.length; i++) {\n let child = nodes[i], start = off, end = off += child.size;\n if (start >= to || end <= from) {\n result.push(child);\n }\n else {\n if (start < from)\n result.push(child.slice(0, from - start, view));\n if (replacement) {\n result.push(replacement);\n replacement = undefined;\n }\n if (end > to)\n result.push(child.slice(to - start, child.size, view));\n }\n }\n return result;\n}\n\nfunction selectionFromDOM(view, origin = null) {\n let domSel = view.domSelectionRange(), doc = view.state.doc;\n if (!domSel.focusNode)\n return null;\n let nearestDesc = view.docView.nearestDesc(domSel.focusNode), inWidget = nearestDesc && nearestDesc.size == 0;\n let head = view.docView.posFromDOM(domSel.focusNode, domSel.focusOffset, 1);\n if (head < 0)\n return null;\n let $head = doc.resolve(head), $anchor, selection;\n if (selectionCollapsed(domSel)) {\n $anchor = $head;\n while (nearestDesc && !nearestDesc.node)\n nearestDesc = nearestDesc.parent;\n let nearestDescNode = nearestDesc.node;\n if (nearestDesc && nearestDescNode.isAtom && NodeSelection.isSelectable(nearestDescNode) && nearestDesc.parent\n && !(nearestDescNode.isInline && isOnEdge(domSel.focusNode, domSel.focusOffset, nearestDesc.dom))) {\n let pos = nearestDesc.posBefore;\n selection = new NodeSelection(head == pos ? $head : doc.resolve(pos));\n }\n }\n else {\n let anchor = view.docView.posFromDOM(domSel.anchorNode, domSel.anchorOffset, 1);\n if (anchor < 0)\n return null;\n $anchor = doc.resolve(anchor);\n }\n if (!selection) {\n let bias = origin == \"pointer\" || (view.state.selection.head < $head.pos && !inWidget) ? 1 : -1;\n selection = selectionBetween(view, $anchor, $head, bias);\n }\n return selection;\n}\nfunction editorOwnsSelection(view) {\n return view.editable ? view.hasFocus() :\n hasSelection(view) && document.activeElement && document.activeElement.contains(view.dom);\n}\nfunction selectionToDOM(view, force = false) {\n let sel = view.state.selection;\n syncNodeSelection(view, sel);\n if (!editorOwnsSelection(view))\n return;\n // The delayed drag selection causes issues with Cell Selections\n // in Safari. And the drag selection delay is to workarond issues\n // which only present in Chrome.\n if (!force && view.input.mouseDown && view.input.mouseDown.allowDefault && chrome) {\n let domSel = view.domSelectionRange(), curSel = view.domObserver.currentSelection;\n if (domSel.anchorNode && curSel.anchorNode &&\n isEquivalentPosition(domSel.anchorNode, domSel.anchorOffset, curSel.anchorNode, curSel.anchorOffset)) {\n view.input.mouseDown.delayedSelectionSync = true;\n view.domObserver.setCurSelection();\n return;\n }\n }\n view.domObserver.disconnectSelection();\n if (view.cursorWrapper) {\n selectCursorWrapper(view);\n }\n else {\n let { anchor, head } = sel, resetEditableFrom, resetEditableTo;\n if (brokenSelectBetweenUneditable && !(sel instanceof TextSelection)) {\n if (!sel.$from.parent.inlineContent)\n resetEditableFrom = temporarilyEditableNear(view, sel.from);\n if (!sel.empty && !sel.$from.parent.inlineContent)\n resetEditableTo = temporarilyEditableNear(view, sel.to);\n }\n view.docView.setSelection(anchor, head, view.root, force);\n if (brokenSelectBetweenUneditable) {\n if (resetEditableFrom)\n resetEditable(resetEditableFrom);\n if (resetEditableTo)\n resetEditable(resetEditableTo);\n }\n if (sel.visible) {\n view.dom.classList.remove(\"ProseMirror-hideselection\");\n }\n else {\n view.dom.classList.add(\"ProseMirror-hideselection\");\n if (\"onselectionchange\" in document)\n removeClassOnSelectionChange(view);\n }\n }\n view.domObserver.setCurSelection();\n view.domObserver.connectSelection();\n}\n// Kludge to work around Webkit not allowing a selection to start/end\n// between non-editable block nodes. We briefly make something\n// editable, set the selection, then set it uneditable again.\nconst brokenSelectBetweenUneditable = safari || chrome && chrome_version < 63;\nfunction temporarilyEditableNear(view, pos) {\n let { node, offset } = view.docView.domFromPos(pos, 0);\n let after = offset < node.childNodes.length ? node.childNodes[offset] : null;\n let before = offset ? node.childNodes[offset - 1] : null;\n if (safari && after && after.contentEditable == \"false\")\n return setEditable(after);\n if ((!after || after.contentEditable == \"false\") &&\n (!before || before.contentEditable == \"false\")) {\n if (after)\n return setEditable(after);\n else if (before)\n return setEditable(before);\n }\n}\nfunction setEditable(element) {\n element.contentEditable = \"true\";\n if (safari && element.draggable) {\n element.draggable = false;\n element.wasDraggable = true;\n }\n return element;\n}\nfunction resetEditable(element) {\n element.contentEditable = \"false\";\n if (element.wasDraggable) {\n element.draggable = true;\n element.wasDraggable = null;\n }\n}\nfunction removeClassOnSelectionChange(view) {\n let doc = view.dom.ownerDocument;\n doc.removeEventListener(\"selectionchange\", view.input.hideSelectionGuard);\n let domSel = view.domSelectionRange();\n let node = domSel.anchorNode, offset = domSel.anchorOffset;\n doc.addEventListener(\"selectionchange\", view.input.hideSelectionGuard = () => {\n if (domSel.anchorNode != node || domSel.anchorOffset != offset) {\n doc.removeEventListener(\"selectionchange\", view.input.hideSelectionGuard);\n setTimeout(() => {\n if (!editorOwnsSelection(view) || view.state.selection.visible)\n view.dom.classList.remove(\"ProseMirror-hideselection\");\n }, 20);\n }\n });\n}\nfunction selectCursorWrapper(view) {\n let domSel = view.domSelection(), range = document.createRange();\n let node = view.cursorWrapper.dom, img = node.nodeName == \"IMG\";\n if (img)\n range.setEnd(node.parentNode, domIndex(node) + 1);\n else\n range.setEnd(node, 0);\n range.collapse(false);\n domSel.removeAllRanges();\n domSel.addRange(range);\n // Kludge to kill 'control selection' in IE11 when selecting an\n // invisible cursor wrapper, since that would result in those weird\n // resize handles and a selection that considers the absolutely\n // positioned wrapper, rather than the root editable node, the\n // focused element.\n if (!img && !view.state.selection.visible && ie && ie_version <= 11) {\n node.disabled = true;\n node.disabled = false;\n }\n}\nfunction syncNodeSelection(view, sel) {\n if (sel instanceof NodeSelection) {\n let desc = view.docView.descAt(sel.from);\n if (desc != view.lastSelectedViewDesc) {\n clearNodeSelection(view);\n if (desc)\n desc.selectNode();\n view.lastSelectedViewDesc = desc;\n }\n }\n else {\n clearNodeSelection(view);\n }\n}\n// Clear all DOM statefulness of the last node selection.\nfunction clearNodeSelection(view) {\n if (view.lastSelectedViewDesc) {\n if (view.lastSelectedViewDesc.parent)\n view.lastSelectedViewDesc.deselectNode();\n view.lastSelectedViewDesc = undefined;\n }\n}\nfunction selectionBetween(view, $anchor, $head, bias) {\n return view.someProp(\"createSelectionBetween\", f => f(view, $anchor, $head))\n || TextSelection.between($anchor, $head, bias);\n}\nfunction hasFocusAndSelection(view) {\n if (view.editable && !view.hasFocus())\n return false;\n return hasSelection(view);\n}\nfunction hasSelection(view) {\n let sel = view.domSelectionRange();\n if (!sel.anchorNode)\n return false;\n try {\n // Firefox will raise 'permission denied' errors when accessing\n // properties of `sel.anchorNode` when it's in a generated CSS\n // element.\n return view.dom.contains(sel.anchorNode.nodeType == 3 ? sel.anchorNode.parentNode : sel.anchorNode) &&\n (view.editable || view.dom.contains(sel.focusNode.nodeType == 3 ? sel.focusNode.parentNode : sel.focusNode));\n }\n catch (_) {\n return false;\n }\n}\nfunction anchorInRightPlace(view) {\n let anchorDOM = view.docView.domFromPos(view.state.selection.anchor, 0);\n let domSel = view.domSelectionRange();\n return isEquivalentPosition(anchorDOM.node, anchorDOM.offset, domSel.anchorNode, domSel.anchorOffset);\n}\n\nfunction moveSelectionBlock(state, dir) {\n let { $anchor, $head } = state.selection;\n let $side = dir > 0 ? $anchor.max($head) : $anchor.min($head);\n let $start = !$side.parent.inlineContent ? $side : $side.depth ? state.doc.resolve(dir > 0 ? $side.after() : $side.before()) : null;\n return $start && Selection.findFrom($start, dir);\n}\nfunction apply(view, sel) {\n view.dispatch(view.state.tr.setSelection(sel).scrollIntoView());\n return true;\n}\nfunction selectHorizontally(view, dir, mods) {\n let sel = view.state.selection;\n if (sel instanceof TextSelection) {\n if (mods.indexOf(\"s\") > -1) {\n let { $head } = sel, node = $head.textOffset ? null : dir < 0 ? $head.nodeBefore : $head.nodeAfter;\n if (!node || node.isText || !node.isLeaf)\n return false;\n let $newHead = view.state.doc.resolve($head.pos + node.nodeSize * (dir < 0 ? -1 : 1));\n return apply(view, new TextSelection(sel.$anchor, $newHead));\n }\n else if (!sel.empty) {\n return false;\n }\n else if (view.endOfTextblock(dir > 0 ? \"forward\" : \"backward\")) {\n let next = moveSelectionBlock(view.state, dir);\n if (next && (next instanceof NodeSelection))\n return apply(view, next);\n return false;\n }\n else if (!(mac && mods.indexOf(\"m\") > -1)) {\n let $head = sel.$head, node = $head.textOffset ? null : dir < 0 ? $head.nodeBefore : $head.nodeAfter, desc;\n if (!node || node.isText)\n return false;\n let nodePos = dir < 0 ? $head.pos - node.nodeSize : $head.pos;\n if (!(node.isAtom || (desc = view.docView.descAt(nodePos)) && !desc.contentDOM))\n return false;\n if (NodeSelection.isSelectable(node)) {\n return apply(view, new NodeSelection(dir < 0 ? view.state.doc.resolve($head.pos - node.nodeSize) : $head));\n }\n else if (webkit) {\n // Chrome and Safari will introduce extra pointless cursor\n // positions around inline uneditable nodes, so we have to\n // take over and move the cursor past them (#937)\n return apply(view, new TextSelection(view.state.doc.resolve(dir < 0 ? nodePos : nodePos + node.nodeSize)));\n }\n else {\n return false;\n }\n }\n }\n else if (sel instanceof NodeSelection && sel.node.isInline) {\n return apply(view, new TextSelection(dir > 0 ? sel.$to : sel.$from));\n }\n else {\n let next = moveSelectionBlock(view.state, dir);\n if (next)\n return apply(view, next);\n return false;\n }\n}\nfunction nodeLen(node) {\n return node.nodeType == 3 ? node.nodeValue.length : node.childNodes.length;\n}\nfunction isIgnorable(dom, dir) {\n let desc = dom.pmViewDesc;\n return desc && desc.size == 0 && (dir < 0 || dom.nextSibling || dom.nodeName != \"BR\");\n}\nfunction skipIgnoredNodes(view, dir) {\n return dir < 0 ? skipIgnoredNodesBefore(view) : skipIgnoredNodesAfter(view);\n}\n// Make sure the cursor isn't directly after one or more ignored\n// nodes, which will confuse the browser's cursor motion logic.\nfunction skipIgnoredNodesBefore(view) {\n let sel = view.domSelectionRange();\n let node = sel.focusNode, offset = sel.focusOffset;\n if (!node)\n return;\n let moveNode, moveOffset, force = false;\n // Gecko will do odd things when the selection is directly in front\n // of a non-editable node, so in that case, move it into the next\n // node if possible. Issue prosemirror/prosemirror#832.\n if (gecko && node.nodeType == 1 && offset < nodeLen(node) && isIgnorable(node.childNodes[offset], -1))\n force = true;\n for (;;) {\n if (offset > 0) {\n if (node.nodeType != 1) {\n break;\n }\n else {\n let before = node.childNodes[offset - 1];\n if (isIgnorable(before, -1)) {\n moveNode = node;\n moveOffset = --offset;\n }\n else if (before.nodeType == 3) {\n node = before;\n offset = node.nodeValue.length;\n }\n else\n break;\n }\n }\n else if (isBlockNode(node)) {\n break;\n }\n else {\n let prev = node.previousSibling;\n while (prev && isIgnorable(prev, -1)) {\n moveNode = node.parentNode;\n moveOffset = domIndex(prev);\n prev = prev.previousSibling;\n }\n if (!prev) {\n node = node.parentNode;\n if (node == view.dom)\n break;\n offset = 0;\n }\n else {\n node = prev;\n offset = nodeLen(node);\n }\n }\n }\n if (force)\n setSelFocus(view, node, offset);\n else if (moveNode)\n setSelFocus(view, moveNode, moveOffset);\n}\n// Make sure the cursor isn't directly before one or more ignored\n// nodes.\nfunction skipIgnoredNodesAfter(view) {\n let sel = view.domSelectionRange();\n let node = sel.focusNode, offset = sel.focusOffset;\n if (!node)\n return;\n let len = nodeLen(node);\n let moveNode, moveOffset;\n for (;;) {\n if (offset < len) {\n if (node.nodeType != 1)\n break;\n let after = node.childNodes[offset];\n if (isIgnorable(after, 1)) {\n moveNode = node;\n moveOffset = ++offset;\n }\n else\n break;\n }\n else if (isBlockNode(node)) {\n break;\n }\n else {\n let next = node.nextSibling;\n while (next && isIgnorable(next, 1)) {\n moveNode = next.parentNode;\n moveOffset = domIndex(next) + 1;\n next = next.nextSibling;\n }\n if (!next) {\n node = node.parentNode;\n if (node == view.dom)\n break;\n offset = len = 0;\n }\n else {\n node = next;\n offset = 0;\n len = nodeLen(node);\n }\n }\n }\n if (moveNode)\n setSelFocus(view, moveNode, moveOffset);\n}\nfunction isBlockNode(dom) {\n let desc = dom.pmViewDesc;\n return desc && desc.node && desc.node.isBlock;\n}\nfunction textNodeAfter(node, offset) {\n while (node && offset == node.childNodes.length && !hasBlockDesc(node)) {\n offset = domIndex(node) + 1;\n node = node.parentNode;\n }\n while (node && offset < node.childNodes.length) {\n let next = node.childNodes[offset];\n if (next.nodeType == 3)\n return next;\n if (next.nodeType == 1 && next.contentEditable == \"false\")\n break;\n node = next;\n offset = 0;\n }\n}\nfunction textNodeBefore(node, offset) {\n while (node && !offset && !hasBlockDesc(node)) {\n offset = domIndex(node);\n node = node.parentNode;\n }\n while (node && offset) {\n let next = node.childNodes[offset - 1];\n if (next.nodeType == 3)\n return next;\n if (next.nodeType == 1 && next.contentEditable == \"false\")\n break;\n node = next;\n offset = node.childNodes.length;\n }\n}\nfunction setSelFocus(view, node, offset) {\n if (node.nodeType != 3) {\n let before, after;\n if (after = textNodeAfter(node, offset)) {\n node = after;\n offset = 0;\n }\n else if (before = textNodeBefore(node, offset)) {\n node = before;\n offset = before.nodeValue.length;\n }\n }\n let sel = view.domSelection();\n if (selectionCollapsed(sel)) {\n let range = document.createRange();\n range.setEnd(node, offset);\n range.setStart(node, offset);\n sel.removeAllRanges();\n sel.addRange(range);\n }\n else if (sel.extend) {\n sel.extend(node, offset);\n }\n view.domObserver.setCurSelection();\n let { state } = view;\n // If no state update ends up happening, reset the selection.\n setTimeout(() => {\n if (view.state == state)\n selectionToDOM(view);\n }, 50);\n}\nfunction findDirection(view, pos) {\n let $pos = view.state.doc.resolve(pos);\n if (!(chrome || windows) && $pos.parent.inlineContent) {\n let coords = view.coordsAtPos(pos);\n if (pos > $pos.start()) {\n let before = view.coordsAtPos(pos - 1);\n let mid = (before.top + before.bottom) / 2;\n if (mid > coords.top && mid < coords.bottom && Math.abs(before.left - coords.left) > 1)\n return before.left < coords.left ? \"ltr\" : \"rtl\";\n }\n if (pos < $pos.end()) {\n let after = view.coordsAtPos(pos + 1);\n let mid = (after.top + after.bottom) / 2;\n if (mid > coords.top && mid < coords.bottom && Math.abs(after.left - coords.left) > 1)\n return after.left > coords.left ? \"ltr\" : \"rtl\";\n }\n }\n let computed = getComputedStyle(view.dom).direction;\n return computed == \"rtl\" ? \"rtl\" : \"ltr\";\n}\n// Check whether vertical selection motion would involve node\n// selections. If so, apply it (if not, the result is left to the\n// browser)\nfunction selectVertically(view, dir, mods) {\n let sel = view.state.selection;\n if (sel instanceof TextSelection && !sel.empty || mods.indexOf(\"s\") > -1)\n return false;\n if (mac && mods.indexOf(\"m\") > -1)\n return false;\n let { $from, $to } = sel;\n if (!$from.parent.inlineContent || view.endOfTextblock(dir < 0 ? \"up\" : \"down\")) {\n let next = moveSelectionBlock(view.state, dir);\n if (next && (next instanceof NodeSelection))\n return apply(view, next);\n }\n if (!$from.parent.inlineContent) {\n let side = dir < 0 ? $from : $to;\n let beyond = sel instanceof AllSelection ? Selection.near(side, dir) : Selection.findFrom(side, dir);\n return beyond ? apply(view, beyond) : false;\n }\n return false;\n}\nfunction stopNativeHorizontalDelete(view, dir) {\n if (!(view.state.selection instanceof TextSelection))\n return true;\n let { $head, $anchor, empty } = view.state.selection;\n if (!$head.sameParent($anchor))\n return true;\n if (!empty)\n return false;\n if (view.endOfTextblock(dir > 0 ? \"forward\" : \"backward\"))\n return true;\n let nextNode = !$head.textOffset && (dir < 0 ? $head.nodeBefore : $head.nodeAfter);\n if (nextNode && !nextNode.isText) {\n let tr = view.state.tr;\n if (dir < 0)\n tr.delete($head.pos - nextNode.nodeSize, $head.pos);\n else\n tr.delete($head.pos, $head.pos + nextNode.nodeSize);\n view.dispatch(tr);\n return true;\n }\n return false;\n}\nfunction switchEditable(view, node, state) {\n view.domObserver.stop();\n node.contentEditable = state;\n view.domObserver.start();\n}\n// Issue #867 / #1090 / https://bugs.chromium.org/p/chromium/issues/detail?id=903821\n// In which Safari (and at some point in the past, Chrome) does really\n// wrong things when the down arrow is pressed when the cursor is\n// directly at the start of a textblock and has an uneditable node\n// after it\nfunction safariDownArrowBug(view) {\n if (!safari || view.state.selection.$head.parentOffset > 0)\n return false;\n let { focusNode, focusOffset } = view.domSelectionRange();\n if (focusNode && focusNode.nodeType == 1 && focusOffset == 0 &&\n focusNode.firstChild && focusNode.firstChild.contentEditable == \"false\") {\n let child = focusNode.firstChild;\n switchEditable(view, child, \"true\");\n setTimeout(() => switchEditable(view, child, \"false\"), 20);\n }\n return false;\n}\n// A backdrop key mapping used to make sure we always suppress keys\n// that have a dangerous default effect, even if the commands they are\n// bound to return false, and to make sure that cursor-motion keys\n// find a cursor (as opposed to a node selection) when pressed. For\n// cursor-motion keys, the code in the handlers also takes care of\n// block selections.\nfunction getMods(event) {\n let result = \"\";\n if (event.ctrlKey)\n result += \"c\";\n if (event.metaKey)\n result += \"m\";\n if (event.altKey)\n result += \"a\";\n if (event.shiftKey)\n result += \"s\";\n return result;\n}\nfunction captureKeyDown(view, event) {\n let code = event.keyCode, mods = getMods(event);\n if (code == 8 || (mac && code == 72 && mods == \"c\")) { // Backspace, Ctrl-h on Mac\n return stopNativeHorizontalDelete(view, -1) || skipIgnoredNodes(view, -1);\n }\n else if ((code == 46 && !event.shiftKey) || (mac && code == 68 && mods == \"c\")) { // Delete, Ctrl-d on Mac\n return stopNativeHorizontalDelete(view, 1) || skipIgnoredNodes(view, 1);\n }\n else if (code == 13 || code == 27) { // Enter, Esc\n return true;\n }\n else if (code == 37 || (mac && code == 66 && mods == \"c\")) { // Left arrow, Ctrl-b on Mac\n let dir = code == 37 ? (findDirection(view, view.state.selection.from) == \"ltr\" ? -1 : 1) : -1;\n return selectHorizontally(view, dir, mods) || skipIgnoredNodes(view, dir);\n }\n else if (code == 39 || (mac && code == 70 && mods == \"c\")) { // Right arrow, Ctrl-f on Mac\n let dir = code == 39 ? (findDirection(view, view.state.selection.from) == \"ltr\" ? 1 : -1) : 1;\n return selectHorizontally(view, dir, mods) || skipIgnoredNodes(view, dir);\n }\n else if (code == 38 || (mac && code == 80 && mods == \"c\")) { // Up arrow, Ctrl-p on Mac\n return selectVertically(view, -1, mods) || skipIgnoredNodes(view, -1);\n }\n else if (code == 40 || (mac && code == 78 && mods == \"c\")) { // Down arrow, Ctrl-n on Mac\n return safariDownArrowBug(view) || selectVertically(view, 1, mods) || skipIgnoredNodes(view, 1);\n }\n else if (mods == (mac ? \"m\" : \"c\") &&\n (code == 66 || code == 73 || code == 89 || code == 90)) { // Mod-[biyz]\n return true;\n }\n return false;\n}\n\nfunction serializeForClipboard(view, slice) {\n view.someProp(\"transformCopied\", f => { slice = f(slice, view); });\n let context = [], { content, openStart, openEnd } = slice;\n while (openStart > 1 && openEnd > 1 && content.childCount == 1 && content.firstChild.childCount == 1) {\n openStart--;\n openEnd--;\n let node = content.firstChild;\n context.push(node.type.name, node.attrs != node.type.defaultAttrs ? node.attrs : null);\n content = node.content;\n }\n let serializer = view.someProp(\"clipboardSerializer\") || DOMSerializer.fromSchema(view.state.schema);\n let doc = detachedDoc(), wrap = doc.createElement(\"div\");\n wrap.appendChild(serializer.serializeFragment(content, { document: doc }));\n let firstChild = wrap.firstChild, needsWrap, wrappers = 0;\n while (firstChild && firstChild.nodeType == 1 && (needsWrap = wrapMap[firstChild.nodeName.toLowerCase()])) {\n for (let i = needsWrap.length - 1; i >= 0; i--) {\n let wrapper = doc.createElement(needsWrap[i]);\n while (wrap.firstChild)\n wrapper.appendChild(wrap.firstChild);\n wrap.appendChild(wrapper);\n wrappers++;\n }\n firstChild = wrap.firstChild;\n }\n if (firstChild && firstChild.nodeType == 1)\n firstChild.setAttribute(\"data-pm-slice\", `${openStart} ${openEnd}${wrappers ? ` -${wrappers}` : \"\"} ${JSON.stringify(context)}`);\n let text = view.someProp(\"clipboardTextSerializer\", f => f(slice, view)) ||\n slice.content.textBetween(0, slice.content.size, \"\\n\\n\");\n return { dom: wrap, text };\n}\n// Read a slice of content from the clipboard (or drop data).\nfunction parseFromClipboard(view, text, html, plainText, $context) {\n let inCode = $context.parent.type.spec.code;\n let dom, slice;\n if (!html && !text)\n return null;\n let asText = text && (plainText || inCode || !html);\n if (asText) {\n view.someProp(\"transformPastedText\", f => { text = f(text, inCode || plainText, view); });\n if (inCode)\n return text ? new Slice(Fragment.from(view.state.schema.text(text.replace(/\\r\\n?/g, \"\\n\"))), 0, 0) : Slice.empty;\n let parsed = view.someProp(\"clipboardTextParser\", f => f(text, $context, plainText, view));\n if (parsed) {\n slice = parsed;\n }\n else {\n let marks = $context.marks();\n let { schema } = view.state, serializer = DOMSerializer.fromSchema(schema);\n dom = document.createElement(\"div\");\n text.split(/(?:\\r\\n?|\\n)+/).forEach(block => {\n let p = dom.appendChild(document.createElement(\"p\"));\n if (block)\n p.appendChild(serializer.serializeNode(schema.text(block, marks)));\n });\n }\n }\n else {\n view.someProp(\"transformPastedHTML\", f => { html = f(html, view); });\n dom = readHTML(html);\n if (webkit)\n restoreReplacedSpaces(dom);\n }\n let contextNode = dom && dom.querySelector(\"[data-pm-slice]\");\n let sliceData = contextNode && /^(\\d+) (\\d+)(?: -(\\d+))? (.*)/.exec(contextNode.getAttribute(\"data-pm-slice\") || \"\");\n if (sliceData && sliceData[3])\n for (let i = +sliceData[3]; i > 0; i--) {\n let child = dom.firstChild;\n while (child && child.nodeType != 1)\n child = child.nextSibling;\n if (!child)\n break;\n dom = child;\n }\n if (!slice) {\n let parser = view.someProp(\"clipboardParser\") || view.someProp(\"domParser\") || DOMParser.fromSchema(view.state.schema);\n slice = parser.parseSlice(dom, {\n preserveWhitespace: !!(asText || sliceData),\n context: $context,\n ruleFromNode(dom) {\n if (dom.nodeName == \"BR\" && !dom.nextSibling &&\n dom.parentNode && !inlineParents.test(dom.parentNode.nodeName))\n return { ignore: true };\n return null;\n }\n });\n }\n if (sliceData) {\n slice = addContext(closeSlice(slice, +sliceData[1], +sliceData[2]), sliceData[4]);\n }\n else { // HTML wasn't created by ProseMirror. Make sure top-level siblings are coherent\n slice = Slice.maxOpen(normalizeSiblings(slice.content, $context), true);\n if (slice.openStart || slice.openEnd) {\n let openStart = 0, openEnd = 0;\n for (let node = slice.content.firstChild; openStart < slice.openStart && !node.type.spec.isolating; openStart++, node = node.firstChild) { }\n for (let node = slice.content.lastChild; openEnd < slice.openEnd && !node.type.spec.isolating; openEnd++, node = node.lastChild) { }\n slice = closeSlice(slice, openStart, openEnd);\n }\n }\n view.someProp(\"transformPasted\", f => { slice = f(slice, view); });\n return slice;\n}\nconst inlineParents = /^(a|abbr|acronym|b|cite|code|del|em|i|ins|kbd|label|output|q|ruby|s|samp|span|strong|sub|sup|time|u|tt|var)$/i;\n// Takes a slice parsed with parseSlice, which means there hasn't been\n// any content-expression checking done on the top nodes, tries to\n// find a parent node in the current context that might fit the nodes,\n// and if successful, rebuilds the slice so that it fits into that parent.\n//\n// This addresses the problem that Transform.replace expects a\n// coherent slice, and will fail to place a set of siblings that don't\n// fit anywhere in the schema.\nfunction normalizeSiblings(fragment, $context) {\n if (fragment.childCount < 2)\n return fragment;\n for (let d = $context.depth; d >= 0; d--) {\n let parent = $context.node(d);\n let match = parent.contentMatchAt($context.index(d));\n let lastWrap, result = [];\n fragment.forEach(node => {\n if (!result)\n return;\n let wrap = match.findWrapping(node.type), inLast;\n if (!wrap)\n return result = null;\n if (inLast = result.length && lastWrap.length && addToSibling(wrap, lastWrap, node, result[result.length - 1], 0)) {\n result[result.length - 1] = inLast;\n }\n else {\n if (result.length)\n result[result.length - 1] = closeRight(result[result.length - 1], lastWrap.length);\n let wrapped = withWrappers(node, wrap);\n result.push(wrapped);\n match = match.matchType(wrapped.type);\n lastWrap = wrap;\n }\n });\n if (result)\n return Fragment.from(result);\n }\n return fragment;\n}\nfunction withWrappers(node, wrap, from = 0) {\n for (let i = wrap.length - 1; i >= from; i--)\n node = wrap[i].create(null, Fragment.from(node));\n return node;\n}\n// Used to group adjacent nodes wrapped in similar parents by\n// normalizeSiblings into the same parent node\nfunction addToSibling(wrap, lastWrap, node, sibling, depth) {\n if (depth < wrap.length && depth < lastWrap.length && wrap[depth] == lastWrap[depth]) {\n let inner = addToSibling(wrap, lastWrap, node, sibling.lastChild, depth + 1);\n if (inner)\n return sibling.copy(sibling.content.replaceChild(sibling.childCount - 1, inner));\n let match = sibling.contentMatchAt(sibling.childCount);\n if (match.matchType(depth == wrap.length - 1 ? node.type : wrap[depth + 1]))\n return sibling.copy(sibling.content.append(Fragment.from(withWrappers(node, wrap, depth + 1))));\n }\n}\nfunction closeRight(node, depth) {\n if (depth == 0)\n return node;\n let fragment = node.content.replaceChild(node.childCount - 1, closeRight(node.lastChild, depth - 1));\n let fill = node.contentMatchAt(node.childCount).fillBefore(Fragment.empty, true);\n return node.copy(fragment.append(fill));\n}\nfunction closeRange(fragment, side, from, to, depth, openEnd) {\n let node = side < 0 ? fragment.firstChild : fragment.lastChild, inner = node.content;\n if (fragment.childCount > 1)\n openEnd = 0;\n if (depth < to - 1)\n inner = closeRange(inner, side, from, to, depth + 1, openEnd);\n if (depth >= from)\n inner = side < 0 ? node.contentMatchAt(0).fillBefore(inner, openEnd <= depth).append(inner)\n : inner.append(node.contentMatchAt(node.childCount).fillBefore(Fragment.empty, true));\n return fragment.replaceChild(side < 0 ? 0 : fragment.childCount - 1, node.copy(inner));\n}\nfunction closeSlice(slice, openStart, openEnd) {\n if (openStart < slice.openStart)\n slice = new Slice(closeRange(slice.content, -1, openStart, slice.openStart, 0, slice.openEnd), openStart, slice.openEnd);\n if (openEnd < slice.openEnd)\n slice = new Slice(closeRange(slice.content, 1, openEnd, slice.openEnd, 0, 0), slice.openStart, openEnd);\n return slice;\n}\n// Trick from jQuery -- some elements must be wrapped in other\n// elements for innerHTML to work. I.e. if you do `div.innerHTML =\n// \"..\"` the table cells are ignored.\nconst wrapMap = {\n thead: [\"table\"],\n tbody: [\"table\"],\n tfoot: [\"table\"],\n caption: [\"table\"],\n colgroup: [\"table\"],\n col: [\"table\", \"colgroup\"],\n tr: [\"table\", \"tbody\"],\n td: [\"table\", \"tbody\", \"tr\"],\n th: [\"table\", \"tbody\", \"tr\"]\n};\nlet _detachedDoc = null;\nfunction detachedDoc() {\n return _detachedDoc || (_detachedDoc = document.implementation.createHTMLDocument(\"title\"));\n}\nfunction readHTML(html) {\n let metas = /^(\\s*]*>)*/.exec(html);\n if (metas)\n html = html.slice(metas[0].length);\n let elt = detachedDoc().createElement(\"div\");\n let firstTag = /<([a-z][^>\\s]+)/i.exec(html), wrap;\n if (wrap = firstTag && wrapMap[firstTag[1].toLowerCase()])\n html = wrap.map(n => \"<\" + n + \">\").join(\"\") + html + wrap.map(n => \"\").reverse().join(\"\");\n elt.innerHTML = html;\n if (wrap)\n for (let i = 0; i < wrap.length; i++)\n elt = elt.querySelector(wrap[i]) || elt;\n return elt;\n}\n// Webkit browsers do some hard-to-predict replacement of regular\n// spaces with non-breaking spaces when putting content on the\n// clipboard. This tries to convert such non-breaking spaces (which\n// will be wrapped in a plain span on Chrome, a span with class\n// Apple-converted-space on Safari) back to regular spaces.\nfunction restoreReplacedSpaces(dom) {\n let nodes = dom.querySelectorAll(chrome ? \"span:not([class]):not([style])\" : \"span.Apple-converted-space\");\n for (let i = 0; i < nodes.length; i++) {\n let node = nodes[i];\n if (node.childNodes.length == 1 && node.textContent == \"\\u00a0\" && node.parentNode)\n node.parentNode.replaceChild(dom.ownerDocument.createTextNode(\" \"), node);\n }\n}\nfunction addContext(slice, context) {\n if (!slice.size)\n return slice;\n let schema = slice.content.firstChild.type.schema, array;\n try {\n array = JSON.parse(context);\n }\n catch (e) {\n return slice;\n }\n let { content, openStart, openEnd } = slice;\n for (let i = array.length - 2; i >= 0; i -= 2) {\n let type = schema.nodes[array[i]];\n if (!type || type.hasRequiredAttrs())\n break;\n content = Fragment.from(type.create(array[i + 1], content));\n openStart++;\n openEnd++;\n }\n return new Slice(content, openStart, openEnd);\n}\n\n// A collection of DOM events that occur within the editor, and callback functions\n// to invoke when the event fires.\nconst handlers = {};\nconst editHandlers = {};\nconst passiveHandlers = { touchstart: true, touchmove: true };\nclass InputState {\n constructor() {\n this.shiftKey = false;\n this.mouseDown = null;\n this.lastKeyCode = null;\n this.lastKeyCodeTime = 0;\n this.lastClick = { time: 0, x: 0, y: 0, type: \"\" };\n this.lastSelectionOrigin = null;\n this.lastSelectionTime = 0;\n this.lastIOSEnter = 0;\n this.lastIOSEnterFallbackTimeout = -1;\n this.lastFocus = 0;\n this.lastTouch = 0;\n this.lastAndroidDelete = 0;\n this.composing = false;\n this.compositionNode = null;\n this.composingTimeout = -1;\n this.compositionNodes = [];\n this.compositionEndedAt = -2e8;\n this.compositionID = 1;\n // Set to a composition ID when there are pending changes at compositionend\n this.compositionPendingChanges = 0;\n this.domChangeCount = 0;\n this.eventHandlers = Object.create(null);\n this.hideSelectionGuard = null;\n }\n}\nfunction initInput(view) {\n for (let event in handlers) {\n let handler = handlers[event];\n view.dom.addEventListener(event, view.input.eventHandlers[event] = (event) => {\n if (eventBelongsToView(view, event) && !runCustomHandler(view, event) &&\n (view.editable || !(event.type in editHandlers)))\n handler(view, event);\n }, passiveHandlers[event] ? { passive: true } : undefined);\n }\n // On Safari, for reasons beyond my understanding, adding an input\n // event handler makes an issue where the composition vanishes when\n // you press enter go away.\n if (safari)\n view.dom.addEventListener(\"input\", () => null);\n ensureListeners(view);\n}\nfunction setSelectionOrigin(view, origin) {\n view.input.lastSelectionOrigin = origin;\n view.input.lastSelectionTime = Date.now();\n}\nfunction destroyInput(view) {\n view.domObserver.stop();\n for (let type in view.input.eventHandlers)\n view.dom.removeEventListener(type, view.input.eventHandlers[type]);\n clearTimeout(view.input.composingTimeout);\n clearTimeout(view.input.lastIOSEnterFallbackTimeout);\n}\nfunction ensureListeners(view) {\n view.someProp(\"handleDOMEvents\", currentHandlers => {\n for (let type in currentHandlers)\n if (!view.input.eventHandlers[type])\n view.dom.addEventListener(type, view.input.eventHandlers[type] = event => runCustomHandler(view, event));\n });\n}\nfunction runCustomHandler(view, event) {\n return view.someProp(\"handleDOMEvents\", handlers => {\n let handler = handlers[event.type];\n return handler ? handler(view, event) || event.defaultPrevented : false;\n });\n}\nfunction eventBelongsToView(view, event) {\n if (!event.bubbles)\n return true;\n if (event.defaultPrevented)\n return false;\n for (let node = event.target; node != view.dom; node = node.parentNode)\n if (!node || node.nodeType == 11 ||\n (node.pmViewDesc && node.pmViewDesc.stopEvent(event)))\n return false;\n return true;\n}\nfunction dispatchEvent(view, event) {\n if (!runCustomHandler(view, event) && handlers[event.type] &&\n (view.editable || !(event.type in editHandlers)))\n handlers[event.type](view, event);\n}\neditHandlers.keydown = (view, _event) => {\n let event = _event;\n view.input.shiftKey = event.keyCode == 16 || event.shiftKey;\n if (inOrNearComposition(view, event))\n return;\n view.input.lastKeyCode = event.keyCode;\n view.input.lastKeyCodeTime = Date.now();\n // Suppress enter key events on Chrome Android, because those tend\n // to be part of a confused sequence of composition events fired,\n // and handling them eagerly tends to corrupt the input.\n if (android && chrome && event.keyCode == 13)\n return;\n if (event.keyCode != 229)\n view.domObserver.forceFlush();\n // On iOS, if we preventDefault enter key presses, the virtual\n // keyboard gets confused. So the hack here is to set a flag that\n // makes the DOM change code recognize that what just happens should\n // be replaced by whatever the Enter key handlers do.\n if (ios && event.keyCode == 13 && !event.ctrlKey && !event.altKey && !event.metaKey) {\n let now = Date.now();\n view.input.lastIOSEnter = now;\n view.input.lastIOSEnterFallbackTimeout = setTimeout(() => {\n if (view.input.lastIOSEnter == now) {\n view.someProp(\"handleKeyDown\", f => f(view, keyEvent(13, \"Enter\")));\n view.input.lastIOSEnter = 0;\n }\n }, 200);\n }\n else if (view.someProp(\"handleKeyDown\", f => f(view, event)) || captureKeyDown(view, event)) {\n event.preventDefault();\n }\n else {\n setSelectionOrigin(view, \"key\");\n }\n};\neditHandlers.keyup = (view, event) => {\n if (event.keyCode == 16)\n view.input.shiftKey = false;\n};\neditHandlers.keypress = (view, _event) => {\n let event = _event;\n if (inOrNearComposition(view, event) || !event.charCode ||\n event.ctrlKey && !event.altKey || mac && event.metaKey)\n return;\n if (view.someProp(\"handleKeyPress\", f => f(view, event))) {\n event.preventDefault();\n return;\n }\n let sel = view.state.selection;\n if (!(sel instanceof TextSelection) || !sel.$from.sameParent(sel.$to)) {\n let text = String.fromCharCode(event.charCode);\n if (!/[\\r\\n]/.test(text) && !view.someProp(\"handleTextInput\", f => f(view, sel.$from.pos, sel.$to.pos, text)))\n view.dispatch(view.state.tr.insertText(text).scrollIntoView());\n event.preventDefault();\n }\n};\nfunction eventCoords(event) { return { left: event.clientX, top: event.clientY }; }\nfunction isNear(event, click) {\n let dx = click.x - event.clientX, dy = click.y - event.clientY;\n return dx * dx + dy * dy < 100;\n}\nfunction runHandlerOnContext(view, propName, pos, inside, event) {\n if (inside == -1)\n return false;\n let $pos = view.state.doc.resolve(inside);\n for (let i = $pos.depth + 1; i > 0; i--) {\n if (view.someProp(propName, f => i > $pos.depth ? f(view, pos, $pos.nodeAfter, $pos.before(i), event, true)\n : f(view, pos, $pos.node(i), $pos.before(i), event, false)))\n return true;\n }\n return false;\n}\nfunction updateSelection(view, selection, origin) {\n if (!view.focused)\n view.focus();\n let tr = view.state.tr.setSelection(selection);\n if (origin == \"pointer\")\n tr.setMeta(\"pointer\", true);\n view.dispatch(tr);\n}\nfunction selectClickedLeaf(view, inside) {\n if (inside == -1)\n return false;\n let $pos = view.state.doc.resolve(inside), node = $pos.nodeAfter;\n if (node && node.isAtom && NodeSelection.isSelectable(node)) {\n updateSelection(view, new NodeSelection($pos), \"pointer\");\n return true;\n }\n return false;\n}\nfunction selectClickedNode(view, inside) {\n if (inside == -1)\n return false;\n let sel = view.state.selection, selectedNode, selectAt;\n if (sel instanceof NodeSelection)\n selectedNode = sel.node;\n let $pos = view.state.doc.resolve(inside);\n for (let i = $pos.depth + 1; i > 0; i--) {\n let node = i > $pos.depth ? $pos.nodeAfter : $pos.node(i);\n if (NodeSelection.isSelectable(node)) {\n if (selectedNode && sel.$from.depth > 0 &&\n i >= sel.$from.depth && $pos.before(sel.$from.depth + 1) == sel.$from.pos)\n selectAt = $pos.before(sel.$from.depth);\n else\n selectAt = $pos.before(i);\n break;\n }\n }\n if (selectAt != null) {\n updateSelection(view, NodeSelection.create(view.state.doc, selectAt), \"pointer\");\n return true;\n }\n else {\n return false;\n }\n}\nfunction handleSingleClick(view, pos, inside, event, selectNode) {\n return runHandlerOnContext(view, \"handleClickOn\", pos, inside, event) ||\n view.someProp(\"handleClick\", f => f(view, pos, event)) ||\n (selectNode ? selectClickedNode(view, inside) : selectClickedLeaf(view, inside));\n}\nfunction handleDoubleClick(view, pos, inside, event) {\n return runHandlerOnContext(view, \"handleDoubleClickOn\", pos, inside, event) ||\n view.someProp(\"handleDoubleClick\", f => f(view, pos, event));\n}\nfunction handleTripleClick(view, pos, inside, event) {\n return runHandlerOnContext(view, \"handleTripleClickOn\", pos, inside, event) ||\n view.someProp(\"handleTripleClick\", f => f(view, pos, event)) ||\n defaultTripleClick(view, inside, event);\n}\nfunction defaultTripleClick(view, inside, event) {\n if (event.button != 0)\n return false;\n let doc = view.state.doc;\n if (inside == -1) {\n if (doc.inlineContent) {\n updateSelection(view, TextSelection.create(doc, 0, doc.content.size), \"pointer\");\n return true;\n }\n return false;\n }\n let $pos = doc.resolve(inside);\n for (let i = $pos.depth + 1; i > 0; i--) {\n let node = i > $pos.depth ? $pos.nodeAfter : $pos.node(i);\n let nodePos = $pos.before(i);\n if (node.inlineContent)\n updateSelection(view, TextSelection.create(doc, nodePos + 1, nodePos + 1 + node.content.size), \"pointer\");\n else if (NodeSelection.isSelectable(node))\n updateSelection(view, NodeSelection.create(doc, nodePos), \"pointer\");\n else\n continue;\n return true;\n }\n}\nfunction forceDOMFlush(view) {\n return endComposition(view);\n}\nconst selectNodeModifier = mac ? \"metaKey\" : \"ctrlKey\";\nhandlers.mousedown = (view, _event) => {\n let event = _event;\n view.input.shiftKey = event.shiftKey;\n let flushed = forceDOMFlush(view);\n let now = Date.now(), type = \"singleClick\";\n if (now - view.input.lastClick.time < 500 && isNear(event, view.input.lastClick) && !event[selectNodeModifier]) {\n if (view.input.lastClick.type == \"singleClick\")\n type = \"doubleClick\";\n else if (view.input.lastClick.type == \"doubleClick\")\n type = \"tripleClick\";\n }\n view.input.lastClick = { time: now, x: event.clientX, y: event.clientY, type };\n let pos = view.posAtCoords(eventCoords(event));\n if (!pos)\n return;\n if (type == \"singleClick\") {\n if (view.input.mouseDown)\n view.input.mouseDown.done();\n view.input.mouseDown = new MouseDown(view, pos, event, !!flushed);\n }\n else if ((type == \"doubleClick\" ? handleDoubleClick : handleTripleClick)(view, pos.pos, pos.inside, event)) {\n event.preventDefault();\n }\n else {\n setSelectionOrigin(view, \"pointer\");\n }\n};\nclass MouseDown {\n constructor(view, pos, event, flushed) {\n this.view = view;\n this.pos = pos;\n this.event = event;\n this.flushed = flushed;\n this.delayedSelectionSync = false;\n this.mightDrag = null;\n this.startDoc = view.state.doc;\n this.selectNode = !!event[selectNodeModifier];\n this.allowDefault = event.shiftKey;\n let targetNode, targetPos;\n if (pos.inside > -1) {\n targetNode = view.state.doc.nodeAt(pos.inside);\n targetPos = pos.inside;\n }\n else {\n let $pos = view.state.doc.resolve(pos.pos);\n targetNode = $pos.parent;\n targetPos = $pos.depth ? $pos.before() : 0;\n }\n const target = flushed ? null : event.target;\n const targetDesc = target ? view.docView.nearestDesc(target, true) : null;\n this.target = targetDesc ? targetDesc.dom : null;\n let { selection } = view.state;\n if (event.button == 0 &&\n targetNode.type.spec.draggable && targetNode.type.spec.selectable !== false ||\n selection instanceof NodeSelection && selection.from <= targetPos && selection.to > targetPos)\n this.mightDrag = {\n node: targetNode,\n pos: targetPos,\n addAttr: !!(this.target && !this.target.draggable),\n setUneditable: !!(this.target && gecko && !this.target.hasAttribute(\"contentEditable\"))\n };\n if (this.target && this.mightDrag && (this.mightDrag.addAttr || this.mightDrag.setUneditable)) {\n this.view.domObserver.stop();\n if (this.mightDrag.addAttr)\n this.target.draggable = true;\n if (this.mightDrag.setUneditable)\n setTimeout(() => {\n if (this.view.input.mouseDown == this)\n this.target.setAttribute(\"contentEditable\", \"false\");\n }, 20);\n this.view.domObserver.start();\n }\n view.root.addEventListener(\"mouseup\", this.up = this.up.bind(this));\n view.root.addEventListener(\"mousemove\", this.move = this.move.bind(this));\n setSelectionOrigin(view, \"pointer\");\n }\n done() {\n this.view.root.removeEventListener(\"mouseup\", this.up);\n this.view.root.removeEventListener(\"mousemove\", this.move);\n if (this.mightDrag && this.target) {\n this.view.domObserver.stop();\n if (this.mightDrag.addAttr)\n this.target.removeAttribute(\"draggable\");\n if (this.mightDrag.setUneditable)\n this.target.removeAttribute(\"contentEditable\");\n this.view.domObserver.start();\n }\n if (this.delayedSelectionSync)\n setTimeout(() => selectionToDOM(this.view));\n this.view.input.mouseDown = null;\n }\n up(event) {\n this.done();\n if (!this.view.dom.contains(event.target))\n return;\n let pos = this.pos;\n if (this.view.state.doc != this.startDoc)\n pos = this.view.posAtCoords(eventCoords(event));\n this.updateAllowDefault(event);\n if (this.allowDefault || !pos) {\n setSelectionOrigin(this.view, \"pointer\");\n }\n else if (handleSingleClick(this.view, pos.pos, pos.inside, event, this.selectNode)) {\n event.preventDefault();\n }\n else if (event.button == 0 &&\n (this.flushed ||\n // Safari ignores clicks on draggable elements\n (safari && this.mightDrag && !this.mightDrag.node.isAtom) ||\n // Chrome will sometimes treat a node selection as a\n // cursor, but still report that the node is selected\n // when asked through getSelection. You'll then get a\n // situation where clicking at the point where that\n // (hidden) cursor is doesn't change the selection, and\n // thus doesn't get a reaction from ProseMirror. This\n // works around that.\n (chrome && !this.view.state.selection.visible &&\n Math.min(Math.abs(pos.pos - this.view.state.selection.from), Math.abs(pos.pos - this.view.state.selection.to)) <= 2))) {\n updateSelection(this.view, Selection.near(this.view.state.doc.resolve(pos.pos)), \"pointer\");\n event.preventDefault();\n }\n else {\n setSelectionOrigin(this.view, \"pointer\");\n }\n }\n move(event) {\n this.updateAllowDefault(event);\n setSelectionOrigin(this.view, \"pointer\");\n if (event.buttons == 0)\n this.done();\n }\n updateAllowDefault(event) {\n if (!this.allowDefault && (Math.abs(this.event.x - event.clientX) > 4 ||\n Math.abs(this.event.y - event.clientY) > 4))\n this.allowDefault = true;\n }\n}\nhandlers.touchstart = view => {\n view.input.lastTouch = Date.now();\n forceDOMFlush(view);\n setSelectionOrigin(view, \"pointer\");\n};\nhandlers.touchmove = view => {\n view.input.lastTouch = Date.now();\n setSelectionOrigin(view, \"pointer\");\n};\nhandlers.contextmenu = view => forceDOMFlush(view);\nfunction inOrNearComposition(view, event) {\n if (view.composing)\n return true;\n // See https://www.stum.de/2016/06/24/handling-ime-events-in-javascript/.\n // On Japanese input method editors (IMEs), the Enter key is used to confirm character\n // selection. On Safari, when Enter is pressed, compositionend and keydown events are\n // emitted. The keydown event triggers newline insertion, which we don't want.\n // This method returns true if the keydown event should be ignored.\n // We only ignore it once, as pressing Enter a second time *should* insert a newline.\n // Furthermore, the keydown event timestamp must be close to the compositionEndedAt timestamp.\n // This guards against the case where compositionend is triggered without the keyboard\n // (e.g. character confirmation may be done with the mouse), and keydown is triggered\n // afterwards- we wouldn't want to ignore the keydown event in this case.\n if (safari && Math.abs(event.timeStamp - view.input.compositionEndedAt) < 500) {\n view.input.compositionEndedAt = -2e8;\n return true;\n }\n return false;\n}\n// Drop active composition after 5 seconds of inactivity on Android\nconst timeoutComposition = android ? 5000 : -1;\neditHandlers.compositionstart = editHandlers.compositionupdate = view => {\n if (!view.composing) {\n view.domObserver.flush();\n let { state } = view, $pos = state.selection.$from;\n if (state.selection.empty &&\n (state.storedMarks ||\n (!$pos.textOffset && $pos.parentOffset && $pos.nodeBefore.marks.some(m => m.type.spec.inclusive === false)))) {\n // Need to wrap the cursor in mark nodes different from the ones in the DOM context\n view.markCursor = view.state.storedMarks || $pos.marks();\n endComposition(view, true);\n view.markCursor = null;\n }\n else {\n endComposition(view);\n // In firefox, if the cursor is after but outside a marked node,\n // the inserted text won't inherit the marks. So this moves it\n // inside if necessary.\n if (gecko && state.selection.empty && $pos.parentOffset && !$pos.textOffset && $pos.nodeBefore.marks.length) {\n let sel = view.domSelectionRange();\n for (let node = sel.focusNode, offset = sel.focusOffset; node && node.nodeType == 1 && offset != 0;) {\n let before = offset < 0 ? node.lastChild : node.childNodes[offset - 1];\n if (!before)\n break;\n if (before.nodeType == 3) {\n view.domSelection().collapse(before, before.nodeValue.length);\n break;\n }\n else {\n node = before;\n offset = -1;\n }\n }\n }\n }\n view.input.composing = true;\n }\n scheduleComposeEnd(view, timeoutComposition);\n};\neditHandlers.compositionend = (view, event) => {\n if (view.composing) {\n view.input.composing = false;\n view.input.compositionEndedAt = event.timeStamp;\n view.input.compositionPendingChanges = view.domObserver.pendingRecords().length ? view.input.compositionID : 0;\n view.input.compositionNode = null;\n if (view.input.compositionPendingChanges)\n Promise.resolve().then(() => view.domObserver.flush());\n view.input.compositionID++;\n scheduleComposeEnd(view, 20);\n }\n};\nfunction scheduleComposeEnd(view, delay) {\n clearTimeout(view.input.composingTimeout);\n if (delay > -1)\n view.input.composingTimeout = setTimeout(() => endComposition(view), delay);\n}\nfunction clearComposition(view) {\n if (view.composing) {\n view.input.composing = false;\n view.input.compositionEndedAt = timestampFromCustomEvent();\n }\n while (view.input.compositionNodes.length > 0)\n view.input.compositionNodes.pop().markParentsDirty();\n}\nfunction findCompositionNode(view) {\n let sel = view.domSelectionRange();\n if (!sel.focusNode)\n return null;\n let textBefore = textNodeBefore$1(sel.focusNode, sel.focusOffset);\n let textAfter = textNodeAfter$1(sel.focusNode, sel.focusOffset);\n if (textBefore && textAfter && textBefore != textAfter) {\n let descAfter = textAfter.pmViewDesc;\n if (!descAfter || !descAfter.isText(textAfter.nodeValue)) {\n return textAfter;\n }\n else if (view.input.compositionNode == textAfter) {\n let descBefore = textBefore.pmViewDesc;\n if (!(!descBefore || !descBefore.isText(textBefore.nodeValue)))\n return textAfter;\n }\n }\n return textBefore;\n}\nfunction timestampFromCustomEvent() {\n let event = document.createEvent(\"Event\");\n event.initEvent(\"event\", true, true);\n return event.timeStamp;\n}\n/**\n@internal\n*/\nfunction endComposition(view, forceUpdate = false) {\n if (android && view.domObserver.flushingSoon >= 0)\n return;\n view.domObserver.forceFlush();\n clearComposition(view);\n if (forceUpdate || view.docView && view.docView.dirty) {\n let sel = selectionFromDOM(view);\n if (sel && !sel.eq(view.state.selection))\n view.dispatch(view.state.tr.setSelection(sel));\n else\n view.updateState(view.state);\n return true;\n }\n return false;\n}\nfunction captureCopy(view, dom) {\n // The extra wrapper is somehow necessary on IE/Edge to prevent the\n // content from being mangled when it is put onto the clipboard\n if (!view.dom.parentNode)\n return;\n let wrap = view.dom.parentNode.appendChild(document.createElement(\"div\"));\n wrap.appendChild(dom);\n wrap.style.cssText = \"position: fixed; left: -10000px; top: 10px\";\n let sel = getSelection(), range = document.createRange();\n range.selectNodeContents(dom);\n // Done because IE will fire a selectionchange moving the selection\n // to its start when removeAllRanges is called and the editor still\n // has focus (which will mess up the editor's selection state).\n view.dom.blur();\n sel.removeAllRanges();\n sel.addRange(range);\n setTimeout(() => {\n if (wrap.parentNode)\n wrap.parentNode.removeChild(wrap);\n view.focus();\n }, 50);\n}\n// This is very crude, but unfortunately both these browsers _pretend_\n// that they have a clipboard API—all the objects and methods are\n// there, they just don't work, and they are hard to test.\nconst brokenClipboardAPI = (ie && ie_version < 15) ||\n (ios && webkit_version < 604);\nhandlers.copy = editHandlers.cut = (view, _event) => {\n let event = _event;\n let sel = view.state.selection, cut = event.type == \"cut\";\n if (sel.empty)\n return;\n // IE and Edge's clipboard interface is completely broken\n let data = brokenClipboardAPI ? null : event.clipboardData;\n let slice = sel.content(), { dom, text } = serializeForClipboard(view, slice);\n if (data) {\n event.preventDefault();\n data.clearData();\n data.setData(\"text/html\", dom.innerHTML);\n data.setData(\"text/plain\", text);\n }\n else {\n captureCopy(view, dom);\n }\n if (cut)\n view.dispatch(view.state.tr.deleteSelection().scrollIntoView().setMeta(\"uiEvent\", \"cut\"));\n};\nfunction sliceSingleNode(slice) {\n return slice.openStart == 0 && slice.openEnd == 0 && slice.content.childCount == 1 ? slice.content.firstChild : null;\n}\nfunction capturePaste(view, event) {\n if (!view.dom.parentNode)\n return;\n let plainText = view.input.shiftKey || view.state.selection.$from.parent.type.spec.code;\n let target = view.dom.parentNode.appendChild(document.createElement(plainText ? \"textarea\" : \"div\"));\n if (!plainText)\n target.contentEditable = \"true\";\n target.style.cssText = \"position: fixed; left: -10000px; top: 10px\";\n target.focus();\n let plain = view.input.shiftKey && view.input.lastKeyCode != 45;\n setTimeout(() => {\n view.focus();\n if (target.parentNode)\n target.parentNode.removeChild(target);\n if (plainText)\n doPaste(view, target.value, null, plain, event);\n else\n doPaste(view, target.textContent, target.innerHTML, plain, event);\n }, 50);\n}\nfunction doPaste(view, text, html, preferPlain, event) {\n let slice = parseFromClipboard(view, text, html, preferPlain, view.state.selection.$from);\n if (view.someProp(\"handlePaste\", f => f(view, event, slice || Slice.empty)))\n return true;\n if (!slice)\n return false;\n let singleNode = sliceSingleNode(slice);\n let tr = singleNode\n ? view.state.tr.replaceSelectionWith(singleNode, preferPlain)\n : view.state.tr.replaceSelection(slice);\n view.dispatch(tr.scrollIntoView().setMeta(\"paste\", true).setMeta(\"uiEvent\", \"paste\"));\n return true;\n}\nfunction getText(clipboardData) {\n let text = clipboardData.getData(\"text/plain\") || clipboardData.getData(\"Text\");\n if (text)\n return text;\n let uris = clipboardData.getData(\"text/uri-list\");\n return uris ? uris.replace(/\\r?\\n/g, \" \") : \"\";\n}\neditHandlers.paste = (view, _event) => {\n let event = _event;\n // Handling paste from JavaScript during composition is very poorly\n // handled by browsers, so as a dodgy but preferable kludge, we just\n // let the browser do its native thing there, except on Android,\n // where the editor is almost always composing.\n if (view.composing && !android)\n return;\n let data = brokenClipboardAPI ? null : event.clipboardData;\n let plain = view.input.shiftKey && view.input.lastKeyCode != 45;\n if (data && doPaste(view, getText(data), data.getData(\"text/html\"), plain, event))\n event.preventDefault();\n else\n capturePaste(view, event);\n};\nclass Dragging {\n constructor(slice, move, node) {\n this.slice = slice;\n this.move = move;\n this.node = node;\n }\n}\nconst dragCopyModifier = mac ? \"altKey\" : \"ctrlKey\";\nhandlers.dragstart = (view, _event) => {\n let event = _event;\n let mouseDown = view.input.mouseDown;\n if (mouseDown)\n mouseDown.done();\n if (!event.dataTransfer)\n return;\n let sel = view.state.selection;\n let pos = sel.empty ? null : view.posAtCoords(eventCoords(event));\n let node;\n if (pos && pos.pos >= sel.from && pos.pos <= (sel instanceof NodeSelection ? sel.to - 1 : sel.to)) ;\n else if (mouseDown && mouseDown.mightDrag) {\n node = NodeSelection.create(view.state.doc, mouseDown.mightDrag.pos);\n }\n else if (event.target && event.target.nodeType == 1) {\n let desc = view.docView.nearestDesc(event.target, true);\n if (desc && desc.node.type.spec.draggable && desc != view.docView)\n node = NodeSelection.create(view.state.doc, desc.posBefore);\n }\n let slice = (node || view.state.selection).content(), { dom, text } = serializeForClipboard(view, slice);\n event.dataTransfer.clearData();\n event.dataTransfer.setData(brokenClipboardAPI ? \"Text\" : \"text/html\", dom.innerHTML);\n // See https://github.com/ProseMirror/prosemirror/issues/1156\n event.dataTransfer.effectAllowed = \"copyMove\";\n if (!brokenClipboardAPI)\n event.dataTransfer.setData(\"text/plain\", text);\n view.dragging = new Dragging(slice, !event[dragCopyModifier], node);\n};\nhandlers.dragend = view => {\n let dragging = view.dragging;\n window.setTimeout(() => {\n if (view.dragging == dragging)\n view.dragging = null;\n }, 50);\n};\neditHandlers.dragover = editHandlers.dragenter = (_, e) => e.preventDefault();\neditHandlers.drop = (view, _event) => {\n let event = _event;\n let dragging = view.dragging;\n view.dragging = null;\n if (!event.dataTransfer)\n return;\n let eventPos = view.posAtCoords(eventCoords(event));\n if (!eventPos)\n return;\n let $mouse = view.state.doc.resolve(eventPos.pos);\n let slice = dragging && dragging.slice;\n if (slice) {\n view.someProp(\"transformPasted\", f => { slice = f(slice, view); });\n }\n else {\n slice = parseFromClipboard(view, getText(event.dataTransfer), brokenClipboardAPI ? null : event.dataTransfer.getData(\"text/html\"), false, $mouse);\n }\n let move = !!(dragging && !event[dragCopyModifier]);\n if (view.someProp(\"handleDrop\", f => f(view, event, slice || Slice.empty, move))) {\n event.preventDefault();\n return;\n }\n if (!slice)\n return;\n event.preventDefault();\n let insertPos = slice ? dropPoint(view.state.doc, $mouse.pos, slice) : $mouse.pos;\n if (insertPos == null)\n insertPos = $mouse.pos;\n let tr = view.state.tr;\n if (move) {\n let { node } = dragging;\n if (node)\n node.replace(tr);\n else\n tr.deleteSelection();\n }\n let pos = tr.mapping.map(insertPos);\n let isNode = slice.openStart == 0 && slice.openEnd == 0 && slice.content.childCount == 1;\n let beforeInsert = tr.doc;\n if (isNode)\n tr.replaceRangeWith(pos, pos, slice.content.firstChild);\n else\n tr.replaceRange(pos, pos, slice);\n if (tr.doc.eq(beforeInsert))\n return;\n let $pos = tr.doc.resolve(pos);\n if (isNode && NodeSelection.isSelectable(slice.content.firstChild) &&\n $pos.nodeAfter && $pos.nodeAfter.sameMarkup(slice.content.firstChild)) {\n tr.setSelection(new NodeSelection($pos));\n }\n else {\n let end = tr.mapping.map(insertPos);\n tr.mapping.maps[tr.mapping.maps.length - 1].forEach((_from, _to, _newFrom, newTo) => end = newTo);\n tr.setSelection(selectionBetween(view, $pos, tr.doc.resolve(end)));\n }\n view.focus();\n view.dispatch(tr.setMeta(\"uiEvent\", \"drop\"));\n};\nhandlers.focus = view => {\n view.input.lastFocus = Date.now();\n if (!view.focused) {\n view.domObserver.stop();\n view.dom.classList.add(\"ProseMirror-focused\");\n view.domObserver.start();\n view.focused = true;\n setTimeout(() => {\n if (view.docView && view.hasFocus() && !view.domObserver.currentSelection.eq(view.domSelectionRange()))\n selectionToDOM(view);\n }, 20);\n }\n};\nhandlers.blur = (view, _event) => {\n let event = _event;\n if (view.focused) {\n view.domObserver.stop();\n view.dom.classList.remove(\"ProseMirror-focused\");\n view.domObserver.start();\n if (event.relatedTarget && view.dom.contains(event.relatedTarget))\n view.domObserver.currentSelection.clear();\n view.focused = false;\n }\n};\nhandlers.beforeinput = (view, _event) => {\n let event = _event;\n // We should probably do more with beforeinput events, but support\n // is so spotty that I'm still waiting to see where they are going.\n // Very specific hack to deal with backspace sometimes failing on\n // Chrome Android when after an uneditable node.\n if (chrome && android && event.inputType == \"deleteContentBackward\") {\n view.domObserver.flushSoon();\n let { domChangeCount } = view.input;\n setTimeout(() => {\n if (view.input.domChangeCount != domChangeCount)\n return; // Event already had some effect\n // This bug tends to close the virtual keyboard, so we refocus\n view.dom.blur();\n view.focus();\n if (view.someProp(\"handleKeyDown\", f => f(view, keyEvent(8, \"Backspace\"))))\n return;\n let { $cursor } = view.state.selection;\n // Crude approximation of backspace behavior when no command handled it\n if ($cursor && $cursor.pos > 0)\n view.dispatch(view.state.tr.delete($cursor.pos - 1, $cursor.pos).scrollIntoView());\n }, 50);\n }\n};\n// Make sure all handlers get registered\nfor (let prop in editHandlers)\n handlers[prop] = editHandlers[prop];\n\nfunction compareObjs(a, b) {\n if (a == b)\n return true;\n for (let p in a)\n if (a[p] !== b[p])\n return false;\n for (let p in b)\n if (!(p in a))\n return false;\n return true;\n}\nclass WidgetType {\n constructor(toDOM, spec) {\n this.toDOM = toDOM;\n this.spec = spec || noSpec;\n this.side = this.spec.side || 0;\n }\n map(mapping, span, offset, oldOffset) {\n let { pos, deleted } = mapping.mapResult(span.from + oldOffset, this.side < 0 ? -1 : 1);\n return deleted ? null : new Decoration(pos - offset, pos - offset, this);\n }\n valid() { return true; }\n eq(other) {\n return this == other ||\n (other instanceof WidgetType &&\n (this.spec.key && this.spec.key == other.spec.key ||\n this.toDOM == other.toDOM && compareObjs(this.spec, other.spec)));\n }\n destroy(node) {\n if (this.spec.destroy)\n this.spec.destroy(node);\n }\n}\nclass InlineType {\n constructor(attrs, spec) {\n this.attrs = attrs;\n this.spec = spec || noSpec;\n }\n map(mapping, span, offset, oldOffset) {\n let from = mapping.map(span.from + oldOffset, this.spec.inclusiveStart ? -1 : 1) - offset;\n let to = mapping.map(span.to + oldOffset, this.spec.inclusiveEnd ? 1 : -1) - offset;\n return from >= to ? null : new Decoration(from, to, this);\n }\n valid(_, span) { return span.from < span.to; }\n eq(other) {\n return this == other ||\n (other instanceof InlineType && compareObjs(this.attrs, other.attrs) &&\n compareObjs(this.spec, other.spec));\n }\n static is(span) { return span.type instanceof InlineType; }\n destroy() { }\n}\nclass NodeType {\n constructor(attrs, spec) {\n this.attrs = attrs;\n this.spec = spec || noSpec;\n }\n map(mapping, span, offset, oldOffset) {\n let from = mapping.mapResult(span.from + oldOffset, 1);\n if (from.deleted)\n return null;\n let to = mapping.mapResult(span.to + oldOffset, -1);\n if (to.deleted || to.pos <= from.pos)\n return null;\n return new Decoration(from.pos - offset, to.pos - offset, this);\n }\n valid(node, span) {\n let { index, offset } = node.content.findIndex(span.from), child;\n return offset == span.from && !(child = node.child(index)).isText && offset + child.nodeSize == span.to;\n }\n eq(other) {\n return this == other ||\n (other instanceof NodeType && compareObjs(this.attrs, other.attrs) &&\n compareObjs(this.spec, other.spec));\n }\n destroy() { }\n}\n/**\nDecoration objects can be provided to the view through the\n[`decorations` prop](https://prosemirror.net/docs/ref/#view.EditorProps.decorations). They come in\nseveral variants—see the static members of this class for details.\n*/\nclass Decoration {\n /**\n @internal\n */\n constructor(\n /**\n The start position of the decoration.\n */\n from, \n /**\n The end position. Will be the same as `from` for [widget\n decorations](https://prosemirror.net/docs/ref/#view.Decoration^widget).\n */\n to, \n /**\n @internal\n */\n type) {\n this.from = from;\n this.to = to;\n this.type = type;\n }\n /**\n @internal\n */\n copy(from, to) {\n return new Decoration(from, to, this.type);\n }\n /**\n @internal\n */\n eq(other, offset = 0) {\n return this.type.eq(other.type) && this.from + offset == other.from && this.to + offset == other.to;\n }\n /**\n @internal\n */\n map(mapping, offset, oldOffset) {\n return this.type.map(mapping, this, offset, oldOffset);\n }\n /**\n Creates a widget decoration, which is a DOM node that's shown in\n the document at the given position. It is recommended that you\n delay rendering the widget by passing a function that will be\n called when the widget is actually drawn in a view, but you can\n also directly pass a DOM node. `getPos` can be used to find the\n widget's current document position.\n */\n static widget(pos, toDOM, spec) {\n return new Decoration(pos, pos, new WidgetType(toDOM, spec));\n }\n /**\n Creates an inline decoration, which adds the given attributes to\n each inline node between `from` and `to`.\n */\n static inline(from, to, attrs, spec) {\n return new Decoration(from, to, new InlineType(attrs, spec));\n }\n /**\n Creates a node decoration. `from` and `to` should point precisely\n before and after a node in the document. That node, and only that\n node, will receive the given attributes.\n */\n static node(from, to, attrs, spec) {\n return new Decoration(from, to, new NodeType(attrs, spec));\n }\n /**\n The spec provided when creating this decoration. Can be useful\n if you've stored extra information in that object.\n */\n get spec() { return this.type.spec; }\n /**\n @internal\n */\n get inline() { return this.type instanceof InlineType; }\n /**\n @internal\n */\n get widget() { return this.type instanceof WidgetType; }\n}\nconst none = [], noSpec = {};\n/**\nA collection of [decorations](https://prosemirror.net/docs/ref/#view.Decoration), organized in such\na way that the drawing algorithm can efficiently use and compare\nthem. This is a persistent data structure—it is not modified,\nupdates create a new value.\n*/\nclass DecorationSet {\n /**\n @internal\n */\n constructor(local, children) {\n this.local = local.length ? local : none;\n this.children = children.length ? children : none;\n }\n /**\n Create a set of decorations, using the structure of the given\n document. This will consume (modify) the `decorations` array, so\n you must make a copy if you want need to preserve that.\n */\n static create(doc, decorations) {\n return decorations.length ? buildTree(decorations, doc, 0, noSpec) : empty;\n }\n /**\n Find all decorations in this set which touch the given range\n (including decorations that start or end directly at the\n boundaries) and match the given predicate on their spec. When\n `start` and `end` are omitted, all decorations in the set are\n considered. When `predicate` isn't given, all decorations are\n assumed to match.\n */\n find(start, end, predicate) {\n let result = [];\n this.findInner(start == null ? 0 : start, end == null ? 1e9 : end, result, 0, predicate);\n return result;\n }\n findInner(start, end, result, offset, predicate) {\n for (let i = 0; i < this.local.length; i++) {\n let span = this.local[i];\n if (span.from <= end && span.to >= start && (!predicate || predicate(span.spec)))\n result.push(span.copy(span.from + offset, span.to + offset));\n }\n for (let i = 0; i < this.children.length; i += 3) {\n if (this.children[i] < end && this.children[i + 1] > start) {\n let childOff = this.children[i] + 1;\n this.children[i + 2].findInner(start - childOff, end - childOff, result, offset + childOff, predicate);\n }\n }\n }\n /**\n Map the set of decorations in response to a change in the\n document.\n */\n map(mapping, doc, options) {\n if (this == empty || mapping.maps.length == 0)\n return this;\n return this.mapInner(mapping, doc, 0, 0, options || noSpec);\n }\n /**\n @internal\n */\n mapInner(mapping, node, offset, oldOffset, options) {\n let newLocal;\n for (let i = 0; i < this.local.length; i++) {\n let mapped = this.local[i].map(mapping, offset, oldOffset);\n if (mapped && mapped.type.valid(node, mapped))\n (newLocal || (newLocal = [])).push(mapped);\n else if (options.onRemove)\n options.onRemove(this.local[i].spec);\n }\n if (this.children.length)\n return mapChildren(this.children, newLocal || [], mapping, node, offset, oldOffset, options);\n else\n return newLocal ? new DecorationSet(newLocal.sort(byPos), none) : empty;\n }\n /**\n Add the given array of decorations to the ones in the set,\n producing a new set. Consumes the `decorations` array. Needs\n access to the current document to create the appropriate tree\n structure.\n */\n add(doc, decorations) {\n if (!decorations.length)\n return this;\n if (this == empty)\n return DecorationSet.create(doc, decorations);\n return this.addInner(doc, decorations, 0);\n }\n addInner(doc, decorations, offset) {\n let children, childIndex = 0;\n doc.forEach((childNode, childOffset) => {\n let baseOffset = childOffset + offset, found;\n if (!(found = takeSpansForNode(decorations, childNode, baseOffset)))\n return;\n if (!children)\n children = this.children.slice();\n while (childIndex < children.length && children[childIndex] < childOffset)\n childIndex += 3;\n if (children[childIndex] == childOffset)\n children[childIndex + 2] = children[childIndex + 2].addInner(childNode, found, baseOffset + 1);\n else\n children.splice(childIndex, 0, childOffset, childOffset + childNode.nodeSize, buildTree(found, childNode, baseOffset + 1, noSpec));\n childIndex += 3;\n });\n let local = moveSpans(childIndex ? withoutNulls(decorations) : decorations, -offset);\n for (let i = 0; i < local.length; i++)\n if (!local[i].type.valid(doc, local[i]))\n local.splice(i--, 1);\n return new DecorationSet(local.length ? this.local.concat(local).sort(byPos) : this.local, children || this.children);\n }\n /**\n Create a new set that contains the decorations in this set, minus\n the ones in the given array.\n */\n remove(decorations) {\n if (decorations.length == 0 || this == empty)\n return this;\n return this.removeInner(decorations, 0);\n }\n removeInner(decorations, offset) {\n let children = this.children, local = this.local;\n for (let i = 0; i < children.length; i += 3) {\n let found;\n let from = children[i] + offset, to = children[i + 1] + offset;\n for (let j = 0, span; j < decorations.length; j++)\n if (span = decorations[j]) {\n if (span.from > from && span.to < to) {\n decorations[j] = null;\n (found || (found = [])).push(span);\n }\n }\n if (!found)\n continue;\n if (children == this.children)\n children = this.children.slice();\n let removed = children[i + 2].removeInner(found, from + 1);\n if (removed != empty) {\n children[i + 2] = removed;\n }\n else {\n children.splice(i, 3);\n i -= 3;\n }\n }\n if (local.length)\n for (let i = 0, span; i < decorations.length; i++)\n if (span = decorations[i]) {\n for (let j = 0; j < local.length; j++)\n if (local[j].eq(span, offset)) {\n if (local == this.local)\n local = this.local.slice();\n local.splice(j--, 1);\n }\n }\n if (children == this.children && local == this.local)\n return this;\n return local.length || children.length ? new DecorationSet(local, children) : empty;\n }\n forChild(offset, node) {\n if (this == empty)\n return this;\n if (node.isLeaf)\n return DecorationSet.empty;\n let child, local;\n for (let i = 0; i < this.children.length; i += 3)\n if (this.children[i] >= offset) {\n if (this.children[i] == offset)\n child = this.children[i + 2];\n break;\n }\n let start = offset + 1, end = start + node.content.size;\n for (let i = 0; i < this.local.length; i++) {\n let dec = this.local[i];\n if (dec.from < end && dec.to > start && (dec.type instanceof InlineType)) {\n let from = Math.max(start, dec.from) - start, to = Math.min(end, dec.to) - start;\n if (from < to)\n (local || (local = [])).push(dec.copy(from, to));\n }\n }\n if (local) {\n let localSet = new DecorationSet(local.sort(byPos), none);\n return child ? new DecorationGroup([localSet, child]) : localSet;\n }\n return child || empty;\n }\n /**\n @internal\n */\n eq(other) {\n if (this == other)\n return true;\n if (!(other instanceof DecorationSet) ||\n this.local.length != other.local.length ||\n this.children.length != other.children.length)\n return false;\n for (let i = 0; i < this.local.length; i++)\n if (!this.local[i].eq(other.local[i]))\n return false;\n for (let i = 0; i < this.children.length; i += 3)\n if (this.children[i] != other.children[i] ||\n this.children[i + 1] != other.children[i + 1] ||\n !this.children[i + 2].eq(other.children[i + 2]))\n return false;\n return true;\n }\n /**\n @internal\n */\n locals(node) {\n return removeOverlap(this.localsInner(node));\n }\n /**\n @internal\n */\n localsInner(node) {\n if (this == empty)\n return none;\n if (node.inlineContent || !this.local.some(InlineType.is))\n return this.local;\n let result = [];\n for (let i = 0; i < this.local.length; i++) {\n if (!(this.local[i].type instanceof InlineType))\n result.push(this.local[i]);\n }\n return result;\n }\n}\n/**\nThe empty set of decorations.\n*/\nDecorationSet.empty = new DecorationSet([], []);\n/**\n@internal\n*/\nDecorationSet.removeOverlap = removeOverlap;\nconst empty = DecorationSet.empty;\n// An abstraction that allows the code dealing with decorations to\n// treat multiple DecorationSet objects as if it were a single object\n// with (a subset of) the same interface.\nclass DecorationGroup {\n constructor(members) {\n this.members = members;\n }\n map(mapping, doc) {\n const mappedDecos = this.members.map(member => member.map(mapping, doc, noSpec));\n return DecorationGroup.from(mappedDecos);\n }\n forChild(offset, child) {\n if (child.isLeaf)\n return DecorationSet.empty;\n let found = [];\n for (let i = 0; i < this.members.length; i++) {\n let result = this.members[i].forChild(offset, child);\n if (result == empty)\n continue;\n if (result instanceof DecorationGroup)\n found = found.concat(result.members);\n else\n found.push(result);\n }\n return DecorationGroup.from(found);\n }\n eq(other) {\n if (!(other instanceof DecorationGroup) ||\n other.members.length != this.members.length)\n return false;\n for (let i = 0; i < this.members.length; i++)\n if (!this.members[i].eq(other.members[i]))\n return false;\n return true;\n }\n locals(node) {\n let result, sorted = true;\n for (let i = 0; i < this.members.length; i++) {\n let locals = this.members[i].localsInner(node);\n if (!locals.length)\n continue;\n if (!result) {\n result = locals;\n }\n else {\n if (sorted) {\n result = result.slice();\n sorted = false;\n }\n for (let j = 0; j < locals.length; j++)\n result.push(locals[j]);\n }\n }\n return result ? removeOverlap(sorted ? result : result.sort(byPos)) : none;\n }\n // Create a group for the given array of decoration sets, or return\n // a single set when possible.\n static from(members) {\n switch (members.length) {\n case 0: return empty;\n case 1: return members[0];\n default: return new DecorationGroup(members.every(m => m instanceof DecorationSet) ? members :\n members.reduce((r, m) => r.concat(m instanceof DecorationSet ? m : m.members), []));\n }\n }\n}\nfunction mapChildren(oldChildren, newLocal, mapping, node, offset, oldOffset, options) {\n let children = oldChildren.slice();\n // Mark the children that are directly touched by changes, and\n // move those that are after the changes.\n for (let i = 0, baseOffset = oldOffset; i < mapping.maps.length; i++) {\n let moved = 0;\n mapping.maps[i].forEach((oldStart, oldEnd, newStart, newEnd) => {\n let dSize = (newEnd - newStart) - (oldEnd - oldStart);\n for (let i = 0; i < children.length; i += 3) {\n let end = children[i + 1];\n if (end < 0 || oldStart > end + baseOffset - moved)\n continue;\n let start = children[i] + baseOffset - moved;\n if (oldEnd >= start) {\n children[i + 1] = oldStart <= start ? -2 : -1;\n }\n else if (oldStart >= baseOffset && dSize) {\n children[i] += dSize;\n children[i + 1] += dSize;\n }\n }\n moved += dSize;\n });\n baseOffset = mapping.maps[i].map(baseOffset, -1);\n }\n // Find the child nodes that still correspond to a single node,\n // recursively call mapInner on them and update their positions.\n let mustRebuild = false;\n for (let i = 0; i < children.length; i += 3)\n if (children[i + 1] < 0) { // Touched nodes\n if (children[i + 1] == -2) {\n mustRebuild = true;\n children[i + 1] = -1;\n continue;\n }\n let from = mapping.map(oldChildren[i] + oldOffset), fromLocal = from - offset;\n if (fromLocal < 0 || fromLocal >= node.content.size) {\n mustRebuild = true;\n continue;\n }\n // Must read oldChildren because children was tagged with -1\n let to = mapping.map(oldChildren[i + 1] + oldOffset, -1), toLocal = to - offset;\n let { index, offset: childOffset } = node.content.findIndex(fromLocal);\n let childNode = node.maybeChild(index);\n if (childNode && childOffset == fromLocal && childOffset + childNode.nodeSize == toLocal) {\n let mapped = children[i + 2]\n .mapInner(mapping, childNode, from + 1, oldChildren[i] + oldOffset + 1, options);\n if (mapped != empty) {\n children[i] = fromLocal;\n children[i + 1] = toLocal;\n children[i + 2] = mapped;\n }\n else {\n children[i + 1] = -2;\n mustRebuild = true;\n }\n }\n else {\n mustRebuild = true;\n }\n }\n // Remaining children must be collected and rebuilt into the appropriate structure\n if (mustRebuild) {\n let decorations = mapAndGatherRemainingDecorations(children, oldChildren, newLocal, mapping, offset, oldOffset, options);\n let built = buildTree(decorations, node, 0, options);\n newLocal = built.local;\n for (let i = 0; i < children.length; i += 3)\n if (children[i + 1] < 0) {\n children.splice(i, 3);\n i -= 3;\n }\n for (let i = 0, j = 0; i < built.children.length; i += 3) {\n let from = built.children[i];\n while (j < children.length && children[j] < from)\n j += 3;\n children.splice(j, 0, built.children[i], built.children[i + 1], built.children[i + 2]);\n }\n }\n return new DecorationSet(newLocal.sort(byPos), children);\n}\nfunction moveSpans(spans, offset) {\n if (!offset || !spans.length)\n return spans;\n let result = [];\n for (let i = 0; i < spans.length; i++) {\n let span = spans[i];\n result.push(new Decoration(span.from + offset, span.to + offset, span.type));\n }\n return result;\n}\nfunction mapAndGatherRemainingDecorations(children, oldChildren, decorations, mapping, offset, oldOffset, options) {\n // Gather all decorations from the remaining marked children\n function gather(set, oldOffset) {\n for (let i = 0; i < set.local.length; i++) {\n let mapped = set.local[i].map(mapping, offset, oldOffset);\n if (mapped)\n decorations.push(mapped);\n else if (options.onRemove)\n options.onRemove(set.local[i].spec);\n }\n for (let i = 0; i < set.children.length; i += 3)\n gather(set.children[i + 2], set.children[i] + oldOffset + 1);\n }\n for (let i = 0; i < children.length; i += 3)\n if (children[i + 1] == -1)\n gather(children[i + 2], oldChildren[i] + oldOffset + 1);\n return decorations;\n}\nfunction takeSpansForNode(spans, node, offset) {\n if (node.isLeaf)\n return null;\n let end = offset + node.nodeSize, found = null;\n for (let i = 0, span; i < spans.length; i++) {\n if ((span = spans[i]) && span.from > offset && span.to < end) {\n (found || (found = [])).push(span);\n spans[i] = null;\n }\n }\n return found;\n}\nfunction withoutNulls(array) {\n let result = [];\n for (let i = 0; i < array.length; i++)\n if (array[i] != null)\n result.push(array[i]);\n return result;\n}\n// Build up a tree that corresponds to a set of decorations. `offset`\n// is a base offset that should be subtracted from the `from` and `to`\n// positions in the spans (so that we don't have to allocate new spans\n// for recursive calls).\nfunction buildTree(spans, node, offset, options) {\n let children = [], hasNulls = false;\n node.forEach((childNode, localStart) => {\n let found = takeSpansForNode(spans, childNode, localStart + offset);\n if (found) {\n hasNulls = true;\n let subtree = buildTree(found, childNode, offset + localStart + 1, options);\n if (subtree != empty)\n children.push(localStart, localStart + childNode.nodeSize, subtree);\n }\n });\n let locals = moveSpans(hasNulls ? withoutNulls(spans) : spans, -offset).sort(byPos);\n for (let i = 0; i < locals.length; i++)\n if (!locals[i].type.valid(node, locals[i])) {\n if (options.onRemove)\n options.onRemove(locals[i].spec);\n locals.splice(i--, 1);\n }\n return locals.length || children.length ? new DecorationSet(locals, children) : empty;\n}\n// Used to sort decorations so that ones with a low start position\n// come first, and within a set with the same start position, those\n// with an smaller end position come first.\nfunction byPos(a, b) {\n return a.from - b.from || a.to - b.to;\n}\n// Scan a sorted array of decorations for partially overlapping spans,\n// and split those so that only fully overlapping spans are left (to\n// make subsequent rendering easier). Will return the input array if\n// no partially overlapping spans are found (the common case).\nfunction removeOverlap(spans) {\n let working = spans;\n for (let i = 0; i < working.length - 1; i++) {\n let span = working[i];\n if (span.from != span.to)\n for (let j = i + 1; j < working.length; j++) {\n let next = working[j];\n if (next.from == span.from) {\n if (next.to != span.to) {\n if (working == spans)\n working = spans.slice();\n // Followed by a partially overlapping larger span. Split that\n // span.\n working[j] = next.copy(next.from, span.to);\n insertAhead(working, j + 1, next.copy(span.to, next.to));\n }\n continue;\n }\n else {\n if (next.from < span.to) {\n if (working == spans)\n working = spans.slice();\n // The end of this one overlaps with a subsequent span. Split\n // this one.\n working[i] = span.copy(span.from, next.from);\n insertAhead(working, j, span.copy(next.from, span.to));\n }\n break;\n }\n }\n }\n return working;\n}\nfunction insertAhead(array, i, deco) {\n while (i < array.length && byPos(deco, array[i]) > 0)\n i++;\n array.splice(i, 0, deco);\n}\n// Get the decorations associated with the current props of a view.\nfunction viewDecorations(view) {\n let found = [];\n view.someProp(\"decorations\", f => {\n let result = f(view.state);\n if (result && result != empty)\n found.push(result);\n });\n if (view.cursorWrapper)\n found.push(DecorationSet.create(view.state.doc, [view.cursorWrapper.deco]));\n return DecorationGroup.from(found);\n}\n\nconst observeOptions = {\n childList: true,\n characterData: true,\n characterDataOldValue: true,\n attributes: true,\n attributeOldValue: true,\n subtree: true\n};\n// IE11 has very broken mutation observers, so we also listen to DOMCharacterDataModified\nconst useCharData = ie && ie_version <= 11;\nclass SelectionState {\n constructor() {\n this.anchorNode = null;\n this.anchorOffset = 0;\n this.focusNode = null;\n this.focusOffset = 0;\n }\n set(sel) {\n this.anchorNode = sel.anchorNode;\n this.anchorOffset = sel.anchorOffset;\n this.focusNode = sel.focusNode;\n this.focusOffset = sel.focusOffset;\n }\n clear() {\n this.anchorNode = this.focusNode = null;\n }\n eq(sel) {\n return sel.anchorNode == this.anchorNode && sel.anchorOffset == this.anchorOffset &&\n sel.focusNode == this.focusNode && sel.focusOffset == this.focusOffset;\n }\n}\nclass DOMObserver {\n constructor(view, handleDOMChange) {\n this.view = view;\n this.handleDOMChange = handleDOMChange;\n this.queue = [];\n this.flushingSoon = -1;\n this.observer = null;\n this.currentSelection = new SelectionState;\n this.onCharData = null;\n this.suppressingSelectionUpdates = false;\n this.observer = window.MutationObserver &&\n new window.MutationObserver(mutations => {\n for (let i = 0; i < mutations.length; i++)\n this.queue.push(mutations[i]);\n // IE11 will sometimes (on backspacing out a single character\n // text node after a BR node) call the observer callback\n // before actually updating the DOM, which will cause\n // ProseMirror to miss the change (see #930)\n if (ie && ie_version <= 11 && mutations.some(m => m.type == \"childList\" && m.removedNodes.length ||\n m.type == \"characterData\" && m.oldValue.length > m.target.nodeValue.length))\n this.flushSoon();\n else\n this.flush();\n });\n if (useCharData) {\n this.onCharData = e => {\n this.queue.push({ target: e.target, type: \"characterData\", oldValue: e.prevValue });\n this.flushSoon();\n };\n }\n this.onSelectionChange = this.onSelectionChange.bind(this);\n }\n flushSoon() {\n if (this.flushingSoon < 0)\n this.flushingSoon = window.setTimeout(() => { this.flushingSoon = -1; this.flush(); }, 20);\n }\n forceFlush() {\n if (this.flushingSoon > -1) {\n window.clearTimeout(this.flushingSoon);\n this.flushingSoon = -1;\n this.flush();\n }\n }\n start() {\n if (this.observer) {\n this.observer.takeRecords();\n this.observer.observe(this.view.dom, observeOptions);\n }\n if (this.onCharData)\n this.view.dom.addEventListener(\"DOMCharacterDataModified\", this.onCharData);\n this.connectSelection();\n }\n stop() {\n if (this.observer) {\n let take = this.observer.takeRecords();\n if (take.length) {\n for (let i = 0; i < take.length; i++)\n this.queue.push(take[i]);\n window.setTimeout(() => this.flush(), 20);\n }\n this.observer.disconnect();\n }\n if (this.onCharData)\n this.view.dom.removeEventListener(\"DOMCharacterDataModified\", this.onCharData);\n this.disconnectSelection();\n }\n connectSelection() {\n this.view.dom.ownerDocument.addEventListener(\"selectionchange\", this.onSelectionChange);\n }\n disconnectSelection() {\n this.view.dom.ownerDocument.removeEventListener(\"selectionchange\", this.onSelectionChange);\n }\n suppressSelectionUpdates() {\n this.suppressingSelectionUpdates = true;\n setTimeout(() => this.suppressingSelectionUpdates = false, 50);\n }\n onSelectionChange() {\n if (!hasFocusAndSelection(this.view))\n return;\n if (this.suppressingSelectionUpdates)\n return selectionToDOM(this.view);\n // Deletions on IE11 fire their events in the wrong order, giving\n // us a selection change event before the DOM changes are\n // reported.\n if (ie && ie_version <= 11 && !this.view.state.selection.empty) {\n let sel = this.view.domSelectionRange();\n // Selection.isCollapsed isn't reliable on IE\n if (sel.focusNode && isEquivalentPosition(sel.focusNode, sel.focusOffset, sel.anchorNode, sel.anchorOffset))\n return this.flushSoon();\n }\n this.flush();\n }\n setCurSelection() {\n this.currentSelection.set(this.view.domSelectionRange());\n }\n ignoreSelectionChange(sel) {\n if (!sel.focusNode)\n return true;\n let ancestors = new Set, container;\n for (let scan = sel.focusNode; scan; scan = parentNode(scan))\n ancestors.add(scan);\n for (let scan = sel.anchorNode; scan; scan = parentNode(scan))\n if (ancestors.has(scan)) {\n container = scan;\n break;\n }\n let desc = container && this.view.docView.nearestDesc(container);\n if (desc && desc.ignoreMutation({\n type: \"selection\",\n target: container.nodeType == 3 ? container.parentNode : container\n })) {\n this.setCurSelection();\n return true;\n }\n }\n pendingRecords() {\n if (this.observer)\n for (let mut of this.observer.takeRecords())\n this.queue.push(mut);\n return this.queue;\n }\n flush() {\n let { view } = this;\n if (!view.docView || this.flushingSoon > -1)\n return;\n let mutations = this.pendingRecords();\n if (mutations.length)\n this.queue = [];\n let sel = view.domSelectionRange();\n let newSel = !this.suppressingSelectionUpdates && !this.currentSelection.eq(sel) && hasFocusAndSelection(view) && !this.ignoreSelectionChange(sel);\n let from = -1, to = -1, typeOver = false, added = [];\n if (view.editable) {\n for (let i = 0; i < mutations.length; i++) {\n let result = this.registerMutation(mutations[i], added);\n if (result) {\n from = from < 0 ? result.from : Math.min(result.from, from);\n to = to < 0 ? result.to : Math.max(result.to, to);\n if (result.typeOver)\n typeOver = true;\n }\n }\n }\n if (gecko && added.length > 1) {\n let brs = added.filter(n => n.nodeName == \"BR\");\n if (brs.length == 2) {\n let a = brs[0], b = brs[1];\n if (a.parentNode && a.parentNode.parentNode == b.parentNode)\n b.remove();\n else\n a.remove();\n }\n }\n let readSel = null;\n // If it looks like the browser has reset the selection to the\n // start of the document after focus, restore the selection from\n // the state\n if (from < 0 && newSel && view.input.lastFocus > Date.now() - 200 &&\n Math.max(view.input.lastTouch, view.input.lastClick.time) < Date.now() - 300 &&\n selectionCollapsed(sel) && (readSel = selectionFromDOM(view)) &&\n readSel.eq(Selection.near(view.state.doc.resolve(0), 1))) {\n view.input.lastFocus = 0;\n selectionToDOM(view);\n this.currentSelection.set(sel);\n view.scrollToSelection();\n }\n else if (from > -1 || newSel) {\n if (from > -1) {\n view.docView.markDirty(from, to);\n checkCSS(view);\n }\n this.handleDOMChange(from, to, typeOver, added);\n if (view.docView && view.docView.dirty)\n view.updateState(view.state);\n else if (!this.currentSelection.eq(sel))\n selectionToDOM(view);\n this.currentSelection.set(sel);\n }\n }\n registerMutation(mut, added) {\n // Ignore mutations inside nodes that were already noted as inserted\n if (added.indexOf(mut.target) > -1)\n return null;\n let desc = this.view.docView.nearestDesc(mut.target);\n if (mut.type == \"attributes\" &&\n (desc == this.view.docView || mut.attributeName == \"contenteditable\" ||\n // Firefox sometimes fires spurious events for null/empty styles\n (mut.attributeName == \"style\" && !mut.oldValue && !mut.target.getAttribute(\"style\"))))\n return null;\n if (!desc || desc.ignoreMutation(mut))\n return null;\n if (mut.type == \"childList\") {\n for (let i = 0; i < mut.addedNodes.length; i++)\n added.push(mut.addedNodes[i]);\n if (desc.contentDOM && desc.contentDOM != desc.dom && !desc.contentDOM.contains(mut.target))\n return { from: desc.posBefore, to: desc.posAfter };\n let prev = mut.previousSibling, next = mut.nextSibling;\n if (ie && ie_version <= 11 && mut.addedNodes.length) {\n // IE11 gives us incorrect next/prev siblings for some\n // insertions, so if there are added nodes, recompute those\n for (let i = 0; i < mut.addedNodes.length; i++) {\n let { previousSibling, nextSibling } = mut.addedNodes[i];\n if (!previousSibling || Array.prototype.indexOf.call(mut.addedNodes, previousSibling) < 0)\n prev = previousSibling;\n if (!nextSibling || Array.prototype.indexOf.call(mut.addedNodes, nextSibling) < 0)\n next = nextSibling;\n }\n }\n let fromOffset = prev && prev.parentNode == mut.target\n ? domIndex(prev) + 1 : 0;\n let from = desc.localPosFromDOM(mut.target, fromOffset, -1);\n let toOffset = next && next.parentNode == mut.target\n ? domIndex(next) : mut.target.childNodes.length;\n let to = desc.localPosFromDOM(mut.target, toOffset, 1);\n return { from, to };\n }\n else if (mut.type == \"attributes\") {\n return { from: desc.posAtStart - desc.border, to: desc.posAtEnd + desc.border };\n }\n else { // \"characterData\"\n return {\n from: desc.posAtStart,\n to: desc.posAtEnd,\n // An event was generated for a text change that didn't change\n // any text. Mark the dom change to fall back to assuming the\n // selection was typed over with an identical value if it can't\n // find another change.\n typeOver: mut.target.nodeValue == mut.oldValue\n };\n }\n }\n}\nlet cssChecked = new WeakMap();\nlet cssCheckWarned = false;\nfunction checkCSS(view) {\n if (cssChecked.has(view))\n return;\n cssChecked.set(view, null);\n if (['normal', 'nowrap', 'pre-line'].indexOf(getComputedStyle(view.dom).whiteSpace) !== -1) {\n view.requiresGeckoHackNode = gecko;\n if (cssCheckWarned)\n return;\n console[\"warn\"](\"ProseMirror expects the CSS white-space property to be set, preferably to 'pre-wrap'. It is recommended to load style/prosemirror.css from the prosemirror-view package.\");\n cssCheckWarned = true;\n }\n}\nfunction rangeToSelectionRange(view, range) {\n let anchorNode = range.startContainer, anchorOffset = range.startOffset;\n let focusNode = range.endContainer, focusOffset = range.endOffset;\n let currentAnchor = view.domAtPos(view.state.selection.anchor);\n // Since such a range doesn't distinguish between anchor and head,\n // use a heuristic that flips it around if its end matches the\n // current anchor.\n if (isEquivalentPosition(currentAnchor.node, currentAnchor.offset, focusNode, focusOffset))\n [anchorNode, anchorOffset, focusNode, focusOffset] = [focusNode, focusOffset, anchorNode, anchorOffset];\n return { anchorNode, anchorOffset, focusNode, focusOffset };\n}\n// Used to work around a Safari Selection/shadow DOM bug\n// Based on https://github.com/codemirror/dev/issues/414 fix\nfunction safariShadowSelectionRange(view, selection) {\n if (selection.getComposedRanges) {\n let range = selection.getComposedRanges(view.root)[0];\n if (range)\n return rangeToSelectionRange(view, range);\n }\n let found;\n function read(event) {\n event.preventDefault();\n event.stopImmediatePropagation();\n found = event.getTargetRanges()[0];\n }\n // Because Safari (at least in 2018-2022) doesn't provide regular\n // access to the selection inside a shadowRoot, we have to perform a\n // ridiculous hack to get at it—using `execCommand` to trigger a\n // `beforeInput` event so that we can read the target range from the\n // event.\n view.dom.addEventListener(\"beforeinput\", read, true);\n document.execCommand(\"indent\");\n view.dom.removeEventListener(\"beforeinput\", read, true);\n return found ? rangeToSelectionRange(view, found) : null;\n}\n\n// Note that all referencing and parsing is done with the\n// start-of-operation selection and document, since that's the one\n// that the DOM represents. If any changes came in in the meantime,\n// the modification is mapped over those before it is applied, in\n// readDOMChange.\nfunction parseBetween(view, from_, to_) {\n let { node: parent, fromOffset, toOffset, from, to } = view.docView.parseRange(from_, to_);\n let domSel = view.domSelectionRange();\n let find;\n let anchor = domSel.anchorNode;\n if (anchor && view.dom.contains(anchor.nodeType == 1 ? anchor : anchor.parentNode)) {\n find = [{ node: anchor, offset: domSel.anchorOffset }];\n if (!selectionCollapsed(domSel))\n find.push({ node: domSel.focusNode, offset: domSel.focusOffset });\n }\n // Work around issue in Chrome where backspacing sometimes replaces\n // the deleted content with a random BR node (issues #799, #831)\n if (chrome && view.input.lastKeyCode === 8) {\n for (let off = toOffset; off > fromOffset; off--) {\n let node = parent.childNodes[off - 1], desc = node.pmViewDesc;\n if (node.nodeName == \"BR\" && !desc) {\n toOffset = off;\n break;\n }\n if (!desc || desc.size)\n break;\n }\n }\n let startDoc = view.state.doc;\n let parser = view.someProp(\"domParser\") || DOMParser.fromSchema(view.state.schema);\n let $from = startDoc.resolve(from);\n let sel = null, doc = parser.parse(parent, {\n topNode: $from.parent,\n topMatch: $from.parent.contentMatchAt($from.index()),\n topOpen: true,\n from: fromOffset,\n to: toOffset,\n preserveWhitespace: $from.parent.type.whitespace == \"pre\" ? \"full\" : true,\n findPositions: find,\n ruleFromNode,\n context: $from\n });\n if (find && find[0].pos != null) {\n let anchor = find[0].pos, head = find[1] && find[1].pos;\n if (head == null)\n head = anchor;\n sel = { anchor: anchor + from, head: head + from };\n }\n return { doc, sel, from, to };\n}\nfunction ruleFromNode(dom) {\n let desc = dom.pmViewDesc;\n if (desc) {\n return desc.parseRule();\n }\n else if (dom.nodeName == \"BR\" && dom.parentNode) {\n // Safari replaces the list item or table cell with a BR\n // directly in the list node (?!) if you delete the last\n // character in a list item or table cell (#708, #862)\n if (safari && /^(ul|ol)$/i.test(dom.parentNode.nodeName)) {\n let skip = document.createElement(\"div\");\n skip.appendChild(document.createElement(\"li\"));\n return { skip };\n }\n else if (dom.parentNode.lastChild == dom || safari && /^(tr|table)$/i.test(dom.parentNode.nodeName)) {\n return { ignore: true };\n }\n }\n else if (dom.nodeName == \"IMG\" && dom.getAttribute(\"mark-placeholder\")) {\n return { ignore: true };\n }\n return null;\n}\nconst isInline = /^(a|abbr|acronym|b|bd[io]|big|br|button|cite|code|data(list)?|del|dfn|em|i|ins|kbd|label|map|mark|meter|output|q|ruby|s|samp|small|span|strong|su[bp]|time|u|tt|var)$/i;\nfunction readDOMChange(view, from, to, typeOver, addedNodes) {\n let compositionID = view.input.compositionPendingChanges || (view.composing ? view.input.compositionID : 0);\n view.input.compositionPendingChanges = 0;\n if (from < 0) {\n let origin = view.input.lastSelectionTime > Date.now() - 50 ? view.input.lastSelectionOrigin : null;\n let newSel = selectionFromDOM(view, origin);\n if (newSel && !view.state.selection.eq(newSel)) {\n if (chrome && android &&\n view.input.lastKeyCode === 13 && Date.now() - 100 < view.input.lastKeyCodeTime &&\n view.someProp(\"handleKeyDown\", f => f(view, keyEvent(13, \"Enter\"))))\n return;\n let tr = view.state.tr.setSelection(newSel);\n if (origin == \"pointer\")\n tr.setMeta(\"pointer\", true);\n else if (origin == \"key\")\n tr.scrollIntoView();\n if (compositionID)\n tr.setMeta(\"composition\", compositionID);\n view.dispatch(tr);\n }\n return;\n }\n let $before = view.state.doc.resolve(from);\n let shared = $before.sharedDepth(to);\n from = $before.before(shared + 1);\n to = view.state.doc.resolve(to).after(shared + 1);\n let sel = view.state.selection;\n let parse = parseBetween(view, from, to);\n let doc = view.state.doc, compare = doc.slice(parse.from, parse.to);\n let preferredPos, preferredSide;\n // Prefer anchoring to end when Backspace is pressed\n if (view.input.lastKeyCode === 8 && Date.now() - 100 < view.input.lastKeyCodeTime) {\n preferredPos = view.state.selection.to;\n preferredSide = \"end\";\n }\n else {\n preferredPos = view.state.selection.from;\n preferredSide = \"start\";\n }\n view.input.lastKeyCode = null;\n let change = findDiff(compare.content, parse.doc.content, parse.from, preferredPos, preferredSide);\n if ((ios && view.input.lastIOSEnter > Date.now() - 225 || android) &&\n addedNodes.some(n => n.nodeType == 1 && !isInline.test(n.nodeName)) &&\n (!change || change.endA >= change.endB) &&\n view.someProp(\"handleKeyDown\", f => f(view, keyEvent(13, \"Enter\")))) {\n view.input.lastIOSEnter = 0;\n return;\n }\n if (!change) {\n if (typeOver && sel instanceof TextSelection && !sel.empty && sel.$head.sameParent(sel.$anchor) &&\n !view.composing && !(parse.sel && parse.sel.anchor != parse.sel.head)) {\n change = { start: sel.from, endA: sel.to, endB: sel.to };\n }\n else {\n if (parse.sel) {\n let sel = resolveSelection(view, view.state.doc, parse.sel);\n if (sel && !sel.eq(view.state.selection)) {\n let tr = view.state.tr.setSelection(sel);\n if (compositionID)\n tr.setMeta(\"composition\", compositionID);\n view.dispatch(tr);\n }\n }\n return;\n }\n }\n view.input.domChangeCount++;\n // Handle the case where overwriting a selection by typing matches\n // the start or end of the selected content, creating a change\n // that's smaller than what was actually overwritten.\n if (view.state.selection.from < view.state.selection.to &&\n change.start == change.endB &&\n view.state.selection instanceof TextSelection) {\n if (change.start > view.state.selection.from && change.start <= view.state.selection.from + 2 &&\n view.state.selection.from >= parse.from) {\n change.start = view.state.selection.from;\n }\n else if (change.endA < view.state.selection.to && change.endA >= view.state.selection.to - 2 &&\n view.state.selection.to <= parse.to) {\n change.endB += (view.state.selection.to - change.endA);\n change.endA = view.state.selection.to;\n }\n }\n // IE11 will insert a non-breaking space _ahead_ of the space after\n // the cursor space when adding a space before another space. When\n // that happened, adjust the change to cover the space instead.\n if (ie && ie_version <= 11 && change.endB == change.start + 1 &&\n change.endA == change.start && change.start > parse.from &&\n parse.doc.textBetween(change.start - parse.from - 1, change.start - parse.from + 1) == \" \\u00a0\") {\n change.start--;\n change.endA--;\n change.endB--;\n }\n let $from = parse.doc.resolveNoCache(change.start - parse.from);\n let $to = parse.doc.resolveNoCache(change.endB - parse.from);\n let $fromA = doc.resolve(change.start);\n let inlineChange = $from.sameParent($to) && $from.parent.inlineContent && $fromA.end() >= change.endA;\n let nextSel;\n // If this looks like the effect of pressing Enter (or was recorded\n // as being an iOS enter press), just dispatch an Enter key instead.\n if (((ios && view.input.lastIOSEnter > Date.now() - 225 &&\n (!inlineChange || addedNodes.some(n => n.nodeName == \"DIV\" || n.nodeName == \"P\"))) ||\n (!inlineChange && $from.pos < parse.doc.content.size && !$from.sameParent($to) &&\n (nextSel = Selection.findFrom(parse.doc.resolve($from.pos + 1), 1, true)) &&\n nextSel.head == $to.pos)) &&\n view.someProp(\"handleKeyDown\", f => f(view, keyEvent(13, \"Enter\")))) {\n view.input.lastIOSEnter = 0;\n return;\n }\n // Same for backspace\n if (view.state.selection.anchor > change.start &&\n looksLikeBackspace(doc, change.start, change.endA, $from, $to) &&\n view.someProp(\"handleKeyDown\", f => f(view, keyEvent(8, \"Backspace\")))) {\n if (android && chrome)\n view.domObserver.suppressSelectionUpdates(); // #820\n return;\n }\n // Chrome Android will occasionally, during composition, delete the\n // entire composition and then immediately insert it again. This is\n // used to detect that situation.\n if (chrome && android && change.endB == change.start)\n view.input.lastAndroidDelete = Date.now();\n // This tries to detect Android virtual keyboard\n // enter-and-pick-suggestion action. That sometimes (see issue\n // #1059) first fires a DOM mutation, before moving the selection to\n // the newly created block. And then, because ProseMirror cleans up\n // the DOM selection, it gives up moving the selection entirely,\n // leaving the cursor in the wrong place. When that happens, we drop\n // the new paragraph from the initial change, and fire a simulated\n // enter key afterwards.\n if (android && !inlineChange && $from.start() != $to.start() && $to.parentOffset == 0 && $from.depth == $to.depth &&\n parse.sel && parse.sel.anchor == parse.sel.head && parse.sel.head == change.endA) {\n change.endB -= 2;\n $to = parse.doc.resolveNoCache(change.endB - parse.from);\n setTimeout(() => {\n view.someProp(\"handleKeyDown\", function (f) { return f(view, keyEvent(13, \"Enter\")); });\n }, 20);\n }\n let chFrom = change.start, chTo = change.endA;\n let tr, storedMarks, markChange;\n if (inlineChange) {\n if ($from.pos == $to.pos) { // Deletion\n // IE11 sometimes weirdly moves the DOM selection around after\n // backspacing out the first element in a textblock\n if (ie && ie_version <= 11 && $from.parentOffset == 0) {\n view.domObserver.suppressSelectionUpdates();\n setTimeout(() => selectionToDOM(view), 20);\n }\n tr = view.state.tr.delete(chFrom, chTo);\n storedMarks = doc.resolve(change.start).marksAcross(doc.resolve(change.endA));\n }\n else if ( // Adding or removing a mark\n change.endA == change.endB &&\n (markChange = isMarkChange($from.parent.content.cut($from.parentOffset, $to.parentOffset), $fromA.parent.content.cut($fromA.parentOffset, change.endA - $fromA.start())))) {\n tr = view.state.tr;\n if (markChange.type == \"add\")\n tr.addMark(chFrom, chTo, markChange.mark);\n else\n tr.removeMark(chFrom, chTo, markChange.mark);\n }\n else if ($from.parent.child($from.index()).isText && $from.index() == $to.index() - ($to.textOffset ? 0 : 1)) {\n // Both positions in the same text node -- simply insert text\n let text = $from.parent.textBetween($from.parentOffset, $to.parentOffset);\n if (view.someProp(\"handleTextInput\", f => f(view, chFrom, chTo, text)))\n return;\n tr = view.state.tr.insertText(text, chFrom, chTo);\n }\n }\n if (!tr)\n tr = view.state.tr.replace(chFrom, chTo, parse.doc.slice(change.start - parse.from, change.endB - parse.from));\n if (parse.sel) {\n let sel = resolveSelection(view, tr.doc, parse.sel);\n // Chrome Android will sometimes, during composition, report the\n // selection in the wrong place. If it looks like that is\n // happening, don't update the selection.\n // Edge just doesn't move the cursor forward when you start typing\n // in an empty block or between br nodes.\n if (sel && !(chrome && android && view.composing && sel.empty &&\n (change.start != change.endB || view.input.lastAndroidDelete < Date.now() - 100) &&\n (sel.head == chFrom || sel.head == tr.mapping.map(chTo) - 1) ||\n ie && sel.empty && sel.head == chFrom))\n tr.setSelection(sel);\n }\n if (storedMarks)\n tr.ensureMarks(storedMarks);\n if (compositionID)\n tr.setMeta(\"composition\", compositionID);\n view.dispatch(tr.scrollIntoView());\n}\nfunction resolveSelection(view, doc, parsedSel) {\n if (Math.max(parsedSel.anchor, parsedSel.head) > doc.content.size)\n return null;\n return selectionBetween(view, doc.resolve(parsedSel.anchor), doc.resolve(parsedSel.head));\n}\n// Given two same-length, non-empty fragments of inline content,\n// determine whether the first could be created from the second by\n// removing or adding a single mark type.\nfunction isMarkChange(cur, prev) {\n let curMarks = cur.firstChild.marks, prevMarks = prev.firstChild.marks;\n let added = curMarks, removed = prevMarks, type, mark, update;\n for (let i = 0; i < prevMarks.length; i++)\n added = prevMarks[i].removeFromSet(added);\n for (let i = 0; i < curMarks.length; i++)\n removed = curMarks[i].removeFromSet(removed);\n if (added.length == 1 && removed.length == 0) {\n mark = added[0];\n type = \"add\";\n update = (node) => node.mark(mark.addToSet(node.marks));\n }\n else if (added.length == 0 && removed.length == 1) {\n mark = removed[0];\n type = \"remove\";\n update = (node) => node.mark(mark.removeFromSet(node.marks));\n }\n else {\n return null;\n }\n let updated = [];\n for (let i = 0; i < prev.childCount; i++)\n updated.push(update(prev.child(i)));\n if (Fragment.from(updated).eq(cur))\n return { mark, type };\n}\nfunction looksLikeBackspace(old, start, end, $newStart, $newEnd) {\n if ( // The content must have shrunk\n end - start <= $newEnd.pos - $newStart.pos ||\n // newEnd must point directly at or after the end of the block that newStart points into\n skipClosingAndOpening($newStart, true, false) < $newEnd.pos)\n return false;\n let $start = old.resolve(start);\n // Handle the case where, rather than joining blocks, the change just removed an entire block\n if (!$newStart.parent.isTextblock) {\n let after = $start.nodeAfter;\n return after != null && end == start + after.nodeSize;\n }\n // Start must be at the end of a block\n if ($start.parentOffset < $start.parent.content.size || !$start.parent.isTextblock)\n return false;\n let $next = old.resolve(skipClosingAndOpening($start, true, true));\n // The next textblock must start before end and end near it\n if (!$next.parent.isTextblock || $next.pos > end ||\n skipClosingAndOpening($next, true, false) < end)\n return false;\n // The fragments after the join point must match\n return $newStart.parent.content.cut($newStart.parentOffset).eq($next.parent.content);\n}\nfunction skipClosingAndOpening($pos, fromEnd, mayOpen) {\n let depth = $pos.depth, end = fromEnd ? $pos.end() : $pos.pos;\n while (depth > 0 && (fromEnd || $pos.indexAfter(depth) == $pos.node(depth).childCount)) {\n depth--;\n end++;\n fromEnd = false;\n }\n if (mayOpen) {\n let next = $pos.node(depth).maybeChild($pos.indexAfter(depth));\n while (next && !next.isLeaf) {\n next = next.firstChild;\n end++;\n }\n }\n return end;\n}\nfunction findDiff(a, b, pos, preferredPos, preferredSide) {\n let start = a.findDiffStart(b, pos);\n if (start == null)\n return null;\n let { a: endA, b: endB } = a.findDiffEnd(b, pos + a.size, pos + b.size);\n if (preferredSide == \"end\") {\n let adjust = Math.max(0, start - Math.min(endA, endB));\n preferredPos -= endA + adjust - start;\n }\n if (endA < start && a.size < b.size) {\n let move = preferredPos <= start && preferredPos >= endA ? start - preferredPos : 0;\n start -= move;\n if (start && start < b.size && isSurrogatePair(b.textBetween(start - 1, start + 1)))\n start += move ? 1 : -1;\n endB = start + (endB - endA);\n endA = start;\n }\n else if (endB < start) {\n let move = preferredPos <= start && preferredPos >= endB ? start - preferredPos : 0;\n start -= move;\n if (start && start < a.size && isSurrogatePair(a.textBetween(start - 1, start + 1)))\n start += move ? 1 : -1;\n endA = start + (endA - endB);\n endB = start;\n }\n return { start, endA, endB };\n}\nfunction isSurrogatePair(str) {\n if (str.length != 2)\n return false;\n let a = str.charCodeAt(0), b = str.charCodeAt(1);\n return a >= 0xDC00 && a <= 0xDFFF && b >= 0xD800 && b <= 0xDBFF;\n}\n\n/**\n@internal\n*/\nconst __serializeForClipboard = serializeForClipboard;\n/**\n@internal\n*/\nconst __parseFromClipboard = parseFromClipboard;\n/**\n@internal\n*/\nconst __endComposition = endComposition;\n/**\nAn editor view manages the DOM structure that represents an\neditable document. Its state and behavior are determined by its\n[props](https://prosemirror.net/docs/ref/#view.DirectEditorProps).\n*/\nclass EditorView {\n /**\n Create a view. `place` may be a DOM node that the editor should\n be appended to, a function that will place it into the document,\n or an object whose `mount` property holds the node to use as the\n document container. If it is `null`, the editor will not be\n added to the document.\n */\n constructor(place, props) {\n this._root = null;\n /**\n @internal\n */\n this.focused = false;\n /**\n Kludge used to work around a Chrome bug @internal\n */\n this.trackWrites = null;\n this.mounted = false;\n /**\n @internal\n */\n this.markCursor = null;\n /**\n @internal\n */\n this.cursorWrapper = null;\n /**\n @internal\n */\n this.lastSelectedViewDesc = undefined;\n /**\n @internal\n */\n this.input = new InputState;\n this.prevDirectPlugins = [];\n this.pluginViews = [];\n /**\n Holds `true` when a hack node is needed in Firefox to prevent the\n [space is eaten issue](https://github.com/ProseMirror/prosemirror/issues/651)\n @internal\n */\n this.requiresGeckoHackNode = false;\n /**\n When editor content is being dragged, this object contains\n information about the dragged slice and whether it is being\n copied or moved. At any other time, it is null.\n */\n this.dragging = null;\n this._props = props;\n this.state = props.state;\n this.directPlugins = props.plugins || [];\n this.directPlugins.forEach(checkStateComponent);\n this.dispatch = this.dispatch.bind(this);\n this.dom = (place && place.mount) || document.createElement(\"div\");\n if (place) {\n if (place.appendChild)\n place.appendChild(this.dom);\n else if (typeof place == \"function\")\n place(this.dom);\n else if (place.mount)\n this.mounted = true;\n }\n this.editable = getEditable(this);\n updateCursorWrapper(this);\n this.nodeViews = buildNodeViews(this);\n this.docView = docViewDesc(this.state.doc, computeDocDeco(this), viewDecorations(this), this.dom, this);\n this.domObserver = new DOMObserver(this, (from, to, typeOver, added) => readDOMChange(this, from, to, typeOver, added));\n this.domObserver.start();\n initInput(this);\n this.updatePluginViews();\n }\n /**\n Holds `true` when a\n [composition](https://w3c.github.io/uievents/#events-compositionevents)\n is active.\n */\n get composing() { return this.input.composing; }\n /**\n The view's current [props](https://prosemirror.net/docs/ref/#view.EditorProps).\n */\n get props() {\n if (this._props.state != this.state) {\n let prev = this._props;\n this._props = {};\n for (let name in prev)\n this._props[name] = prev[name];\n this._props.state = this.state;\n }\n return this._props;\n }\n /**\n Update the view's props. Will immediately cause an update to\n the DOM.\n */\n update(props) {\n if (props.handleDOMEvents != this._props.handleDOMEvents)\n ensureListeners(this);\n let prevProps = this._props;\n this._props = props;\n if (props.plugins) {\n props.plugins.forEach(checkStateComponent);\n this.directPlugins = props.plugins;\n }\n this.updateStateInner(props.state, prevProps);\n }\n /**\n Update the view by updating existing props object with the object\n given as argument. Equivalent to `view.update(Object.assign({},\n view.props, props))`.\n */\n setProps(props) {\n let updated = {};\n for (let name in this._props)\n updated[name] = this._props[name];\n updated.state = this.state;\n for (let name in props)\n updated[name] = props[name];\n this.update(updated);\n }\n /**\n Update the editor's `state` prop, without touching any of the\n other props.\n */\n updateState(state) {\n this.updateStateInner(state, this._props);\n }\n updateStateInner(state, prevProps) {\n var _a;\n let prev = this.state, redraw = false, updateSel = false;\n // When stored marks are added, stop composition, so that they can\n // be displayed.\n if (state.storedMarks && this.composing) {\n clearComposition(this);\n updateSel = true;\n }\n this.state = state;\n let pluginsChanged = prev.plugins != state.plugins || this._props.plugins != prevProps.plugins;\n if (pluginsChanged || this._props.plugins != prevProps.plugins || this._props.nodeViews != prevProps.nodeViews) {\n let nodeViews = buildNodeViews(this);\n if (changedNodeViews(nodeViews, this.nodeViews)) {\n this.nodeViews = nodeViews;\n redraw = true;\n }\n }\n if (pluginsChanged || prevProps.handleDOMEvents != this._props.handleDOMEvents) {\n ensureListeners(this);\n }\n this.editable = getEditable(this);\n updateCursorWrapper(this);\n let innerDeco = viewDecorations(this), outerDeco = computeDocDeco(this);\n let scroll = prev.plugins != state.plugins && !prev.doc.eq(state.doc) ? \"reset\"\n : state.scrollToSelection > prev.scrollToSelection ? \"to selection\" : \"preserve\";\n let updateDoc = redraw || !this.docView.matchesNode(state.doc, outerDeco, innerDeco);\n if (updateDoc || !state.selection.eq(prev.selection))\n updateSel = true;\n let oldScrollPos = scroll == \"preserve\" && updateSel && this.dom.style.overflowAnchor == null && storeScrollPos(this);\n if (updateSel) {\n this.domObserver.stop();\n // Work around an issue in Chrome, IE, and Edge where changing\n // the DOM around an active selection puts it into a broken\n // state where the thing the user sees differs from the\n // selection reported by the Selection object (#710, #973,\n // #1011, #1013, #1035).\n let forceSelUpdate = updateDoc && (ie || chrome) && !this.composing &&\n !prev.selection.empty && !state.selection.empty && selectionContextChanged(prev.selection, state.selection);\n if (updateDoc) {\n // If the node that the selection points into is written to,\n // Chrome sometimes starts misreporting the selection, so this\n // tracks that and forces a selection reset when our update\n // did write to the node.\n let chromeKludge = chrome ? (this.trackWrites = this.domSelectionRange().focusNode) : null;\n if (this.composing)\n this.input.compositionNode = findCompositionNode(this);\n if (redraw || !this.docView.update(state.doc, outerDeco, innerDeco, this)) {\n this.docView.updateOuterDeco(outerDeco);\n this.docView.destroy();\n this.docView = docViewDesc(state.doc, outerDeco, innerDeco, this.dom, this);\n }\n if (chromeKludge && !this.trackWrites)\n forceSelUpdate = true;\n }\n // Work around for an issue where an update arriving right between\n // a DOM selection change and the \"selectionchange\" event for it\n // can cause a spurious DOM selection update, disrupting mouse\n // drag selection.\n if (forceSelUpdate ||\n !(this.input.mouseDown && this.domObserver.currentSelection.eq(this.domSelectionRange()) &&\n anchorInRightPlace(this))) {\n selectionToDOM(this, forceSelUpdate);\n }\n else {\n syncNodeSelection(this, state.selection);\n this.domObserver.setCurSelection();\n }\n this.domObserver.start();\n }\n this.updatePluginViews(prev);\n if (((_a = this.dragging) === null || _a === void 0 ? void 0 : _a.node) && !prev.doc.eq(state.doc))\n this.updateDraggedNode(this.dragging, prev);\n if (scroll == \"reset\") {\n this.dom.scrollTop = 0;\n }\n else if (scroll == \"to selection\") {\n this.scrollToSelection();\n }\n else if (oldScrollPos) {\n resetScrollPos(oldScrollPos);\n }\n }\n /**\n @internal\n */\n scrollToSelection() {\n let startDOM = this.domSelectionRange().focusNode;\n if (this.someProp(\"handleScrollToSelection\", f => f(this))) ;\n else if (this.state.selection instanceof NodeSelection) {\n let target = this.docView.domAfterPos(this.state.selection.from);\n if (target.nodeType == 1)\n scrollRectIntoView(this, target.getBoundingClientRect(), startDOM);\n }\n else {\n scrollRectIntoView(this, this.coordsAtPos(this.state.selection.head, 1), startDOM);\n }\n }\n destroyPluginViews() {\n let view;\n while (view = this.pluginViews.pop())\n if (view.destroy)\n view.destroy();\n }\n updatePluginViews(prevState) {\n if (!prevState || prevState.plugins != this.state.plugins || this.directPlugins != this.prevDirectPlugins) {\n this.prevDirectPlugins = this.directPlugins;\n this.destroyPluginViews();\n for (let i = 0; i < this.directPlugins.length; i++) {\n let plugin = this.directPlugins[i];\n if (plugin.spec.view)\n this.pluginViews.push(plugin.spec.view(this));\n }\n for (let i = 0; i < this.state.plugins.length; i++) {\n let plugin = this.state.plugins[i];\n if (plugin.spec.view)\n this.pluginViews.push(plugin.spec.view(this));\n }\n }\n else {\n for (let i = 0; i < this.pluginViews.length; i++) {\n let pluginView = this.pluginViews[i];\n if (pluginView.update)\n pluginView.update(this, prevState);\n }\n }\n }\n updateDraggedNode(dragging, prev) {\n let sel = dragging.node, found = -1;\n if (this.state.doc.nodeAt(sel.from) == sel.node) {\n found = sel.from;\n }\n else {\n let movedPos = sel.from + (this.state.doc.content.size - prev.doc.content.size);\n let moved = movedPos > 0 && this.state.doc.nodeAt(movedPos);\n if (moved == sel.node)\n found = movedPos;\n }\n this.dragging = new Dragging(dragging.slice, dragging.move, found < 0 ? undefined : NodeSelection.create(this.state.doc, found));\n }\n someProp(propName, f) {\n let prop = this._props && this._props[propName], value;\n if (prop != null && (value = f ? f(prop) : prop))\n return value;\n for (let i = 0; i < this.directPlugins.length; i++) {\n let prop = this.directPlugins[i].props[propName];\n if (prop != null && (value = f ? f(prop) : prop))\n return value;\n }\n let plugins = this.state.plugins;\n if (plugins)\n for (let i = 0; i < plugins.length; i++) {\n let prop = plugins[i].props[propName];\n if (prop != null && (value = f ? f(prop) : prop))\n return value;\n }\n }\n /**\n Query whether the view has focus.\n */\n hasFocus() {\n // Work around IE not handling focus correctly if resize handles are shown.\n // If the cursor is inside an element with resize handles, activeElement\n // will be that element instead of this.dom.\n if (ie) {\n // If activeElement is within this.dom, and there are no other elements\n // setting `contenteditable` to false in between, treat it as focused.\n let node = this.root.activeElement;\n if (node == this.dom)\n return true;\n if (!node || !this.dom.contains(node))\n return false;\n while (node && this.dom != node && this.dom.contains(node)) {\n if (node.contentEditable == 'false')\n return false;\n node = node.parentElement;\n }\n return true;\n }\n return this.root.activeElement == this.dom;\n }\n /**\n Focus the editor.\n */\n focus() {\n this.domObserver.stop();\n if (this.editable)\n focusPreventScroll(this.dom);\n selectionToDOM(this);\n this.domObserver.start();\n }\n /**\n Get the document root in which the editor exists. This will\n usually be the top-level `document`, but might be a [shadow\n DOM](https://developer.mozilla.org/en-US/docs/Web/Web_Components/Shadow_DOM)\n root if the editor is inside one.\n */\n get root() {\n let cached = this._root;\n if (cached == null)\n for (let search = this.dom.parentNode; search; search = search.parentNode) {\n if (search.nodeType == 9 || (search.nodeType == 11 && search.host)) {\n if (!search.getSelection)\n Object.getPrototypeOf(search).getSelection = () => search.ownerDocument.getSelection();\n return this._root = search;\n }\n }\n return cached || document;\n }\n /**\n When an existing editor view is moved to a new document or\n shadow tree, call this to make it recompute its root.\n */\n updateRoot() {\n this._root = null;\n }\n /**\n Given a pair of viewport coordinates, return the document\n position that corresponds to them. May return null if the given\n coordinates aren't inside of the editor. When an object is\n returned, its `pos` property is the position nearest to the\n coordinates, and its `inside` property holds the position of the\n inner node that the position falls inside of, or -1 if it is at\n the top level, not in any node.\n */\n posAtCoords(coords) {\n return posAtCoords(this, coords);\n }\n /**\n Returns the viewport rectangle at a given document position.\n `left` and `right` will be the same number, as this returns a\n flat cursor-ish rectangle. If the position is between two things\n that aren't directly adjacent, `side` determines which element\n is used. When < 0, the element before the position is used,\n otherwise the element after.\n */\n coordsAtPos(pos, side = 1) {\n return coordsAtPos(this, pos, side);\n }\n /**\n Find the DOM position that corresponds to the given document\n position. When `side` is negative, find the position as close as\n possible to the content before the position. When positive,\n prefer positions close to the content after the position. When\n zero, prefer as shallow a position as possible.\n \n Note that you should **not** mutate the editor's internal DOM,\n only inspect it (and even that is usually not necessary).\n */\n domAtPos(pos, side = 0) {\n return this.docView.domFromPos(pos, side);\n }\n /**\n Find the DOM node that represents the document node after the\n given position. May return `null` when the position doesn't point\n in front of a node or if the node is inside an opaque node view.\n \n This is intended to be able to call things like\n `getBoundingClientRect` on that DOM node. Do **not** mutate the\n editor DOM directly, or add styling this way, since that will be\n immediately overriden by the editor as it redraws the node.\n */\n nodeDOM(pos) {\n let desc = this.docView.descAt(pos);\n return desc ? desc.nodeDOM : null;\n }\n /**\n Find the document position that corresponds to a given DOM\n position. (Whenever possible, it is preferable to inspect the\n document structure directly, rather than poking around in the\n DOM, but sometimes—for example when interpreting an event\n target—you don't have a choice.)\n \n The `bias` parameter can be used to influence which side of a DOM\n node to use when the position is inside a leaf node.\n */\n posAtDOM(node, offset, bias = -1) {\n let pos = this.docView.posFromDOM(node, offset, bias);\n if (pos == null)\n throw new RangeError(\"DOM position not inside the editor\");\n return pos;\n }\n /**\n Find out whether the selection is at the end of a textblock when\n moving in a given direction. When, for example, given `\"left\"`,\n it will return true if moving left from the current cursor\n position would leave that position's parent textblock. Will apply\n to the view's current state by default, but it is possible to\n pass a different state.\n */\n endOfTextblock(dir, state) {\n return endOfTextblock(this, state || this.state, dir);\n }\n /**\n Run the editor's paste logic with the given HTML string. The\n `event`, if given, will be passed to the\n [`handlePaste`](https://prosemirror.net/docs/ref/#view.EditorProps.handlePaste) hook.\n */\n pasteHTML(html, event) {\n return doPaste(this, \"\", html, false, event || new ClipboardEvent(\"paste\"));\n }\n /**\n Run the editor's paste logic with the given plain-text input.\n */\n pasteText(text, event) {\n return doPaste(this, text, null, true, event || new ClipboardEvent(\"paste\"));\n }\n /**\n Removes the editor from the DOM and destroys all [node\n views](https://prosemirror.net/docs/ref/#view.NodeView).\n */\n destroy() {\n if (!this.docView)\n return;\n destroyInput(this);\n this.destroyPluginViews();\n if (this.mounted) {\n this.docView.update(this.state.doc, [], viewDecorations(this), this);\n this.dom.textContent = \"\";\n }\n else if (this.dom.parentNode) {\n this.dom.parentNode.removeChild(this.dom);\n }\n this.docView.destroy();\n this.docView = null;\n clearReusedRange();\n }\n /**\n This is true when the view has been\n [destroyed](https://prosemirror.net/docs/ref/#view.EditorView.destroy) (and thus should not be\n used anymore).\n */\n get isDestroyed() {\n return this.docView == null;\n }\n /**\n Used for testing.\n */\n dispatchEvent(event) {\n return dispatchEvent(this, event);\n }\n /**\n Dispatch a transaction. Will call\n [`dispatchTransaction`](https://prosemirror.net/docs/ref/#view.DirectEditorProps.dispatchTransaction)\n when given, and otherwise defaults to applying the transaction to\n the current state and calling\n [`updateState`](https://prosemirror.net/docs/ref/#view.EditorView.updateState) with the result.\n This method is bound to the view instance, so that it can be\n easily passed around.\n */\n dispatch(tr) {\n let dispatchTransaction = this._props.dispatchTransaction;\n if (dispatchTransaction)\n dispatchTransaction.call(this, tr);\n else\n this.updateState(this.state.apply(tr));\n }\n /**\n @internal\n */\n domSelectionRange() {\n let sel = this.domSelection();\n return safari && this.root.nodeType === 11 &&\n deepActiveElement(this.dom.ownerDocument) == this.dom && safariShadowSelectionRange(this, sel) || sel;\n }\n /**\n @internal\n */\n domSelection() {\n return this.root.getSelection();\n }\n}\nfunction computeDocDeco(view) {\n let attrs = Object.create(null);\n attrs.class = \"ProseMirror\";\n attrs.contenteditable = String(view.editable);\n view.someProp(\"attributes\", value => {\n if (typeof value == \"function\")\n value = value(view.state);\n if (value)\n for (let attr in value) {\n if (attr == \"class\")\n attrs.class += \" \" + value[attr];\n else if (attr == \"style\")\n attrs.style = (attrs.style ? attrs.style + \";\" : \"\") + value[attr];\n else if (!attrs[attr] && attr != \"contenteditable\" && attr != \"nodeName\")\n attrs[attr] = String(value[attr]);\n }\n });\n if (!attrs.translate)\n attrs.translate = \"no\";\n return [Decoration.node(0, view.state.doc.content.size, attrs)];\n}\nfunction updateCursorWrapper(view) {\n if (view.markCursor) {\n let dom = document.createElement(\"img\");\n dom.className = \"ProseMirror-separator\";\n dom.setAttribute(\"mark-placeholder\", \"true\");\n dom.setAttribute(\"alt\", \"\");\n view.cursorWrapper = { dom, deco: Decoration.widget(view.state.selection.head, dom, { raw: true, marks: view.markCursor }) };\n }\n else {\n view.cursorWrapper = null;\n }\n}\nfunction getEditable(view) {\n return !view.someProp(\"editable\", value => value(view.state) === false);\n}\nfunction selectionContextChanged(sel1, sel2) {\n let depth = Math.min(sel1.$anchor.sharedDepth(sel1.head), sel2.$anchor.sharedDepth(sel2.head));\n return sel1.$anchor.start(depth) != sel2.$anchor.start(depth);\n}\nfunction buildNodeViews(view) {\n let result = Object.create(null);\n function add(obj) {\n for (let prop in obj)\n if (!Object.prototype.hasOwnProperty.call(result, prop))\n result[prop] = obj[prop];\n }\n view.someProp(\"nodeViews\", add);\n view.someProp(\"markViews\", add);\n return result;\n}\nfunction changedNodeViews(a, b) {\n let nA = 0, nB = 0;\n for (let prop in a) {\n if (a[prop] != b[prop])\n return true;\n nA++;\n }\n for (let _ in b)\n nB++;\n return nA != nB;\n}\nfunction checkStateComponent(plugin) {\n if (plugin.spec.state || plugin.spec.filterTransaction || plugin.spec.appendTransaction)\n throw new RangeError(\"Plugins passed directly to the view must not have a state component\");\n}\n\nexport { Decoration, DecorationSet, EditorView, __endComposition, __parseFromClipboard, __serializeForClipboard };\n","import { keydownHandler } from 'prosemirror-keymap';\nimport { Selection, NodeSelection, TextSelection, Plugin } from 'prosemirror-state';\nimport { Slice, Fragment } from 'prosemirror-model';\nimport { DecorationSet, Decoration } from 'prosemirror-view';\n\n/**\nGap cursor selections are represented using this class. Its\n`$anchor` and `$head` properties both point at the cursor position.\n*/\nclass GapCursor extends Selection {\n /**\n Create a gap cursor.\n */\n constructor($pos) {\n super($pos, $pos);\n }\n map(doc, mapping) {\n let $pos = doc.resolve(mapping.map(this.head));\n return GapCursor.valid($pos) ? new GapCursor($pos) : Selection.near($pos);\n }\n content() { return Slice.empty; }\n eq(other) {\n return other instanceof GapCursor && other.head == this.head;\n }\n toJSON() {\n return { type: \"gapcursor\", pos: this.head };\n }\n /**\n @internal\n */\n static fromJSON(doc, json) {\n if (typeof json.pos != \"number\")\n throw new RangeError(\"Invalid input for GapCursor.fromJSON\");\n return new GapCursor(doc.resolve(json.pos));\n }\n /**\n @internal\n */\n getBookmark() { return new GapBookmark(this.anchor); }\n /**\n @internal\n */\n static valid($pos) {\n let parent = $pos.parent;\n if (parent.isTextblock || !closedBefore($pos) || !closedAfter($pos))\n return false;\n let override = parent.type.spec.allowGapCursor;\n if (override != null)\n return override;\n let deflt = parent.contentMatchAt($pos.index()).defaultType;\n return deflt && deflt.isTextblock;\n }\n /**\n @internal\n */\n static findGapCursorFrom($pos, dir, mustMove = false) {\n search: for (;;) {\n if (!mustMove && GapCursor.valid($pos))\n return $pos;\n let pos = $pos.pos, next = null;\n // Scan up from this position\n for (let d = $pos.depth;; d--) {\n let parent = $pos.node(d);\n if (dir > 0 ? $pos.indexAfter(d) < parent.childCount : $pos.index(d) > 0) {\n next = parent.child(dir > 0 ? $pos.indexAfter(d) : $pos.index(d) - 1);\n break;\n }\n else if (d == 0) {\n return null;\n }\n pos += dir;\n let $cur = $pos.doc.resolve(pos);\n if (GapCursor.valid($cur))\n return $cur;\n }\n // And then down into the next node\n for (;;) {\n let inside = dir > 0 ? next.firstChild : next.lastChild;\n if (!inside) {\n if (next.isAtom && !next.isText && !NodeSelection.isSelectable(next)) {\n $pos = $pos.doc.resolve(pos + next.nodeSize * dir);\n mustMove = false;\n continue search;\n }\n break;\n }\n next = inside;\n pos += dir;\n let $cur = $pos.doc.resolve(pos);\n if (GapCursor.valid($cur))\n return $cur;\n }\n return null;\n }\n }\n}\nGapCursor.prototype.visible = false;\nGapCursor.findFrom = GapCursor.findGapCursorFrom;\nSelection.jsonID(\"gapcursor\", GapCursor);\nclass GapBookmark {\n constructor(pos) {\n this.pos = pos;\n }\n map(mapping) {\n return new GapBookmark(mapping.map(this.pos));\n }\n resolve(doc) {\n let $pos = doc.resolve(this.pos);\n return GapCursor.valid($pos) ? new GapCursor($pos) : Selection.near($pos);\n }\n}\nfunction closedBefore($pos) {\n for (let d = $pos.depth; d >= 0; d--) {\n let index = $pos.index(d), parent = $pos.node(d);\n // At the start of this parent, look at next one\n if (index == 0) {\n if (parent.type.spec.isolating)\n return true;\n continue;\n }\n // See if the node before (or its first ancestor) is closed\n for (let before = parent.child(index - 1);; before = before.lastChild) {\n if ((before.childCount == 0 && !before.inlineContent) || before.isAtom || before.type.spec.isolating)\n return true;\n if (before.inlineContent)\n return false;\n }\n }\n // Hit start of document\n return true;\n}\nfunction closedAfter($pos) {\n for (let d = $pos.depth; d >= 0; d--) {\n let index = $pos.indexAfter(d), parent = $pos.node(d);\n if (index == parent.childCount) {\n if (parent.type.spec.isolating)\n return true;\n continue;\n }\n for (let after = parent.child(index);; after = after.firstChild) {\n if ((after.childCount == 0 && !after.inlineContent) || after.isAtom || after.type.spec.isolating)\n return true;\n if (after.inlineContent)\n return false;\n }\n }\n return true;\n}\n\n/**\nCreate a gap cursor plugin. When enabled, this will capture clicks\nnear and arrow-key-motion past places that don't have a normally\nselectable position nearby, and create a gap cursor selection for\nthem. The cursor is drawn as an element with class\n`ProseMirror-gapcursor`. You can either include\n`style/gapcursor.css` from the package's directory or add your own\nstyles to make it visible.\n*/\nfunction gapCursor() {\n return new Plugin({\n props: {\n decorations: drawGapCursor,\n createSelectionBetween(_view, $anchor, $head) {\n return $anchor.pos == $head.pos && GapCursor.valid($head) ? new GapCursor($head) : null;\n },\n handleClick,\n handleKeyDown,\n handleDOMEvents: { beforeinput: beforeinput }\n }\n });\n}\nconst handleKeyDown = keydownHandler({\n \"ArrowLeft\": arrow(\"horiz\", -1),\n \"ArrowRight\": arrow(\"horiz\", 1),\n \"ArrowUp\": arrow(\"vert\", -1),\n \"ArrowDown\": arrow(\"vert\", 1)\n});\nfunction arrow(axis, dir) {\n const dirStr = axis == \"vert\" ? (dir > 0 ? \"down\" : \"up\") : (dir > 0 ? \"right\" : \"left\");\n return function (state, dispatch, view) {\n let sel = state.selection;\n let $start = dir > 0 ? sel.$to : sel.$from, mustMove = sel.empty;\n if (sel instanceof TextSelection) {\n if (!view.endOfTextblock(dirStr) || $start.depth == 0)\n return false;\n mustMove = false;\n $start = state.doc.resolve(dir > 0 ? $start.after() : $start.before());\n }\n let $found = GapCursor.findGapCursorFrom($start, dir, mustMove);\n if (!$found)\n return false;\n if (dispatch)\n dispatch(state.tr.setSelection(new GapCursor($found)));\n return true;\n };\n}\nfunction handleClick(view, pos, event) {\n if (!view || !view.editable)\n return false;\n let $pos = view.state.doc.resolve(pos);\n if (!GapCursor.valid($pos))\n return false;\n let clickPos = view.posAtCoords({ left: event.clientX, top: event.clientY });\n if (clickPos && clickPos.inside > -1 && NodeSelection.isSelectable(view.state.doc.nodeAt(clickPos.inside)))\n return false;\n view.dispatch(view.state.tr.setSelection(new GapCursor($pos)));\n return true;\n}\n// This is a hack that, when a composition starts while a gap cursor\n// is active, quickly creates an inline context for the composition to\n// happen in, to avoid it being aborted by the DOM selection being\n// moved into a valid position.\nfunction beforeinput(view, event) {\n if (event.inputType != \"insertCompositionText\" || !(view.state.selection instanceof GapCursor))\n return false;\n let { $from } = view.state.selection;\n let insert = $from.parent.contentMatchAt($from.index()).findWrapping(view.state.schema.nodes.text);\n if (!insert)\n return false;\n let frag = Fragment.empty;\n for (let i = insert.length - 1; i >= 0; i--)\n frag = Fragment.from(insert[i].createAndFill(null, frag));\n let tr = view.state.tr.replace($from.pos, $from.pos, new Slice(frag, 0, 0));\n tr.setSelection(TextSelection.near(tr.doc.resolve($from.pos + 1)));\n view.dispatch(tr);\n return false;\n}\nfunction drawGapCursor(state) {\n if (!(state.selection instanceof GapCursor))\n return null;\n let node = document.createElement(\"div\");\n node.className = \"ProseMirror-gapcursor\";\n return DecorationSet.create(state.doc, [Decoration.widget(state.selection.head, node, { key: \"gapcursor\" })]);\n}\n\nexport { GapCursor, gapCursor };\n","import { Extension, callOrReturn, getExtensionField } from '@tiptap/core';\nimport { gapCursor } from '@tiptap/pm/gapcursor';\n\n/**\n * This extension allows you to add a gap cursor to your editor.\n * A gap cursor is a cursor that appears when you click on a place\n * where no content is present, for example inbetween nodes.\n * @see https://tiptap.dev/api/extensions/gapcursor\n */\nconst Gapcursor = Extension.create({\n name: 'gapCursor',\n addProseMirrorPlugins() {\n return [\n gapCursor(),\n ];\n },\n extendNodeSchema(extension) {\n var _a;\n const context = {\n name: extension.name,\n options: extension.options,\n storage: extension.storage,\n };\n return {\n allowGapCursor: (_a = callOrReturn(getExtensionField(extension, 'allowGapCursor', context))) !== null && _a !== void 0 ? _a : null,\n };\n },\n});\n\nexport { Gapcursor, Gapcursor as default };\n//# sourceMappingURL=index.js.map\n","import { Node, mergeAttributes } from '@tiptap/core';\n\n/**\n * This extension allows you to insert hard breaks.\n * @see https://www.tiptap.dev/api/nodes/hard-break\n */\nconst HardBreak = Node.create({\n name: 'hardBreak',\n addOptions() {\n return {\n keepMarks: true,\n HTMLAttributes: {},\n };\n },\n inline: true,\n group: 'inline',\n selectable: false,\n parseHTML() {\n return [\n { tag: 'br' },\n ];\n },\n renderHTML({ HTMLAttributes }) {\n return ['br', mergeAttributes(this.options.HTMLAttributes, HTMLAttributes)];\n },\n renderText() {\n return '\\n';\n },\n addCommands() {\n return {\n setHardBreak: () => ({ commands, chain, state, editor, }) => {\n return commands.first([\n () => commands.exitCode(),\n () => commands.command(() => {\n const { selection, storedMarks } = state;\n if (selection.$from.parent.type.spec.isolating) {\n return false;\n }\n const { keepMarks } = this.options;\n const { splittableMarks } = editor.extensionManager;\n const marks = storedMarks\n || (selection.$to.parentOffset && selection.$from.marks());\n return chain()\n .insertContent({ type: this.name })\n .command(({ tr, dispatch }) => {\n if (dispatch && marks && keepMarks) {\n const filteredMarks = marks\n .filter(mark => splittableMarks.includes(mark.type.name));\n tr.ensureMarks(filteredMarks);\n }\n return true;\n })\n .run();\n }),\n ]);\n },\n };\n },\n addKeyboardShortcuts() {\n return {\n 'Mod-Enter': () => this.editor.commands.setHardBreak(),\n 'Shift-Enter': () => this.editor.commands.setHardBreak(),\n };\n },\n});\n\nexport { HardBreak, HardBreak as default };\n//# sourceMappingURL=index.js.map\n","import { Node, mergeAttributes, textblockTypeInputRule } from '@tiptap/core';\n\n/**\n * This extension allows you to create headings.\n * @see https://www.tiptap.dev/api/nodes/heading\n */\nconst Heading = Node.create({\n name: 'heading',\n addOptions() {\n return {\n levels: [1, 2, 3, 4, 5, 6],\n HTMLAttributes: {},\n };\n },\n content: 'inline*',\n group: 'block',\n defining: true,\n addAttributes() {\n return {\n level: {\n default: 1,\n rendered: false,\n },\n };\n },\n parseHTML() {\n return this.options.levels\n .map((level) => ({\n tag: `h${level}`,\n attrs: { level },\n }));\n },\n renderHTML({ node, HTMLAttributes }) {\n const hasLevel = this.options.levels.includes(node.attrs.level);\n const level = hasLevel\n ? node.attrs.level\n : this.options.levels[0];\n return [`h${level}`, mergeAttributes(this.options.HTMLAttributes, HTMLAttributes), 0];\n },\n addCommands() {\n return {\n setHeading: attributes => ({ commands }) => {\n if (!this.options.levels.includes(attributes.level)) {\n return false;\n }\n return commands.setNode(this.name, attributes);\n },\n toggleHeading: attributes => ({ commands }) => {\n if (!this.options.levels.includes(attributes.level)) {\n return false;\n }\n return commands.toggleNode(this.name, 'paragraph', attributes);\n },\n };\n },\n addKeyboardShortcuts() {\n return this.options.levels.reduce((items, level) => ({\n ...items,\n ...{\n [`Mod-Alt-${level}`]: () => this.editor.commands.toggleHeading({ level }),\n },\n }), {});\n },\n addInputRules() {\n return this.options.levels.map(level => {\n return textblockTypeInputRule({\n find: new RegExp(`^(#{1,${level}})\\\\s$`),\n type: this.type,\n getAttributes: {\n level,\n },\n });\n });\n },\n});\n\nexport { Heading, Heading as default };\n//# sourceMappingURL=index.js.map\n","var GOOD_LEAF_SIZE = 200;\n\n// :: class A rope sequence is a persistent sequence data structure\n// that supports appending, prepending, and slicing without doing a\n// full copy. It is represented as a mostly-balanced tree.\nvar RopeSequence = function RopeSequence () {};\n\nRopeSequence.prototype.append = function append (other) {\n if (!other.length) { return this }\n other = RopeSequence.from(other);\n\n return (!this.length && other) ||\n (other.length < GOOD_LEAF_SIZE && this.leafAppend(other)) ||\n (this.length < GOOD_LEAF_SIZE && other.leafPrepend(this)) ||\n this.appendInner(other)\n};\n\n// :: (union<[T], RopeSequence>) → RopeSequence\n// Prepend an array or other rope to this one, returning a new rope.\nRopeSequence.prototype.prepend = function prepend (other) {\n if (!other.length) { return this }\n return RopeSequence.from(other).append(this)\n};\n\nRopeSequence.prototype.appendInner = function appendInner (other) {\n return new Append(this, other)\n};\n\n// :: (?number, ?number) → RopeSequence\n// Create a rope repesenting a sub-sequence of this rope.\nRopeSequence.prototype.slice = function slice (from, to) {\n if ( from === void 0 ) from = 0;\n if ( to === void 0 ) to = this.length;\n\n if (from >= to) { return RopeSequence.empty }\n return this.sliceInner(Math.max(0, from), Math.min(this.length, to))\n};\n\n// :: (number) → T\n// Retrieve the element at the given position from this rope.\nRopeSequence.prototype.get = function get (i) {\n if (i < 0 || i >= this.length) { return undefined }\n return this.getInner(i)\n};\n\n// :: ((element: T, index: number) → ?bool, ?number, ?number)\n// Call the given function for each element between the given\n// indices. This tends to be more efficient than looping over the\n// indices and calling `get`, because it doesn't have to descend the\n// tree for every element.\nRopeSequence.prototype.forEach = function forEach (f, from, to) {\n if ( from === void 0 ) from = 0;\n if ( to === void 0 ) to = this.length;\n\n if (from <= to)\n { this.forEachInner(f, from, to, 0); }\n else\n { this.forEachInvertedInner(f, from, to, 0); }\n};\n\n// :: ((element: T, index: number) → U, ?number, ?number) → [U]\n// Map the given functions over the elements of the rope, producing\n// a flat array.\nRopeSequence.prototype.map = function map (f, from, to) {\n if ( from === void 0 ) from = 0;\n if ( to === void 0 ) to = this.length;\n\n var result = [];\n this.forEach(function (elt, i) { return result.push(f(elt, i)); }, from, to);\n return result\n};\n\n// :: (?union<[T], RopeSequence>) → RopeSequence\n// Create a rope representing the given array, or return the rope\n// itself if a rope was given.\nRopeSequence.from = function from (values) {\n if (values instanceof RopeSequence) { return values }\n return values && values.length ? new Leaf(values) : RopeSequence.empty\n};\n\nvar Leaf = /*@__PURE__*/(function (RopeSequence) {\n function Leaf(values) {\n RopeSequence.call(this);\n this.values = values;\n }\n\n if ( RopeSequence ) Leaf.__proto__ = RopeSequence;\n Leaf.prototype = Object.create( RopeSequence && RopeSequence.prototype );\n Leaf.prototype.constructor = Leaf;\n\n var prototypeAccessors = { length: { configurable: true },depth: { configurable: true } };\n\n Leaf.prototype.flatten = function flatten () {\n return this.values\n };\n\n Leaf.prototype.sliceInner = function sliceInner (from, to) {\n if (from == 0 && to == this.length) { return this }\n return new Leaf(this.values.slice(from, to))\n };\n\n Leaf.prototype.getInner = function getInner (i) {\n return this.values[i]\n };\n\n Leaf.prototype.forEachInner = function forEachInner (f, from, to, start) {\n for (var i = from; i < to; i++)\n { if (f(this.values[i], start + i) === false) { return false } }\n };\n\n Leaf.prototype.forEachInvertedInner = function forEachInvertedInner (f, from, to, start) {\n for (var i = from - 1; i >= to; i--)\n { if (f(this.values[i], start + i) === false) { return false } }\n };\n\n Leaf.prototype.leafAppend = function leafAppend (other) {\n if (this.length + other.length <= GOOD_LEAF_SIZE)\n { return new Leaf(this.values.concat(other.flatten())) }\n };\n\n Leaf.prototype.leafPrepend = function leafPrepend (other) {\n if (this.length + other.length <= GOOD_LEAF_SIZE)\n { return new Leaf(other.flatten().concat(this.values)) }\n };\n\n prototypeAccessors.length.get = function () { return this.values.length };\n\n prototypeAccessors.depth.get = function () { return 0 };\n\n Object.defineProperties( Leaf.prototype, prototypeAccessors );\n\n return Leaf;\n}(RopeSequence));\n\n// :: RopeSequence\n// The empty rope sequence.\nRopeSequence.empty = new Leaf([]);\n\nvar Append = /*@__PURE__*/(function (RopeSequence) {\n function Append(left, right) {\n RopeSequence.call(this);\n this.left = left;\n this.right = right;\n this.length = left.length + right.length;\n this.depth = Math.max(left.depth, right.depth) + 1;\n }\n\n if ( RopeSequence ) Append.__proto__ = RopeSequence;\n Append.prototype = Object.create( RopeSequence && RopeSequence.prototype );\n Append.prototype.constructor = Append;\n\n Append.prototype.flatten = function flatten () {\n return this.left.flatten().concat(this.right.flatten())\n };\n\n Append.prototype.getInner = function getInner (i) {\n return i < this.left.length ? this.left.get(i) : this.right.get(i - this.left.length)\n };\n\n Append.prototype.forEachInner = function forEachInner (f, from, to, start) {\n var leftLen = this.left.length;\n if (from < leftLen &&\n this.left.forEachInner(f, from, Math.min(to, leftLen), start) === false)\n { return false }\n if (to > leftLen &&\n this.right.forEachInner(f, Math.max(from - leftLen, 0), Math.min(this.length, to) - leftLen, start + leftLen) === false)\n { return false }\n };\n\n Append.prototype.forEachInvertedInner = function forEachInvertedInner (f, from, to, start) {\n var leftLen = this.left.length;\n if (from > leftLen &&\n this.right.forEachInvertedInner(f, from - leftLen, Math.max(to, leftLen) - leftLen, start + leftLen) === false)\n { return false }\n if (to < leftLen &&\n this.left.forEachInvertedInner(f, Math.min(from, leftLen), to, start) === false)\n { return false }\n };\n\n Append.prototype.sliceInner = function sliceInner (from, to) {\n if (from == 0 && to == this.length) { return this }\n var leftLen = this.left.length;\n if (to <= leftLen) { return this.left.slice(from, to) }\n if (from >= leftLen) { return this.right.slice(from - leftLen, to - leftLen) }\n return this.left.slice(from, leftLen).append(this.right.slice(0, to - leftLen))\n };\n\n Append.prototype.leafAppend = function leafAppend (other) {\n var inner = this.right.leafAppend(other);\n if (inner) { return new Append(this.left, inner) }\n };\n\n Append.prototype.leafPrepend = function leafPrepend (other) {\n var inner = this.left.leafPrepend(other);\n if (inner) { return new Append(inner, this.right) }\n };\n\n Append.prototype.appendInner = function appendInner (other) {\n if (this.left.depth >= Math.max(this.right.depth, other.depth) + 1)\n { return new Append(this.left, new Append(this.right, other)) }\n return new Append(this, other)\n };\n\n return Append;\n}(RopeSequence));\n\nexport default RopeSequence;\n","import RopeSequence from 'rope-sequence';\nimport { Mapping } from 'prosemirror-transform';\nimport { PluginKey, Plugin } from 'prosemirror-state';\n\n// ProseMirror's history isn't simply a way to roll back to a previous\n// state, because ProseMirror supports applying changes without adding\n// them to the history (for example during collaboration).\n//\n// To this end, each 'Branch' (one for the undo history and one for\n// the redo history) keeps an array of 'Items', which can optionally\n// hold a step (an actual undoable change), and always hold a position\n// map (which is needed to move changes below them to apply to the\n// current document).\n//\n// An item that has both a step and a selection bookmark is the start\n// of an 'event' — a group of changes that will be undone or redone at\n// once. (It stores only the bookmark, since that way we don't have to\n// provide a document until the selection is actually applied, which\n// is useful when compressing.)\n// Used to schedule history compression\nconst max_empty_items = 500;\nclass Branch {\n constructor(items, eventCount) {\n this.items = items;\n this.eventCount = eventCount;\n }\n // Pop the latest event off the branch's history and apply it\n // to a document transform.\n popEvent(state, preserveItems) {\n if (this.eventCount == 0)\n return null;\n let end = this.items.length;\n for (;; end--) {\n let next = this.items.get(end - 1);\n if (next.selection) {\n --end;\n break;\n }\n }\n let remap, mapFrom;\n if (preserveItems) {\n remap = this.remapping(end, this.items.length);\n mapFrom = remap.maps.length;\n }\n let transform = state.tr;\n let selection, remaining;\n let addAfter = [], addBefore = [];\n this.items.forEach((item, i) => {\n if (!item.step) {\n if (!remap) {\n remap = this.remapping(end, i + 1);\n mapFrom = remap.maps.length;\n }\n mapFrom--;\n addBefore.push(item);\n return;\n }\n if (remap) {\n addBefore.push(new Item(item.map));\n let step = item.step.map(remap.slice(mapFrom)), map;\n if (step && transform.maybeStep(step).doc) {\n map = transform.mapping.maps[transform.mapping.maps.length - 1];\n addAfter.push(new Item(map, undefined, undefined, addAfter.length + addBefore.length));\n }\n mapFrom--;\n if (map)\n remap.appendMap(map, mapFrom);\n }\n else {\n transform.maybeStep(item.step);\n }\n if (item.selection) {\n selection = remap ? item.selection.map(remap.slice(mapFrom)) : item.selection;\n remaining = new Branch(this.items.slice(0, end).append(addBefore.reverse().concat(addAfter)), this.eventCount - 1);\n return false;\n }\n }, this.items.length, 0);\n return { remaining: remaining, transform, selection: selection };\n }\n // Create a new branch with the given transform added.\n addTransform(transform, selection, histOptions, preserveItems) {\n let newItems = [], eventCount = this.eventCount;\n let oldItems = this.items, lastItem = !preserveItems && oldItems.length ? oldItems.get(oldItems.length - 1) : null;\n for (let i = 0; i < transform.steps.length; i++) {\n let step = transform.steps[i].invert(transform.docs[i]);\n let item = new Item(transform.mapping.maps[i], step, selection), merged;\n if (merged = lastItem && lastItem.merge(item)) {\n item = merged;\n if (i)\n newItems.pop();\n else\n oldItems = oldItems.slice(0, oldItems.length - 1);\n }\n newItems.push(item);\n if (selection) {\n eventCount++;\n selection = undefined;\n }\n if (!preserveItems)\n lastItem = item;\n }\n let overflow = eventCount - histOptions.depth;\n if (overflow > DEPTH_OVERFLOW) {\n oldItems = cutOffEvents(oldItems, overflow);\n eventCount -= overflow;\n }\n return new Branch(oldItems.append(newItems), eventCount);\n }\n remapping(from, to) {\n let maps = new Mapping;\n this.items.forEach((item, i) => {\n let mirrorPos = item.mirrorOffset != null && i - item.mirrorOffset >= from\n ? maps.maps.length - item.mirrorOffset : undefined;\n maps.appendMap(item.map, mirrorPos);\n }, from, to);\n return maps;\n }\n addMaps(array) {\n if (this.eventCount == 0)\n return this;\n return new Branch(this.items.append(array.map(map => new Item(map))), this.eventCount);\n }\n // When the collab module receives remote changes, the history has\n // to know about those, so that it can adjust the steps that were\n // rebased on top of the remote changes, and include the position\n // maps for the remote changes in its array of items.\n rebased(rebasedTransform, rebasedCount) {\n if (!this.eventCount)\n return this;\n let rebasedItems = [], start = Math.max(0, this.items.length - rebasedCount);\n let mapping = rebasedTransform.mapping;\n let newUntil = rebasedTransform.steps.length;\n let eventCount = this.eventCount;\n this.items.forEach(item => { if (item.selection)\n eventCount--; }, start);\n let iRebased = rebasedCount;\n this.items.forEach(item => {\n let pos = mapping.getMirror(--iRebased);\n if (pos == null)\n return;\n newUntil = Math.min(newUntil, pos);\n let map = mapping.maps[pos];\n if (item.step) {\n let step = rebasedTransform.steps[pos].invert(rebasedTransform.docs[pos]);\n let selection = item.selection && item.selection.map(mapping.slice(iRebased + 1, pos));\n if (selection)\n eventCount++;\n rebasedItems.push(new Item(map, step, selection));\n }\n else {\n rebasedItems.push(new Item(map));\n }\n }, start);\n let newMaps = [];\n for (let i = rebasedCount; i < newUntil; i++)\n newMaps.push(new Item(mapping.maps[i]));\n let items = this.items.slice(0, start).append(newMaps).append(rebasedItems);\n let branch = new Branch(items, eventCount);\n if (branch.emptyItemCount() > max_empty_items)\n branch = branch.compress(this.items.length - rebasedItems.length);\n return branch;\n }\n emptyItemCount() {\n let count = 0;\n this.items.forEach(item => { if (!item.step)\n count++; });\n return count;\n }\n // Compressing a branch means rewriting it to push the air (map-only\n // items) out. During collaboration, these naturally accumulate\n // because each remote change adds one. The `upto` argument is used\n // to ensure that only the items below a given level are compressed,\n // because `rebased` relies on a clean, untouched set of items in\n // order to associate old items with rebased steps.\n compress(upto = this.items.length) {\n let remap = this.remapping(0, upto), mapFrom = remap.maps.length;\n let items = [], events = 0;\n this.items.forEach((item, i) => {\n if (i >= upto) {\n items.push(item);\n if (item.selection)\n events++;\n }\n else if (item.step) {\n let step = item.step.map(remap.slice(mapFrom)), map = step && step.getMap();\n mapFrom--;\n if (map)\n remap.appendMap(map, mapFrom);\n if (step) {\n let selection = item.selection && item.selection.map(remap.slice(mapFrom));\n if (selection)\n events++;\n let newItem = new Item(map.invert(), step, selection), merged, last = items.length - 1;\n if (merged = items.length && items[last].merge(newItem))\n items[last] = merged;\n else\n items.push(newItem);\n }\n }\n else if (item.map) {\n mapFrom--;\n }\n }, this.items.length, 0);\n return new Branch(RopeSequence.from(items.reverse()), events);\n }\n}\nBranch.empty = new Branch(RopeSequence.empty, 0);\nfunction cutOffEvents(items, n) {\n let cutPoint;\n items.forEach((item, i) => {\n if (item.selection && (n-- == 0)) {\n cutPoint = i;\n return false;\n }\n });\n return items.slice(cutPoint);\n}\nclass Item {\n constructor(\n // The (forward) step map for this item.\n map, \n // The inverted step\n step, \n // If this is non-null, this item is the start of a group, and\n // this selection is the starting selection for the group (the one\n // that was active before the first step was applied)\n selection, \n // If this item is the inverse of a previous mapping on the stack,\n // this points at the inverse's offset\n mirrorOffset) {\n this.map = map;\n this.step = step;\n this.selection = selection;\n this.mirrorOffset = mirrorOffset;\n }\n merge(other) {\n if (this.step && other.step && !other.selection) {\n let step = other.step.merge(this.step);\n if (step)\n return new Item(step.getMap().invert(), step, this.selection);\n }\n }\n}\n// The value of the state field that tracks undo/redo history for that\n// state. Will be stored in the plugin state when the history plugin\n// is active.\nclass HistoryState {\n constructor(done, undone, prevRanges, prevTime, prevComposition) {\n this.done = done;\n this.undone = undone;\n this.prevRanges = prevRanges;\n this.prevTime = prevTime;\n this.prevComposition = prevComposition;\n }\n}\nconst DEPTH_OVERFLOW = 20;\n// Record a transformation in undo history.\nfunction applyTransaction(history, state, tr, options) {\n let historyTr = tr.getMeta(historyKey), rebased;\n if (historyTr)\n return historyTr.historyState;\n if (tr.getMeta(closeHistoryKey))\n history = new HistoryState(history.done, history.undone, null, 0, -1);\n let appended = tr.getMeta(\"appendedTransaction\");\n if (tr.steps.length == 0) {\n return history;\n }\n else if (appended && appended.getMeta(historyKey)) {\n if (appended.getMeta(historyKey).redo)\n return new HistoryState(history.done.addTransform(tr, undefined, options, mustPreserveItems(state)), history.undone, rangesFor(tr.mapping.maps), history.prevTime, history.prevComposition);\n else\n return new HistoryState(history.done, history.undone.addTransform(tr, undefined, options, mustPreserveItems(state)), null, history.prevTime, history.prevComposition);\n }\n else if (tr.getMeta(\"addToHistory\") !== false && !(appended && appended.getMeta(\"addToHistory\") === false)) {\n // Group transforms that occur in quick succession into one event.\n let composition = tr.getMeta(\"composition\");\n let newGroup = history.prevTime == 0 ||\n (!appended && history.prevComposition != composition &&\n (history.prevTime < (tr.time || 0) - options.newGroupDelay || !isAdjacentTo(tr, history.prevRanges)));\n let prevRanges = appended ? mapRanges(history.prevRanges, tr.mapping) : rangesFor(tr.mapping.maps);\n return new HistoryState(history.done.addTransform(tr, newGroup ? state.selection.getBookmark() : undefined, options, mustPreserveItems(state)), Branch.empty, prevRanges, tr.time, composition == null ? history.prevComposition : composition);\n }\n else if (rebased = tr.getMeta(\"rebased\")) {\n // Used by the collab module to tell the history that some of its\n // content has been rebased.\n return new HistoryState(history.done.rebased(tr, rebased), history.undone.rebased(tr, rebased), mapRanges(history.prevRanges, tr.mapping), history.prevTime, history.prevComposition);\n }\n else {\n return new HistoryState(history.done.addMaps(tr.mapping.maps), history.undone.addMaps(tr.mapping.maps), mapRanges(history.prevRanges, tr.mapping), history.prevTime, history.prevComposition);\n }\n}\nfunction isAdjacentTo(transform, prevRanges) {\n if (!prevRanges)\n return false;\n if (!transform.docChanged)\n return true;\n let adjacent = false;\n transform.mapping.maps[0].forEach((start, end) => {\n for (let i = 0; i < prevRanges.length; i += 2)\n if (start <= prevRanges[i + 1] && end >= prevRanges[i])\n adjacent = true;\n });\n return adjacent;\n}\nfunction rangesFor(maps) {\n let result = [];\n for (let i = maps.length - 1; i >= 0 && result.length == 0; i--)\n maps[i].forEach((_from, _to, from, to) => result.push(from, to));\n return result;\n}\nfunction mapRanges(ranges, mapping) {\n if (!ranges)\n return null;\n let result = [];\n for (let i = 0; i < ranges.length; i += 2) {\n let from = mapping.map(ranges[i], 1), to = mapping.map(ranges[i + 1], -1);\n if (from <= to)\n result.push(from, to);\n }\n return result;\n}\n// Apply the latest event from one branch to the document and shift the event\n// onto the other branch.\nfunction histTransaction(history, state, redo) {\n let preserveItems = mustPreserveItems(state);\n let histOptions = historyKey.get(state).spec.config;\n let pop = (redo ? history.undone : history.done).popEvent(state, preserveItems);\n if (!pop)\n return null;\n let selection = pop.selection.resolve(pop.transform.doc);\n let added = (redo ? history.done : history.undone).addTransform(pop.transform, state.selection.getBookmark(), histOptions, preserveItems);\n let newHist = new HistoryState(redo ? added : pop.remaining, redo ? pop.remaining : added, null, 0, -1);\n return pop.transform.setSelection(selection).setMeta(historyKey, { redo, historyState: newHist });\n}\nlet cachedPreserveItems = false, cachedPreserveItemsPlugins = null;\n// Check whether any plugin in the given state has a\n// `historyPreserveItems` property in its spec, in which case we must\n// preserve steps exactly as they came in, so that they can be\n// rebased.\nfunction mustPreserveItems(state) {\n let plugins = state.plugins;\n if (cachedPreserveItemsPlugins != plugins) {\n cachedPreserveItems = false;\n cachedPreserveItemsPlugins = plugins;\n for (let i = 0; i < plugins.length; i++)\n if (plugins[i].spec.historyPreserveItems) {\n cachedPreserveItems = true;\n break;\n }\n }\n return cachedPreserveItems;\n}\n/**\nSet a flag on the given transaction that will prevent further steps\nfrom being appended to an existing history event (so that they\nrequire a separate undo command to undo).\n*/\nfunction closeHistory(tr) {\n return tr.setMeta(closeHistoryKey, true);\n}\nconst historyKey = new PluginKey(\"history\");\nconst closeHistoryKey = new PluginKey(\"closeHistory\");\n/**\nReturns a plugin that enables the undo history for an editor. The\nplugin will track undo and redo stacks, which can be used with the\n[`undo`](https://prosemirror.net/docs/ref/#history.undo) and [`redo`](https://prosemirror.net/docs/ref/#history.redo) commands.\n\nYou can set an `\"addToHistory\"` [metadata\nproperty](https://prosemirror.net/docs/ref/#state.Transaction.setMeta) of `false` on a transaction\nto prevent it from being rolled back by undo.\n*/\nfunction history(config = {}) {\n config = { depth: config.depth || 100,\n newGroupDelay: config.newGroupDelay || 500 };\n return new Plugin({\n key: historyKey,\n state: {\n init() {\n return new HistoryState(Branch.empty, Branch.empty, null, 0, -1);\n },\n apply(tr, hist, state) {\n return applyTransaction(hist, state, tr, config);\n }\n },\n config,\n props: {\n handleDOMEvents: {\n beforeinput(view, e) {\n let inputType = e.inputType;\n let command = inputType == \"historyUndo\" ? undo : inputType == \"historyRedo\" ? redo : null;\n if (!command)\n return false;\n e.preventDefault();\n return command(view.state, view.dispatch);\n }\n }\n }\n });\n}\nfunction buildCommand(redo, scroll) {\n return (state, dispatch) => {\n let hist = historyKey.getState(state);\n if (!hist || (redo ? hist.undone : hist.done).eventCount == 0)\n return false;\n if (dispatch) {\n let tr = histTransaction(hist, state, redo);\n if (tr)\n dispatch(scroll ? tr.scrollIntoView() : tr);\n }\n return true;\n };\n}\n/**\nA command function that undoes the last change, if any.\n*/\nconst undo = buildCommand(false, true);\n/**\nA command function that redoes the last undone change, if any.\n*/\nconst redo = buildCommand(true, true);\n/**\nA command function that undoes the last change. Don't scroll the\nselection into view.\n*/\nconst undoNoScroll = buildCommand(false, false);\n/**\nA command function that redoes the last undone change. Don't\nscroll the selection into view.\n*/\nconst redoNoScroll = buildCommand(true, false);\n/**\nThe amount of undoable events available in a given state.\n*/\nfunction undoDepth(state) {\n let hist = historyKey.getState(state);\n return hist ? hist.done.eventCount : 0;\n}\n/**\nThe amount of redoable events available in a given editor state.\n*/\nfunction redoDepth(state) {\n let hist = historyKey.getState(state);\n return hist ? hist.undone.eventCount : 0;\n}\n\nexport { closeHistory, history, redo, redoDepth, redoNoScroll, undo, undoDepth, undoNoScroll };\n","import { Extension } from '@tiptap/core';\nimport { undo, redo, history } from '@tiptap/pm/history';\n\n/**\n * This extension allows you to undo and redo recent changes.\n * @see https://www.tiptap.dev/api/extensions/history\n *\n * **Important**: If the `@tiptap/extension-collaboration` package is used, make sure to remove\n * the `history` extension, as it is not compatible with the `collaboration` extension.\n *\n * `@tiptap/extension-collaboration` uses its own history implementation.\n */\nconst History = Extension.create({\n name: 'history',\n addOptions() {\n return {\n depth: 100,\n newGroupDelay: 500,\n };\n },\n addCommands() {\n return {\n undo: () => ({ state, dispatch }) => {\n return undo(state, dispatch);\n },\n redo: () => ({ state, dispatch }) => {\n return redo(state, dispatch);\n },\n };\n },\n addProseMirrorPlugins() {\n return [\n history(this.options),\n ];\n },\n addKeyboardShortcuts() {\n return {\n 'Mod-z': () => this.editor.commands.undo(),\n 'Shift-Mod-z': () => this.editor.commands.redo(),\n 'Mod-y': () => this.editor.commands.redo(),\n // Russian keyboard layouts\n 'Mod-я': () => this.editor.commands.undo(),\n 'Shift-Mod-я': () => this.editor.commands.redo(),\n };\n },\n});\n\nexport { History, History as default };\n//# sourceMappingURL=index.js.map\n","import { Node, mergeAttributes, isNodeSelection, nodeInputRule } from '@tiptap/core';\nimport { TextSelection, NodeSelection } from '@tiptap/pm/state';\n\n/**\n * This extension allows you to insert horizontal rules.\n * @see https://www.tiptap.dev/api/nodes/horizontal-rule\n */\nconst HorizontalRule = Node.create({\n name: 'horizontalRule',\n addOptions() {\n return {\n HTMLAttributes: {},\n };\n },\n group: 'block',\n parseHTML() {\n return [{ tag: 'hr' }];\n },\n renderHTML({ HTMLAttributes }) {\n return ['hr', mergeAttributes(this.options.HTMLAttributes, HTMLAttributes)];\n },\n addCommands() {\n return {\n setHorizontalRule: () => ({ chain, state }) => {\n const { selection } = state;\n const { $from: $originFrom, $to: $originTo } = selection;\n const currentChain = chain();\n if ($originFrom.parentOffset === 0) {\n currentChain.insertContentAt({\n from: Math.max($originFrom.pos - 1, 0),\n to: $originTo.pos,\n }, {\n type: this.name,\n });\n }\n else if (isNodeSelection(selection)) {\n currentChain.insertContentAt($originTo.pos, {\n type: this.name,\n });\n }\n else {\n currentChain.insertContent({ type: this.name });\n }\n return (currentChain\n // set cursor after horizontal rule\n .command(({ tr, dispatch }) => {\n var _a;\n if (dispatch) {\n const { $to } = tr.selection;\n const posAfter = $to.end();\n if ($to.nodeAfter) {\n if ($to.nodeAfter.isTextblock) {\n tr.setSelection(TextSelection.create(tr.doc, $to.pos + 1));\n }\n else if ($to.nodeAfter.isBlock) {\n tr.setSelection(NodeSelection.create(tr.doc, $to.pos));\n }\n else {\n tr.setSelection(TextSelection.create(tr.doc, $to.pos));\n }\n }\n else {\n // add node after horizontal rule if it’s the end of the document\n const node = (_a = $to.parent.type.contentMatch.defaultType) === null || _a === void 0 ? void 0 : _a.create();\n if (node) {\n tr.insert(posAfter, node);\n tr.setSelection(TextSelection.create(tr.doc, posAfter + 1));\n }\n }\n tr.scrollIntoView();\n }\n return true;\n })\n .run());\n },\n };\n },\n addInputRules() {\n return [\n nodeInputRule({\n find: /^(?:---|—-|___\\s|\\*\\*\\*\\s)$/,\n type: this.type,\n }),\n ];\n },\n});\n\nexport { HorizontalRule, HorizontalRule as default };\n//# sourceMappingURL=index.js.map\n","import { Mark, mergeAttributes, markInputRule, markPasteRule } from '@tiptap/core';\n\n/**\n * Matches an italic to a *italic* on input.\n */\nconst starInputRegex = /(?:^|\\s)(\\*(?!\\s+\\*)((?:[^*]+))\\*(?!\\s+\\*))$/;\n/**\n * Matches an italic to a *italic* on paste.\n */\nconst starPasteRegex = /(?:^|\\s)(\\*(?!\\s+\\*)((?:[^*]+))\\*(?!\\s+\\*))/g;\n/**\n * Matches an italic to a _italic_ on input.\n */\nconst underscoreInputRegex = /(?:^|\\s)(_(?!\\s+_)((?:[^_]+))_(?!\\s+_))$/;\n/**\n * Matches an italic to a _italic_ on paste.\n */\nconst underscorePasteRegex = /(?:^|\\s)(_(?!\\s+_)((?:[^_]+))_(?!\\s+_))/g;\n/**\n * This extension allows you to create italic text.\n * @see https://www.tiptap.dev/api/marks/italic\n */\nconst Italic = Mark.create({\n name: 'italic',\n addOptions() {\n return {\n HTMLAttributes: {},\n };\n },\n parseHTML() {\n return [\n {\n tag: 'em',\n },\n {\n tag: 'i',\n getAttrs: node => node.style.fontStyle !== 'normal' && null,\n },\n {\n style: 'font-style=italic',\n },\n ];\n },\n renderHTML({ HTMLAttributes }) {\n return ['em', mergeAttributes(this.options.HTMLAttributes, HTMLAttributes), 0];\n },\n addCommands() {\n return {\n setItalic: () => ({ commands }) => {\n return commands.setMark(this.name);\n },\n toggleItalic: () => ({ commands }) => {\n return commands.toggleMark(this.name);\n },\n unsetItalic: () => ({ commands }) => {\n return commands.unsetMark(this.name);\n },\n };\n },\n addKeyboardShortcuts() {\n return {\n 'Mod-i': () => this.editor.commands.toggleItalic(),\n 'Mod-I': () => this.editor.commands.toggleItalic(),\n };\n },\n addInputRules() {\n return [\n markInputRule({\n find: starInputRegex,\n type: this.type,\n }),\n markInputRule({\n find: underscoreInputRegex,\n type: this.type,\n }),\n ];\n },\n addPasteRules() {\n return [\n markPasteRule({\n find: starPasteRegex,\n type: this.type,\n }),\n markPasteRule({\n find: underscorePasteRegex,\n type: this.type,\n }),\n ];\n },\n});\n\nexport { Italic, Italic as default, starInputRegex, starPasteRegex, underscoreInputRegex, underscorePasteRegex };\n//# sourceMappingURL=index.js.map\n","import { Node, mergeAttributes } from '@tiptap/core';\n\n/**\n * This extension allows you to create list items.\n * @see https://www.tiptap.dev/api/nodes/list-item\n */\nconst ListItem = Node.create({\n name: 'listItem',\n addOptions() {\n return {\n HTMLAttributes: {},\n bulletListTypeName: 'bulletList',\n orderedListTypeName: 'orderedList',\n };\n },\n content: 'paragraph block*',\n defining: true,\n parseHTML() {\n return [\n {\n tag: 'li',\n },\n ];\n },\n renderHTML({ HTMLAttributes }) {\n return ['li', mergeAttributes(this.options.HTMLAttributes, HTMLAttributes), 0];\n },\n addKeyboardShortcuts() {\n return {\n Enter: () => this.editor.commands.splitListItem(this.name),\n Tab: () => this.editor.commands.sinkListItem(this.name),\n 'Shift-Tab': () => this.editor.commands.liftListItem(this.name),\n };\n },\n});\n\nexport { ListItem, ListItem as default };\n//# sourceMappingURL=index.js.map\n","import { Node, mergeAttributes, Mark, getMarkAttributes, wrappingInputRule } from '@tiptap/core';\n\n/**\n * This extension allows you to create list items.\n * @see https://www.tiptap.dev/api/nodes/list-item\n */\nconst ListItem = Node.create({\n name: 'listItem',\n addOptions() {\n return {\n HTMLAttributes: {},\n bulletListTypeName: 'bulletList',\n orderedListTypeName: 'orderedList',\n };\n },\n content: 'paragraph block*',\n defining: true,\n parseHTML() {\n return [\n {\n tag: 'li',\n },\n ];\n },\n renderHTML({ HTMLAttributes }) {\n return ['li', mergeAttributes(this.options.HTMLAttributes, HTMLAttributes), 0];\n },\n addKeyboardShortcuts() {\n return {\n Enter: () => this.editor.commands.splitListItem(this.name),\n Tab: () => this.editor.commands.sinkListItem(this.name),\n 'Shift-Tab': () => this.editor.commands.liftListItem(this.name),\n };\n },\n});\n\n/**\n * This extension allows you to create text styles. It is required by default\n * for the `textColor` and `backgroundColor` extensions.\n * @see https://www.tiptap.dev/api/marks/text-style\n */\nconst TextStyle = Mark.create({\n name: 'textStyle',\n addOptions() {\n return {\n HTMLAttributes: {},\n };\n },\n parseHTML() {\n return [\n {\n tag: 'span',\n getAttrs: element => {\n const hasStyles = element.hasAttribute('style');\n if (!hasStyles) {\n return false;\n }\n return {};\n },\n },\n ];\n },\n renderHTML({ HTMLAttributes }) {\n return ['span', mergeAttributes(this.options.HTMLAttributes, HTMLAttributes), 0];\n },\n addCommands() {\n return {\n removeEmptyTextStyle: () => ({ state, commands }) => {\n const attributes = getMarkAttributes(state, this.type);\n const hasStyles = Object.entries(attributes).some(([, value]) => !!value);\n if (hasStyles) {\n return true;\n }\n return commands.unsetMark(this.name);\n },\n };\n },\n});\n\n/**\n * Matches an ordered list to a 1. on input (or any number followed by a dot).\n */\nconst inputRegex = /^(\\d+)\\.\\s$/;\n/**\n * This extension allows you to create ordered lists.\n * This requires the ListItem extension\n * @see https://www.tiptap.dev/api/nodes/ordered-list\n * @see https://www.tiptap.dev/api/nodes/list-item\n */\nconst OrderedList = Node.create({\n name: 'orderedList',\n addOptions() {\n return {\n itemTypeName: 'listItem',\n HTMLAttributes: {},\n keepMarks: false,\n keepAttributes: false,\n };\n },\n group: 'block list',\n content() {\n return `${this.options.itemTypeName}+`;\n },\n addAttributes() {\n return {\n start: {\n default: 1,\n parseHTML: element => {\n return element.hasAttribute('start')\n ? parseInt(element.getAttribute('start') || '', 10)\n : 1;\n },\n },\n };\n },\n parseHTML() {\n return [\n {\n tag: 'ol',\n },\n ];\n },\n renderHTML({ HTMLAttributes }) {\n const { start, ...attributesWithoutStart } = HTMLAttributes;\n return start === 1\n ? ['ol', mergeAttributes(this.options.HTMLAttributes, attributesWithoutStart), 0]\n : ['ol', mergeAttributes(this.options.HTMLAttributes, HTMLAttributes), 0];\n },\n addCommands() {\n return {\n toggleOrderedList: () => ({ commands, chain }) => {\n if (this.options.keepAttributes) {\n return chain().toggleList(this.name, this.options.itemTypeName, this.options.keepMarks).updateAttributes(ListItem.name, this.editor.getAttributes(TextStyle.name)).run();\n }\n return commands.toggleList(this.name, this.options.itemTypeName, this.options.keepMarks);\n },\n };\n },\n addKeyboardShortcuts() {\n return {\n 'Mod-Shift-7': () => this.editor.commands.toggleOrderedList(),\n };\n },\n addInputRules() {\n let inputRule = wrappingInputRule({\n find: inputRegex,\n type: this.type,\n getAttributes: match => ({ start: +match[1] }),\n joinPredicate: (match, node) => node.childCount + node.attrs.start === +match[1],\n });\n if (this.options.keepMarks || this.options.keepAttributes) {\n inputRule = wrappingInputRule({\n find: inputRegex,\n type: this.type,\n keepMarks: this.options.keepMarks,\n keepAttributes: this.options.keepAttributes,\n getAttributes: match => ({ start: +match[1], ...this.editor.getAttributes(TextStyle.name) }),\n joinPredicate: (match, node) => node.childCount + node.attrs.start === +match[1],\n editor: this.editor,\n });\n }\n return [\n inputRule,\n ];\n },\n});\n\nexport { OrderedList, OrderedList as default, inputRegex };\n//# sourceMappingURL=index.js.map\n","import { Node, mergeAttributes } from '@tiptap/core';\n\n/**\n * This extension allows you to create paragraphs.\n * @see https://www.tiptap.dev/api/nodes/paragraph\n */\nconst Paragraph = Node.create({\n name: 'paragraph',\n priority: 1000,\n addOptions() {\n return {\n HTMLAttributes: {},\n };\n },\n group: 'block',\n content: 'inline*',\n parseHTML() {\n return [\n { tag: 'p' },\n ];\n },\n renderHTML({ HTMLAttributes }) {\n return ['p', mergeAttributes(this.options.HTMLAttributes, HTMLAttributes), 0];\n },\n addCommands() {\n return {\n setParagraph: () => ({ commands }) => {\n return commands.setNode(this.name);\n },\n };\n },\n addKeyboardShortcuts() {\n return {\n 'Mod-Alt-0': () => this.editor.commands.setParagraph(),\n };\n },\n});\n\nexport { Paragraph, Paragraph as default };\n//# sourceMappingURL=index.js.map\n","import { Mark, mergeAttributes, markInputRule, markPasteRule } from '@tiptap/core';\n\n/**\n * Matches a strike to a ~~strike~~ on input.\n */\nconst inputRegex = /(?:^|\\s)(~~(?!\\s+~~)((?:[^~]+))~~(?!\\s+~~))$/;\n/**\n * Matches a strike to a ~~strike~~ on paste.\n */\nconst pasteRegex = /(?:^|\\s)(~~(?!\\s+~~)((?:[^~]+))~~(?!\\s+~~))/g;\n/**\n * This extension allows you to create strike text.\n * @see https://www.tiptap.dev/api/marks/strike\n */\nconst Strike = Mark.create({\n name: 'strike',\n addOptions() {\n return {\n HTMLAttributes: {},\n };\n },\n parseHTML() {\n return [\n {\n tag: 's',\n },\n {\n tag: 'del',\n },\n {\n tag: 'strike',\n },\n {\n style: 'text-decoration',\n consuming: false,\n getAttrs: style => (style.includes('line-through') ? {} : false),\n },\n ];\n },\n renderHTML({ HTMLAttributes }) {\n return ['s', mergeAttributes(this.options.HTMLAttributes, HTMLAttributes), 0];\n },\n addCommands() {\n return {\n setStrike: () => ({ commands }) => {\n return commands.setMark(this.name);\n },\n toggleStrike: () => ({ commands }) => {\n return commands.toggleMark(this.name);\n },\n unsetStrike: () => ({ commands }) => {\n return commands.unsetMark(this.name);\n },\n };\n },\n addKeyboardShortcuts() {\n return {\n 'Mod-Shift-s': () => this.editor.commands.toggleStrike(),\n };\n },\n addInputRules() {\n return [\n markInputRule({\n find: inputRegex,\n type: this.type,\n }),\n ];\n },\n addPasteRules() {\n return [\n markPasteRule({\n find: pasteRegex,\n type: this.type,\n }),\n ];\n },\n});\n\nexport { Strike, Strike as default, inputRegex, pasteRegex };\n//# sourceMappingURL=index.js.map\n","import { Node } from '@tiptap/core';\n\n/**\n * This extension allows you to create text nodes.\n * @see https://www.tiptap.dev/api/nodes/text\n */\nconst Text = Node.create({\n name: 'text',\n group: 'inline',\n});\n\nexport { Text, Text as default };\n//# sourceMappingURL=index.js.map\n","import { Extension } from '@tiptap/core';\nimport { Blockquote } from '@tiptap/extension-blockquote';\nimport { Bold } from '@tiptap/extension-bold';\nimport { BulletList } from '@tiptap/extension-bullet-list';\nimport { Code } from '@tiptap/extension-code';\nimport { CodeBlock } from '@tiptap/extension-code-block';\nimport { Document } from '@tiptap/extension-document';\nimport { Dropcursor } from '@tiptap/extension-dropcursor';\nimport { Gapcursor } from '@tiptap/extension-gapcursor';\nimport { HardBreak } from '@tiptap/extension-hard-break';\nimport { Heading } from '@tiptap/extension-heading';\nimport { History } from '@tiptap/extension-history';\nimport { HorizontalRule } from '@tiptap/extension-horizontal-rule';\nimport { Italic } from '@tiptap/extension-italic';\nimport { ListItem } from '@tiptap/extension-list-item';\nimport { OrderedList } from '@tiptap/extension-ordered-list';\nimport { Paragraph } from '@tiptap/extension-paragraph';\nimport { Strike } from '@tiptap/extension-strike';\nimport { Text } from '@tiptap/extension-text';\n\n/**\n * The starter kit is a collection of essential editor extensions.\n *\n * It’s a good starting point for building your own editor.\n */\nconst StarterKit = Extension.create({\n name: 'starterKit',\n addExtensions() {\n var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t;\n const extensions = [];\n if (this.options.bold !== false) {\n extensions.push(Bold.configure((_a = this.options) === null || _a === void 0 ? void 0 : _a.bold));\n }\n if (this.options.blockquote !== false) {\n extensions.push(Blockquote.configure((_b = this.options) === null || _b === void 0 ? void 0 : _b.blockquote));\n }\n if (this.options.bulletList !== false) {\n extensions.push(BulletList.configure((_c = this.options) === null || _c === void 0 ? void 0 : _c.bulletList));\n }\n if (this.options.code !== false) {\n extensions.push(Code.configure((_d = this.options) === null || _d === void 0 ? void 0 : _d.code));\n }\n if (this.options.codeBlock !== false) {\n extensions.push(CodeBlock.configure((_e = this.options) === null || _e === void 0 ? void 0 : _e.codeBlock));\n }\n if (this.options.document !== false) {\n extensions.push(Document.configure((_f = this.options) === null || _f === void 0 ? void 0 : _f.document));\n }\n if (this.options.dropcursor !== false) {\n extensions.push(Dropcursor.configure((_g = this.options) === null || _g === void 0 ? void 0 : _g.dropcursor));\n }\n if (this.options.gapcursor !== false) {\n extensions.push(Gapcursor.configure((_h = this.options) === null || _h === void 0 ? void 0 : _h.gapcursor));\n }\n if (this.options.hardBreak !== false) {\n extensions.push(HardBreak.configure((_j = this.options) === null || _j === void 0 ? void 0 : _j.hardBreak));\n }\n if (this.options.heading !== false) {\n extensions.push(Heading.configure((_k = this.options) === null || _k === void 0 ? void 0 : _k.heading));\n }\n if (this.options.history !== false) {\n extensions.push(History.configure((_l = this.options) === null || _l === void 0 ? void 0 : _l.history));\n }\n if (this.options.horizontalRule !== false) {\n extensions.push(HorizontalRule.configure((_m = this.options) === null || _m === void 0 ? void 0 : _m.horizontalRule));\n }\n if (this.options.italic !== false) {\n extensions.push(Italic.configure((_o = this.options) === null || _o === void 0 ? void 0 : _o.italic));\n }\n if (this.options.listItem !== false) {\n extensions.push(ListItem.configure((_p = this.options) === null || _p === void 0 ? void 0 : _p.listItem));\n }\n if (this.options.orderedList !== false) {\n extensions.push(OrderedList.configure((_q = this.options) === null || _q === void 0 ? void 0 : _q.orderedList));\n }\n if (this.options.paragraph !== false) {\n extensions.push(Paragraph.configure((_r = this.options) === null || _r === void 0 ? void 0 : _r.paragraph));\n }\n if (this.options.strike !== false) {\n extensions.push(Strike.configure((_s = this.options) === null || _s === void 0 ? void 0 : _s.strike));\n }\n if (this.options.text !== false) {\n extensions.push(Text.configure((_t = this.options) === null || _t === void 0 ? void 0 : _t.text));\n }\n return extensions;\n },\n});\n\nexport { StarterKit, StarterKit as default };\n//# sourceMappingURL=index.js.map\n","import { BubbleMenuPlugin } from '@tiptap/extension-bubble-menu';\nimport { defineComponent, ref, onMounted, onBeforeUnmount, h, reactive, markRaw, customRef, getCurrentInstance, watchEffect, nextTick, unref, Teleport, shallowRef, provide } from 'vue';\nimport { Editor as Editor$1, NodeView } from '@tiptap/core';\nexport * from '@tiptap/core';\nimport { FloatingMenuPlugin } from '@tiptap/extension-floating-menu';\n\nconst BubbleMenu = defineComponent({\n name: 'BubbleMenu',\n props: {\n pluginKey: {\n type: [String, Object],\n default: 'bubbleMenu',\n },\n editor: {\n type: Object,\n required: true,\n },\n updateDelay: {\n type: Number,\n default: undefined,\n },\n tippyOptions: {\n type: Object,\n default: () => ({}),\n },\n shouldShow: {\n type: Function,\n default: null,\n },\n },\n setup(props, { slots }) {\n const root = ref(null);\n onMounted(() => {\n const { updateDelay, editor, pluginKey, shouldShow, tippyOptions, } = props;\n editor.registerPlugin(BubbleMenuPlugin({\n updateDelay,\n editor,\n element: root.value,\n pluginKey,\n shouldShow,\n tippyOptions,\n }));\n });\n onBeforeUnmount(() => {\n const { pluginKey, editor } = props;\n editor.unregisterPlugin(pluginKey);\n });\n return () => { var _a; return h('div', { ref: root }, (_a = slots.default) === null || _a === void 0 ? void 0 : _a.call(slots)); };\n },\n});\n\nfunction useDebouncedRef(value) {\n return customRef((track, trigger) => {\n return {\n get() {\n track();\n return value;\n },\n set(newValue) {\n // update state\n value = newValue;\n // update view as soon as possible\n requestAnimationFrame(() => {\n requestAnimationFrame(() => {\n trigger();\n });\n });\n },\n };\n });\n}\nclass Editor extends Editor$1 {\n constructor(options = {}) {\n super(options);\n this.vueRenderers = reactive(new Map());\n this.contentComponent = null;\n this.reactiveState = useDebouncedRef(this.view.state);\n this.reactiveExtensionStorage = useDebouncedRef(this.extensionStorage);\n this.on('transaction', () => {\n this.reactiveState.value = this.view.state;\n this.reactiveExtensionStorage.value = this.extensionStorage;\n });\n return markRaw(this); // eslint-disable-line\n }\n get state() {\n return this.reactiveState ? this.reactiveState.value : this.view.state;\n }\n get storage() {\n return this.reactiveExtensionStorage ? this.reactiveExtensionStorage.value : super.storage;\n }\n /**\n * Register a ProseMirror plugin.\n */\n registerPlugin(plugin, handlePlugins) {\n super.registerPlugin(plugin, handlePlugins);\n this.reactiveState.value = this.view.state;\n }\n /**\n * Unregister a ProseMirror plugin.\n */\n unregisterPlugin(nameOrPluginKey) {\n super.unregisterPlugin(nameOrPluginKey);\n this.reactiveState.value = this.view.state;\n }\n}\n\nconst EditorContent = defineComponent({\n name: 'EditorContent',\n props: {\n editor: {\n default: null,\n type: Object,\n },\n },\n setup(props) {\n const rootEl = ref();\n const instance = getCurrentInstance();\n watchEffect(() => {\n const editor = props.editor;\n if (editor && editor.options.element && rootEl.value) {\n nextTick(() => {\n if (!rootEl.value || !editor.options.element.firstChild) {\n return;\n }\n const element = unref(rootEl.value);\n rootEl.value.append(...editor.options.element.childNodes);\n // @ts-ignore\n editor.contentComponent = instance.ctx._;\n editor.setOptions({\n element,\n });\n editor.createNodeViews();\n });\n }\n });\n onBeforeUnmount(() => {\n const editor = props.editor;\n if (!editor) {\n return;\n }\n // destroy nodeviews before vue removes dom element\n if (!editor.isDestroyed) {\n editor.view.setProps({\n nodeViews: {},\n });\n }\n editor.contentComponent = null;\n if (!editor.options.element.firstChild) {\n return;\n }\n const newElement = document.createElement('div');\n newElement.append(...editor.options.element.childNodes);\n editor.setOptions({\n element: newElement,\n });\n });\n return { rootEl };\n },\n render() {\n const vueRenderers = [];\n if (this.editor) {\n this.editor.vueRenderers.forEach(vueRenderer => {\n const node = h(Teleport, {\n to: vueRenderer.teleportElement,\n key: vueRenderer.id,\n }, h(vueRenderer.component, {\n ref: vueRenderer.id,\n ...vueRenderer.props,\n }));\n vueRenderers.push(node);\n });\n }\n return h('div', {\n ref: (el) => { this.rootEl = el; },\n }, ...vueRenderers);\n },\n});\n\nconst FloatingMenu = defineComponent({\n name: 'FloatingMenu',\n props: {\n pluginKey: {\n // TODO: TypeScript breaks :(\n // type: [String, Object as PropType>],\n type: null,\n default: 'floatingMenu',\n },\n editor: {\n type: Object,\n required: true,\n },\n tippyOptions: {\n type: Object,\n default: () => ({}),\n },\n shouldShow: {\n type: Function,\n default: null,\n },\n },\n setup(props, { slots }) {\n const root = ref(null);\n onMounted(() => {\n const { pluginKey, editor, tippyOptions, shouldShow, } = props;\n editor.registerPlugin(FloatingMenuPlugin({\n pluginKey,\n editor,\n element: root.value,\n tippyOptions,\n shouldShow,\n }));\n });\n onBeforeUnmount(() => {\n const { pluginKey, editor } = props;\n editor.unregisterPlugin(pluginKey);\n });\n return () => { var _a; return h('div', { ref: root }, (_a = slots.default) === null || _a === void 0 ? void 0 : _a.call(slots)); };\n },\n});\n\nconst NodeViewContent = defineComponent({\n name: 'NodeViewContent',\n props: {\n as: {\n type: String,\n default: 'div',\n },\n },\n render() {\n return h(this.as, {\n style: {\n whiteSpace: 'pre-wrap',\n },\n 'data-node-view-content': '',\n });\n },\n});\n\nconst NodeViewWrapper = defineComponent({\n name: 'NodeViewWrapper',\n props: {\n as: {\n type: String,\n default: 'div',\n },\n },\n inject: ['onDragStart', 'decorationClasses'],\n render() {\n var _a, _b;\n return h(this.as, {\n // @ts-ignore\n class: this.decorationClasses,\n style: {\n whiteSpace: 'normal',\n },\n 'data-node-view-wrapper': '',\n // @ts-ignore (https://github.com/vuejs/vue-next/issues/3031)\n onDragstart: this.onDragStart,\n }, (_b = (_a = this.$slots).default) === null || _b === void 0 ? void 0 : _b.call(_a));\n },\n});\n\nconst useEditor = (options = {}) => {\n const editor = shallowRef();\n onMounted(() => {\n editor.value = new Editor(options);\n });\n onBeforeUnmount(() => {\n var _a;\n (_a = editor.value) === null || _a === void 0 ? void 0 : _a.destroy();\n });\n return editor;\n};\n\n/**\n * This class is used to render Vue components inside the editor.\n */\nclass VueRenderer {\n constructor(component, { props = {}, editor }) {\n this.id = Math.floor(Math.random() * 0xFFFFFFFF).toString();\n this.editor = editor;\n this.component = markRaw(component);\n this.teleportElement = document.createElement('div');\n this.element = this.teleportElement;\n this.props = reactive(props);\n this.editor.vueRenderers.set(this.id, this);\n if (this.editor.contentComponent) {\n this.editor.contentComponent.update();\n if (this.teleportElement.children.length !== 1) {\n throw Error('VueRenderer doesn’t support multiple child elements.');\n }\n this.element = this.teleportElement.firstElementChild;\n }\n }\n get ref() {\n var _a;\n return (_a = this.editor.contentComponent) === null || _a === void 0 ? void 0 : _a.refs[this.id];\n }\n updateProps(props = {}) {\n Object\n .entries(props)\n .forEach(([key, value]) => {\n this.props[key] = value;\n });\n }\n destroy() {\n this.editor.vueRenderers.delete(this.id);\n }\n}\n\nconst nodeViewProps = {\n editor: {\n type: Object,\n required: true,\n },\n node: {\n type: Object,\n required: true,\n },\n decorations: {\n type: Object,\n required: true,\n },\n selected: {\n type: Boolean,\n required: true,\n },\n extension: {\n type: Object,\n required: true,\n },\n getPos: {\n type: Function,\n required: true,\n },\n updateAttributes: {\n type: Function,\n required: true,\n },\n deleteNode: {\n type: Function,\n required: true,\n },\n};\nclass VueNodeView extends NodeView {\n mount() {\n const props = {\n editor: this.editor,\n node: this.node,\n decorations: this.decorations,\n selected: false,\n extension: this.extension,\n getPos: () => this.getPos(),\n updateAttributes: (attributes = {}) => this.updateAttributes(attributes),\n deleteNode: () => this.deleteNode(),\n };\n const onDragStart = this.onDragStart.bind(this);\n this.decorationClasses = ref(this.getDecorationClasses());\n const extendedComponent = defineComponent({\n extends: { ...this.component },\n props: Object.keys(props),\n template: this.component.template,\n setup: reactiveProps => {\n var _a, _b;\n provide('onDragStart', onDragStart);\n provide('decorationClasses', this.decorationClasses);\n return (_b = (_a = this.component).setup) === null || _b === void 0 ? void 0 : _b.call(_a, reactiveProps, {\n expose: () => undefined,\n });\n },\n // add support for scoped styles\n // @ts-ignore\n // eslint-disable-next-line\n __scopeId: this.component.__scopeId,\n // add support for CSS Modules\n // @ts-ignore\n // eslint-disable-next-line\n __cssModules: this.component.__cssModules,\n // add support for vue devtools\n // @ts-ignore\n // eslint-disable-next-line\n __name: this.component.__name,\n // @ts-ignore\n // eslint-disable-next-line\n __file: this.component.__file,\n });\n this.renderer = new VueRenderer(extendedComponent, {\n editor: this.editor,\n props,\n });\n }\n get dom() {\n if (!this.renderer.element.hasAttribute('data-node-view-wrapper')) {\n throw Error('Please use the NodeViewWrapper component for your node view.');\n }\n return this.renderer.element;\n }\n get contentDOM() {\n if (this.node.isLeaf) {\n return null;\n }\n const contentElement = this.dom.querySelector('[data-node-view-content]');\n return (contentElement || this.dom);\n }\n update(node, decorations) {\n const updateProps = (props) => {\n this.decorationClasses.value = this.getDecorationClasses();\n this.renderer.updateProps(props);\n };\n if (typeof this.options.update === 'function') {\n const oldNode = this.node;\n const oldDecorations = this.decorations;\n this.node = node;\n this.decorations = decorations;\n return this.options.update({\n oldNode,\n oldDecorations,\n newNode: node,\n newDecorations: decorations,\n updateProps: () => updateProps({ node, decorations }),\n });\n }\n if (node.type !== this.node.type) {\n return false;\n }\n if (node === this.node && this.decorations === decorations) {\n return true;\n }\n this.node = node;\n this.decorations = decorations;\n updateProps({ node, decorations });\n return true;\n }\n selectNode() {\n this.renderer.updateProps({\n selected: true,\n });\n this.renderer.element.classList.add('ProseMirror-selectednode');\n }\n deselectNode() {\n this.renderer.updateProps({\n selected: false,\n });\n this.renderer.element.classList.remove('ProseMirror-selectednode');\n }\n getDecorationClasses() {\n return (this.decorations\n // @ts-ignore\n .map(item => item.type.attrs.class)\n .flat()\n .join(' '));\n }\n destroy() {\n this.renderer.destroy();\n }\n}\nfunction VueNodeViewRenderer(component, options) {\n return (props) => {\n // try to get the parent component\n // this is important for vue devtools to show the component hierarchy correctly\n // maybe it’s `undefined` because isn’t rendered yet\n if (!props.editor.contentComponent) {\n return {};\n }\n return new VueNodeView(component, props, options);\n };\n}\n\nexport { BubbleMenu, Editor, EditorContent, FloatingMenu, NodeViewContent, NodeViewWrapper, VueNodeViewRenderer, VueRenderer, nodeViewProps, useEditor };\n//# sourceMappingURL=index.js.map\n","\n\n\n\n\n","import { ComponentWithProperties } from \"@simonbackx/vue-app-navigation\";\n\nimport { ModalStackEventBus } from \"../..\";\nimport Tooltip from \"../overlays/Tooltip.vue\";\nimport type {ObjectDirective} from \"vue\";\n\nconst TooltipDirective: ObjectDirective = {\n beforeMount(el, binding) {\n let isMouseHover = false;\n const displayedComponent: ComponentWithProperties | null = el.$tooltipDisplayedComponent ?? null;\n el.$tooltipDisplayedComponent = displayedComponent;\n\n if (!binding.value || typeof binding.value !== \"string\") {\n return;\n }\n\n if ('ontouchstart' in window) {\n // Ignore on touch devices\n return;\n }\n\n // Add a hover listener\n el.addEventListener(\n \"mouseover\",\n (_event) => { \n if (!isMouseHover) {\n isMouseHover = true;\n\n setTimeout(() => {\n if (isMouseHover && !el.$tooltipDisplayedComponent) {\n const rect = el.getBoundingClientRect();\n\n // Present\n el.$tooltipDisplayedComponent = new ComponentWithProperties(Tooltip, {\n text: binding.value,\n x: rect.left,\n y: rect.bottom,\n xPlacement: \"right\",\n yPlacement: \"bottom\",\n wrapHeight: rect.height,\n });\n\n ModalStackEventBus.sendEvent(\"present\", {\n components: [\n el.$tooltipDisplayedComponent\n ],\n modalDisplayStyle: \"overlay\",\n }).catch(console.error)\n }\n }, 200);\n }\n },\n { passive: true }\n );\n el.addEventListener(\n \"mouseleave\",\n (_event) => {\n isMouseHover = false;\n\n if (el.$tooltipDisplayedComponent && el.$tooltipDisplayedComponent.vnode) {\n try {\n (el.$tooltipDisplayedComponent.vnode.component!.proxy as any).pop({force: true})\n } catch (e) {\n // Ignore\n console.error(e);\n }\n } else {\n console.error(\"Tooltip $tooltipDisplayedComponent.vnode not set\", el.$tooltipDisplayedComponent);\n }\n el.$tooltipDisplayedComponent = null;\n },\n { passive: true }\n );\n },\n\n unmounted(el, binding, vnode) {\n if (el.$tooltipDisplayedComponent && el.$tooltipDisplayedComponent.vnode) {\n try {\n (el.$tooltipDisplayedComponent.vnode.component!.proxy as any).pop({force: true})\n } catch (e) {\n // Ignore\n console.error(e);\n }\n }\n el.$tooltipDisplayedComponent = null;\n }\n};\n\nexport default TooltipDirective;","\n\n","\n\n\n\n\n\n","import { isSimpleError, isSimpleErrors, SimpleError, SimpleErrors } from \"@simonbackx/simple-errors\";\nimport { Request } from \"@simonbackx/simple-networking\";\nimport { reactive } from \"vue\";\n\nexport type ToastListener = (toast: Toast) => void\n\nexport class ToastButton {\n text: string;\n icon: string | null;\n action: () => void;\n\n href: string | null;\n download: string | null;\n\n constructor(text: string, action?: () => void, icon: string | null = null) {\n this.text = text\n this.action = action ?? (() => {})\n this.icon = icon\n }\n\n setHref(href: string) {\n this.href = href\n return this\n }\n\n setDownload(download: string) {\n this.download = download\n return this\n }\n}\n\nexport class Toast {\n protected static listeners: Map = new Map()\n message: string\n icon: string | null\n withOffset = false\n progress: number | null = null\n button: ToastButton | null = null\n forceButtonClick = false\n\n autohideAfter: number | null = 7000\n\n doHide: (() => void) | null = null\n action: (() => void) | null = null\n\n constructor(message: string, icon: string | null = null) {\n this.message = message\n this.icon = icon\n\n\n // Constructor hack: we override Toast with a reactive toast\n // this fixes issues with editing the toast, because otherwise it would not get updated\n return reactive(this);\n }\n\n static success(message: string): Toast {\n return new Toast(message, \"success green\")\n }\n\n static error(message: string): Toast {\n return new Toast(message, \"error red\")\n }\n\n static warning(message: string): Toast {\n return new Toast(message, \"warning yellow\")\n }\n\n static info(message: string): Toast {\n return new Toast(message, \"info\")\n }\n\n static fromError(errors: unknown): Toast {\n let simpleErrors!: SimpleErrors\n if (isSimpleError(errors)) {\n simpleErrors = new SimpleErrors(errors)\n } else if (isSimpleErrors(errors)) {\n simpleErrors = errors\n } else {\n simpleErrors = new SimpleErrors(new SimpleError({\n code: \"unknown_error\",\n message: (errors as Error).message\n }))\n }\n\n if (Request.isNetworkError((errors as Error))) {\n return new Toast(\"Geen of slechte internetverbinding\", \"error red\")\n }\n return new Toast(simpleErrors.getHuman(), \"error red\")\n }\n\n setProgress(progress: number | null) {\n this.progress = progress\n return this\n }\n\n setHide(ms: number | null) {\n this.autohideAfter = ms \n return this\n }\n\n setButton(button: ToastButton | null) {\n this.button = button \n return this\n }\n\n setForceButtonClick() {\n this.forceButtonClick = true\n return this\n }\n\n setAction(action: (() => void) | null) {\n this.action = action \n return this\n }\n\n setIcon(icon: string | null) {\n this.icon = icon\n return this\n }\n\n setWithOffset() {\n this.withOffset = true\n return this\n }\n\n static addListener(owner: any, listener: ToastListener) {\n this.listeners.set(owner, listener)\n }\n\n static removeListener(owner: any) {\n this.listeners.delete(owner)\n }\n\n static callListeners(toast: Toast) {\n for (const listener of this.listeners.values()) {\n listener(toast)\n }\n }\n show() {\n if (Toast.listeners.size == 0) {\n console.log('Delayed Toast show')\n // Delayed show\n setTimeout(() => {\n this.show()\n }, 1000)\n } else {\n Toast.callListeners(this)\n }\n return this\n }\n\n hide() {\n if (this.doHide) {\n this.doHide();\n this.doHide = null;\n }\n return this\n }\n}\n","\n\n\n\n\n\n\n","\n\n\n\n\n","/**!\n * Sortable 1.15.2\n * @author\tRubaXa \n * @author\towenm \n * @license MIT\n */\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) {\n symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n }\n keys.push.apply(keys, symbols);\n }\n return keys;\n}\nfunction _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n return target;\n}\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function (obj) {\n return typeof obj;\n };\n } else {\n _typeof = function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n return _typeof(obj);\n}\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n return target;\n}\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = _objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n return target;\n}\nfunction _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();\n}\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return _arrayLikeToArray(arr);\n}\nfunction _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n return arr2;\n}\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nvar version = \"1.15.2\";\n\nfunction userAgent(pattern) {\n if (typeof window !== 'undefined' && window.navigator) {\n return !! /*@__PURE__*/navigator.userAgent.match(pattern);\n }\n}\nvar IE11OrLess = userAgent(/(?:Trident.*rv[ :]?11\\.|msie|iemobile|Windows Phone)/i);\nvar Edge = userAgent(/Edge/i);\nvar FireFox = userAgent(/firefox/i);\nvar Safari = userAgent(/safari/i) && !userAgent(/chrome/i) && !userAgent(/android/i);\nvar IOS = userAgent(/iP(ad|od|hone)/i);\nvar ChromeForAndroid = userAgent(/chrome/i) && userAgent(/android/i);\n\nvar captureMode = {\n capture: false,\n passive: false\n};\nfunction on(el, event, fn) {\n el.addEventListener(event, fn, !IE11OrLess && captureMode);\n}\nfunction off(el, event, fn) {\n el.removeEventListener(event, fn, !IE11OrLess && captureMode);\n}\nfunction matches( /**HTMLElement*/el, /**String*/selector) {\n if (!selector) return;\n selector[0] === '>' && (selector = selector.substring(1));\n if (el) {\n try {\n if (el.matches) {\n return el.matches(selector);\n } else if (el.msMatchesSelector) {\n return el.msMatchesSelector(selector);\n } else if (el.webkitMatchesSelector) {\n return el.webkitMatchesSelector(selector);\n }\n } catch (_) {\n return false;\n }\n }\n return false;\n}\nfunction getParentOrHost(el) {\n return el.host && el !== document && el.host.nodeType ? el.host : el.parentNode;\n}\nfunction closest( /**HTMLElement*/el, /**String*/selector, /**HTMLElement*/ctx, includeCTX) {\n if (el) {\n ctx = ctx || document;\n do {\n if (selector != null && (selector[0] === '>' ? el.parentNode === ctx && matches(el, selector) : matches(el, selector)) || includeCTX && el === ctx) {\n return el;\n }\n if (el === ctx) break;\n /* jshint boss:true */\n } while (el = getParentOrHost(el));\n }\n return null;\n}\nvar R_SPACE = /\\s+/g;\nfunction toggleClass(el, name, state) {\n if (el && name) {\n if (el.classList) {\n el.classList[state ? 'add' : 'remove'](name);\n } else {\n var className = (' ' + el.className + ' ').replace(R_SPACE, ' ').replace(' ' + name + ' ', ' ');\n el.className = (className + (state ? ' ' + name : '')).replace(R_SPACE, ' ');\n }\n }\n}\nfunction css(el, prop, val) {\n var style = el && el.style;\n if (style) {\n if (val === void 0) {\n if (document.defaultView && document.defaultView.getComputedStyle) {\n val = document.defaultView.getComputedStyle(el, '');\n } else if (el.currentStyle) {\n val = el.currentStyle;\n }\n return prop === void 0 ? val : val[prop];\n } else {\n if (!(prop in style) && prop.indexOf('webkit') === -1) {\n prop = '-webkit-' + prop;\n }\n style[prop] = val + (typeof val === 'string' ? '' : 'px');\n }\n }\n}\nfunction matrix(el, selfOnly) {\n var appliedTransforms = '';\n if (typeof el === 'string') {\n appliedTransforms = el;\n } else {\n do {\n var transform = css(el, 'transform');\n if (transform && transform !== 'none') {\n appliedTransforms = transform + ' ' + appliedTransforms;\n }\n /* jshint boss:true */\n } while (!selfOnly && (el = el.parentNode));\n }\n var matrixFn = window.DOMMatrix || window.WebKitCSSMatrix || window.CSSMatrix || window.MSCSSMatrix;\n /*jshint -W056 */\n return matrixFn && new matrixFn(appliedTransforms);\n}\nfunction find(ctx, tagName, iterator) {\n if (ctx) {\n var list = ctx.getElementsByTagName(tagName),\n i = 0,\n n = list.length;\n if (iterator) {\n for (; i < n; i++) {\n iterator(list[i], i);\n }\n }\n return list;\n }\n return [];\n}\nfunction getWindowScrollingElement() {\n var scrollingElement = document.scrollingElement;\n if (scrollingElement) {\n return scrollingElement;\n } else {\n return document.documentElement;\n }\n}\n\n/**\r\n * Returns the \"bounding client rect\" of given element\r\n * @param {HTMLElement} el The element whose boundingClientRect is wanted\r\n * @param {[Boolean]} relativeToContainingBlock Whether the rect should be relative to the containing block of (including) the container\r\n * @param {[Boolean]} relativeToNonStaticParent Whether the rect should be relative to the relative parent of (including) the contaienr\r\n * @param {[Boolean]} undoScale Whether the container's scale() should be undone\r\n * @param {[HTMLElement]} container The parent the element will be placed in\r\n * @return {Object} The boundingClientRect of el, with specified adjustments\r\n */\nfunction getRect(el, relativeToContainingBlock, relativeToNonStaticParent, undoScale, container) {\n if (!el.getBoundingClientRect && el !== window) return;\n var elRect, top, left, bottom, right, height, width;\n if (el !== window && el.parentNode && el !== getWindowScrollingElement()) {\n elRect = el.getBoundingClientRect();\n top = elRect.top;\n left = elRect.left;\n bottom = elRect.bottom;\n right = elRect.right;\n height = elRect.height;\n width = elRect.width;\n } else {\n top = 0;\n left = 0;\n bottom = window.innerHeight;\n right = window.innerWidth;\n height = window.innerHeight;\n width = window.innerWidth;\n }\n if ((relativeToContainingBlock || relativeToNonStaticParent) && el !== window) {\n // Adjust for translate()\n container = container || el.parentNode;\n\n // solves #1123 (see: https://stackoverflow.com/a/37953806/6088312)\n // Not needed on <= IE11\n if (!IE11OrLess) {\n do {\n if (container && container.getBoundingClientRect && (css(container, 'transform') !== 'none' || relativeToNonStaticParent && css(container, 'position') !== 'static')) {\n var containerRect = container.getBoundingClientRect();\n\n // Set relative to edges of padding box of container\n top -= containerRect.top + parseInt(css(container, 'border-top-width'));\n left -= containerRect.left + parseInt(css(container, 'border-left-width'));\n bottom = top + elRect.height;\n right = left + elRect.width;\n break;\n }\n /* jshint boss:true */\n } while (container = container.parentNode);\n }\n }\n if (undoScale && el !== window) {\n // Adjust for scale()\n var elMatrix = matrix(container || el),\n scaleX = elMatrix && elMatrix.a,\n scaleY = elMatrix && elMatrix.d;\n if (elMatrix) {\n top /= scaleY;\n left /= scaleX;\n width /= scaleX;\n height /= scaleY;\n bottom = top + height;\n right = left + width;\n }\n }\n return {\n top: top,\n left: left,\n bottom: bottom,\n right: right,\n width: width,\n height: height\n };\n}\n\n/**\r\n * Checks if a side of an element is scrolled past a side of its parents\r\n * @param {HTMLElement} el The element who's side being scrolled out of view is in question\r\n * @param {String} elSide Side of the element in question ('top', 'left', 'right', 'bottom')\r\n * @param {String} parentSide Side of the parent in question ('top', 'left', 'right', 'bottom')\r\n * @return {HTMLElement} The parent scroll element that the el's side is scrolled past, or null if there is no such element\r\n */\nfunction isScrolledPast(el, elSide, parentSide) {\n var parent = getParentAutoScrollElement(el, true),\n elSideVal = getRect(el)[elSide];\n\n /* jshint boss:true */\n while (parent) {\n var parentSideVal = getRect(parent)[parentSide],\n visible = void 0;\n if (parentSide === 'top' || parentSide === 'left') {\n visible = elSideVal >= parentSideVal;\n } else {\n visible = elSideVal <= parentSideVal;\n }\n if (!visible) return parent;\n if (parent === getWindowScrollingElement()) break;\n parent = getParentAutoScrollElement(parent, false);\n }\n return false;\n}\n\n/**\r\n * Gets nth child of el, ignoring hidden children, sortable's elements (does not ignore clone if it's visible)\r\n * and non-draggable elements\r\n * @param {HTMLElement} el The parent element\r\n * @param {Number} childNum The index of the child\r\n * @param {Object} options Parent Sortable's options\r\n * @return {HTMLElement} The child at index childNum, or null if not found\r\n */\nfunction getChild(el, childNum, options, includeDragEl) {\n var currentChild = 0,\n i = 0,\n children = el.children;\n while (i < children.length) {\n if (children[i].style.display !== 'none' && children[i] !== Sortable.ghost && (includeDragEl || children[i] !== Sortable.dragged) && closest(children[i], options.draggable, el, false)) {\n if (currentChild === childNum) {\n return children[i];\n }\n currentChild++;\n }\n i++;\n }\n return null;\n}\n\n/**\r\n * Gets the last child in the el, ignoring ghostEl or invisible elements (clones)\r\n * @param {HTMLElement} el Parent element\r\n * @param {selector} selector Any other elements that should be ignored\r\n * @return {HTMLElement} The last child, ignoring ghostEl\r\n */\nfunction lastChild(el, selector) {\n var last = el.lastElementChild;\n while (last && (last === Sortable.ghost || css(last, 'display') === 'none' || selector && !matches(last, selector))) {\n last = last.previousElementSibling;\n }\n return last || null;\n}\n\n/**\r\n * Returns the index of an element within its parent for a selected set of\r\n * elements\r\n * @param {HTMLElement} el\r\n * @param {selector} selector\r\n * @return {number}\r\n */\nfunction index(el, selector) {\n var index = 0;\n if (!el || !el.parentNode) {\n return -1;\n }\n\n /* jshint boss:true */\n while (el = el.previousElementSibling) {\n if (el.nodeName.toUpperCase() !== 'TEMPLATE' && el !== Sortable.clone && (!selector || matches(el, selector))) {\n index++;\n }\n }\n return index;\n}\n\n/**\r\n * Returns the scroll offset of the given element, added with all the scroll offsets of parent elements.\r\n * The value is returned in real pixels.\r\n * @param {HTMLElement} el\r\n * @return {Array} Offsets in the format of [left, top]\r\n */\nfunction getRelativeScrollOffset(el) {\n var offsetLeft = 0,\n offsetTop = 0,\n winScroller = getWindowScrollingElement();\n if (el) {\n do {\n var elMatrix = matrix(el),\n scaleX = elMatrix.a,\n scaleY = elMatrix.d;\n offsetLeft += el.scrollLeft * scaleX;\n offsetTop += el.scrollTop * scaleY;\n } while (el !== winScroller && (el = el.parentNode));\n }\n return [offsetLeft, offsetTop];\n}\n\n/**\r\n * Returns the index of the object within the given array\r\n * @param {Array} arr Array that may or may not hold the object\r\n * @param {Object} obj An object that has a key-value pair unique to and identical to a key-value pair in the object you want to find\r\n * @return {Number} The index of the object in the array, or -1\r\n */\nfunction indexOfObject(arr, obj) {\n for (var i in arr) {\n if (!arr.hasOwnProperty(i)) continue;\n for (var key in obj) {\n if (obj.hasOwnProperty(key) && obj[key] === arr[i][key]) return Number(i);\n }\n }\n return -1;\n}\nfunction getParentAutoScrollElement(el, includeSelf) {\n // skip to window\n if (!el || !el.getBoundingClientRect) return getWindowScrollingElement();\n var elem = el;\n var gotSelf = false;\n do {\n // we don't need to get elem css if it isn't even overflowing in the first place (performance)\n if (elem.clientWidth < elem.scrollWidth || elem.clientHeight < elem.scrollHeight) {\n var elemCSS = css(elem);\n if (elem.clientWidth < elem.scrollWidth && (elemCSS.overflowX == 'auto' || elemCSS.overflowX == 'scroll') || elem.clientHeight < elem.scrollHeight && (elemCSS.overflowY == 'auto' || elemCSS.overflowY == 'scroll')) {\n if (!elem.getBoundingClientRect || elem === document.body) return getWindowScrollingElement();\n if (gotSelf || includeSelf) return elem;\n gotSelf = true;\n }\n }\n /* jshint boss:true */\n } while (elem = elem.parentNode);\n return getWindowScrollingElement();\n}\nfunction extend(dst, src) {\n if (dst && src) {\n for (var key in src) {\n if (src.hasOwnProperty(key)) {\n dst[key] = src[key];\n }\n }\n }\n return dst;\n}\nfunction isRectEqual(rect1, rect2) {\n return Math.round(rect1.top) === Math.round(rect2.top) && Math.round(rect1.left) === Math.round(rect2.left) && Math.round(rect1.height) === Math.round(rect2.height) && Math.round(rect1.width) === Math.round(rect2.width);\n}\nvar _throttleTimeout;\nfunction throttle(callback, ms) {\n return function () {\n if (!_throttleTimeout) {\n var args = arguments,\n _this = this;\n if (args.length === 1) {\n callback.call(_this, args[0]);\n } else {\n callback.apply(_this, args);\n }\n _throttleTimeout = setTimeout(function () {\n _throttleTimeout = void 0;\n }, ms);\n }\n };\n}\nfunction cancelThrottle() {\n clearTimeout(_throttleTimeout);\n _throttleTimeout = void 0;\n}\nfunction scrollBy(el, x, y) {\n el.scrollLeft += x;\n el.scrollTop += y;\n}\nfunction clone(el) {\n var Polymer = window.Polymer;\n var $ = window.jQuery || window.Zepto;\n if (Polymer && Polymer.dom) {\n return Polymer.dom(el).cloneNode(true);\n } else if ($) {\n return $(el).clone(true)[0];\n } else {\n return el.cloneNode(true);\n }\n}\nfunction setRect(el, rect) {\n css(el, 'position', 'absolute');\n css(el, 'top', rect.top);\n css(el, 'left', rect.left);\n css(el, 'width', rect.width);\n css(el, 'height', rect.height);\n}\nfunction unsetRect(el) {\n css(el, 'position', '');\n css(el, 'top', '');\n css(el, 'left', '');\n css(el, 'width', '');\n css(el, 'height', '');\n}\nfunction getChildContainingRectFromElement(container, options, ghostEl) {\n var rect = {};\n Array.from(container.children).forEach(function (child) {\n var _rect$left, _rect$top, _rect$right, _rect$bottom;\n if (!closest(child, options.draggable, container, false) || child.animated || child === ghostEl) return;\n var childRect = getRect(child);\n rect.left = Math.min((_rect$left = rect.left) !== null && _rect$left !== void 0 ? _rect$left : Infinity, childRect.left);\n rect.top = Math.min((_rect$top = rect.top) !== null && _rect$top !== void 0 ? _rect$top : Infinity, childRect.top);\n rect.right = Math.max((_rect$right = rect.right) !== null && _rect$right !== void 0 ? _rect$right : -Infinity, childRect.right);\n rect.bottom = Math.max((_rect$bottom = rect.bottom) !== null && _rect$bottom !== void 0 ? _rect$bottom : -Infinity, childRect.bottom);\n });\n rect.width = rect.right - rect.left;\n rect.height = rect.bottom - rect.top;\n rect.x = rect.left;\n rect.y = rect.top;\n return rect;\n}\nvar expando = 'Sortable' + new Date().getTime();\n\nfunction AnimationStateManager() {\n var animationStates = [],\n animationCallbackId;\n return {\n captureAnimationState: function captureAnimationState() {\n animationStates = [];\n if (!this.options.animation) return;\n var children = [].slice.call(this.el.children);\n children.forEach(function (child) {\n if (css(child, 'display') === 'none' || child === Sortable.ghost) return;\n animationStates.push({\n target: child,\n rect: getRect(child)\n });\n var fromRect = _objectSpread2({}, animationStates[animationStates.length - 1].rect);\n\n // If animating: compensate for current animation\n if (child.thisAnimationDuration) {\n var childMatrix = matrix(child, true);\n if (childMatrix) {\n fromRect.top -= childMatrix.f;\n fromRect.left -= childMatrix.e;\n }\n }\n child.fromRect = fromRect;\n });\n },\n addAnimationState: function addAnimationState(state) {\n animationStates.push(state);\n },\n removeAnimationState: function removeAnimationState(target) {\n animationStates.splice(indexOfObject(animationStates, {\n target: target\n }), 1);\n },\n animateAll: function animateAll(callback) {\n var _this = this;\n if (!this.options.animation) {\n clearTimeout(animationCallbackId);\n if (typeof callback === 'function') callback();\n return;\n }\n var animating = false,\n animationTime = 0;\n animationStates.forEach(function (state) {\n var time = 0,\n target = state.target,\n fromRect = target.fromRect,\n toRect = getRect(target),\n prevFromRect = target.prevFromRect,\n prevToRect = target.prevToRect,\n animatingRect = state.rect,\n targetMatrix = matrix(target, true);\n if (targetMatrix) {\n // Compensate for current animation\n toRect.top -= targetMatrix.f;\n toRect.left -= targetMatrix.e;\n }\n target.toRect = toRect;\n if (target.thisAnimationDuration) {\n // Could also check if animatingRect is between fromRect and toRect\n if (isRectEqual(prevFromRect, toRect) && !isRectEqual(fromRect, toRect) &&\n // Make sure animatingRect is on line between toRect & fromRect\n (animatingRect.top - toRect.top) / (animatingRect.left - toRect.left) === (fromRect.top - toRect.top) / (fromRect.left - toRect.left)) {\n // If returning to same place as started from animation and on same axis\n time = calculateRealTime(animatingRect, prevFromRect, prevToRect, _this.options);\n }\n }\n\n // if fromRect != toRect: animate\n if (!isRectEqual(toRect, fromRect)) {\n target.prevFromRect = fromRect;\n target.prevToRect = toRect;\n if (!time) {\n time = _this.options.animation;\n }\n _this.animate(target, animatingRect, toRect, time);\n }\n if (time) {\n animating = true;\n animationTime = Math.max(animationTime, time);\n clearTimeout(target.animationResetTimer);\n target.animationResetTimer = setTimeout(function () {\n target.animationTime = 0;\n target.prevFromRect = null;\n target.fromRect = null;\n target.prevToRect = null;\n target.thisAnimationDuration = null;\n }, time);\n target.thisAnimationDuration = time;\n }\n });\n clearTimeout(animationCallbackId);\n if (!animating) {\n if (typeof callback === 'function') callback();\n } else {\n animationCallbackId = setTimeout(function () {\n if (typeof callback === 'function') callback();\n }, animationTime);\n }\n animationStates = [];\n },\n animate: function animate(target, currentRect, toRect, duration) {\n if (duration) {\n css(target, 'transition', '');\n css(target, 'transform', '');\n var elMatrix = matrix(this.el),\n scaleX = elMatrix && elMatrix.a,\n scaleY = elMatrix && elMatrix.d,\n translateX = (currentRect.left - toRect.left) / (scaleX || 1),\n translateY = (currentRect.top - toRect.top) / (scaleY || 1);\n target.animatingX = !!translateX;\n target.animatingY = !!translateY;\n css(target, 'transform', 'translate3d(' + translateX + 'px,' + translateY + 'px,0)');\n this.forRepaintDummy = repaint(target); // repaint\n\n css(target, 'transition', 'transform ' + duration + 'ms' + (this.options.easing ? ' ' + this.options.easing : ''));\n css(target, 'transform', 'translate3d(0,0,0)');\n typeof target.animated === 'number' && clearTimeout(target.animated);\n target.animated = setTimeout(function () {\n css(target, 'transition', '');\n css(target, 'transform', '');\n target.animated = false;\n target.animatingX = false;\n target.animatingY = false;\n }, duration);\n }\n }\n };\n}\nfunction repaint(target) {\n return target.offsetWidth;\n}\nfunction calculateRealTime(animatingRect, fromRect, toRect, options) {\n return Math.sqrt(Math.pow(fromRect.top - animatingRect.top, 2) + Math.pow(fromRect.left - animatingRect.left, 2)) / Math.sqrt(Math.pow(fromRect.top - toRect.top, 2) + Math.pow(fromRect.left - toRect.left, 2)) * options.animation;\n}\n\nvar plugins = [];\nvar defaults = {\n initializeByDefault: true\n};\nvar PluginManager = {\n mount: function mount(plugin) {\n // Set default static properties\n for (var option in defaults) {\n if (defaults.hasOwnProperty(option) && !(option in plugin)) {\n plugin[option] = defaults[option];\n }\n }\n plugins.forEach(function (p) {\n if (p.pluginName === plugin.pluginName) {\n throw \"Sortable: Cannot mount plugin \".concat(plugin.pluginName, \" more than once\");\n }\n });\n plugins.push(plugin);\n },\n pluginEvent: function pluginEvent(eventName, sortable, evt) {\n var _this = this;\n this.eventCanceled = false;\n evt.cancel = function () {\n _this.eventCanceled = true;\n };\n var eventNameGlobal = eventName + 'Global';\n plugins.forEach(function (plugin) {\n if (!sortable[plugin.pluginName]) return;\n // Fire global events if it exists in this sortable\n if (sortable[plugin.pluginName][eventNameGlobal]) {\n sortable[plugin.pluginName][eventNameGlobal](_objectSpread2({\n sortable: sortable\n }, evt));\n }\n\n // Only fire plugin event if plugin is enabled in this sortable,\n // and plugin has event defined\n if (sortable.options[plugin.pluginName] && sortable[plugin.pluginName][eventName]) {\n sortable[plugin.pluginName][eventName](_objectSpread2({\n sortable: sortable\n }, evt));\n }\n });\n },\n initializePlugins: function initializePlugins(sortable, el, defaults, options) {\n plugins.forEach(function (plugin) {\n var pluginName = plugin.pluginName;\n if (!sortable.options[pluginName] && !plugin.initializeByDefault) return;\n var initialized = new plugin(sortable, el, sortable.options);\n initialized.sortable = sortable;\n initialized.options = sortable.options;\n sortable[pluginName] = initialized;\n\n // Add default options from plugin\n _extends(defaults, initialized.defaults);\n });\n for (var option in sortable.options) {\n if (!sortable.options.hasOwnProperty(option)) continue;\n var modified = this.modifyOption(sortable, option, sortable.options[option]);\n if (typeof modified !== 'undefined') {\n sortable.options[option] = modified;\n }\n }\n },\n getEventProperties: function getEventProperties(name, sortable) {\n var eventProperties = {};\n plugins.forEach(function (plugin) {\n if (typeof plugin.eventProperties !== 'function') return;\n _extends(eventProperties, plugin.eventProperties.call(sortable[plugin.pluginName], name));\n });\n return eventProperties;\n },\n modifyOption: function modifyOption(sortable, name, value) {\n var modifiedValue;\n plugins.forEach(function (plugin) {\n // Plugin must exist on the Sortable\n if (!sortable[plugin.pluginName]) return;\n\n // If static option listener exists for this option, call in the context of the Sortable's instance of this plugin\n if (plugin.optionListeners && typeof plugin.optionListeners[name] === 'function') {\n modifiedValue = plugin.optionListeners[name].call(sortable[plugin.pluginName], value);\n }\n });\n return modifiedValue;\n }\n};\n\nfunction dispatchEvent(_ref) {\n var sortable = _ref.sortable,\n rootEl = _ref.rootEl,\n name = _ref.name,\n targetEl = _ref.targetEl,\n cloneEl = _ref.cloneEl,\n toEl = _ref.toEl,\n fromEl = _ref.fromEl,\n oldIndex = _ref.oldIndex,\n newIndex = _ref.newIndex,\n oldDraggableIndex = _ref.oldDraggableIndex,\n newDraggableIndex = _ref.newDraggableIndex,\n originalEvent = _ref.originalEvent,\n putSortable = _ref.putSortable,\n extraEventProperties = _ref.extraEventProperties;\n sortable = sortable || rootEl && rootEl[expando];\n if (!sortable) return;\n var evt,\n options = sortable.options,\n onName = 'on' + name.charAt(0).toUpperCase() + name.substr(1);\n // Support for new CustomEvent feature\n if (window.CustomEvent && !IE11OrLess && !Edge) {\n evt = new CustomEvent(name, {\n bubbles: true,\n cancelable: true\n });\n } else {\n evt = document.createEvent('Event');\n evt.initEvent(name, true, true);\n }\n evt.to = toEl || rootEl;\n evt.from = fromEl || rootEl;\n evt.item = targetEl || rootEl;\n evt.clone = cloneEl;\n evt.oldIndex = oldIndex;\n evt.newIndex = newIndex;\n evt.oldDraggableIndex = oldDraggableIndex;\n evt.newDraggableIndex = newDraggableIndex;\n evt.originalEvent = originalEvent;\n evt.pullMode = putSortable ? putSortable.lastPutMode : undefined;\n var allEventProperties = _objectSpread2(_objectSpread2({}, extraEventProperties), PluginManager.getEventProperties(name, sortable));\n for (var option in allEventProperties) {\n evt[option] = allEventProperties[option];\n }\n if (rootEl) {\n rootEl.dispatchEvent(evt);\n }\n if (options[onName]) {\n options[onName].call(sortable, evt);\n }\n}\n\nvar _excluded = [\"evt\"];\nvar pluginEvent = function pluginEvent(eventName, sortable) {\n var _ref = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {},\n originalEvent = _ref.evt,\n data = _objectWithoutProperties(_ref, _excluded);\n PluginManager.pluginEvent.bind(Sortable)(eventName, sortable, _objectSpread2({\n dragEl: dragEl,\n parentEl: parentEl,\n ghostEl: ghostEl,\n rootEl: rootEl,\n nextEl: nextEl,\n lastDownEl: lastDownEl,\n cloneEl: cloneEl,\n cloneHidden: cloneHidden,\n dragStarted: moved,\n putSortable: putSortable,\n activeSortable: Sortable.active,\n originalEvent: originalEvent,\n oldIndex: oldIndex,\n oldDraggableIndex: oldDraggableIndex,\n newIndex: newIndex,\n newDraggableIndex: newDraggableIndex,\n hideGhostForTarget: _hideGhostForTarget,\n unhideGhostForTarget: _unhideGhostForTarget,\n cloneNowHidden: function cloneNowHidden() {\n cloneHidden = true;\n },\n cloneNowShown: function cloneNowShown() {\n cloneHidden = false;\n },\n dispatchSortableEvent: function dispatchSortableEvent(name) {\n _dispatchEvent({\n sortable: sortable,\n name: name,\n originalEvent: originalEvent\n });\n }\n }, data));\n};\nfunction _dispatchEvent(info) {\n dispatchEvent(_objectSpread2({\n putSortable: putSortable,\n cloneEl: cloneEl,\n targetEl: dragEl,\n rootEl: rootEl,\n oldIndex: oldIndex,\n oldDraggableIndex: oldDraggableIndex,\n newIndex: newIndex,\n newDraggableIndex: newDraggableIndex\n }, info));\n}\nvar dragEl,\n parentEl,\n ghostEl,\n rootEl,\n nextEl,\n lastDownEl,\n cloneEl,\n cloneHidden,\n oldIndex,\n newIndex,\n oldDraggableIndex,\n newDraggableIndex,\n activeGroup,\n putSortable,\n awaitingDragStarted = false,\n ignoreNextClick = false,\n sortables = [],\n tapEvt,\n touchEvt,\n lastDx,\n lastDy,\n tapDistanceLeft,\n tapDistanceTop,\n moved,\n lastTarget,\n lastDirection,\n pastFirstInvertThresh = false,\n isCircumstantialInvert = false,\n targetMoveDistance,\n // For positioning ghost absolutely\n ghostRelativeParent,\n ghostRelativeParentInitialScroll = [],\n // (left, top)\n\n _silent = false,\n savedInputChecked = [];\n\n/** @const */\nvar documentExists = typeof document !== 'undefined',\n PositionGhostAbsolutely = IOS,\n CSSFloatProperty = Edge || IE11OrLess ? 'cssFloat' : 'float',\n // This will not pass for IE9, because IE9 DnD only works on anchors\n supportDraggable = documentExists && !ChromeForAndroid && !IOS && 'draggable' in document.createElement('div'),\n supportCssPointerEvents = function () {\n if (!documentExists) return;\n // false when <= IE11\n if (IE11OrLess) {\n return false;\n }\n var el = document.createElement('x');\n el.style.cssText = 'pointer-events:auto';\n return el.style.pointerEvents === 'auto';\n }(),\n _detectDirection = function _detectDirection(el, options) {\n var elCSS = css(el),\n elWidth = parseInt(elCSS.width) - parseInt(elCSS.paddingLeft) - parseInt(elCSS.paddingRight) - parseInt(elCSS.borderLeftWidth) - parseInt(elCSS.borderRightWidth),\n child1 = getChild(el, 0, options),\n child2 = getChild(el, 1, options),\n firstChildCSS = child1 && css(child1),\n secondChildCSS = child2 && css(child2),\n firstChildWidth = firstChildCSS && parseInt(firstChildCSS.marginLeft) + parseInt(firstChildCSS.marginRight) + getRect(child1).width,\n secondChildWidth = secondChildCSS && parseInt(secondChildCSS.marginLeft) + parseInt(secondChildCSS.marginRight) + getRect(child2).width;\n if (elCSS.display === 'flex') {\n return elCSS.flexDirection === 'column' || elCSS.flexDirection === 'column-reverse' ? 'vertical' : 'horizontal';\n }\n if (elCSS.display === 'grid') {\n return elCSS.gridTemplateColumns.split(' ').length <= 1 ? 'vertical' : 'horizontal';\n }\n if (child1 && firstChildCSS[\"float\"] && firstChildCSS[\"float\"] !== 'none') {\n var touchingSideChild2 = firstChildCSS[\"float\"] === 'left' ? 'left' : 'right';\n return child2 && (secondChildCSS.clear === 'both' || secondChildCSS.clear === touchingSideChild2) ? 'vertical' : 'horizontal';\n }\n return child1 && (firstChildCSS.display === 'block' || firstChildCSS.display === 'flex' || firstChildCSS.display === 'table' || firstChildCSS.display === 'grid' || firstChildWidth >= elWidth && elCSS[CSSFloatProperty] === 'none' || child2 && elCSS[CSSFloatProperty] === 'none' && firstChildWidth + secondChildWidth > elWidth) ? 'vertical' : 'horizontal';\n },\n _dragElInRowColumn = function _dragElInRowColumn(dragRect, targetRect, vertical) {\n var dragElS1Opp = vertical ? dragRect.left : dragRect.top,\n dragElS2Opp = vertical ? dragRect.right : dragRect.bottom,\n dragElOppLength = vertical ? dragRect.width : dragRect.height,\n targetS1Opp = vertical ? targetRect.left : targetRect.top,\n targetS2Opp = vertical ? targetRect.right : targetRect.bottom,\n targetOppLength = vertical ? targetRect.width : targetRect.height;\n return dragElS1Opp === targetS1Opp || dragElS2Opp === targetS2Opp || dragElS1Opp + dragElOppLength / 2 === targetS1Opp + targetOppLength / 2;\n },\n /**\r\n * Detects first nearest empty sortable to X and Y position using emptyInsertThreshold.\r\n * @param {Number} x X position\r\n * @param {Number} y Y position\r\n * @return {HTMLElement} Element of the first found nearest Sortable\r\n */\n _detectNearestEmptySortable = function _detectNearestEmptySortable(x, y) {\n var ret;\n sortables.some(function (sortable) {\n var threshold = sortable[expando].options.emptyInsertThreshold;\n if (!threshold || lastChild(sortable)) return;\n var rect = getRect(sortable),\n insideHorizontally = x >= rect.left - threshold && x <= rect.right + threshold,\n insideVertically = y >= rect.top - threshold && y <= rect.bottom + threshold;\n if (insideHorizontally && insideVertically) {\n return ret = sortable;\n }\n });\n return ret;\n },\n _prepareGroup = function _prepareGroup(options) {\n function toFn(value, pull) {\n return function (to, from, dragEl, evt) {\n var sameGroup = to.options.group.name && from.options.group.name && to.options.group.name === from.options.group.name;\n if (value == null && (pull || sameGroup)) {\n // Default pull value\n // Default pull and put value if same group\n return true;\n } else if (value == null || value === false) {\n return false;\n } else if (pull && value === 'clone') {\n return value;\n } else if (typeof value === 'function') {\n return toFn(value(to, from, dragEl, evt), pull)(to, from, dragEl, evt);\n } else {\n var otherGroup = (pull ? to : from).options.group.name;\n return value === true || typeof value === 'string' && value === otherGroup || value.join && value.indexOf(otherGroup) > -1;\n }\n };\n }\n var group = {};\n var originalGroup = options.group;\n if (!originalGroup || _typeof(originalGroup) != 'object') {\n originalGroup = {\n name: originalGroup\n };\n }\n group.name = originalGroup.name;\n group.checkPull = toFn(originalGroup.pull, true);\n group.checkPut = toFn(originalGroup.put);\n group.revertClone = originalGroup.revertClone;\n options.group = group;\n },\n _hideGhostForTarget = function _hideGhostForTarget() {\n if (!supportCssPointerEvents && ghostEl) {\n css(ghostEl, 'display', 'none');\n }\n },\n _unhideGhostForTarget = function _unhideGhostForTarget() {\n if (!supportCssPointerEvents && ghostEl) {\n css(ghostEl, 'display', '');\n }\n };\n\n// #1184 fix - Prevent click event on fallback if dragged but item not changed position\nif (documentExists && !ChromeForAndroid) {\n document.addEventListener('click', function (evt) {\n if (ignoreNextClick) {\n evt.preventDefault();\n evt.stopPropagation && evt.stopPropagation();\n evt.stopImmediatePropagation && evt.stopImmediatePropagation();\n ignoreNextClick = false;\n return false;\n }\n }, true);\n}\nvar nearestEmptyInsertDetectEvent = function nearestEmptyInsertDetectEvent(evt) {\n if (dragEl) {\n evt = evt.touches ? evt.touches[0] : evt;\n var nearest = _detectNearestEmptySortable(evt.clientX, evt.clientY);\n if (nearest) {\n // Create imitation event\n var event = {};\n for (var i in evt) {\n if (evt.hasOwnProperty(i)) {\n event[i] = evt[i];\n }\n }\n event.target = event.rootEl = nearest;\n event.preventDefault = void 0;\n event.stopPropagation = void 0;\n nearest[expando]._onDragOver(event);\n }\n }\n};\nvar _checkOutsideTargetEl = function _checkOutsideTargetEl(evt) {\n if (dragEl) {\n dragEl.parentNode[expando]._isOutsideThisEl(evt.target);\n }\n};\n\n/**\r\n * @class Sortable\r\n * @param {HTMLElement} el\r\n * @param {Object} [options]\r\n */\nfunction Sortable(el, options) {\n if (!(el && el.nodeType && el.nodeType === 1)) {\n throw \"Sortable: `el` must be an HTMLElement, not \".concat({}.toString.call(el));\n }\n this.el = el; // root element\n this.options = options = _extends({}, options);\n\n // Export instance\n el[expando] = this;\n var defaults = {\n group: null,\n sort: true,\n disabled: false,\n store: null,\n handle: null,\n draggable: /^[uo]l$/i.test(el.nodeName) ? '>li' : '>*',\n swapThreshold: 1,\n // percentage; 0 <= x <= 1\n invertSwap: false,\n // invert always\n invertedSwapThreshold: null,\n // will be set to same as swapThreshold if default\n removeCloneOnHide: true,\n direction: function direction() {\n return _detectDirection(el, this.options);\n },\n ghostClass: 'sortable-ghost',\n chosenClass: 'sortable-chosen',\n dragClass: 'sortable-drag',\n ignore: 'a, img',\n filter: null,\n preventOnFilter: true,\n animation: 0,\n easing: null,\n setData: function setData(dataTransfer, dragEl) {\n dataTransfer.setData('Text', dragEl.textContent);\n },\n dropBubble: false,\n dragoverBubble: false,\n dataIdAttr: 'data-id',\n delay: 0,\n delayOnTouchOnly: false,\n touchStartThreshold: (Number.parseInt ? Number : window).parseInt(window.devicePixelRatio, 10) || 1,\n forceFallback: false,\n fallbackClass: 'sortable-fallback',\n fallbackOnBody: false,\n fallbackTolerance: 0,\n fallbackOffset: {\n x: 0,\n y: 0\n },\n supportPointer: Sortable.supportPointer !== false && 'PointerEvent' in window && !Safari,\n emptyInsertThreshold: 5\n };\n PluginManager.initializePlugins(this, el, defaults);\n\n // Set default options\n for (var name in defaults) {\n !(name in options) && (options[name] = defaults[name]);\n }\n _prepareGroup(options);\n\n // Bind all private methods\n for (var fn in this) {\n if (fn.charAt(0) === '_' && typeof this[fn] === 'function') {\n this[fn] = this[fn].bind(this);\n }\n }\n\n // Setup drag mode\n this.nativeDraggable = options.forceFallback ? false : supportDraggable;\n if (this.nativeDraggable) {\n // Touch start threshold cannot be greater than the native dragstart threshold\n this.options.touchStartThreshold = 1;\n }\n\n // Bind events\n if (options.supportPointer) {\n on(el, 'pointerdown', this._onTapStart);\n } else {\n on(el, 'mousedown', this._onTapStart);\n on(el, 'touchstart', this._onTapStart);\n }\n if (this.nativeDraggable) {\n on(el, 'dragover', this);\n on(el, 'dragenter', this);\n }\n sortables.push(this.el);\n\n // Restore sorting\n options.store && options.store.get && this.sort(options.store.get(this) || []);\n\n // Add animation state manager\n _extends(this, AnimationStateManager());\n}\nSortable.prototype = /** @lends Sortable.prototype */{\n constructor: Sortable,\n _isOutsideThisEl: function _isOutsideThisEl(target) {\n if (!this.el.contains(target) && target !== this.el) {\n lastTarget = null;\n }\n },\n _getDirection: function _getDirection(evt, target) {\n return typeof this.options.direction === 'function' ? this.options.direction.call(this, evt, target, dragEl) : this.options.direction;\n },\n _onTapStart: function _onTapStart( /** Event|TouchEvent */evt) {\n if (!evt.cancelable) return;\n var _this = this,\n el = this.el,\n options = this.options,\n preventOnFilter = options.preventOnFilter,\n type = evt.type,\n touch = evt.touches && evt.touches[0] || evt.pointerType && evt.pointerType === 'touch' && evt,\n target = (touch || evt).target,\n originalTarget = evt.target.shadowRoot && (evt.path && evt.path[0] || evt.composedPath && evt.composedPath()[0]) || target,\n filter = options.filter;\n _saveInputCheckedState(el);\n\n // Don't trigger start event when an element is been dragged, otherwise the evt.oldindex always wrong when set option.group.\n if (dragEl) {\n return;\n }\n if (/mousedown|pointerdown/.test(type) && evt.button !== 0 || options.disabled) {\n return; // only left button and enabled\n }\n\n // cancel dnd if original target is content editable\n if (originalTarget.isContentEditable) {\n return;\n }\n\n // Safari ignores further event handling after mousedown\n if (!this.nativeDraggable && Safari && target && target.tagName.toUpperCase() === 'SELECT') {\n return;\n }\n target = closest(target, options.draggable, el, false);\n if (target && target.animated) {\n return;\n }\n if (lastDownEl === target) {\n // Ignoring duplicate `down`\n return;\n }\n\n // Get the index of the dragged element within its parent\n oldIndex = index(target);\n oldDraggableIndex = index(target, options.draggable);\n\n // Check filter\n if (typeof filter === 'function') {\n if (filter.call(this, evt, target, this)) {\n _dispatchEvent({\n sortable: _this,\n rootEl: originalTarget,\n name: 'filter',\n targetEl: target,\n toEl: el,\n fromEl: el\n });\n pluginEvent('filter', _this, {\n evt: evt\n });\n preventOnFilter && evt.cancelable && evt.preventDefault();\n return; // cancel dnd\n }\n } else if (filter) {\n filter = filter.split(',').some(function (criteria) {\n criteria = closest(originalTarget, criteria.trim(), el, false);\n if (criteria) {\n _dispatchEvent({\n sortable: _this,\n rootEl: criteria,\n name: 'filter',\n targetEl: target,\n fromEl: el,\n toEl: el\n });\n pluginEvent('filter', _this, {\n evt: evt\n });\n return true;\n }\n });\n if (filter) {\n preventOnFilter && evt.cancelable && evt.preventDefault();\n return; // cancel dnd\n }\n }\n if (options.handle && !closest(originalTarget, options.handle, el, false)) {\n return;\n }\n\n // Prepare `dragstart`\n this._prepareDragStart(evt, touch, target);\n },\n _prepareDragStart: function _prepareDragStart( /** Event */evt, /** Touch */touch, /** HTMLElement */target) {\n var _this = this,\n el = _this.el,\n options = _this.options,\n ownerDocument = el.ownerDocument,\n dragStartFn;\n if (target && !dragEl && target.parentNode === el) {\n var dragRect = getRect(target);\n rootEl = el;\n dragEl = target;\n parentEl = dragEl.parentNode;\n nextEl = dragEl.nextSibling;\n lastDownEl = target;\n activeGroup = options.group;\n Sortable.dragged = dragEl;\n tapEvt = {\n target: dragEl,\n clientX: (touch || evt).clientX,\n clientY: (touch || evt).clientY\n };\n tapDistanceLeft = tapEvt.clientX - dragRect.left;\n tapDistanceTop = tapEvt.clientY - dragRect.top;\n this._lastX = (touch || evt).clientX;\n this._lastY = (touch || evt).clientY;\n dragEl.style['will-change'] = 'all';\n dragStartFn = function dragStartFn() {\n pluginEvent('delayEnded', _this, {\n evt: evt\n });\n if (Sortable.eventCanceled) {\n _this._onDrop();\n return;\n }\n // Delayed drag has been triggered\n // we can re-enable the events: touchmove/mousemove\n _this._disableDelayedDragEvents();\n if (!FireFox && _this.nativeDraggable) {\n dragEl.draggable = true;\n }\n\n // Bind the events: dragstart/dragend\n _this._triggerDragStart(evt, touch);\n\n // Drag start event\n _dispatchEvent({\n sortable: _this,\n name: 'choose',\n originalEvent: evt\n });\n\n // Chosen item\n toggleClass(dragEl, options.chosenClass, true);\n };\n\n // Disable \"draggable\"\n options.ignore.split(',').forEach(function (criteria) {\n find(dragEl, criteria.trim(), _disableDraggable);\n });\n on(ownerDocument, 'dragover', nearestEmptyInsertDetectEvent);\n on(ownerDocument, 'mousemove', nearestEmptyInsertDetectEvent);\n on(ownerDocument, 'touchmove', nearestEmptyInsertDetectEvent);\n on(ownerDocument, 'mouseup', _this._onDrop);\n on(ownerDocument, 'touchend', _this._onDrop);\n on(ownerDocument, 'touchcancel', _this._onDrop);\n\n // Make dragEl draggable (must be before delay for FireFox)\n if (FireFox && this.nativeDraggable) {\n this.options.touchStartThreshold = 4;\n dragEl.draggable = true;\n }\n pluginEvent('delayStart', this, {\n evt: evt\n });\n\n // Delay is impossible for native DnD in Edge or IE\n if (options.delay && (!options.delayOnTouchOnly || touch) && (!this.nativeDraggable || !(Edge || IE11OrLess))) {\n if (Sortable.eventCanceled) {\n this._onDrop();\n return;\n }\n // If the user moves the pointer or let go the click or touch\n // before the delay has been reached:\n // disable the delayed drag\n on(ownerDocument, 'mouseup', _this._disableDelayedDrag);\n on(ownerDocument, 'touchend', _this._disableDelayedDrag);\n on(ownerDocument, 'touchcancel', _this._disableDelayedDrag);\n on(ownerDocument, 'mousemove', _this._delayedDragTouchMoveHandler);\n on(ownerDocument, 'touchmove', _this._delayedDragTouchMoveHandler);\n options.supportPointer && on(ownerDocument, 'pointermove', _this._delayedDragTouchMoveHandler);\n _this._dragStartTimer = setTimeout(dragStartFn, options.delay);\n } else {\n dragStartFn();\n }\n }\n },\n _delayedDragTouchMoveHandler: function _delayedDragTouchMoveHandler( /** TouchEvent|PointerEvent **/e) {\n var touch = e.touches ? e.touches[0] : e;\n if (Math.max(Math.abs(touch.clientX - this._lastX), Math.abs(touch.clientY - this._lastY)) >= Math.floor(this.options.touchStartThreshold / (this.nativeDraggable && window.devicePixelRatio || 1))) {\n this._disableDelayedDrag();\n }\n },\n _disableDelayedDrag: function _disableDelayedDrag() {\n dragEl && _disableDraggable(dragEl);\n clearTimeout(this._dragStartTimer);\n this._disableDelayedDragEvents();\n },\n _disableDelayedDragEvents: function _disableDelayedDragEvents() {\n var ownerDocument = this.el.ownerDocument;\n off(ownerDocument, 'mouseup', this._disableDelayedDrag);\n off(ownerDocument, 'touchend', this._disableDelayedDrag);\n off(ownerDocument, 'touchcancel', this._disableDelayedDrag);\n off(ownerDocument, 'mousemove', this._delayedDragTouchMoveHandler);\n off(ownerDocument, 'touchmove', this._delayedDragTouchMoveHandler);\n off(ownerDocument, 'pointermove', this._delayedDragTouchMoveHandler);\n },\n _triggerDragStart: function _triggerDragStart( /** Event */evt, /** Touch */touch) {\n touch = touch || evt.pointerType == 'touch' && evt;\n if (!this.nativeDraggable || touch) {\n if (this.options.supportPointer) {\n on(document, 'pointermove', this._onTouchMove);\n } else if (touch) {\n on(document, 'touchmove', this._onTouchMove);\n } else {\n on(document, 'mousemove', this._onTouchMove);\n }\n } else {\n on(dragEl, 'dragend', this);\n on(rootEl, 'dragstart', this._onDragStart);\n }\n try {\n if (document.selection) {\n // Timeout neccessary for IE9\n _nextTick(function () {\n document.selection.empty();\n });\n } else {\n window.getSelection().removeAllRanges();\n }\n } catch (err) {}\n },\n _dragStarted: function _dragStarted(fallback, evt) {\n awaitingDragStarted = false;\n if (rootEl && dragEl) {\n pluginEvent('dragStarted', this, {\n evt: evt\n });\n if (this.nativeDraggable) {\n on(document, 'dragover', _checkOutsideTargetEl);\n }\n var options = this.options;\n\n // Apply effect\n !fallback && toggleClass(dragEl, options.dragClass, false);\n toggleClass(dragEl, options.ghostClass, true);\n Sortable.active = this;\n fallback && this._appendGhost();\n\n // Drag start event\n _dispatchEvent({\n sortable: this,\n name: 'start',\n originalEvent: evt\n });\n } else {\n this._nulling();\n }\n },\n _emulateDragOver: function _emulateDragOver() {\n if (touchEvt) {\n this._lastX = touchEvt.clientX;\n this._lastY = touchEvt.clientY;\n _hideGhostForTarget();\n var target = document.elementFromPoint(touchEvt.clientX, touchEvt.clientY);\n var parent = target;\n while (target && target.shadowRoot) {\n target = target.shadowRoot.elementFromPoint(touchEvt.clientX, touchEvt.clientY);\n if (target === parent) break;\n parent = target;\n }\n dragEl.parentNode[expando]._isOutsideThisEl(target);\n if (parent) {\n do {\n if (parent[expando]) {\n var inserted = void 0;\n inserted = parent[expando]._onDragOver({\n clientX: touchEvt.clientX,\n clientY: touchEvt.clientY,\n target: target,\n rootEl: parent\n });\n if (inserted && !this.options.dragoverBubble) {\n break;\n }\n }\n target = parent; // store last element\n }\n /* jshint boss:true */ while (parent = parent.parentNode);\n }\n _unhideGhostForTarget();\n }\n },\n _onTouchMove: function _onTouchMove( /**TouchEvent*/evt) {\n if (tapEvt) {\n var options = this.options,\n fallbackTolerance = options.fallbackTolerance,\n fallbackOffset = options.fallbackOffset,\n touch = evt.touches ? evt.touches[0] : evt,\n ghostMatrix = ghostEl && matrix(ghostEl, true),\n scaleX = ghostEl && ghostMatrix && ghostMatrix.a,\n scaleY = ghostEl && ghostMatrix && ghostMatrix.d,\n relativeScrollOffset = PositionGhostAbsolutely && ghostRelativeParent && getRelativeScrollOffset(ghostRelativeParent),\n dx = (touch.clientX - tapEvt.clientX + fallbackOffset.x) / (scaleX || 1) + (relativeScrollOffset ? relativeScrollOffset[0] - ghostRelativeParentInitialScroll[0] : 0) / (scaleX || 1),\n dy = (touch.clientY - tapEvt.clientY + fallbackOffset.y) / (scaleY || 1) + (relativeScrollOffset ? relativeScrollOffset[1] - ghostRelativeParentInitialScroll[1] : 0) / (scaleY || 1);\n\n // only set the status to dragging, when we are actually dragging\n if (!Sortable.active && !awaitingDragStarted) {\n if (fallbackTolerance && Math.max(Math.abs(touch.clientX - this._lastX), Math.abs(touch.clientY - this._lastY)) < fallbackTolerance) {\n return;\n }\n this._onDragStart(evt, true);\n }\n if (ghostEl) {\n if (ghostMatrix) {\n ghostMatrix.e += dx - (lastDx || 0);\n ghostMatrix.f += dy - (lastDy || 0);\n } else {\n ghostMatrix = {\n a: 1,\n b: 0,\n c: 0,\n d: 1,\n e: dx,\n f: dy\n };\n }\n var cssMatrix = \"matrix(\".concat(ghostMatrix.a, \",\").concat(ghostMatrix.b, \",\").concat(ghostMatrix.c, \",\").concat(ghostMatrix.d, \",\").concat(ghostMatrix.e, \",\").concat(ghostMatrix.f, \")\");\n css(ghostEl, 'webkitTransform', cssMatrix);\n css(ghostEl, 'mozTransform', cssMatrix);\n css(ghostEl, 'msTransform', cssMatrix);\n css(ghostEl, 'transform', cssMatrix);\n lastDx = dx;\n lastDy = dy;\n touchEvt = touch;\n }\n evt.cancelable && evt.preventDefault();\n }\n },\n _appendGhost: function _appendGhost() {\n // Bug if using scale(): https://stackoverflow.com/questions/2637058\n // Not being adjusted for\n if (!ghostEl) {\n var container = this.options.fallbackOnBody ? document.body : rootEl,\n rect = getRect(dragEl, true, PositionGhostAbsolutely, true, container),\n options = this.options;\n\n // Position absolutely\n if (PositionGhostAbsolutely) {\n // Get relatively positioned parent\n ghostRelativeParent = container;\n while (css(ghostRelativeParent, 'position') === 'static' && css(ghostRelativeParent, 'transform') === 'none' && ghostRelativeParent !== document) {\n ghostRelativeParent = ghostRelativeParent.parentNode;\n }\n if (ghostRelativeParent !== document.body && ghostRelativeParent !== document.documentElement) {\n if (ghostRelativeParent === document) ghostRelativeParent = getWindowScrollingElement();\n rect.top += ghostRelativeParent.scrollTop;\n rect.left += ghostRelativeParent.scrollLeft;\n } else {\n ghostRelativeParent = getWindowScrollingElement();\n }\n ghostRelativeParentInitialScroll = getRelativeScrollOffset(ghostRelativeParent);\n }\n ghostEl = dragEl.cloneNode(true);\n toggleClass(ghostEl, options.ghostClass, false);\n toggleClass(ghostEl, options.fallbackClass, true);\n toggleClass(ghostEl, options.dragClass, true);\n css(ghostEl, 'transition', '');\n css(ghostEl, 'transform', '');\n css(ghostEl, 'box-sizing', 'border-box');\n css(ghostEl, 'margin', 0);\n css(ghostEl, 'top', rect.top);\n css(ghostEl, 'left', rect.left);\n css(ghostEl, 'width', rect.width);\n css(ghostEl, 'height', rect.height);\n css(ghostEl, 'opacity', '0.8');\n css(ghostEl, 'position', PositionGhostAbsolutely ? 'absolute' : 'fixed');\n css(ghostEl, 'zIndex', '100000');\n css(ghostEl, 'pointerEvents', 'none');\n Sortable.ghost = ghostEl;\n container.appendChild(ghostEl);\n\n // Set transform-origin\n css(ghostEl, 'transform-origin', tapDistanceLeft / parseInt(ghostEl.style.width) * 100 + '% ' + tapDistanceTop / parseInt(ghostEl.style.height) * 100 + '%');\n }\n },\n _onDragStart: function _onDragStart( /**Event*/evt, /**boolean*/fallback) {\n var _this = this;\n var dataTransfer = evt.dataTransfer;\n var options = _this.options;\n pluginEvent('dragStart', this, {\n evt: evt\n });\n if (Sortable.eventCanceled) {\n this._onDrop();\n return;\n }\n pluginEvent('setupClone', this);\n if (!Sortable.eventCanceled) {\n cloneEl = clone(dragEl);\n cloneEl.removeAttribute(\"id\");\n cloneEl.draggable = false;\n cloneEl.style['will-change'] = '';\n this._hideClone();\n toggleClass(cloneEl, this.options.chosenClass, false);\n Sortable.clone = cloneEl;\n }\n\n // #1143: IFrame support workaround\n _this.cloneId = _nextTick(function () {\n pluginEvent('clone', _this);\n if (Sortable.eventCanceled) return;\n if (!_this.options.removeCloneOnHide) {\n rootEl.insertBefore(cloneEl, dragEl);\n }\n _this._hideClone();\n _dispatchEvent({\n sortable: _this,\n name: 'clone'\n });\n });\n !fallback && toggleClass(dragEl, options.dragClass, true);\n\n // Set proper drop events\n if (fallback) {\n ignoreNextClick = true;\n _this._loopId = setInterval(_this._emulateDragOver, 50);\n } else {\n // Undo what was set in _prepareDragStart before drag started\n off(document, 'mouseup', _this._onDrop);\n off(document, 'touchend', _this._onDrop);\n off(document, 'touchcancel', _this._onDrop);\n if (dataTransfer) {\n dataTransfer.effectAllowed = 'move';\n options.setData && options.setData.call(_this, dataTransfer, dragEl);\n }\n on(document, 'drop', _this);\n\n // #1276 fix:\n css(dragEl, 'transform', 'translateZ(0)');\n }\n awaitingDragStarted = true;\n _this._dragStartId = _nextTick(_this._dragStarted.bind(_this, fallback, evt));\n on(document, 'selectstart', _this);\n moved = true;\n if (Safari) {\n css(document.body, 'user-select', 'none');\n }\n },\n // Returns true - if no further action is needed (either inserted or another condition)\n _onDragOver: function _onDragOver( /**Event*/evt) {\n var el = this.el,\n target = evt.target,\n dragRect,\n targetRect,\n revert,\n options = this.options,\n group = options.group,\n activeSortable = Sortable.active,\n isOwner = activeGroup === group,\n canSort = options.sort,\n fromSortable = putSortable || activeSortable,\n vertical,\n _this = this,\n completedFired = false;\n if (_silent) return;\n function dragOverEvent(name, extra) {\n pluginEvent(name, _this, _objectSpread2({\n evt: evt,\n isOwner: isOwner,\n axis: vertical ? 'vertical' : 'horizontal',\n revert: revert,\n dragRect: dragRect,\n targetRect: targetRect,\n canSort: canSort,\n fromSortable: fromSortable,\n target: target,\n completed: completed,\n onMove: function onMove(target, after) {\n return _onMove(rootEl, el, dragEl, dragRect, target, getRect(target), evt, after);\n },\n changed: changed\n }, extra));\n }\n\n // Capture animation state\n function capture() {\n dragOverEvent('dragOverAnimationCapture');\n _this.captureAnimationState();\n if (_this !== fromSortable) {\n fromSortable.captureAnimationState();\n }\n }\n\n // Return invocation when dragEl is inserted (or completed)\n function completed(insertion) {\n dragOverEvent('dragOverCompleted', {\n insertion: insertion\n });\n if (insertion) {\n // Clones must be hidden before folding animation to capture dragRectAbsolute properly\n if (isOwner) {\n activeSortable._hideClone();\n } else {\n activeSortable._showClone(_this);\n }\n if (_this !== fromSortable) {\n // Set ghost class to new sortable's ghost class\n toggleClass(dragEl, putSortable ? putSortable.options.ghostClass : activeSortable.options.ghostClass, false);\n toggleClass(dragEl, options.ghostClass, true);\n }\n if (putSortable !== _this && _this !== Sortable.active) {\n putSortable = _this;\n } else if (_this === Sortable.active && putSortable) {\n putSortable = null;\n }\n\n // Animation\n if (fromSortable === _this) {\n _this._ignoreWhileAnimating = target;\n }\n _this.animateAll(function () {\n dragOverEvent('dragOverAnimationComplete');\n _this._ignoreWhileAnimating = null;\n });\n if (_this !== fromSortable) {\n fromSortable.animateAll();\n fromSortable._ignoreWhileAnimating = null;\n }\n }\n\n // Null lastTarget if it is not inside a previously swapped element\n if (target === dragEl && !dragEl.animated || target === el && !target.animated) {\n lastTarget = null;\n }\n\n // no bubbling and not fallback\n if (!options.dragoverBubble && !evt.rootEl && target !== document) {\n dragEl.parentNode[expando]._isOutsideThisEl(evt.target);\n\n // Do not detect for empty insert if already inserted\n !insertion && nearestEmptyInsertDetectEvent(evt);\n }\n !options.dragoverBubble && evt.stopPropagation && evt.stopPropagation();\n return completedFired = true;\n }\n\n // Call when dragEl has been inserted\n function changed() {\n newIndex = index(dragEl);\n newDraggableIndex = index(dragEl, options.draggable);\n _dispatchEvent({\n sortable: _this,\n name: 'change',\n toEl: el,\n newIndex: newIndex,\n newDraggableIndex: newDraggableIndex,\n originalEvent: evt\n });\n }\n if (evt.preventDefault !== void 0) {\n evt.cancelable && evt.preventDefault();\n }\n target = closest(target, options.draggable, el, true);\n dragOverEvent('dragOver');\n if (Sortable.eventCanceled) return completedFired;\n if (dragEl.contains(evt.target) || target.animated && target.animatingX && target.animatingY || _this._ignoreWhileAnimating === target) {\n return completed(false);\n }\n ignoreNextClick = false;\n if (activeSortable && !options.disabled && (isOwner ? canSort || (revert = parentEl !== rootEl) // Reverting item into the original list\n : putSortable === this || (this.lastPutMode = activeGroup.checkPull(this, activeSortable, dragEl, evt)) && group.checkPut(this, activeSortable, dragEl, evt))) {\n vertical = this._getDirection(evt, target) === 'vertical';\n dragRect = getRect(dragEl);\n dragOverEvent('dragOverValid');\n if (Sortable.eventCanceled) return completedFired;\n if (revert) {\n parentEl = rootEl; // actualization\n capture();\n this._hideClone();\n dragOverEvent('revert');\n if (!Sortable.eventCanceled) {\n if (nextEl) {\n rootEl.insertBefore(dragEl, nextEl);\n } else {\n rootEl.appendChild(dragEl);\n }\n }\n return completed(true);\n }\n var elLastChild = lastChild(el, options.draggable);\n if (!elLastChild || _ghostIsLast(evt, vertical, this) && !elLastChild.animated) {\n // Insert to end of list\n\n // If already at end of list: Do not insert\n if (elLastChild === dragEl) {\n return completed(false);\n }\n\n // if there is a last element, it is the target\n if (elLastChild && el === evt.target) {\n target = elLastChild;\n }\n if (target) {\n targetRect = getRect(target);\n }\n if (_onMove(rootEl, el, dragEl, dragRect, target, targetRect, evt, !!target) !== false) {\n capture();\n if (elLastChild && elLastChild.nextSibling) {\n // the last draggable element is not the last node\n el.insertBefore(dragEl, elLastChild.nextSibling);\n } else {\n el.appendChild(dragEl);\n }\n parentEl = el; // actualization\n\n changed();\n return completed(true);\n }\n } else if (elLastChild && _ghostIsFirst(evt, vertical, this)) {\n // Insert to start of list\n var firstChild = getChild(el, 0, options, true);\n if (firstChild === dragEl) {\n return completed(false);\n }\n target = firstChild;\n targetRect = getRect(target);\n if (_onMove(rootEl, el, dragEl, dragRect, target, targetRect, evt, false) !== false) {\n capture();\n el.insertBefore(dragEl, firstChild);\n parentEl = el; // actualization\n\n changed();\n return completed(true);\n }\n } else if (target.parentNode === el) {\n targetRect = getRect(target);\n var direction = 0,\n targetBeforeFirstSwap,\n differentLevel = dragEl.parentNode !== el,\n differentRowCol = !_dragElInRowColumn(dragEl.animated && dragEl.toRect || dragRect, target.animated && target.toRect || targetRect, vertical),\n side1 = vertical ? 'top' : 'left',\n scrolledPastTop = isScrolledPast(target, 'top', 'top') || isScrolledPast(dragEl, 'top', 'top'),\n scrollBefore = scrolledPastTop ? scrolledPastTop.scrollTop : void 0;\n if (lastTarget !== target) {\n targetBeforeFirstSwap = targetRect[side1];\n pastFirstInvertThresh = false;\n isCircumstantialInvert = !differentRowCol && options.invertSwap || differentLevel;\n }\n direction = _getSwapDirection(evt, target, targetRect, vertical, differentRowCol ? 1 : options.swapThreshold, options.invertedSwapThreshold == null ? options.swapThreshold : options.invertedSwapThreshold, isCircumstantialInvert, lastTarget === target);\n var sibling;\n if (direction !== 0) {\n // Check if target is beside dragEl in respective direction (ignoring hidden elements)\n var dragIndex = index(dragEl);\n do {\n dragIndex -= direction;\n sibling = parentEl.children[dragIndex];\n } while (sibling && (css(sibling, 'display') === 'none' || sibling === ghostEl));\n }\n // If dragEl is already beside target: Do not insert\n if (direction === 0 || sibling === target) {\n return completed(false);\n }\n lastTarget = target;\n lastDirection = direction;\n var nextSibling = target.nextElementSibling,\n after = false;\n after = direction === 1;\n var moveVector = _onMove(rootEl, el, dragEl, dragRect, target, targetRect, evt, after);\n if (moveVector !== false) {\n if (moveVector === 1 || moveVector === -1) {\n after = moveVector === 1;\n }\n _silent = true;\n setTimeout(_unsilent, 30);\n capture();\n if (after && !nextSibling) {\n el.appendChild(dragEl);\n } else {\n target.parentNode.insertBefore(dragEl, after ? nextSibling : target);\n }\n\n // Undo chrome's scroll adjustment (has no effect on other browsers)\n if (scrolledPastTop) {\n scrollBy(scrolledPastTop, 0, scrollBefore - scrolledPastTop.scrollTop);\n }\n parentEl = dragEl.parentNode; // actualization\n\n // must be done before animation\n if (targetBeforeFirstSwap !== undefined && !isCircumstantialInvert) {\n targetMoveDistance = Math.abs(targetBeforeFirstSwap - getRect(target)[side1]);\n }\n changed();\n return completed(true);\n }\n }\n if (el.contains(dragEl)) {\n return completed(false);\n }\n }\n return false;\n },\n _ignoreWhileAnimating: null,\n _offMoveEvents: function _offMoveEvents() {\n off(document, 'mousemove', this._onTouchMove);\n off(document, 'touchmove', this._onTouchMove);\n off(document, 'pointermove', this._onTouchMove);\n off(document, 'dragover', nearestEmptyInsertDetectEvent);\n off(document, 'mousemove', nearestEmptyInsertDetectEvent);\n off(document, 'touchmove', nearestEmptyInsertDetectEvent);\n },\n _offUpEvents: function _offUpEvents() {\n var ownerDocument = this.el.ownerDocument;\n off(ownerDocument, 'mouseup', this._onDrop);\n off(ownerDocument, 'touchend', this._onDrop);\n off(ownerDocument, 'pointerup', this._onDrop);\n off(ownerDocument, 'touchcancel', this._onDrop);\n off(document, 'selectstart', this);\n },\n _onDrop: function _onDrop( /**Event*/evt) {\n var el = this.el,\n options = this.options;\n\n // Get the index of the dragged element within its parent\n newIndex = index(dragEl);\n newDraggableIndex = index(dragEl, options.draggable);\n pluginEvent('drop', this, {\n evt: evt\n });\n parentEl = dragEl && dragEl.parentNode;\n\n // Get again after plugin event\n newIndex = index(dragEl);\n newDraggableIndex = index(dragEl, options.draggable);\n if (Sortable.eventCanceled) {\n this._nulling();\n return;\n }\n awaitingDragStarted = false;\n isCircumstantialInvert = false;\n pastFirstInvertThresh = false;\n clearInterval(this._loopId);\n clearTimeout(this._dragStartTimer);\n _cancelNextTick(this.cloneId);\n _cancelNextTick(this._dragStartId);\n\n // Unbind events\n if (this.nativeDraggable) {\n off(document, 'drop', this);\n off(el, 'dragstart', this._onDragStart);\n }\n this._offMoveEvents();\n this._offUpEvents();\n if (Safari) {\n css(document.body, 'user-select', '');\n }\n css(dragEl, 'transform', '');\n if (evt) {\n if (moved) {\n evt.cancelable && evt.preventDefault();\n !options.dropBubble && evt.stopPropagation();\n }\n ghostEl && ghostEl.parentNode && ghostEl.parentNode.removeChild(ghostEl);\n if (rootEl === parentEl || putSortable && putSortable.lastPutMode !== 'clone') {\n // Remove clone(s)\n cloneEl && cloneEl.parentNode && cloneEl.parentNode.removeChild(cloneEl);\n }\n if (dragEl) {\n if (this.nativeDraggable) {\n off(dragEl, 'dragend', this);\n }\n _disableDraggable(dragEl);\n dragEl.style['will-change'] = '';\n\n // Remove classes\n // ghostClass is added in dragStarted\n if (moved && !awaitingDragStarted) {\n toggleClass(dragEl, putSortable ? putSortable.options.ghostClass : this.options.ghostClass, false);\n }\n toggleClass(dragEl, this.options.chosenClass, false);\n\n // Drag stop event\n _dispatchEvent({\n sortable: this,\n name: 'unchoose',\n toEl: parentEl,\n newIndex: null,\n newDraggableIndex: null,\n originalEvent: evt\n });\n if (rootEl !== parentEl) {\n if (newIndex >= 0) {\n // Add event\n _dispatchEvent({\n rootEl: parentEl,\n name: 'add',\n toEl: parentEl,\n fromEl: rootEl,\n originalEvent: evt\n });\n\n // Remove event\n _dispatchEvent({\n sortable: this,\n name: 'remove',\n toEl: parentEl,\n originalEvent: evt\n });\n\n // drag from one list and drop into another\n _dispatchEvent({\n rootEl: parentEl,\n name: 'sort',\n toEl: parentEl,\n fromEl: rootEl,\n originalEvent: evt\n });\n _dispatchEvent({\n sortable: this,\n name: 'sort',\n toEl: parentEl,\n originalEvent: evt\n });\n }\n putSortable && putSortable.save();\n } else {\n if (newIndex !== oldIndex) {\n if (newIndex >= 0) {\n // drag & drop within the same list\n _dispatchEvent({\n sortable: this,\n name: 'update',\n toEl: parentEl,\n originalEvent: evt\n });\n _dispatchEvent({\n sortable: this,\n name: 'sort',\n toEl: parentEl,\n originalEvent: evt\n });\n }\n }\n }\n if (Sortable.active) {\n /* jshint eqnull:true */\n if (newIndex == null || newIndex === -1) {\n newIndex = oldIndex;\n newDraggableIndex = oldDraggableIndex;\n }\n _dispatchEvent({\n sortable: this,\n name: 'end',\n toEl: parentEl,\n originalEvent: evt\n });\n\n // Save sorting\n this.save();\n }\n }\n }\n this._nulling();\n },\n _nulling: function _nulling() {\n pluginEvent('nulling', this);\n rootEl = dragEl = parentEl = ghostEl = nextEl = cloneEl = lastDownEl = cloneHidden = tapEvt = touchEvt = moved = newIndex = newDraggableIndex = oldIndex = oldDraggableIndex = lastTarget = lastDirection = putSortable = activeGroup = Sortable.dragged = Sortable.ghost = Sortable.clone = Sortable.active = null;\n savedInputChecked.forEach(function (el) {\n el.checked = true;\n });\n savedInputChecked.length = lastDx = lastDy = 0;\n },\n handleEvent: function handleEvent( /**Event*/evt) {\n switch (evt.type) {\n case 'drop':\n case 'dragend':\n this._onDrop(evt);\n break;\n case 'dragenter':\n case 'dragover':\n if (dragEl) {\n this._onDragOver(evt);\n _globalDragOver(evt);\n }\n break;\n case 'selectstart':\n evt.preventDefault();\n break;\n }\n },\n /**\r\n * Serializes the item into an array of string.\r\n * @returns {String[]}\r\n */\n toArray: function toArray() {\n var order = [],\n el,\n children = this.el.children,\n i = 0,\n n = children.length,\n options = this.options;\n for (; i < n; i++) {\n el = children[i];\n if (closest(el, options.draggable, this.el, false)) {\n order.push(el.getAttribute(options.dataIdAttr) || _generateId(el));\n }\n }\n return order;\n },\n /**\r\n * Sorts the elements according to the array.\r\n * @param {String[]} order order of the items\r\n */\n sort: function sort(order, useAnimation) {\n var items = {},\n rootEl = this.el;\n this.toArray().forEach(function (id, i) {\n var el = rootEl.children[i];\n if (closest(el, this.options.draggable, rootEl, false)) {\n items[id] = el;\n }\n }, this);\n useAnimation && this.captureAnimationState();\n order.forEach(function (id) {\n if (items[id]) {\n rootEl.removeChild(items[id]);\n rootEl.appendChild(items[id]);\n }\n });\n useAnimation && this.animateAll();\n },\n /**\r\n * Save the current sorting\r\n */\n save: function save() {\n var store = this.options.store;\n store && store.set && store.set(this);\n },\n /**\r\n * For each element in the set, get the first element that matches the selector by testing the element itself and traversing up through its ancestors in the DOM tree.\r\n * @param {HTMLElement} el\r\n * @param {String} [selector] default: `options.draggable`\r\n * @returns {HTMLElement|null}\r\n */\n closest: function closest$1(el, selector) {\n return closest(el, selector || this.options.draggable, this.el, false);\n },\n /**\r\n * Set/get option\r\n * @param {string} name\r\n * @param {*} [value]\r\n * @returns {*}\r\n */\n option: function option(name, value) {\n var options = this.options;\n if (value === void 0) {\n return options[name];\n } else {\n var modifiedValue = PluginManager.modifyOption(this, name, value);\n if (typeof modifiedValue !== 'undefined') {\n options[name] = modifiedValue;\n } else {\n options[name] = value;\n }\n if (name === 'group') {\n _prepareGroup(options);\n }\n }\n },\n /**\r\n * Destroy\r\n */\n destroy: function destroy() {\n pluginEvent('destroy', this);\n var el = this.el;\n el[expando] = null;\n off(el, 'mousedown', this._onTapStart);\n off(el, 'touchstart', this._onTapStart);\n off(el, 'pointerdown', this._onTapStart);\n if (this.nativeDraggable) {\n off(el, 'dragover', this);\n off(el, 'dragenter', this);\n }\n // Remove draggable attributes\n Array.prototype.forEach.call(el.querySelectorAll('[draggable]'), function (el) {\n el.removeAttribute('draggable');\n });\n this._onDrop();\n this._disableDelayedDragEvents();\n sortables.splice(sortables.indexOf(this.el), 1);\n this.el = el = null;\n },\n _hideClone: function _hideClone() {\n if (!cloneHidden) {\n pluginEvent('hideClone', this);\n if (Sortable.eventCanceled) return;\n css(cloneEl, 'display', 'none');\n if (this.options.removeCloneOnHide && cloneEl.parentNode) {\n cloneEl.parentNode.removeChild(cloneEl);\n }\n cloneHidden = true;\n }\n },\n _showClone: function _showClone(putSortable) {\n if (putSortable.lastPutMode !== 'clone') {\n this._hideClone();\n return;\n }\n if (cloneHidden) {\n pluginEvent('showClone', this);\n if (Sortable.eventCanceled) return;\n\n // show clone at dragEl or original position\n if (dragEl.parentNode == rootEl && !this.options.group.revertClone) {\n rootEl.insertBefore(cloneEl, dragEl);\n } else if (nextEl) {\n rootEl.insertBefore(cloneEl, nextEl);\n } else {\n rootEl.appendChild(cloneEl);\n }\n if (this.options.group.revertClone) {\n this.animate(dragEl, cloneEl);\n }\n css(cloneEl, 'display', '');\n cloneHidden = false;\n }\n }\n};\nfunction _globalDragOver( /**Event*/evt) {\n if (evt.dataTransfer) {\n evt.dataTransfer.dropEffect = 'move';\n }\n evt.cancelable && evt.preventDefault();\n}\nfunction _onMove(fromEl, toEl, dragEl, dragRect, targetEl, targetRect, originalEvent, willInsertAfter) {\n var evt,\n sortable = fromEl[expando],\n onMoveFn = sortable.options.onMove,\n retVal;\n // Support for new CustomEvent feature\n if (window.CustomEvent && !IE11OrLess && !Edge) {\n evt = new CustomEvent('move', {\n bubbles: true,\n cancelable: true\n });\n } else {\n evt = document.createEvent('Event');\n evt.initEvent('move', true, true);\n }\n evt.to = toEl;\n evt.from = fromEl;\n evt.dragged = dragEl;\n evt.draggedRect = dragRect;\n evt.related = targetEl || toEl;\n evt.relatedRect = targetRect || getRect(toEl);\n evt.willInsertAfter = willInsertAfter;\n evt.originalEvent = originalEvent;\n fromEl.dispatchEvent(evt);\n if (onMoveFn) {\n retVal = onMoveFn.call(sortable, evt, originalEvent);\n }\n return retVal;\n}\nfunction _disableDraggable(el) {\n el.draggable = false;\n}\nfunction _unsilent() {\n _silent = false;\n}\nfunction _ghostIsFirst(evt, vertical, sortable) {\n var firstElRect = getRect(getChild(sortable.el, 0, sortable.options, true));\n var childContainingRect = getChildContainingRectFromElement(sortable.el, sortable.options, ghostEl);\n var spacer = 10;\n return vertical ? evt.clientX < childContainingRect.left - spacer || evt.clientY < firstElRect.top && evt.clientX < firstElRect.right : evt.clientY < childContainingRect.top - spacer || evt.clientY < firstElRect.bottom && evt.clientX < firstElRect.left;\n}\nfunction _ghostIsLast(evt, vertical, sortable) {\n var lastElRect = getRect(lastChild(sortable.el, sortable.options.draggable));\n var childContainingRect = getChildContainingRectFromElement(sortable.el, sortable.options, ghostEl);\n var spacer = 10;\n return vertical ? evt.clientX > childContainingRect.right + spacer || evt.clientY > lastElRect.bottom && evt.clientX > lastElRect.left : evt.clientY > childContainingRect.bottom + spacer || evt.clientX > lastElRect.right && evt.clientY > lastElRect.top;\n}\nfunction _getSwapDirection(evt, target, targetRect, vertical, swapThreshold, invertedSwapThreshold, invertSwap, isLastTarget) {\n var mouseOnAxis = vertical ? evt.clientY : evt.clientX,\n targetLength = vertical ? targetRect.height : targetRect.width,\n targetS1 = vertical ? targetRect.top : targetRect.left,\n targetS2 = vertical ? targetRect.bottom : targetRect.right,\n invert = false;\n if (!invertSwap) {\n // Never invert or create dragEl shadow when target movemenet causes mouse to move past the end of regular swapThreshold\n if (isLastTarget && targetMoveDistance < targetLength * swapThreshold) {\n // multiplied only by swapThreshold because mouse will already be inside target by (1 - threshold) * targetLength / 2\n // check if past first invert threshold on side opposite of lastDirection\n if (!pastFirstInvertThresh && (lastDirection === 1 ? mouseOnAxis > targetS1 + targetLength * invertedSwapThreshold / 2 : mouseOnAxis < targetS2 - targetLength * invertedSwapThreshold / 2)) {\n // past first invert threshold, do not restrict inverted threshold to dragEl shadow\n pastFirstInvertThresh = true;\n }\n if (!pastFirstInvertThresh) {\n // dragEl shadow (target move distance shadow)\n if (lastDirection === 1 ? mouseOnAxis < targetS1 + targetMoveDistance // over dragEl shadow\n : mouseOnAxis > targetS2 - targetMoveDistance) {\n return -lastDirection;\n }\n } else {\n invert = true;\n }\n } else {\n // Regular\n if (mouseOnAxis > targetS1 + targetLength * (1 - swapThreshold) / 2 && mouseOnAxis < targetS2 - targetLength * (1 - swapThreshold) / 2) {\n return _getInsertDirection(target);\n }\n }\n }\n invert = invert || invertSwap;\n if (invert) {\n // Invert of regular\n if (mouseOnAxis < targetS1 + targetLength * invertedSwapThreshold / 2 || mouseOnAxis > targetS2 - targetLength * invertedSwapThreshold / 2) {\n return mouseOnAxis > targetS1 + targetLength / 2 ? 1 : -1;\n }\n }\n return 0;\n}\n\n/**\r\n * Gets the direction dragEl must be swapped relative to target in order to make it\r\n * seem that dragEl has been \"inserted\" into that element's position\r\n * @param {HTMLElement} target The target whose position dragEl is being inserted at\r\n * @return {Number} Direction dragEl must be swapped\r\n */\nfunction _getInsertDirection(target) {\n if (index(dragEl) < index(target)) {\n return 1;\n } else {\n return -1;\n }\n}\n\n/**\r\n * Generate id\r\n * @param {HTMLElement} el\r\n * @returns {String}\r\n * @private\r\n */\nfunction _generateId(el) {\n var str = el.tagName + el.className + el.src + el.href + el.textContent,\n i = str.length,\n sum = 0;\n while (i--) {\n sum += str.charCodeAt(i);\n }\n return sum.toString(36);\n}\nfunction _saveInputCheckedState(root) {\n savedInputChecked.length = 0;\n var inputs = root.getElementsByTagName('input');\n var idx = inputs.length;\n while (idx--) {\n var el = inputs[idx];\n el.checked && savedInputChecked.push(el);\n }\n}\nfunction _nextTick(fn) {\n return setTimeout(fn, 0);\n}\nfunction _cancelNextTick(id) {\n return clearTimeout(id);\n}\n\n// Fixed #973:\nif (documentExists) {\n on(document, 'touchmove', function (evt) {\n if ((Sortable.active || awaitingDragStarted) && evt.cancelable) {\n evt.preventDefault();\n }\n });\n}\n\n// Export utils\nSortable.utils = {\n on: on,\n off: off,\n css: css,\n find: find,\n is: function is(el, selector) {\n return !!closest(el, selector, el, false);\n },\n extend: extend,\n throttle: throttle,\n closest: closest,\n toggleClass: toggleClass,\n clone: clone,\n index: index,\n nextTick: _nextTick,\n cancelNextTick: _cancelNextTick,\n detectDirection: _detectDirection,\n getChild: getChild\n};\n\n/**\r\n * Get the Sortable instance of an element\r\n * @param {HTMLElement} element The element\r\n * @return {Sortable|undefined} The instance of Sortable\r\n */\nSortable.get = function (element) {\n return element[expando];\n};\n\n/**\r\n * Mount a plugin to Sortable\r\n * @param {...SortablePlugin|SortablePlugin[]} plugins Plugins being mounted\r\n */\nSortable.mount = function () {\n for (var _len = arguments.length, plugins = new Array(_len), _key = 0; _key < _len; _key++) {\n plugins[_key] = arguments[_key];\n }\n if (plugins[0].constructor === Array) plugins = plugins[0];\n plugins.forEach(function (plugin) {\n if (!plugin.prototype || !plugin.prototype.constructor) {\n throw \"Sortable: Mounted plugin must be a constructor function, not \".concat({}.toString.call(plugin));\n }\n if (plugin.utils) Sortable.utils = _objectSpread2(_objectSpread2({}, Sortable.utils), plugin.utils);\n PluginManager.mount(plugin);\n });\n};\n\n/**\r\n * Create sortable instance\r\n * @param {HTMLElement} el\r\n * @param {Object} [options]\r\n */\nSortable.create = function (el, options) {\n return new Sortable(el, options);\n};\n\n// Export\nSortable.version = version;\n\nvar autoScrolls = [],\n scrollEl,\n scrollRootEl,\n scrolling = false,\n lastAutoScrollX,\n lastAutoScrollY,\n touchEvt$1,\n pointerElemChangedInterval;\nfunction AutoScrollPlugin() {\n function AutoScroll() {\n this.defaults = {\n scroll: true,\n forceAutoScrollFallback: false,\n scrollSensitivity: 30,\n scrollSpeed: 10,\n bubbleScroll: true\n };\n\n // Bind all private methods\n for (var fn in this) {\n if (fn.charAt(0) === '_' && typeof this[fn] === 'function') {\n this[fn] = this[fn].bind(this);\n }\n }\n }\n AutoScroll.prototype = {\n dragStarted: function dragStarted(_ref) {\n var originalEvent = _ref.originalEvent;\n if (this.sortable.nativeDraggable) {\n on(document, 'dragover', this._handleAutoScroll);\n } else {\n if (this.options.supportPointer) {\n on(document, 'pointermove', this._handleFallbackAutoScroll);\n } else if (originalEvent.touches) {\n on(document, 'touchmove', this._handleFallbackAutoScroll);\n } else {\n on(document, 'mousemove', this._handleFallbackAutoScroll);\n }\n }\n },\n dragOverCompleted: function dragOverCompleted(_ref2) {\n var originalEvent = _ref2.originalEvent;\n // For when bubbling is canceled and using fallback (fallback 'touchmove' always reached)\n if (!this.options.dragOverBubble && !originalEvent.rootEl) {\n this._handleAutoScroll(originalEvent);\n }\n },\n drop: function drop() {\n if (this.sortable.nativeDraggable) {\n off(document, 'dragover', this._handleAutoScroll);\n } else {\n off(document, 'pointermove', this._handleFallbackAutoScroll);\n off(document, 'touchmove', this._handleFallbackAutoScroll);\n off(document, 'mousemove', this._handleFallbackAutoScroll);\n }\n clearPointerElemChangedInterval();\n clearAutoScrolls();\n cancelThrottle();\n },\n nulling: function nulling() {\n touchEvt$1 = scrollRootEl = scrollEl = scrolling = pointerElemChangedInterval = lastAutoScrollX = lastAutoScrollY = null;\n autoScrolls.length = 0;\n },\n _handleFallbackAutoScroll: function _handleFallbackAutoScroll(evt) {\n this._handleAutoScroll(evt, true);\n },\n _handleAutoScroll: function _handleAutoScroll(evt, fallback) {\n var _this = this;\n var x = (evt.touches ? evt.touches[0] : evt).clientX,\n y = (evt.touches ? evt.touches[0] : evt).clientY,\n elem = document.elementFromPoint(x, y);\n touchEvt$1 = evt;\n\n // IE does not seem to have native autoscroll,\n // Edge's autoscroll seems too conditional,\n // MACOS Safari does not have autoscroll,\n // Firefox and Chrome are good\n if (fallback || this.options.forceAutoScrollFallback || Edge || IE11OrLess || Safari) {\n autoScroll(evt, this.options, elem, fallback);\n\n // Listener for pointer element change\n var ogElemScroller = getParentAutoScrollElement(elem, true);\n if (scrolling && (!pointerElemChangedInterval || x !== lastAutoScrollX || y !== lastAutoScrollY)) {\n pointerElemChangedInterval && clearPointerElemChangedInterval();\n // Detect for pointer elem change, emulating native DnD behaviour\n pointerElemChangedInterval = setInterval(function () {\n var newElem = getParentAutoScrollElement(document.elementFromPoint(x, y), true);\n if (newElem !== ogElemScroller) {\n ogElemScroller = newElem;\n clearAutoScrolls();\n }\n autoScroll(evt, _this.options, newElem, fallback);\n }, 10);\n lastAutoScrollX = x;\n lastAutoScrollY = y;\n }\n } else {\n // if DnD is enabled (and browser has good autoscrolling), first autoscroll will already scroll, so get parent autoscroll of first autoscroll\n if (!this.options.bubbleScroll || getParentAutoScrollElement(elem, true) === getWindowScrollingElement()) {\n clearAutoScrolls();\n return;\n }\n autoScroll(evt, this.options, getParentAutoScrollElement(elem, false), false);\n }\n }\n };\n return _extends(AutoScroll, {\n pluginName: 'scroll',\n initializeByDefault: true\n });\n}\nfunction clearAutoScrolls() {\n autoScrolls.forEach(function (autoScroll) {\n clearInterval(autoScroll.pid);\n });\n autoScrolls = [];\n}\nfunction clearPointerElemChangedInterval() {\n clearInterval(pointerElemChangedInterval);\n}\nvar autoScroll = throttle(function (evt, options, rootEl, isFallback) {\n // Bug: https://bugzilla.mozilla.org/show_bug.cgi?id=505521\n if (!options.scroll) return;\n var x = (evt.touches ? evt.touches[0] : evt).clientX,\n y = (evt.touches ? evt.touches[0] : evt).clientY,\n sens = options.scrollSensitivity,\n speed = options.scrollSpeed,\n winScroller = getWindowScrollingElement();\n var scrollThisInstance = false,\n scrollCustomFn;\n\n // New scroll root, set scrollEl\n if (scrollRootEl !== rootEl) {\n scrollRootEl = rootEl;\n clearAutoScrolls();\n scrollEl = options.scroll;\n scrollCustomFn = options.scrollFn;\n if (scrollEl === true) {\n scrollEl = getParentAutoScrollElement(rootEl, true);\n }\n }\n var layersOut = 0;\n var currentParent = scrollEl;\n do {\n var el = currentParent,\n rect = getRect(el),\n top = rect.top,\n bottom = rect.bottom,\n left = rect.left,\n right = rect.right,\n width = rect.width,\n height = rect.height,\n canScrollX = void 0,\n canScrollY = void 0,\n scrollWidth = el.scrollWidth,\n scrollHeight = el.scrollHeight,\n elCSS = css(el),\n scrollPosX = el.scrollLeft,\n scrollPosY = el.scrollTop;\n if (el === winScroller) {\n canScrollX = width < scrollWidth && (elCSS.overflowX === 'auto' || elCSS.overflowX === 'scroll' || elCSS.overflowX === 'visible');\n canScrollY = height < scrollHeight && (elCSS.overflowY === 'auto' || elCSS.overflowY === 'scroll' || elCSS.overflowY === 'visible');\n } else {\n canScrollX = width < scrollWidth && (elCSS.overflowX === 'auto' || elCSS.overflowX === 'scroll');\n canScrollY = height < scrollHeight && (elCSS.overflowY === 'auto' || elCSS.overflowY === 'scroll');\n }\n var vx = canScrollX && (Math.abs(right - x) <= sens && scrollPosX + width < scrollWidth) - (Math.abs(left - x) <= sens && !!scrollPosX);\n var vy = canScrollY && (Math.abs(bottom - y) <= sens && scrollPosY + height < scrollHeight) - (Math.abs(top - y) <= sens && !!scrollPosY);\n if (!autoScrolls[layersOut]) {\n for (var i = 0; i <= layersOut; i++) {\n if (!autoScrolls[i]) {\n autoScrolls[i] = {};\n }\n }\n }\n if (autoScrolls[layersOut].vx != vx || autoScrolls[layersOut].vy != vy || autoScrolls[layersOut].el !== el) {\n autoScrolls[layersOut].el = el;\n autoScrolls[layersOut].vx = vx;\n autoScrolls[layersOut].vy = vy;\n clearInterval(autoScrolls[layersOut].pid);\n if (vx != 0 || vy != 0) {\n scrollThisInstance = true;\n /* jshint loopfunc:true */\n autoScrolls[layersOut].pid = setInterval(function () {\n // emulate drag over during autoscroll (fallback), emulating native DnD behaviour\n if (isFallback && this.layer === 0) {\n Sortable.active._onTouchMove(touchEvt$1); // To move ghost if it is positioned absolutely\n }\n var scrollOffsetY = autoScrolls[this.layer].vy ? autoScrolls[this.layer].vy * speed : 0;\n var scrollOffsetX = autoScrolls[this.layer].vx ? autoScrolls[this.layer].vx * speed : 0;\n if (typeof scrollCustomFn === 'function') {\n if (scrollCustomFn.call(Sortable.dragged.parentNode[expando], scrollOffsetX, scrollOffsetY, evt, touchEvt$1, autoScrolls[this.layer].el) !== 'continue') {\n return;\n }\n }\n scrollBy(autoScrolls[this.layer].el, scrollOffsetX, scrollOffsetY);\n }.bind({\n layer: layersOut\n }), 24);\n }\n }\n layersOut++;\n } while (options.bubbleScroll && currentParent !== winScroller && (currentParent = getParentAutoScrollElement(currentParent, false)));\n scrolling = scrollThisInstance; // in case another function catches scrolling as false in between when it is not\n}, 30);\n\nvar drop = function drop(_ref) {\n var originalEvent = _ref.originalEvent,\n putSortable = _ref.putSortable,\n dragEl = _ref.dragEl,\n activeSortable = _ref.activeSortable,\n dispatchSortableEvent = _ref.dispatchSortableEvent,\n hideGhostForTarget = _ref.hideGhostForTarget,\n unhideGhostForTarget = _ref.unhideGhostForTarget;\n if (!originalEvent) return;\n var toSortable = putSortable || activeSortable;\n hideGhostForTarget();\n var touch = originalEvent.changedTouches && originalEvent.changedTouches.length ? originalEvent.changedTouches[0] : originalEvent;\n var target = document.elementFromPoint(touch.clientX, touch.clientY);\n unhideGhostForTarget();\n if (toSortable && !toSortable.el.contains(target)) {\n dispatchSortableEvent('spill');\n this.onSpill({\n dragEl: dragEl,\n putSortable: putSortable\n });\n }\n};\nfunction Revert() {}\nRevert.prototype = {\n startIndex: null,\n dragStart: function dragStart(_ref2) {\n var oldDraggableIndex = _ref2.oldDraggableIndex;\n this.startIndex = oldDraggableIndex;\n },\n onSpill: function onSpill(_ref3) {\n var dragEl = _ref3.dragEl,\n putSortable = _ref3.putSortable;\n this.sortable.captureAnimationState();\n if (putSortable) {\n putSortable.captureAnimationState();\n }\n var nextSibling = getChild(this.sortable.el, this.startIndex, this.options);\n if (nextSibling) {\n this.sortable.el.insertBefore(dragEl, nextSibling);\n } else {\n this.sortable.el.appendChild(dragEl);\n }\n this.sortable.animateAll();\n if (putSortable) {\n putSortable.animateAll();\n }\n },\n drop: drop\n};\n_extends(Revert, {\n pluginName: 'revertOnSpill'\n});\nfunction Remove() {}\nRemove.prototype = {\n onSpill: function onSpill(_ref4) {\n var dragEl = _ref4.dragEl,\n putSortable = _ref4.putSortable;\n var parentSortable = putSortable || this.sortable;\n parentSortable.captureAnimationState();\n dragEl.parentNode && dragEl.parentNode.removeChild(dragEl);\n parentSortable.animateAll();\n },\n drop: drop\n};\n_extends(Remove, {\n pluginName: 'removeOnSpill'\n});\n\nvar lastSwapEl;\nfunction SwapPlugin() {\n function Swap() {\n this.defaults = {\n swapClass: 'sortable-swap-highlight'\n };\n }\n Swap.prototype = {\n dragStart: function dragStart(_ref) {\n var dragEl = _ref.dragEl;\n lastSwapEl = dragEl;\n },\n dragOverValid: function dragOverValid(_ref2) {\n var completed = _ref2.completed,\n target = _ref2.target,\n onMove = _ref2.onMove,\n activeSortable = _ref2.activeSortable,\n changed = _ref2.changed,\n cancel = _ref2.cancel;\n if (!activeSortable.options.swap) return;\n var el = this.sortable.el,\n options = this.options;\n if (target && target !== el) {\n var prevSwapEl = lastSwapEl;\n if (onMove(target) !== false) {\n toggleClass(target, options.swapClass, true);\n lastSwapEl = target;\n } else {\n lastSwapEl = null;\n }\n if (prevSwapEl && prevSwapEl !== lastSwapEl) {\n toggleClass(prevSwapEl, options.swapClass, false);\n }\n }\n changed();\n completed(true);\n cancel();\n },\n drop: function drop(_ref3) {\n var activeSortable = _ref3.activeSortable,\n putSortable = _ref3.putSortable,\n dragEl = _ref3.dragEl;\n var toSortable = putSortable || this.sortable;\n var options = this.options;\n lastSwapEl && toggleClass(lastSwapEl, options.swapClass, false);\n if (lastSwapEl && (options.swap || putSortable && putSortable.options.swap)) {\n if (dragEl !== lastSwapEl) {\n toSortable.captureAnimationState();\n if (toSortable !== activeSortable) activeSortable.captureAnimationState();\n swapNodes(dragEl, lastSwapEl);\n toSortable.animateAll();\n if (toSortable !== activeSortable) activeSortable.animateAll();\n }\n }\n },\n nulling: function nulling() {\n lastSwapEl = null;\n }\n };\n return _extends(Swap, {\n pluginName: 'swap',\n eventProperties: function eventProperties() {\n return {\n swapItem: lastSwapEl\n };\n }\n });\n}\nfunction swapNodes(n1, n2) {\n var p1 = n1.parentNode,\n p2 = n2.parentNode,\n i1,\n i2;\n if (!p1 || !p2 || p1.isEqualNode(n2) || p2.isEqualNode(n1)) return;\n i1 = index(n1);\n i2 = index(n2);\n if (p1.isEqualNode(p2) && i1 < i2) {\n i2++;\n }\n p1.insertBefore(n2, p1.children[i1]);\n p2.insertBefore(n1, p2.children[i2]);\n}\n\nvar multiDragElements = [],\n multiDragClones = [],\n lastMultiDragSelect,\n // for selection with modifier key down (SHIFT)\n multiDragSortable,\n initialFolding = false,\n // Initial multi-drag fold when drag started\n folding = false,\n // Folding any other time\n dragStarted = false,\n dragEl$1,\n clonesFromRect,\n clonesHidden;\nfunction MultiDragPlugin() {\n function MultiDrag(sortable) {\n // Bind all private methods\n for (var fn in this) {\n if (fn.charAt(0) === '_' && typeof this[fn] === 'function') {\n this[fn] = this[fn].bind(this);\n }\n }\n if (!sortable.options.avoidImplicitDeselect) {\n if (sortable.options.supportPointer) {\n on(document, 'pointerup', this._deselectMultiDrag);\n } else {\n on(document, 'mouseup', this._deselectMultiDrag);\n on(document, 'touchend', this._deselectMultiDrag);\n }\n }\n on(document, 'keydown', this._checkKeyDown);\n on(document, 'keyup', this._checkKeyUp);\n this.defaults = {\n selectedClass: 'sortable-selected',\n multiDragKey: null,\n avoidImplicitDeselect: false,\n setData: function setData(dataTransfer, dragEl) {\n var data = '';\n if (multiDragElements.length && multiDragSortable === sortable) {\n multiDragElements.forEach(function (multiDragElement, i) {\n data += (!i ? '' : ', ') + multiDragElement.textContent;\n });\n } else {\n data = dragEl.textContent;\n }\n dataTransfer.setData('Text', data);\n }\n };\n }\n MultiDrag.prototype = {\n multiDragKeyDown: false,\n isMultiDrag: false,\n delayStartGlobal: function delayStartGlobal(_ref) {\n var dragged = _ref.dragEl;\n dragEl$1 = dragged;\n },\n delayEnded: function delayEnded() {\n this.isMultiDrag = ~multiDragElements.indexOf(dragEl$1);\n },\n setupClone: function setupClone(_ref2) {\n var sortable = _ref2.sortable,\n cancel = _ref2.cancel;\n if (!this.isMultiDrag) return;\n for (var i = 0; i < multiDragElements.length; i++) {\n multiDragClones.push(clone(multiDragElements[i]));\n multiDragClones[i].sortableIndex = multiDragElements[i].sortableIndex;\n multiDragClones[i].draggable = false;\n multiDragClones[i].style['will-change'] = '';\n toggleClass(multiDragClones[i], this.options.selectedClass, false);\n multiDragElements[i] === dragEl$1 && toggleClass(multiDragClones[i], this.options.chosenClass, false);\n }\n sortable._hideClone();\n cancel();\n },\n clone: function clone(_ref3) {\n var sortable = _ref3.sortable,\n rootEl = _ref3.rootEl,\n dispatchSortableEvent = _ref3.dispatchSortableEvent,\n cancel = _ref3.cancel;\n if (!this.isMultiDrag) return;\n if (!this.options.removeCloneOnHide) {\n if (multiDragElements.length && multiDragSortable === sortable) {\n insertMultiDragClones(true, rootEl);\n dispatchSortableEvent('clone');\n cancel();\n }\n }\n },\n showClone: function showClone(_ref4) {\n var cloneNowShown = _ref4.cloneNowShown,\n rootEl = _ref4.rootEl,\n cancel = _ref4.cancel;\n if (!this.isMultiDrag) return;\n insertMultiDragClones(false, rootEl);\n multiDragClones.forEach(function (clone) {\n css(clone, 'display', '');\n });\n cloneNowShown();\n clonesHidden = false;\n cancel();\n },\n hideClone: function hideClone(_ref5) {\n var _this = this;\n var sortable = _ref5.sortable,\n cloneNowHidden = _ref5.cloneNowHidden,\n cancel = _ref5.cancel;\n if (!this.isMultiDrag) return;\n multiDragClones.forEach(function (clone) {\n css(clone, 'display', 'none');\n if (_this.options.removeCloneOnHide && clone.parentNode) {\n clone.parentNode.removeChild(clone);\n }\n });\n cloneNowHidden();\n clonesHidden = true;\n cancel();\n },\n dragStartGlobal: function dragStartGlobal(_ref6) {\n var sortable = _ref6.sortable;\n if (!this.isMultiDrag && multiDragSortable) {\n multiDragSortable.multiDrag._deselectMultiDrag();\n }\n multiDragElements.forEach(function (multiDragElement) {\n multiDragElement.sortableIndex = index(multiDragElement);\n });\n\n // Sort multi-drag elements\n multiDragElements = multiDragElements.sort(function (a, b) {\n return a.sortableIndex - b.sortableIndex;\n });\n dragStarted = true;\n },\n dragStarted: function dragStarted(_ref7) {\n var _this2 = this;\n var sortable = _ref7.sortable;\n if (!this.isMultiDrag) return;\n if (this.options.sort) {\n // Capture rects,\n // hide multi drag elements (by positioning them absolute),\n // set multi drag elements rects to dragRect,\n // show multi drag elements,\n // animate to rects,\n // unset rects & remove from DOM\n\n sortable.captureAnimationState();\n if (this.options.animation) {\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement === dragEl$1) return;\n css(multiDragElement, 'position', 'absolute');\n });\n var dragRect = getRect(dragEl$1, false, true, true);\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement === dragEl$1) return;\n setRect(multiDragElement, dragRect);\n });\n folding = true;\n initialFolding = true;\n }\n }\n sortable.animateAll(function () {\n folding = false;\n initialFolding = false;\n if (_this2.options.animation) {\n multiDragElements.forEach(function (multiDragElement) {\n unsetRect(multiDragElement);\n });\n }\n\n // Remove all auxiliary multidrag items from el, if sorting enabled\n if (_this2.options.sort) {\n removeMultiDragElements();\n }\n });\n },\n dragOver: function dragOver(_ref8) {\n var target = _ref8.target,\n completed = _ref8.completed,\n cancel = _ref8.cancel;\n if (folding && ~multiDragElements.indexOf(target)) {\n completed(false);\n cancel();\n }\n },\n revert: function revert(_ref9) {\n var fromSortable = _ref9.fromSortable,\n rootEl = _ref9.rootEl,\n sortable = _ref9.sortable,\n dragRect = _ref9.dragRect;\n if (multiDragElements.length > 1) {\n // Setup unfold animation\n multiDragElements.forEach(function (multiDragElement) {\n sortable.addAnimationState({\n target: multiDragElement,\n rect: folding ? getRect(multiDragElement) : dragRect\n });\n unsetRect(multiDragElement);\n multiDragElement.fromRect = dragRect;\n fromSortable.removeAnimationState(multiDragElement);\n });\n folding = false;\n insertMultiDragElements(!this.options.removeCloneOnHide, rootEl);\n }\n },\n dragOverCompleted: function dragOverCompleted(_ref10) {\n var sortable = _ref10.sortable,\n isOwner = _ref10.isOwner,\n insertion = _ref10.insertion,\n activeSortable = _ref10.activeSortable,\n parentEl = _ref10.parentEl,\n putSortable = _ref10.putSortable;\n var options = this.options;\n if (insertion) {\n // Clones must be hidden before folding animation to capture dragRectAbsolute properly\n if (isOwner) {\n activeSortable._hideClone();\n }\n initialFolding = false;\n // If leaving sort:false root, or already folding - Fold to new location\n if (options.animation && multiDragElements.length > 1 && (folding || !isOwner && !activeSortable.options.sort && !putSortable)) {\n // Fold: Set all multi drag elements's rects to dragEl's rect when multi-drag elements are invisible\n var dragRectAbsolute = getRect(dragEl$1, false, true, true);\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement === dragEl$1) return;\n setRect(multiDragElement, dragRectAbsolute);\n\n // Move element(s) to end of parentEl so that it does not interfere with multi-drag clones insertion if they are inserted\n // while folding, and so that we can capture them again because old sortable will no longer be fromSortable\n parentEl.appendChild(multiDragElement);\n });\n folding = true;\n }\n\n // Clones must be shown (and check to remove multi drags) after folding when interfering multiDragElements are moved out\n if (!isOwner) {\n // Only remove if not folding (folding will remove them anyways)\n if (!folding) {\n removeMultiDragElements();\n }\n if (multiDragElements.length > 1) {\n var clonesHiddenBefore = clonesHidden;\n activeSortable._showClone(sortable);\n\n // Unfold animation for clones if showing from hidden\n if (activeSortable.options.animation && !clonesHidden && clonesHiddenBefore) {\n multiDragClones.forEach(function (clone) {\n activeSortable.addAnimationState({\n target: clone,\n rect: clonesFromRect\n });\n clone.fromRect = clonesFromRect;\n clone.thisAnimationDuration = null;\n });\n }\n } else {\n activeSortable._showClone(sortable);\n }\n }\n }\n },\n dragOverAnimationCapture: function dragOverAnimationCapture(_ref11) {\n var dragRect = _ref11.dragRect,\n isOwner = _ref11.isOwner,\n activeSortable = _ref11.activeSortable;\n multiDragElements.forEach(function (multiDragElement) {\n multiDragElement.thisAnimationDuration = null;\n });\n if (activeSortable.options.animation && !isOwner && activeSortable.multiDrag.isMultiDrag) {\n clonesFromRect = _extends({}, dragRect);\n var dragMatrix = matrix(dragEl$1, true);\n clonesFromRect.top -= dragMatrix.f;\n clonesFromRect.left -= dragMatrix.e;\n }\n },\n dragOverAnimationComplete: function dragOverAnimationComplete() {\n if (folding) {\n folding = false;\n removeMultiDragElements();\n }\n },\n drop: function drop(_ref12) {\n var evt = _ref12.originalEvent,\n rootEl = _ref12.rootEl,\n parentEl = _ref12.parentEl,\n sortable = _ref12.sortable,\n dispatchSortableEvent = _ref12.dispatchSortableEvent,\n oldIndex = _ref12.oldIndex,\n putSortable = _ref12.putSortable;\n var toSortable = putSortable || this.sortable;\n if (!evt) return;\n var options = this.options,\n children = parentEl.children;\n\n // Multi-drag selection\n if (!dragStarted) {\n if (options.multiDragKey && !this.multiDragKeyDown) {\n this._deselectMultiDrag();\n }\n toggleClass(dragEl$1, options.selectedClass, !~multiDragElements.indexOf(dragEl$1));\n if (!~multiDragElements.indexOf(dragEl$1)) {\n multiDragElements.push(dragEl$1);\n dispatchEvent({\n sortable: sortable,\n rootEl: rootEl,\n name: 'select',\n targetEl: dragEl$1,\n originalEvent: evt\n });\n\n // Modifier activated, select from last to dragEl\n if (evt.shiftKey && lastMultiDragSelect && sortable.el.contains(lastMultiDragSelect)) {\n var lastIndex = index(lastMultiDragSelect),\n currentIndex = index(dragEl$1);\n if (~lastIndex && ~currentIndex && lastIndex !== currentIndex) {\n // Must include lastMultiDragSelect (select it), in case modified selection from no selection\n // (but previous selection existed)\n var n, i;\n if (currentIndex > lastIndex) {\n i = lastIndex;\n n = currentIndex;\n } else {\n i = currentIndex;\n n = lastIndex + 1;\n }\n for (; i < n; i++) {\n if (~multiDragElements.indexOf(children[i])) continue;\n toggleClass(children[i], options.selectedClass, true);\n multiDragElements.push(children[i]);\n dispatchEvent({\n sortable: sortable,\n rootEl: rootEl,\n name: 'select',\n targetEl: children[i],\n originalEvent: evt\n });\n }\n }\n } else {\n lastMultiDragSelect = dragEl$1;\n }\n multiDragSortable = toSortable;\n } else {\n multiDragElements.splice(multiDragElements.indexOf(dragEl$1), 1);\n lastMultiDragSelect = null;\n dispatchEvent({\n sortable: sortable,\n rootEl: rootEl,\n name: 'deselect',\n targetEl: dragEl$1,\n originalEvent: evt\n });\n }\n }\n\n // Multi-drag drop\n if (dragStarted && this.isMultiDrag) {\n folding = false;\n // Do not \"unfold\" after around dragEl if reverted\n if ((parentEl[expando].options.sort || parentEl !== rootEl) && multiDragElements.length > 1) {\n var dragRect = getRect(dragEl$1),\n multiDragIndex = index(dragEl$1, ':not(.' + this.options.selectedClass + ')');\n if (!initialFolding && options.animation) dragEl$1.thisAnimationDuration = null;\n toSortable.captureAnimationState();\n if (!initialFolding) {\n if (options.animation) {\n dragEl$1.fromRect = dragRect;\n multiDragElements.forEach(function (multiDragElement) {\n multiDragElement.thisAnimationDuration = null;\n if (multiDragElement !== dragEl$1) {\n var rect = folding ? getRect(multiDragElement) : dragRect;\n multiDragElement.fromRect = rect;\n\n // Prepare unfold animation\n toSortable.addAnimationState({\n target: multiDragElement,\n rect: rect\n });\n }\n });\n }\n\n // Multi drag elements are not necessarily removed from the DOM on drop, so to reinsert\n // properly they must all be removed\n removeMultiDragElements();\n multiDragElements.forEach(function (multiDragElement) {\n if (children[multiDragIndex]) {\n parentEl.insertBefore(multiDragElement, children[multiDragIndex]);\n } else {\n parentEl.appendChild(multiDragElement);\n }\n multiDragIndex++;\n });\n\n // If initial folding is done, the elements may have changed position because they are now\n // unfolding around dragEl, even though dragEl may not have his index changed, so update event\n // must be fired here as Sortable will not.\n if (oldIndex === index(dragEl$1)) {\n var update = false;\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement.sortableIndex !== index(multiDragElement)) {\n update = true;\n return;\n }\n });\n if (update) {\n dispatchSortableEvent('update');\n dispatchSortableEvent('sort');\n }\n }\n }\n\n // Must be done after capturing individual rects (scroll bar)\n multiDragElements.forEach(function (multiDragElement) {\n unsetRect(multiDragElement);\n });\n toSortable.animateAll();\n }\n multiDragSortable = toSortable;\n }\n\n // Remove clones if necessary\n if (rootEl === parentEl || putSortable && putSortable.lastPutMode !== 'clone') {\n multiDragClones.forEach(function (clone) {\n clone.parentNode && clone.parentNode.removeChild(clone);\n });\n }\n },\n nullingGlobal: function nullingGlobal() {\n this.isMultiDrag = dragStarted = false;\n multiDragClones.length = 0;\n },\n destroyGlobal: function destroyGlobal() {\n this._deselectMultiDrag();\n off(document, 'pointerup', this._deselectMultiDrag);\n off(document, 'mouseup', this._deselectMultiDrag);\n off(document, 'touchend', this._deselectMultiDrag);\n off(document, 'keydown', this._checkKeyDown);\n off(document, 'keyup', this._checkKeyUp);\n },\n _deselectMultiDrag: function _deselectMultiDrag(evt) {\n if (typeof dragStarted !== \"undefined\" && dragStarted) return;\n\n // Only deselect if selection is in this sortable\n if (multiDragSortable !== this.sortable) return;\n\n // Only deselect if target is not item in this sortable\n if (evt && closest(evt.target, this.options.draggable, this.sortable.el, false)) return;\n\n // Only deselect if left click\n if (evt && evt.button !== 0) return;\n while (multiDragElements.length) {\n var el = multiDragElements[0];\n toggleClass(el, this.options.selectedClass, false);\n multiDragElements.shift();\n dispatchEvent({\n sortable: this.sortable,\n rootEl: this.sortable.el,\n name: 'deselect',\n targetEl: el,\n originalEvent: evt\n });\n }\n },\n _checkKeyDown: function _checkKeyDown(evt) {\n if (evt.key === this.options.multiDragKey) {\n this.multiDragKeyDown = true;\n }\n },\n _checkKeyUp: function _checkKeyUp(evt) {\n if (evt.key === this.options.multiDragKey) {\n this.multiDragKeyDown = false;\n }\n }\n };\n return _extends(MultiDrag, {\n // Static methods & properties\n pluginName: 'multiDrag',\n utils: {\n /**\r\n * Selects the provided multi-drag item\r\n * @param {HTMLElement} el The element to be selected\r\n */\n select: function select(el) {\n var sortable = el.parentNode[expando];\n if (!sortable || !sortable.options.multiDrag || ~multiDragElements.indexOf(el)) return;\n if (multiDragSortable && multiDragSortable !== sortable) {\n multiDragSortable.multiDrag._deselectMultiDrag();\n multiDragSortable = sortable;\n }\n toggleClass(el, sortable.options.selectedClass, true);\n multiDragElements.push(el);\n },\n /**\r\n * Deselects the provided multi-drag item\r\n * @param {HTMLElement} el The element to be deselected\r\n */\n deselect: function deselect(el) {\n var sortable = el.parentNode[expando],\n index = multiDragElements.indexOf(el);\n if (!sortable || !sortable.options.multiDrag || !~index) return;\n toggleClass(el, sortable.options.selectedClass, false);\n multiDragElements.splice(index, 1);\n }\n },\n eventProperties: function eventProperties() {\n var _this3 = this;\n var oldIndicies = [],\n newIndicies = [];\n multiDragElements.forEach(function (multiDragElement) {\n oldIndicies.push({\n multiDragElement: multiDragElement,\n index: multiDragElement.sortableIndex\n });\n\n // multiDragElements will already be sorted if folding\n var newIndex;\n if (folding && multiDragElement !== dragEl$1) {\n newIndex = -1;\n } else if (folding) {\n newIndex = index(multiDragElement, ':not(.' + _this3.options.selectedClass + ')');\n } else {\n newIndex = index(multiDragElement);\n }\n newIndicies.push({\n multiDragElement: multiDragElement,\n index: newIndex\n });\n });\n return {\n items: _toConsumableArray(multiDragElements),\n clones: [].concat(multiDragClones),\n oldIndicies: oldIndicies,\n newIndicies: newIndicies\n };\n },\n optionListeners: {\n multiDragKey: function multiDragKey(key) {\n key = key.toLowerCase();\n if (key === 'ctrl') {\n key = 'Control';\n } else if (key.length > 1) {\n key = key.charAt(0).toUpperCase() + key.substr(1);\n }\n return key;\n }\n }\n });\n}\nfunction insertMultiDragElements(clonesInserted, rootEl) {\n multiDragElements.forEach(function (multiDragElement, i) {\n var target = rootEl.children[multiDragElement.sortableIndex + (clonesInserted ? Number(i) : 0)];\n if (target) {\n rootEl.insertBefore(multiDragElement, target);\n } else {\n rootEl.appendChild(multiDragElement);\n }\n });\n}\n\n/**\r\n * Insert multi-drag clones\r\n * @param {[Boolean]} elementsInserted Whether the multi-drag elements are inserted\r\n * @param {HTMLElement} rootEl\r\n */\nfunction insertMultiDragClones(elementsInserted, rootEl) {\n multiDragClones.forEach(function (clone, i) {\n var target = rootEl.children[clone.sortableIndex + (elementsInserted ? Number(i) : 0)];\n if (target) {\n rootEl.insertBefore(clone, target);\n } else {\n rootEl.appendChild(clone);\n }\n });\n}\nfunction removeMultiDragElements() {\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement === dragEl$1) return;\n multiDragElement.parentNode && multiDragElement.parentNode.removeChild(multiDragElement);\n });\n}\n\nSortable.mount(new AutoScrollPlugin());\nSortable.mount(Remove, Revert);\n\nexport default Sortable;\nexport { MultiDragPlugin as MultiDrag, Sortable, SwapPlugin as Swap };\n","import { defineComponent, useAttrs, ref, computed, watch, onUnmounted, openBlock, createBlock, resolveDynamicComponent, normalizeClass, withCtx, renderSlot, createElementBlock, Fragment, renderList } from 'vue';\nimport Sortable from 'sortablejs';\n\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"Sortable\",\n props: {\n /** All SortableJS options are supported; events are handled by the `defineEmits` below and should be used with v-on */\n options: {\n type: Object,\n default: null,\n required: false\n },\n /** Your list of items **/\n list: {\n type: [Array, Object],\n default: [],\n required: true\n },\n /** The name of the key present in each item in the list that corresponds to a unique value. */\n itemKey: {\n type: [String, Function],\n default: \"\",\n required: true\n },\n /** The element type to render as. */\n tag: {\n type: String,\n default: \"div\",\n required: false\n }\n },\n emits: [\"choose\", \"unchoose\", \"start\", \"end\", \"add\", \"update\", \"sort\", \"remove\", \"filter\", \"move\", \"clone\", \"change\"],\n setup(__props, { expose: __expose, emit: __emit }) {\n const props = __props;\n const emit = __emit;\n const attrs = useAttrs();\n const isDragging = ref(false);\n const containerRef = ref(null);\n const sortable = ref(null);\n const getKey = computed(() => {\n if (typeof props.itemKey === \"string\")\n return (item) => item[props.itemKey];\n return props.itemKey;\n });\n __expose({\n containerRef,\n sortable,\n isDragging\n });\n watch(containerRef, (newDraggable) => {\n if (newDraggable) {\n sortable.value = new Sortable(newDraggable, {\n ...props.options,\n onChoose: (event) => emit(\"choose\", event),\n onUnchoose: (event) => emit(\"unchoose\", event),\n onStart: (event) => {\n isDragging.value = true;\n emit(\"start\", event);\n },\n onEnd: (event) => {\n setTimeout(() => {\n isDragging.value = false;\n emit(\"end\", event);\n });\n },\n onAdd: (event) => emit(\"add\", event),\n onUpdate: (event) => emit(\"update\", event),\n onSort: (event) => emit(\"sort\", event),\n onRemove: (event) => emit(\"remove\", event),\n onFilter: (event) => emit(\"filter\", event),\n // See https://github.com/MaxLeiter/sortablejs-vue3/pull/56 for context on `attrs`.\n onMove: (event, originalEvent) => \"onMoveCapture\" in attrs ? (\n /** eslint-disable-next-line */\n attrs.onMoveCapture(event, originalEvent)\n ) : emit(\"move\", event, originalEvent),\n onClone: (event) => emit(\"clone\", event),\n onChange: (event) => emit(\"change\", event)\n });\n }\n });\n watch(\n () => props.options,\n (options) => {\n if (options && sortable?.value) {\n for (const property in options) {\n sortable.value.option(\n property,\n options[property]\n );\n }\n }\n }\n );\n onUnmounted(() => {\n if (sortable.value) {\n sortable.value.destroy();\n containerRef.value = null;\n sortable.value = null;\n }\n });\n return (_ctx, _cache) => {\n return openBlock(), createBlock(resolveDynamicComponent(_ctx.$props.tag), {\n ref_key: \"containerRef\",\n ref: containerRef,\n class: normalizeClass(_ctx.$props.class)\n }, {\n default: withCtx(() => [\n renderSlot(_ctx.$slots, \"header\"),\n (openBlock(true), createElementBlock(Fragment, null, renderList(__props.list, (item, index) => {\n return renderSlot(_ctx.$slots, \"item\", {\n key: getKey.value(item),\n element: item,\n index\n });\n }), 128)),\n renderSlot(_ctx.$slots, \"footer\")\n ]),\n _: 3\n }, 8, [\"class\"]);\n };\n }\n});\n\nexport { _sfc_main as Sortable };\n","\n\n\n\n\n","\n\n\n\n\n","\n","\n\n\n","import { ComponentWithProperties } from \"@simonbackx/vue-app-navigation\"\nimport { ComponentPublicInstance, markRaw, Ref, unref } from \"vue\"\n\nexport class TabBarItem {\n name = \"\"\n icon = \"\"\n badge: string | Ref | null = \"\"\n component?: ComponentWithProperties\n action?: (this: ComponentPublicInstance) => Promise|void\n savedScrollPositions: WeakMap = new WeakMap()\n\n constructor(options: { name: string, icon: string, badge?: string | Ref | null, component?: ComponentWithProperties, action?: (this: ComponentPublicInstance) => Promise|void }) {\n this.name = options.name\n this.icon = options.icon\n this.component = options.component\n this.badge = options.badge ?? \"\"\n this.action = options.action;\n\n // Not reactive because we need === operator to know what the active tab is\n markRaw(this)\n }\n\n get isGroup() {\n return false;\n }\n\n /**\n * Helper to treat groups and items the same\n */\n get items() {\n return [this]\n }\n\n isSelected(selectedItem: TabBarItem | Ref | null) {\n if (unref(selectedItem) === this) {\n return true\n }\n return false\n }\n}\n\nexport class TabBarItemGroup {\n name = \"\"\n icon = \"\"\n badge: string | Ref | null = \"\"\n items: TabBarItem[] = []\n\n constructor(options: { name: string, icon: string, items: TabBarItem[] }) {\n this.name = options.name\n this.icon = options.icon\n this.items = options.items\n\n // Not reactive because we need === operator to know what the active tab is\n markRaw(this)\n }\n\n get isGroup() {\n return true;\n }\n\n isSelected(selectedItem: TabBarItem | Ref | null) {\n return this.items.some(item => item.isSelected(selectedItem))\n }\n}\n","\n\n\n","\n\n\n\n\n\n\n","\n\n\n\n\n\n","\n\n\n\n\n","\n\n\n\n\n","\n\n\n\n\n","\n\n\n","\n\n\n","\n\n\n\n\n","\n\n\n","import { ComponentWithProperties, PushOptions } from \"@simonbackx/vue-app-navigation\";\n\nimport { EventBus } from \"../EventBus\";\n\nexport const ModalStackEventBus = new EventBus<\"present\", PushOptions | ComponentWithProperties>()\nexport const ReplaceRootEventBus = new EventBus<\"replace\", ComponentWithProperties>()","import { ComponentWithProperties, NavigationMixin } from \"@simonbackx/vue-app-navigation\"\n\nimport GeneralContextMenuView from \"./GeneralContextMenuView.vue\"\nimport { ModalStackEventBus } from \"./ModalStackEventBus\"\nimport { markRaw } from \"vue\"\n\nexport class ContextMenuItem {\n name: string\n description?: string\n\n leftIcon: string | null = null\n rightText: string | null = null\n icon: string | null = null\n\n /**\n * Shows a checkbox on the left if true/false.\n * You can alter the selected value in action() to adjust it.\n */\n selected: boolean | null = null\n disabled: boolean | string = false\n\n /**\n * Return true when the context menu should get closed.\n */\n action: ((this: ContextMenuItem) => unknown|Promise) | null = null\n\n /**\n * Context menu to show when hovered\n */\n childMenu: ContextMenu | null = null\n\n constructor(settings: Partial) {\n markRaw(this)\n Object.assign(this, settings)\n }\n}\n\nexport class ContextMenu {\n /**\n * Prevent the default behaviour of click on the item, e.g. to keep the focus on an input element\n */\n preventDefault = false\n\n items: ContextMenuItem[][]\n\n constructor(items: ContextMenuItem[][]) {\n markRaw(this)\n this.items = items.filter(i => i.length > 0)\n }\n\n getComponent() {\n return new ComponentWithProperties(GeneralContextMenuView, { menu: this})\n }\n\n async show(position: { component?: NavigationMixin, clickEvent?: TouchEvent | MouseEvent, button?: HTMLElement, x?: number, y?: number, xPlacement?: \"right\" | \"left\", yPlacement?: \"bottom\" | \"top\" , wrapWidth?: number, wrapHeight?: number, yOffset?: number, xOffset?: number }) {\n if (position.button) {\n const bounds = position.button.getBoundingClientRect()\n\n if (!position.xPlacement || position.xPlacement === \"right\") {\n position.x = bounds.left\n } else {\n position.x = bounds.right\n }\n\n if (!position.yPlacement || position.yPlacement === \"bottom\") {\n position.y = bounds.bottom\n } else {\n position.y = bounds.top\n }\n\n position.wrapWidth = bounds.width\n position.wrapHeight = bounds.height\n }\n\n if (position.clickEvent) {\n const event = position.clickEvent as any\n position.x = event.changedTouches ? event.changedTouches[0].pageX : event.clientX\n position.y = event.changedTouches ? event.changedTouches[0].pageY : event.clientY\n }\n\n if (position.y !== undefined && position.yOffset) {\n position.y += position.yOffset\n }\n\n if (position.x !== undefined && position.xOffset) {\n position.x += position.xOffset\n }\n\n const component = position.component;\n delete position.component\n\n const menuComponent = new ComponentWithProperties(GeneralContextMenuView, {\n menu: this,\n ...position\n })\n if (component) {\n component.present({\n components: [menuComponent],\n modalDisplayStyle: \"overlay\",\n })\n } else {\n await ModalStackEventBus.sendEvent(\"present\", {\n components: [menuComponent],\n modalDisplayStyle: \"overlay\",\n })\n }\n return this\n }\n}\n","import { Node } from '@tiptap/core'\n\ndeclare module '@tiptap/core' {\n interface Commands {\n descriptiveText: {\n /**\n * Set a heading node\n */\n setDescriptiveText: () => ReturnType,\n /**\n * Toggle a heading node\n */\n toggleDescriptiveText: () => ReturnType,\n }\n }\n}\n\nexport const DescriptiveText = Node.create({\n name: 'descriptiveText',\n\n content: 'inline*',\n\n group: 'block',\n\n defining: true,\n\n addCommands() {\n return {\n setDescriptiveText: () => ({ commands }) => {\n return commands.setNode(this.name, {})\n },\n toggleDescriptiveText: () => ({ commands }) => {\n return commands.toggleNode(this.name, 'paragraph', {})\n },\n }\n },\n\n parseHTML() {\n return [{\n tag: `p`,\n priority: 51, // 50 is default, so check before the normal paragraphs\n getAttrs: node => {\n return (node as any)?.getAttribute('class') === 'description' && null\n },\n }]\n },\n\n renderHTML() {\n return ['p', { class: \"description\" }, 0]\n },\n})","import { EditorSmartButton } from '@stamhoofd/structures'\nimport { mergeAttributes, Node, nodeInputRule } from '@tiptap/core'\n\nexport type SmartButtonNodeOptions = {\n HTMLAttributes: Record,\n smartButtons: EditorSmartButton[]\n}\n\ndeclare module '@tiptap/core' {\n interface Commands {\n smartButtonNode: {\n insertSmartButton: (smartButton: EditorSmartButton, options?: { updateSelection?: boolean }) => ReturnType,\n }\n }\n}\n\nexport const SmartButtonNode = Node.create({\n priority: 1000,\n name: 'smartButton',\n\n addOptions() {\n return {\n HTMLAttributes: {},\n smartButtons: []\n }\n }, \n\n group: 'block',\n\n inline: false,\n selectable: true,\n draggable: true,\n\n atom: false,\n content: \"text*\",\n\n // disallows all marks\n marks: '',\n \n addCommands() {\n return {\n insertSmartButton: (smartButton: EditorSmartButton, options?: { updateSelection?: boolean }) => ({ commands }) => {\n return commands.insertContent({ type: smartButton.type === 'block' ? 'smartButton' : 'smartButtonInline', attrs: { id: smartButton.id }, content: [{ type: \"text\", text: smartButton.text }] }, options)\n },\n }\n },\n\n addInputRules() {\n return this.options.smartButtons.filter(b => b.type === 'block').map(s => {\n return nodeInputRule({\n find: new RegExp(`\\\\{\\\\{${s.id}\\\\}\\\\}$`),\n type: this.type,\n getAttributes: () => { return { id: s.id } }\n })\n })\n },\n\n addAttributes() {\n return {\n id: {\n default: null,\n parseHTML: element => element.getAttribute('data-id'),\n renderHTML: attributes => {\n if (!attributes.id) {\n return {}\n }\n\n return {\n 'data-id': attributes.id,\n }\n },\n },\n }\n },\n\n parseHTML() {\n return [\n {\n tag: `div[data-type=\"${this.name}\"]`,\n }\n ]\n },\n\n renderHTML({ node, HTMLAttributes }) {\n const button = this.options.smartButtons.find(s => s.id === node.attrs.id)\n\n return [\n // We need the extra div because display: block is required (and button should be display inline block)\n 'div',\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n mergeAttributes({ 'data-type': this.name }, this.options.HTMLAttributes, HTMLAttributes),\n [\n \"span\",\n mergeAttributes({ href: \"{{\"+(button?.id ?? \"\")+\"}}\", class: \"button primary\" }, this.options.HTMLAttributes, HTMLAttributes),\n 0\n ],\n ]\n },\n\n /**\n * Text when copying to the clipboard\n */\n renderText({ node }) {\n return \"{{\"+node.attrs.id+\"}}\"\n },\n})\n\nexport const SmartButtonInlineNode = Node.create({\n priority: 1000,\n name: 'smartButtonInline',\n\n addOptions() {\n return {\n HTMLAttributes: {},\n smartButtons: []\n }\n }, \n\n group: 'inline',\n\n selectable: true,\n draggable: true,\n inline: true,\n atom: false,\n content: \"inline+\",\n keepOnSplit: false,\n\n addInputRules() {\n return this.options.smartButtons.filter(b => b.type === 'inline').map(s => {\n return nodeInputRule({\n find: new RegExp(`\\\\{\\\\{${s.id}\\\\}\\\\}$`),\n type: this.type,\n getAttributes: () => { return { id: s.id } }\n })\n })\n },\n\n addAttributes() {\n return {\n id: {\n default: null,\n parseHTML: element => element.getAttribute('data-id'),\n renderHTML: attributes => {\n if (!attributes.id) {\n return {}\n }\n\n return {\n 'data-id': attributes.id,\n }\n },\n },\n }\n },\n\n parseHTML() {\n return [\n {\n tag: `span[data-type=\"${this.name}\"]`,\n }\n ]\n },\n\n renderHTML({ node, HTMLAttributes }) {\n const button = this.options.smartButtons.find(s => s.id === node.attrs.id)\n\n return [\n \"span\",\n mergeAttributes({ 'data-type': this.name, href: \"{{\"+(button?.id ?? \"\")+\"}}\" }, this.options.HTMLAttributes, HTMLAttributes),\n 0\n ];\n },\n\n /**\n * Text when copying to the clipboard\n */\n renderText({ node }) {\n return \"{{\"+node.attrs.id+\"}}\"\n },\n})\n","import { EditorSmartVariable } from '@stamhoofd/structures'\nimport { mergeAttributes, Node, nodeInputRule } from '@tiptap/core'\nimport { TextSelection } from '@tiptap/pm/state'\n\n\nexport type SmartVariableNodeOptions = {\n HTMLAttributes: Record,\n smartVariables: EditorSmartVariable[]\n}\n\ndeclare module '@tiptap/core' {\n interface Commands {\n smartVariableNode: {\n insertSmartVariable: (smartVariable: EditorSmartVariable, options?: { updateSelection?: boolean }) => ReturnType,\n }\n }\n}\n\nexport const SmartVariableNode = Node.create({\n name: 'smartVariable',\n\n addOptions() {\n return {\n HTMLAttributes: {},\n smartVariables: []\n }\n }, \n\n group: 'inline',\n\n selectable: true,\n draggable: true,\n inline: true,\n atom: true,\n\n addCommands() {\n return {\n insertSmartVariable: (smartVariable: EditorSmartVariable, options?: { updateSelection?: boolean }) => ({ chain, commands }) => {\n if (smartVariable.html && (options?.updateSelection === undefined || options?.updateSelection)) {\n return chain()\n .insertContent(smartVariable.getJSONContent(), options)\n // set cursor after horizontal rule\n .command(({ tr, dispatch }) => {\n if (dispatch) {\n const { $to } = tr.selection\n const posAfter = $to.end()\n\n if ($to.nodeAfter) {\n tr.setSelection(TextSelection.create(tr.doc, $to.pos))\n } else {\n // add node after horizontal rule if it’s the end of the document\n const node = $to.parent.type.contentMatch.defaultType?.create()\n\n if (node) {\n tr.insert(posAfter, node)\n tr.setSelection(TextSelection.create(tr.doc, posAfter))\n }\n }\n\n tr.scrollIntoView()\n }\n\n return true\n })\n .run()\n }\n return commands.insertContent(smartVariable.getJSONContent(), options)\n },\n }\n },\n\n addInputRules() {\n return this.options.smartVariables.map(s => {\n return nodeInputRule({\n find: new RegExp(`\\\\{\\\\{${s.id}\\\\}\\\\}$`),\n type: this.type,\n getAttributes: () => { return { id: s.id } }\n })\n })\n },\n\n addAttributes() {\n return {\n id: {\n default: null,\n parseHTML: element => element.getAttribute('data-id'),\n renderHTML: attributes => {\n if (!attributes.id) {\n return {}\n }\n\n return {\n 'data-id': attributes.id,\n }\n },\n },\n }\n },\n\n parseHTML() {\n return this.options.smartVariables.filter(v => v.html === undefined).map(variable => {\n return {\n tag: `span[data-type=\"${this.name}\"][data-id=\"${variable.id}\"]`,\n };\n })\n },\n\n renderHTML({ node, HTMLAttributes }) {\n const smartVariable = this.options.smartVariables.find(s => s.id === node.attrs.id)\n if (!smartVariable || !smartVariable.html) {\n return [\n 'span',\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n mergeAttributes({ 'data-type': this.name }, this.options.HTMLAttributes, HTMLAttributes),\n smartVariable?.example || this.name, // Empty string won't get rendered but kept for reference in case the smart variable is found again later\n ]\n }\n const dom = document.createElement('div')\n dom.setAttribute('data-type', this.name)\n dom.innerHTML = smartVariable.html\n return { dom }\n },\n\n renderText({ node }) {\n return \"{{\"+node.attrs.id+\"}}\"\n },\n})\n\nexport const SmartVariableNodeBlock = SmartVariableNode.extend({\n name: 'smartVariableBlock',\n inline: false,\n group: \"block\",\n\n parseHTML() {\n return this.options.smartVariables.filter(v => v.html !== undefined).map(variable => {\n return {\n tag: `div[data-type=\"${this.name}\"][data-id=\"${variable.id}\"]`,\n }\n })\n },\n\n renderHTML({ node }) {\n const smartVariable = this.options.smartVariables.find(s => s.id === node.attrs.id)\n const dom = document.createElement('div')\n dom.setAttribute('data-type', this.name)\n dom.setAttribute('data-id', (node.attrs.id ?? \"\") + \"\")\n dom.innerHTML = smartVariable?.html ?? \"\"\n return { dom }\n },\n})\n","\n\n\n\n","\n\n\n\n\n\n","import { isSimpleError, isSimpleErrors, SimpleError, SimpleErrors } from '@simonbackx/simple-errors'\n\nexport type CenteredMessageListener = (centeredMessage: CenteredMessage) => unknown\n\nexport class CenteredMessageButton {\n text: string\n href?: string\n action: (() => Promise) | null = null\n type: \"destructive\" | \"secundary\" | \"primary\"\n icon: string | null = null\n loading = false\n\n constructor(text, settings?: {\n action?: (() => Promise);\n type?: \"destructive\" | \"secundary\" | \"primary\";\n icon?: string ;\n href?: string\n }) {\n this.text = text\n this.action = settings?.action ?? null\n this.type = settings?.type ?? \"primary\"\n this.icon = settings?.icon ?? null\n this.href = settings?.href\n\n }\n}\n\nexport class CenteredMessage {\n protected static listeners: Map = new Map()\n\n type = \"none\"\n title = \"\"\n description = \"\"\n\n\n buttons: CenteredMessageButton[] = []\n\n doHide: (() => void) | null = null\n\n constructor(title: string, description = \"\", type = \"none\") {\n this.title = title\n this.description = description\n this.type = type\n }\n\n static fromError(errors: unknown) {\n let simpleErrors: SimpleErrors\n if (isSimpleError(errors)) {\n simpleErrors = new SimpleErrors(errors)\n } else if (isSimpleErrors(errors)) {\n simpleErrors = errors\n } else {\n simpleErrors = new SimpleErrors(new SimpleError({\n code: \"unknown_error\",\n message: (errors as any).message\n }))\n }\n\n if (simpleErrors.hasCode(\"network_error\") || simpleErrors.hasCode(\"network_timeout\")) {\n return new CenteredMessage(\"Geen internetverbinding\", \"Kijk jouw verbinding na en probeer opnieuw\", \"error\")\n }\n\n return new CenteredMessage(simpleErrors.getHuman(), \"\", \"error\")\n }\n\n static addListener(owner: any, listener: CenteredMessageListener) {\n this.listeners.set(owner, listener)\n }\n\n static removeListener(owner: any) {\n this.listeners.delete(owner)\n }\n\n static callListeners(toast: CenteredMessage) {\n for (const listener of this.listeners.values()) {\n listener(toast)\n }\n }\n\n addCloseButton(text = \"Sluiten\", action?: (() => Promise) | undefined) {\n this.buttons.push(new CenteredMessageButton(text, { type: \"secundary\", action }))\n return this\n }\n\n addButton(button: CenteredMessageButton) {\n this.buttons.push(button)\n return this\n }\n\n show() {\n CenteredMessage.callListeners(this)\n return this\n }\n\n hide() {\n if (this.doHide) {\n this.doHide();\n this.doHide = null;\n }\n return this\n }\n\n static confirm(text: string, confirmText: string, description = \"\", cancelText?: string, destructive = true): Promise {\n return new Promise((resolve) => {\n new CenteredMessage(text, description).addButton(new CenteredMessageButton(confirmText, {\n action: () => {\n resolve(true)\n return Promise.resolve()\n },\n type: destructive ? \"destructive\" : \"primary\"\n })).addButton(new CenteredMessageButton(cancelText ?? \"Annuleren\", {\n action: () => {\n resolve(false)\n return Promise.resolve()\n },\n type: \"secundary\"\n })).show()\n })\n }\n}\n","\n\n\n","\n\n\n","\n\n\n","\n\n\n","\n\n\n","export class Column {\n name: string\n enabled = true\n index = 100\n id: string\n align?: \"left\" | \"right\" | \"center\"\n allowSorting = true\n\n /**\n * null means: generate width + save it, based on grow property\n */\n width: number | null = null\n\n /**\n * renderWidth is floored version of width, to use in CSS\n */\n renderWidth: number | null = null\n\n /**\n * Minimum width in pixels. Best minimum is 100, because this is needed for sort icon + drag handle + padding\n */\n minimumWidth = 100\n\n recommendedWidth = 100\n\n /**\n * When growing, columns with grow = true will only grow (if all other columns have reached the recommended size)\n */\n grow = false\n\n private getValue: (val: T) => ValueType\n private format: (val: ValueType, width: number) => string\n\n /**\n * Implement if you need the full object to compare\n */\n private compareObjects: ((a: T, b: T) => number) | null\n\n /**\n * Compare values using the return value of getValue\n * This is more performant because we can use caching\n */\n private compare: ((a: ValueType, b: ValueType) => number) | null\n\n private getStyleForObject: ((val: T, isPrefix: boolean) => string) | null = null\n private getStyle: ((val: ValueType, isPrefix: boolean) => string) | null = null\n\n constructor(settings: {\n name: string, \n id?: string,\n index?: number,\n align?: \"left\" | \"right\" | \"center\",\n enabled?: boolean,\n getValue: (val: T) => ValueType, \n format?: (val: ValueType, width: number) => string, \n compareObjects?: (a: T, b: T) => number,\n compare?: (a: ValueType, b: ValueType) => number,\n getStyle?: (val: ValueType, isPrefix: boolean) => string,\n getStyleForObject?: (val: T, isPrefix: boolean) => string,\n grow?: boolean,\n minimumWidth?: number,\n recommendedWidth?: number,\n allowSorting?: boolean\n }) {\n this.enabled = settings.enabled ?? true\n this.index = settings.index ?? 100\n this.name = settings.name\n this.id = settings.id ?? settings.name;\n\n this.getValue = settings.getValue\n this.format = settings.format ?? (val => val+\"\")\n\n this.compare = settings.compare ?? null\n this.compareObjects = settings.compareObjects ?? null\n this.getStyle = settings.getStyle ?? null\n this.getStyleForObject = settings.getStyleForObject ?? null\n\n this.grow = settings?.grow ?? false\n this.minimumWidth = settings?.minimumWidth ?? 100\n this.recommendedWidth = settings?.recommendedWidth ?? 100\n this.align = settings.align\n\n this.width = this.recommendedWidth\n this.allowSorting = settings.allowSorting ?? true\n }\n\n getFormattedValue(val: T) {\n return this.format(this.getValue(val), this.renderWidth ?? this.recommendedWidth)\n }\n\n doCompare(a: T, b: T): number {\n if (this.compare) {\n return this.compare(this.getValue(a), this.getValue(b))\n } else if (this.compareObjects) {\n return this.compareObjects(a, b)\n } else {\n return 0\n }\n }\n\n getStyleFor(val: T | null, isPrefix = false) {\n if (val === null) {\n return \"\"\n }\n return this.getStyleForObject ? this.getStyleForObject(val, isPrefix) : this.getStyle ? this.getStyle(this.getValue(val), isPrefix) : \"\"\n }\n\n didReachMinimum() {\n return this.width && this.width <= this.minimumWidth\n }\n}\n","import { ComponentWithProperties } from '@simonbackx/vue-app-navigation';\n\nimport { LimitedFilteredRequest } from '@stamhoofd/structures';\nimport { fetchAll, ObjectFetcher } from '.';\nimport { Toast } from '../../..';\n\ntype ObjectWithId = { id: string };\n\nexport interface TableActionSelection {\n /**\n * If you want to manually use the filter, or query data\n */\n filter: LimitedFilteredRequest;\n fetcher: ObjectFetcher;\n\n cachedAllValues?: T[];\n\n // Manually selected rows that are already in memory\n markedRows: Map;\n\n /**\n * When true: only the marked rows are selected.\n * When false: all rows are selected, except the marked rows\n */\n markedRowsAreSelected: boolean | null;\n}\n\nexport abstract class TableAction {\n name: string;\n description: string = '';\n icon: string;\n tooltip = '';\n enabled = true;\n destructive = false;\n\n /// Determines order\n priority: number;\n\n /// For grouping\n groupIndex: number;\n\n /**\n * Whether this table action is on a whole selection.\n * Set to false if you don't need any selection.\n * The action will be hidden if we are in selection modus on mobile\n */\n needsSelection = true;\n\n /**\n * If this action needs a selection, we will not automatically select all items if none is selected, or when selection mode is disabled\n */\n allowAutoSelectAll = true;\n\n singleSelection = false;\n\n childActions: (TableAction[]) | (() => TableAction[]) = [];\n childMenu: ComponentWithProperties | null = null;\n\n get hasChildActions() {\n if (this.childMenu !== null) {\n return true;\n }\n if (this.childActions instanceof Array) {\n return this.childActions.length > 0;\n }\n else {\n // function\n return true;\n }\n }\n\n isDisabled(hasSelection: boolean) {\n if (!this.allowAutoSelectAll && !hasSelection && this.needsSelection) {\n return true;\n }\n return false;\n }\n\n getChildActions(): TableAction[] {\n if (this.childActions instanceof Array) {\n return this.childActions;\n }\n else {\n return this.childActions();\n }\n }\n\n constructor(settings: Partial>) {\n this.name = settings.name ?? '';\n this.description = settings.description ?? '';\n this.icon = settings.icon ?? '';\n this.priority = settings.priority ?? 0;\n this.groupIndex = settings.groupIndex ?? 0;\n this.needsSelection = settings.needsSelection ?? true;\n this.singleSelection = settings.singleSelection ?? false;\n this.tooltip = settings.tooltip ?? this.name;\n this.enabled = settings.enabled ?? true;\n this.allowAutoSelectAll = settings.allowAutoSelectAll ?? true;\n this.childActions = settings.childActions ?? [];\n this.childMenu = settings.childMenu ?? null;\n this.destructive = settings.destructive ?? false;\n }\n\n setGroupIndex(index: number) {\n this.groupIndex = index;\n return this;\n }\n\n setPriority(priority: number) {\n this.priority = priority;\n return this;\n }\n\n abstract handle(data: TableActionSelection): Promise;\n}\n\nexport class MenuTableAction extends TableAction {\n async handle(data: TableActionSelection) {\n // Do nothing\n }\n}\n\nexport class AsyncTableAction extends TableAction {\n handler: (selection: TableActionSelection) => Promise | void;\n\n constructor(settings: Partial> & { handler: (selection: TableActionSelection) => Promise | void }) {\n super(settings);\n this.handler = settings.handler ?? (() => { throw new Error('No handler defined'); });\n }\n\n async handle(selection: TableActionSelection) {\n // todo\n await this.handler(selection);\n }\n}\n\nexport class InMemoryTableAction extends TableAction {\n handler: (item: T[]) => Promise | void;\n\n constructor(settings: Partial> & { handler: (item: T[]) => Promise | void }) {\n super(settings);\n this.handler = settings.handler ?? (() => { throw new Error('No handler defined'); });\n }\n\n async fetchAll(initialRequest: LimitedFilteredRequest, objectFetcher: ObjectFetcher, options?: FetchAllOptions) {\n return await fetchAll(initialRequest, objectFetcher, options);\n }\n\n async getSelection(selection: TableActionSelection, options: FetchAllOptions) {\n if (selection.cachedAllValues) {\n return selection.cachedAllValues;\n }\n\n if (selection.markedRows.size && selection.markedRowsAreSelected === true) {\n // No async needed\n return Array.from(selection.markedRows.values());\n }\n else {\n return await this.fetchAll(selection.filter, selection.fetcher, options);\n }\n }\n\n async handle(data: TableActionSelection) {\n const toast: Toast = new Toast('Ophalen...', 'spinner').setHide(null);\n const timer = setTimeout(() => {\n toast.show();\n }, 1000);\n\n try {\n const items = this.needsSelection\n ? (await this.getSelection(data, {\n onProgress(count, total) {\n toast.setProgress(total !== 0 ? (count / total) : 0);\n },\n }))\n : [];\n toast.setProgress(1);\n toast.message = 'Actie uitvoeren...';\n await this.handler(items);\n }\n finally {\n clearTimeout(timer);\n toast.hide();\n }\n }\n}\n","import { CountFilteredRequest, LimitedFilteredRequest, SortList, StamhoofdFilter } from '@stamhoofd/structures';\n\nexport interface ObjectFetcher {\n extendSort?(list: SortList): SortList;\n requiredFilter?: StamhoofdFilter | null | undefined;\n fetch(data: LimitedFilteredRequest): Promise<{ results: O[]; next?: LimitedFilteredRequest }>;\n\n fetchCount(data: CountFilteredRequest): Promise;\n\n destroy?(): void;\n}\n\nexport type FetchAllOptions = {\n onProgress?: (count: number, total: number) => void;\n onResultsReceived?: (results: T[]) => void;\n};\n\nexport async function fetchAll(initialRequest: LimitedFilteredRequest, objectFetcher: ObjectFetcher, options?: FetchAllOptions) {\n // todo: check if we have all or nearly all already.\n let next: LimitedFilteredRequest | null = initialRequest;\n\n let totalFilteredCount: number | null = null;\n if (options?.onProgress) {\n totalFilteredCount = await objectFetcher.fetchCount(initialRequest);\n }\n\n const results: T[] = [];\n\n while (next) {\n // Override filter\n // Because the filter could have been changed by the object fetcher, and we don't want to reapply any custom filters\n // on the already custom filter that we got from the server\n next.filter = initialRequest.filter;\n\n // Same for sorting\n next.sort = [];\n if (objectFetcher.extendSort) {\n next.sort = objectFetcher.extendSort(initialRequest.sort);\n }\n\n const data = await objectFetcher.fetch(next);\n next = data.next ?? null;\n results.push(...data.results);\n\n if (data.results.length === 0) {\n next = null;\n }\n\n if (options?.onProgress) {\n options.onProgress(results.length, totalFilteredCount ?? results.length);\n }\n\n if (options?.onResultsReceived) {\n options.onResultsReceived(results);\n }\n }\n\n return results;\n}\n","import { Request } from '@simonbackx/simple-networking';\nimport { CountFilteredRequest, LimitedFilteredRequest, SortList, StamhoofdFilter, mergeFilters } from '@stamhoofd/structures';\nimport { onBeforeUnmount, reactive } from 'vue';\nimport { useAuth } from '../../hooks';\nimport { ObjectFetcher } from './ObjectFetcher';\n\nexport function useTableObjectFetcher = ObjectFetcher>(objectFetcher: OF): TableObjectFetcher {\n const auth = useAuth();\n const fetcher = reactive(new TableObjectFetcher({\n objectFetcher,\n maxLimit: auth.hasSomePlatformAccess() ? 1000 : 100,\n })) as any;\n\n onBeforeUnmount(() => {\n fetcher.destroy();\n });\n\n return fetcher;\n}\n\nexport class TableObjectFetcher {\n objectFetcher: ObjectFetcher;\n\n objects: O[] = [];\n baseFilter: StamhoofdFilter | null = null;\n searchQuery = '';\n\n currentStartIndex = 0;\n currentEndIndex = 0;\n fetchMargin = 0;\n\n totalCount: number | null = null;\n totalFilteredCount: number | null = null;\n\n fetchingCount = false;\n fetchingFilteredCount = false;\n fetchingData = false;\n delayFetchUntil: Date | null = null;\n\n limit = STAMHOOFD.environment === 'development' ? 1 : 100; // To help catch bugs in pagination\n maxLimit = 100;\n minimumLimit = STAMHOOFD.environment === 'development' ? 1 : 20; // To help catch bugs in pagination\n sort: SortList = [];\n\n retryTimer: NodeJS.Timeout | null = null;\n retryCount = 0;\n\n errorState: Error | null = null;\n\n // todo: add rate limits if scrolling too fast\n _clearIndex = 0;\n\n nextRequest: LimitedFilteredRequest | null = null;\n\n constructor({ objectFetcher, maxLimit }: { objectFetcher: ObjectFetcher; maxLimit?: number }) {\n this.objectFetcher = objectFetcher;\n this.maxLimit = maxLimit ?? this.maxLimit;\n }\n\n get filter() {\n return mergeFilters([this.baseFilter, this.objectFetcher.requiredFilter ?? null]);\n }\n\n destroy() {\n this._clearIndex += 1;\n Request.cancelAll(this.objectFetcher);\n if (this.objectFetcher.destroy) {\n this.objectFetcher.destroy();\n }\n this.objects = []; // Fast memory cleanup\n }\n\n resetRetryCount() {\n this.retryCount = 0;\n }\n\n cancelRetry() {\n if (this.retryTimer) {\n clearTimeout(this.retryTimer);\n this.retryTimer = null;\n }\n }\n\n scheduleRetry(error: Error) {\n if (this.retryTimer) {\n return;\n }\n\n if (!Request.isNetworkError(error)) {\n // Do not retry but display the message and ask a manual retry\n this.errorState = error;\n return;\n }\n\n this.retryCount += 1;\n\n const waitTime = Math.min(this.retryCount * 5 * 1000, 20000);\n const shorterWaitTime = Math.min(this.retryCount * 200, 20000);\n\n // Require mininmum wait time, if a reset happens before the wait time\n this.delayFetchUntil = new Date(new Date().getTime() + shorterWaitTime);\n\n this.retryTimer = setTimeout(() => {\n console.info('Retrying fetching after ' + waitTime / 1000 + 's: now');\n this.fetchIfNeeded().catch(console.error);\n }, waitTime);\n }\n\n reset(total = false, filteredCount = false) {\n console.info('Reset');\n\n this._clearIndex += 1;\n this.objects = [];\n\n if (total) {\n this.totalCount = null;\n }\n if (filteredCount) {\n this.totalFilteredCount = null;\n }\n\n if (this.totalCount !== null && !this.filter && !this.searchQuery) {\n this.totalFilteredCount = this.totalCount;\n }\n\n this.fetchingCount = false;\n this.fetchingFilteredCount = false;\n this.fetchingData = false;\n this.errorState = null;\n this.resetRetryCount();\n this.cancelRetry();\n\n this.nextRequest = new LimitedFilteredRequest({\n filter: this.filter,\n pageFilter: null,\n sort: this.sort,\n limit: this.minimumLimit,\n search: this.searchQuery,\n });\n this.fetchIfNeeded().catch(console.error);\n }\n\n setSearchQuery(query: string) {\n if (query === this.searchQuery) {\n return;\n }\n\n if (this.searchQuery || query) {\n // force debounce for search queries\n this.delayFetchUntil = new Date(new Date().getTime() + 500);\n }\n else {\n this.delayFetchUntil = null;\n }\n\n this.searchQuery = query;\n this.reset(false, true);\n }\n\n setFilter(filter: StamhoofdFilter | null) {\n if (JSON.stringify(this.baseFilter ?? {}) == JSON.stringify(filter ?? {})) {\n console.log('setFilter unchanged');\n return;\n }\n console.log('setFilter', filter);\n\n this.baseFilter = filter;\n this.reset(false, true);\n }\n\n setSort(sort: SortList) {\n if (JSON.stringify(this.sort) == JSON.stringify(sort)) {\n return;\n }\n console.log('setSort', this.sort);\n\n this.sort = sort;\n this.reset(false, false);\n }\n\n setVisible(startIndex: number, endIndex: number) {\n if (this.currentStartIndex === startIndex && this.currentEndIndex === endIndex) {\n return;\n }\n console.log('Set visible', startIndex, endIndex);\n\n // Load more if needed\n this.currentStartIndex = startIndex;\n this.currentEndIndex = endIndex;\n this.fetchIfNeeded().catch(console.error);\n }\n\n async fetchIfNeeded() {\n if (this.fetchingData) {\n console.warn('Already fetching data');\n return;\n }\n\n if (this.errorState) {\n console.info('Skipped fetching due to error state');\n return;\n }\n\n if (this.currentEndIndex === 0) {\n console.info('Skipped fetching: no visible index defined');\n return;\n }\n\n if (this.delayFetchUntil) {\n if (new Date() < this.delayFetchUntil) {\n console.info('Delayed fetching');\n if (!this.retryTimer) {\n this.retryTimer = setTimeout(() => {\n console.info('Run delayed fetching');\n this.fetchIfNeeded().catch(console.error);\n }, this.delayFetchUntil.getTime() - Date.now() + 5);\n }\n return;\n }\n }\n\n if (!this.nextRequest) {\n console.warn('No next request');\n return;\n }\n\n console.info('Started fetching');\n this.cancelRetry();\n\n this.fetchingData = true;\n const currentClearIndex = this._clearIndex;\n\n try {\n const hasFilter = !!this.baseFilter || !!this.searchQuery;\n if ((!this.fetchingCount && this.totalCount === null) || (!hasFilter && !this.fetchingFilteredCount && this.totalFilteredCount === null)) {\n this.fetchingCount = true;\n\n if (!hasFilter) {\n this.fetchingFilteredCount = true;\n }\n\n // Fetch count in parallel\n this.objectFetcher.fetchCount(new CountFilteredRequest({\n filter: this.objectFetcher.requiredFilter,\n })).then((c) => {\n if (currentClearIndex !== this._clearIndex) {\n // Discard old requests\n return;\n }\n this.totalCount = c;\n this.fetchingCount = false;\n\n if (!hasFilter) {\n this.totalFilteredCount = c;\n this.fetchingFilteredCount = false;\n }\n\n this.fetchIfNeeded().catch(console.error);\n }).catch(console.error);\n }\n\n if (!this.fetchingFilteredCount && this.totalFilteredCount === null && hasFilter) {\n this.fetchingFilteredCount = true;\n\n // Fetch count in parallel\n this.objectFetcher.fetchCount(new CountFilteredRequest({ filter: this.filter, search: this.searchQuery })).then((c) => {\n if (currentClearIndex !== this._clearIndex) {\n // Discard old requests\n return;\n }\n this.totalFilteredCount = c;\n this.fetchingFilteredCount = false;\n }).catch(console.error);\n }\n\n const fetchUntil = this.totalFilteredCount !== null ? Math.min(this.totalFilteredCount, this.currentEndIndex + 1 + this.fetchMargin) : (this.currentEndIndex + 1 + this.fetchMargin); // +1 is required to convert index to total items\n if (fetchUntil > this.objects.length) {\n console.log('has ', this.objects.length, 'objects', 'fetch until', fetchUntil);\n\n // Fetch next page\n const limit = Math.max(this.minimumLimit, Math.min(this.limit, fetchUntil - this.objects.length));\n\n // Override limit\n this.nextRequest.limit = limit;\n\n // Override filter\n // Because the filter could have been changed by the object fetcher, and we don't want to reapply any custom filters\n // on the already custom filter that we got from the server\n this.nextRequest.filter = this.filter;\n\n // Same for sorting\n this.nextRequest.sort = this.objectFetcher.extendSort ? this.objectFetcher.extendSort([...this.sort]) : this.sort;\n\n const data = await this.objectFetcher.fetch(this.nextRequest);\n if (currentClearIndex !== this._clearIndex) {\n // Discard old requests\n console.warn('Discarded fetch result');\n return;\n }\n\n this.resetRetryCount();\n\n const objects = data.results;\n this.nextRequest = data.next ?? null;\n\n if (STAMHOOFD.environment === 'development') {\n for (const o of this.objects) {\n for (const oo of objects) {\n if (oo.id === o.id) {\n console.warn('Duplicate objects found. Fetched ' + oo.id);\n break;\n }\n }\n }\n }\n this.objects.push(...objects);\n\n if (objects.length < limit && (this.totalFilteredCount === null || this.objects.length < this.totalFilteredCount)) {\n console.warn('Unexpected end of data');\n this.totalFilteredCount = this.objects.length;\n console.info('Stopped fetching');\n this.fetchingData = false;\n\n if (!hasFilter) {\n this.totalCount = this.objects.length;\n }\n return;\n }\n\n console.info('Stopped fetching');\n this.fetchingData = false;\n this.fetchIfNeeded().catch(console.error);\n }\n else {\n console.info('Stopped fetching');\n this.fetchingData = false;\n console.log('No fetch required.', this.objects.length, '/', this.totalFilteredCount);\n }\n }\n catch (e) {\n if (currentClearIndex === this._clearIndex) {\n console.error('Stopped fetching due to error');\n console.error(e);\n this.fetchingData = false;\n this.scheduleRetry(e as Error);\n }\n throw e;\n }\n }\n}\n","import { Request } from \"@simonbackx/simple-networking\";\nimport { LimitedFilteredRequest, SortList, StamhoofdFilter, isEqualFilter, mergeFilters } from \"@stamhoofd/structures\";\nimport { onBeforeUnmount, reactive } from \"vue\";\nimport { ObjectFetcher } from \"./ObjectFetcher\";\n\nexport function useInfiniteObjectFetcher = ObjectFetcher>(objectFetcher: OF): InfiniteObjectFetcher {\n const fetcher = reactive(new InfiniteObjectFetcher({\n objectFetcher\n })) as any\n\n onBeforeUnmount(() => {\n fetcher.destroy()\n });\n\n return fetcher;\n}\n\n\n/**\n * Fetch objects in an infinite list\n * -> instead of having a start and end index which can get calculated easily,\n * the external system should only notify the fetcher when it reached (almost) the end of the list\n * \n * The list doesn't fetch the total counts\n */\nexport class InfiniteObjectFetcher {\n objectFetcher: ObjectFetcher\n \n objects: O[] = []\n baseFilter: StamhoofdFilter|null = null\n searchQuery = ''\n \n fetchingData = false;\n delayFetchUntil: Date|null = null;\n\n limit = 20\n sort: SortList = []\n\n /**\n * Whether the end of the list has been reached, and we should fetch more if possible\n */\n hasReachedEnd = false;\n\n /**\n * Set to false if we know there are no more objects to fetch\n */\n hasMoreObjects = true;\n\n retryTimer: NodeJS.Timeout|null = null;\n retryCount = 0;\n\n errorState: Error|null = null;\n\n // todo: add rate limits if scrolling too fast\n _clearIndex = 0;\n\n nextRequest: LimitedFilteredRequest|null = null;\n\n constructor({objectFetcher}: {objectFetcher: ObjectFetcher}) {\n this.objectFetcher = objectFetcher\n }\n\n get filter() {\n return mergeFilters([this.baseFilter, this.objectFetcher.requiredFilter ?? null]);\n }\n\n destroy() {\n this._clearIndex += 1;\n Request.cancelAll(this.objectFetcher)\n if (this.objectFetcher.destroy) {\n this.objectFetcher.destroy()\n }\n this.objects = reactive([]) // Fast memory cleanup\n }\n\n resetRetryCount() {\n this.retryCount = 0;\n }\n\n cancelRetry() {\n if (this.retryTimer) {\n clearTimeout(this.retryTimer)\n this.retryTimer = null;\n }\n }\n\n scheduleRetry(error: Error) {\n if (this.retryTimer) {\n return;\n }\n\n if (!Request.isNetworkError(error)) {\n // Do not retry but display the message and ask a manual retry\n this.errorState = error;\n return\n }\n\n this.retryCount += 1;\n\n const waitTime = Math.min(this.retryCount * 5 * 1000, 20000)\n const shorterWaitTime = Math.min(this.retryCount * 200, 20000)\n\n // Require mininmum wait time, if a reset happens before the wait time\n this.delayFetchUntil = new Date(new Date().getTime() + shorterWaitTime)\n\n this.retryTimer = setTimeout(() => {\n console.info('Retrying fetching after '+waitTime/1000+'s: now')\n this.fetchIfNeeded().catch(console.error)\n }, waitTime)\n }\n\n reset() {\n console.info('Reset')\n\n this._clearIndex += 1;\n this.objects = reactive([])\n this.hasMoreObjects = true;\n this.fetchingData = false;\n this.errorState = null;\n this.hasReachedEnd = true\n this.resetRetryCount();\n this.cancelRetry()\n\n this.nextRequest = new LimitedFilteredRequest({\n filter: this.filter,\n pageFilter: null,\n sort: this.sort,\n limit: this.limit,\n search: this.searchQuery\n })\n this.fetchIfNeeded().catch(console.error)\n }\n\n setSearchQuery(query: string) {\n if (query === this.searchQuery) {\n return;\n }\n\n if (this.searchQuery || query) {\n // force debounce for search queries\n this.delayFetchUntil = new Date(new Date().getTime() + 500)\n } else {\n this.delayFetchUntil = null;\n }\n\n this.searchQuery = query;\n this.reset()\n }\n \n setFilter(filter: StamhoofdFilter|null) {\n if (isEqualFilter(filter, this.baseFilter)) {\n console.log('setFilter unchanged')\n return;\n }\n console.log('setFilter', filter)\n\n this.baseFilter = filter;\n this.reset();\n }\n\n setSort(sort: SortList) {\n if (JSON.stringify(this.sort) == JSON.stringify(sort)) {\n return;\n }\n console.log('setSort', this.sort)\n\n this.sort = sort;\n this.reset();\n }\n\n setReachedEnd(hasReachedEnd: boolean) {\n if (this.hasReachedEnd === hasReachedEnd) {\n return;\n }\n console.log('Set hasReachedEnd', hasReachedEnd)\n\n // Load more if needed\n this.hasReachedEnd = hasReachedEnd\n this.fetchIfNeeded().catch(console.error)\n }\n\n async fetchIfNeeded() {\n if (this.fetchingData) {\n console.warn('Already fetching data')\n return;\n }\n\n if (this.errorState) {\n console.info('Skipped fetching due to error state');\n return;\n }\n\n if (!this.hasReachedEnd && this.objects.length > 0) {\n console.info('Skipped fetching: not at the end of the list');\n return;\n }\n\n if (!this.hasMoreObjects) {\n console.info('Skipped fetching: no more objects');\n return;\n }\n\n if (this.delayFetchUntil) {\n if (new Date() < this.delayFetchUntil) {\n console.info('Delayed fetching');\n if (!this.retryTimer) {\n this.retryTimer = setTimeout(() => {\n console.info('Run delayed fetching');\n this.fetchIfNeeded().catch(console.error)\n }, this.delayFetchUntil.getTime() - Date.now() + 5)\n }\n return;\n }\n }\n\n if (!this.nextRequest) {\n this.nextRequest = new LimitedFilteredRequest({\n filter: this.filter,\n pageFilter: null,\n sort: this.sort,\n limit: this.limit,\n search: this.searchQuery\n })\n }\n\n console.info('Started fetching')\n this.cancelRetry()\n\n this.fetchingData = true;\n const currentClearIndex = this._clearIndex;\n\n try { \n // Fetch next page\n const limit = this.limit\n\n // Override limit\n this.nextRequest.limit = limit;\n\n // Override filter\n // Because the filter could have been changed by the object fetcher, and we don't want to reapply any custom filters\n // on the already custom filter that we got from the server\n this.nextRequest.filter = this.filter;\n\n // Same for sorting\n this.nextRequest.sort = this.objectFetcher.extendSort ? this.objectFetcher.extendSort([...this.sort]) : this.sort;\n \n const data = await this.objectFetcher.fetch(this.nextRequest)\n if (currentClearIndex !== this._clearIndex) {\n // Discard old requests\n console.warn('Discarded fetch result')\n return;\n }\n\n this.resetRetryCount();\n\n const objects = data.results;\n this.nextRequest = data.next ?? null;\n\n if (STAMHOOFD.environment === 'development') {\n for (const o of this.objects) {\n for (const oo of objects) {\n if (oo.id === o.id) {\n console.warn('Duplicate objects found. Fetched ' + oo.id)\n break;\n }\n }\n }\n }\n this.objects.push(...objects)\n\n if (objects.length < limit) {\n console.warn('Reached end of data')\n this.hasMoreObjects = false;\n \n console.info('Stopped fetching')\n this.fetchingData = false;\n return;\n }\n \n console.info('Stopped fetching')\n this.fetchingData = false;\n\n // Fetch more if needed\n // But first wait on UI to render the new objects\n // and wait to notifiy the fetcher again\n \n this.fetchIfNeeded().catch(console.error)\n\n const shorterWaitTime = 150\n\n // Require mininmum wait time, if a reset happens before the wait time\n this.delayFetchUntil = new Date(new Date().getTime() + shorterWaitTime)\n\n this.retryTimer = setTimeout(() => {\n console.info('Retrying fetching after '+shorterWaitTime/1000+'s: now')\n this.fetchIfNeeded().catch(console.error)\n }, shorterWaitTime)\n\n } catch (e) {\n if (currentClearIndex === this._clearIndex) {\n console.error('Stopped fetching due to error')\n console.error(e)\n this.fetchingData = false;\n this.scheduleRetry(e as Error)\n }\n throw e;\n }\n }\n}\n","\n\n\n","import { Decoder, PatchableArray, PatchableArrayAutoEncoder, patchContainsChanges } from \"@simonbackx/simple-encoding\"\nimport { SimpleError } from \"@simonbackx/simple-errors\"\nimport { Request, RequestResult } from \"@simonbackx/simple-networking\"\nimport { AppType, useAppContext, useContext } from \"@stamhoofd/components\"\nimport { SessionContext } from \"@stamhoofd/networking\"\nimport { MemberWithRegistrationsBlob, MembersBlob, PlatformMember, Registration, Version } from \"@stamhoofd/structures\"\nimport { onBeforeUnmount, unref } from \"vue\"\n\nexport function usePlatformFamilyManager() {\n const context = useContext()\n const app = useAppContext()\n\n if (app === 'auto') {\n throw new Error(\"usePlatformFamilyManager() cannot be used in the auto app context\")\n }\n const manager = new PlatformFamilyManager(unref(context), app)\n\n onBeforeUnmount(() => {\n manager.destroy()\n });\n\n return manager;\n}\n\nexport class PlatformFamilyManager {\n context: SessionContext\n app: AppType\n\n constructor(context: SessionContext, app: AppType) {\n this.context = context;\n this.app = app;\n }\n\n destroy() {\n Request.cancelAll(this)\n }\n\n async loadFamilyBlob(memberId: string, options?: {shouldRetry?: boolean}) {\n const response = await this.context.authenticatedServer.request({\n method: \"GET\",\n path: `/organization/members/${memberId}/family`,\n decoder: MembersBlob as Decoder,\n owner: this,\n shouldRetry: options?.shouldRetry ?? false\n });\n\n response.data.markReceivedFromBackend()\n\n this.updateOrganizationFromMembers(response.data.members)\n return response.data\n }\n\n async loadFamilyMembers(member: PlatformMember, options?: {shouldRetry?: boolean}) {\n const response = await this.loadFamilyBlob(member.id, options)\n member.family.insertFromBlob(response)\n }\n\n async unregisterMembers(members: {member: PlatformMember, removeRegistrations: Registration[]}[], options?: {shouldRetry?: boolean}) {\n const patches = new PatchableArray() as PatchableArrayAutoEncoder;\n \n for (const {member, removeRegistrations} of members) {\n const registrations = new PatchableArray() as PatchableArrayAutoEncoder;\n for (const r of removeRegistrations) {\n registrations.addDelete(r.id)\n }\n\n const patch = MemberWithRegistrationsBlob.patch({\n id: member.id,\n registrations\n })\n\n patches.addPatch(patch)\n }\n\n await this.isolatedPatch(members.map(m => m.member), patches, options?.shouldRetry ?? false)\n }\n\n async isolatedPatch(members: PlatformMember[], patches: PatchableArrayAutoEncoder, shouldRetry: boolean = false) {\n if (patches.changes.length) {\n MembersBlob.markAllStale()\n const response = await this.context.authenticatedServer.request({\n method: \"PATCH\",\n path: this.app == 'registration' ? '/members' : \"/organization/members\",\n decoder: MembersBlob as Decoder,\n body: patches,\n shouldRetry,\n owner: this\n });\n response.data.markReceivedFromBackend()\n\n for (const c of members) {\n // Check in response\n const updatedMember = response.data.members.find(m => m.id === c.id);\n if (updatedMember) {\n c.member.deepSet(updatedMember)\n }\n }\n\n // Remove deleted members from family\n for (const memberId of patches.getDeletes()) {\n const member = members.find(m => m.id === memberId)\n if (member) {\n member.family.deleteMember(memberId)\n }\n }\n\n this.updateUserMemberId(response.data.members);\n this.updateOrganizationFromMembers(response.data.members)\n }\n }\n\n async save(members: PlatformMember[], shouldRetry: boolean = false) {\n // Load all members that have patches\n const patches: PatchableArrayAutoEncoder = new PatchableArray();\n \n const clearAfter: Set = new Set()\n\n for (const member of members) {\n if (member.isNew) {\n if (member.isSaving) {\n throw new SimpleError({\n code: 'save_pending',\n message: 'Even geduld. Nog bezig met opslaan...'\n })\n }\n patches.addPut(member.patchedMember)\n clearAfter.add(member)\n } else {\n if (patchContainsChanges(member.patch, member.member, {version: Version})) {\n member.patch.id = member.member.id\n patches.addPatch(member.patch)\n clearAfter.add(member)\n }\n }\n }\n\n if (patches.changes.length) {\n for (const c of clearAfter.values()) {\n c.prepareSave();\n }\n\n let response: RequestResult;\n try {\n MembersBlob.markAllStale()\n \n response = await this.context.authenticatedServer.request({\n method: \"PATCH\",\n path: this.app == 'registration' ? '/members' : \"/organization/members\",\n decoder: MembersBlob as Decoder,\n body: patches,\n shouldRetry,\n owner: this\n });\n\n // Make sure we use local time, so this is never stale\n response.data.markReceivedFromBackend()\n } catch (e) {\n for (const c of clearAfter.values()) {\n c.markFailedSave();\n }\n\n throw e;\n }\n\n const createdMembers = response.data.members.filter(m => ![...clearAfter.values()].find(mm => mm.id === m.id))\n\n for (const c of clearAfter.values()) {\n const savedMember = c.patchedMember // Before clearing the patches\n c.markSaved();\n\n // Check in response\n const updatedMember = response.data.members.find(m => m.id === c.id);\n if (updatedMember) {\n c.member.deepSet(updatedMember)\n } else {\n // Probably duplicate member, so we have a different id\n const updatedMember = createdMembers.find(m => m.details.isEqual(savedMember.details));\n if (updatedMember) {\n // We have an id change here\n const oldId = c.id\n c.member.deepSet(updatedMember)\n c.patch.id = updatedMember.id\n\n c._oldId = oldId\n } else {\n console.error('Patched members but missing in response. This should not happen.', savedMember, c)\n }\n }\n }\n\n this.updateUserMemberId(response.data.members);\n this.updateOrganizationFromMembers(response.data.members)\n }\n }\n\n private updateUserMemberId(members: MemberWithRegistrationsBlob[]) {\n const user = this.context.auth.user;\n if (!user) {\n return;\n }\n\n const userId = user.id;\n const userMemberId = user.memberId;\n\n const newUserMemberId = members\n .flatMap(cm => cm.users)\n .find(u => u.id === userId)?.memberId ?? null;\n\n if (userMemberId !== newUserMemberId) {\n this.context.updateData(true, false, false).catch(console.error)\n }\n }\n\n updateOrganizationFromMembers(members: MemberWithRegistrationsBlob[]) {\n updateOrganizationFromMembers(this.context, members);\n }\n}\n\nexport function updateOrganizationFromMembers(context: SessionContext, members: MemberWithRegistrationsBlob[]) {\n // Update organizations we received\n // this updates the group cached counts\n if (context.organization) {\n // Update group data we received\n const processedGroups = new Set()\n for (const member of members) {\n for (const registration of member.registrations) {\n if (registration.organizationId === context.organization.id && !processedGroups.has(registration.groupId)) {\n const originalGroup = context.organization.period.groups.find(g => g.id === registration.groupId)\n originalGroup?.deepSet(registration.group)\n processedGroups.add(registration.groupId)\n }\n }\n }\n }\n}\n","\n\n\n","